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.