Normalement, lorsque le noyau a terminé de se charger et d'initialiser
divers composants systèmes, il tente de charger un programme appelé init
qui
terminera le processus de démarrage. Le paquetage utilisé sur la majorité sinon
tous les systèmes Linux est Sysvinit et c'est justement lui que nous utilisons
pour notre système LFS.
Makefile
/dev
des quatre dernières lignes par $(ROOT)Après avoir fait cela, les quatre dernières lignes du fichier doivent ressembler à :
@if [! -p $(ROOT)/dev/initctl ]; then \ echo "Creating $(ROOT)/dev/initctl"; \ rm -f $(ROOT)/dev/initctl; \ mknod -m 600 $(ROOT)/dev/initctl p; fi
make -e LDFLAGS=-static; make install
Pour que Sysvinit fonctionne, vous devez créer un fichier de configuration
approprié. Créez le fichier $LFS/etc/inittab
contenant :
# Begin /etc/inittab id:2:initdefault: ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now 1:2345:respawn:/sbin/sulogin # End /etc/inittab
Comme vous pouvez le voir dans le fichier inittab
, lorsque nous amorçons
le système, init
démarre le programme sulogin qui vous demandera le mot de
passe root. Cela signifie que nous avons besoin de créer un fichier de mots
de passe sur le système LFS.
$LFS/etc/passwd
contenant: root:s394ul1Bkvmq2:0:0:root:/root:/bin/bash $LFS/etc/group
contenant: root::0: Le mot de passe encodé dans le fichier passwd
est: lfs123
Lorsque le système vous demandera le mot de passe root, c'est celui-ci que vous devez entrer.
Après que sulogin
ait validé le mot de passe root, il tentera de lancer
un interpréteur de commandes (plus simplement appelé shell), généralement Bash.
Nous devons donc le compiler. Mais comme aucune bibliothèque n'est encore disponible
sur le système, nous devons le lier statiquement, ainsi que nous avons procédé
pour Sysvinit.
./configure --enable-static-link make; make -e prefix=$LFS/usr install mv $LFS/usr/bin/bash $LFS/bin cd $LFS/bin; ln -s bash sh
Afin de pouvoir démarrer le système LFS, nous devons mettre à jour le fichier/etc/lilo.conf
. Ajoutez-y les lignes suivantes :
image=<image du noyau courant> label=<label> root=$LFS read-only
Remplacez <image du noyau courant> par le nom du fichier contenant l'image du noyau utilisé par votre système. Vous pouvez remplacer <label> par ce que bon vous semble. Pour ma part, j'utilise comme label "lfs". Ce label correspond à ce que vous devez taper au démarrage de la machine lorsque LILO vous demande le système que vous souhaitez démarrer.
Maintenant lancez lilo
afin de mettre à jour l'amorceur du système.
Après avoir effectué les opérations précédentes, vous pouvez vérifier s'il
est possible de se connecter au système LFS en redémarrant la machine. N'oubliez
pas à l'affichage de LILO de taper le label que vous avez choisi plus haut.
Si tout se déroule correctement, sulogin
vous demandera le mot de passe root.
Saisissez-le. Vous devriez alors vous retrouver sous le shell. Remarquez que
vous ne pourrez pas arrêter le système par l'intermédiaire de la commande shutdown
.
Bien que ce programme soit présent, il vous renverra comme erreur "You don't
exist. Go away" si vous essayez de l'exécuter. Cela signifie que le système
est incapable de localiser le fichier des mots de passe (/etc/passwd
). Sulogin
,
bien que statiquement lié, dépend quand même de la bibliothèque NSS (Name Server
Switch) qui fait partie de la bibliothèque C que nous installerons ultérieurement.
La bibliothèque NSS est utilisée dans ce cas pour indiquer à sulogin
où se
trouve le fichier de mots de passe.
Pour le moment, vous pouvez redémarrer le système en utilisant reboot -f
. Cette commande outrepassera le redémarrage du système normalement opéré par
shutdown
et redémarrera instantanément. Comme le système de fichiers est monté
en lecture seule, cette opération n'endommagera rien. Par contre vous pourriez
être informé au prochain démarrage que le système de fichiers n'a pas été correctement
démonté et qu'il faut lancer e2fsck
pour vérifier s'il n'y a pas de problème.