====== SliTaz-Direktstart-ISO-Abbild manipulieren ====== ===== Einleitung ===== Hier wird beschrieben, wie man das SliTaz-Direktstart-ISO-Abbild manipulieren kann. Neben dem hier beschriebenen Vorgehen kann auch mit //Tazlito// eine angepasste SliTaz-Variante erstellt werden. Es ist einfach, ein eigenes urladefähiges ISO-Abbild zu erzeugen; die Schritte dafür sind im folgenden sorgfältig beschrieben. Die Manipulation des ISO-Abbildes kann darin bestehen, Dateien hinzuzufügen oder vorhandene zu ändern. Das SliTaz-ISO-Abbild ist weniger als 30 MB groß, während eine CD-R oder CD-RW eine Kapazität von etwa 700 MB hat, so dass viel Platz für Erweiterungen bleibt. So ist es beispielsweise möglich, Fotos oder gar eine Diaschau mithilfe von //GQview// darauf zu speichern. Durch Manipulation des ISO-Abbilds ist es auch möglich, die Konfigurationsdateien des Urladers, den Startbildschirm und GRUB selbst zu modifizieren. Es ist auch möglich, das Programm //Memtest86// zum Testen des Arbeitsspeichers hinzuzufügen. Mit denselben Techniken ist es sogar möglich, das Dateisystem zu modifizieren, was allerdings etwas mehr Aufwand und zusätzliche Manipulationen erfordert. ===== Organisation und Vorbereitung ===== Zunächst muss ein Verzeichnis mit mehreren Unterverzeichnissen zur Aufnahme der Arbeitsdateien erzeugt werden. Das ISO-Abbild kann auf einem SliTaz-System oder einem anderen GNU/Linux wie Debian, Fedora, PCLinuxOS, usw. manipuliert werden. Wenn ein SliTaz im Direktstart-Modus verwendet wird, (wo der optische Datenträger nach dem Laden von SliTaz in den Arbeitsspeicher entfernt werden und in demselben Laufwerk das neu erzeugte ISO-Abbild auf einen optischen Datenträger geschrieben werden kann), ist es ratsam, die Arbeitsdateien auf einem USB-Speichermedium abzulegen, da diese sonst bei Systembeendigung verloren gehen. Zunächst muss ein Arbeitsverzeichnis unterhalb von ///home/slitaz// angelegt werden. Dadurch kann dort ein originales ISO-Abbild gespeichert und ein Verzeichnis //src// angelegt werden, in das möglicherweise Quell-Pakete transferiert werden können. Alle Schritte der Manipulation können mit Kommandos in einem X-Terminal (Xterm) oder im Konsol-Modus ausgeführt werden. Um Probleme mit fehlenden Zugriffsberechtigungen zu vermeiden, sollten alle Kommandos mit Administratorrechten („root“) ausgeführt werden. Dazu können folgende Kommandos eingegeben werden: $ su # mkdir -p /home/slitaz/hacked (# mkdir -p /home/slitaz/src) # cd /home/slitaz/hacked === Dateien aus dem ISO-Abbild extrahieren === In dem Arbeitsverzeichnis muss jetzt das Wurzelverzeichnis des geänderten ISO-Abbilds (rootcd) erzeugt werden, indem dorthin Dateien von dem originalen SliTaz-ISO-Abbild kopiert werden, nämlich der Linux-Kern (bzImage), das komprimierte Dateisystem (rootfs.gz) und die Dateien des Urladers isolinux. Diese Dateien können von einem optischen Datenträger oder einem lokal gespeicherten ISO-Abbild kopiert werden. Um einen optischen Datenträger in dem Gerät ///dev/cdrom// in ///media/cdrom// einzuhängen und alle Dateien davon in ein Wurzelverzeichnis rootcd zu kopieren, können folgende Kommandos eingegeben werden: # mount -t iso9660 /dev/cdrom /media/cdrom # mkdir rootcd # cp -a /media/cdrom/* rootcd Um ein SliTaz-ISO-Abbild //slitaz-cooking.iso// in ///tmp/loop// einzuhängen und alle Dateien davon in ein Wurzelverzeichnis rootcd zu kopieren, können folgende Kommandos eingegeben werden: # mkdir /tmp/loop # mount -o loop slitaz-cooking.iso /tmp/loop # mkdir rootcd # cp -a /tmp/loop/* rootcd # umount /tmp/loop All benötigten Dateien sollten sich jetzt im Verzeichnis //rootcd// befinden. Mit dem Kommando //ls// können Sie sich vergewissern: # ls -R rootcd ===== Dateien dem ISO-Abbild hinzufügen ===== Um dem ISO-Abbild Dateien und Verzeichnisse hinzuzufügen, brauchen diese nur in das Wurzelverzeichnis (rootcd) kopiert und ein neues ISO-Abbild erzeugt zu werden. Wenn das ISO-Abbild auf einen optischen Datenträger geschrieben wurde, kann dieser wie oben beschrieben unter SliTaz in ///media/cdrom// eingehängt werden und der Inhalt kann mit Kommandos, //PCmanFM// oder //Clex// betrachtet werden. Darüberhinaus kann der Datenträger in allen GNU/Linux-Systemen, BSD und sogar ... Windows gelesen werden. === Verzeichnisse erzeugen und Dateien kopieren === Um Dateien zu erzeugen und zu kopieren, können zunächst Kommandos eingegeben werden und dann mit der grafischen Oberfläche weitergearbeitet werden (als nichtprivilegierter Benutzer). Im folgenden Beispiel wird vom Administrator ein Verzeichnis //images// erzeugt und die Zugriffsrechte so gesetzt, dass alle Benutzer Schreibzugriff darauf haben: # mkdir rootcd/images # chmod 777 rootcd/images Jetzt können unter jeder Benutzerkennungen Dateien in dieses Verzeichnis kopiert werden. Sind alle benötigten Dateien kopiert, kann ein urladefähiges ISO-Abbild erzeugt werden. ===== Änderung der isolinux-Konfiguration ===== In die isolinux-Konfiguration können angepasste Einträge eingefügt werden, zum Beispiel ein Eintrag zum Laden von SliTaz mit den Optionen //lang=de// und //kmap=de//. Ebenso kann der Startbildschirm geändert werden. Das Programm //isolinux//, das in dem Paket syslinux enthalten ist, sorgt für das Starten des Urladers des optischen Direktstart-Datenträgers. Das Quellprogramm von Syslinux liefert verschiedene Anwendungen zum Laden von GNU/Linux-Systemen. Das Objektprogramm //isolinux.bin// steuert den Urladeprozess. Der Urlader ist einfach, schnell und kann leicht konfiguriert werden, sowohl grafisch als auch mit einem Editor. Die Syntax der Konfigurationsdatei //isolinux.cfg// ist leicht zu verstehen; neue Einträge können leicht durch Kopieren und Ändern bestehender Einträge erzeugt werden. Zum Bearbeiten der Konfigurationsdatei im Grafikmodus mit Leafpad: # leafpad rootcd/boot/isolinux/isolinux.cfg & === Die Konfigurationsdatei isolinux.cfg === Die Datei //isolinux.cfg// auf dem Standard-SliTaz-Direktstart-Datenträger, beginnt mit der Anweisung //display//; damit wird entweder eine Textdatei ausgegeben oder eine Datei, die mittels Steuerzeichen in den Grafikmodus wechselt um ein Startbild auszugeben. Mit der Anweisung //default// wird festgelegt, welcher Eintrag standardmäßig (nach Ablauf einer Wartezeit) verwendet werden soll. Mit der Anweisung //timeout// wird die Wartezeit in Sekunden bestimmt, bevor ein System geladen wird. Bei Angabe von 0 wird sofort ein System gemäß den Angaben des Standardeintrags geladen. Mit der Anweisung //prompt// wird eingestellt, ob eine Eingabeaufforderung ausgegeben werden soll (prompt=1) oder nicht (prompt=0). Mit den Anweisungen Fn wird festgelegt, welche Dateien bei Betätigung der entsprechenden F-Taste angezeigt werden sollen. Beispiel: display isolinux.msg default slitaz label slitaz kernel /boot/bzImage append initrd=/boot/rootfs.gz rw root=/dev/null vga=788 implicit 0 prompt 1 timeout 80 F1 help.txt F2 options.txt F3 isolinux.msg F4 display.txt Ein weiteres Beispiel für einen Eintrag //slitazde//, der in die Konfigurationsdatei eingefügt werden kann, um Sprache und Tastaturbelegung Deutsch einzustellen: label slitazde kernel /boot/bzImage append initrd=/boot/rootfs.gz rw root=/dev/null lang=de kmap=de Nach dem Ändern in der Konfigurationsdatei muss die Datei gespeichert werden und ein neues urladefähiges ISO-Abbild mit //isolinux// erzeugt werden. ===== Installation und Konfiguration von Memtest86 ===== Mit dem Programm //memtest86// (92 kB groß) kann der Arbeitsspeicher geprüft werden. Memtest86 führt ausführliche Prüfungen durch, die im Fehlerfall auf hardware-Fehler hindeuten. Die Programmdatei befindet sich im Verzeichnis //boot// und kann durch Eingabe von //memtest// direkt von der isolinux-Eingabeaufforderung gestartet werden. Die Installation kann folgendermaßen durchgeführt werden ( falls // /home/slitaz/src// nicht existiert, muss es mit //mkdir -p /home/slitaz/src// eingerichtet werden): # cd /home/slitaz/src # wget http://www.memtest86.com/memtest86-3.3.tar.gz # tar xzf memtest86-3.3.tar.gz In der jetzt vorhandenen Datei README findet man Informationen über das Programm, das jetzt im Wurzelverzeichnis des manipulierten ISO-Abbildes (z.B. ///home/slitaz/hacked//) installiert werden kann. Das vorübersetzte Objektprogramm wird in das Verzeichnis //boot// unterhalb des Wurzelverzeichnisses des manipulierten ISO-Abbildes kopiert: # cp memtest86-3.3/precomp.bin \ /home/slitaz/hacked/rootcd/boot/memtest Jetzt muss nur noch ein Eintrag für //memtest86// in die //isolinux//-Konfigurationsdatei eingefügt und ein neues urladefähiges ISO-Abbild erstellt werden: # cd /home/slitaz/hacked # leafpad rootcd/boot/isolinux/isolinux.cfg & Dort folgende Zeilen einfügen: label memtest kernel /boot/memtest Offizielle Internetpräsenz von [[http://www.memtest86.com/|Memtest86]] ===== Manipulation des Direktstart-Dateisystems rootfs.gz ===== Durch Ändern des Direktstart-Dateisystems //rootfs.gz// ist es beispielsweise möglich, weitere Benutzerkennungen einzurichten, die Grafikausgabe anzupassen oder Kommandos bei der Systemeinleitung ausführen zu lassen. Die Manipulation des Direktstart-Dateisystems erfolgt in den folgenden Schritten: * Extrahieren der Dateien aus //rootfs.gz// * Durchführen der Änderungen an den extrahierten Dateien * Erzeugen eines neuen Archivs //rootfs.gz// * Erzeugen eines neuen urladefähigen ISO-Abbildes Unter der Annahme, dass bereits ein Arbeitsverzeichnis (///home/slitaz/hacked//) existiert, wird dort ein Unterverzeichnis zur Aufnahme der Dateien aus dem Archiv //rootfs.gz// eingerichtet, z.B. //rootfs//. Dorthin wird zunächst das ursprüngliche Archiv //rootfs.gz// kopiert: # cd /home/slitaz/hacked # mkdir rootfs # cp rootcd/boot/rootfs.gz rootfs Dieses Archiv wird dann mit //cpio// entpackt. //rootfs.gz// ist ein //cpio//-Archiv, das mit //lzma// oder //gzip// komprimiert wurde. Es wird vom Linux-Kern wie ein //initramfs//-Abbild behandelt. Bei der Systemeinleitung wird der Linux-Kern in den Arbeitsspeicher geladen und dieser extrahiert dann die Dateien aus dem Archiv //rootfs.gz// und führt die Initialisierungsprozeduren aus. Mit den folgenden Kommandos werden die Dateien in das Verzeichnis //rootfs// extrahiert und das unkomprimierte und das komprimierte Archiv gelöscht : # cd rootfs # (zcat rootfs.gz 2>/dev/null || lzma d rootfs.gz -so) | cpio -id # rm rootfs rootfs.gz Mit dem Kommando //ls// kann jetzt angezeigt werden, welche Dateien extrahiert wurden und diese Dateien können nach Belieben geändert werden. === Ändern einer Datei === Der Einfachheit halber und um das Prinzip deutlich zu machen, soll nur eine Kommandoprozedur geändert werden, so dass einige zusätzliche Kommandos während der Systemeinleitung ausgeführt werden. Dazu wird die Datei //etc/init.d/local.sh// mit einem Editor (wie z.B. Beaver) bearbeitet: # beaver etc/init.d/local.sh & Mit den folgenden, eingefügten Kommandos wird eine Meldung ausgegeben und 4 Sekunden gewartet: echo "* Es wird eine manipulierte SliTaz-Version geladen..." sleep 4 === Neuerstellung des Direktstart-Dateisystems rootfs.gz === Mit den Kommandos //find//, //cpio// und //lzma// bzw. //gzip// kann jetzt ein neues komprimiertes Direktstart-Dateisystems //rootfs.gz// erzeugt werden. //rootfs// muss das aktuelle Verzeichnis sein, wenn die folgenden Kommandos eingegeben werden: # find . -print | cpio -o -H newc | lzma e -si -so > ../rootfs.gz oder mit gzip: # find . -print | cpio -o -H newc | gzip -9 > ../rootfs.gz Schließlich muss das komprimierte Archiv noch in das Verzeichnis //boot// in dem Wurzelverzeichnis //rootcd// kopiert und ein neues urladefähiges ISO-Abbild mit //isolinux// erzeugt werden. Zum Kopieren: # cd ../ # cp -a rootfs.gz rootcd/boot ===== Erzeugen eines urladefähigen ISO-Abbildes ===== Im folgenden Beispiel wird mit dem Programm //genisoimage// mit wenigen Parametern ein ISO-Abbild mit dem Urlader //isolinux// erzeugt. Mit der Option -o wird der Name des ISO-Abbildes angegeben, während der Name des Wurzelverzeichnisses //rootcd// als letzter Parameter erscheint: # genisoimage -R -o slitaz-hacked.iso -b boot/isolinux/isolinux.bin \ -c boot/isolinux/boot.cat -no-emul-boot -boot-load-size 4 \ -V "manipuliertes SliTaz" -input-charset iso8859-1 -boot-info-table rootcd Zur Prüfung des Inhalts des ISO-Abbildes vor dem Schreiben auf optischen Datenträger kann das ISO-Abbild als virtuelles Gerät eingehängt und betrachtet werden. Unter SliTaz und den meisten GNU/Linux-Systemen können ISO-Abbilder mit //wodim// auf optische Datenträger geschrieben werden. === Erzeugen eines ISO-Abbildes mit einer Kommandoprozedur === Wenn viele Möglichkeiten ausprobiert und viele ISO-Abbilder erstellt werden sollen, ist es zweckmäßig, dafür eine einfache Kommandoprozedur zu verwenden. Diese kann durch Kommandoeingabe oder mit einem grafischen Editor erstellt werden. Im folgenden Beispiel wird eine Kommandoprozedur gen_hacked_iso.sh, die zwei Variablen zur Angabe des Namens des ISO-Abbildes und des Wurzelverzeichnisses enthält, mit dem Kommando //cat// erzeugt; dabei kennzeichnet EOF („End Of File“) das Ende der Datei. # cat > gen_hacked_iso.sh << "EOF" #!/bin/sh # Ein neues manipuliertes ISO-Abbild erzeugen. # ISO_NAME="slitaz-hacked.iso" ROOTCD="rootcd" genisoimage -R -o $ISO_NAME -b boot/isolinux/isolinux.bin \ -c boot/isolinux/boot.cat -no-emul-boot -boot-load-size 4 \ -V "manipuliertes SliTaz" -input-charset iso8859-1 -boot-info-table $ROOTCD EOF Um diese Kommandoprozedur verwenden zu können, muss die Datei ausführbar gemacht werden: # chmod +x gen_hacked_iso.sh # ./gen_hacked_iso.sh ===== Siehe auch ===== * [[de:guides:persistence_splash|Leitfaden um Nichtflüchtigkeit zu erreichen]]