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

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 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/handbook/hacklivecd.txt · Last modified: 2017/02/26 17:32 by hgt