« GNU GRUB » : différence entre les versions
Ligne 7 : | Ligne 7 : | ||
* Une étape "Stage 1" installé sur le MBR, qui appelle l'étape suivante "Stage 1.5" | * 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 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 | * 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 : | Pour installer grub sur le MBR du disque sda : |
Version du 6 février 2022 à 15:43
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=linux
Cela installera grub dans le dossier /boot/efi/EFI/linux/
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.