:: Apinc :: Archilinux :: Fro4nix :: GeexdB :: Gnuworld-fr :: Knoppix-fr ::  Lea-linux :: Linucie ::  Octoz ::  Les pingunautes ::

Purée de Linux

Dernière mise à jour de la page le 26 octobre 2005.

Menu

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)
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à qu'il faudra désigner ici (merci Stéphane).

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 /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.

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

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

Update-grub

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.

Configurer le menu.lst pour avoir les options automatique

Editez votre fichier /boot/grub/menu.lst en root, et recherchez les options suivantes:

Vous ne devez pas les décommenter
# 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:

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

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à.

Ajouter un commentaire

Titre :

Par :
Courriel* :
Site web :

Commentaire :

* Le courriel ne sera pas affiché !

Google

sur :
le Web
Purée de Linux

Ce site devrait être valide XHTML 1.0 | © Purée de Linux