6.6. Erstellen notwendiger Dateien und symbolischer Verknüpfungen

Einige Programme verwenden einprogrammierte Pfade zu Programmen, die zum jetzigen Zeitpunkt aber noch nicht installiert sind. Deshalb erstellen Sie eine Reihe symbolischer Links, die im weiteren Verlauf des Kapitels beim Installieren der restlichen Software durch echte Dateien ersetzt werden:

ln -sv /tools/bin/{bash,cat,echo,grep,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

Ein korrekt eingerichtetes Linux hält in /etc/mtab eine Liste der derzeit eingebundenen Dateisysteme vor. Ist die Datei nicht vorhanden, so wird sie beim ersten Einbinden eines Dateisystems automatisch erzeugt. Da wir aber innerhalb der chroot-Umgebung keine Dateisysteme einbinden werden, müssen wir die Datei selbst erstellen, weil einige Programme deren Vorhandensein voraussetzen:

touch /etc/mtab

Damit root sich am System anmelden kann und damit der Name „root“ der richtigen Benutzer-ID zugeordnet werden kann, müssen die entsprechenden Einträge in /etc/passwd und /etc/group vorhanden sein.

Erzeugen Sie /etc/passwd mit dem folgenden Kommando:

cat > /etc/passwd << "EOF"
root:x:0:0:root:/root:/bin/bash
nobody:x:99:99:Unprivileged User:/dev/null:/bin/false
EOF

Das tatsächliche Passwort für root (Das „x“ ist hier nur Platzhalter) wird erst später gesetzt.

Erstellen Sie /etc/group mit dem folgenden Kommando:

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:
uucp:x:10:
audio:x:11:
video:x:12:
utmp:x:13:
usb:x:14:
cdrom:x:15:
mail:x:34:
nogroup:x:99:
EOF

Die erzeugten Gruppen sind nicht Teil irgendeines Standards — es sind die Gruppen, die Udev in diesem Kapitel benutzt. Neben der Gruppe root mit der GID 0 schlägt die LSB (Linux Standard Base) nur die Gruppe bin mit der GID 1 vor. Alle anderen Gruppennamen und GIDs können durch den Anwender frei gewählt werden, weil gut geschriebene Pakete sich nicht auf GID-Nummern verlassen sollten, sondern den Gruppennamen verwenden.

Die Meldung „I have no name!“ werden Sie los, indem Sie eine neue Shell starten. Die Auflösung der Benutzer- und Gruppennamen funktioniert sofort nach dem Erstellen von /etc/passwd und /etc/group, weil Sie in Kapitel 5 eine vollständige Glibc installiert haben:

exec /tools/bin/bash --login +h

Beachten Sie die Option +h. Durch sie wird das interne Pfad-Hashing der Bash abgeschaltet. Ohne diese Anweisung würde sich bash die Pfade zu ausführbaren Dateien merken und wiederverwenden. Weil die frisch installierten Programme aber sofort nach deren Installation an ihrem neuen Ort genutzt werden sollen, schalten Sie die Funktion für dieses Kapitel aus.

Die Programme login, agetty, und init (und einige weitere) verwenden Logdateien zum Protokollieren von Informationen. Dazu gehört z. B. wer sich zu welcher Zeit an das System angemeldet hat. Diese Programme protokollieren aber nur, wenn die entsprechenden Logdateien bereits existieren. Daher müssen Sie die Logdateien nun anlegen und die richtigen Recht vergeben:

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

Die Logdateien haben folgenden Zweck: /var/run/utmp protokolliert zur Zeit angemeldete Benutzer. /var/log/wtmp protokolliert alle An- und Abmeldungen. /var/log/lastlog protokolliert die letzte Anmeldung für jeden Benutzer. /var/log/btmp protokolliert fehlgeschlagene Anmeldeversuche.