====== 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 [[de:cookbook:start|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 #