Zu Befehl
Auch wenn sich viele Dinge bequem über grafische Oberflächen wie KDE oder Gnome regeln lassen – wer sein Linux-System richtig ausreizen möchte, kommt um die Kommandozeile nicht herum. Abgesehen davon gibt es auch sonst viele Situationen, in denen es gut ist, sich im Befehlszeilendschungel ein wenig auszukennen.
CDs und Plattenpartitionen verwenden unterschiedliche Dateisysteme: Während Sie unter Linux Partitionen meist mit einem Ext3- oder ReiserFS-Format versehen, kommt für CDs das Dateisystem ISO9660 zum Einsatz. Daher ist es nicht sinnvoll, eine Partition blockweise auf CD zu brennen. Stattdessen erzeugen Sie mit dem Hilfsprogramm mkisofs zunächst ein ISO9660-Dateisystem, in dem die gewünschten Dateien abgelegt werden. Das "ISO-Image" brennen Sie schließlich mit cdrecord auf CD.
Diese Folge von "Zu Befehl" stellt die beiden Kommandozeilen-Tools im Detail vor und verrät außerdem, wie Sie Images vor dem Brennen mit mount betrachten. Haben Sie ein ISO-Image aus dem Internet herunter geladen, gibt es zu dieser Datei oft eine Prüfsumme, die Sie mit md5sum überprüfen können. Wer auf der Platte keinen Platz für ein ISO-Image hat, kann CDs auch on-the-fly brennen.
ISO-Images mit "mkisofs" erzeugen
Es gibt mehrere Wege, die zu einem ISO-Image führen. Auf der Kommandozeile stehen Ihnen die Programme mkisofs ("make ISO 9660 filesystem") und dd (siehe Kasten ISO-Images mit "dd" erstellen) zur Verfügung. Grundsätzlich erwartet mkisofs die Angabe der Ausgabedatei (Parameter -o) und der Dateien, aus denen es das Image erstellen soll:
mkisofs [parameter] -o datei.iso /verzeichnis/zu/daten
Als optionale Parameter geben Sie beispielsweise -r (Rock Ridge) und -J (Joliet-Erweiterungen) an, um sicherzustellen, dass die CD auch auf anderen Betriebssystemen lesbar ist. Verwenden Sie statt -r die Option -R, wird ebenfalls Rock Ridge genutzt, aber Dateieigentümer und -rechte bleiben erhalten. Dieser Parameter ist beispielsweise dann sinnvoll, wenn Sie ein Backup der eigenen Daten erstellen wollen:
$ mkisofs -J -R -o backup.iso /home/linux-user 8.56% done, estimate finish Wed Feb 23 13:53:32 2005 17.10% done, estimate finish Wed Feb 23 13:53:32 2005 […]
Die Statusanzeige verrät, wie weit mkisofs mit der Arbeit fortgeschritten ist. Wer darauf keinen Wert legt, ergänzt die Option -quiet: Dann verhält mkisofs sich ruhig. Wer zusätzlich ein Label für die CD setzen möchte, verwendet den Parameter -V ("Volume ID"), z. B.:
mkisofs -V "LinuxUser Backup 02/2005" -J -R -o backup.iso /home/linux-user
Ausgeschlossen
Um bei einem Backup gezielt Dateien auszuschließen, verwenden Sie die Option -m mit Wildcards. Dabei dürfen Sie mehrere -m-Parameter hintereinander hängen. So sorgt der Aufruf
mkisofs -J -R -m '*.jpg' -m '*.png' -o backup.iso linux-user/zubefehl/2005
dafür, dass Dateien, die auf .jpg oder auf .png enden, nicht im ISO-Image landen. Einen kleinen Trick gibt es dabei zu beachten: Erstellen Sie ein Image mit den Daten des aktuellen Verzeichnisses, dürfen Sie nicht die Wildcard * verwenden, um alle Dateien zu erfassen. Der Befehl
mkisofs -J -R -m '*.jpg' -o backup.iso *
führt dazu, dass die JPEG-Dateien wieder mit eingeschlossen werden, da die Bash die Wildcard auflöst und so wieder alle Dateien mit einbezieht. Verwenden Sie statt des Sternchens den Punkt "." als Abkürzung für das aktuelle Verzeichnis, arbeitet mkisofs wie erwartet und verwehrt den Bilddateien den Einzug ins Image.
Gleiches gilt für die Option -no-bak, die Dateien mit typischen Backup-Endungen wie ~, # oder .bak ausklammert: Verwenden Sie nicht das Sternchen, sondern eine korrekte Pfadangabe, um die gewünschten Dateien auszuschließen.
Um ganze Verzeichnisse auszuschließen, setzen Sie den Parameter -x <pfad> ein. Die Pfade dürfen dabei wahlweise absolut (z. B. /usr/local) oder relativ (z. B. ../../usr/local) sein – auch hier sind Mehrfachnennungen erlaubt:
mkisofs -J -R -x /usr/local -x ../../usr/games -o backup.iso /
Kasten 1: ISO-Images mit "dd" erstellen
Das Programm dd ("convert and copy"; die naheliegende Abkürzung cc war schon für den C-Compiler vergeben) überträgt Daten zwischen verschiedenen Speichermedien und führt auf Wunsch auch Konvertierungen der Daten durch. dd kopiert einzelne Dateien und greift auch auf Geräte zu; so ist es damit möglich, ganze Festplatten (-Partitionen) und auch CD-ROMs in Image-Dateien zu kopieren.
Beim Aufruf geben Sie dd die Eingabedatei ("infile", if=) und die Ausgabedatei ("outfile", of=) an. Danach liest das Programm blockweise von der Eingabe und schreibt die Daten auf die Ausgabe. Optional definieren Sie Blockgröße und -anzahl: Mit dem Aufruf
dd if=/dev/hda of=bootsektor bs=512 count=1
liest dd von der ersten IDE-Platte (/dev/hda) den ersten Block (count=1) der Größe 512 Byte (bs=512) und schreibt ihn in die Datei bootsektor.
Um mit dd ein Image einer Daten-CD anzulegen, verwenden Sie als Eingabe einfach die CD-ROM-Gerätedatei (z. B. /dev/hdc) und als Ausgabe den Dateinamen des Abbilds:
dd if=/dev/hdc of=cd.iso



