我不止一次的看到如我一样的新手们发些关于XP与Ubuntu共存后的grub引导的求助帖子,其实各大论坛林林散散的都有介绍,可系统一点的帖子却很少见到,也许高手们不屑为之吧。我在这里也只是结合自己的实践经验谈谈我的心得体会,希望能给挣扎在XP与 Linux之间的朋友一些帮助。[高手们可以闭着眼睛闪先:)]
1、原先有XP系统,后装Ubuntu[当然要成功安装的,不成功安装,你说该怎么办呢?:)],但grub却未成功安装,导致一个系统也进不了。其中可分两种情况:
A \\grub缺少menu.lst,但可直接进入命令行,这是我第一次安装RedHat时遇到的情况。
解决方法:
引导XP系统
grub>
代码:
rootnoverify (hd0,0) //一般情况,XP被安装在C盘;也可按tab键查看各分区,以获得系统盘系数。
makeactive
chainloader +1
boot
引导Ubuntu系统
grub>
代码:
root (hdX,Y) //这里的x为硬盘序列,若你的Linux安装在第一块硬盘上,X=0;在第二块硬盘上,X=1;在第三块硬盘上[我先晕一下。。。],依次类推。Y是那块硬盘上的分区序列,也可通过tab查看;以获得Linux的安装分区序列;
kernel /boot/vmlinuz-*** root=/dev/sdaZ ro //这里的Z=Y+1; ***为Ubuntu版本号,可同样按tab键补全。
initrd /boot/initrd.img-***[同上]
boot
注:如若是这种情况的,成功进入Ubuntu之后,需要自己建立并编写menu.lst文件,形如:
代码:
default 0 //表示默认启动为第一个title,要想设为默认启动为第二个,你说是default X?这也不知道的话,还是去使用XP吧:(
timeout 10 //不用注释了吧?[楼主废话可真多。。。不要骂我]
title Ubuntu, kernel 2.6.15-26-386
root (hd0,7)
kernel /boot/vmlinuz-2.6.15-26-386 root=/dev/sda8 ro quiet splash
initrd /boot/initrd.img-2.6.15-26-386
savedefault
boot
title Ubuntu, kernel 2.6.15-26-386 (recovery mode)
root (hd0,7)
kernel /boot/vmlinuz-2.6.15-26-386 root=/dev/sda8 ro single
initrd /boot/initrd.img-2.6.15-26-386
boot
title Other operating systems:
root
title Microsoft Windows XP Professional
root (hd0,0)
savedefault
makeactive
chainloader +1
里面的具体参数自己确定了,什么?不懂?倒。。。我还以为像我这样垃圾的Linuxer会很多的,别看不起自己:)
B \\启动后说grub错误的,grub完全没法正常工作!这种情况很多见,做起来也有些麻烦。
解决方法:
第一步:修复传说中的mbr。
有XP安装盘吧?有!很好,从XP安装盘启动先,进入修复控制台[这个没有问题吧?其中可能会提示输入所安装的XP系统序列,输入一个非零值即可;随后就是管理员密码],执行fixmbr,以修复主引导区;附带说明一句:若在控制台中根本无法访问XP系统盘的,可先执行fixroot,但前提是 XP系统盘无严重问题,有问题的不在本帖讨论范围之内。提示成功修复引导区之后,restart重启,或使用dos界面下通用三键组合“ctrl+alt +del”重启也行滴说:)
第二步:XP下利用wingrub引导Ubuntu。
wingrub在souceforge中有下载,而且有关它的使用,也是傻瓜式的,有Linuxsir上的北南南北前辈–“老年人”略显罗嗦的帖子为证:http://www.Linuxsir.org/bbs/showthread.php?t=214551
提示:最好安装到c盘下的boot.ini[XP隐藏的系统文件]中,以后清除也方便;前辈的话当然要听,但我们只要学到上面的帖子的一点,这个问题也就解决了,那帖子大概是完备教程吧。
第三步:在Ubuntu下安装grub。
进入Ubuntu下,执行sudo nautilus之后,删除/boot/grub整个文件夹,当然要备份先!再安装grub:
代码:
sudo grub-install /dev/sda //将grub安装到mbr主引导区上。
安装确实得费些时间,请耐心等待。此时安装的grub也没有menu.lst,需要自己建立并编写menu.lst文件,方法goto本帖1-A-注。
第四步:删除XP下的wingrub启动项。
Ubuntu下安装的grub的menu.lst保存后重启系统,可顺利进入XP,删除c:\boot.ini中刚才生成的最后一行,形如: boot=”c:\***”[你自己在wingrub程序生成启动文件时起的名];再清除c根目录下一个wingrub生成的引导文件,具体名我现在也忘了。:(但可以肯定它不是隐藏文件!
OK,有关先安装XP后安装Ubuntu的,还有什么问题?一起来讨论一下吧。
2、Ubuntu安装成功后,又重装XP的情况的;由于XP不为人知的“古怪的习性”,mbr主引导区是肯定要被覆盖的。重启之后原先的grub引导不会出现了,直接进入XP登陆界面,XP对Linux完全视而不见。这时可goto本帖1-B-第二步,顺利解决问题。
由于wingrub确实没有Linux下的grub好用,不能随Linux下的系统更新而相应动作,所以强烈建议使用Linux下的grub去引导双系统,甚或多系统!