6.4. Erzeugen der notwendigen Verzeichnisstruktur

Die folgend erzeugte Verzeichnisstruktur ist FHS Konform, die meisten Verzeichnisse werden mit den Rechten 0755 ausgestattet, das bedeutet jeder kann sie lesen und die darin enthaltenen Programme ausführen. Das ist nicht bei allen Verzeichnissen gewünscht weshalb einige mit einer anderen Zugriffsmaske erstellt werden.

mkdir -pv /{bin,boot,etc/opt,home,lib,mnt,opt}
mkdir -pv /{media/{floppy,cdrom},sbin,srv,var}
mkdir -pv -m 0750 /root
mkdir -pv -m 1777 /tmp /var/tmp
mkdir -pv /usr/{,local/}{bin,include,lib,sbin,src}
mkdir -pv /usr/{,local/}share/{doc,info,locale,man}
mkdir -pv /usr/{,local/}share/{misc,terminfo,zoneinfo}
mkdir -pv /usr/{,local/}share/man/man{1..8}
for dir in /usr /usr/local; do
  ln -sv share/{man,doc,info} $dir
done
case $(uname -m) in
  x86_64) ln -sv /lib /lib64
esac
mkdir -pv /var/{lock,log,mail,run,spool}
mkdir -pv /var/{opt,cache,lib/{misc,locate},local}

Einige Programme verwenden einprogrammierte Pfade zu Programmen, die zum jetzigen Zeitpunkt aber noch nicht installiert sind. Deshalb erstellen wir 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 ordentlich 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