Contenu | Rechercher | Menus

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 32 bits et 64 bits disponibles sur le marché actuellement) ; des paquets grub-efi et grub-coreboot existent pour les architectures basées sur EFI (tels les MacIntel) et sur Coreboot/LinuxBIOS.

Pré-requis

Installation

Lors d’une nouvelle installation (depuis un support d'installation), si vous n’avez pas paramétré les options avancées, vous n’avez rien de plus à faire : GRUB 2 est installé 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 avez modifié les options avancées lors de l'installation d’Ubuntu et souhaitez installer Grub 2 sur le MBR, il suffit de suivre ce tutoriel.

Après installation complète d’Ubuntu

Afficher le menu GRUB

Le menu de GRUB ne s’affiche pas au démarrage d’un PC mono-système. Il suffit de laisser la touche Majuscule (shift) enfoncée avant le chargement de GRUB pour l'afficher.

Pour que le menu s’affiche systématiquement, il faut éditer avec les droits d'administrateur le fichier /etc/default/grub puis d’y ajouter un croisillon « # » au début de la ligne

GRUB_HIDDEN_TIMEOUT=0

(voir /etc/default/grub : options par défaut).

Réinstaller/Restaurer GRUB 2

Réinstallation/Restauration du GRUB, par exemple lorsqu’il a été effacé ou désactivé suite à l’installation d’un autre système d’exploitation (par exemple, Microsoft® Windows®, Suse (OpenSuse)). Voir ce tutoriel.

Placer Windows en premier dans le grub

Reportez-vous à ce paragraphe.

Amorçage multiple : privilégier un grub

En cas d'installation en parallèle de plusieurs versions d'Ubuntu sur le même disque dur, la dernière installation impose son grub. Mais si vous souhaitez imposer au démarrage le grub d'une autre installation (celle que vous utilisez par défaut, par exemple) :

  1. allez dans cette autre installation,
  2. ouvrez le terminal, et tapez :
sudo os-prober
sudo update-grub
sudo grub-install /dev/sda

avec /dev/sda si on veut pointer sur le disque sda
avec /dev/sdb si on veut pointer sur le disque sdb
avec /dev/sdc si on veut pointer sur le disque sdc
etc…

:-) Lorsque l'on souhaite faire cohabiter Ubuntu avec un autre système, tel que Windows®, il peut être opportun d'installer Grub sur un disque différent de celui où est installé le chargeur d'origine. Il suffira de changer dans le BIOS l'ordre d'examen des disques (lors du démarrage de l'ordinateur) pour privilégier Grub ou un autre système. Ainsi, le disque d'origine n'est pas modifié et le retour en arrière est plus simple.

Configuration simple (pour débutants)

Grub Customizer et Super Boot Manager 1) sont deux applications graphiques avancées permettant de modifier la plupart des paramètres, entre autres :
(Sous KDE il vous suffit d'installer le paquet kde-config-grub2)

  • 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:

Configuration avancée

À partir de ce chapitre, vous allez intervenir directement sur les fichiers de GRUB. Soyez prudent, les fichiers de GRUB ne doivent pas être modifiés à la légère, sous peine d'avoir un système qui ne démarre plus. Si vous ne maîtrisez pas bien, n'hésitez pas à demander de l'aide sur le forum.

Liste des fichiers utilisés pour la configuration

À connaître avant de configurer manuellement.

Fichier utilisé par le système

  • /boot/grub/grub.cfg : il est généré automatiquement par update-grub (il est inutile d’éditer ce fichier) et ne doit donc pas être modifié manuellement.

Fichiers utilisés pour l’auto-configuration

  • /etc/default/grub : gère les valeurs par défaut de grub (délai de lancement, résolution d’affichage, splash/quiet, options par défaut des nouveaux noyaux…) ;
  • les fichiers du dossier /etc/grub.d/ :
    • 00_header : contient le script gérant les options définies dans /etc/default/grub ;
    • 05_debian_theme : gère les couleurs du menu et le fond d’écran éventuel ;
    • 10_linux : contient le script de lancement du système sur lequel on est ;
    • 20_memtest86+ : script permettant de générer les entrées memtest ;
    • 20_linux_xen FIXME
    • 30_os-prober : contient le script de recherche des autres systèmes installés ;
    • 30_uefi-firmware FIXME
    • 40_custom : configuration personnelle ; c'est là qu’on pourra paramétrer manuellement le lancement des systèmes d’exploitation;
    • 41_custom FIXME

Ces fichiers sont traités dans l’ordre numérique (00_, puis 05_, puis 10_, etc.).

Configuration/reconfiguration automatisée du menu GRUB

Si vous avez démarré sur la partition qui contient le grub.cfg à mettre à jour, faites directement la commande ci-dessous.
Sinon, référez-vous au paragraphe Configuration/reconfiguration automatisée à partir du live CD dans les cas particuliers.

sudo update-grub

Cette commande saisie dans un terminal lit le contenu de ces fichiers un à un :

  1. /etc/default/grub ;
  2. l’ensemble des fichiers contenus à la racine du dossier /etc/grub.d/.

La lecture de ces fichiers permet de générer automatiquement un nouveau fichier grub.cfg.

sudo grub-mkconfig -o /boot/grub/grub.cfg et update-grub font exactement la même chose. Toutes les commandes de mise à jour de la config de grub-pc seront données avec update-grub car plus simple à mémoriser.
sudo grub-mkconfig (seul) vous permettra de visualiser dans votre terminal ce que pourrait être le contenu du fichier grub.cfg (utile pour les tests car les changements ne sont pas encore enregistrés).

Configuration manuelle

Avant de commencer, il est souhaitable :

  • d’avoir un fichier /boot/grub/grub.cfg à jour en lançant dans un terminal la commande update-grub (voir plus haut) ;
  • d’en garder une sauvegarde (ex. : sudo cp /boot/grub/grub.cfg /boot/grub/grub.cfg.autogénéré) ;
  • de ne pas chercher à le modifier directement (sera écrasé à un moment ou à un autre).
  • de prévoir de modifier le grub à partir du premier OS installé autrement les modifications ne seront pas prises en compte.

De même, aucun script de configuration présent dans /etc/grub.d/ ne doit être effacé.
Il est préférable de les déplacer dans un dossier dormant créé pour cela (ex. : sudo mkdir /etc/grub.d/zz).

/etc/default/grub : options par défaut

Modifiez avec les droits d’administration le fichier des valeurs par défaut de GRUB, /etc/default/grub.

  • GRUB_DEFAULT=0 correspond au menu qui sera sélectionné par défaut (→ exemple).
  • #GRUB_HIDDEN_TIMEOUT=0 : avec le croisillon « # », le menu de grub sera visible.
    Sans le « # », le menu de grub sera invisible ; c'est utile si on n’a qu’un seul système sur le disque ou si grub est lancé via un autre gestionnaire d’amorçage.
    Le nombre fixe, en secondes, la durée permettant d’appuyer sur les touches Échap ou majuscule (Shift) pour faire apparaître le menu invisible (→ exemple).
  • GRUB_HIDDEN_TIMEOUT_QUIET=false De pair avec ‘GRUB_HIDDEN_TIMEOUT’, positionner à ‘true’ afin de supprimer l'affichage du décompte en attendant qu'une touche soit pressée pendant l'affichage du menu.
  • GRUB_TIMEOUT=10 est la durée en secondes de l’affichage du menu avant de se lancer sur le menu sélectionné par défaut. (si vous modifiez cette valeur et qu’elle n’est pas prise en compte après un update-grub, il vous faudra peut-être enlever le croisillon « # » devant GRUB_HIDDEN_TIMEOUT). Mettre cette valeur à -1 provoquera l’affichage du menu jusqu’à ce que l’utilisateur valide un choix dans la liste proposée.
  • GRUB_DISTRIBUTOR="" est la ligne qui définit la syntaxe des titres du menu (→ exemple)
  • GRUB_CMDLINE_LINUX_DEFAULT="" et GRUB_CMDLINE_LINUX="" sont des comportements prédéfinis qui affecteront le lancement des systèmes d’exploitation détectés automatiquement.
  • #GRUB_GFXMODE=640x480 (→ exemple).
  • Depuis Lucid : #GRUB_INIT_TUNE="480 440 1" permet d’avoir un bip à l’affichage d’un menu Grub si on enlève le croisillon « # ».
  • GRUB_GFXPAYLOAD=1024x768 : à ajouter éventuellement. Définit la résolution d’affichage de l’écran de chargement (splash screen tel que Plymouth par exemple).

Un bon vieux menu à plat

Si le principe du sous-menu vous agace, vous pouvez le désactiver en ouvrant avec les droits d’administration le fichier /etc/default/grub pour y ajouter la ligne

GRUB_DISABLE_SUBMENU=y

Sauvegardez, puis dans un terminal,

sudo update-grub

et voilà.

Enlever un certain nombre de noyaux

On peut supprimer les noyaux les plus anciens. Il est conseillé de laisser les deux derniers noyaux. Se référer à la documentation Nettoyer Ubuntu.

Désactiver quelques automatismes

Si vous avez créé le dossier zz dans /etc/grub.d/ (voir note importante plus haut), vous pourrez y déplacer les fichiers :

  • 20_memtest86+ pour ne plus faire apparaître les tests de mémoire dans le menu de démarrage ;
  • 30_os-prober pour ne plus déclencher la détection automatique des autres systèmes installés.

Ouvrez le dossier /etc/grub.d avec les droits d'administration, par exemple en saisissant dans un terminal :

sudo xdg-open /etc/grub.d

puis déplacez les fichiers à la souris ou par couper/coller.

Attention : si vous voulez cacher GRUB avec les options GRUB_HIDDEN_TIMEOUT et GRUB_HIDDEN_TIMEOUT_QUIET dans le fichier /etc/default/grub, 30_os-prober étant le script qui en tient compte, laissez-le actif et préférez plutôt l’option GRUB_DISABLE_OS_PROBER=true dans le fichier /etc/default/grub.

IMPORTANT : notez toutefois que si vous faites ainsi, les autres O.S. ne seront plus détectés et vous ne les aurez plus dans la liste. Pour avoir uniquement le compte à rebours tout en conservant les autres O.S. sur la liste, voir paragraphe plus bas.

Autres méthodes 
  • plutôt que de déplacer ces fichiers, on peut aussi désactiver leurs droits d’exécution ; toujours via le gestionnaire de fichiers :
    1. clic droit sur l’un des fichiers pour accéder à ses Propriétés ;
    2. dans l’onglet Permissions, décochez la case Autoriser l’exécution… ;
  • de même, il est possible d’'ajouter cette ligne au fichier de configuration /etc/default/grub :
    GRUB_DISABLE_OS_PROBER=true

Paramètres personnalisés

Éditez le fichier /boot/grub/grub.cfg autogénéré plus haut et le fichier /etc/grub.d/40_custom. Copier depuis le grub.cfg (ou une de ses sauvegardes) ce que vous trouverez entre

### BEGIN /etc/grub.d/30_os-prober ###

et

### END /etc/grub.d/30_os-prober ###

et coller le dans 40_custom. Modifiez ensuite les paramètres à votre guise.

Vous pouvez aussi créer un autre fichier personnalisé avec une numérotation qui le lance avant tous les autres par exemple :

  • Créez le fichier /etc/grub.d/07_custom ;
  • après son enregistrement, vous le rendrez exécutable :
    sudo chmod +x /etc/grub.d/07_custom

Pour appliquer cette nouvelle configuration lancez un :

sudo update-grub

Puis, relancez votre machine.

Exemples et cas particuliers

Configuration/reconfiguration automatisée à partir du live CD

Impose l’emploi d'un support Live 32 bits pour un grub 32 bits à réparer et d’un CD d’une version 64 bits pour réparer une installation 64 bits…

Si vous ne pouvez pas démarrer sur la partition qui contient le fichier grub.cfg à mettre à jour, vous pouvez lancer la commande update-grub sur cette partition après avoir démarré depuis un live-cd ou une autre partition contenant un Ubuntu en état de marche, et en effectuant les opérations suivantes.

En prenant comme hypothèse que le fichier grub.cfg à mettre à jour se trouve sur la partition sdb1 qui n’est pas déjà montée et qui est normalement montée sur / (donc /boot n’est pas sur une partition séparée).

sudo mkdir /media/sdb1
sudo mount /dev/sdb1 /media/sdb1
cd /media/sdb1
sudo mount --bind /dev dev
sudo mount --bind /sys sys
sudo mount --bind /proc proc
sudo chroot .

Par contre, si /boot est sur une partition à part (/dev/sdb2 par exemple) et /dev/sdb1 est normalement montée sur /.

sudo mkdir /media/sdb1
sudo mount /dev/sdb1 /media/sdb1
cd /media/sdb1
sudo mount --bind /dev dev
sudo mount --bind /sys sys
sudo mount --bind /proc proc
sudo chroot .
sudo mount /dev/sdb2 /boot

À partir de là vous êtes positionnés quasiment comme si vous aviez démarré sur sdb1 qui est devenu votre racine, et vous êtes en root, donc pas besoin de sudo devant les commandes. Ensuite vous pouvez faire votre update-grub normalement :

sudo update-grub

Pour ré-installer GRUB sur le MBR :

sudo grub-install /dev/sdb

Pour sortir du chroot, demontez /dev/sdb2 si /boot est sur une partition à part,

sudo umount /dev/sdb2

tapez exit, puis démontez les bind.

exit
sudo umount proc
sudo umount dev
sudo umount sys
cd ..
sudo umount /dev/sdb1

Cacher le menu

FIXME suppression car déjà expliqué ici: /etc/default/grub : options par défaut

Chaîner un autre menu d’amorçage

chainloader vous permettra de lancer un autre gestionnaire d’amorçage présent sur le premier secteur des partitions concernées : Windows, Lilo… (ne fonctionne pas tel quel vers Grub2). Voici un exemple pour sda7 ajouté sur 40_custom (voir plus haut) :

menuentry 'Bootloader Lilo sur sda7' {
set root=(hd0,7)
chainloader +1
}

Pour qu’il fonctionne vers grub-legacy, il faudra que celui-ci soit installé sur le premier secteur d’une partition et non le MBR (si ce n’est pas le cas, on lance le système qui a ce grub-legacy et on lance un sudo grub-install /dev/sda7 par exemple). Note : sur Squeeze le 26 mars 2012, pour que cela fonctionne, il faut utiliser la nomenclature suivante : set root (hd0,msdos7) au lieu de "set root (hd0,7).

Pour chaîner vers un autre Grub2, on procédera ainsi :

menuentry 'Grub 2 sur /dev/sda7' {
set root=(hd0,7)
chainloader +1
}

Si ça n’a pas été fait lors de l’installation de l’OS qui se trouve sur sda7, il faut installer Grub dans le secteur de boot de la partition sda7. Pour réaliser cela dans le cas d’une partition racine Ubuntu 10.10 sur sda7 par exemple, il faut forcer (option –force) :

sudo grub-install --force /dev/sda7

Exemple : Titres du menu

Voici comment s’affichent par défaut les lignes du menu grub : « Ubuntu, Linux 2.6.31-14-generic ».

  • Pour modifier la partie avant la virgule de celui-ci, éditez le fichier /etc/default/grub et choisissez parmi les possibilités suivantes :
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`                   # donne : Ubuntu, Linux 3.13…
#GRUB_DISTRIBUTOR=`lsb_release -d -s 2> /dev/null || echo Debian`                  # donne : Ubuntu 14.04 LTS, Linux 3.13…
#GRUB_DISTRIBUTOR=`echo -n $(lsb_release -cds 2> /dev/null || echo Debian)`        # donne : Ubuntu 14.04 LTS lucid, Linux 3.13…
#GRUB_DISTRIBUTOR=`echo -n TOTO $(lsb_release -r -s 2> /dev/null || echo Debian)`  # donne : TOTO 14.04 LTS, Linux 3.13…
#GRUB_DISTRIBUTOR=`echo -n TITRE PERSONNALISÉ`                                     # donne : TITRE PERSONNALISÉ, Linux 3.13…

Exemple : OS sélectionné par défaut

Pour changer le système d'exploitation sur lequel grub démarre par défaut:

  • Éditez avec les droits d'administration le fichier /etc/default/grub et choisissez parmi les possibilités suivantes pour la variable GRUB_DEFAULT= ;
  • un chiffre (0 = le premier, 1 = le deuxième, etc.) ;
  • saved (sans guillemet) pour ce qui a été sélectionné lors du précédent lancement (nécessite de rajouter GRUB_SAVEDEFAULT=true) ;
  • ou le titre exact d’un menu mis entre guillemets droits (par exemple : "Microsoft Windows 2000 Professionnel (on /dev/sda1)")
  • ou sudo mv /etc/grub.d/30_os-prober /etc/grub.d/06_os-prober (pour mettre windows par défault)
    ne pas oublier, pour que la modification soit prise en compte:
    sudo update-grub

Pour obtenir les titres exacts des menus :

grep menuentry /boot/grub/grub.cfg

Sous Ubuntu 12-04 et suivants ainsi que sous Grub 1.99, on peut constater (cat /boot/grub/grub.cfg) des sous-menus (en particulier le sous-menu Previous Linux versions) ce qui remet en cause les indications précédentes et il faut spécifier plus précisément dans /etc/default/grub le chemin complet « Submenu N>Submenu X>Menu Entry Y » pour bien démarrer sur la bonne entrée. Voir ici. Par exemple si on veut booter sur la première entrée des anciens noyaux on peut modifier dans /etc/default/grub la ligne comme suit : GRUB_DEFAULT="Previous Linux versions>0" ; 0 étant la première ligne. C’est utile quand on utilise des noyaux sécifiques pour Xen par exemple, noyaux qui vont tous se ranger proprement dans un sous-menu spécifique.

Exemple : Résolution d'affichage

Ce qui suit décrit la procédure pour obtenir une meilleur résolution au démarrage et à l'affichage du splashscreen.

  • Pour avoir la liste de toutes les résolutions supportées pendant le démarrage : taper « c » quand vous êtes dans le menu du boot pour entrer en mode console. Puis :
vbeinfo

La liste des résolutions supportées par Grub s'affiche. Notez celle qui est la plus haute (par exemple: 1280x1024x32). Elle se trouve généralement tout en bas. Puis, appuyez sur la touche Echap (Esc) pour revenir au menu de Grub et démarrer votre ordinateur.

Ligne à éditer :

# GRUB_GFXMODE=640x480

Enlever le Croisillon « # » devant « GRUB_GFXMODE= » et définir une résolution d’écran en fonction de votre matériel. Cela nous donnera notamment plus de liberté pour configurer un fond d’écran (voir plus bas).

Exemples :

GRUB_GFXMODE=1280x1024,1024x768x32

La deuxième valeur sera prise en compte si la première n’est pas supportée par votre matériel. Celle-ci retombera à 640x480 si aucune des deux ne convient. Le x32 est la profondeur de codage des couleurs en bits (attention pas d’espace après la virgule sinon il y aura un message d’erreur lors de l’update-grub).

Pour prendre en compte le changement :

sudo update-grub

Si la résolution n'est toujours pas bonne, ou si vous n'avez carrement pas d'affichage de l'écran de démarrage (avec le pilote proporiétaire nvidia et Ati par exemple) essayer avec d'ajouter ceci:

GRUB_GFXPAYLOAD_LINUX=auto

ou

GRUB_GFXPAYLOAD=1280x1024

en adaptant la résolution à ce que vous avait répondu la commande vbeinfo Après la ligne :

GRUB_GFXMODE=1280x1024,1024x768x32

En dernier recours modifier cette ligne :

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

par:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash video=uvesafb:mode_option=1280x1024-24,mtrr=3,scroll=ywrap"

N'oubliez pas le :

sudo update-grub

Si vous ne pouvez plus démarrer Ubuntu suite à cette manipulation (écran restant indéfiniment noir ou sur l'arrière-plan de grub), redémarrez votre ordinateur et lors de l'affichage du menu de grub, appuyez sur la touche c de votre clavier. Lorsque l'invite de commande de grub s'affiche, tapez la commande suivante :

set gfxpayload=

puis appuyez sur la touche Entrée. Vous pouvez alors revenir au menu de grub en appuyant sur Échap et démarrer votre ordinateur normalement.

Exemple : ancien paramètre vga=xxx

Dans les options de boot d’un Linux, on trouve parfois le paramètre « vga=788 » pour activer le framebuffer avec une définition d’écran donné. Dans Grub2, il faut utiliser une ligne à part « set gfxpayload=800x600x16 » à la place. Pour les autres résolutions, consultez le tableau en lien suivant : Tableau de correspondance entre les codes vga et les résolutions d'écran souhaitées.

Donc, au lieu de :

linux /boot/vmlinuz […] vga=788 […]

on aura

set gfxpayload=800x600x16, 800x600
linux /boot/vmlinuz […]

Exemple : Fond d'écran

Pré-requis

  • Avoir installé le paquet ImageMagick est fortement recommandé.
  • Pour cet exemple :
    • on fixera une résolution de : GRUB_GFXMODE=800x600x32,800x600 (voir plus haut) ;
    • on stockera l’image de fond dans le dossier /boot/grub/ car cela simplifie beaucoup les choses pour certains cas particuliers (pour une partition /boot ou /home séparée, pour les partitions LVM, pour une mise à jour en mode recovery/récupération…) et il fait partie des dossiers par défaut inclus dans les scripts de Grub.

Configuration de /etc/grub.d/05_debian_theme

Suivez ces instructions:

  • copier une image (*.jpg, *.png ou *.tga) dans le répertoire /boot/grub (utiliser les droits superutilisateur) ;
  • dans une console faire un sudo update-grub ;
  • redémarrer et votre nouveau fond d’écran est là (première image rencontrée par ordre alphabétique dans le dossier /boot/grub).
  • attention : les couleurs de l'image peuvent provoquer une mauvaise visibilité du menu sur l'écran

Images au bon format

L’image choisie comme fond d’écran peut ne pas fonctionner du premier coup (rapport 16/10ème pour un écran 4/3, provenance macintosh…). Pour la rendre lisible pour Grub, on pourra la convertir, par exemple, comme suit :

convert $HOME/Images/image_exemple.jpg -resize 1024x768! -depth 16 $HOME/Images/image_exemple_au_bon_format.jpg

Utilisation

Pour modifier l’image de fond, il suffira de faire une copie de celle-ci avec les droits superutilisateur vers le dossier grub. Par exemple :

sudo cp $HOME/Images/image_exemple.jpg /boot/grub/00_image_de_fond.jpg

Lors de la première utilisation, ne pas oublier de lancer un :

sudo update-grub

Script pour automatiser les modifications de couleurs et image de fond d'écran

Si les modifications manuelles de /boot/grub/grub.cfg sont déconseillées, il est toutefois possible de les faire réaliser par un programme. Vous trouverez à cette adresse un script pour changer de fond d’écran de GRUB − par exemple au hasard et à chaque redémarrage − dans une sélection de thèmes définis dans un fichier de configuration.

Tutoriel pour démarrer une image iso

Dans ce tutoriel vous aurez des exemples de menus « prêts à l'emploi » pour lancer les livecd Ubuntu ou autres : Lancer des images iso directement depuis GRUB 2

Lancement depuis 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		Trusty via GRUB-pc
uuid		70e29811-71a3-4553-a16c-1cce2ff334ed
kernel		/boot/grub/i386-pc/core.img

Rechercher d’autres OS présents sur la machine et les rajouter à GRUB automatiquement

Si le script /etc/grub.d/30_os-prober (voir plus haut) n’a pas trouvé les autres systèmes présents sur la machine, il est possible d’utiliser le logiciel OS-prober pour faire la même chose :

sudo os-prober
sudo update-grub

l semblerait que os-prober ait encore quelques problèmes avec le RAID (Voir ici) et ne fonctionne pas dans ce cas-là.

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 ça marche je vous conseil d’ajouter du rootdelay dans grub.

Pour cela éditer /etc/default/grub pour changer

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

en

GRUB_CMDLINE_LINUX_DEFAULT="rootdelay=40 quiet splash"

Le temps à attendre est à estimer. Une fois la ligne éditée il faut mettre à jour le fichier de config de grub :

sudo update-grub

Maintenant à chaque mise à jour du kernel le rootdelay sera inséré.

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. Une espace mal placée 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 : passage difficile à Grub2

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 ce tutoriel.

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étail 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

1) Super Boot Manager gère aussi les Plymouth


Le contenu de ce wiki est sous licence : CC BY-SA v3.0