Vamos ler a boa fonte.
Em block/partitions/efi.c
, o local para configurar partições gpt é efi_partition()
. Aqui decide o número máximo de partições:
for (i = 0; i < le32_to_cpu(gpt->num_partition_entries) && i < state->limit-1; i++) {
num_partition_entries
vem do cabeçalho gpt no disco, portanto, o número máximo é state->limit - 1
. state
é o argumento desta função, e essa função é chamada de check_part()
, de check_partition()
no mesmo arquivo, e chega
state->limit = disk_max_parts(hd);
Portanto, o limite é 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;
}
Portanto, se o dispositivo de disco tiver GENHD_FL_EXT_DEVT /* allow extended devt */
(dispositivo de loop, disco ATA / ATAPI genérico, disco SCSI, RAID MD), o limite será DISK_MAX_PARTS
(256), caso contrário, é minors
.
Em conclusão, geralmente o número máximo suportado pelo kernel do Linux é de 255.