grub-install / grub boot 到底如何工作?

grub-install / grub boot 到底如何工作?

尝试制作一个带有完整安装的 Linux 发行版的 USB,我发现了很多页面(如下所示:如何修复 grub? (安装Windows后如何恢复Ubuntu?))解释如何在设备上安装/重新安装 grub。

试图了解程序和方法,提出了一些问题:

  • 命令如何grub-install知道在哪里找到要启动的操作系统(分区)?

我看到 - 使用 Linux USB live 驱动器 - 我们挂载要安装 Grub 的设备分区之一,并使用以下命令:for i in /sys /proc /run /dev; do sudo mount --bind "$i" "/mnt$i"; done我们挂载 grub-install 所需的所有目录,以找到所有安装在所有操作系统上的操作系统。已识别的设备(因为 /dev/ 目录下的所有设备都应考虑在内)。我的方法正确吗?我还认为,一旦安装并设置了所有内容,grub-install 就会创建一个配置,告诉 grub 要引导的操作系统位于设备上的位置...是吗?安装后此配置是否可以手动编辑(例如安装新的 SO 并手动将其引导指令添加到 grub 配置中)?

  • grub-pcgrub-efigrub-legacy包之间的确切区别是什么?

我知道 grub 可以安装用于传统引导(从 MBR 使用 BIOS 引导)和 EFI 引导;但我还注意到 grub-install 命令(您可以在安装grub-pc和软件包之一后启动该命令grub-efigrub-legacy具有--efi-directory参数。该参数允许您指定 ESP 分区在运行系统上的安装位置,因此,我认为它允许在 EFI 引导模式下安装 Grub...这是对的吗?这是否意味着我可以使用这些软件包中的任何一个以 EFI 或 BIOS 模式安装 Grub?如果是,怎么办?在安装这些软件包之一后,如何指定要使用 grub-install 在 Bios 或 EFI 模式下安装 Grub?此外,我注意到您似乎只能安装这些软件包之一(如果您已经有一个软件包并尝试使用 aptitude 安装另一个软件包,aptitude 会将当前安装的软件包标记为删除),为什么会发生这种情况?

答案1

Grub Legacy 是 grub2 之前的旧版本 grub。大约 10 年前,许多发行版转换为 grub2。现在,当我们说 grub 时,我们通常指的是 grub2,因为旧的 grub 被称为 grub 遗产。

grub-pc 软件包用于 BIOS 引导安装并使用 MBR 引导。如果驱动器采用 gpt 分区,则还需要带有 BIOS_grub 标志的 1 或 2 MB 未格式化分区。

grub-efi-amd64 适用于 64 位 PC 和 UEFI 引导。您需要 grub-efi-amd64 的 ESP。 Ubuntu 允许您以 UEFI 模式安装到已有 40 年历史的 MBR(msdos) 分区驱动器,但可能不应该,但可能允许它防止数据驱动器转换时丢失数据。 UEFI 强烈建议使用 gpt 分区。 Windows 需要 gpt 来进行 UEFI 启动。

https://help.ubuntu.com/community/Grub2

手册2.04 https://www.gnu.org/software/grub/manual/grub/grub.pdf

相关内容