#1 Le 22/09/2022, à 14:27
- Arbiel
Comment l'UEFI détermine-t-elle les partitions de démarrage ?
Bonjour à tous
Je viens de démarrer mon PC en mode UEFI après avoir effacé avec Gparted le drapeau esp d'identification de la partition EFI. J'ai constaté à cette occasion que le drapeau boot était effacé simultanément. L'effacement de ces deux drapeaux provoque le positionnement du drapeau msftdata. Bien que ces drapeaux aient été effacés, mon PC a démarré sans difficulté aucune.
J'ai constaté par ailleurs que ces deux drapeaux étaient restaurés également simultanément, et que cette restauration entraînait l'effacement du drapeau msftdata.
Voici les informations relatives à mon disque /dev/sda :
arbiel@arbiel-NK3S-8-S4:~$ sudo parted /dev/sda
GNU Parted 3.3
Utilisation de /dev/sda
Bienvenue sur GNU Parted ! Tapez « help » pour voir la liste des commandes.
(parted) print
Modèle : ATA LDLC F6+M.2 480 (scsi)
Disque /dev/sda : 480GB
Taille des secteurs (logiques/physiques) : 512B/512B
Table de partitions : gpt
Drapeaux de disque :
Numéro Début Fin Taille Système de fichiers Nom Drapeaux
1 1049kB 538MB 537MB fat32 EFI System Partition msftdata
2 538MB 323GB 322GB philippe lvm
(parted) q
arbiel@arbiel-NK3S-8-S4:~$
et
arbiel@arbiel-NK3S-8-S4:~$ sudo gdisk /dev/sda
GPT fdisk (gdisk) version 1.0.5
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Command (? for help): p
Disk /dev/sda: 937703088 sectors, 447.1 GiB
Model: LDLC F6+M.2 480
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): 56E37A50-56BA-4F34-92CA-8847C65D92A9
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 937703054
Partitions will be aligned on 2048-sector boundaries
Total free space is 307508845 sectors (146.6 GiB)
Number Start (sector) End (sector) Size Code Name
1 2048 1050623 512.0 MiB 0700 EFI System Partition
2 1050624 630196223 300.0 GiB 8E00 philippe
Command (? for help): q
arbiel@arbiel-NK3S-8-S4:~$
L'entête gpt :
arbiel@arbiel-NK3S-8-S4:~$ sudo dd if=/dev/sda bs=512 skip=1 count=1 | hexdump -C
1+0 enregistrements lus
1+0 enregistrements écrits
00000000 45 46 49 20 50 41 52 54 00 00 01 00 5c 00 00 00 |EFI PART....\...|
512 octets copiés, 3,0345e-05 s, 16,9 MB/s00000010 12 08 46 81 00 00 00 00 01 00 00 00 00 00 00 00 |..F.............|
00000020 af 36 e4 37 00 00 00 00 22 00 00 00 00 00 00 00 |.6.7....".......|
00000030 8e 36 e4 37 00 00 00 00 50 7a e3 56 ba 56 34 4f |.6.7....Pz.V.V4O|
00000040 92 ca 88 47 c6 5d 92 a9 02 00 00 00 00 00 00 00 |...G.]..........|
00000050 80 00 00 00 80 00 00 00 14 2d e4 e1 00 00 00 00 |.........-......|
00000060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000200
arbiel@arbiel-NK3S-8-S4:~$
et le descripteur de la partition /dev/sda1:
arbiel@arbiel-NK3S-8-S4:~$ sudo dd if=/dev/sda bs=512 skip=2 count=1 | hexdump -C
1+0 enregistrements lus
1+0 enregistrements écrits
512 octets copiés, 5,66e-05 s, 9,0 MB/s
00000000 a2 a0 d0 eb e5 b9 33 44 87 c0 68 b6 b7 26 99 c7 |......3D..h..&..|
00000010 18 8a 6b b0 00 81 a6 4b a1 05 4a d7 4b 6b 61 1d |..k....K..J.Kka.|
00000020 00 08 00 00 00 00 00 00 ff 07 10 00 00 00 00 00 |................|
00000030 00 00 00 00 00 00 00 00 45 00 46 00 49 00 20 00 |........E.F.I. .|
00000040 53 00 79 00 73 00 74 00 65 00 6d 00 20 00 50 00 |S.y.s.t.e.m. .P.|
00000050 61 00 72 00 74 00 69 00 74 00 69 00 6f 00 6e 00 |a.r.t.i.t.i.o.n.|
00000060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000080 79 d3 d6 e6 07 f5 c2 44 a2 3c 23 8f 2a 3d f9 28 |y......D.<#.*=.(|
00000090 49 db 18 4b 8d ae b4 47 8e 6e b2 12 bd c5 79 4c |I..K...G.n....yL|
000000a0 00 08 10 00 00 00 00 00 ff 07 90 25 00 00 00 00 |...........%....|
000000b0 00 00 00 00 00 00 00 00 70 00 68 00 69 00 6c 00 |........p.h.i.l.|
000000c0 69 00 70 00 70 00 65 00 00 00 00 00 00 00 00 00 |i.p.p.e.........|
000000d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000200
arbiel@arbiel-NK3S-8-S4:~$
La comparaison du GUID du disque indiqué par gdisk (56E37A50-56BA-4F34-92CA-8847C65D92A9) avec le contenu des octets 0x38-0x47 de l'entête gpt qui contiennent cette information (50 7a e3 56 ba 56 34 4f 92 ca 88 47 c6 5d 92 a9) permet de déduire le GUID du type de la partition (EBD0A0A2-B9E5-4433-87C0-68B6B72699C7) à partir du contenu des octets 0x00-0xff du descripteur de la partition (a2 a0 d0 eb e5 b9 33 44 87 c0 68 b6 b7 26 99 c7). Les trois premiers champs du GUID sont mémorisés en little-endian, et les deux derniers en big-endian.
La table des types de partitions indique que ce GUID est celui d'une partition de données de base Microsoft.
Le format des entrées (descripteurs) de partition de GPT positionne les drapeaux dans les octets 0x30-0x37. Ils sont tous à 0.
Le positionnement des drapeaux esp et boot à la place de msftdata modifie bien le type de la partition, mais les drapeaux des octets 0x30-0x37 restent à 0
arbiel@arbiel-NK3S-8-S4:~$ sudo dd if=/dev/sda bs=512 skip=2 count=1 | hexdump -C
1+0 enregistrements lus
1+0 enregistrements écrits
512 octets copiés, 2,471e-05 s, 20,7 MB/s
00000000 28 73 2a c1 1f f8 d2 11 ba 4b 00 a0 c9 3e c9 3b |(s*......K...>.;|
00000010 18 8a 6b b0 00 81 a6 4b a1 05 4a d7 4b 6b 61 1d |..k....K..J.Kka.|
00000020 00 08 00 00 00 00 00 00 ff 07 10 00 00 00 00 00 |................|
00000030 00 00 00 00 00 00 00 00 45 00 46 00 49 00 20 00 |........E.F.I. .|
00000040 53 00 79 00 73 00 74 00 65 00 6d 00 20 00 50 00 |S.y.s.t.e.m. .P.|
00000050 61 00 72 00 74 00 69 00 74 00 69 00 6f 00 6e 00 |a.r.t.i.t.i.o.n.|
00000060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000080 79 d3 d6 e6 07 f5 c2 44 a2 3c 23 8f 2a 3d f9 28 |y......D.<#.*=.(|
00000090 49 db 18 4b 8d ae b4 47 8e 6e b2 12 bd c5 79 4c |I..K...G.n....yL|
000000a0 00 08 10 00 00 00 00 00 ff 07 90 25 00 00 00 00 |...........%....|
000000b0 00 00 00 00 00 00 00 00 70 00 68 00 69 00 6c 00 |........p.h.i.l.|
000000c0 69 00 70 00 70 00 65 00 00 00 00 00 00 00 00 00 |i.p.p.e.........|
000000d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000200
arbiel@arbiel-NK3S-8-S4:~$
Il n'y a donc aucun rapport entre ces drapeaux et ceux qui sont indiqués par les logiciels GNU tels que Gparted ou fdisk. Il semble au contraire que l'indication des drapeaux par les logiciels GNU soit une autre façon d'indiquer le type d'une partition, sans que ce type ait quelque impact que ce soit sur le démarrage en mode UEFI. Je n'ai également trouvé dans le descripteur de la partition aucune mention du code 0700 indiqué par gdisk. Il semble que ce soit une troisième façon de représenter le type de la partition.
Visiblement, UEFI n'utilise pas le type de la partition pour déterminer celles qui sont susceptibles de démarrer un PC. Doit-on en déduire qu'elle s'appuie sur les GUID des partitions, qu'elle aurait mémorisés lorsque l'occasion s'en est présentée ?
Qu'en pensez-vous ?
Arbiel
Dernière modification par Arbiel (Le 22/09/2022, à 22:21)
Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04, GNOME 3.36.8
24.04 en cours de tests
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.
Hors ligne