注:这里的fdisk不是DOS中的fdisk,而是linux的fdisk。

我的硬盘上已经划分了好多分区,每个分区上都装了不同发行版的Linux。今天想再从剩下的空间中划出分区来安装Fedora Core 3,却失败了。察看了一下分区表的结构:

Disk /dev/hda: 80.0 GB, 80025280000 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot    Start       End    Blocks   Id  System
/dev/hda1   *         1      1275  10241406    7  HPFS/NTFS
/dev/hda2          1276      6374  40957717+   7  HPFS/NTFS
/dev/hda3          6375      7139   6144862+  83  Linux
/dev/hda4          7140      8663  12241530    f  Win95 Ext'd (LBA)
/dev/hda5          7140      7204    522081   82  Linux swap
/dev/hda6          7205      7690   3903763+  83  Linux
/dev/hda7          7691      8177   3911796   83  Linux
/dev/hda8          8178      8663   3903763+  83  Linux

从硬盘的分区结构来看,hda5-8已经占用了扩展分区hda4的全部空间,而硬盘上的剩余空间位于hda4之后。所以要想使用硬盘上最后的剩余空间,就必须要在hda的分区表上添加一个分区,而hda的分区表已经全部被占用(hda1-4),所以当然就不能添加更多分区了。

解决办法就只有扩大hda4的大小,让它能占用整个硬盘上的剩余空间,然后将新的分区划分到hda4中。

看了一下fdisk的帮助,好像没有能够直接修改分区大小的命令,没办法只好把分区删除再重建了。为了以防万一,首先执行 # dd if=/dev/hda of=/root/mbr bs=1 count=512 备份了一下MBR,然后将备份出的/root/mbr文件放到一个安全的地方。然后记下各个分区的起始地址和结束地址以备以后恢复分区时使用。用d命令删除hda4,这样位于hda4上的hda5-8就全部被删除了。然后用 n 命令新建分区,选择 e 表示建立扩展分区,分区的起始和结束地址就使用默认值也就是让它充满剩余的所有空间。然后用 t 命令将hda4的格式修改为W95 Ext’d (LBA),编号为f。然后根据以前记下的分区起始和结束地址信息,依次建立hda5-8。最后用p命令查看分区表结构如下:

Disk /dev/hda: 80.0 GB, 80025280000 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot    Start       End    Blocks   Id  System
/dev/hda1   *         1      1275  10241406    7  HPFS/NTFS
/dev/hda2          1276      6374  40957717+   7  HPFS/NTFS
/dev/hda3          6375      7139   6144862+  83  Linux
/dev/hda4          7140      9729  20804175    f  Win95 Ext'd (LBA)
/dev/hda5          7140      7204    522081   82  Linux swap
/dev/hda6          7205      7690   3903763+  83  Linux
/dev/hda7          7691      8177   3911796   83  Linux
/dev/hda8          8178      8663   3903763+  83  Linux

可以看出修改后的分区表除了hda4之外,其他的所有分区的结构都没有改变。这样位于hda9之后的8664-9729就可以拿出来划分新的分区了。

然后就是用 w 命令保存。为了保险起见,使用 fsck.ext3 命令检查了一下 hda6-8,保证没有出现错误。