如何判断我的特定系统是否需要引导分区?

ein*_*lum 4 boot-loader system-installation

我知道历史上为什么我们有单独的引导分区的一般故事:

/boot 分区的真正用途是什么?

在一台新电脑上,我可能 不会打扰。但是 - 我在 20 年的系统上安装 Linux,使用非 UEFI BIOS(甚至无法从 USB 启动)。这不会是多引导机器,也不会是任何复杂的东西:没有 LVM、没有磁盘加密、没有 RAID 等。

我怎样才能知道是否我特定的电脑,用我特定的硬盘,需要一个引导分区?

笔记:

  • 以防万一 - 我打算安装的发行版antiX Linux 19.3 i386。它调用 gparted 来让您编辑分区。
  • 引导加载程序自然是我的发行版安装的一个,AFAICT 是 grub2。

tel*_*coM 6

如果系统大约是 1994 年或更早,则其 BIOS 可能无法处理集群/磁头/扇区几何图形大于 1024/16/63 的磁盘,其限制为 504 MiB (528.4 MB)。这样做的原因是两组限制的不方便交互:

  • 经典的未扩展 BIOS INT 13h 函数接受了 1024/255/63 的最大磁盘几何结构
  • IDE (PATA) 硬件可接受的最大几何尺寸为 65536/16/63
  • 到目前为止,琐碎的实现只是选择了每个值的最小限制,导致限制为 1024/16/63。

1994 年 7 月,开发了新的 BIOS 功能“增强型磁盘驱动器服务”(简称 EDD)来解决此限制。它在 BIOS 表示和 IDE 硬件接口(称为“几何转换”)之间的几何的簇和头部分之间移动位,作为此限制的解决方法。

某些 BIOS 版本在磁盘几何结构 4096/16/16 或其“翻译”形式 1024/64/63 处也存在错误。

在 16383/16/63(或翻译形式的 1024/255/63)的磁盘几何结构上,达到了经典 C/H/S 磁盘寻址的最大限制:处理这种磁盘寻址的 BIOS 函数的数据输入格式根本没有足够的位来处理比这更大的磁盘。在磁盘大小为 7.87 GiB (8.45 GB) 或正好 16 450 560 个磁盘块时达到此限制。

IDE (PATA) 规范包含一个可以解决此问题的功能,但它最初被指定为可选功能,并非所有 BIOS 都实现了它。它被称为逻辑块寻址,简称 LBA。随着磁盘大小的增长,1996 年左右之后发布的大多数磁盘确实支持 LBA。

但是随后又发现了另一个 BIOS 错误:一些 BIOS 的 LBA 实现有问题,如果需要超过 26 位来表示磁盘块号,则该错误会失败。这影响了 1999 年 8 月或更早发布的一些 BIOS 版本,并导致磁盘大小限制为 32 GiB (33.8 GB)。

1994 年发布的 LBA 规范只为磁盘块号分配了 28 位,这导致了另一个磁盘大小限制,磁盘大小正好为 128 GiB。2003 年发布的 ATA-6 规范指定了 LBA 磁盘访问功能的 48 位版本,这是我们目前用于现代 SATA 磁盘的功能。它应该可以工作,直到磁盘大小增长到 128 PiB。


通常可以通过在 BIOS 中故意指定不正确的磁盘几何结构,告诉它磁盘小于有问题的限制,并制作/boot一个完全适合假几何结构的分区来解决这些限制。

有时(在引入 LBA 支持之后)/boot分区在适当的大小限制内就足够了。

引导加载程序将使用 BIOS 例程从该分区加载 Linux 内核(以及可选的 initrd 文件),一旦内核启动,其驱动程序将接管磁盘访问,完全绕过 BIOS 并使其限制无关紧要,只要操作系统正在运行。在这一点上,真实的磁盘几何结构通常会被内核自动检测。

那么这是什么意思?

  • 如果您的系统的 BIOS 发布日期是 2004 年或更早,您可能需要创建一个/boot完全适合磁盘前 128 GiB 的分区,否则 BIOS 可能无法启动操作系统。(这通常是双引导和其他多操作系统设置的问题。)
  • 如果您的系统的 BIOS 发布日期早于 2000 年,您可能希望/boot在磁盘的前 32 GiB 内创建一个单独的分区,以防止 LBA 实现错误。
  • 如果系统来自 1996 年或更早版本并且在 BIOS 设置中的任何地方都没有提及“LBA”,则您可能需要指定一个假磁盘几何结构并确保您的/boot分区既在假几何结构内又在磁盘的前 7.87 GiB 内。
  • 比这更古老的东西:“它属于博物馆。” :-) 但如果你必须,请参阅上面的相关限制。

如果系统的 BIOS 发布日期恰好在特定规范更新的日期之后,则它可能有也可能没有更新的规范:在每个规范更新发布后,新的实现需要一段时间才能变得无处不在。