• {0} Easy|{1} Medium|{2} Hard

Free online content available in this course.

You can get support and mentoring from a private teacher via videoconference on this course.

Got it!

Last updated on 11/21/13

Configurez Grub2

Log in or subscribe for free to enjoy all this course has to offer!

Ce chapitre va vous permettre de vous faire la main avec Grub2 et de le configurer à vos envies.
A vos claviers !

Mise au point

Voici d'abord ce que la plupart d'entre vous ont (je dis la plupart car cela peut varier selon vos OS installés) :

Image utilisateur

Un Menu classique de GRUB

Ce n'est pas très accueillant, je vous l'accorde...

Les fichiers à modifier

Le fichier /etc/default/grub (debian)

On commence par ouvrir le fameux fichier (en root bien sur) :

# gedit /etc/default/grub // Pour Gnome
# kate /etc/default/grub // Pour KDE

Citation

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.

GRUB_DEFAULT=0
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT="3"
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entrys
#GRUB_DISABLE_LINUX_RECOVERY="true"

Dans cette couleur bleue, ce sont les commentaires.
Dans cette couleur rouge, ce sont les parties actives qui seront traitées.

Le répertoire /etc/grub.d/ (debian)

La commande ls -al nous renvoie :

total 52
drwxr-xr-x   2 root root  4096 2009-11-09 23:45 .
drwxr-xr-x 169 root root 12288 2009-12-07 17:40 ..
-rwxr-xr-x   1 root root  3296 2009-10-24 02:44 00_header
-rwxr-xr-x   1 root root  1154 2009-10-24 02:31 05_debian_theme
-rwxr-xr-x   1 root root   783 2008-03-04 19:20 06_dell_theme
-rwxr-xr-x   1 root root  3778 2009-10-24 02:44 10_linux
-rwxr-xr-x   1 root root   772 2009-10-23 18:11 20_memtest86+
-rwxr-xr-x   1 root root  5467 2009-10-29 17:21 30_os-prober
-rwxr-xr-x   1 root root   214 2009-10-24 02:44 40_custom
-rw-r--r--   1 root root   483 2009-10-24 02:44 README

A l'exception du README, les autres sont des script bash. La génération du fichier grub.cfg va se passer tout simplement en exécutant l'ensemble de ces scripts dans un ordre croissant, l'ordre étant appliqué sur les numéros XX précédent le caractère _ dans le nom de ces scripts.

  • 00_header : script permettant la génération de l'en-tête du fichier grub.cfg. Cet en-tête est généré principalement à l'aide des informations que vous avez paramétrées dans le fichier /etc/default/grub.

  • 05_debian_theme : script permettant la génération des informations sur le thème graphique du menu de démarrage. À l'heure où j'écris ces lignes, sur Ubuntu 9.10, le thème est minimal : du texte blanc sur un fond noir.

  • 10_linux : script permettant de générer les entrées correspondant à votre système GNU/Linux hôte.

  • 20_memtest86+ : script permettant de générer les entrées memtest.

  • 30_os-prober : script permettant de détecter des nouveaux systèmes lors de la génération du fichier grub.cfg et de générer les entrées correspondantes. Il est normalement capable de détecter les systèmes avec un noyaux Linux, un noyau Hurd, les systèmes Windows et les systèmes Mac OS X.

  • 40_custom : script permettant de générer des entrées introduites manuellement dans ce fichier.

Le fichier /boot/grub/grub.cfg

Alors là, pas touche ! Si vous êtes sur Debian (Ubuntu par exemple), ce fichier est généré automatiquement par Grub après chaque mise à jour de votre part (n'oubliez pas de le faire après les modifications) : sudo update-grub

Sinon, vous pouvez le modifier ; le principe reste le même que plus haut (la syntaxe est un peu différente):

  • (hdn,m) est la partition m du disque n, le numéro du disque commence par zéro (0), les partitions par un (1).

  • set default=n est l'entrée par défaut, qui démarrera automatiquement après le time-out.

  • set timeout=m le temps m m est le temps d'attente avant que le choix par défaut ne démarre.

  • menuentry "str"{options} title string 'str' pour préciser manuellement une entrée du menu et la façon donc elle sera affichée.

  • set root=(hdn,m) définit la partition root (/), là où est installé le noyau.

  • linux /path ro root=/dev/device initrd /initrd.img options pour la partition root, si le noyau n'est pas installé sur la partition / .

  • chainloader +1 permet de passer le relai à un autre bootloader (exemple celui de Windows, nécessaire à son démarrage)

Modification des entrées

Ici, ça ce complique un peu (non, ne partez pas, j'ai dit un peu ! :p )

La ligne de base

Nous allons éditer la ou les lignes commençant par GRUB_DISTRIBUTOR (je n'en ai qu'une, mais je n'exclus pas la possibilité de systèmes un peu plus exotiques ^^ )

Ces lignes vont définir ce qui sera affiché à l'écran suivant les options choisies.

Choisissez parmi les options suivantes :

Citation : Doc

GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` # donne : Ubuntu, Linux 2.6...
#GRUB_DISTRIBUTOR=`lsb_release -d -s 2> /dev/null || echo Debian` # donne : Ubuntu 9.10, Linux 2.6...
#GRUB_DISTRIBUTOR=`echo -n $(lsb_release -cds 2> /dev/null || echo Debian)` # donne : Ubuntu 9.10 karmic, Linux 2.6....

Les autres

Il est aussi possible d'ajouter des entrées "manuellement". Pour cela, éditez le fichier /ect/grub.d/40_custom et ajoutez vos entrées. En effet, tout ce qui est présent dans ce fichier sera recopié tel quel dans le fichier grub.cfg.

Exemple:

Citation : 40_custom

### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.

menuentry "Windows 7" {
set root=(hd0,1)
chainloader +1
}

Protégez Grub2 avec un mot de passe

Protéger automatiquement tous les recovery modes

Le recovery mode est un mode de Linux vous permettant de réparer votre OS en cas de problème et vous offre notamment un shell normal ainsi que plusieurs autres options intéressantes.

Pour le protéger, il vous suffit de dé-commenter cette ligne du fichier /ect/default/grub :

Citation : menu.lst

#GRUB_DISABLE_LINUX_RECOVERY="true" // Enlevez le #

On n'oublie pas de mettre à jour :

$ sudo update-grub

Ainsi Grub ne génèrera plus d'entrée recovery dans son menu. Notez cependant que le jour où vous avez un problème, vous risquez fort de devoir booter sur un Live CD pour la re-commenter.

Protéger entièrement le menu

Vous pouvez également protéger avec un mot de passe tout le menu.
Ce How To m'a été proposé dans les commentaires. Je ne traiterai pas cette partie plus en détail car :

  • je n'aime pas vraiment le concept (devoir sans arrêt taper son mot de passe à chaque démarrage...) ;

  • ces explications, bien qu'en anglais, sont très bien rédigées.

Le démarrage

Citation

GRUB_DEFAULT=0

Surement la plus intéressante : elle vous permet de modifier l'entrée de votre menu sur laquelle vous allez booter automatiquement. La valeur peut être un nombre naturel (définissant la position) ou saved. Ce dernier indique que l'entrée choisie au dernier démarrage sera la prochaine entrée par défaut. Lorsque cette ligne est commentée, la valeur par défaut est 0.

Citation

GRUB_TIMEOUT="5"

Cette ligne précise le nombre de secondes à attendre avant de booter sur le default. La valeur est soit un nombre naturel (secondes), soit -1. Ce dernier indiquera que le menu doit attendre indéfiniment. Précisons que si la valeur est 0, l'entrée par défaut sera bootée instantanément. Lorsque cette ligne est commentée, la valeur par défaut est 5.

Citation

#GRUB_HIDDEN_TIMEOUT=0

Permet de définir si le menu de démarrage doit être affiché ou non. Si ce paramètre est commenté, il sera affiché, sinon, sa valeur est un nombre naturel (secondes). Lequel définit le nombre de secondes à attendre avant de lancer le boot de l'entrée par défaut. Si cette valeur est supérieure à 0, pendant le nombre de secondes définies, vous aurez la possibilité de faire afficher le menu manuellement en appuyant sur Esc par exemple. Notez bien la différence avec le précédent : ici, vous ne verrez pas le menu.

Citation

#GRUB_HIDDEN_TIMEOUT_QUIET=true

Permet de définir si un chronomètre doit être affiché durant les GRUB_HIDDEN_TIMEOUT secondes définies dans le paramètre précédent. Sa valeur est true ou false. Lorsque cette ligne est commentée, la valeur par défaut est false.

Fond d'écran

Plutôt que de faire un vieux plagia, je préfère vous rediriger vers la doc, bien plus complète sur le sujet.

Le lien est le suivant :
http://doc.ubuntu-fr.org/grub-pc#exemple_fond_d_ecran

Notez cependant que ce n'est pas quelque chose d'essentiel, et que la plupart d'entre vous choisiront sûrement de ne pas afficher leur menu du tout.

Pas vraiment de conclusion, les choses vues dans ce chapitres sont assez diverses et variées.

Encore une fois, si vous avez rencontré un problème, vous pourrez vous reporter au chapitre sur les erreurs fréquentes (en cours de rédaction) ou bien poster un message sur les forums (pensez à faire une recherche avant, les forums grouillent de sujets sur les erreurs de Grub) ou encore m'envoyez un MP, je me ferai un plaisir de vous aider ! ;)

Example of certificate of achievement
Example of certificate of achievement