Shell-Kommandos fürs Arbeiten mit ISO-Image-Dateien

Aus EasyLinux 03/2015

Shell-Kommandos fürs Arbeiten mit ISO-Image-Dateien

© Hans-Georg Eßer

CD-, DVD- und Blu-ray-Images

ISO-Images mit Linux-Distributionen, die Sie aus dem Internet herunterladen, brennen Sie mit K3b oder einem anderen Brennprogramm auf einen CD-, DVD- oder Blu-ray-Rohling. Doch Sie können auch mit Shell-Befehlen auf die Images zugreifen und eigene erstellen.

ISO-Images sind Abbilddateien von CDs, DVDs oder Blu-ray Discs (BDs): Ihren Namen haben sie vom Dateisystem ISO-9660, in dem diese Scheiben “formatiert” sind. Darum tragen Image-Dateien auch meist die Dateiendung .iso. Wir zeigen Ihnen in diesem Artikel, wie Sie mit den Kommandozeilenbefehlen mount auf die Images zugreifen, mit mkisofs selbst welche erzeugen und mit isoinfo Informationen über ein Image ausgeben. Außerdem geht es ums Brennen mit cdrecord und growisofs.

Image einbinden

Wenn Sie eine hypothetische Image-Datei easylinux.iso aus dem Internet heruntergeladen haben, müssen Sie diese nicht extra auf einen Rohling brennen, um einen Blick auf den Inhalt zu werfen: Ein einziger Kommandozeilenbefehl reicht aus, um die im Image gespeicherten Dateien in das Linux-Dateisystem einzubinden. Sie benötigen dazu Administratorrechte.

Für den folgenden Befehl gehen wir davon aus, dass es auf Ihrem Rechner das Verzeichnis /mnt gibt und dort kein anderes Medium eingebunden ist. Wenn die Datei easylinux.iso direkt in Ihrem Home-Verzeichnis (/home/benutzername/) liegt, öffnen Sie mit [Alt]+[F2] und Eingabe von konsole ein Terminalfenster und geben darin den folgenden Befehl ein:

sudo mount -o loop,ro easylinux.iso /mnt

Liegt die ISO-Datei an einem anderen Ort, geben Sie den vollen Pfad an, z. B. /tmp/easylinux.iso. Das war es schon: Ab sofort können Sie über den Pfad /mnt/ auf die Dateien aus dem Image zugreifen – eine Datei index.html, die sich im Wurzelverzeichnis des Images befindet, würden Sie dann z. B. über /mnt/index.html erreichen. Sie können auch einen grafischen Dateimanager wie Dolphin verwenden, um in diesen Ordner zu schauen.

Solange das ISO-Image auf diese Weise eingebunden ist, können Sie auch Dateien vom Image herunter ins normale Dateisystem (also meist in Ihr Home-Verzeichnis) kopieren. Was nicht möglich ist, ist das Löschen von Dateien im Image: Der Zugriff ist nur lesend. Wollen Sie ein Image verändern, haben Sie nur die Möglichkeit, zunächst alle Dateien in einen neuen Ordner zu kopieren, dort die Änderungen vorzunehmen und schließlich ein neues Image zu erstellen.

Um die Einbindung des Images wieder aufzuheben, geben Sie den Befehl

sudo umount /mnt

ein – das setzt voraus, dass Sie beim Einhängen das Verzeichnis /mnt/ als Mountpoint verwendet haben; außerdem setzt das “Unmounten” voraus, dass keine der Dateien auf dem Image gerade in Benutzung ist und Sie auch in keiner Shell in einen Ordner auf dem Image gewechselt sind.

ISO-Image erstellen

Das Programm, mit dem Sie auf der Kommandozeile neue Images bauen können, heißt – je nach Linux-Distribution – entweder mkisofs oder genisoimage; wir gehen hier davon aus, dass Sie das Tool über den Namen mkisofs erreichen können. Beide Tools verwenden dieselben Optionen.

Haben Sie in einem Unterordner Ihres Home-Verzeichnisses die Dateien (und Unterverzeichnisse) versammelt, die in das Image wandern sollen, erzeugt das folgende Kommando ein ISO-Image:

mkisofs -J -r -o Dateiname.iso Ordner

Dabei spielt es keine Rolle, ob Sie ein CD- oder ein DVD-Image erzeugen möchten; beide Datenträgertypen verwenden dasselbe Dateiformat namens ISO-9660. Im DVD-Umfeld gibt es außerdem noch das UDF-Format (Universal Disk Format), das Sie aber für Daten-DVDs nicht benötigen; Video-DVDs sind UDF-formatiert.

Was bedeuten die Optionen im Detail?

  • Mit -o Dateiname.iso legen Sie den Namen für die Ausgabedatei fest. Sie können hier auch einen vollen Pfad angeben, wenn Sie das Image z. B. im Ordner /tmp/ speichern möchten.
  • Über -r weisen Sie das Programm an, so genannte RockRidge-Extensions zu erzeugen. Das ist u. a. nötig, damit Sie unter Linux die Dateinamen in voller Länge sehen. Es gibt noch eine groß geschriebene Variante (-R), die Sie alternativ zu -r nutzen können: Das ist dann sinnvoll, wenn Sie Dateien archivieren möchten. Bei -R bleiben Zugriffsrechte und die “Besitzverhältnisse” der Dateien erhalten, während -r diese so anpasst, dass das Image (oder die damit gebrannte DVD) auf jedem Rechner lesbar ist.
  • Mit -J erzeugen Sie schließlich die so genannten Joliet-Extensions. Sie haben eine ähnliche Aufgabe wie die RockRidge-Extensions, sind aber für Windows-Systeme gedacht. Wenn Sie wissen, dass Sie das Image nur auf Linux-PCs nutzen werden, können Sie diese Option weglassen.

Blu-ray-Images verwenden das UDF-Dateisystem, hier lautet der passende Aufruf

mkisofs -l -udf -allow-limited-size -o Dateiname.iso Ordner

und die drei neuen Optionen sorgen dafür, dass ein hybrides ISO-/UDF-Image entsteht. Damit können Sie u. a. Dateien, die größer als 4 GByte sind, in das Image integrieren (z. B. eine kleine Sammlung von DVD-ISO-Images). Ein hybrides Image ist mit allen Rechnern kompatibel, die das ISO-Format, das UDF-Format oder beide unterstützen (Abbildung 1).

Abbildung 1: Hybride ISO-/UDF-Images können Sie unter Linux nach beiden Standards einbinden, was sich u. a. auf die Länge der Dateinamen auswirken kann.

Abbildung 1: Hybride ISO-/UDF-Images können Sie unter Linux nach beiden Standards einbinden, was sich u. a. auf die Länge der Dateinamen auswirken kann.

Das Programm mkisofs erzeugt sehr viele Ausgaben, u. a. listet es sämtliche Dateien, bei denen es Anpassungen an den Dateinamen vorgenommen hat: Das liegt daran, dass das ISO-9660-Dateisystem nur kurze Dateinamen unterstützt (eine Einschränkung, welche die Joliet- und RockRidge-Extensions aufheben); aus Kompatibilitätsgründen wird aber für jede Datei auch ein Kurzname erzeugt. Außerdem sehen Sie den Fortschritt in Prozent. Am Ende gibt das Tool eine Zusammenfassung aus:

[...]
 99.03% done, estimate finish Thu Jun 25 23:48:31 2015
Total translation table size: 0
Total rockridge attributes bytes: 6598
Total directory bytes: 0
Path table size(bytes): 10
Max brk space used 0
45448 extents written (88 MB)

Die letzte Zeile verrät dabei die Größe des erstellten Images.

Ein so erzeugtes Image können Sie mit K3b (über den Menüpunkt Extras / ISO-Abbild brennen) auf eine CD, DVD oder BD brennen, oder Sie können das Image auf einen Webserver hochladen und anderen Personen zur Verfügung stellen. In der Shell nutzen Sie cdrecord oder wodim zum Brennen von CDs und DVDs, für BDs ist wodim ungeeignet (siehe auch den Blu-ray-Artikel ab Seite 60 dieser Ausgabe), weswegen Sie cdrecord nachrüsten müssen, wenn Sie Blu-rays brennen möchten. Distributionen, die wodim vorinstallieren, stellen aber auch ein cdrecord-Kommando bereit – das ist dann einfach ein Link auf wodim, und die beiden Tools sind weitgehend kompatibel, was die verwendbaren Optionen angeht.

Das Tool cdrecord erwartet im Wesentlichen den Namen der ISO-Datei als Argument, dazu gesellen sich einige Optionen, die u. a. festlegen, welcher Brenner genutzt werden soll. Ein typischer Aufruf sieht wie folgt aus:

cdrecord dev=2,0,0 -v image.iso

wobei 2,0,0 eine Gerätebezeichnung ist, die Sie durch den für Ihr Gerät passenden Wert ersetzen müssen – welcher das ist, finden Sie über cdrecord -scanbus heraus. Auf unserem Testrechner mit einem internen DVD-Brenner und einem via USB angeschlossenen Blu-ray-Brenner ergab sich hier:

esser@hpquadi7:~> sudo cdrecord -scanbus|grep ROM
Linux sg driver version: 3.5.34
        2,0,0   200) 'hp      ' 'CDDVDW SH-216DB ' 'HH10' Removable CD-ROM
        11,0,0  1100) 'TSSTcorp' 'BDDVDW SE-506CB ' 'TS01' Removable CD-ROM

(Der DVD-Brenner hat die Geräte-ID 2,0,0, beim Blu-ray-Brenner ist es die 11,0,0.) Die Werte können sich für externe Geräte nach jedem Ein- und Ausstöpseln ändern.

Von K3b lernen

Wenn unklar ist, wie die Brennprogramme in der Shell zu nutzen sind, kann man auch K3b die Arbeit erledigen lassen und über die Prozessliste beobachten, wie K3b die Shell-Tools aufruft.

esser@hpquadi7:~> ps ww -p `pidof mkisofs growisofs` PID TTY STAT TIME COMMAND10052 ? Dl 0:13 /usr/bin/growisofs -Z /dev/sr2 /dev/fd/0 -use-the-force-luke=notray -use-the-force-luke=tty -use-the-force-luke=4gms -use-the-force-luke=tracksize:6056263 -speed=4 -use-the-force-luke=bufsize:32m10056 ? S 0:08 /usr/bin/mkisofs -gui -graft-points -volid Mac-Daten-2015 -volset  -appid K3B THE CD KREATOR (C) 1998-2010 SEBASTIAN TRUEG AND MICHAL MALEK -publisher  -preparer  -sysid LINUX -volset-size 1 -volset-seqno 1 -sort /tmp/kde-esser/k3bBR6633.tmp -rational-rock -hide-list /tmp/kde-esser/k3bDH6633.tmp -joliet -joliet-long -hide-joliet-list /tmp/kde-esser/k3bUk6633.tmp -no-cache-inodes -full-iso9660-filenames -disable-deep-relocation -iso-level 3 -path-list /tmp/kde-esser/k3btX6633.tmp

K3b nutzt also nicht cdrecord, sondern growisofs zum Brennen – über die Option -Z /dev/sr2 wird der Blu-ray-Brenner angegeben, /dev/fd/0 ist der Dateideskriptor für die Standardeingabe: Daran erkennt man, dass growisofs Teil einer Pipe ist und das Image über die Standardeingabe erhält. Erzeugt wird das Image von dem komplexen mkisofs-Aufruf. Diesem fehlt die sonst übliche Option -o für die Angabe einer Ausgabedatei, darum schreibt das Programm auf die Standardausgabe (die umgeleitet ist). Die beiden Tools sind nicht direkt durch eine Pipe verbunden, sondern K3b übernimmt zentral die Steuerung und ist dazu über Pipes mit beiden Shell-Programmen verbunden.

Bei Eingabe von ps ww -Lf -p `pidof k3b mkisofs growisofs (also mit den zusätzlichen Optionen -Lf und dem zusätzlichen Prozessnamen k3b) sieht man zudem, dass K3b und growisofs “multi-threaded” sind, also mehrere Threads verwenden.

Pipeline

Wer Dateien aus Platzmangel auf eine DVD oder BD auslagern möchte, hat vielleicht nicht den fürs Erstellen der ISO-Dateien nötigen Plattenplatz verfügbar. Hier ist ein Feature von mkisofs und cdrecord hilfreich: Sie können die beiden Tools in einer Pipeline laufen lassen und die Daten brennen, ohne zuerst eine separate Image-Datei zu erstellen.

Dazu verknüpfen Sie die beiden Programmaufrufe über das Pipe-Zeichen | wie folgt:

mkisofs -J -r Ordner/ | cdrecord dev=2,0,0 -v -multi -pad -data -

Das letzte einsam stehende Minuszeichen im cdrecord-Aufruf ist kein Fehler, sondern sagt dem Programm, dass es statt einer angegebenen Image-Datei die Daten brennen soll, die es über die Standardausgabe einliest: also das, was mkisofs über die Pipe an cdrecord weiterreicht.

Noch einfacher als über die Kombination von mkisofs und cdrecord brennen Sie einen Ordner mit growisofs auf CD oder DVD: Der folgende Befehl schreibt z. B. die Inhalte des Ordners EasyLinux/ auf den via /dev/sr0 erreichbaren Brenner:

growisofs -J -r -Z /dev/sr0 EasyLinux/

Dank -J und -r wird dabei ein ISO-9660-Dateisystem mit Joliet- und RockRidge-Erweiterungen erzeugt.

Informationen

Unter OpenSuse und Kubuntu verwenden Sie das Programm isoinfo, um Details zu einem auf der Platte liegenden ISO-Image anzeigen zu lassen. Sie geben dabei zwei Parameter an: Mit -i Dateiname nennen Sie die Image-Datei, und -d fordert das Tool auf, die verfügbaren Informationen auszugeben. Listing 1 zeigt eine beispielhafte Ausgabe für ein ISO-Image der EasyLinux-Jahres-DVD 2014.

Listing 1

Ausgabe von “isoinfo -d”

[esser@quad:~]$ isoinfo -d -i ISO/EL-JCD2014.iso 
CD-ROM is in ISO 9660 format
System id: LINUX
Volume id: EasyLinux 2014
Volume set id:
Publisher id: Computec Media GmbH
Data preparer id: Hans-Georg Esser <h.g.esser@easylinux.de>
Application id: GENISOIMAGE ISO 9660/HFS FILESYSTEM CREATOR (C) 1993 E.YOUNGDALE (C) 1997-2006 J.PEARSON/J.SCHILLING (C) 2006-2007 CDRKIT TEAM
Copyright File id:
Abstract File id:
Bibliographic File id:
Volume set size is: 1
Volume set sequence number is: 1
Logical block size is: 2048
Volume size is: 2075892
Joliet with UCS level 3 found
Rock Ridge signatures version 1 found

Die Ausgabe enthält die wichtigsten Metadaten des Images. In der dritten Ausgabezeile sehen Sie die Volume id (deutsch: Datenträgerbezeichnung), die hier EasyLinux 2014 lautet. Sie gibt oft einen Hinweis darauf, welche Inhalte im Image stecken.

Die Felder Publisher id und Data preparer id geben Auskunft darüber, welches Unternehmen und welcher Mitarbeiter den Datenträger “gemastert”, also das ISO-Image erstellt hat. In vielen Images sind diese Felder allerdings leer.

Die beiden Zeilen, die mit Joliet und Rock Ridge signatures beginnen, weisen darauf hin, dass dieses Image kompatibel zu Windows- und Linux-Systemen ist, also die weiter oben erwähnten Joliet- und RockRidge-Extensions enthält.

Bei einer bootfähigen DVD gäbe es noch einen längeren Eintrag, der mit

El Torito VD version 1 found

beginnt: El Torito ist ein Standard, der festlegt, wie bootbare CDs und DVDs aufgebaut sein müssen, damit das BIOS sie als Bootmedium auswählen kann. Die hier verwendete Jahres-DVD enthält aber kein Betriebssystem.

Interessieren Sie sich für die im Image abgelegten Dateien, führt die isoinfo-Option -l dazu, dass Sie eine Liste aller Dateinamen und Dateigrößen erhalten (Abbildung 2); nutzt das Image Joliet- oder Rockridge-Erweiterungen, geben Sie zusätzlich -J bzw. -R an, weil ansonsten die Dateinamen in Großbuchstaben (nach ISO-9660-Standard) erscheinen.

Abbildung 2: Das Programm "isoinfo" kann auch eine Liste aller Dateien auf dem ISO-Image anzeigen.

Abbildung 2: Das Programm “isoinfo” kann auch eine Liste aller Dateien auf dem ISO-Image anzeigen.

Fazit

Für die Arbeit mit ISO-Images müssen Sie nicht unbedingt auf grafische Tools zurückgreifen – wer sich eh in der Shell zu Hause fühlt, kann mit mount, mkisofs und isoinfo manche Arbeiten an den Images beschleunigen. Im Verbund mit cdrecord oder growisofs brennen Sie die Dateien zudem schnell auf CD, DVD oder Blu-ray und können dafür auf den K3b-Einsatz verzichten.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
EasyLinux 03/2015 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben