用120的硬盘替换原本的60g,反复拆装了3遍,终于成功,写点心得
1.旧硬盘引导,给新硬盘分区
fdisk,这个不用讲了。
分区结束后fdisk -l
旧硬盘分区表:(只取linux分区部分)
/dev/hda8 5889 5907 152586 83 Linux
/dev/hda9 5908 6004 779121 82 Linux swap / Solaris
/dev/hda10 6005 6734 5863693+ 83 Linux
新硬盘分区表:
/dev/hda1 1 10445 83899431 5 Extended
/dev/hda2 10446 14593 33318810 83 Linux
/dev/hda5 1 20 160587 83 Linux
/dev/hda6 21 117 779121 83 Linux swap / Solaris
/dev/hda7 118 847 5863693+ 83 Linux
ps:保证新分区不小于原分区,否则在后面dd时会出现磁盘空间不足的提示,可能导致更后面几步出错。
2.复制文件系统
dd if=/dev/hda8 of=/dev/sda5
dd if=/dev/hda9 of=/dev/sda6
(这一步不知是不是多余,但为了保证磁盘label的正确,还是做了这一步)
dd if=/dev/hda10 of=/dev/sda7
3.修改fstab和grub.conf
fstab中删除我曾经添加的挂载windows用的几行,剩下系统生成的内容
#fstab
LABEL=/ / ext3 defaults 1 1
LABEL=/boot1 /boot ext3 defaults 1 2
devpts /dev/pts devpts gid=5,mode=620 0 0
tmpfs /dev/shm tmpfs defaults 0 0
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
LABEL=SWAP-hda8 swap swap defaults 0 0
其中"LABEL="的内容是磁盘标签,在dd的时候标签一起被复制了,所以不需要更改,另外几个是都是虚拟文件系统,也不需要更改。grub.conf的修改略过
4.关机,拆装硬盘,体力活
5.开机,安装grub(可以用livecd,或者带grub4dos的启动盘)
grub
root (hd0,4)
setup (hd0)
6.引导进入linux,试用。
7.修改分区大小
重启,用livecd引导,修改最后一个分区的大小
fdisk /dev/hda
d 删除分区
7 (注,删除最后一个分区)
n 新建
l 逻辑
之后使用默认即可,将会把全部的剩余空间分配到最后一个分区
ps:原本的最后一个分区使用了旧分区大小,截至处不是此扩展分区的结尾,为了与后面还未分配的空间组成一个分区,先删除原分区,再重建分区,使用所有剩余空间,这个方法似乎有点危险,但只要删除分区后直接再重建后应该可以找回原本文件。不知有没有更好的办法。
8.修改文件系统大小
这时候重启进入硬盘,分区表如下
/dev/hda1 1 10445 83899431 5 Extended
/dev/hda2 10446 14593 33318810 83 Linux
/dev/hda5 1 20 160587 83 Linux
/dev/hda6 21 117 779121 83 Linux(这里可能是dd时变掉的,但没有影响使用)
/dev/hda7 118 10445 82959628+ 83 Linux(分区果然变大)
但是如果用df去查看,发现可用空间和总空间都没有变大,这是因为文件系统没有更改系统文件大小和分区大小是有区别的,用resize2fs更改ext3的文件系统大小
resize2fs /dev/hda7
不使用size参数,即使用全部分区大小。再此df,会发现可用空间变大。于是整个换硬盘的工作就完成了。
ps:如果可以在第一步的时候就改变最后一个分区大小,就可以省略第7步,但还应该通过第8部更改文件系统大小。但这只是我的推测,如果有下次再做尝试。
psps:第7步更改磁盘分区大小是因为新磁盘分区时没有用尽空间,第8步修改文件系统大小是因为dd保留了原本的磁盘分区大小,如果用cp直接复制可以省略这几个步骤,方便一些。同时要注意添加磁盘标签。

