Linux中国 | Linux.cn - 我们的Linux中文社区

 找回密码
 加入

QQ登录

QQ登录

搜索

如何修复GRUB2

热度 11已有 4952 次阅读2010-10-19 20:36 |关键词:grub 修复 livecd 分区表 电脑 指南 中文版

如果你想进一步了解grub2方面的操作,请阅读:GRUB2指南中文版

如果你不正确地编辑了系统所在分区(比如使用Windows下的分区工具)或者是新安装了Windows,硬盘的分区表中的grub可能会破坏导致电脑无法开机。网上能搜到不少关于修复grub的文章,不过很多针对的是过时的grub1,而不是常见的grub2。我这两天正好玩爆了两台电脑的grub2,修复之后就把方法记在这里。

如何判断电脑上使用的是grub1还是2?/boot/grub下如果有个grub.cfg那么就是2了。如果有menu.lst就是1.

方法一(针对Ubuntu)、使用DVD。DVD启动的时候有一个“修复损坏的系统”选项,跟着来就行。配置过程看起来有点像安装的过程,不过不是重装一遍。AlternateCD我没有使用过,不知道是不是有这个功能。

方法二、使用LiveCD(或USB)

1. 使用LiveCD启动电脑。任何装有grub2的系统的LiveCD都可以。对于Ubuntu,9.10以及之后的版本使用的都是grub2,因此最好使用9.10或更新一些的光盘。对于使用软盘的同学(现在还有吗?)有一个同时适合软盘、光盘、优盘的专门用来修复grub的镜像:SuperGrubDisk,可以试试。

2. 打开终端。位置在应用程序(Applications)——附件(Accessories)——终端(Terminal)。也可以按Ctrl+Alt+F1进入字符终端。在字符界面下按Alt+F7可以回到图形界面。

3. 判断系统的标准分区

系统后,把原来的系统所在分区(假设在/dev/sda1)挂载


sudo mount /dev/sda1 /mnt

如果/boot单独分了出来(我没有单独分。这里假设在/dev/sda2吧),也要挂上

sudo mount /dev/sda2 /mnt/boot

另外

sudo mount --bind /dev /mnt/dev

然后使用chroot命令

sudo chroot /mnt

注意这里往下是以以前的root运行以前的系统。

如果仅仅是grub.cfg不正确导致无法启动,此处只要再次生成grub.cfg就可以了

update-grub

如果是mbr中的grub被破坏了,需要重新写入,这里假设你装到第一个硬盘的mbr下头去(/dev/sda,这是推荐的安装位置)

grub-probe -t device /boot/grub

grub-install /dev/sda

grub-install --recheck /dev/sda

到这里就算结束了。如果你的电脑上有装有Windows的分区并且这时没有挂载进去的话,启动菜单里是没有Windows的。没关系,你把系统正常启动之后再运行一次sudo update-grub就搞定了。

方法三、grub-rescue

grub遭到破坏有可能会自动进入一个grub-rescue界面。先使用ls命令

grub rescue> ls

我的结果是(hd0) (hd0,msdos7) (hd0,msdos6) (hd0,msdos5)...

不知道为什么是从后向前。另外这里的msdos并不是指分区文件系统格式,而是指hd0的分区表使用了mbr。

这时就需要记得自己/boot(没有/boot的话就是/)在哪个分区了。不记得的话还是用Live系统看看吧。

我的在(hd0,msdos6)上。

grub rescue >set root=(hd0,msdos6)

grub rescue >set prefix=(hd0,msdos6)/boot/grub 

grub rescue> insmod normal

rescue grub> normal

就起来了。

本文系S.Sn.Giraffe原创,版权归S.Sn.Giraffe及Linux中国所有,转贴请注明。

刚表态过的朋友 (0 人)

发表评论 评论 (3 个评论)

回复 cumtpl 2010-10-30 22:42
不错!
回复 jxhow 2010-11-14 23:18
算不上指南,就是几个修复方法。
回复 S.Sn.Giraffe 2010-11-15 00:20
jxhow: 算不上指南,就是几个修复方法。
“指南”那几个字是链接,不是标题。

facelist

你需要登录后才可以评论 登录 | 加入

无觅相关文章插件