Le gestionnaire d'amorce GRUB de GNU/Linux
Attention
Avant d'effectuer des modifications, voir mes recommandations.
Liens
Astuces
- Accès au menu : par Esc (pour GRUB) ou par Shift maintenu enfoncé (GRUB2).
- Voir les messages : touche "Home" (touche au-dessus de la touche "Fin").
Outils- commandes
MBR
- Avant de passer par GRUB, le démarrage passe par le MBR.
GRUB et GRUB 2 - historique &
généralités
Liens et infos
- GRUB (GRand Unified Bootloader), chargeur d'amorçage
libre utilisé par GNU/Linux, permet également d'installer et de gérer le multi-boot
(démarrage au choix d'un système d'exploitation, au cas ou plusieurs seraient installés), GRUB a remplacé LILO.
- GRUB home page | wiki
fr
- Versions
- GRUB était la 1ère version de GRUB, et a été renommée "GRUB
Legacy" suite à la sortie de GRUB 2.
- GRUB version 2 ou GRUB2 ou GRUB 2 (version 1.98 ou plus
récente) est la nouvelle version de GRUB, utilisée depuis 2007/2009 par la plupart des distributions GNU/Linux.
- Sous Ubuntu, le package GRUB2 est appelé grub-pc.
- GRUB peut être installé sur le disque dur (dans le MBR ou dans une partition), ou sur un périphérique (clé USB,
CD/DVD, diskette).
- Si GRUB n'est pas installé dans une partition, le dossier /boot/grub ne s'y trouve pas.
Ce qui suit concerne uniquement GRUB version 2 (GRUB2)
Rappel : GRUB2 = version 1.98 ou plus récente de grub.
Ex : RHEL 7
Notes
- numérotation des disques : commence par 0 (exemple : sda0, sda1)
- numérotation des partitions : commence par 1 sous GRUB2 (alors que ça commencait par 0 sous GRUB).
Outils
Doc, infos, tutos
Sécurité
GRUB 2 est capable d'utiliser de l'encryption et un mot de passe.
Fichiers de configuration
Note : Afin d'éviter les confusions hd, sd, etc. au boot (dues à
l'ordre de chargement des drivers), GRUB utilise désormais les UUID
ou les LABEL pour identifier les disques et partitions dans device.map et grub.cfg
(précisions,
autres infos)
device.map
- /boot/grub/device.map
- Est utilisé par GRUB s'il est présent.
- Associe les "GRUB device names" ((hd0), ou (hd0,1),
etc.) avec les "device files" (/dev/...).
- Doc, autres
infos
grub.cfg
- sous /boot/grub, ou sous /boot/grub2 (Fedora), grub.cfg est nommé quelquefois grub.conf, ou menu.lst (suivant les distrib).
- Ce fichier de configuration, au format texte, personnalise le menu affiché par GRUB 2 au boot, et est
mis à jour par l'ajout (ou la suppression) d'un noyau Linux ou par
les shell-scripts grub-mkconfig et update-grub.
- La commande grub-mkconfig (ou grub2-mkconfig -o
/boot/grub2/grub.cfg) génère ce fichier grub.cfg à partir de /etc/default/grub et des fichiers de /etc/grub.d.
- Si install de desktop-base => exécuter update-grub
qui mettra à jour /boot/grub/grub.cfg
- Si pb, exécuter update-grub, qui cherche les partitions bootables, dont celles de Windows,
et met à jour /boot/grub/grub.cfg.
- Des options de boot du noyau Linux peuvent être ajoutées à la ligne vmlinuz, mais
il est préférable de les configurer par /etc/default/grub
Exemple de contenu de grub.cfg
- set root=(hd0, msdos3) => GRUB bootera sur la 3ème partition (sda3) du disque hd0 (/dev/sda)
/etc/default/grub
- Fichier de configuration initial
- Si modifié, exécuter update-grub pour mettre à jour /boot/grub/grub.cfg
- Options noyau
- Pour ne pas utiliser les UUID
- # Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true
/etc/grub.d
- voir le README de ce dossier
- 05_debian_theme (contient les couleurs du menu, le nom de l'image de fond, etc.)
Shell-scripts
- /usr/bin/os-prober
- /usr/sbin/update-grub : exécute "grub-mkconfig -o /boot/grub/grub.cfg"
- info grub-mkconfig : crée un nouveau fichier de config grub (par l'option -o)
- manuel : man 8 grub-mkconfig, info grub-mkconfig
- /usr/share/os-prober/common.sh
- /usr/lib/os-probes/mounted/
- 20microsoft : # Detects all Microsoft OSes on a collection of partitions.
Utilisation manuelle de GRUB
/!\ La numérotation des disques ne change pas avec GRUB2, mais la numérotation des partitions commence à 1 (alors qu'elle
commençait à 0 avec GRUB).
/!\ Avant toute manip/modification, effectuer une sauvegarde
- # cp -r /boot/grub /boot/grub.sauv
- Sauver le sauver le secteur de boot MBR par la commande dd.
- Avoir sous la main un LiveCD de secours qui permette de réparer GRUB.
Note : la commande grub n'existe plus dans GRUB2.
grub-probe
- # grub-probe --device /dev/sda3 (-v indique plus d'infos)
- Exemple de résultat : ext2
- # grub-probe --target=drive --device /dev/sda3
- Exemple de résultat :(hd0,msdos3)
grub-mkconfig
- (re)génère ou adapte un fichier de configuration grub.cfg (commande utile si on a, par exemple, reformaté la partition Windows
(NTFS) en ext3).
- Ex : # grub-mkconfig -o /boot/grub/grub-test.cfg (pour ne pas écraser grub.cfg)
- Ex : # grub-mkconfig -o /boot/grub/grub.cfg
grub-install
- /usr/sbin/grub-install est un shell-script, qui exécute des commandes GRUB (grub-mkimage, grub-setup, etc.).
- Utilisation
- # grub-install -v
- affiche la version (si 1.98 ou +, il s'agit de GRUB2).
- # grub-install --debug
- option non documentée, affiche les commandes (active "set -x") et des log
- # grub-install --recheck /dev/sda
- Utile si on a ajouté ou enlevé un disque dur, car cela effacera le le fichier /boot/grub/device.map
et en créera un nouveau adapté à la nouvelle config.
- Exemple de résultat : "Installation finished. No error reported."
- # grub-install /dev/sda
- Ou : "# grub-install hd0" si l'association est effectuée via device.map).
- Utilise grub-setup pour installer GRUB dans le MBR du disque sda, et copie les fichiers de GRUB dans le dossier /boot/grub.
- Pour + de détails
- $ grub-install --help
- $ man grub-install ; info grub
- Note : Installer
GRUB au niveau de la partition est déconseillé
Au boot : le rescue shell (doc)
- grub:sh> (interface qui peut apparaître au
boot, à la place du menu de GRUB).
- Astuce : TAB permet de complèter les commandes, ou d'afficher des infos.
- Exemple : avec "set root=(", et en appuyant sur la touche TAB, GRUB indique les disques et partitions.
- Commandes
- Commandes accessibles par l'interface du menu
GRUB
Rechercher d'autres s.e. et les ajouter au menu de GRUB
- $ sudo os-prober
- $ sudo update-grub
Réparer le paquet GRUB2 (grub-pc) d'Ubuntu
Articles
Méthode simple
- Booter sur une clé USB sur laquelle a été installé Super Grub2
Disk
- Detect any OS...choisir Ubuntu
- Dans un terminal, ré-installer le paquet grub-pc (# apt-get install --reinstall grub-pc)
Infos techniques - quelques fichiers de GRUB
Pour + d'infos, voir le manuel ($ info grub).
- boot.img (l'équivalent du "stage1" de GRUB Legacy)
- est placé dans le MBR ou dans le secteur de boot de la partition (taille : 512 octets).
- core.img (l'équivalent du "stage1_5" de GRUB Legacy, mais + performant)
- est installé dans le "MBR gap", entre le MBR et la première partition (taille : entre 32Ko et 2 Mo).
Ce qui suit concerne GRUB (GRUB Legacy)
Rappel : GRUB = version 1.97 ou plus ancienne de grub.
Ex : RHEL 6
Notes
- historique
- numérotation des disques : commence par 0 (exemple : sda0, sda1)
- numérotation des partitions : commence par 0 sous GRUB
Outils
Liens
Fichiers
- Si GRUB n'est pas installé dans une partition, le dossier /boot n'existe pas dans cette partition.
- Par exemple, au "grub> setup (hd8)" on obtiendra : "Error 15: File not found".
- Etapes
- stage 1 : /boot/grub/stage1, puis /boot/grub/stage1_5
- puis stage 2 : /boot/grub/stage2
Notes
- numérotation des disques : commence par 0 (exemple : sda0, sda1)
- numérotation des partitions : commence par 0 sous GRUB, et commence par 1 sous GRUB2.
Commande grub
Note : La commande grub est /sbin/grub (en RHEL 4, etc.), ou /usr/sbin/grub (SLES 11 SP, etc.), elle
n'existe plus dans GRUB2.
Aide GRUB
- grub> help
(affiche la liste des commandes de grub)
- grub> help
find
(aide sur la commande find de grub)
Commandes pour installer/restaurer/réparer GRUB manuellement (plus
d'infos)
1. Analyse
- # chroot /mnt/la_partition_a_reparer (si nécessaire)
- # grub
- à exécuter en étant root (ou par : $ sudo grub), sinon, au "find /boot/grub/stage1" on
obtiendra : "Error 15: File not found".
- grub> find /grub/stage1
- grub> find /boot/grub/stage1
- permettent de trouver les numéros des partitions sur lesquelles est présent le fichier stage1 de GRUB.
- exemple de résultat :
- (hd0,2) ---- le fichier stage1 est dans le disque 0 (sda), dans la 3ème partition (sda3).
- (hd1,0) ---- le fichier stage1 est dans le disque 1 (sdb), dans la 1ère partition (sda1).
- dans cet exemple, le "disque" 1 était ma clé USB, sur laquelle j'avais installé Super
Grub Disk.
- grub> device (hd8) /dev/sda
- associe le nom (périphérique virtuel) hd8 au disque sda (étape optionnelle, à titre d'exemple)
2. Réparation du boot de hd0
- grub> root (hd0,2) --- ou, si hd8 avait été associé : root (hd8,2)
- ayant indiqué 2, la 3e partition (sda3) sera utilisée dans le reste de cet exemple.
- en cas de doute, utiliser la touche TAB, ainsi GRUB indiquera les possibilités pour compléter la commande :
- grub> root(hd ---- appuyer sur la
touche TAB donnera ici : root(hd0
- grub> root(hd0, ---- appuyer sur la touche TAB donnera
ici : root(hd0,2
- grub> setup (hd0) --- ou, si hd8 avait été associé
: setup (hd8)
- installe le GRUB boot loader dans le MBR du disque sda, associé à la chaîne de boot GRUB (stage1, stage1.5 et stage2) de la
partition sda3.
- Si "setup (hd0,2)" avait été utilisé, le GRUB boot loader aurait été installé dans le secteur de boot
de la partition sda3 du disque sda (et non dans le MBR de ce disque) ; dans ce cas un logiciel comme GAG
installé dans le MBR du disque peut permettre d'effectuer la liaison avec GRUB et de pouvoir booter.
- grub> quit
- permet de sauver les modifs et de sortir de GRUB
Notes
- Les commandes précédentes permettent de restaurer un GRUB défectueux, après avoir démarré sur un LiveCD, un
LiveUSB, un fichier mondorescue.iso en mode expert...
- Ces commandes peuvent également être exécutées lors d'un démarrage : lorsque GRUB affiche la liste des s.e. bootables, passer en mode commande (console) en tapant la lettre
'c'.
Autre solution de réparation
Booter sur une clé USB sur laquelle a été copié Super Grub Disk
et qui a été rendue bootable.
Le choix de l'ordre du boot se fait par les touches F8 ou F12 au
boot, ou par le BIOS (accessible par les touches F1 ou Suppr).
Booter sur un CD Rescatux (compatible UEFI).
Autres exemples perso
Créer une Diskette de démarrage avec GRUB
- Création d'un système de fichiers de type ext2 sur la diskette
- Montage de la diskette
- mount -t ext2 /dev/fd0 /media/floppy
- Installation de fichiers GRUB
- cp /boot/grub/stag* /media/floppy/grub
- Démontage de la diskette
- Installation de la partie bootable de GRUB
- /usr/sbin/grub --batch <<EOT
/etc/grub.conf
- Exemple openSUSE (et comportement de Yast vis-à-vis du MBR et de
la partition de boot)
