Contenu | Rechercher | Menus

Annonce

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 07/10/2016, à 14:11

Nasman

Quelques éclaicissements sur Bios, UEFI et tables des partitions

Un petit topo pour faire le point des diverses configurations pouvant être rencontrées.

Deux choses sont à considérer :
- la façon de démarrer du PC selon son firmware qu'il soit en mode bios ou en mode uefi
- le type de tables de partitions du disque dur msdos ou gpt

Les configurations les plus classiques sont :
- démarrage bios sur disque msdos
- démarrage uefi sur disque gpt


Partitionnement msdos
Pour rappel une table des partitions de type msdos contient 4 partitions principales (au maximum) situées dans le mbr (1er secteur du disque - adresse LBA=0) à partir de l'offset 0x1be (446 en décimal).
Si on désire plus de 4 partitions alors il faut qu'une des 4 partitions du mbr soit étendue et c'est cette dernière qui contiendra les partitions logiques. Il existe donc d'autres tables à deux entrées, les ebr décrivant les partitions logiques.
Le codage des informations des partitions (adresse et tailles en secteurs des partitions) s'effectue sur 32 bits (4 octets), ce qui limite l'emplacement des secteurs à 4294967296, soit une taille de 2 Tio (secteurs de 512 octets). Ce type de table est pour les disques de moins de 2 Tio

Partitionnement gpt
Les tables des partitions gpt contiennent une unique partition dans le mbr (mbr protecteur) de type ee et de taille limitée intrinsèquement à 2Tio (ou moins pour les disques plus petits), cette partition est l'emplacement des en tête de gpt (qui commence à la LBA=1, soit au deuxième secteur du disque).
L'en tête gpt (LBA=1) est dupliqué à la fin du disque
Les tables des partitions commencent à la LBA=2 et se terminent à la LBA=33 (dupliquées aussi dans les derniers secteurs du disque). Il y a 4 entrées de tables par secteur, soit 4x32=128 partitions possibles.
Chacune des entrées décrit une partition, type, uuid, début et fin, attributs. Les débuts et fins sont codés sur 8 octets permettant des très grandes tailles pour ces dernières 2**73 octets.
Pour les PC récents, c'est ce type de partitionnement qui est rencontré - même pour des disques de moins de 2 Tio


Le démarrage en mode bios
Au démarrage du pc, le premier secteur du disque est chargé en mémoire et le code situé dans le mbr est exécuté (boot.img), ce dernier lit l'adresse LBA de core.img (indiqué à l'offset 0x5c du mbr), charge un secteur puis exécute le code chargé.
Généralement l'adresse en 5c est la LBA=1 qui se situe juste après le mbr et avant les premières partitions. Le code de core.img fait un peu moins de 32 kio et tient dans le "mbr gap" même pour les partitions alignées au cylindre (première partition commençant à la LBA=63). Les partitions alignées au Mio commencent à la LBA=2048

Attention : dans le cas d'un disque gpt, il n'existe plus de "mbr gap" puisque les en-têtes gpt commencent juste après le mbr. Pour booter en mode bios sur partition gpt il faut une partition (non formatée mais cependant réservée) pour y mettre core.img. Cette partition devra avoir le flag boot_bios (ce flag sert lors de l'installation de core.img)


Le démarrage en mode UEFI
Le firmware UEFI recherche une partition de type EFI qui est une partition FAT avec les drapeaux boot et esp. Cette recherche nécessite de connaître l'emplacement de cette partition (soit table des partitions gpt, soit table de partitions msdos).
A la racine de cette partition (montée dans /boot/efi pour ubuntu) on trouve un fichier startup.nsh indiquant le fichier .efi à charger (les fichiers .efi ont une structure d'exécutables Windows, format PE).
Dans /boot/efi/EFI/ubuntu on trouve différents fichiers .efi pour différentes configurations (secure boot, dual boot Windows...) et un fichier grub.cfg allégé du genre

search.fs_uuid 4853e063-c9e7-4234-890e-3095e03f12e2 root hd0,msdos2
set prefix-($root)'/boot/grub'
configfile $prefix/grub.cfg

Nota le root hd0,msdos2 indique la partition ou se trouve grub (généralement la partition système ubuntu où se trouve /boot/grub). Dans le cas présent il s'agit d'un boot en uefi sur un disque avec une table des partitions de type msdos (système sur sda2). Pour un disque partitionné en gpt on aurait un truc du genre hd0,gpt2


Il est donc possible de :
- démarrer en mode bios sur disque msdos (seule est requise la partition système en ext4, swap recommandé)
- démarrer en mode bios sur disque gpt (une partition non formatée avec le flag boot_bios est ici nécessaire faute de "mbr gap", + partition système, swap recommandé)
- démarrer en mode uefi sur disque msdos (une partition fat de label EFI avec les flag boot et esp est nécessaire + partition système, swap recommandé)
- démarrer en mode uefi sur disque gpt (idem ci dessus)

- démarrer en mode bios ou uefi (sur disque msdos ou gpt) si présence d'une partition EFI (flag boot et esp), d'une partition système ubuntu, swap recommandé et d'une partition bios_boot (si disque gpt)

Remarque: l'installation en mode UEFI sur disque msdos créé un mbr avec un code sensé charger le premier secteur de la partition fat32 (EFI) et de lancer le code chargé mais ceci n'est pas utilisé en mode uefi et le code est inexistant dans la partiion fat32. Le boot en mode bios sur une telle installation se bloque.
Edit: En fait c'est gparted qui écrit ce bout de code dans le mbr - ce code recherche la première partition principale rencontrée avec le flag boot et charge le premier secteur de cette partition.

Pour pouvoir aussi démarrer en mode bios il faut installer grub dans le mbr par exemple de la façon suivante
- démarrer un "Live" en mode bios
- monter la partition système ubuntu (ici sda2)

sudo mount /dev/sda2 /mnt

- installer grub

sudo grub-install --boot-directory=/mnt/boot /dev/sda

Dernière modification par Nasman (Le 14/10/2016, à 14:14)


PC fixe sous Bionic 64 bits et portable avec Focal 64 bits

En ligne

#2 Le 07/10/2016, à 15:33

littlejohn75

Re : Quelques éclaicissements sur Bios, UEFI et tables des partitions

Nassman a écrit :

Un petit topo pour faire le point des diverses configurations pouvant être rencontrées.

Merci pour toutes ces explications.

Ce sont de précieux conseils pour avoir un système qui démarre.
Je voudrais simplement ajouter que pour des des disques supplémentaires qui servent uniquement de disque de données (non amorçables), et dans le cadre d'un écosystème Windows-free le paquet lvm2 permet d'avoir des disques entiers sans table de partition. Ce sont des volumes physiques

Exemple

fp2x@drmas:~$ lsblk
NAME                           MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                              8:0    0 931,5G  0 disk
├─sda1                           8:1    0  18,6G  0 part /
├─sda2                           8:2    0   3,7G  0 part [SWAP]
└─sda3                           8:3    0 909,2G  0 part
sdb                              8:16   0 931,5G  0 disk
├─system_vg-log_lv             254:24   0    10G  0 lvm  /aindex
└─system_vg-tampon_lv          254:25   0   300G  0 lvm  /tampon
sdc                              8:32   0   3,7T  0 disk
├─archive_vg-index_lv          254:0    0    10G  0 lvm
├─archive_vg-a001_lv           254:1    0 109,4G  0 lvm
├─archive_vg-a002_lv           254:2    0  93,8G  0 lvm
├─archive_vg-a003_lv           254:3    0  69,9G  0 lvm
├─archive_vg-a004_lv           254:4    0  70,3G  0 lvm
├─archive_vg-94_bleoholm_lv    254:5    0 217,8G  0 lvm
├─archive_vg-97_stones         254:6    0 217,8G  0 lvm
├─archive_vg-ATA1558A_18000_lv 254:7    0  17,6G  0 lvm
├─archive_vg-ATA1184B_lv       254:8    0  32,2G  0 lvm
├─archive_vg-ATA1365A_lv       254:9    0   5,9G  0 lvm
├─archive_vg-ATA1527A_lv       254:10   0  56,7G  0 lvm
├─archive_vg-ATA1512A_lv       254:11   0  11,7G  0 lvm
├─archive_vg-ATA1619A_lv       254:12   0    23G  0 lvm
├─archive_vg-figotmisc_lv      254:13   0  51,8G  0 lvm
├─archive_vg-cfd6_AIRPRODUCTS  254:14   0  18,6G  0 lvm
├─archive_vg-cfd6_54_ENI_lv    254:15   0  60,6G  0 lvm
├─archive_vg-cfd6_90_HHI_lv    254:16   0  52,8G  0 lvm
├─archive_vg-old_homes_lv      254:19   0  17,4G  0 lvm
├─archive_vg-old_bigs_lv       254:20   0  12,7G  0 lvm
├─archive_vg-mas_bigs_lv       254:21   0 152,4G  0 lvm
├─archive_vg-br_tgazzola_lv    254:22   0 290,5G  0 lvm
└─archive_vg-br_bfillon_lv     254:23   0 119,2G  0 lvm
sdd                              8:48   0   3,7T  0 disk
├─archive_vg-118_HHI_JIP_lv    254:17   0   1,2T  0 lvm
└─archive_vg-95_yamal_lv       254:18   0   1,4T  0 lvm
sr0                             11:0    1  1024M  0 rom
fp2x@drmas:~$ ls /dev/archive_vg/
118_HHI_JIP_lv  a002_lv      ATA1512A_lv        br_tgazzola_lv    index_lv
94_bleoholm_lv  a003_lv      ATA1527A_lv        cfd6_54_ENI_lv    mas_bigs_lv
95_yamal_lv     a004_lv      ATA1558A_18000_lv  cfd6_90_HHI_lv    old_bigs_lv
97_stones       ATA1184B_lv  ATA1619A_lv        cfd6_AIRPRODUCTS  old_homes_lv
a001_lv         ATA1365A_lv  br_bfillon_lv      figotmisc_lv
fp2x@drmas:~$

Dans le groupe de volumes archive_vg, (deux disques physiques actuellement), j'ai 26 volumes logiques ( équivalent de 26 partitions ). La taille d'un volume logique peut être modifiée aisément.

Cordialement,
Regards,
Mit freundlichen Grüßen,
مع  تحياتي الخالصة
---
F. Petitjean
Ingénieur civil du Génie Maritime.

« Moi, lorsque je n’ai rien à dire, je veux qu’on le sache. »  (R. Devos)

« Celui qui, parti de rien, n'est arrivé nulle part n'a de merci à dire à personne !! »
       Pierre Dac

Hors ligne

#3 Le 07/10/2016, à 15:40

ikewdu

Re : Quelques éclaicissements sur Bios, UEFI et tables des partitions

Salut,
Un joli récapitulatif qui clarifie bien les choses.

En revanche, as-tu testé cette configuration ?
- démarrer en mode uefi sur disque msdos (une partition fat de label EFI avec les flag boot et esp est nécessaire + partition système, swap recommandé)
J'avoue que ça me surprend un peu.

Hors ligne

#4 Le 07/10/2016, à 15:41

Nasman

Re : Quelques éclaicissements sur Bios, UEFI et tables des partitions

Affirmatif, c'est d'ailleurs le dernier essai que je viens de faire

Nota: Je n'ai pas de Windows pour tester en présence de cet OS

Dernière modification par Nasman (Le 07/10/2016, à 15:42)


PC fixe sous Bionic 64 bits et portable avec Focal 64 bits

En ligne

#5 Le 07/10/2016, à 15:43

ikewdu

Re : Quelques éclaicissements sur Bios, UEFI et tables des partitions

Merci... Je vais ajouter un lien vers ton explication sur mon site.

Edit. C'est fait: http://ikewdu.free.fr/category/divers/

Dernière modification par ikewdu (Le 07/10/2016, à 15:51)

Hors ligne

#6 Le 07/10/2016, à 16:41

Bougron

Re : Quelques éclaicissements sur Bios, UEFI et tables des partitions

Bonjour
Merci pour ce document synthétique  entre  le legacy l'efi et les tables de partitions
Une petite remarque sur l'EFI
          Il est préférable que le  disque interne soit formaté GPT car  128 partitions sur un disque me semblent suffisantes et une partition FAT est préférable à une partition bios-boot pour sa visibilité et sa quasi universalité.
         Il  est préférable que le  disque externe soit formaté MBR   car son format restera compatible  à celui d'une clé USB. Ce disque externe n'a absolument pas besoin d'un partition FAT32.   car la structure de boot  est déposée dans le disque interne dans la première partition FAT32  ce disque.
        Cependant si le disque externe  formaté MSDOS contient une partition FAT32, il sera assimilé a une clé USB et le bios EFI, recherchera le fichier /EFI/Boot/Bootx64.efi (ou grubx64.efi) pour booter.

   Certains ordinateurs anciens (HP) ont besoin d'un fichier de boot sur le disque interne dont le nom est identique a celui d'une clé USB.
Les ordinateurs EFI normaux se moquent totalement de la caractéristique   "drapeaux"  de la partition FAT".
Ils lisent  la totalité des disques  internes et externes ainsi que les clés USB en vue de fabriquer une  liste  des fichiers de terminaison EFI.
C'est l'utilisateur qui choisit celui qui convient. Une particularité pour les micros ACER: Ces fichiers doivent être certifiés par l'utilisateur lui-même!
Le fait d'avoir une liste dit une limite. Elle est certainement de 127. (  à rechercher dans une discussion qui a atteint cette valeur en se bloquant).
L'utilisateur choisit alors dans cette liste ce qui lui plait..

Dernière modification par Bougron (Le 07/10/2016, à 16:46)

Hors ligne

#7 Le 07/10/2016, à 16:57

Nasman

Re : Quelques éclaicissements sur Bios, UEFI et tables des partitions

Bougron a écrit :

Une petite remarque sur l'EFI
          Il est préférable que le  disque interne soit formaté GPT car  128 partitions sur un disque me semblent suffisantes et une partition FAT est préférable à une partition bios-boot pour sa visibilité et sa quasi universalité.

La partition bios_boot n'est utile que pour un démarrage en mode bios sur disque gpt, cette partition n'a rien à voir avec l'UEFI mais seulement pour booter un linux en mode bios sur un disque gpt.

Il est vrai que les disques gpt prolifèrent depuis la sortie de l'uefi.


A l'origine je m'étais posé la question car j'ai un pc qui approche de ses 10 ans et qui n'a pas d'uefi et mes disques durs commencent à atteidre leur limite de taille. J'envisage la possibilité d'acheter un disque de plus de 2 Tio pour ce pc.

Dernière modification par Nasman (Le 07/10/2016, à 16:57)


PC fixe sous Bionic 64 bits et portable avec Focal 64 bits

En ligne

#8 Le 21/10/2016, à 16:39

Babdu89

Re : Quelques éclaicissements sur Bios, UEFI et tables des partitions

Bonjour.

ikewdu a écrit :

Salut,
Un joli récapitulatif qui clarifie bien les choses.

En revanche, as-tu testé cette configuration ?
- démarrer en mode uefi sur disque msdos (une partition fat de label EFI avec les flag boot et esp est nécessaire + partition système, swap recommandé)
J'avoue que ça me surprend un peu.

Moi aussi, jusqu'à ce que je vois ceci, pas tout à fait dans le même genre, mais...

https://forum.ubuntu-fr.org/viewtopic.p … #p21611663

http://paste2.org/pwDvAkCk

Dans cette discutions.

https://forum.ubuntu-fr.org/viewtopic.p … #p21611406

Un Windows est installé en UEFI sur un disque, avec la partition /boot/efi sur le disque d'installation de Windows. Table de partitions de type GPT pour ce disque.
Installation d'un Xubuntu sur un deuxième disque de la machine , sur ce disque table de partitions de type MSDOS.

Xubuntu est bien installé en UEFI, et fonctionne...

@+.  Babdu89  .


J'ai découvert Ubuntu avec la 07.10.... Et alors?!...  Depuis je regarde de temps en temps si Windows marche toujours....

Hors ligne

#9 Le 21/10/2016, à 17:13

Nasman

Re : Quelques éclaicissements sur Bios, UEFI et tables des partitions

De ce que je vois de cette config on a:
- un disque sda en mode msdos avec sans doute un ubuntu installé en mode bios? Grub2 dans le mbr et core.ims dans le mbr gap mais core.img pointe vers une partition qui est en swap actuellement.
Je pense que c'est un reliquat d'une installation car le boot ne doit plus pouvoir se faire en mode bios (du fait que la partition pointée n'est plus bonne)
- un disque sdb avec Windows pour un boot en uefi avec également les fichier efi d'ubuntu. La partition système d'ubuntu est dans l'autre disque.

Cela confirme que le type de table des partitions n'a rien à voir avec le mode de démarrage.
Ici on est dans le cas plus tordu où la partition système (enfin celle avec /boot/grub) n'est pas sur le même disque que la partition efi.

Je pense que on peut tout avoir à la condition que :
- boot uefi, nécessite une partition efi (sur disque gpt ou msdos) et une partition linux (ou /boot si dédiée) qui peut être n'importe où
- boot bios, nécessite grub2 dans le mbr du disque de boot et core.img (qui du coup doit se trouver sur le même disque si j'en juge l'analyse de la partie exécutable du mbr) dans le "mbr gap" ou dans une partition bios_boot.
[edit] : en fait suivant la valeur de l'octet à l'adresse 0x64 dans le mbr on doit pouvoir indiquer un autre disque que celui de boot pour core.img [/edit]
Je pense que la partition système (ou celle contenant /boot/grub) doit pouvoir se trouver sur un autre disque (à vérifier).

Les règles mode bios sur disque msdos et uefi sur disque gpt correspondent plus à l'ancienneté des système qu'à un besoin fonctionnel.

En gros ancien Windows sur disque msdos et ubuntu sur le même disque (donc aussi sur disque msdos pour ne pas flinguer les partition Windows)
Nouveau PC avec nouveau Windows (boot uefi avec table gpt livré ainsi) et commodité d'installer ubuntu dans ce même mode.

Dernière modification par Nasman (Le 22/10/2016, à 16:31)


PC fixe sous Bionic 64 bits et portable avec Focal 64 bits

En ligne

#10 Le 21/10/2016, à 17:33

Nasman

Re : Quelques éclaicissements sur Bios, UEFI et tables des partitions

J'ai essayé de créer une partition avec le flag boot_bios (ou bios_grub) sur un disque msdos pour savoir où core.img allait s'installer - dans le "mbr gap" ou dans cette partition dédiée. Malheureusement le flag bios_grub n'est pas proposé sur un disque avec une partition msdos.


Je pense que le besoin ne s'est pas fait sentir pour le boot en mode bios puisque le "mbr gap" est suffisamment vaste pour mettre core.img, surtout depuis que les partitions sont alignées au Mio (on passe de 62 secteurs disponibles à 2047)


PC fixe sous Bionic 64 bits et portable avec Focal 64 bits

En ligne