Table des matières

Grub

Présentation

Grub (acronyme de GRand Unified Bootloader) est un programme de multiboot, libre, au même titre que Lilo (Linux loader), qui permet de choisir au démarrage de son ordinateur entre plusieurs systèmes d'exploitation.

Ses avantages sont notamment la gestion d'autres systèmes que Linux et Windows (utile pour Hurd, Solaris, FreeBSD et OpenBSD), la lecture de la configuration au boot (pas besoin de réinstaller GRUB dans le secteur de boot après un changement de configuration, contrairement à LILO), une ligne de commande permettant de changer la configuration au boot et surtout la reconnaissance en natif des divers systèmes de fichiers existants. Il possède également une sorte de langage de commande simple permettant de « rattraper » un boot qui se serait mal passé, suite au mauvais adressage d'une partition, par exemple.

Grub doit bien entendu être capable de reconnaître tous les systèmes de fichiers sur lesquels il pourrait être amené à booter. Il est pour cette raison beaucoup plus gros que LILO.

Il fait partie du projet GNU.

Fonctionnalités

Les options et commandes de Grub

En règle générale vous n'aurez qu'un fichier à modifier pour changer votre Grub. Inutile de dire que ce fichier est très important et que si vous n'êtes pas sûr de votre modification il vaut mieux enregistrer l'original sous un autre nom (évitez de le nommer oldmenu.lst) avant de faire votre modification et ce même si linux en fait une copie automatique sous le nom oldmenu.lst !!

ce fichier c'est : MENU.LST

Il se trouve dans le répertoire : /BOOT/GRUB/

Root

Sert à monter le disque dur et à activer une partition pour la démarrer , il faut lui spécifier quel disque démarrer en spécifiant quel disque ( hd + n°) puis quelle partition (son n°) exemple :

 (hd1,0)

Boot

Cette commande permet de lancer à proprement parler le système d'exploitation, en fait elle lance le noyau linux qui avait été préalablement chargé par la commande Kernel ou par celle de chainloader.

Kernel

Cette commande est la plus importante, en effet c'est elle qui va se charger de configurer les options définies pour votre noyau, indiquer son chemin et le charger temporairement en mémoire, la commande boot servant simplement à le lancer. Il est primordial de spécifier le chemin du noyau avec la commande root.

exemple de commande :

 kernel /boot/vmlinuz-2.6.21-1.3194.fc7 ro root=LABEL=/ rhgb quiet 

elle peut revêtir des formes plus complexes ; exemple ici de ma Suse 10.3 :

 Kernel /boot/vmlinuz-2.6.22.9-0.4-default root=/dev/disk/by-id/scsi-SATA_WDC_WD740GD-00FWD-WMAKE1689174-part1 vga=0x346 resume=/dev/sdb2 splash=silent showopts 

initrd

FIXME

Initrd (INITial RamDisk) est une image d'un système minimal initialisé au démarrage du système.

Ce fichier utilise le système de fichier cramFS (système de fichier compressé au format gzip et archivé via cpio), ensuite l'image est chargée en mémoire vive et permet ainsi d'avoir un système minimal pouvant ensuite charger le système de fichier principal ou bien des systèmes sans disque (“diskless”).

Initrd est utilisé par exemple sur Debian et Ubuntu.

rootnoverify

Sert à activer une partition mais ne la monte pas dans le système (contrairement à la commande root). C'est cette option que l'on utilise pour monter des systèmes Windows.

par exemple :

 rootnoverify (hd1,0)

Chainloader

Cette commande ne s'utilise qu'avec un OS de type Windows ( xp, vista, dos ). Sa fonction est de charger les blocs de fichier contenus dans un chargeur de démarrage secondaire. Il faut impérativement la combiner avec la commande rootnoverify.

elle s'utilise de la façon suivante :

 chainloader +1

title

Vous pouvez mettre ce que vous voulez. Il s'agit en fait du nom qui apparaîtra dans le Grub comme par exemple “ma distro Linux préférée”. En règle générale on indique le nom du système (exemple : vista, xp, frugal, ubuntu, suse, fedora …) et éventuellement la version du noyau. Bien évidemment on ne met qu'un nom par ligne et on crée autant de lignes qu'il y a d'options de démarrage ou de systèmes installés. La seule fonction de la commande title est d'afficher le nom dans Grub.

 title Fedora (2.6.21-1.3194.fc7) 

defaut

Ne doit être présent que sur l'une des lignes du Grub, cette commande sert à indiquer à Grub la distribution à booter par défaut en cas d'inaction de votre part, elle doit être combinée à la commande timeout.

s'utilise comme cela :

 defaut=0 

timeout

Indique le temps en secondes avant de lancer le système d'exploitation ou distribution choisi par la commande defaut. Il suffit de mettre par exemple :

 timout 8 

hiddenmenu

Sert à masquer les autres choix du menu Grub et ne fait apparaître que celui possédant la mention defaut. Cette option étant activée par défaut sur les distributions Fedora notamment.

Splashimage

Spécifie l'utilisation d'une image pour afficher le Grub, il faut lui indiquer l'emplacement de cette image. Dans l'exemple ci-dessous on lui indique le disque et la partition (hd1,0) et le chemin jusqu'à l'image /boot/grub/ et enfin le nom de votre image splash.xpm.gz :

 splashimage=(hd1,0)/boot/grub/splash.xpm.gz 

L'image utilisée doit avoir les caractéristiques suivantes :

Pour convertir une image dans ce format rien de plus simple :

 convert -size 1200x1024 monimage.jpg -resize 640x480 -colors 15 -profile '*' splash.xpm $ 
 gzip splash.xpm

à noter qu'il faut indiquer la taille initiale de votre image (ici 1200*1024) et son nom (ici monimage.jpg)

Avec Gimp

Dans Gimp faites un clic gauche sur votre image et pressez les touches ALT + I, mettez le chiffre 14, cochez “générer une palette optimisée” dans le haut du menu. Si la combinaison de touche Alt+I ne fonctionne pas, faites un clic droit sur l'image et allez dans le menu image ⇒ mode ⇒ Indexed et spécifiez 14 couleurs et puis sélectionnez NO DITHERING (recommandé). Ceci va demander à Gimp de ne pas essayer de deviner les couleurs de transition. il vous est aussi possible de spécifier les couleurs pour la palette de 14, en fait j'ai dû le faire pour une de mes images et j'ai remplacé une couleur sombre par une couleur claire. :) et Gimp secoue !

Exemple d'un fichier menu.lst

 #boot=/dev/sdb1 
  default=0 
  timeout=5 
  splashimage=(hd1,0)/boot/grub/splash.xpm.gz 
  hiddenmenu 
  title Fedora (2.6.21-1.3194.fc7) 
root (hd1,0) 
kernel /boot/vmlinuz-2.6.21-1.3194.fc7 ro root=LABEL=/ rhgb quiet 
initrd /boot/initrd-2.6.21-1.3194.fc7.img 
  title windows vista
rootnoverify (hd0,0) 
chainloader +1

Liens

de bon tuto sur Grub et son install

le manuel de Grub en français

site officiel de Grub en anglais

cd super Grub pour réparer Grub

guide en anglais pour créer des Grub

Grub 2 site officiel en anglais

grub2 Nouvelle version du chargeur d'amorçage.