GRUB (Français)
Grub (GRand Unified Bootloader), anciennement Grub2 est dérivé de PUPA qui était un projet de recherche pour étudier la prochaine génération de GRUB. Il a été réécrit à partir de 0 afin d'offrir modularité et portabilité.
Brièvement, le bootloader est le premier logiciel qui s'exécute lorsque l'ordinateur démarre. Il est responsable du chargement et du transfert de contrôle au noyau. Ce dernier initialise le reste du système d'exploitation. Le nom GRUB fait officiellement référence à la version 2 du logiciel. Voir Page Grub GNU. Si vous cherchez l'article sur la version héritée, consultez GRUB Legacy.
GRUB dispose de quelques limitations spécifiques au système de fichier racine:
Si votre partition racine se trouve sur un système de fichiers non pris en charge, vous devez créer une partition séparée /boot avec un système de fichiers pris en charge. Dans certains cas, la version de développement de GRUB grub-gitAUR possède une prise en charge native.
Notes pour les utilisateurs actuels de GRUB Legacy
- Il y a des différences dans les commandes de GRUB Legacy et GRUB. (Commandes de GRUB)
- Grub est modulaire. En conséquence, le bootloader est lui-même limité - les modules sont chargés depuis le disque dur si nécessaire pour étendre les fonctionnalités (LVM ou RAID par exemple).
- Les disques sont toujours numérotés à partir de 0, alors que les partitions sont numérotées à partir de 1 au lieu de 0 et sont préfixées du type de table de partitions. Par exemple,
/dev/sda1
serait appelée(hd0,msdos1)
(MBR) ou(hd0,gpt1)
(GPT).
Installation
Vous pouvez installer le paquet grub avec Pacman.
pacman -Syu grub
Si vous utilisez LVM, RAID, une méthode de chiffrage ou tout autre système faisant appel au module dm-mod
, pensez à le charger (si ce n'est déjà fait) :
modprobe dm-mod
Systèmes BIOS
Instructions spécifiques concernant les tables de partitionnement GPT(GUID Partition Table)
Sur une configuration Bios/a mebibyte partition, une partition de démarrage du BIOS est requise. GRUB intègre son core.img dans cette partition.
- Avant d'essayer cette méthode, gardez à l'esprit que tous les systèmes ne pourront pas prendre en charge ce schéma de partitionnement. Pour en savoir plus sur les tables de partition les tables de partition GUID (en).
- Cette partition supplémentaire n'est nécessaire que sur un schéma de partitionnement BIOS/GPT. Auparavant, pour un schéma de partitionnement GRUB, BIOS/MBR, GRUB utilisait l'espace Post-MBR pour l'intégration du core.img). GRUB pour GPT, cependant, n'utilise pas l'espace Post-GPT pour se conformer aux spécifications GPT qui nécessitent des limites de disque de 1MB / 2048 secteurs de disque.
- Pour les systèmes UEFI (en), cette partition supplémentaire n'est pas nécessaire.. Cependant, ils nécessitent encore un ESP.
Créez une partition de 1Mib (+ 1M avec fdisk ou gdisk) sur le disque sans système de fichiers et avec le type Biosboot. Sélectionnez BIOS boot et le type de partition numéro 4 pour fdisk, ef02 pour gdisk et bios_grub pour parted. Cette partition peut être dans n'importe quel ordre de position mais doit être sur les 2 premiers TiB du disque. Cette partition doit être créée avant l'installation de GRUB. Lorsque la partition est prête, installez le chargeur d'amorçage selon les instructions ci-dessous.
Si vous utilisez un schéma de partitionnement GPT, il est recommandé de créer une partition au début du disque avec pour type bios_grub
(parted) 0xEF02
(gptfdisk), exemple :
parted /dev/disk set partition-number bios_grub on
Instructions spécifiques concernant les Master Boot Record (MBR)
L'espace post-MBR (après la région MBR de 512 octets et avant le début de la première partition) dans de nombreux systèmes partitionnés MBR (en) (ou «msdos») est de 31 KiB lorsque les problèmes d'alignement de cylindre de compatibilité DOS sont satisfaits dans la table de partition. Cependant, un écart après MBR d'environ 1 à 2 MiB est recommandé pour fournir suffisamment de place pour intégrer le core.img de GRUB (FS#24103). Il est conseillé d'utiliser un outil de partitionnement qui gère l'alignement de partition de 1 Mo pour obtenir cet espace.
/boot
en LVM par exemple), il se peut que les 31Ko laissés au début du partitionnement ne soient pas suffisant et vous risquez d'avoir une erreur lors de l'installation du MBR :
/usr/bin/grub-bios-setup : attention : core.img est exceptionnellement grand. Il ne tiendra pas dans la zone d'embarquage. /usr/bin/grub-bios-setup : erreur : l'embarquage est impossible, il est pourtant nécessaire pour les installations RAID et LVM.
Dans ce cas, il vous faut prévoir plus de place, 1Mo est suffisant :
# fdisk -l /dev/sda
[...] Périphérique Amorce Début Fin Blocs Id Système /dev/sda1 2048 204799 101376 83 Linux [...]
Recommendations de partitionnement
(Source)
Que ce soit en partitionnement GPT ou en MBR, assurez vous que la première partition commence au minimum à partir du secteur 63 (31Ko), par exemple pour un partitionnement MBR :
# fdisk -l /dev/sda
[...] Périphérique Amorce Début Fin Blocs Id Système /dev/sda1 63 257039 128488+ 83 Linux [...]
Mise en place
Pour l'installer sur le disque /dev/sda
:
grub-install --target=i386-pc --no-floppy --recheck /dev/sda
Vous pouvez éventuellement juste générer un fichier core.img
qui permet de chaîner depuis un GRUB Legacy :
grub-install --target=i386-pc --grub-setup=/bin/true --no-floppy --recheck /dev/sda
Il faudra passer /boot/grub/i386-pc/core.img
à grub 0.x.
Systèmes UEFI
Le firmware UEFI n'est pas mis en oeuvre de manière cohérente par les fabricants de matériel. Les exemples d'installation fournis sont destinés à travailler sur la plus large gamme possible de systèmes UEFI (en). Ceux qui éprouvent des problèmes malgré l'application de ces méthodes sont encouragés à partager des informations détaillées pour leurs hardware spécifiques, en particulier dans la résolution de ces problèmes, Un article GRUB/EFI(en) a été fourni pour de tels cas.
Vérifiez si vous avez GPT et un ESP
Une partition EFI System (ESP) est nécessaire sur chaque disque que vous souhaitez démarrer à l'aide d'EFI. GPT n'est pas strictement nécessaire, mais il est fortement recommandé et est la seule méthode actuellement prise en charge dans cet article. Si vous installez Arch Linux sur un ordinateur compatible EFI avec un système d'exploitation déjà opérationnel, comme Windows 8, par exemple, il est très probable que vous possédez déjà un ESP. Pour vérifier le GPT et pour un ESP, utilisez l'option partitionner en tant que root pour imprimer la table de partition du disque à partir duquel vous souhaitez démarrer.
# parted /dev/sdx print
Pour GPT, recherchez une table de partition gpt. Pour EFI, recherchez une petite partition (512 MiB ou moins) avec un système de fichiers vfat/fat32 et l'option "boot" activé, il devrait y avoir un répertoire nommé "EFI". Si ces critères sont respectés, c'est votre ESP. Notez le numéro de la partition. Vous devrez pouvoir l'identifiee, afin que vous puissiez le monter plus tard lors de l'installation de GRUB.
Créer la partition système UEFI
Tables de partition GPT
Au choix:
- Utiliser GNU Parted/GParted: créer une partition FAT32. Activer l'option d'amorçage (boot flag) sur cette partition.
- Utiliser GPT fdisk (aka gdisk): créer une partition avec gdisk de type "EF00". Puis formater cette partition en FAT32 en utilisant
mkfs.vfat -F32 /dev/<PARTITION>
Tables de partition MBR
Deux possibilités:
- Utiliser GNU Parted/GParted: créer une partition FAT32. Changer le code type de cette partition à 0xEF en utilisant fdisk, cfdisk ou sfdisk.
- Utiliser fdisk: créer une partition de type 0xEF et la formater en FAT32 avec
mkfs.vfat -F32 /dev/<PARTITION>
x86_64 ou i386
Par la suite, on suppose que vous avez un EFI x86_64, dans le cas contraire, il suffit de remplacer x86_64
par i386
dans les commandes ci-dessous.
- Les PCs ont pour la plupart un UEFI 2.x x86_64.
- Pour les macs, vous pouvez lancer la commande suivante pour connaître l'architecture de votre UEFI :
ioreg -l -p IODeviceTree | grep firmware-abi
EFI32
pouri386
etEFI64
pourx86_64
.
Mise en place
- Pour ce faire, vous devez démarrer en utilisant UEFI et non le BIOS. Si vous avez démarré en copiant simplement le fichier ISO sur un disque USB, vous devrez suivre ce guide (en) pour créer un USB démarrant sur UEFI à partir de l'ISO sans quoi
grub-install
affichera des erreurs. - Il est recommandé de lire et de comprendre les pages UEFI (en), GPT (en) et Le démarrage d'Arch en UEFI (en).
Installez les paquets grub(si ce n'est déjà fait) et efibootmgr. GRUB est le chargeur d'amorçage, efibootmgr crée des entrées de basculement .efi amorçables utilisées par le script d'installation GRUB.
La partition système UEFI devra être montée dans /boot/efi/
pour que le script d'installation de GRUB puisse la détecter:
mkdir -p /boot/efi mount -t vfat /dev/sdXY /boot/efi
Créer le répertoire /boot/efi/EFI
mkdir -p /boot/efi/EFI
Installez l'application UEFI GRUB dans /boot/efi/EFI/arch_grub
et ses modules dans /boot/grub/x86_64-efi
à l'aide de :
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=arch_grub --recheck
Le --bootloader-id est ce qui apparaît dans les options de démarrage pour identifier l'option de démarrage GRUB EFI; Assurez-vous que ce soit quelque chose que vous reconnaîtrez plus tard. L'installation créera un répertoire du même nom sous /boot/EFI/
où le chargeur d'amorçage binaire EFI sera placé.
Si vous utilisez le démarrage en tant que votre bootloader-id, vous aurez la capacité supplémentaire de pouvoir démarrer à partir du lecteur dans le cas où les variables EFI sont réinitialisées ou vous déplacez le lecteur vers un autre ordinateur.
Habituellement, vous pouvez le faire en sélectionnant le lecteur lui-même de la manière dont vous utiliserez le BIOS. Si vous êtes en dual-boot avec Windows, soyez conscient que Windows a généralement un dossier appelé boot dans le dossier EFI de la partition EFI, mais le seul but de ce service est de recréer l'option de démarrage EFI pour Windows.
Certains firmwares UEFI de carte mère nécessitent un emplacement et un nom bien déterminé pour le binaire EFI (vous le constaterez si votre entrée n'est pas visible au démarrage ou dans le bios): {esp}/EFI/boot/bootx64.efi
.
Soit vous déplacez les éléments créés précédemment:
mkdir esp/EFI/boot cp esp/EFI/grub_uefi/grubx64.efi esp/EFI/boot/bootx64.efi
Soit vous le faites au moyen de:
grub-install --target=x86_64-efi --efi-directory=/boot/efi --removable
Attention cependant si vous partagez l'ESP avec Windows car il utilise lui aussi cet emplacement (pour recréer sa propre entrée). Si vous utilisez des disques séparés il n'y a bien sûr aucun problème.
Une fois l'installation ci-dessus terminée, le répertoire GRUB principal se trouve à /boot/grub
.
- Alors que certaines distributions nécessitent un répertoire
/boot/efi
ou/boot/EFI
, Arch ne l'utilise pas. - --efi-directory et --bootloader-id sont spécifiques à GRUB UEFI. --efi-directory spécifie le point de montage de l'ESP. Il remplace --root-directory, qui est obsolète.
- Vous pouvez noter l'absence d'une option <device_path> (par exemple:
/dev/sdx
) dans la commande grub-install. En fait, n'importe quel <device_path> fourni sera ignoré par le script d'installation GRUB, car les chargeurs d'amorçage UEFI n'utilisent pas un secteur d'amorçage MBR ou partition.
Vous pouvez maintenant être en mesure de démarrer votre système UEFI après création d'un fichier grub.cfg.
Générer le fichier de configuration principal
Après l'installation, le fichier de configuration principal grub.cfg
doit être généré. Le processus de génération peut être influencé par une variété d'options dans /etc/default/grub
et scripts dans /etc/grub.d/
; Voir #Configuration.
Si vous n'avez pas fait de configuration supplémentaire, la génération automatique déterminera le système de fichiers racine du système à démarrer pour le fichier de configuration. Pour réussir, il est important que le système soit démarré ou chrooté.
Rappelez-vous que grub.cfg doit être régénéré après une modification de /etc/default/grub
ou des fichiers dans /etc/grub.d/
.
Utilisez l'outil grub-mkconfig
pour générer grub.cfg
:
# grub-mkconfig -o /boot/grub/grub.cfg
Par défaut, les scripts de génération ajoutent automatiquement des entrées de menu pour Arch Linux à toute configuration générée. Voir cette page (en) et Dual Boot pour les entrées de menu personnalisées pour d'autres systèmes.
grub-mkconfig
recherche d'autres systèmes installés, installez le paquet os-prober.- Le chemin du fichier par défaut est
/boot/grub/grub.cfg
, et non/boot/grub/i386-pc/grub.cfg
. - Si vous essayez d'exécuter
grub-mkconfig
dans un conteneur chroot ou systemd-nspawn, vous remarquerez peut-être que cela ne fonctionne pas, avec l'erreur suivante:grub-probe cannot get the "canonical path of /dev/sdaX
. Dans ce cas, essayez d'utiliser arch-chroot comme décrit dans la publication BBS post.
Configuration
Cette section ne couvre que l'édition du fichier de configuration /etc/default/grub
. Trucs et Astuces Grub(en, traduction à venir) pour plus d'informations.
N'oubliez pas de toujours générer le fichier de configuration principal après avoir effectué des modifications dans /etc/default/grub
.
Arguments supplémentaires
Pour passer des arguments supplémentaires personnalisés à l'image Linux, vous pouvez définir les variables GRUB_CMDLINE_LINUX
+ GRUB_CMDLINE_LINUX_DEFAULT
dans /etc/default /grub
. Les deux sont ajoutés l'un à l'autre et passés au noyau lors de la génération d'entrées de démarrage régulières. Pour l'entrée de démarrage recovery, seul GRUB_CMDLINE_LINUX
est utilisé dans la génération.
Par défaut, "Shutdown"grub-mkconfig
détermine l'UUID (en) du système de fichiers racine pour la configuration. Pour désactiver cela, décommenter:
GRUB_DISABLE_LINUX_UUID = true
Pour générer l'entrée recovery de GRUB, vous devez également commenter:
#GRUB_DISABLE_RECOVERY = true dans /etc default/grub
Vous pouvez également utiliser:
GRUB_CMDLINE_LINUX = "resume = UUID = uuid-of-swap-partition"
Voir les paramètres Kernel(en) pour plus d'informations.
Dual-boot
La meilleure façon d'ajouter d'autres entrées consiste à modifier le /etc/grub.d/40_custom
ou /boot/grub/custom.cfg
. Les entrées de ce fichier seront automatiquement ajoutées en lançant grub-mkconfig
:
# grub-mkconfig -o /boot/grub/grub.cfg
/etc/grub.d/40_custom
ou/boot/grub/custom.cfg
menuentry "System shutdown" { echo "System shutting down..." halt }
/etc/grub.d/40_custom
ou/boot/grub/custom.cfg
menuentry "System restart" { echo "System rebooting..." reboot }
/etc/grub.d/40_custom
ou/boot/grub/custom.cfg
if [ ${grub_platform} == "efi" ]; then menuentry "Firmware setup" { echo "Starting UEFI Setup..." fwsetup } fi
En supposant que cette autre distribution soit sur la partition sda2
:
/etc/grub.d/40_custom
ou/boot/grub/custom.cfg
menuentry "Other Linux" { set root=(hd0,2) linux /boot/vmlinuz (Ajoutez d'autres options ici) initrd /boot/initrd.img (si nécessaire) }
Sinon, laissez grub rechercher la partition appropriée par UUID ou label:
/etc/grub.d/40_custom
ou/boot/grub/custom.cfg
menuentry "Other Linux" { # En suposant que l'UUID soit {{ic|763A-9CB6}} search --set=root --fs-uuid 763A-9CB6 # search by label OTHER_LINUX (Assurrez vous que le label soit facilement identifiable) #search --set=root --label OTHER_LINUX linux /boot/vmlinuz (Ajoutez d'autres options ici, si nécessaire, par exemple: {{ic|root=UUID=763A-9CB6}}) initrd /boot/initrd.img (si nécessaire) }
/etc/grub.d/40_custom
ou/boot/grub/custom.cfg
menuentry "Other Linux (Encrypted)"{ insmod luks cryptomount (hd0,2) set root=(crypto0) linux /boot/vmlinuz cryptdevice=/dev/sda2:cryptroot root=/dev/mapper/cryptroot (add more options if required) initrd /boot/initrd.img (If the other kernel uses/needs one) }
Les trois méthodes suivantes nécessitent que FreeBSD soit installé sur une seule partition avec UFS (v2). En supposant que la table de partition BSD imbriquée se trouve sur sda4
:
Charger directement le noyau
/etc/grub.d/40_custom
ou/boot/grub/custom.cfg
menuentry 'FreeBSD' { insmod ufs2 set root='hd0,gpt4,bsd1' ## or 'hd0,msdos4,bsd1', if using an IBM-PC (MS-DOS) style partition table kfreebsd /boot/kernel/kernel kfreebsd_loadenv /boot/device.hints set kFreeBSD.vfs.root.mountfrom=ufs:/dev/ada0s4a set kFreeBSD.vfs.root.mountfrom.options=rw }
Démarrer avec le chargeur de BSD
/etc/grub.d/40_custom
ou/boot/grub/custom.cfg
menuentry 'FreeBSD' { insmod ufs2 set root='(hd0,4)' kfreebsd /boot/loader }
Menu entrée pour Windows installé en mode UEFI-GPT
Ce mode détermine l'emplacement du chargeur d'amorçage de Windows et le chainload après Grub une fois l'entrée du menu sera sélectionnée. La tâche principale ici est de trouver la partition EFI et d'exécuter le chargeur d'amorçage.
Cette entrée menune fonctionnera qu'en UEFI boot mode. Plus d'info ici (en).
/etc/grub.d/40_custom
ou/boot/grub/custom.cfg
if [ "${grub_platform}" == "efi" ]; then menuentry "Microsoft Windows Vista/7/8/8.1 UEFI-GPT" { insmod part_gpt insmod fat insmod search_fs_uuid insmod chain search --fs-uuid --set=root $hints_string $fs_uuid chainloader /EFI/Microsoft/Boot/bootmgfw.efi } fi
$ hints_string
et $ fs_uuid
sont obtenus avec les deux commandes suivantes.
La commande $ fs_uuid
détermine l'UUID de la partition EFI:
# grub-probe --target=fs_uuid $esp/EFI/Microsoft/Boot/bootmgfw.efi 1ce5-7f28
Sinon, on peut exécuter blkid
(en tant que root) et lire l'UUID de la partition EFI à partir de là.
La commande $ hints_string
déterminera l'emplacement de la partition EFI, dans ce cas le hd0:
# grub-probe --target=hints_string $esp/EFI/Microsoft/Boot/bootmgfw.ef --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1
Pour Windows XP, remplacez bootmgr
par NTLDR
dans les commandes ci-dessus. Notez aussi qu'il ne peut y avoir une partition SYSTEM_RESERVED
séparée; Il suffit de chercher le fichier NTLDR
sur votre partition Windows.
Ces deux commandes suppose que l'ESP windows et monté sur $esp
Windows installed in BIOS-MBR mode
GRUB prend en charge l'amorçage de bootmgr directement et le chainload n'est plus nécessaire pour démarrer Windows dans une configuration BIOS-MBR.
C'est la partition du système qui a /bootmgr
, pas votre partition "réelle" Windows (en général C:
). Dans la sortie blkid
, la partition système est celle avec
LABEL="SYSTEM RESERVED"
ou LABEL="SYSTEM"
et n'a qu'une taille de 100 à 200 Mo (tout comme la partition de démarrage pour Arch). Voir Wikipedia: Wikipedia:System partition and boot partition pour plus d'informations.
Tout au long de cette section, on suppose que votre partition Windows est /dev/sda1
. Une partition différente changera toutes les instances de hd0
, msdos1
. Tout d'abord, trouvez l'UUID du système de fichiers NTFS de la partition système de Windows où se trouve le bootmgr
et ses fichiers. Par exemple, si le bootmgr
de windows se trouve sur /media/SYSTEM_RESERVED/bootmgr:
Pour Windows Vista/7/8/8.1/10:
/etc/grub.d/40_custom
ou/boot/grub/custom.cfg
if [ "${grub_platform}" == "pc" ]; then menuentry "Microsoft Windows Vista/7/8/8.1 BIOS-MBR" { insmod part_msdos insmod ntfs insmod search_fs_uuid insmod ntldr search --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 69B235F6749E84CE ntldr /bootmgr } fi
Pour Windows XP:
/etc/grub.d/40_custom
ou/boot/grub/custom.cfg
if [ "${grub_platform}" == "pc" ]; then menuentry "Microsoft Windows XP" { insmod part_msdos insmod ntfs insmod search_fs_uuid insmod ntldr search --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 69B235F6749E84CE ntldr /ntldr } fi
Dans les deux exemples 69B235F6749E84CE
est l'UUID de partition qui peut être trouvé avec la commande lsblk --fs
.
{{Note|
Dans certains cas, si vous installez GRUB avant un Windows 8 propre, vous ne pouvrrz pas démarrer Windows vous aurez une erreur avec \boot\bcd
(code d'erreur0xc000000f
). Vous pouvez le réparer grâce au Windows Recovery Console (cmd à partir du disque d'installation) et exécuter:
x:\> "bootrec.exe /fixboot" x:\> "bootrec.exe /RebuildBcd".
N'utilisez pas bootrec.exe /Fixmbr
car il va effacer le GRUB. Vous pouvez aussi utiliser la fonction de réparation de démarrage dans le menu Dépannage - il n'effacera pas GRUB et corrigera la plupart des erreurs.
Le mieux étant de ne laissé connécté que disque dur cible et sur votre le dique d'ammorcage, car Windows ne parvient généralement pas à réparer les informations de démarrage si d'autres périphériques sont connectés.
/etc/grub.d/40_custom
peut être utilisé comme modèle pour créer /etc/grub.d/nn_custom
. Où nn
définit la priorité, indiquant l'ordre d'exécution des scripts. L'ordre scripts déterminent le placement dans le menu de démarrage de grub.
Nn
devra être supérieur à 06 pour s'assurer que les scripts nécessaires soient exécutés en premier.
Dépannage
Restaurer GRUB
GRUB peut être installé directement depuis votre système ou depuis un live-cd via Chroot.
Il suffira de relancer les commandes selon votre système : BIOS ou EFI
grub-install échoue
Vous pouvez éventuellement lui rajouter l'option --debug
afin d'avoir plus de précision sur la raison de l'échec.