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.