grub2 如何在 MBR 分区磁盘和 GPT 分区磁盘上工作?

skm*_*mht 1 bios boot operating-systems gpt uefi

我想知道 grub2 如何以详细的方式在 MBR 分区磁盘和 GPT 分区磁盘上工作,意味着需要所有分区,在每种情况下创建哪些文件等,以及如何在每种情况下访问/修改这些分区启动任何操作系统时的两种情况。如果有人可以在这方面指导我,那将很有帮助。

Rod*_*ith 5

实际上有四种常见(或至少是半常见)的情况:

  • MBR 上的 BIOS 模式 GRUB -- 这是传统的 PC 配置。其中,GRUB 被分成多个阶段。第一阶段驻留在主引导记录 (MBR) 的前 440 个字节中。这个第一阶段然后加载并执行 GRUB 的第二阶段,它通常驻留在紧跟 MBR 的扇区中。这个空间在大多数 MBR 磁盘上是官方未分配的,所以把 GRUB 代码放在那里有点冒险;但它通常工作正常。附加代码驻留在文件中,通常在/boot/grub用于安装 GRUB 的操作系统目录。这种配置可能有多种变体。例如,将 GRUB 第一阶段放在分区引导记录(PBR;分区的第一个扇区)中曾经很流行,但今天很少见,事实上我不能 100% 确定现代 GRUB 2 仍然支持这一点选项。
  • GPT 上的 BIOS 模式 GRUB——在这个变体中,GRUB 的第一阶段仍然驻留在 MBR 中(对于 GPT 来说它被称为保护性 MBR,它的存在主要是为了阻止不支持 GPT 的工具干扰磁盘)。但是,GPT 磁盘上 MBR 后面的扇区是 GPT 数据结构,因此不能被 GRUB 使用。相反,GRUB 2 依赖于称为BIOS 引导分区的分区,分区的 GPT 类型代码为 21686148-6449-6E6F-744E-656564454649(“bios_grub 标志”在基于 libparted 的工具中设置,或在 GPT fdisk 中键入 EF02) . 其他文件驻留在该/boot/grub目录中,与 BIOS/MBR GRUB 安装一样。
  • MBR 上的 EFI 模式 GRUB —— 在此配置中,第一个 GRUB 代码驻留在EFI 系统分区(ESP;在 MBR 磁盘上键入代码 0xEF)上存储的 GRUB EFI 二进制文件中。该文件可以命名为任何名称,但通常grubx64.efiEFI以发行版命名的子目录中调用(例如EFI/ubuntu/grubx64.efi),或者有时EFI/BOOT/bootx64.efi(“后备文件名”,最常用于可启动的外部媒体,如 USB 驱动器)。与 BIOS 模式 GRUB 一样,其他配置和驱动程序文件驻留在其他地方,通常在/boot/grub安装操作系统中;然而,一些发行版将这些文件与主 GRUB 二进制文件一起放在 ESP 上。请注意,这是四种配置中最不常见的,因为很少有基于 EFI 的计算机从 MBR 磁盘启动。
  • GPT 上的 EFI 模式 GRUB -- 此配置就像 MBR 上的 EFI 模式,除了 ESP 的类型代码为 C12A7328-F81F-11D2-BA4B-00A0C93EC93B(在基于 libparted 的工具上设置的“引导标志”,或在 GPT fdisk 中输入 EF00)。随着从 BIOS 到 EFI 的过渡正在迅速进行,这种配置正迅速成为最常见的配置。

除了这些情况之外,还有一些不太常见的情况涉及更多奇特的固件和分区表。

如您所见,细节方面存在相当大的可变性,并且某些细节会因您的 Linux 发行版而异——或者如果您从源代码手动安装 GRUB,那么您自己设置细节的方式也会有所不同。