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 #