红联Linux门户
Linux帮助

两种情况下的grub修复

发布时间:2010-06-14 17:28:32来源:红联作者:BENGBENG
[i=s] 本帖最后由 BENGBENG 于 2010-6-15 10:00 编辑 [/i]

大部分安装了linux的一定还保留着windows,有的甚至不是双系统,是三系统甚至更多,记得我看《鸟哥的私房菜》时鸟哥说要在他的三十个G的硬盘里装四个linux,在硬盘里同时装了windows,linux和max的也不是没有,因此装了系统之后grub的修复就是个大问题我就用过Ubuntu和fedora,具体处理的经验也不是很多不过还是有点办法的
(1)Ubuntu的grub重装和修复。在装了winxp和Ubuntu的电脑上,winxp还原或重装后,grub的启动菜单会丢失,开机会看到grub2的提示符,虽然说grub2从命令行也可以引导,但是我从来没成功过,因此重建菜单是唯一的路:用安装光盘启动到livecd下(硬盘启动livecd的情况没试过),在终端输入命令:
sudo -i
mount /dev/sdax /mnt
mount /dev/sday /mnt/boot
grub-install --root-directory=/mnt/ /dev/sda
上边的每一行都是要单独输入的命令,如没有为/boot单独分区则不需要第三行命令,其中x,y分别为/和/boot所在的分区序号,每一行命令输完后都没有错误提示才行,如果有检查下命令是否有毛病或者多试几次,然后重启即可进入Ubuntu,进入Ubuntu后,打开中断输入命令:
sudo update-grub
sudo grub-instll /dev/sda
第一行命令输入后会显示grub检测到的硬盘上的系统,第二行是将信息写入硬盘,若这些都做了还是无法引导winxp,则要检查grub配置文件:
sudo gedit /boot/grub/grub.cfg
看下XP的引导文件是不是为
menuentry "Microsoft Windows XP Professional" {
set root=(hd0,1)
search -no-floppy -fs-uuid -set 4a807ca0807c93e3
drivemap -s (hd0) $root
chainloader +1
若是则将set root=(hd0,1)改为set root=(hd0,0)因为大部分人都将XP装在第一分区,而grub2在这一点上好像总是出错
(2)安装XP+Ubuntu9.10+fedora13后fedora的grub无法引导Ubuntu的问题。这是我最近遇到的问题,我原来装的是opensuse11.2+XP+Ubuntu9.10但是源太慢了所以格了opensuse装了最新的fedora13,但是装完了后发现Ubuntu启动项不见了,呵呵,系统不能识别一般发生在先装新发行版本后装后发行的版本时,没想到这个fedora13竟然不能识别比他早了近半年的Ubuntu9.10,后来我进了fedora,用gedit打开fedora的grub配置文件,在后面加了个title ubuntu9.10,然后根据ubuntu里的引导文件在fedora里重写ubuntu的引导,原来的ubuntu的引导文件为/boot/grub/grub.cfg,内容为
menuentry "Ubuntu, Linux 2.6.31-14-generic" {
recordfail=1
if [ -n ${have_grubenv} ]; then save_env recordfail; fi
set quiet=1
insmod ext2
set root=(hd0,7)
search --no-floppy --fs-uuid --set 3038f513-2a08-44c9-b966-b1a09814b523
linux /boot/vmlinuz-2.6.31-14-generic root=UUID=3038f513-2a08-44c9-b966-b1a09814b523 ro quiet splash
initrd /boot/initrd.img-2.6.31-14-generic
}
则对应的fedora引导文件应加入的内容为(对照fedora自己的,注意uuid后的数据来历,我就不多说了)
title ubuntu(2.6.31-22-generic)
root (hd0,4)
uuid 3038f513-2a08-44c9-b966-b1a09814b523
kernel /boot/vmlinuz-2.6.31-22-generic root=UUID=3038f513-2a08-44c9-b966-b1a09814b523 ro quiet splash
initrd /boot/initrd.img-2.6.31-22-generic
(fedora引导文件为/boot/grub/grub.conf)最后应把ubuntu的vmlinuz和initrd.img(省略版本号了)放到fedora的/boot里当然fedora里的grub配置文件指向的是自己的/boot,所以会发现ubuntu里的是
set root=(hd0,7)而fedora为root (hd0,4),因为我的ubuntu的/boot在hd0,7而fedora的/boot在hd0,4(这是最关键的一点,我在网上看的,但是没有保存链接)这些做完保存后就行了
文章评论

共有 5 条评论

  1. 松鼠008 于 2010-06-18 15:40:38发表:

    谢谢了

  2. daixlon 于 2010-06-15 08:26:24发表:

    第二个很好,受教啦

  3. BENGBENG 于 2010-06-15 00:46:11发表:

    2# 相思爱文


    搜噶

  4. bmcqqi 于 2010-06-14 20:51:05发表:

    留着看用得着不

  5. 相思爱文 于 2010-06-14 18:43:23发表:

    最简单的是安装发行版时,把启动管理器安装到分区,而不是mbr。这样,只需任意一个启动管理器,都可以启动所有系统,还不用菜单,只需转向分区就行。

    另外恢复grub更快的方法是备份。引导区用dd,菜单直接cp。启动管理器不能识别新分区,升级grub为最新版本。