Certains programmes stockent en dur des chemins vers des programmes qui n'existent pas encore. Pour satisfaire ces programmes, créez un certain nombre de liens symboliques qui seront remplacés par les vrais fichiers tout au long de ce chapitre une fois que tous les logiciels seront installés :
ln -sv /tools/bin/{bash,cat,echo,pwd,stty} /bin ln -sv /tools/bin/perl /usr/bin ln -sv /tools/lib/libgcc_s.so{,.1} /usr/lib ln -sv /tools/lib/libstdc++.so{,.6} /usr/lib ln -sv bash /bin/sh
Un bon système Linux garde une liste des systèmes de fichiers montés
dans le fichier /etc/mtab
. Normalement,
ce fichier est créé quand un nouveau système de fichiers est monté.
Comme nous ne monterons aucun système de fichiers dans notre
environnement chroot, créez un fichier vide pour les utilitaires qui
s'attendent à la présence de /etc/mtab
:
touch /etc/mtab
Afin que l'utilisateur root
puisse
s'identifier et que le nom « root » soit reconnu, il doit y avoir des entrées
cohérentes dans les fichiers /etc/passwd
et /etc/group
.
Créez le fichier /etc/passwd
en lançant
la commande suivante :
cat > /etc/passwd << "EOF"
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/dev/null:/bin/false
nobody:x:99:99:Unprivileged User:/dev/null:/bin/false
EOF
Le mot de passe actuel pour root
(le
« x » utilisé est seulement un
exemple) sera paramétré plus tard.
Créez le fichier /etc/group
en
exécutant la commande suivante :
cat > /etc/group << "EOF"
root:x:0:
bin:x:1:
sys:x:2:
kmem:x:3:
tty:x:4:
tape:x:5:
daemon:x:6:
floppy:x:7:
disk:x:8:
lp:x:9:
dialout:x:10:
audio:x:11:
video:x:12:
utmp:x:13:
usb:x:14:
cdrom:x:15:
mail:x:34:
nogroup:x:99:
EOF
Les groupes créés ne font partie d'aucun standard—ce sont des
groupes décidés en partie en fonction des besoins de la configuration
de Udev dans ce chapitre, et en partie par la coutume utilisée par un
certain nombre de distributions Linux existantes. La base linux
standard (Linux Standard Base ou LSB, disponible sur http://www.linuxbase.org)
recommande seulement cela, ainsi que la présence d'un groupe
root
(GID 0) et d'un groupe
bin
(GID 1). Tous les autres noms de
groupe et GID peuvent être librement choisis par l'administrateur du
système puisque les programmes bien écrits ne dépendent pas des
numéros GID, mais utilisent plutôt le nom du groupe.
Pour supprimer l'invite « I have no
name! », démarrez un nouveau shell. Comme nous avons
installé une Glibc complète dans le Chapitre
5 et créé les fichiers /etc/passwd
et /etc/group
, la résolution du nom
d'utilisateur et de groupe fonctionnera à présent :
exec /tools/bin/bash --login +h
Remarquez l'utilisation du paramètre +h
. Il dit à bash de ne pas utiliser son hachage
de chemin interne. Sans ce paramètre, bash se rappelerait des chemins
vers les binaires qu'il a exécutés. Pour s'assurer que les binaires
nouvellement compilés seront utilisés dès qu'ils seront installés, le
paramètre +h
sera utilisée
durant toute le chapitre.
Les programmes login, agetty, et init (et d'autres) utilisent un nombre de journaux applicatifs pour enregistrer des informations comme qui s'est connecté sur le système et quand. Mais ces programmes n'écriront pas vers ces journaux s'ils n'existent pas. Initialisez les journaux et donnez-leur les bons droits :
touch /var/run/utmp /var/log/{btmp,lastlog,wtmp} chgrp -v utmp /var/run/utmp /var/log/lastlog chmod -v 664 /var/run/utmp /var/log/lastlog
Le fichier /var/run/utmp
enregistre les
utilisateurs qui sont actuellement connectés. Le fichier /var/log/wtmp
enregistre toutes les connexions et
les déconnexions. Le fichier /var/log/lastlog
enregistre quand chaque
utilisateur s'est connecté pour la dernière fois. Le fichier
/var/log/btmp
enregistre les tentatives
de connexion échouées.