如何修复GRUB2


如果你想进一步了解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)挂载

·········10········20········30········40········50········60········70········80········901.sudo mount /dev/sda1 /mnt

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

·········10········20········30········40········50········60········70········80········901.sudo mount /dev/sda2 /mnt/boot

另外

·········10········20········30········40········50········60········70········80········901.sudo mount --bind /dev /mnt/dev

然后使用chroot命令

·········10········20········30········40········50········60········70········80········901.sudo chroot /mnt

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

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

·········10········20········30········40········50········60········70········80········901.update-grub

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

·········10········20········30········40········50········60········70········80········901.grub-probe -t device /boot/grub·········10········20········30········40········50········60········70········80········901.grub-install /dev/sda·········10········20········30········40········50········60········70········80········901.grub-install --recheck /dev/sda

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

方法三、grub-rescue

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

·········10········20········30········40········50········60········70········80········901.grub rescue> ls

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

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

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

我的在(hd0,msdos6)上。

·········10········20········30········40········50········60········70········80········901.grub rescue >set root=(hd0,msdos6)·········10········20········30········40········50········60········70········80········901.grub rescue >set prefix=(hd0,msdos6)/boot/grub·········10········20········30········40········50········60········70········80········901.grub rescue> insmod normal·········10········20········30········40········50········60········70········80········901.rescue grub> normal

就起来了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值