Contenu | Rechercher | Menus

Annonce

DVD, clés USB et t-shirts Ubuntu-fr disponibles sur la boutique En Vente Libre

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 22/09/2022, à 15: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, à 23:21)


Arbiel Perlacremaz
Dell Vostro Ubuntu 18.04 64 bits, LDLC Aurore NK3S-8-S4 Ubuntu 20.04
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