Quel est le nombre maximum de partitions avec EFI?

Je me demandais quel est le nombre maximum de partitions sur un lecteur partitionné par GPT sous Linux.

La table de partition GPT peut contenir jusqu'à 128 partitions, mais les nœuds de périphérique pour /dev/sda? ( /dev/sda15 que décrit ici , périphérique de bloc du numéro 8 principal) autorise seulement /dev/sda1 jusqu'à /dev/sda15 .

Cela signifie-t-il qu'il ne peut y avoir plus de 15 partitions sur un lecteur, même sur un lecteur partitionné par GPT?

    Lisez la bonne source.

    Dans block/partitions/efi.c , le lieu de configuration des partitions gpt est efi_partition() . Décide ici du nombre maximum de partitions:

     for (i = 0; i < le32_to_cpu(gpt->num_partition_entries) && i < state->limit-1; i++) { 

    num_partition_entries provient de l'en-tête gpt sur le disque, donc le nombre maximum est state->limit - 1 . state est l'argument de cette fonction, et cette fonction s'appelle check_part() , from check_partition() dans le même fichier, et il vient

     state->limit = disk_max_parts(hd); 

    Donc, la limite est 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; } 

    Donc, si le périphérique de disque a GENHD_FL_EXT_DEVT /* allow extended devt */ (périphérique en boucle, disque ATA / ATAPI générique, disque SCSI, MD RAID), la limite est DISK_MAX_PARTS (256), sinon c'est un minors .

    En conclusion, généralement, le nombre maximal de support du noyau Linux est 255.

    Eh bien, je pense que c'est là que les UUID entrent en jeu. Dans ce cas, vous ne parlez pas à un périphérique de bloc comme / dev / {h, s} dXY, mais plutôt par l'UUID du périphérique. Certes, dans ce cas, la limite serait suprêmement supérieure à 128.

    Non, cela signifie que Linux a un problème. ☺ Mais nous le savions déjà.

    Qui vous a dit que la table de partition EFI contient jusqu'à 128 partitions? Cette personne ne peut pas lire les spécifications. Comme je l'ai déjà dit , 128 entrées de 128 octets sont la taille minimale requise par la spécification EFI, pas la taille d'une table de partition EFI, et certainement pas la taille maximale .

    (À strictement parlant, le minimum, mentionné pour la première fois dans la version 1.10 de la spécification EFI, est de 16KiB total pour toutes les entrées de partition, mais ne comprend pas le bloc d'en-tête. Avec la longueur d'entrée conventionnelle de 128 octets, il s'agit d'un minimum de 128 entrées.)