Давайте читать прекрасный источник.
В block/partitions/efi.c
местом для установки разделов gpt является efi_partition()
. Здесь решается максимальное количество разделов:
for (i = 0; i < le32_to_cpu(gpt->num_partition_entries) && i < state->limit-1; i++) {
num_partition_entries
происходит из заголовка gpt на диске, поэтому максимальное число - это состояние state->limit - 1
. state
является аргументом этой функции, и эта функция вызывается из check_part()
из check_partition()
в том же файле, и приходит
state->limit = disk_max_parts(hd);
Таким образом, ограничение составляет 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;
}
Таким образом, если на дисковом устройстве GENHD_FL_EXT_DEVT /* allow extended devt */
(устройство петли, универсальный диск ATA /ATAPI, диск SCSI, MD RAID), ограничение составляет DISK_MAX_PARTS
(256), в противном случае это minors
.
В заключение, обычно максимальное количество поддерживаемых ядром Linux составляет 255.