在这种情况下安装 Windows 会破坏 grub 吗?

Jon*_*Doe 5 grub2 dual-boot windows uefi

我有一台带有两个 500 GB SSD(sda 和 sdb)的计算机。我在 sda 上运行 Ubuntu 14.04,而 sdb 上没有任何内容。我的主板有 UEFI 固件。我想在 sdb 上安装 Windows 10。

对于如何在 Ubuntu 之后安装 Windows 的问题有很多答案,但它们假设这两个系统位于同一磁盘上的不同分区上。他们继续解释 Windows 将破坏 Grub 以及如何解决这个问题。

如果我将 Windows 安装到 sdb(一个完全独立的驱动器)上,它还会破坏 grub 吗?

多谢。

Rod*_*ith 4

在基于 EFI 的安装上安装 Windows 实际上不会破坏GRUB;它只是使 Windows 启动加载程序成为默认启动加载程序。对于基于 BIOS 的系统,这是通过 Windows 覆盖 GRUB 来完成的(这可以被视为一种破坏),但对于基于 EFI 的系统,这是通过 Windows 在 GRUB 旁边安装自己的引导加载程序来完成的。 GRUB,然后告诉计算机默认使用 Windows 引导加载程序进行引导。在第二种 (EFI) 情况下,GRUB 保持不变,并且可以通过多种方式更改默认引导加载程序:

  1. 使用 EFI 固件的用户界面——不同 EFI 的详细信息有所不同,有些甚至不提供此功能;但有些允许您使用 EFI 设置实用程序永久更改引导顺序。大多数都允许您通过激活启动管理器的用户界面来进行临时更改,通常是在开机后立即按 Esc、Enter 或功能键。
  2. 使用 EFI shell ——EFI shell 程序版本 2(内置于少数 EFI 中,并可作为其他二进制文件使用)有一个名为 的命令bcfg,用于操作启动变量。您可以使用此工具更改启动顺序。有关此主题的更多信息,请参阅此处。
  3. bcdedit在 Windows 中使用-bcdedit /set {bootmgr} path \EFI\ubuntu\shimx64.efi在 Windows管理员命令提示符窗口中键入会将 Ubuntu 设置为默认值。(如果安全启动被禁用,则grubx64.efi可以正常工作shimx64.efi,并且在少数情况下可能需要;但shimx64.efi更有可能工作。)
  4. 在 Windows 中使用 EasyUEFI——第三方EasyUEFI 程序提供了一种(相对)易于使用的 GUI 方法来操作 EFI 启动项。
  5. efibootmgr在 Linux 中使用——该efibootmgr命令可以显示和更改 EFI 启动项。您可以键入sudo efibootmgr -v以查看当前条目,然后使用-o来更改启动顺序,例如首先sudo efibootmgr -o 2,7,4启动Boot0002Boot0007如果失败则接着启动,最后尝试Boot0004.
  6. bless在 OS X 中使用——OS X 操作 EFI 启动项的工具是bless. 有点复杂,Mac 也有点奇怪,所以这里就不详细描述了。

请注意,在 EFI 系统上,使用一个磁盘与使用两个或更多磁盘在很大程度上是无关的。这是因为 EFI 引导过程涉及基于 NVRAM 的引导加载程序指针。NVRAM 条目包括存储引导加载程序的磁盘和分区的标识符。任何分区都可以容纳任意数量的引导加载程序(达到某个非常高的理论限制);或者您可以将它们分布在任意数量的分区和磁盘上。一切都差不多。不过,有一点需要注意:处理 BIOS 模式多重启动时经常使用的一种策略是在安装第二个操作系统时删除已安装操作系统的磁盘。这对 EFI 系统仍然具有安全优势,但有一个问题:如果您移除磁盘,某些 EFI 会注意到该磁盘已消失,并会删除该磁盘上存储的引导加载程序的 NVRAM 条目。因此,像在 BIOS 系统上那样交换磁盘可能会使引导第二个操作系统变得更加困难,因为您需要重新创建其 EFI 引导管理器条目。


小智 1

只要您将 Windows 的所有分区(系统保留分区和 C:)限制在第二个磁盘(sdb)上,就不会破坏安装在第一个磁盘(sda)上的 grub。您只需从 BIOS 中选择从哪个磁盘启动即可。之后,您的 BIOS 将简单地执行相应的引导加载程序,无论是 Windows 还是 grub。