Linux/Boot/Uefi

De FunLab Documentation
Aller à : navigation, rechercher

Principes

L'EFI

L'Extensible Firmware Interface est le remplaçant du BIOS et est un ensemble de spécifications servant de standard. Par abus de langage certains continuent d'utiliser le terme BIOS pour désigner l'EFI. L'Unified Extensible Firmware Interface est la seconde version de l'EFI. Dans la suite on parlera indistinctement d'EFI pour désigner les deux versions. L'EFI a pour but d'être plus souple que le BIOS, mais il est aussi plus complexe et dans les faits connaît souvent des implémentations limitées, non respectueuses du standard, et bugguées. La spécification de l'EFI intègre le Secure Boot, qui nécessite de signer cryptographiquement les noyaux que l'on veut lancer, mais certains EFI permettent de le désactiver.

L'ESP

L'EFI utilise une partition GPT FAT12, FAT16 ou FAT32 (ce dernier type est recommandé) marquée comme ESP (Efi System Partition) par un utilitaire GPT. Sans ce marquage l'EFI n'utilise pas la partition. Cette partition peut accueillir divers outils, voire des noyaux et des images d'init. Il lui faut donc une taille de quelque centaines de Mio pour être sûr de ne pas être à cours d'espace. 512 Mio est un bon choix.

Logiciels à utiliser

Partitionner

  • gdisk est l'adaptation de fdsik pour la manipulation des partitions GPT. Pour avoir le mode interactif, le lancer avec gdisk /dev/sdX, et taper h pour avoir les commandes disponibles.
  • parted ressemble beaucoup à fdisk et gdisk ; il est capable de manipuler aussi bien les tables de partition MBR que GPT. Ses commandes sont différentes de gdisk.

Éditer les entrées de l'EFI

Les entrées de l'EFI sont stockées sur une mémoire permanente sur la carte mère. Elles peuvent être manipulées depuis Windows, GNU/Linux et un shell EFI :

  • bcfg est la commande du shell EFI d'Intel pour éditer ces entrées ; toutes les version du shell ne l'ont pas, et certaines version ne permettent pas d'entrer de paramètres pour le noyau, comme l'image d'init. Utiliser un Shell EFI plus récent ou un pour les anciens EFI si nécessaire.
  • efibootmgr est l'utilitaire utilisé dans GNU/Linux, et n'a pas les limites de bcfg. Il nécessite l'insertion d'un module dans le noyau pour fonctionner : efivars.

Amorçage

  • rEFInd permet de lancer des gestionnaires de démarrage, un shell EFI ou directement des noyaux Linux ayant efistub. L'installer par le gestionnaire de paquet si disponible ou décompresser l'archive téléchargée sur le site de l'auteur, le mettre sur l'ESP, éditer refind.conf et créer une entrée EFI pointant vers refind_x64.efi ou refind_x86.efi. À noter qu'il est capable de détecter les noyaux Linux et les fichiers .efi.
  • lilo possède une version EFI, elilo ; il est capable de lancer des noyaux sans efistub mais est plus simple que refind.
  • grub a aussi une version EFI ; il est plus complexe et difficile à faire marcher, mais est installé par défaut dans la plupart des distributions. En cas de difficulté à le faire marcher on lui préférera efistub avec si nécessaire rEFInd, ou alors elilo (d'après Roderick W. Smith).

Noyau

Paramètres du noyau

Donner les paramètres suivants pour le noyau marche correctement(testé sous Wheezy de Linux 3.2 à 3.14) :
root=UUID=<UUID de la partition root> add_efi_memmap initrd=<chemin vers l'initrd>
On peut mettre ces paramètres directement dans l'EFI ou dans les paramètres de rEFInd.

Mises à jour du noyau si lancé depuis l'ESP

Un moyen simple et rapide de mettre à jour automatiquement le noyau sur l'ESP est de rajouter un hook dans la mise à jour du noyau. Sous Debian créer un fichier /etc/kernel/postinst.d/zz-update-efistub avec le contenu suivant :

#!/bin/sh
cp -u /vmlinuz* /initrd.img* /boot/efi/debian/

Le rendre exécutable avec chmod +x. /boot/efi/debian est un exemple, on peut mettre les fichiers dans un autre dossier, ou avoir monté l'ESP ailleurs. Cela n'est pas forcément important si l'EFI n'a pas de bugs et si les réglages sont correctement faits.

À noter que le script ici donné n'automatise pas la mise à jour des vieux noyaux. Mais l'avantage principal du procédé reste entier, c'est-à-dire de pouvoir entrer directement les paramètres de démarrage du noyau dans l'EFI et de ne pas avoir à les modifier à chaque mise à jour.

Signature

L'activation du Secure Boot complexifie encore le processus ; si possible le désactiver dans l'interface de l'EFI.

(Plus de détails à venir)

Sites

La plupart des références sur le web sont très incomplètes et inutiles pour résoudre un problème délicat ; peu de sources semblent réellement utiles :