使用双引导机器时如何防止 Windows 覆盖 GRUB

Nat*_*055 25 dual-boot windows grub2

我读了很多关于双引导的书,看起来就像加载 Windows 然后用 GRUB 加载 Linux 一样简单,但是每个人都说 Windows 一有机会就喜欢丢弃 GRUB。我可以采取哪些步骤来防止这种情况发生(除了使用 Windows 的引导加载程序,我想让它尽可能简单)?

Chr*_*her 22

Windows将覆盖只要你安装它的引导扇区,它升级到新版本,或者使用的工具一样bootrec /fixmbrbootrec /fixboot或更早fdisk /mbr。通常,先安装 Windows,然后安装 Linux。引导扇区将保持不变,直到您执行上述操作之一。(也许还有其他方法可以写入 MBR。)但是,如果您丢失了 GRUB,它很容易恢复:

  • 从 Live CD(CD/DVD 或闪存驱动器)启动。
  • 成为 root 或使用sudo下面的命令。
  • 如果需要,列出可用分区: fdisk -l
  • Windows 几乎肯定会存在于 /dev/sda1 上: mount /dev/sda1 /mnt
  • 在 MBR 中重新安装 GRUB: grub-install --root-directory=/mnt/ /dev/sda
  • 重启: shutdown -r now
  • 恢复 GRUB 菜单: update-grub

如果计算机足够强大,您也可以安装 100% Unix、Linux 或 BSD,然后在虚拟机中简单地运行 Windows。

另外:您的计算机的 BIOS 可能具有保护引导扇区的选项。


Mik*_*ike 9

我确实尝试了上面的一些好的建议,但没有效果。我认为 MS 变得更加棘手。

2021 年对我来说最有效的是遵循启动修复摘要中列出的建议,该建议建议启动 Windows 并在命令提示符中运行以下命令(我需要以管理员身份运行命令才能使其正常工作)

bcdedit /set {bootmgr} path \EFI\ubuntu\shimx64.efi
Run Code Online (Sandbox Code Playgroud)

注意:上面的命令是根据我的 UEFI 安全启动情况定制的,因此如果您想遵循此方法,那么您需要运行 boot-repair 并记下他们建议的修复。

在 Windows 中运行此命令后,我总是会得到 grub 菜单,如果我启动到 Windows,它似乎不会破坏我的 grub,并且在重新启动时我会再次得到 grub 菜单,默认为 Linux。这是一件很美好的事情,


小智 5

我想我会使用普通的 GRUB 设置,而不是弄乱引导加载程序。

如果您使用任何形式的 grub,您都会弄乱引导加载程序。GRUB 代表“大统一引导加载程序”。有两个版本——grub v1 和 grub v2。所有现代 Linux 系统都自动使用 grub2。如果您安装任何 Linux 系统,grub 是默认引导加载程序,除非您专门使用 LILO,但我不建议这样做。

我个人有一个 xp 和 Wheezy 的双启动系统。我通过禁用“Windows 恢复”选项来防止 XP 过度写入 grub。

在禁用恢复选项之前,我必须每周至少修复一次 grub,因为 Windows 引导加载程序不断覆盖 grub。

我正在修复通过 USB 端口在外部硬盘驱动器上安装 Windows 8。我希望这一切顺利,不会扰乱我的 MBR。

  • 禁用 Windows 恢复选项似乎已经为我解决了这个问题。 (2认同)

Kar*_*120 5

我在网上找到的一个解决方案(unix.stackexchange.com)涉及停用 Windows 启动管理器。进入 Linux(原始安装,如果可以,或者 live CD/DVD)并运行以下命令:

efibootmgr
Run Code Online (Sandbox Code Playgroud)

请注意,此方法仅适用于在 UEFI 模式下安装 Linux 的情况,因此如果 Linux 已在 Legacy 模式下安装,则会出现错误。如果您在 UEFI 模式下安装它,您将获得一些信息和列表。您会在列表中的某处注意到 Windows 引导加载程序/管理器和 Linux。Windows 可能具有更高的优先级(启动顺序在列表上方)。

在一些(如果不是全部)条目旁边还有星星*,将它们标记为有效。

查看 Windows 条目旁边的 4 位启动编号并运行

sudo efibootmgr --bootnum #### --inactive
Run Code Online (Sandbox Code Playgroud)

这将停用 Windows 条目。此外,请确保现在已停用的 Windows 具有更高的优先级,如果它还没有:

sudo efibootmgr --bootorder ####,$$$$,&&&&,%%%%
Run Code Online (Sandbox Code Playgroud)

其中#### 是 Windows 启动编号。

如果您现在重新启动,您将启动到 grub,如果启用了最高优先级的 Linux 选项。

请注意,Windows 似乎无法识别它已被停用,因此无法通过启动进入 Windows 或更新它来恢复。

我参加了本地 Linux 安装节,我们为感兴趣的人安装 Linux,通常作为 Windows 旁边的辅助操作系统。我还没有看到这种方法失败,我已经在几个发行版(主要是 Ubuntu 和 Mint)和几个供应商(华硕、宏碁、惠普、联想)上尝试过。

  • 如果 Windows 没有更高的优先级,它会扰乱引导加载程序以获得更高的优先级。既然它已经停用,你不妨给它更高的优先级,让它保持自满。 (2认同)