如果在已经安装了 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/>。转载请保留此信息及相应链接。
又是一个技术控,以前大学室友也是整天在寝室搞这些,现在已经成为高富帅让我仰视了。
汗颜啊,我这全是小打小闹的入门级折腾。
openSUSE同好~ 这个技能非常重要,必须要学习。
欢迎多交流 :D