GRUB 2 (version Compatibles PC)

GRand Unified Bootloader, version 2 (ou GRUB 2) est la seconde version de GNU GRUB. C'est un logiciel permettant de charger un système d'exploitation. Il pourra amorcer lui-même des systèmes compatibles avec la norme POSIX (GNU/Linux, *BSD, Mac OS, etc.) ou enchaîner vers un autre chargeur d’amorçage pour les autres systèmes.

Plus qu’une continuité du projet GRUB Legacy précédent, GRUB 2 en est une réécriture complète. Il a pour but d’être un chargeur d’amorçage plus modulaire et portable que son prédécesseur avec notamment  une interface graphique et une portabilité vers diverses architectures matérielles (BIOS, EFI, Coreboot…).

GRUB 2 est le chargeur d'amorçage installé par défaut, ce document concerne la version de GRUB 2 pour les ordinateurs Compatibles PC (la plupart des ordinateurs actuels) ; des paquets grub-efi et grub-coreboot existent pour les architectures basées sur EFI (tels les MacIntel) et sur Coreboot/LinuxBIOS. Pour le moment, il n'est pas conçu pour démarrer une architecture ARM.

Pré-requis

Installation

Lors d’une installation classique d'Ubuntu (depuis un support d'installation), si vous n’avez pas paramétré les options avancées, GRUB 2 est installé automatiquement et est votre chargeur d’amorçage principal pour Ubuntu.

Une vérification peut être faite depuis un terminal avec la commande :

grub-install -V

Si vous voyez GNU GRUB 1.98 ou +, vous avez GRUB 2, si c’est 0.97, vous avez Grub Legacy.

Si vous souhaitez installer Grub 2 sur le MBR ou le réinstaller après un souci, référez vous à cette explication.

Utilisation du menu

Si vous n'avez qu'un seul système d'installé, Grub ne s'affiche pas ! Pour le voir, il suffit de maintenir la touche Majuscule (shift) enfoncée au démarrage de l'ordinateur.

Dans les autres cas, vous verrez la liste des systèmes installés :

  • Si vous ne faites rien, le système sélectionné par défaut sera lancé automatiquement au bout de quelques secondes.
  • Vous pouvez en choisir un autre avec les flèches du clavier et le lancer avec la touche 'entrée' (ou la flèche vers la droite).

Autres actions possibles :

  • avec la touche 'e' vous pouvez éditer la ligne du menu pour, par exemple, ajouter un paramètre (Ctrl X : lance le système en applicant la modification, Echap permet de revenir en arrière sans changement)
  • avec la touche 'c' vous pourrez intervenir sur Grub en ligne de commande (Echap pour revenir au menu)

Paramétrage avec une application

Sous KDE, vous pouvez installer le paquet kde-config-grub2 pour les versions jusqu'à Kubuntu Wily (15.10) . Sous d'autres environnements ou pour les versions Kubuntu Xenial (16.04) et ultérieures, vous pouvez notamment utiliser Grub Customizer et Super Boot Manager. Ces applications vous permettent, entre autres  de :

  • Choisir une entrée de menu d’amorçage à sélectionner par défaut,
  • Masquer, changer l’ordre, ajouter ou supprimer des entrées du menu d’amorçage,
  • Ajouter des paramètres au noyau,
  • Modifier la résolution d’affichage,
  • Modifier les couleurs du menu GRUB,
  • Ajouter une image d’arrière-plan.

Paramétrage manuel

Pour éditer manuellement les fichiers de paramétrage, veuillez vous référer à ce tutoriel.

Habillage et thèmes

Veuillez consulter le tutoriel cité plus haut pour :

Maintenance

Réinstaller/Restaurer GRUB 2

S'il a été effacé ou désactivé suite à l’installation d’un autre système d’exploitation ou une autre raison, voici comment vous pouvez le récupérer :

Via le Réparateur de Démarrage

La méthode la plus simple est d'utiliser le réparateur de Démarrage (outil graphique).

Depuis votre "ancien" Ubuntu relancé

Si vous avez la possibilité de relancer le système qui contient le grub que vous souhaitez rétablir (avec une clé USB de secours, un autre menu Grub,..), il vous suffira alors de saisir dans un terminal cette commande :

sudo grub-install /dev/sda

Si vous voulez définir une partition en particulier (ou un disque en particulier) :

sudo grub-install --force /dev/sda7

Dans cette commande l'exemple considère qu'il s'agit du disque a, partition 7.

Pour avoir une liste des systèmes installés à jour, on ajoutera éventuellement un 'sudo update-grub'.

Depuis un autre système

Si vous réussissez à lancer un autre linux contenant Grub2 (live-cd, système sur un autre disque,..), vous avez 2 cas de figure :

  • pour une installation classique la commande à lancer est :
sudo grub-install --root-device=/media/NomUtilisateur/pointMontagePartitionContenantBoot /dev/sdb
  • pour une installation ayant un boot sur une partition séparée, la commande est (boot au lieu de root) :
sudo grub-install --boot-device=/media/NomUtilisateur/pointMontagePartitionBoot /dev/sdb
INFO du 26/02/2016 : la commande "sudo grub-install –boot-device……." ne marche pas sur live-usb 16.04.2 !!! elle n'existe pas dans le man !! est-ce toujours à jour?

Il faut que la partition cible soit montée (ouverte via le gestionnaire de fichiers par exemple). Pour savoir si le disque est bien /dev/sdb, on peut lancer la commande 'sudo blkid'.

Créer une clé USB de secours

Avant toute installation de nouveau système, il peut être judicieux de faire une clé USB de secours pour pouvoir remettre en route votre Grub, au cas où.

  1. avec Gparted (présent sur le live-cd d'Ubuntu), en lieu et place de la ou des partition(s) existante(s) sur votre clé, on créera 2 partitions :
    • une de 8 Mo de type 'non formaté' à laquelle on affectera le drapeau 'boot' (ou 'grub_bios' si on est sur table de partition gpt)
    • une pour le reste de type 'fat32' (avantage : pas de gestion des droits et lisible sur Windows, tablettes, etc). On lui mettra l'étiquette 'GRUB-SOS' pour qu'elle soit montée sous ce nom.
  2. lancer un gestionnaire de fichiers et cliquer dessus pour voir son contenu (ainsi elle est montée automatiquement sur /media/NomUtilisateur)
  3. on peut maintenant lancer la commande suivante (le NomUtilisateur sur un live-cd Ubuntu est : ubuntu) :
sudo grub-install --root-device=/media/ubuntu/GRUB-SOS /dev/sdb

Maintenant, vous pouvez copier coller tout le contenu du dossier /boot/grub du système que vous souhaitez pouvoir systématiquement démarrer vers le dossier identique de la clé USB.

Dorénavant, si vous faites démarrer votre ordinateur sur la clé USB, vous avez accès à votre système principal (car il est appelé par son UUID).

Vous pourrez aussi éditer directement le fichier grub.cfg de la clé USB sous réserve de faire un 'clic droit/propriétés/permissions' dessus pour le mettre en 'lecture/écriture' au lieu de 'lecture seule'. Par exemple, vous pourrez y mettre un menu de chaînage ou un menu pour lancer l'iso d'un live-cd,..

Ajouter du rootdelay au démarrage

Si vous tombez sur une Busybox au démarrage, il est possible que le système n’ait pas attendu assez longtemps pour que les disques durs s’initialisent. Vous pouvez continuer le démarrage par un simple CTRL+D dans la Busybox. Si cela fonctionne, une solution sera d'insérer un rootdelay dans grub.

Pour cela éditer /etc/default/grub avec les droits d'administration (commande "gksudo gedit /etc/default/grub") pour mettre par exemple : en

GRUB_CMDLINE_LINUX_DEFAULT="rootdelay=40 quiet splash"

Pour prendre en compte ce changement, on lancera la commande de mise à jour :

sudo update-grub

Lancement depuis un Grub-Legacy

En plaçant ces lignes (avec l’UUID correspondant à la partition souhaitée) dans le menu.lst d’un Grub-Legacy, on pourra lancer un Grub-pc derrière un grub-legacy.

title		Xenial via GRUB-pc
uuid		70e29811-71a3-4553-a16c-1cce2ff334ed
kernel		/boot/grub/i386-pc/core.img

Problèmes connus

Grub n'apparaît pas au démarrage

En cas de double boot, le menu de grub doit s’afficher par défaut, si l’écran de l’ordinateur reste noir au démarrage avec un message d’erreur de l’écran, il faut changer une option dans grub pour obliger un affichage non graphique. Ouvrir le terminal, écrire

sudo xdg-open /etc/default/grub

Enlever le croisillon « # » au début de la ligne

#GRUB_TERMINAL=console

Enregistrer le fichier et quitter l’éditeur de texte puis dans le terminal :

sudo update-grub

Redémarrer le pc.

grub:sh (Shell GRUB 2 à l'amorçage)

Vous démarrez votre ordinateur et au lieu de charger directement Ubuntu ou afficher un menu vous permettant de choisir un système d’exploitation à charger, votre écran vous montre une ligne grub:sh>. Ce que vous obtenez ici est un shell, une interface en ligne de commande qui permet de dépanner le chargeur d’amorçage GRUB 2. Si vous obtenez, de manière non-intentionnelle, une telle invite de commande, il y a de fortes chances que le fichier de menu de GRUB 2 soit corrompu. L’invite de commande vous permet d’exécuter des commandes, malgré les erreurs des fichiers de menu, afin de tout de même charger Ubuntu.

Pour charger tout de même Ubuntu, entrez la suite de commandes suivante.

  • Faites très attention à la structure et la graphie des commandes. Un espace mal placé ou une lettre majuscule inscrite en minuscule peut rendre la commande inopérante ;
  • Chaque ligne doit être entrée séparément. À la fin de chaque ligne de commande, appuyez sur la touche [Entrée] de votre clavier pour la valider.

Inscrivez chacune des commandes suivantes sur une seule ligne, après l’invite grub:sh> :

search -f --set=Root /boot/grub/core.img

set root=(${Root})

probe -u (${Root}) --set=UUID

linux /vmlinuz root=UUID=${UUID} ro

initrd /initrd.img

boot

Ceci effectué, Ubuntu se charge. Pour regénérer le menu de GRUB 2, vous exécuterez ensuite la commande suivante dans un terminal :

sudo update-grub

Error 15

Si au boot, ou plutôt au lancement de grub, vous vous retrouvez avec ce message (empêchant tout démarrage du système) :

GRUB Error 15.

réinstallez GRUB2 comme décrit dans le paragraphe de cette page qui traite ce sujet.

Long temps de chargement

Si au boot, le lancement de grub est long et que le disque dur fait du bruit, vous souffrez probablement du bug 420933. Le problème semble être que GRUB2 cherche les UUID de toutes les partitions au démarrage, jusqu’à trouver celle contenant /boot/grub. Cela prend du temps.

Solution : installer une version plus récente de GRUB, par exemple via les Options avancées de Boot-Repair.

Une autre solution est de modifier le disque de démarrage dans le BIOS pour démarrer sur le disque où se trouve votre Ubuntu. Plus de détails dans ce sujet du forum.

Utilisation du clavier freeze Grub-PC

Description : sur certains portables (Compaq 21xx, HP ZE4600, Packard Bell iGo 3581) le démarrage se déroule bien si on le laisse se faire sans intervention, par contre toute pression sur le clavier (que ce soit pour changer de ligne, configurer le démarrage ou passer le compte à rebours) provoque un blocage complet du PC. Seul un redémarrage « sauvage » permet de démarrer l’ordinateur.

Origine : incompatibilité de GrUB-PC et de la gestion de l’USB par certains BIOS (Pheonix KAM 1.60 ?)

Solution : entrer dans les options de BIOS (presser F2 pendant l'affichage du BIOS sur les Compaq 21xx), et désactiver l’option « Prise en charge USB léguée ». Sauvegarder et redémarrer. Le démarrage ne devrait plus bloquer.

La désactivation de cette option n’a pas d'influence sur l’utilisation des ports USB par la suite.

Grub attend pour rien après un petit crash serveur

Problème gênant quand le dit serveur n’a pas de clavier/écran.

Solution : dans le fichier /etc/default/grub ajoutez :

GRUB_RECORDFAIL_TIMEOUT=0

Dans le fichier /etc/default/rcS ajoutez pour vérifier les disques automatiquement :

FSCKFIX=yes

Finissez par le sudo update-grub évidemment.

Apparition d’images au boot

Certains noyaux affichent une image lors du chargement du système (manchot, tux…). Une image est générée par processeur que possède la machine (l’HyperThreading sur les processeurs Intel double ce nombre).

Solution : Éditez le fichier /etc/default/grub et ajoutez « logo.nologo » à la ligne GRUB_CMDLINE_LINUX_DEFAULT.

Le résultat devrait ressembler à ceci :

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash logo.nologo"

Finissez par le sudo update-grub évidemment.

Via un CD-Live ou USB-Live

Possible que vous obteniez cette erreur :

/usr/sbin/grub-probe: error: failed to get canonical path of /cow.

ou

impossible d'obtenir le chemin canonique de "/cow"

Pour y remédier, la solution est le chroot (si vous obtenez une erreur, arrêtez de suite la procédure) :

sudo -s
mkdir -p /tmp/newroot
mount -t ext4 /dev/sda3 /tmp/newroot
mount --bind /proc /tmp/newroot/proc
mount --bind /dev /tmp/newroot/dev
mount --bind /sys /tmp/newroot/sys
chroot /tmp/newroot/
/usr/sbin/update-grub
/usr/sbin/grub-install /dev/sda
exit

* remplacer sda3 par la réponse que vous donne

sudo os-prober

Source de cette astuce.

Error: diskfilter writes are not supported

Si vous rencontrez au boot le message d'erreur : "Error: diskfilter writes are not supported" sur Ubuntu 14.10, récupérer le code du patch sur https://bugs.debian.org/754921 et l'enregistrer dans le fichier "00_header_754921.patch" (par exemple).

Ou attendre le paquet "grub-common" version "2.02~beta2-26ubuntu3" cf. https://bugs.launchpad.net/bugs/1274320/

Lancer les commandes suivantes :

patchFile=~/00_header_754921.patch
sed -i "s/00_header.in/00_header/g" $patchFile
cd /etc/ && sudo patch -p2 < $patchFile
sudo chmod +x ./grub.d/00_header
sudo update-grub

Au prochain reboot, le message ne devrait plus apparaître.

Liens externes

Autres pages en rapport

  • grub-pc.txt
  • Dernière modification: Le 28/04/2018, 11:13
  • (modification externe)