![在双引导设置中暂时禁用/卸载 grub,然后将 grub 恢复到启动时的状态](https://linux22.com/image/109444/%E5%9C%A8%E5%8F%8C%E5%BC%95%E5%AF%BC%E8%AE%BE%E7%BD%AE%E4%B8%AD%E6%9A%82%E6%97%B6%E7%A6%81%E7%94%A8%2F%E5%8D%B8%E8%BD%BD%20grub%EF%BC%8C%E7%84%B6%E5%90%8E%E5%B0%86%20grub%20%E6%81%A2%E5%A4%8D%E5%88%B0%E5%90%AF%E5%8A%A8%E6%97%B6%E7%9A%84%E7%8A%B6%E6%80%81.png)
我使用 grub 2.02-beta2 的双引导设置,它允许我在 x64 台式机上在 Windows 7 和 arch linux 之间切换。它们都安装在我的 C: 驱动器上的同一物理 HDD 上。 (一个常见的解决方案是在BIOS中切换为从Windows HDD启动,这对我来说是不可能的)
现在,Microsoft 发布了一个麻烦的 2016 年 10 月安全更新,当您使用 GRUB 引导加载程序时,该更新的安装会在重新启动时失败。因此我试图实现以下目标:
- 以某种方式禁用 GRUB 引导加载程序,以便我的 PC 自动引导到 Windows,而不会丢失任何 Linux 数据(C 上的一个分区和 D 上的一个分区)
- 安装所有更新,重新启动几次
- 使用 Live CD 或类似工具,恢复我之前的 GRUB 配置,而不会丢失数据
答案1
好吧,今天我终于有时间做了这个。做好准备,这需要一段时间。在执行任何这些命令之前,请确保您知道您是否有 UEFI 或 BIOS 系统以及 GPT 或 MBR 分区表。显然,这具有 0 保修,这正是对我有用的,我使用了许多 StackOverflow 和其他论坛答案。遗憾的是我只被允许链接2。
步骤0:备份备份备份。我使用 Reflect,它是免费的,它可以完成工作,还有很多其他选择。买一些大的外部硬盘,把你的文件放在云端(如果你担心隐私,我可以推荐 Cryptomator。例如,Google 硬盘免费为你提供 15 Gig。)说真的,各种东西都可能出错,而且很有可能出错您可能需要重新安装至少 1 个操作系统。
步骤1:卸载/覆盖GRUB。
对我来说,这个是花费时间最长的。基本上,您要做的就是覆盖 MBR(我对这些技术不是最了解的。您需要检查您是否有 UEFI 或 BIOS - 我有 UEFI - 以及您的分区表是否是 GPT或 MBR。出于某种原因,我有 MBR,这是较旧的标准。)的 GRUB 直接指向 Windows,然后您可以安装更新。
可以找到如何执行此操作的说明这里。我建议先在 Windows 中尝试一下,这花了我很长时间,因为我的 Windows 在 2 小时左右的时间里根本没有启动。最终,启动修复并没有起作用。我必须在 BIOS 中选择 USB: not UEFI: 并在提示符下运行很多命令:
bootrec /fixmbr
bootrec /fixboot
我的修复启动失败,出现“找不到元素”。然后我就跟着这文章,特别是(小心!将驱动器号更改为适合您的驱动器号) bcdboot C:\Windows /SC:执行 bootrec 内容,将分区设置为活动分区,执行一次启动帮助,希望您的 Windows 现在可以启动。
一旦达到此状态,我们就可以重新启动 Windows 几次,安装所有更新并对我们的新安全系统感到满意。然后我们意识到我们想要 Linux 回来。
第2步: 重新安装grub
为此,我曾经从 HDD 启动 arch linux。在这里,我必须执行 mv /dev/disk/by-label/MYLINUXLIVE /dev/disk/by-label/ARCH_ 才能启动它。然后我使用 sudo fdisk -l 查找 Linux 分区。现在您想要挂载它并对其进行 chroot sudo mount /dev/sdXY /mnt sudo arch-chroot 现在我们想要安装 grub,这将再次覆盖 MBR。 sudo grub-install --target=i386-pc --recheck /dev/sdUV grub-mkconfig -o /boot/grub/grub.cfg 退出重新启动
希望现在可以引导到 grub。现在对我来说,一开始没有找到窗口,但这很容易修复。
步骤3:将 windows 条目添加回 grub(可选)
启动到旧的 arch/Linux 安装,运行os-probe
,它将检测 Windows,并运行sudo grub-update
。 Arch 默认情况下没有 grub-update,所以源代码如下:
#!/bin/sh
set -e
exec grub-mkconfig -o /boot/grub/grub.cfg "$@"
在此之后,一切都和以前一样,除了安装了有问题的更新,我失去了一些神经。
答案2
杰夫的回答是一个很好的答案。我强烈推荐启动修复:
https://sourceforge.net/projects/boot-repair-cd/
这允许我重置 MBR 以直接启动到 Windows,然后在更新 Windows 后允许重新安装 Grub 并返回到双启动模式。