15 January, 2012

fdisk command line partitioning on linux


Partitioning with fdisk

This section shows you how to actually partition your hard drive with the fdisk utility.

Linux allows only 4 primary partitions. 
You can have a much larger number of logical partitions by sub-dividing one of the primary partitions.
Only one of the primary partitions can be sub-divided.

Examples:

  1. Four primary partitions 
  2. Mixed primary and logical partitions 

1. fdisk usage

fdisk is started by typing (as root) fdisk device at the command prompt.

device might be something like /dev/hda or /dev/sda.

The basic fdisk commands you need are:

p print the partition table
n create a new partition 
d delete a partition 
q quit without saving changes 
w write the new partition table and exit 

Changes you make to the partition table do not take effect until you issue the write (w) command. Here is a sample partition table:



Disk /dev/hdb: 64 heads, 63 sectors, 621 cylinders
Units = cylinders of 4032 * 512 bytes
 
   Device Boot    Start       End    Blocks   Id  System
/dev/hdb1   *         1       184    370912+  83  Linux
/dev/hdb2           185       368    370944   83  Linux
/dev/hdb3           369       552    370944   83  Linux
/dev/hdb4           553       621    139104   82  Linux swap

The first line shows the geometry of your hard drive. It may not be physically accurate, but you can accept it as though it were. The hard drive in this example is made of 32 double-sided platters with one head on each side (probably not true). Each platter has 621 concentric tracks. A 3-dimensional track (the same track on all disks) is called a cylinder. Each track is divided into 63 sectors. Each sector contains 512 bytes of data. Therefore the block size in the partition table is 64 heads * 63 sectors * 512 bytes er...divided by 1024. The start and end values are cylinders.

2. Four primary partitions

The overview:

Decide on the size of your swap space and where it to go . Divide up the remaining space for the three other partitions.

Example:

I start fdisk from the shell prompt:
# fdisk /dev/hdb 
which indicates that I am using the second drive on my IDE controller.
When I print the (empty) partition table, I just get configuration information. 

Command (m for help): p

Disk /dev/hdb: 64 heads, 63 sectors, 621 cylinders
Units = cylinders of 4032 * 512 bytes

I knew that I had a 1.2Gb drive, but now I really know: 64 * 63 * 512 * 621 = 1281982464 bytes. I decide to reserve 128Mb of that space for swap, leaving 1153982464. If I use one of my primary partitions for swap, that means I have three left for ext2 partitions. Divided equally, that makes for 384Mb per partition. Now I get to work.



Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-621, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-621, default 621): +384M

Next, I set up the partition I want to use for swap: 

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (197-621, default 197):
Using default value 197
Last cylinder or +size or +sizeM or +sizeK (197-621, default 621): +128M

Now the partition table looks like this:

Device Boot Start End Blocks Id System
/dev/hdb1             1       196    395104   83  Linux
/dev/hdb2           197       262    133056   83  Linux

I set up the remaining two partitions the same way I did the first. 
Finally, I make the first partition bootable:
Command (m for help): a
Partition number (1-4): 1

And I make the second partition of type swap:

Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): 82
Changed system type of partition 2 to 82 (Linux swap)      
Command (m for help): p

The end result:

Disk /dev/hdb: 64 heads, 63 sectors, 621 cylinders
Units = cylinders of 4032 * 512 bytes
 
   Device Boot    Start       End    Blocks   Id  System
/dev/hdb1   *         1       196    395104+  83  Linux
/dev/hdb2           197       262    133056   82  Linux swap
/dev/hdb3           263       458    395136   83  Linux
/dev/hdb4           459       621    328608   83  Linux          

Finally, I issue the write command (w) to write the table on the disk.

Command (m for help): w

No comments: