Installation de grub

Par ebdomino et Fred, le 19/11/2003

Présentation

GRUB est un remplaçant très puissant pour LILO, le chargeur de démarrage (bootloader natif de linux). Il a l'avantage d'être très flexible et est modifiable de façon temporaire sans modifié ses fichiers de configuration et sans avoir à démarrer préalablement sur un système.
Avec grub, on peut lancer un système en utilisant une interface soit en ligne de commande soit avec des menus.

grub numérote les partitions à partir de 0 (sous la forme (hd0,0)), donc on a dans le cas ou le premier disque installé est en hda et le deuxième en hdb :

Attention, la numérotation se fait en nombre de disque installé ! Il n'y a pas de correspondance entre /dev/hda et hd0 de grub. Si votre premier disque est sur hdc ou hde il sera quand même numéroté hd0

Pour obtenir la liste de vos disque utilisez l'auto-completion, dans le shell avec la touche tabulation : > hd( + tab

On suppose dans ce tutoriel que le disque dur est partitionné ainsi :

Installation

Installation du logiciel

Nous allons prendre ici l'exemple de la debian (ou de knoppix) et de slackware 10.0 :

Pour debian

#apt-get install grub

et pour slackware

#swaret --install grub

C'est tout simple, cela va soit l'installer si vous ne l'aviez pas, soit le mettre à jour.

Copie des fichiers de grub

Vous devez tout d'abord créer un dossier grub dans le répertoire de boot, en root, dans une console :

#mkdir /boot/grub

Ensuite vous copiez dans /boot/grub tous les fichiers contenus dans le répertoire: /usr/lib/grub/i386-pc ou dans les dernières versions de grub /lib/grub/i386-pcet dans slackware /usr/share/grub/i386-pc

#cp -a /usr/lib/grub/i386-pc/* /boot/grub/

ou

#cp -a /lib/grub/i386-pc/* /boot/grub/

ou pour slackware

#cp -a /usr/share/grub/i386-pc/* /boot/grub/

Ainsi que le fichier menu.lst qui se trouve dans: /usr/share/doc/grub/examples

Sur slackware je n'ai pas trouvé de menu.lst :(

#cp -a/usr/share/doc/grub/examples/menu.lst /boot/grub/

Grub dans le mbr

Comme dit au début de ce howto, GRUB numérote les partitions à partir de 0 sous la forme (hd0,0). Donc la partition hda1 devient (hd0,0) et hdb1 (hd1,0) et ainsi de suite.

Dans une console root, vous tapez :

#grub

et vous otenez l'invite suivante :

grub>

Tapez : (ici hda3 est la partition root ou racine(/), donc cette ligne est à adapter)

grub>root (hd0,2)

puis, vous lui indiquez ou il doit s'installer, ici sur le premier disque dur maitre sur le Master Boot Record (première partie du disque servant à dire où il faut démarrer).

grub>setup (hd0)

pour sortir:

grub>quit

et voila si vous n'avez pas eu d'erreur, grub est installé sur votre disque dans le mbr.

Le menu grub

Présentation

Le menu de grub est défini dans le fichier menu.lst que l'on place dans /boot/grub/menu.lst

Il est composé de deux parties :

Nous allons plus particulièrement considérer la partie sur les menus. Pour le reste, vous comprendrez en regardant les exemples que l'on vous propose.

Menu Linux

Tout d'abord regardons comment faire un menu pour Linux.

# For booting GNU/Linux
# Pour démarrer GNU/Linux
title  GNU/Linux
root (hd1,0)
kernel /vmlinuz root=/dev/hdb1
#initrd /initrd.img

Bien sûr ceci est à adapter. Dans le cas de l'exemple ici, nous avons notre partition racine de Knoppix en hda3. Nous allons donc avoir :

# For booting GNU/Linux
# Je decide de le nommer Knoppix plutot que GNU/Linux
title Knoppix
root (hd0,2)
kernel /boot/vmlinuz root=/dev/hda3 3 vga=791 hdc=ide-scsi hdd=ide-scsi apm=power-off
#initrd /initrd.img

Une autre écriture possible serait :

# For booting GNU/Linux
# Je decide de le nommer Knoppix plutot que GNU/Linux
title Knoppix
kernel (hd0,2)/boot/vmlinuz root=/dev/hda3 3 vga=791 hdc=ide-scsi hdd=ide-scsi apm=power-off
#initrd /initrd.img

Vous remarquerez que j'ai passé des options supplémentaires au noyau hdc et hdd sont un graveur et un lecteur de CD. Sous linux pour que la gravure fonctionne bien il est conseillé de les émuler en scsi d'où le ide-scsi.

Dans certains cas, la ligne initrd doit être décommentée (= on enlève le # du début de cette ligne). Ce fut le cas pour une Debian sarge.

Menu Windows

Windows a une façon complètement différente de démarrer. Le menu sera donc bien différent :

# For booting Windows NT or Windows95
# Pour démarrer Windows NT ou Windows95
title Windows NT / Windows 95 boot menu
rootnoverify (hd0,0)
makeactive
chainloader  +1
# For loading DOS if Windows NT is installed
# Pour démarrer DOS si Windows NT est installé
# chainload /bootsect.dos

Bien que dans l'exemple donné dans /usr/share/doc/grub/examples/menu.lst il n'est dit que Windows NT ou Windows 95, cela fonctionne au moins avec Windows 98

Dans notre cas on l'adaptera ainsi :

# Une entrée pour Windows
title Windows
        rootnoverify (hd0,0)
        makeactive
        chainloader +1 

Exemple de menu

#le clavier français :
keytable (hd0,2)/boot/grub/fr-latin1.klt
#temps d'attente de grub au boot :
timeout = 15
#par défaut grub bootera sur la première entrée du fichier :
default =  0
#couleurs de grub :
color light-gray/blue black/light-gray

viewport 3 2 77 22
shade 0

#emplacement d'une image de fond d'écran pour grub (voir lien en fin de document) :
splashimage (hd0,2)/boot/grub/seachair.xpm.gz

# Une entrée pour knoppix (Linux)
title Knoppix
        kernel (hd0,2)/boot/vmlinuz root=/dev/hda3 3 vga=791 hdc=ide-scsi hdd=ide-scsi apm=power-off
# emplacement du noyau de la partition root avec les options à lui donner

# Une entrée pour un deuxième Linux, slackware par exemple, attention n'oubliez pas le ro (read-only).
title Slackware-10.0
        kernel (hd0,4)/boot/vmlinuz-ide-2.4.26 ro root=/dev/hda5 4 vga=791 hdc=ide-scsi hdd=ide-scsi apm=power-off

# Une entrée pour Windows
title Windows
        rootnoverify (hd0,0)
        makeactive
        chainloader +1
	

Personnalisation

Les couleurs

TODO...

Les images de fond

Pour le fun vous pouvez rajouter une image de fond à grub. Vous pouvez télécharger quelques exemples (splashscreen grub) ou créer votre propre image.
Cette image doit être au format xpm en 14 couleurs et avec une résolution de 640x480. Vous pouvez laisser les images compressées avec gzip (extension .xpm.gz) elles seront décompressés par grub.

Pour que votre image s'affiche, il faut rajouter une ligne à menu.lst de la forme :

	splashimage=(hd0,2)/boot/grub/votreimage.xpm.gz

	ou

	splashimage (hd0,2)/boot/grub/votreimage.xpm.gz

Cette ligne se trouve avant la définition des différents choix du menu. Regardez les différents exemples qui vous sont proposés

Mot de passe

TODO ...

En savoir plus...

Pour plus d'information sur GRUB voici une liste de liens :

Howto GRUB
manuel grub
Listes des erreurs possible de grub
Le howto de lea-linux
un howto pour les images

Merci à gégé pour son aide en live lors de l'installation de GRUB sur mon poste (NDLA: ebdomino) et merci à Fred!

version 2 par Eric Barons

Valid XHTML 1.0! Valid CSS!