是否可以从 BIOS 系统上的 GPT 磁盘启动 Linux?

是否可以从 BIOS 系统上的 GPT 磁盘启动 Linux?

我有一台 AMI BIOS 计算机 [Asus EB1501P],配备 Seagate ST9250315AS 250GB HDD。

在这样的 BIOS 系统上,可以从 GPT 磁盘启动 Linux 吗?

答案1

BIOS 通常不关心您的硬盘1。它只是加载 MBR 并将控制权转移到 MBR 中的引导加载程序。因此从技术上讲,可以在 BIOS 模式下启动 GPT 驱动器,因为 GPT 驱动器在开始时仍然具有保护性 MBR。您只需要一个支持 GPT 磁盘的引导加载程序(例如 Grub 和许多其他 Linux 引导加载程序)

然而,这里出现了一个小问题。在 MBR 驱动器上,引导加载程序通常欺骗通过将其中的一部分存储在下一个扇区中,称为“MBR 间隙”、“引导轨道”或“嵌入区域”磁盘分区工具通常会将其留空。在 GPT 磁盘上,MBR 后面的扇区是 GPT 数据结构,因此不能用于此目的,您需要创建一个小的BIOS 启动分区Grub 存储数据

在 BIOS/GPT 配置中,BIOS 启动分区是必需的。GRUB 将其嵌入core.img到此分区中。

笔记:

  • 在尝试此方法之前,请记住并非所有系统都能够支持此分区方案。请阅读有关 GUID 分区表的更多信息。
  • 仅在 GRUB、BIOS/GPT 分区方案中才需要此附加分区。以前,对于 GRUB、BIOS/MBR 分区方案,GRUB 使用 Post-MBR 间隙来嵌入 core.img)。但是,用于 GPT 的 GRUB 不使用 Post-GPT 间隙来符合需要 1_megabyte/2048_sector 磁盘边界的 GPT 规范。
  • 对于 UEFI 系统,不需要这个额外的分区,因为在这种情况下不会嵌入引导扇区。但是,UEFI 系统仍然需要 EFI 系统分区。

在没有文件系统且分区类型为 GUID 的磁盘上创建一个兆字节分区(使用 fdisk 或 gdisk 为 +1M)21686148-6449-6E6F-744E-656564454649

  • BIOS boot选择的分区类型fdisk
  • ef02选择的分区类型代码gdisk
  • 用于设置/激活分区上的parted标志。bios_grub

GUID 分区表 (GPT) 特定说明

Grub 还支持对该部门进行硬编码包含下一阶段,因此它可以在没有 MBR 后间隙或 BIOS 启动分区的情况下启动,但这很脆弱,因为您需要在每次操作系统更新后更新 Grub。因此不推荐这样做

欲了解更多信息,您可以阅读


另一种方法是将 GPT 驱动器转换回 MBR如果你的硬盘不是太大。事实上有可能有超过 2 TB 的 MBR 磁盘,最多约 2 33 个扇区(即,对于具有 512 字节和 4096 字节扇区的磁盘,分别为 4 TB 和 16 TB),大分区从磁盘边缘的一半开始持续。有多种工具可以进行转换而不会丢失数据,例如磁盘分区MiniTool 分区向导AOMEI分区助手易我分区大师...(我与他们没有任何关系)。

由于您的硬盘只有 250 GB,因此在 MBR 中可以正常工作。但使用 GPT 更安全,因为它在末尾有校验和和一个备份表,尽管如果您双启动 Windows 或某些 BIOS GPT 不友好的其他操作系统,情况会更加棘手


1有些 BIOS 存在缺陷,它们会急切地做一些不该做的事情,比如检查MBR 签名或主动引导标志并拒绝在此类驱动器上启动

答案2

理论上,GPT 应该可以与 BIOS 配合使用。但是,偶尔会出现不兼容的情况。这些情况通常是由于特定硬件的错误或特性造成的,因此这些信息往往是异常报告,而不是 BIOS 和 GPT 文档中的信息。

所有的可能性都太广泛,无法在此全部涵盖,但例如,https://www.rodsbooks.com/gdisk/bios.html,其中还讨论了遇到问题时的一些潜在解决方案。选项取决于您是否要继续使用 BIOS 或切换到 EFI/UEFI(如果您的主板支持)。

如果您将主板、计算机和硬盘型号添加到问题中,那么在等效系统上尝试过并看到您的问题的人可能会描述他们的体验。

答案3

快速安装:BIOS/GPT。在这里您可以找到示例命令。我刚刚验证过,效果很好。

答案4

我没成功。

我尝试将硬盘切换为 GPT。我创建了 BIOS 启动分区。我按要求安装了 GRUB,没有出现任何错误。

重启后出现错误: E61:媒体测试失败,检查电缆。

简而言之,有区别:

  1. MBR 硬盘核心镜像可以在 MBR 之后的任何位置,从扇区 1 到第一个分区的开头(在我的情况下是扇区 2047)。
  2. GPT HDD、GPT 配置和分区数据,并从 MBR 之后的第 1 至第 33 扇区开始,以及核心镜像有自己的分区。

在我转换回 MBR 分区方案并重新安装 GRUB 后,Linux 正常启动。因此毫无疑问启动顺序是错误的(grub-install 不会干扰 BIOS 启动顺序)。

我的猜测是grub 安装错误计算的LBA地址核心镜像启动镜像或者无法识别 GPT 磁盘并且安装损坏的分区数据。如果启动失败,控制权将返回到 BIOS,BIOS 将失败的启动尝试的 retcode 解释为 HDD 错误。

无论如何,一些传统 BIOS 与 GPT 存在问题,并且不能 100% 保证不会出现问题: https://www.rodsbooks.com/gdisk/bios.html

相关内容