GNU GRUB

De Linux Server Wiki
Aller à la navigation Aller à la recherche


Bios / Legacy sur partitionnement MBR

Le MBR représente les 512 premiers octets d'un disque partitionné sous ce format. Il contient la table de partition, ainsi que la mécanique permettant d’amorcer le système d'exploitation (par exemple grub).
Le Bios essaye de démarrer chaque disque/lecteur configuré en boot-device en passant sur le MBR de ce device.

Grub se retrouve scindé en 2 parties dans ce cas, car le MBR est trop petit pour contenir la totalité de GRUB :

  • Une étape "Stage 1" installé sur le MBR, qui appelle l'étape suivante "Stage 1.5"
  • Une étape "Stage 1.5", contenant la suite de Grub, contenue dans le "post-MBR gap", situé avant la première partition
  • Une étape "Stage 2" installée sur une partition du disque, qui contient le logiciel Grub a proprement parler ainsi que sa configuration. C'est généralement sur cette même partition que vous avez votre système (/) ou éventuellement votre partition /boot. Cette partition peut également être un raid logiciel (mdadm).

Pour installer grub sur le MBR du disque sda :

grub-install --target=i386-pc /dev/sda

Bios / Legacy sur partitionnement GPT

Dans le cas d'un partitionnement GPT, il n'existe pas de MBR. Une partition de démarrage BIOS est nécessaire, et grub y positionnera son core.img.

Il faut créer une partition d'un mebibyte (+1M avec les outils fdisk ou gdisk). Cette partition devra avoir le GUID 21686148-6449-6E6F-744E-656564454649. Pour définir le GUID :

  • Avec fdisk : Type de partition "BIOS boot"
  • Avec gdisk : Type de partition ef02
  • Avec parted : activer le flag "bios_grub"

Cette partition peut se trouver à n'importe quel endroit du disque, du moment qu'elle est dans les 2 premiers terabits du disque. Usuellement, c'est la première partition, qu'on borne entre les secteurs 34 et 2047.

Pour installer Grub sur un partitionnement GPT après avoir créé la partition de boot :

grub-install --target=i386-pc /dev/sda

EFI / UEFI sur partitionnement GPT

Dans ce cas, vous aurez besoin, en plus de Grub (spécifiquement de sa version EFI), du logiciel efibootmgr qui permet à Grub d'éditer la NVRAM contenant les entrées de démarrage.

Il faudra la encore une partition spécifique, appelée partition EFI ou ESP, qui va contenir un (ou plusieurs !) chargeur d'amorçage.
La taille de cette partition est variable, mais il est souvent recommandé qu'elle fasse au moins 512 MiB.
Elle devra avec le GUID C12A7328-F81F-11D2-BA4B-00A0C93EC93B. Pour définir ce GUID :

  • Avec fdisk : définir le type "EFI System"
  • avec gdisk : définir le type EF00
  • avec parted : créer une partition fat32, et y définir le flag "esp"

Il faut ensuite formater cette partition en FAT 16 ou 32 :

mkfs.fat -F 32 /dev/sda1

Monter cette partition à l'emplacement /boot/efi/

On peut ensuite y installer grub :

grub-install --target=x86_64-efi --efi-directory=/boot/efi/ --bootloader-id=debian

Cela installera grub dans le dossier /boot/efi/EFI/debian/
Attention, cette commande doit être lancée à l'intérieur du système (ou chrooté dedans). Si vous devez la lancer depuis l'extérieur du système, il faudra préciser l'argument --boot-directory= spécifiant le chemin vers le répertoire /boot du système.

Si vous ne souhaitez pas que grub mettre à jour la table nvram, ajoutez l'option --no-nvram

Dans le cas d'un système a plusieurs disques, notez que cette partition ne peut pas être un raid logiciel (mdadm). Si votre partition root (/) est au sein d'un raid logiciel mdadm, afin d'assurer la redondance, il faudra qu'une partition EFI contenant grub soit présente sur chaque disque.

Sous debian, vous pouvez reconfigurer grub avec dpkg-reconfigure grub-efi-amd64 afin d'activer par exemple la configuration automatique de la NVRAM ou encore l'installation en mode removable (qui créé un fichier efi de secours dans un chemin standardisé EFI/BOOT/BOOTX64.EFI)

Utilisation manuelle de efibootmgr

Exemple dans le cas ou la partition EFI est sda1 et la partition système est sda2 :

efibootmgr -c -d /dev/sda -p 1 -l "\EFI\debian\grubx64.efi"

Pour voir la configuration : efibootmgr -v

Attention, si votre système démarre en PXE, n'ajoutez pas d'entrée manuellement ni avec grub-install (précisez alors --no-nvram)

Détail des fichiers installés sous debian

  • shimx64.efi : chargeur intermédiaire entre le firmware et grub (non obligatoire)
  • grubx64.efi : le chargeur grub EFI
  • mmx64.efi : gestionnaire de clés utilisateurs MOKs (pour Secure Boot)
  • fbx64.efi : chargeur de secours (actionné par shimx64)
  • BOOTX64.CSV : fichier de configuration du chargeur de secours fbx64.efi

Système multi-disque en raid software

Dans le cas d'un système avec plusieurs disques et des partitions en raid software, il faut créer une partition EFI/ESP sur chaque disque.
Il n'existe pas de mécanique officielle permettant de synchroniser ces partitions.
Certains firmware EFI acceptent cependant d'avoir les partitions EFI au sein d'un raid, à condition d'utiliser les métadonnées mdadm 0.90 ou 1.00 (qui sont stockés en fin de partition raid). C'est cependant une méthode peu recommandée, car si le firmware EFI écrit directement sur l'une des partitions (ce qui peut arriver), il va casser le raid.