Par ebdomino et Fred, le 19/11/2003
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 :
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.
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/
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 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.
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.
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
#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
TODO...
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
TODO ...
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!