前几天在ubuntu中文站点上看见使用wubi装ubuntu,觉得挺好,今天7点钟回来直接在windows7系统(C盘)下使用wubi装上64bit的ubuntu 10.4,但是装的时候没看清楚,直接装到C盘上去了,等我发现时已经到8点了,我的ubuntu已经装上了很多软件,就不想重装了,所以就寻求解决办法。
我想将我的ubuntu拷贝到我的V盘(最后一个分区) ,本以为直接将C盘下的ubuntu文件夹复制一份到V盘就行了,结果拷贝过去之后启动的还是C盘的那个系统。
在网上搜了些资料说是要改grub,但是按照网上的方法找不到/boot/grub/menu.lst,是因为10.4的unbuntu用的已经是grub2了,它使用的配置文件是/boot/grub/grub.conf。
废话不多说,直接上我的解决方案(实际上是经过像无头苍蝇一般试过后的结论,我不是一步到位的)。
解决办法一:
此方法适合已经安装到C盘或者某盘,想但还没有开始向其它盘复制文件。
1、sudo ls -l /dev/disk/by-label
这一步先找到所有的分区对应的设备名称
==》我的机器上显示如下,我要将linux将到void分区下,也就是sda3分区下。
lrwxrwxrwx 1 root root 10 2010-09-08 23:05 bak -> ../../sda7
lrwxrwxrwx 1 root root 10 2010-09-08 23:05 Fun -> ../../sda8
lrwxrwxrwx 1 root root 10 2010-09-08 23:05 project -> ../../sda5
lrwxrwxrwx 1 root root 10 2010-09-08 23:05 VirtualMachine -> ../../sda9
lrwxrwxrwx 1 root root 10 2010-09-08 23:05 void -> ../../sda3
lrwxrwxrwx 1 root root 10 2010-09-08 23:05 windows/x207 -> ../../sda1
lrwxrwxrwx 1 root root 10 2010-09-08 23:05 Windows/x20XP -> ../../sda6
2. sudo ls -l /dev/disk/by-uuid
==》在我的机器上输出如下。记住sda3分区的uuid是F41801381800FAFE
lrwxrwxrwx 1 root root 10 2010-09-08 23:05 2412916B129142AA -> ../../sda6
lrwxrwxrwx 1 root root 10 2010-09-08 23:05 2C3AB17D3AB1451C -> ../../sda5
lrwxrwxrwx 1 root root 10 2010-09-08 23:05 4444961844960CB4 -> ../../sda1
lrwxrwxrwx 1 root root 11 2010-09-08 23:05 475260a3-6f37-4e68-b606-135563b17815 -> ../../loop0
lrwxrwxrwx 1 root root 10 2010-09-08 23:05 8A762299762285D3 -> ../../sda8
lrwxrwxrwx 1 root root 10 2010-09-08 23:05 BCE23EBDE23E7C28 -> ../../sda7
lrwxrwxrwx 1 root root 10 2010-09-08 23:05 D652EE1E52EE035B -> ../../sda9
lrwxrwxrwx 1 root root 10 2010-09-08 23:05 F41801381800FAFE -> ../../sda3
3、sudo chmod 666 /boot/grub/grub.cfg
由于 /boot/grub/grub.cfg是只读的,所以使用命令去掉只读属性。
4、将原文中的
### BEGIN /etc/grub.d/10_lupin ###
menuentry "Ubuntu, Linux 2.6.32-24-generic" {
insmod ntfs
set root='(hd0,1
)'
search --no-floppy --fs-uuid --set 4444961844960CB4
loopback loop0 /ubuntu/disks/root.disk
set root=(loop0)
linux /boot/vmlinuz-2.6.32-24-generic root=/dev/sda1
loop=/ubuntu/disks/root.disk ro quiet splash
initrd /boot/initrd.img-2.6.32-24-generic
}
换成我的sda3对应的信息,如下:
menuentry "Ubuntu, Linux 2.6.32-24-generic" {
insmod ntfs
set root='(hd0,3
)'
search --no-floppy --fs-uuid --set F41801381800FAFE
loopback loop0 /ubuntu/disks/root.disk
set root=(loop0)
linux /boot/vmlinuz-2.6.32-24-generic root=/dev/sda3
loop=/ubuntu/disks/root.disk ro quiet splash
initrd /boot/initrd.img-2.6.32-24-generic
}
还有其它Ubuntu, Linux 2.6.32-24-generic (recovery mode)启动项也按同种方式修改就行了,保存后重启。
5、重启后进入windows系统,现在可以直接将C盘中的unbuntu文件夹拷贝到void盘去(最好别使用剪切,当确定转移完成后再删除原有的文件夹)。
6、再次重启选择utuntu菜单,进入后出现grub的启动菜单,选择我们修改过的Ubuntu, Linux 2.6.32-24-generic进入,OK,大功告成。
解决方法二:
此方法适用于太眼疾手快的人(就是那些一点都不懂,直接将ubuntu文件夹拷贝到目标盘去又懒得再拷贝一次的人,其实就是我了)。
1、重启选择utuntu菜单,进入后出现grub的启动菜单。
2、要是直接点击“Ubuntu, Linux 2.6.32-24-generic”是会去找C盘的那个ubuntu文件夹的,而不会去找V盘里拷贝好的文件。所以要在这一步点击“e”进入命令行编辑模式(请按提示操作,不保证100%一致)。
3、如果在命令行编辑模式下面知道void盘是sda3和uuid那么直接执行第5步,否帽那么直接将set root='(hd0,1 )'改成set root='(hd0,2 )'或者其它,下面的sda1也改为sda2或者其它,然后运行之,这时必然会出现error file....(我已经忘了错误信息是什么了),然后再等几秒会出再可以输入命令的控制台。
这时使用类似于解决方案一中的1,2 步,只是命令前面不加sudo而已,得到目标盘的名称(sda3)和对应的uuid,把他们抄在纸上吧。
4、ctrl+alt+delete重启
5、如果已经提前知道了void盘是sda3和uuid,那么可以直接类似于解决方法一的第4步,直接编辑命令行,编辑好后ctrl+x运行,YE,进入到我的V盘下的ubuntu了,这时请从解决方法一的第3步开始将grub.conf文件修改成正确的内容(否则每次都修改命令行?),重启后即正常。
唉,今天可是把我这个超级linux菜鸟给整惨了,从安装到安装完毕写完心得文档,我地个娘啊,11点44分了,赶紧睡了。