ubuntu根分区迁移历程
本文首先要讨论的是为什么要将好好的linux根分区给迁移掉,说到这个问题我就是一肚子火啊!原因就是windows的无理、霸道和BT,具体是这样的,我原先的分区情况如下图所示:
已经有4个主分区了,其中有一个swap分区,3个ext3格式的分区,本打算把最后一个ext3的分区删掉,建一个扩展分区,再在里面建两个fat32的逻辑分区,把XP安装在其中之一上。可能有的朋友已经发现我这样的想法基本上是无法实现的,试了很久都没有办法。究其原因可能有两点:
1、windows要求装在主分区上。
2、windows要往硬盘的第一个主分区(也就是/dev/hda1)上面写一些文件用于引导,但此时我的那个分区是ext3格式的,windows不认识。(唉,终于发现装windows还是要比装linux难一些的。)
好,接下来就只能无奈地把我的第一个主分区让给那个变态的windows了,但是我可不想就这样重装我的linux,所以就开始了我的根分区迁移历程了。我用的是ubuntu7.04的desktop CD来启动(没试过直接在运行着的linux下面复制文件,不过理论上也完全可行),启动好了以后,调整分区结构,如下图所示。
然后将原来的根分区和新的根分区分别mount到两个目录下面。执行
sudo cp -ax 原目录/* 新目录
这里一定要注意的是必须加上这个ax参数,否则的话,复制到新的分区后,所有文件的拥有者都会变成root,那麻烦可就大了,而cp命令的ax参数可以阻止这样的事情发生,它会把所有的文件权限按原样复制好。这一步可能要等比较久,等文件复制完毕以后,为了能让grub正确引导需要相应修改一些新目录/boot/grub/menu.lst这个文件,又为了能让系统自动挂载其他分区(包括/home分区),还要修改一下新目录/etc/fstab这个文件。具体的修改方法很多地方都有了,这里就不再讨论了。
另外,等装完windows以后还要在用desktop CD启动,重装一下grub才算完工,(再次鄙视windows都无理和霸道。)