GRUB 可以使用的最大磁盘大小是多少?

GRUB 可以使用的最大磁盘大小是多少?

让我们假设一个相当现代的 BIOS (2005-),没有错误/怪癖,扇区大小为 512,LBA48 寻址,并且支持增强型磁盘驱动器。

询问的原因是,通过 INT 13h Extended Read 调用的简单读取,偏移扇区是一个 8 字节值;比任何可用磁盘都大 8 ZiB,并且超出了 LBA48 寻址的范围。但我只找到了较小限制的参考,那么 GRUB 实际上能够支持什么?

boot.img / diskboot.img 使用的块列表由多大大小的字段组成?

答案1

GNU GRUB(也称为grub2)块列表条目有一个用于 LBA 编号的 64 位 ( uint64_t) 字段,因此它们可以存储 8 字节值。但在大多数情况下,限制因素是 BIOS INT13h 扩展读取例程将接受的内容:如果底层硬件限制是 LBA48,则限制将为 2^48 块,在 512 字节块大小上计算为 128 PiB,或约 144 PB。

如果我们谈论的是 GRUB Legacy (GRUB 0.9x),它的块列表只能保存 32 位 ( uint32_t) LBA 值。

在 UEFI 系统上,固件磁盘访问 API 限制为 9.4 ZB,并且只能grubx64.efi告诉固件从 UUID 标识的 GPT 分区加载特定命名的文件,GRUB 的限制可能根本不适用。当然,如果您使用固件不支持的文件系统类型,则需要依赖 GRUB 的文件系统驱动程序,该驱动程序可能(还不?)支持该大小的文件系统:-)

相关内容