Um Ihre Arbeitsumgebung für die weiteren Schritte vorzubereiten
erstellen Sie zwei Dateien für die 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 meistens 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, mit Ausnahme der Variablen
HOME
, TERM
und
PS1
. 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 wirken, führt aber
zu unserem Ziel: einer absolut reinen Arbeitsumgebung.
Die neue Instanz der Shell ist eine Nicht-Login-Shell; diese liest weder
/etc/profile
noch .bash_profile
ein. Stattdessen liest sie die Datei
.bashrc
, erstellen Sie sie 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 der 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 vermeidet auf diese Weise ein ständiges Durchsuchen aller Ordner. Beim Bau von LFS müssen Sie jedoch 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 (umask) auf 022 bewirkt, dass
neu erzeugte Dateien nur durch ihren Besitzer beschreibbar sind, aber
für alle anderen les- und ausführbar (wenn der Systemaufruf
open(2)
die üblichen Datei-Modi
benutzt, werden alle neu erzeugten Dateien die Rechte 644 und Ordner
die Rechte 755 erhalten).
Die Variable LFS
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.
Durch das Voranstellen von /tools/bin
an die Umgebungsvariable PATH
werden alle
in Kapitel 5
installierten Programme beim Durchsuchen der Pfade als erstes
gefunden und von der Shell sofort benutzt. Zusammen mit dem
Abschalten der Hash-Funktion der Bash wird so das Risiko minimiert,
dass eventuell alte Programme vom Host-System benutzt werden, obwohl
schon eine neuere Version aus Kapitel 5 auf dem System existiert.
Um die Arbeitsumgebung endgültig fertig zu stellen, muss das soeben erzeugte Profil eingelesen werden:
source ~/.bash_profile