Ubuntu 9.10于XP双系统,前两天XP中招了,重装XP后Grub引导丢失,按常规方法从Live-CD无法修复,试了好多方法,最后终于搞定了,共享给大家。
一) 分区结构
Ubuntu 9.10装在ext4的分区上,SYS为NTFS分区,装的XP,APP是NTFS分区,BAK为fat32分区。
二) 引导修复
下载最新Grub4Dos 我下的是 grub4dos-0.4.4.zip
打开压缩文件,把里面的grldr、grldr.mbr、menu.lst这3个文件解压到Windows系统所在分区根目录,例如我的分区,就把这3个文件解压到C盘根目录下。
打开C:\menu.lst文件(最好用UltraEdit-32之类的打开,若用文本文件打开,肯能有好多方块),添加如下内容:
title Ubuntu 9.10
root (hd0,6)
kernel /boot/vmlinuz-2.6.30-8-generic root=UUID=28d5eac5-c42c-49ef-8537-0b280ff87de1 ro quiet splash rootfstype=ext4 acpi=off noapic nolacip
initrd /boot/initrd.img-2.6.30-8-generic
boot
注意:
1、root后跟的盘符信息视具体情况定。linux中的(hd0,0)到(hd0,3)是留给主分区的,以我的分区为例,C盘(SYS)是整个硬盘的主分区,所以他的编号就是(hd0,0),没有其他主分区了,所以D盘(APP)作为扩展分区的第一个分区,编号是(hd0,4),E盘(BAK)的编号为(hd0,5),接下来的是Ubuntu的Ext4分区,他的编号为(hd0,6)。这些编号与上边图片中的对应关系也很简单,因为/dev下给他们起名字的时候是从1开始的,所以直接给前面编号方法的盘符编号加1即可,如(hd0,6)对饮的是/dev/sda7 (后面用到这些)。
2、kernel和initrd
/boot/vmlinuz-2.6.30-8-generic
/boot/initrd.img-2.6.30-8-generic
这两个文件是从LiveCD启动进去看的,用liveCD硬盘启动,只要用虚拟光驱加在Ubuntu的ISO文件,然后执行里面的wubi点最上面的按钮,选择帮我从CD启动即可。
3、UUID
刚才已经启动到LiveCD中了,如果是安装界面,点退出就可以进入演示系统了,除了确定上面两个文件的路径和名称,还需要搞一个东西,就是UUID。
sudo ls -al /dev/disk/by-uuid
按前面的方法你应该已经知道你的Ubuntu装在那个分区了,在演示系统中打开你C盘下的那个menu.lst文件,根据你自己的情况修改vmlinuz和initrd.img文件路径和名称,并修改uuid,如果是ext4分区的话,需要加上rootfstype=ext4参数。因为我的笔记本的APIC似乎有点问题所以加上了 acpi=off noapic nolacip参数,大多数人应该不会有这个问题,也就不用加这3个参数了。
好了,现在重新启动,在操作系统列表中选择grub再选择Ubuntu 9.10,不出意外的话你应该可以进入你的ubuntu了。进去后,如果想修复由grub引导的话,作如下操作:
sudo upgrade-from-grub-legacy
这个我没试过,因为我觉得Windows的Boot.ini的引导挺好的,如果开发机器用Ubuntu的话用起来还是比较痛苦的,再说其他人都用Windows做开发,你一个用Ubuntu,白里透红与众不同,这可能会引发一些问题。
如果有意外的话。。。。。
自己研究吧!~~~