Vor das Brennen einer Daten-CD hat Linux das ISO-Image gesetzt – “mkisofs” hilft beim Erstellen dieser Abbilder. Bevor Sie ein Image auf die Silberscheibe schreiben, sollten Sie es überprüfen.
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
Alles klar?
Um ein ISO-Image auf eventuelle Fehler zu überprüfen, stehen Ihnen verschiedene Methoden zur Verfügung. Zunächst einmal bietet es sich an, das Abbild testweise ins Dateisystem einzuhängen.
Der Befehl mount kann nicht nur Datenträger, wie z. B. Festplatten oder CDs, in das Linux-Dateisystem einbinden, sondern mit dem Zusatz -o loop auch ISO-Images mounten. Als Administrator hängen Sie ein Image beispielsweise mit dem Kommando
mount -o loop datei.iso /mnt/tmp/
ein. Das Verzeichnis /mnt/tmp/ muss dabei (wie üblich) existieren, sonst beschwert sich mount:
mount: Einhängepunkt /mnt/tmp/ existiert nicht
Beklagt sich mount über ein unbekanntes Dateisystem, verwenden Sie zusätzlich den Parameter -t iso9660. Im Verzeichnis /mnt/tmp finden Sie den vollständigen Inhalt des ISO-Images – so wie dieser später auf der CD erscheinen wird. Um das Image wieder auszuhängen, benutzen Sie – ebenfalls als Administrator – den Befehl umount:
umount /mnt/tmp
Gut geprüft
Wenn Sie ISO-Dateien aus dem Internet herunterladen, bietet sich neben dem “Probe-Mounten” eine weitere Kontrollmöglichkeit über die so genannte MD5-Prüfsumme an. Unter Linux setzen Sie dazu das Programm md5sum ein – dieses erzeugt aus der Datei jeweils einen 128 Bit großen Hash-Wert.
Auf den meisten Download-Servern liegen daher neben den ISO-Images auch Angaben zu ihren MD5-Prüfsummen (Abbildung 1). Textdateien, die oft MD5SUM(s) oder xyz.iso.md5 heißen, enthalten die zu den angebotenen Image-Dateien passenden Hash-Werte. Da sich diese Prüfsumme schon ändert, wenn nur ein einziges Bit modifiziert wird, ist es schwer, zwei unterschiedliche Dateien zu erstellen, die dieselbe Prüfsumme haben. Dass nach einem fehlerhaften Download die heruntergeladene Datei trotz der Veränderungen die richtige Prüfsumme hat, ist also äußerst unwahrscheinlich.

Abbildung 1: Durch Überprüfen der MD5-Summe stellen Sie sicher, dass das heruntergeladene Image intakt ist.
Um den MD5-Fingerabdruck zu prüfen, setzen Sie das Kommandozeilenprogramm md5sum ein. Wer einfach nur den Hash-Wert ausgeben möchte, ruft md5sum datei auf, und die Prüfsumme erscheint nach kurzer Zeit im Terminal:
$ md5sum FC3-i386-DVD.iso ca49964739f84848ca78fc03662272fb FC3-i386-DVD.iso
Wenn Sie ISO-Images mit K3b brennen, können Sie sich die manuelle Ausgabe auf der Kommandozeile ersparen. Nachdem Sie sich im Menü Extras dafür entschieden haben, ein CD- oder DVD-Image zu brennen, berechnet K3b automatisch die Prüfsumme. Eine Statusanzeige informiert über den Fortschritt; anschließend präsentiert K3b zur Kontrolle die MD5-Summe im Dialogfenster (Abbildung 2).
Natürlich könnten Sie jetzt die zugehörige Checksummen-Datei in einem Text-Editor öffnen oder mit cat im Terminal ausgeben und Zeichen für Zeichen vergleichen. Da dieses mitunter aber doch recht mühsam und auch fehleranfällig sein kann, empfiehlt sich der Einsatz von md5sum auf der Kommandozeile mit dem Parameter -c. Laden Sie dazu nicht nur das ISO-Image, sondern auch die Prüfsummendatei auf den eigenen Rechner und geben Sie den folgenden Befehl ein:
$ md5sum -c MD5SUM FC3-i386-DVD.iso: Ok
Die Ausgabe zeigt: Das Fedora-Core-3-Image im Beispiel scheint komplett und intakt – die Prüfsummen stimmen überein. Schlägt die Überprüfung hingegen fehl, meldet md5sum:
FC3-i386-DVD.iso: Fehlschlag
Gut kombiniert
Kommandozeilenprogramme haben den Vorteil, dass man sie miteinander verketten kann. So ist es beispielsweise durch eine geschickte Kombination des mkisofs-Aufrufs mit direkt folgendem cdrecord-Befehl [2] möglich, CDs “on the fly” zu brennen – den Plattenplatz für das ISO-Image benötigen Sie dann nicht mehr. Die Option -o ausgabedatei lassen Sie im mkisofs-Aufruf einfach weg und geben die Ausgabe über ein Pipe-Zeichen direkt an cdrecord weiter. Einziger Haken an der Sache: Sie sollten durch einen Puffer sicherstellen, dass es zu keinem Buffer Underrun und somit zum Verlust des Rohlings kommt. Auch wenn Linux gute Multitasking-Fähigkeiten besitzt, gehen Sie einfach auf Nummer sicher und fügen dem cdrecord-Aufruf einen Puffer von 6 MByte hinzu:
mkisofs -V "LinuxUser Backup 02/2005" -J -R /home/linux-user | cdrecord -v fs=6m speed=4 dev=0,0,0 -
Vergessen Sie nicht das Minuszeichen am Ende des langen Befehls; über dieses teilen Sie cdrecord mit, dass es nicht eine Datei, sondern die Standardeingabe lesen soll – so wandern die Daten in einem Rutsch von der Festplatte auf die Silberscheibe.
Glossar
-
ISO
-
Die International Organization for Standardization (ISO) erarbeitet technische Standards für verschiedene Bereiche. Für die Verwaltung von Dateien auf CD-ROMs hat sich der ISO-9660-Standard durchgesetzt: Dank ihm können CDs auf verschiedenen Betriebssystemen gelesen werden. Ursprünglich wurden nur kurze Dateinamen unterstützt; die Rock-Ridge- und Joliet-Erweiterungen heben diese Grenzen aber schon seit einiger Zeit auf.
-
MD5-Prüfsumme
-
Mit Prüfsummen stellt man sicher, dass eine Nachricht korrekt übertragen wurde – Sender und Empfänger berechnen die Prüfsumme, und wenn es bei der Übertragung keine Fehler gab, erhalten beide das gleiche Ergebnis. MD5 ist ein 1991 von Ron Rivest entwickelter Algorithmus [1], der aus einer Datei einen 128 Bit großen Hash-Wert berechnet, welcher in der Regel in Hexadezimalschreibweise (mit 32 Stellen) dargestellt wird. Man nennt den Hash-Wert auch Fingerabdruck (englisch: “fingerprint”).
-
Buffer Underrun
-
Während des eigentlichen Brennvorgangs werden die Daten in einen Pufferspeicher geschrieben, um einen gleichbleibenden Datenstrom zu erhalten. Wird dieser leer und kommen neue Daten zu langsam nach, bricht das Brennen auf älteren Geräten mit einem “Buffer-Underrun”-Fehler ab – der Rohling ist dann unbenutzbar. Neuere Geräte mit “BurnProof”-Technik verhindern solche Buffer Underruns: Wenn der Datenstrom abreißt, wartet der Brenner auf neue Daten und setzt den Brennvorgang an der letzten Position fort.
Infos
[1] RFC 1321 “The MD5 Message-Digest Algorithm”: http://www.ietf.org/rfc/rfc1321.txt
[2] cdrecord-Artikel: Hans-Georg Eßer, “Die Konsole brennt – CDs auf der Kommandozeile schnell geschrieben”, LinuxUser 05/2001, S. 15 ff., http://www.linux-user.de/ausgabe/2001/05/015-cdrecord/cdrecord.html





