Rendre le système LFS amorçable

Votre nouveau système LFS est pratiquement fini. Une des dernières choses à faire est de vous assurer que vous pouvez le démarrer. Les instructions ci-dessous s'appliquent seulement aux ordinateurs de l'architecture IA-32, c'est-à-dire les PC standards. Des informations sur le « chargement au démarrage » pour les autres architectures devraient être disponibles aux emplacements habituelles des ressources pour ces architectures.

Le chargement au démarrage est un domaine complexe. Tout d'abord, quelques mots de mise en garde. Vous devez vraiment connaitre votre chargeur actuel et tout autre système d'exploitation présent sur votre disque dur que vous souhaitez pouvoir lancer. Assurez-vous d'avoir une disquette de démarrage de façon à pouvoir réparer votre ordinateur si, par malheur, votre ordinateur devenait inutilisable (non amorçable).

Plus tôt, nous avons compilé et installé le chargeur de démarrage Grub pour cette étape. La procédure implique l'écriture de quelques fichiers spéciaux de Grub en des endroits spécifiques sur le disque dur. Avant d'en arriver là, nous vous recommandons fortement de créer une disquette de démarrage Grub au cas où. Insérez une disquette de démarrage 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, nous allons lancer 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. Ceci signifie, par exemple, que la partition hda1 est (hd0,0) pour Grub alors que hdb2 est (hd1,1). Contrairement à Linux, Grub ne considère pas les lecteurs de CDRoms comme des disques durs, donc si vous avez un CD sur hdb, par exemple, 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, nous supposerons que votre partition root (ou votre partition séparée) est hda4.

Tout d'abord, indiquez à Grub où chercher ses fichiers stage{1,2} -- vous pouvez utiliser la touche tabulation partout pour que Grub vous affiche les alternatives :

root (hd0,3)
[Warning]

Warning

La commande suivante écrasera votre chargeur de démarrage actuel. Ne lancez pas cette commande si ce n'est pas ce que vous voulez. Par exemple, vous pourriez utiliser un gestionnaire de démarrage autre 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 cette prochaine commande deviendrait : setup (hd0,3).

Ensuite, 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 :

quit

Maintenant, nous avons besoin de créer un fichier « liste de menus » définissant le menu de démarrage de Grub :

cat > /boot/grub/menu.lst << "EOF"
# Début de /boot/grub/menu.lst

# Par défaut, lance la première entrée du menu.
default 0

# Attends 30 secondes avant de lancer le noyau par défaut.
timeout 30

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

# La première entrée concerne LFS.
title LFS 5.1.1
root (hd0,3)
kernel --no-mem-option /boot/lfskernel root=/dev/hda4
EOF
[Note]

Note

Par défaut, Grub passera automatiquement un argument « mem=xxx » au noyau. Néanmoins, Grub obtient occasionellement une mauvaise taille mémoire, ce qui peut causer des problèmes dans certaines circonstances. Il est préférable de désactiver cette fonctionnalité et de laisser le noyau déterminer la taille mémoire lui-même, d'où l'utilisation de --no-mem-option ci-dessus.

Vous pouvez souhaiter ajouter une entrée pour votre distribution hôte. Cela pourrait ressembler à ceci :

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

De même, s'il vous arrive de lancer Windows, 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 vous dit pas tout ce que vous souhaitez savoir, vous pouvez trouver plus d'informations concernant Grub sur son site web, situé sur http://www.gnu.org/software/grub/.