LINUX:Ubuntu, UEFI et BIOS

De WIKI sur Linux (ADB)
Aller à la navigation Aller à la recherche

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.


LINUX:Bios-boot.JPG


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:

LINUX:Menu-bios-1.JPG


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:

LINUX:Menu-bios-3.JPG


Si l'on ne garde qu'un disque:

LINUX:Menu-bios-2.JPG


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.


Manipulation du menu BOOT statique du BIOS

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