8.4. GRUB-0.97

Le paquet Grub contient un chargeur de démarrage, le GRand Unified Bootloader.

Temps de construction estimé : 0.2 SBU
Espace disque requis : 10.2 Mio

8.4.1. Installation de GRUB

Votre système LBS flambant neuf est pratiquement fini. Une des dernières choses à faire est de vous assurer que le système peut démarrer correctement.

[Attention]

Attention

Ce paquet ne se compilera que pour les architectures x86 et x86_64 contenant des bibliothèques 32 bits. Si vous choisissez de construire sur x86_64 sans bibliothèques 32 bits (pas de multilib), vous devez utiliser LILO à la place. Des informations sur le « chargement de démarrage » pour d'autres architectures devraient être disponibles aux endroits habituels spécifiques à ces architectures

Ce paquet est connu pour avoir des soucis quand les options d'optimisation par défaut (en incluant les options -march et -mcpu) sont sont modifiées. Donc, si des variables d'environne qui surchargent les optimisations par défaut, telles que CFLAGS et CXXFLAGS, supprimez cette initialisation pour la construction de GRUB.

Commencez par appliquer le correctif suivant pour mieux détecter les lecteurs, corriger des problèmes de GCC 4.x, et fournir un meilleur support SATA pour certains contrôleurs de disque :

patch -Np1 -i ../grub-0.97-disk_geometry-1.patch

Par défaut, GRUB ne supporte pas les systèmes de fichier ext2 avec des nœuds 256-byte. Corrigez cela en appliquant le correctif suivant :

patch -Np1 -i ../grub-0.97-256byte_inode-1.patch

Préparez la compilation de Grub :

./configure --prefix=/usr

Compilez le paquet mais utilisez des drapeaux d'optimisation personnalisés pour empêcher une erreur levée lors des routines de test :

make CFLAGS="-march=i486 -mtune=native -Os"

Pour tester les résultats, lancez :

make check

Installez le paquet :

make install
mkdir -v /boot/grub
cp -v /usr/lib/grub/i386-pc/stage{1,2} /boot/grub

Remplacez i386-pc par le répertoire adéquat pour le matériel utilisé.

Le répertoire i386-pc contient aussi un certain nombre de fichiers *stage1_5, différents suivant les différents systèmes de fichiers. Jetez un œil aux fichiers disponibles et copiez les bons dans le répertoire /boot/grub. La plupart des utilisateurs copieront les fichiers e2fs_stage1_5 et/ou reiserfs_stage1_5

8.4.2. Configuration de GRUB

Le chargement au démarrage est un domaine complexe. Tout d'abord, quelques mots de mise en garde sont nécessaires. Vous devez vraiment connaître le chargeur actuel et tout autre système d'exploitation présent sur le disque dur amorçable. Assurez-vous d'avoir une disquette de démarrage de façon à pouvoir « sauver » l'ordinateur si, par malheur, celui-ci devenait inutilisable (non amorçable).

La procédure implique d'écrire quelques fichiers GRUB spéciaux à des endroits spécifiques sur le disque dur. Nous vous recommandons fortement de créer une disquette de démarrage GRUB de sauvegarde. Insérez une disquette vierge et lancez les commandes suivantes :

dd if=/boot/grub/stage1 of=/dev/fd0 bs=512 count=1
dd if=/boot/grub/stage2 of=/dev/fd0 bs=512 seek=1

Enlevez la disquette et rangez-la dans un endroit sûr. Maintenant, lancez le shell grub :

grub

Grub utilise sa propre structure de nommage des disques et partitions, de la forme (hdn,m), où n est le numéro du disque dur et m le numéro de la partition, tout deux commençant à zéro. Par exemple, la partition hda1 est (hd0,0) pour GRUB et hdb3 est (hd1,2). Contrairement à Linux, Grub ne considère pas les lecteurs de CDRoms comme des disques durs. Par exemple, si un CD se trouve sur hdb et un second disque dur sur hdc, ce dernier disque sera malgré tout (hd1).

En utilisant les informations ci-dessus, déterminez la désignation appropriée pour votre partition root (ou votre partition de démarrage si celle que vous utilisez est séparée). Pour l'exemple suivant, il est supposé que votre partition root (ou votre partition séparée) est hda4.

Indiquez à Grub où chercher ses fichiers stage{1,2}. La touche tabulation est utilisable partout pour que Grub vous affiche les alternatives :

root (hd0,3)
[Avertissement]

Avertissement

La commande suivante écrasera votre chargeur de démarrage actuel. Ne lancez pas cette commande si ce n'est pas désiré, par exemple, lors de l'utilisation d'un autre gestionnaire de démarrage pour gérer votre MBR (Master Boot Record). Dans ce cas, il serait probablement plus sensé d'installer Grub dans le « secteur de boot » de la partition LFS, auquel cas la prochaine commande deviendrait : setup (hd0,3).

Indiquez à Grub de s'installer dans le MBR de hda :

setup (hd0)

Si tout va bien, Grub indiquera avoir trouvé ses fichiers dans /boot/grub. C'est tout ce qu'il y a à faire. Quittez le shell grub :

quit

Créez un fichier « liste de menus » définissant le menu de démarrage de Grub :

cat > /boot/grub/menu.lst << "EOF"
# Begin /boot/grub/menu.lst

# démarre la première entrée du menu.
default 0

# Attend 30 secondes avant de démarrer l'entrée par défaut.
timeout 30

# Utilise de jolies couleurs.
color green/black light-green/black

# La première entrée est pour LFS.
title LFS 6.5
root (hd0,3)
kernel /boot/lfskernel-2.6.30.2 root=/dev/hda4
EOF

Ajoutez une entrée pour votre distribution hôte si vous le souhaitez. Cela pourrait ressembler à ceci :

cat >> /boot/grub/menu.lst << "EOF"
title Red Hat
root (hd0,2)
kernel /boot/kernel-2.6.5 root=/dev/hda3
initrd /boot/initrd-2.6.5
EOF

Dans le cas d'une machine avec plusieurs systèmes d'exploitation, l'entrée suivante devrait le permettre :

cat >> /boot/grub/menu.lst << "EOF"
title Windows
rootnoverify (hd0,0)
chainloader +1
EOF

Si info grub ne fournit pas toutes les données nécessaires, plus d'informations concernant Grub sont disponibles sur le site web, situé sur http://www.gnu.org/software/grub/.

Le FHS stipule que le fichier menu.lst de GRUB doit être un lien symbolique vers /etc/grub/menu.lst. Pour satisfaire ce pré-requis, lancez la commande suivante :

mkdir -v /etc/grub
ln -sv /boot/grub/menu.lst /etc/grub

8.4.3. Contenu de GRUB

Programmes installés: grub, grub-install, grub-md5-crypt, grub-set-default, grub-terminfo et mbchk

Descriptions courtes

grub

Le shell de commande pour Grub (Grand Unified Bootloader)

grub-install

Installe GRUB sur le périphérique spécifié

grub-md5-crypt

Chiffre un mot de passe au format MD5

grub-set-default

Paramètre l'entrée de démarrage par défaut pour GRUB

grub-terminfo

Génère une commande terminfo à partir d'un nom terminfo. Il est utilisable si vous avez un terminal non usuel

mbchk

Vérifie le format d'un noyau multi-boot