EFI 分区的最大数量是多少?

Gui*_*rie 4 linux efi

我想知道 Linux 下 GPT 分区驱动器上的最大分区数是多少。

GPT 分区表最多可以包含 128 个分区,但设备节点/dev/sda?(如此处所述主设备号为 8 的块设备)/dev/sda1最多只允许/dev/sda15.

这是否意味着一个驱动器上的分区数不能超过 15 个,即使是 GPT 分区的驱动器也是如此?

Lin*_*ang 5

让我们阅读精美的来源。

在中block/partitions/efi.c,设置gpt分区的地方是efi_partition()。这里决定最大分区数:

for (i = 0; i < le32_to_cpu(gpt->num_partition_entries) && i < state->limit-1; i++) {
Run Code Online (Sandbox Code Playgroud)

num_partition_entries来自磁盘上的 gpt 标头,因此最大数量为state->limit - 1. state是这个函数的参数,这个函数在同一个文件中调用 from check_part(), check_partition()from ,得到

state->limit = disk_max_parts(hd);
Run Code Online (Sandbox Code Playgroud)

所以极限disk_max_parts()

static inline int disk_max_parts(struct gendisk *disk)
{
        if (disk->flags & GENHD_FL_EXT_DEVT)
                return DISK_MAX_PARTS;
        return disk->minors;
}
Run Code Online (Sandbox Code Playgroud)

因此,如果磁盘设备有GENHD_FL_EXT_DEVT /* allow extended devt */(循环设备、通用 ATA/ATAPI 磁盘、SCSI 磁盘、MD RAID),则限制为DISK_MAX_PARTS(256),否则为minors.

综上所述,通常Linux内核支持的最大数量是255。