Vorbereiten der Arbeitsumgebung

Um Ihre Arbeitsumgebung für die weiteren Schritte vorzubereiten, erstellen wir zwei Dateien für die Shell bash. Geben Sie als Benutzer lfs das folgende Kommando ein, um die neue Datei .bash_profile zu erzeugen:

cat > ~/.bash_profile << "EOF"
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
EOF

Wenn Sie sich als Benutzer lfs anmelden, ist die erste Shell üblicherweise eine login Shell. Diese liest erst die Datei /etc/profile Ihres Host-Systems ein (sie enthält wahrscheinlich Einstellungen zu Umgebungsvariablen), und danach .bash_profile. Das Kommando exec env -i ... /bin/bash in der zweiten Datei ersetzt die laufende Shell durch eine neue mit einer vollständig leeren Umgebung, ausser der HOME, TERM und PS1 Variablen. Daduch wird sichergestellt, dass keine ungewollten und potentiell gefährlichen Umgebungsvariablen vom Host-System auf unsere Arbeitsumgebung Einfluss nehmen können. Die hier angewendete Technik mag ein wenig befremdlich aussehen, führt aber zu unserem Ziel, nämlich einer absolut leeren Arbeitsumgebung.

Die neue Instanz der Shell ist eine sog. non-login Shell; diese liest weder /etc/profile noch .bash_profile ein. Stattdessen liest sie die Datei .bashrc. Erstellen Sie diese Datei nun:

cat > ~/.bashrc << "EOF"
set +h
umask 022
LFS=/mnt/lfs
LC_ALL=POSIX
PATH=/tools/bin:/bin:/usr/bin
export LFS LC_ALL PATH
EOF

Das Kommando set +h schaltet die Hash-Funktion von bash ab. Normalerweise ist das sogenannte Hashing der Bash eine nützliche Funktion: bash benutzt eine Hash-Tabelle, um sich die Pfade zu ausführbaren Dateien zu merken und so ein ständiges Durchsuchen aller Verzeichnisse zu vermeiden. Jedoch müssen wir alle neu installierten Werkzeuge sofort nutzen können. Durch Abschalten der Hash-Funktion wird für „interaktive“ Kommandos (make, patch, sed, cp und so weiter) immer die neueste verfügbare Version benutzt.

Das Setzen der Dateierzeugungs-Maske auf 022 stellt sicher, dass neu erzeugte Dateien nur durch ihren Besitzer beschreibbar sind, aber für alle anderen les- und ausführbar.

Die LFS-Variable sollte natürlich auf den von Ihnen gewählten Mountpunkt der LFS-Partition gesetzt sein.

Die Variable LC_ALL beeinflusst die Lokalisierung einiger Programme, so dass deren Ausgaben den Konventionen des entsprechenden Landes folgen. Wenn Ihr Host-System eine ältere Glibc Version als 2.2.4 verwendet, könnte es Probleme geben, wenn LC_ALL nicht auf „POSIX“ oder „C“ gesetzt ist. Durch Setzen von LC_ALL auf „POSIX“ oder „C“ (die beiden Werte haben die gleiche Wirkung) sollte es beim Hin- und Herwechseln in der chroot-Umgebung keine Probleme geben.

Wir stellen /tools/bin an den Anfang der PATH Variable, so dass wir beim Durcharbeiten dieses Kapitels die erstellten Werkzeuge und Programme auch automatisch benutzt, sobald sie verfügbar sind.

Um die Arbeitsumgebung endgültig fertig zu stellen, muss das gerade erzeugte Profil eingelesen werden:

source ~/.bash_profile