#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
Hors ligne
#2 Le 07/10/2016, à 15:33
- littlejohn75
Re : Quelques éclaicissements sur Bios, UEFI et tables des partitions
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
Hors 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
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
Hors ligne
#8 Le 21/10/2016, à 16:39
- Babdu89
Re : Quelques éclaicissements sur Bios, UEFI et tables des partitions
Bonjour.
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
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
Hors 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
Hors ligne