SliTaz GNU/Linux official and community documentation wiki.
.png
Translations of this page:

Chroot-Umgebung

Dieser Abschnitt beschreibt die nötigen Schritte zum Erzeugen einer chroot-Umgebung, worin ein anderes Wurzelverzeichnis verwendet wird. Damit ist es möglich, SliTaz ohne Gefährdung des Systems, an dem Sie angemeldet sind, zu entwickeln, übersetzen und testen. Das System an dem Sie angemeldet sind kann ein auf Platte installiertes SliTaz oder irgendein anderes GNU/Linux-System sein, wie etwa Debian, Fedora, PCLinuxOS usw. Auch im Direktstart-Modus (zusammen mit einem USB-Datenträger) kann eine chroot-Umgebung eingerichtet werden. Die einzige Voraussetzung ist der Zugriff auf ein SliTaz-ISO-Abbild und etwas Zeit. Es ist zu beachten, dass alle Kommandos mit Administratorrechten (root) auszuführen sind.

Die Umgebung vorbereiten

Zunächst muss der Inhalt des ISO-Abbildes in ein Verzeichnis extrahiert werden, das als Wurzelverzeichnis verwendet werden soll. Das Verzeichnis kann an beliebiger Stelle erzeugt werden, hier wird /home/slitaz/chroot-env verwendet. Um den Inhalt des ISO-Abbildes extrahieren zu können, muss das ISO-Abbild in einem virtuellen Gerät eingehängt werden. Dann kann das komprimierte Wurzeldateisystem (rootfs.gz) in das chroot-Verzeichnis kopiert werden. Vorausgesetzt das ISO-Abbild befindet sich im Arbeitsverzeichnis:

 # mkdir /tmp/loop
 # mount -o loop slitaz-cooking.iso /tmp/loop
 # mkdir -p /home/slitaz/chroot-env
 # cp /tmp/loop/boot/rootfs.gz /home/slitaz/chroot-env
 # umount /tmp/loop

Diese Kopie des komprimierten Dateisystems muss jetzt dekomprimiert und entpackt werden (es handelt sich um ein cpio-Archiv, das mit gzip oder lzma komprimiert wurde). Schließlich können die Archive gelöscht werden, da sie weiter nicht benötigt werden:

 # cd /home/slitaz/chroot-env
 # (zcat rootfs.gz 2>/dev/null || lzma d rootfs.gz -so) | cpio -id
 # rm rootfs rootfs.gz

Wenn das Dekomprimieren mit lzma fehlschlägt; kann die folgende Methode versucht werden:

 # unlzma rootfs.gz -S .gz 
 # cat rootfs | cpio -id

Die Umgebung benutzen

Um eine chroot-Umgebung zu benutzen, müssen einige virtuelle Dateisysteme eingehängt und das Kommando chroot verwendet werden. Zur Arbeitserleichterung kann eine kleine Kommandoprozedur erstellt werden, die den Vorgang automatisiert. Im folgenden Beispiel wird als Wurzelverzeichnis /home/slitaz/chroot-env verwendet und eine Kommandoprozedur chroot_in_env.sh im Verzeichnis /home/slitaz erstellt. Auf anderen Systemen als SliTaz können die Kommentarzeichen in den Zeilen mit /dev und /tmp entfernt werden:

 # cat > /home/slitaz/chroot_in_env.sh << "EOF" 
#!/bin/sh
# Chroot in ein SliTaz-Wurzelverzeichnis, das manipuliert werden soll.
#
ROOTFS="/home/slitaz/chroot-env"

# Mount virtual Kernel file systems and chroot.
#
#mount --bind /dev $ROOTFS/dev
#mount --bind /tmp $ROOTFS/tmp
mount -t proc proc $ROOTFS/proc
mount -t sysfs sysfs $ROOTFS/sys
mount -t devpts devpts $ROOTFS/dev/pts
mount -t tmpfs shm $ROOTFS/dev/shm

echo "Wurzelverzeichnis ändern in $ROOTFS... "
chroot $ROOTFS /bin/sh --login

# Beim Verlassen, virtuelle Dateisysteme des Kerns aushängen.
#
umount $ROOTFS/dev/shm
umount $ROOTFS/dev/pts
umount $ROOTFS/sys
umount $ROOTFS/proc
#umount $ROOTFS/tmp
#umount $ROOTFS/dev

echo "Wurzelverzeichnis $ROOTFS wird verlassen... "

EOF

Zum Testen der chroot-Umgebung, die Kommandoprozedur ausführbar machen und ausführen:

 # chmod +x /home/slitaz/chroot_in_env.sh
 # sh /home/slitaz/chroot_in_env.sh

Eine Netzwerkschnittstelle aktivieren

Wenn eine Netzwerkverbindung benötigt wird, etwa zum Transferieren von Paketen aus einem Depot, braucht nur der DHCP-Klient für die richtige Netzwerkschnittstelle gestartet zu werden. Hier ein Beispiel mit der Netzwerkschnittstelle eth1:

 # udhcpc -i eth1 

Pakete installieren

Ist die Netzwerkschnittstelle funktionsfähig, muss nur die Paketliste aktualisiert werden und mit tazpkg get-install können Pakete installiert werden. Kommt keine Netzwerkverbindung zustande, können Pakete in einem anderen System transferiert, in das Wurzelverzeichnis kopiert und mit dem Kommando tazpkg install installiert werden. Zur Installation von wesentlichen Übersetzungsprogrammen:

 # tazpkg recharge
 # tazpkg get-install slitaz-toolchain 

Wenn die Umgebung erst eingerichtet ist, können Anwendungen aus dem Quellcode übersetzt, Pakete erzeugt, Kommandoprozeduren getestet werden, usw. Das Kochbuch sollte dabei weiterhelfen.

Die Umgebung verlassen

Zum Verlassen der chroot-Umgebung muss nur das Kommando exit eingegeben werden, die Kommandoprozedur chroot_in_env.sh beendet sich dann, nachdem die virtuellen Dateisysteme des Linux-Kerns ausgehängt wurden:

 # exit
 #
 
de/handbook/chroot.txt · Last modified: 2017/02/06 15:40 by hgt