Académique Documents
Professionnel Documents
Culture Documents
Introduction
Le projet GRUB2 n'est pas une continuité du projet GRUB, dit « Legacy » mais le développement
d'un nouveau produit. Il vise à une plus grande portabilité sur de nombreuses architectures
matérielles.
Le fichier exécuté au boot du système et qui configure GRUB s'appelle maintenant grub.cfg.
Source : http://grub.enbug.org/grub.cfg.fr
Au chargement de GRUB 2, le fichier grub.cfg est lu. Celui-ci contient toutes les informations
pour que GRUB 2 agisse tel que l'utilisateur le souhaite et construise un menu de chargement.
GRUB 2 utilise un nouveau langage de script, semblable à Bash, afin de générer ce fichier de menu.
Éditer manuellement ce fichier est inutile et non recommandé : il est entièrement reconstruit à
l'aide de plusieurs scripts à chaque exécution de update-grub2 ou de grub-mkconfig. Pour
modifier grub.cfg, modifiez les scripts de génération situés dans le dossier /etc/grub.d ou
les options de GRUB 2 dans /etc/default/grub.
Utilisez les commandes update-grub2 ou grub-mkconfig pour regénérer le menu de GRUB
2 après chaque modification des fichiers de configuration.
Page 1
Le chargeur GRUB2
set boot_once=true
fi
Le fichier /etc/default/grub
Il contient des définitions de variables dont nous devinons aisément qu'elles correspondent aux
anciennes directives globales du fichier menu.lst (« grub.conf »).
Variable Définition
GRUB_DEFAULT Le système qu'il faut charger par défaut. Cela peut être
un nombre, la ligne nommant le système ("ligne
complète") ou "saved" pour charger le dernier système
chargé correctement par grub2.
GRUB_HIDDEN_TIMEOUT Ce paramètre permet de dire combien de temps l'écran
reste sans que le menu soit affiché. Dans cet intervalle,
l'utilisateur peut appuyer sur n'importe quelle touche
pour faire apparaître le menu. Cette option n'est valide
Page 2
Le chargeur GRUB2
Le répertoire /etc/grub.d
Le répertoire /etc/grub.d contient des scripts qui peuvent être personnalisés par l'administrateur pour
ajouter de nouvelles entrées au menu proposé par GRUB. Les scripts sont exécutés dans l'ordre de
leur numérotation. La commande update-grub doit être exécutée après que ce répertoire ait été
modifié.
$ ls
00_header 10_linux 30_os-prober README
05_debian_theme 20_memtest86+ 40_custom
00_header positionne les paramètres de GRUB2 comme le terminal et les valeurs définis dans
/etc/default/grub.
10_linux recherche les systèmes Linux installés. il utilise pour cela le répertoire /boot qui contient
Page 3
Le chargeur GRUB2
# dpkg -l
…
ii linux-image-2.6.32-24-generic 2.6.32-24.43
Linux kernel image for version 2.6.32 on x86
ii linux-image-2.6.32-25-generic 2.6.32-25.45
Linux kernel image for version 2.6.32 on x86
…
# apt-get remove linux-image-2.6.32-24-generic
depmod........
…
DKMS: uninstall Completed.
Running postrm hook script /usr/sbin/update-grub.
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.32-25-generic
Found initrd image: /boot/initrd.img-2.6.32-25-generic
Found memtest86+ image: /memtest86+.bin
Found Windows Recovery Environment (loader) on /dev/sda2
done
The link /vmlinuz.old is a damaged link
Removing symbolic link vmlinuz.old
you may need to re-run your boot loader[grub]
The link /initrd.img.old is a damaged link
Removing symbolic link initrd.img.old
you may need to re-run your boot loader[grub]
40_custom
Dans la distribution Ubuntu, le script 40_custom permet d'ajouter des entrées dans le menu de
GRUB.
$ cat 40_custom
#!/bin/sh
exec tail -n +3 $0
# 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
Page 4
Le chargeur GRUB2
not to change
# the 'exec tail' line above.
La structure d'une entrée à ajouter dans le fichier 40_custom est de la forme :
A sample entry copied from the grub.cfg and altered by the user might look like this:
menuentry "My Default Karmic" {
set root=(hd0,1)
search --no-floppy --fs-uuid --set cb201140-52f8-4449-9a95-749b27b58ce8
linux /boot/vmlinuz-2.6.31-11-generic root=UUID=cb201140-52f8-4449-9a95-
749b27b58ce8 ro quiet splash
initrd /boot/initrd.img-2.6.31-11-generic
}
A sample entry for a hard drive version of SystemRescueCD installed per the instructions on the
web site (on sda8).
menuentry "System Rescue CD" {
set root=(hd0,8)
linux /sysrcd/rescuecd subdir=sysrcd setkmap=us
initrd /sysrcd/initram.igz
}
A sample entry for chainloading to another GRUB bootloader.
menuentry "Grub 1 Bootloader" {
set root=(hd0,8)
chainloader +1
}
Le tableau qui suit présente la totalité des directives possibles dans un menu défini par menuentry. Il
est accessible sur :
http://www.gnu.org/software/grub/manual/html_node/Command_002dline-and-menu-entry-
commands.html#Command_002dline-and-menu-entry-commands
1 Dans GRUB2, la numérotation des disques commencent toujours à 0 mais celles des partitions démarre maintenant à
1.
Page 5
Le chargeur GRUB2
Outre celles déjà rencontrées (linux, initrd, set), nous noterons particulièrement :
insmod Cette commande permet de charger l'un des nombreux modules du répertoire
/boot/grub.
$ ls *mod
915resolution.mod cmp.mod
gcry_arcfour.mod gfxterm.mod ls.mod
part_sun.mod search_label.mod usbms.mod
Page 6
Le chargeur GRUB2
Il faut préalablement créer les noms d'utilisateur pour lesquels vous allez créer le
mot de passe. Cela se fait avec la commande set superusers="user1" (cf. ajout
d'un mot de passe dans un menu).
search Vette commande recherche un périphérique par son nom, son label ou son
UUID.
# update-grub
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.32-25-generic
Found initrd image: /boot/initrd.img-2.6.32-25-generic
Found memtest86+ image: /memtest86+.bin
Found Windows Recovery Environment (loader) on /dev/sda2
done
Page 7
Le chargeur GRUB2
# cat /etc/grub.d/40_custom
#!/bin/sh
exec tail -n +3 $0
# 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.
set superusers="gilles"
password_pbkdf2 gilles
grub.pbkdf2.sha512.10000.E9C5C0818881D3C983D834595D45D2AEE3422
200994C59E4CF716B2C53FC7765BEAB0295900BB1F0CF2FAF3F04D9D0E4396
E483AFEE47DA09EA0AB052D3ED6B2.CBF335AD5CCC7A166AB24E7E40E2AA93
C6396B3359C1769557981647ECD318BD7F8F1ED78961487E812C3B7D2AD277
8099DF8C0BDF296B18338217B34ADAFC2E
menuentry "Ubuntu sur clef bootable" {
insmod ext2
set root=(hd1,2)
search --no-floppy --fs-uuid --set 25b1b64d-f1cb-47cf-9ae3-
e0578d177319
linux /boot/vmlinuz-2.6.32-25-generic root=UUID=25b1b64d-f1cb-
47cf-9ae3-e0578d177319 ro quiet splash
initrd /boot/initrd.img-2.6.32-25-generic
}
Comme dans GRUB Legacy, il n'est possible d'entrer en mode édition pendant le boot qu'après
avoir saisi le nom et le mot de passe défini par set superusers et password_pbkdf2.
Sur l'écran apparaît :
Saisir le nom de l 'utilisateur :
gilles
Saisir le mot de passe :
xxxxx
Références
http://doc.ubuntu-fr.org/grub2
https://help.ubuntu.com/community/Grub2
http://www.gnu.org/software/grub/
https://wiki.ubuntu.com/Grub2
http://www.gnu.org/software/grub/manual/html_node/
Page 8