使用双启动计算机时,如何防止Windows覆盖GRUB


19

我已经阅读了很多有关双重引导的内容,这似乎很容易,例如加载Windows,然后用GRUB加载Linux,但是每个人都说Windows愿意在有机会时放弃GRUB。我可以采取什么措施来防止这种情况发生(除了使用Windows的引导加载程序之外,我想让这一过程尽可能简单)?


Answers:


17

每当您安装引导扇区,将其升级到新版本或使用,或较旧的工具时bootrec /fixmbr,Windows都会覆盖引导扇区。通常,先安装Windows,然后再安装Linux。引导扇区将保持不变,直到您执行上述操作之一为止。(也许还有其他方法可以写入MBR。)但是,如果丢失了GRUB,可以轻松恢复它:bootrec /fixbootfdisk /mbr

  • 从实时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可能具有保护启动扇区的选项。


通过升级,您是指Windows 7升级到Windows 8还是仅运行Windows Update?
Nathan2055

1
@ Nathan2055是的,像7到8 ...新的更高版本的Windows。Windows Update不会影响MBR。
Christopher

我是这么想的。好消息是我怀疑我是否会在Windows下使用MBR,并且在阅读本文后无法进入Windows 8 。
Nathan2055

1
作为替代方案,您可以尝试配置Windows引导加载程序以将其加载到grub:oreillynet.com/pub/h/2337 涉及更多点,可能工作太多而影响很小,但是这样做可以使Windows确实会覆盖引导加载程序,您仍然可以引导进入Linux。
布拉奇利2013年

@JoelDavis:是的,我已经阅读了一些有关此操作的教程,但是对于那些甚至完全没有经验来加载GRUB的人,考虑到我不想升级,我认为Windows不会给我带来麻烦,我想我会使用原始GRUB设置,并且不会与Bootloader混淆。
Nathan2055

4

我想我会使用原始GRUB设置,并且不会与Bootloader混淆。

如果您使用任何形式的grub,那么您会迷惑引导加载程序。GRUB代表“大型统一引导程序”。并且有两个版本-grub v1和grub v2。所有现代linux系统都会自动使用grub2。如果安装任何Linux系统,则grub是默认的引导程序,除非您特别选择LILO,否则我不建议这样做。

我个人有一个带有xp和Wheezy的双启动系统。我通过禁用“ Windows Restore”选项来防止XP覆盖grub。

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

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


1
禁用Windows Restore选项似乎已为我解决了此问题。
DrCord

2

这是我使用的一种解决方法,它无需干预即可用于Windows更新:将EFI / Microsoft重命名为EFI / Microsomething,将grub.cfg中的Windows引导路径替换为EFI / Microsomething / bootmfgw.efi,如下所示:

menuentry "Microsoft Windows UEFI-GPT" {
    insmod part_gpt
    insmod fat
    insmod search_fs_uuid
    insmod chain
    search --fs-uuid --set=root <PROVIDE YOUR EFI DRIVE UUID>
    chainloader /EFI/Microsomething/Boot/bootmgfw.efi
}

1

只需打开gparted,右键单击其中包含Grub的分区,转到管理标志并标记为启动。


2
如果Windows安装仅更改了引导分区,则此方法可能起作用。就我而言,Windows 8.1安装覆盖了MBR,需要Christopher的grub-install解决方案。
内森·基德

1

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

efibootmgr

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

在某些(如果不是全部)条目旁边还有星号*,表示它们处于活动状态。

查看Windows条目旁边的4位引导号并运行

sudo efibootmgr --bootnum #### --inactive

这将停用Windows条目。另外,如果尚未激活,请确保现在停用的Windows具有更高的优先级:

sudo efibootmgr --bootorder ####,$$$$,&&&&,%%%%

其中####是Windows引导号。

如果立即重新启动,并且以最高优先级启用了Linux选项,则将引导至grub。

请注意,Windows似乎无法识别它已被停用,因此无法通过启动Windows或对其进行更新来还原它。

我参加了一个本地Linux installfest,在那里我们为有兴趣的人安装Linux,通常是作为Windows旁边的辅助操作系统。我还没有看到这种方法失败,并且我已经在几个发行版(主要是Ubuntu和Mint)和几个供应商(Asus,Acer,HP,Lenovo)上尝试过。


0

更改文本颜色,大小,字体或菜单项标题时,Windows 10会覆盖GRUB 2。

有两种解决方法。

  1. 您可以在传统模式下安装Linux(BIOS设置>引导>传统支持+传统优先)。

  2. 您可以关闭Windows恢复(也称为系统保护)(“控制面板”>“系统和安全性”>“系统”>“系统保护”>“配置”>“禁用”)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.