:: Apinc :: Archilinux :: Fro4nix :: GeexdB :: Gnuworld-fr :: Knoppix-fr :: Lea-linux :: Linucie :: Octoz :: Les pingunautes ::
Dernière mise à jour de la page le 26 octobre 2005.
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
#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 /boot/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 /boot/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
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
la commande update-grub,ici détaillée sous debian, permet la mise à jour automatique du menu.lst lors de l'installation d'un nouveau noyau (comme pour lilo). N'ayant pas eu affaire à d'autres distributions, toute contribution sera bénéfique.
Mais update-grub ne fait que ça, avec un menu.lst bien configuré, et des fichiers bien nommés, toutes les options que vous passez en argument au noyau peuvent être remises automatiquement, ainsi (si il est bien nommé) que l'attribution automatique d'un initrd.
Editez votre fichier /boot/grub/menu.lst en root, et recherchez les options suivantes:
# kopt=root=/dev/hda7 ro devfs=nomount vga=791 splash=silent max_scsi_luns=15
La ligne kopt vous permet de passer des options en append au boot:
root=/dev/hdxn indiquez ici l'emplacement ou grub doit chercher sa configuration (le même que dans la ligne concernant le noyau root=/dev/hdxn.
ro devfs=nomount vga=791 splash=silent max_scsi_luns=15 indiquez ici à la suite, toutes les options que vous passez en append au noyau
périphérique par défaut
Pour définir le périphérique root par défaut pour le système principal (root (hdn1,n2) ), nous utilisons l'options groot.
# groot=(hd0,6)
A adapter à votre système
initrd inclu automatiquement
Pour avoir un initrd directement inclu lors de la mise à jour du menu.lst, celui-ci doit porter le même nom que votre noyau:
- si votre noyau s'appelle vmlinuz-2.6.11.6 l'initrd doit s'appeller initrd-2.6.11.6
C'est tout et bien sur se trouver dans /boot
Automatisation du processus
Pour mettre à jour grub, vous tapez donc en root, update-grub apres la mise à jour du noyau. Il ajoute au début le nouveau noyau, et garde en dessous l'ancien.
Pour que cela se fasse seul apres l'installation, vous devez ajouter dans : /etc/kernel-img.conf
postinst_hook = /sbin/update-grub
postrm_hook = /sbin/update-grub
do_bootloader = no
Pour plus d'informations sur les autres options: man update-grub
Mot de passe
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
Encore de la doc et des images.
Merci à gégé pour son aide en live lors de l'installation de GRUB sur mon poste (NDLA: ebdomino) !
Commentaires
Ajouter un commentaire
Ce site devrait être valide XHTML 1.0 | © Purée de Linux
commande root n'est pas forcement OS root!
Message posté par Stéphane le 2004-11-11 à 18:57:48
La commande root sert à indiquer à GRUB sur quel hdd/partition il pourra trouver ses fichier-images, ce sera sa racine à lui.
Sur un système Linux installé sur une seule partition, cette information sera la meme que celle du root de l'OS. Mais sur un système où le répertoire /boot est sur une autre partition, ce sera cette partition là.