« LINUX:Ubuntu, UEFI et BIOS » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
Ligne 15 : | Ligne 15 : | ||
[[FILE:LINUX:Bios-boot.JPG|center| | [[FILE:LINUX:Bios-boot.JPG|center|1200px]] | ||
Version du 23 juin 2022 à 15:09
→ retour au menu des distributions de Linux
But
Lors de l'installation d'Ubuntu Workstation sur une très vieille carte mère Intel, j'ai rencontré une approche de Linux vis à vis du BIOS non encore rencontrée avec d'autres distributions.
Cet article présente le problème et comment y remédier ou tout au moins y pallier.
Installation de l'OS
L'installation proprement dites ne pose pas de problème. Je prépare une clé USB bootable avec le set d'installation; il s'agit ici de la version 22.04 64 bits Desktop d'Ubuntu. On démarre la machine à partir de cette clé et on suit la procédure classique d'installation sur le disque dur présent dans la machine.
Premier problème, au moment du premier redémarrage sur le disque dur, il faut dans le BIOS de la carte mère activer l'UEFI. Cette option se trouve en fin de menu de l'onglet BOOT. La configuration du BIOS sur cette carte mère Intel est accessible via la touche F2 dès le démarrage. Ce BIOS ne comporte que cette option liée à l'UEFI contrairement à d'autres cartes mère plus récentes. Dès que cette opération est effectuée, le premier démarrage sur le disque dur se passe sans problème. A noter que l'UEFI peut être désactivé par la suite.
Si l'UEFI n'est pas activé lors de ce premier démarrage, Ubuntu ne peut démarrer. La séquence de Boot n'est pas trouvée sur le disque dur.
Démarrer sur un autre média
Si maintenant, je désire démarrer sur un autre média: une clé USB, un CD/DVD ou sur un disque dur ayant un autre OS (Windows, Fedora Linux,...), ceci devient impossible autre que le disque dur ayant accueilli Ubuntu. Normalement sous la configuration du BIOS, on peut définir l'ordre du média à démarrer en priorité. Si le disque dur ayant Ubuntu installé ci-dessus est présent, c'est celui-ci qui démarre. Sinon aucun média bouttable n'est trouvé. j'étais perturbé car pour tout autre OS ou distribution, je n'avais pas encore rencontré ce cas.
Après quelques recherches, j'ai trouvé la touche fonction F10 qui permet au démarrage d'afficher le menu de démarrage du BIOS. Habituellement d'autres BIOS affichent cette touche fonction particulière ou l'intègre dans le menu de configuration.
Dès cette touche activée, le menu s'affiche et, surprise, une nouvelle entrée nommée ubuntu statique s'affiche en tête devant les entrées dynamiques ajoutées en fonction du matériel présent et dans l'ordre défini dans la configuration de BOOT du BIOS. Si l'UEFI est activé, une entrée UEFI vient s'y insérer également.
On remarque dans cette photo l'entrée 'ubuntu', le disque dur et la clé USB:
En pratique, la première entrée statique ubuntu s'exécute par défaut mais si lors de l'affichage de ce menu de BOOT du BIOS, on choisit le média désiré, on peut le démarrer et procéder par exemple à une autre installation. Mais cette première entrée restera et aura toujours la prédominance.
Si maintenant on procède à une nouvelle installation d'Ubuntu à partir d'une clé USB sur un disque dur et que l'on choisit l'option de démarrage UEFI dans le menu de BOOT du BIOS après installation, cette seconde installation s'active à partir du disque dur et on remarquera ensuite la présence d'une seconde entrée ubuntu en début du menu de BOOT du BIOS.
Si l'on garde les deux disques:
Si l'on ne garde qu'un disque:
La situation se complique. On ne sait à quel disque chaque entrée 'ubuntu' s'applique. Il faut trouver une manière de traiter ces problèmes.
Structure de l'EFI sous Linux
Quand on ouvre une session sous Linux (Ubuntu), on remarque que le disque a été partitionné en trois parties.
La commande suivante:
fdisk -l
affiche par exemple:
Disque /dev/sda : 74,53 GiB, 80026361856 octets, 156301488 secteurs Disk model: ST380815AS Unités : secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets Type d'étiquette de disque : gpt Identifiant de disque : EE80220E-4A2C-44D8-9D5B-255C4DD0AD4A Périphérique Début Fin Secteurs Taille Type /dev/sda1 2048 4095 2048 1M Amorçage BIOS /dev/sda2 4096 1054719 1050624 513M Système EFI /dev/sda3 1054720 156301311 155246592 74G LVM Linux
On remarque une seconde partition /dev/sda2 nommée 'Système EFI'.
Si on consulte les points de montage avec la commande:
df
ou
mount
on remarque l'entrée:
/dev/sda2 524252 5364 518888 2% /boot/efi
ou
/dev/sda2 on /boot/efi type vfat (rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)
qui monte cette partition sous le répertoire '/boot/efi'.
Un passage en revue de cette arborescence, nous éclaire. Nous avons sous le répertoire '/boot/efi', un répertoire 'EFI" et en dessous de ce dernier deux répertoires 'BOOT' et 'ubuntu', celui justement ajouté au menu de BOOT du BIOS. Ne vous avisez pas d'éliminer ces répertoires, votre installation ne démarrera plus. Par contre si vous mettez ce disque dans une autre machine, il démarrera et une nouvelle entrée 'ubuntu' s'ajoutera dans le menu BOOT du BIOS de cette autre machine.
Heureusement Linux a un outil pour régler quelques uns des problèmes avec le paquet 'efibootmgr'. Il faut que Linux soit démarré sous EFI pour pouvoir l'utiliser.
Si ce paquet n'est pas présent, il faut l'installer:
apt install efibootmgr
et éventuellement exécuter la commande suivante pour charger le module nécessaire:
modprobe efivars
La commande suivante:
efibootmgr -v
permet le visualiser le contenu statique du menu BOOT du BIOS. Par exemple, j'ai sur ma machine:
BootCurrent: 0000 BootOrder: 0000 Boot0000* ubuntu HD(2,GPT,22fd2c0f-1445-441f-92a4-eb21159adf76,0x1000,0x100800)/File(\EFI\ubuntu\shimx64.efi)
Dans le cas, où j'avais démarré la machine avec un autre disque contenant aussi Ubuntu, une seconde entrée est apparue:
BootCurrent: 0001 BootOrder: 0001,0000 Boot0000* ubuntu HD(2,GPT,22fd2c0f-1445-441f-92a4-eb21159adf76,0x1000,0x100800)/File(\EFI\ubuntu\shimx64.efi) Boot0001* ubuntu HD(2,GPT,989a7bd1-15f1-46c9-84fd-b0ec63f24721,0x1000,0x100800)/File(\EFI\ubuntu\shimx64.efi)
Remarquez que cette seconde installation s'est placée en première position dans l'ordre de démarrage.
La commande 'efibootmgr' possède d'autres possibilités. En voici deux.
La commande suivante permet d'effacer l'entrée n° '0000':
efibootmgr -b 0000 -B
Il existe une commande permettant de modifier l'ordre mais dans mon cas, elle n'est pas acceptée. Par contre, il est possible d'effacer le contenu de l'ordre de démarrage:
efibootmgr -O
Mais dans ce cas, lors du redémarrage, une entrée 'Boot0002' sera ajoutée qui sera seule dans l'ordre de démarrage. On nettoie les entrées superflues.
A ce stade, si on nettoie ces entrées et l'ordre de démarrage, on peut démarrer sur notre clé USB directement pour une autre installation.
→ retour au menu des distributions de Linux