恢复 Windows 与 OpenSUSE 双系统的 GRUB 2 引导菜单

如果在已经安装了 Linux 的电脑上再安装 Windows 系统,原先的 Grub 引导程序就会被替换成 Windows 的启动引导程序。这里根据 OpenSUSE 上的帮助文档记录一下恢复 GRUB 2 引导程序的方法,也就是将 GRUB 引导程序恢复到 MBR。

要恢复 GRUB 引导程序到 MBR,需要能启动到 OpenSUSE 系统中。可以使用安装盘上的 Rescue System 模式,也可以用带有 Plop Boot Manager 或者 Super Grub Disk 的启动光盘。实际上自己做个可以引导启动的 GRUB 启动 U 盘也是很轻松的。

进入 OpenSUSE 系统后可以按照下面的步骤来恢复 MBR(Master Boot Record,主引导记录)。

如果使用 GRUB2(OpenSUSE 13.1 起已为默认)

切换到 root 用户(或使用 sudo -i

su root

查看硬盘分区情况,找到主要的 Linux 分区(即根分区 / 所在的磁盘分区):

fdisk -l

确认一下 Linux 所在的磁盘,假设这里是 /dev/sda6。

以上准备工作如果没什么问题的话,接着进行实质性的修改:

grub2-install /dev/sda # 注意这里 sda 后面没有前面提到过的数字 3
exit

如果上面这一指令运行成功,GRUB2 就已经安装好了,重启系统即可:

reboot

如果使用旧版 GRUB

在终端下输入(如果是 Rescue System 模式的话不需要 sudo,或者还是继续直接使用 root 身份吧):

/usr/sbin/grub

然后执行下面的命令:

 grub> find /boot/grub/stage2 # 这个指令将会显示 grub 安装的实际位置,下面的指令需要用到
 grub> root (hdx,y)
 grub> setup (hdx)
 grub> quit

注意:这里 x 代表磁盘号,而 y 代表分区号,组合起来的位置就是 GRUB stage2 的安装位置。都从 0 开始编号。例如,如果第一条指令输出是 (hd0,5),那么就输入 root (hd0,5),然后输入 setup (hd0)。重启后,GRUB 应该就会出现了。

有了启动引导程序之后就可以通过 OpenSUSE 系统中的 yast2 里面的 Boot Loader 设置启动的参数了。如果不经过上面的折腾,直接通过 Boot Loader 里面提供的安装特性是无法成功的。

在先 Windows 后安装 OpenSUSE 的情况下,是可以选择将 OpenSUSE 的 GRUB 引导程序写入 MBR 的,但是后来发现这样会导致两个问题:(1)Windows 7 无法使用休眠功能,(2)软激活的 Windows 7 会失效。

最近发现 OpenSUSE 的 GRUB 2 引导程序不会导致 Windows 7 无法休眠了,而且因为不是软激活,也不会出现需要重新激活 Windows 7 的情况了。所以觉得 GRUB 2 这个引导程序还是值得推广的。

2015.01.14 更新

在上述 BootLoader Grub2(未测试 Grub)启动的情况下,如果通过 Windows 7 控制面板 –> 系统和安全 –> 管理工具 –> 计算机管理 控制台里面的 存储 –> 磁盘管理 重新将 Win7 系统盘所在分区设置为活动的(鼠标右键单击该分区,选择“将分区标记为活动分区”),则 Windows 7 可以正常休眠和恢复。

2016.01.12 更新

本来想直接更新这篇博客的,但是考虑到 Windows 都到 10 了,openSUSE 也已经翻篇了,就把这个留着做个纪念吧。新起了一篇文章,见这里:openSUSE 与 Windows 使用 Grub2 双启动©

本文发表于水景一页。永久链接:<http://cnzhx.net/blog/opensuse-repair-boot-loader/>。转载请保留此信息及相应链接。

4 条关于 “恢复 Windows 与 OpenSUSE 双系统的 GRUB 2 引导菜单” 的评论

  1. 又是一个技术控,以前大学室友也是整天在寝室搞这些,现在已经成为高富帅让我仰视了。

时间过去太久,评论已关闭。
如果您有话要说,请到讨论区留言并给出此文章链接。
谢谢您的理解 :-)