Hdiutil

From macwrench

Mit dem Kommandozeilen-Tool hdiutil können Disk-Images erstellt, bearbeitet und verwendet werden. Für die grundlegenden Anwendungswzecke existiert als graphisches Frondend das Festplatten-Hilfsprogramm, für weitergehende und umfangreichere Operationen bietet sich der Weg über das Terminal an.

In Mac OS X Versionen vor 10.3 existierte für die Erstellung Nutzung von DiskImages noch das Hilfsprogramm "DiskCopy.app", dessen Funktionen jedoch mit Version 10.3 auf das Festplatten-Dienstprogramm (Disk Utility.app) und eine neue Hintergrundanwendung namens "DiskImageMounter.app" (zu finden unter /System/Library/CoreServices/") augfgeteilt wurden.

Weitere Informationen gibt es auch in der entsprechenden manpage von hdiutil.


Syntax[edit]

Die grundlegende Syntax von hdiutil ist

hdiutil <AKTION> [OPTIONEN]

wobei eine Aktion z.B. das Erstellen eines neuen oder das Vergrößern eines existierenden Images sein kann. Mit verschiedenen Optionen lässt sich dabei die Funktionsweise beeinflussen

Aktionen[edit]

Im Folgenden eine Liste aller möglichen Aktionen mit den zugehörigen Minimalangaben. Weitere Optionen zu den jeweiligen Kommandos sind über die Aktion help zu erreichen und stehen in der manpage.

Aktion Funktion
help Zeigt den Hilfetext von hdiutil an
help AKTION -help Zeigt den die zur angegebenen Aktion gültigen Optionen an
attach image Registriert das angegebene Image im System als Gerätedatei, z.B. "/dev/disk1" (Synonym: mount)
detach devicename Entfernt ein mit attach oder mount eingebundenes Disk Image (Synonym: eject)
create groesse oder image Erstellt ein Image mit der gegebenen Größe oder aus einer angegebenen Imagedatei
convert image -format -o zielimage Wandelt das Format einer gegeben Imagedatei in ein anderes um und speichert diese in einer Zieldatei (siehe dmg Images konvertieren).
makehybrid -o quellimage Ermöglicht mit Hilfe des DiscRecording Frameworks die Erstellung eines hybriden Dateisystems (Mac/PC) als schreibgeschütztes Disk-Image. Die zu verwendenden Dateisysteme (iso und/oder hfs) können als Optionen angegeben werden.

Angaben wie [yes|no] bedeuten dabei, dass entweder yes oder no angegeben werden kann.

compact image Entfernt nicht benutzte Bereiche aus einem sog. "SPARSE" Image (das sind Images, deren Größe sich dem Inhalt dynamisch anpasst. Sie wachsen also mit).
info Zeigt Informationen an über das DiskImages.framework, die verwendeten Treiber und alle aktuell eingebundenen (gemounteten) Images.
load Ermöglicht das manuelle Laden des Disk Image Treibers. Er wird benötigt, um Disk Images überhaupt benutzen zu können. Das erfolgt üblicherweise automatisch, seit 10.2 wird der Treiber auch wieder automatisch entladen, sobald das letzte eingebundene Image ausgeworfen wird.
checksum image -type imagetyp Überprüft die Prüfsumme (checksum) eines Images, um eventuelle Fehler zu erkennen (erfolgt standardmäßig immer beim Einbinden von Imagedateien, die sich auf dem lokalen System befinden - also nicht auf Windows- oder AFS-Freigaben)
unflatten image (?)
flatten image (?)
hfsanalyze Gibt Informationen über ein vorhandenes HFS oder HFS+ Dateisystem einer Imagedatei aus.
imageinfo gibt verschiedenste Informationen über ein Disk Image aus
mount siehe attach
mountvol devicename Bindet ein Dateisystem (z.B. /dev/disk1) als Disk-Image ein, ähnlich dem Befehl "diskutil mount".
unmount volume entlädt ein mit mountvol eingebundenes Dateisystem.
plugins Gibt Informationen über die verschiedenen PlugIns des DiskImage Frameworks aus, über die selbiges funktionell erweitert werden kann.
-no|-query] image (De)Aktivierung des Postprocessing eines Images, z.B. nach dem Herunterladen aus dem Internet. Beim ersten Aktivieren des Images wird dadurch der Inhalt des Images in einen gleichnamigen Ordner im selben Verzeichnis kopiert und die Imagedatei wandert in den Papierkorb.
resize groesse image Ermöglicht es, die Größe eines Images zu verändern, um sie beispielsweise anschließend mit "hdiutil burn" auf CD oder DVD schreiben zu können.
segment Teilt ein Disk Image in mehrere Teile auf, um beispielsweise große Imagedateien zum Download bereitzustellen.
pmap quellimage Zeigt die Partitionstabelle eines Disk Images an
burn image Disk Images mit Hilfe des DiscRecording Frameworks auf CD/DVD brennen

Das Ausgabeformat vieler Aktionen lässt sich mit Hilfe folgender Parameter entsprechend verändern, beispielsweise werden bei folgendem Kommando die Informationen als XML-Plist ausgegeben, was besonders für Mac-/iOS-Entwickler sehr praktisch ist:

hdiutil imageinfo ./MyDiskImage.dmg -plist

Optionen[edit]

Eine vollständige Liste aller möglichen Optionen würden den Rahmen des Artikels hier sprengen, deswegen sei an dieser Stelle auf die manpage von hdiutil verwiesen.

Beispiele[edit]

erstellen[edit]

.dmg Image (HFS+)[edit]

hdiutil create -volname MeinBackup -srcfolder ./meineWichtigenDaten/ ./backup.dmg

Falls im Volumenamen Leerzeichen vorkommen, muss der Name in doppelte Hochkommata (") eingeschlossen werden.

ISO-Image[edit]

hdiutil create -format UDTO -srcfolder ./meineWichtigenDaten/ ./backup.dmg

für Windows lesbares Image[edit]

Dazu wird erst - wie oben beschrieben - ein ganz normales .dmg Image erstellt, das anschließend konvertiert wird:

hdiutil makehybrid -iso -joliet -o ~/Desktop/file.iso ~/Desktop/file.dmg
hdiutil makehybrid -iso -joliet -o ~/Desktop/file.iso /Volumes/Disc

mit den folgenden Optionen können noch Volume-Namen festgelegt werden:

-joliet-volume-name MeineDaten
-iso-volume-name MeineDaten

Video-DVD-Image aus VIDEO_TS-Verzeichnis erzeugen[edit]

Um aus einem VIDEO_TS Verzeichnis ein .ISO Image für das Brennen auf eine DVD zu erstellen, ist folgendes zu tun:

  1. VIDEO_TS Verzeichnis in ein Unterverzeichnis (z.B. MY_DVD) verschieben
  2. im Terminal in dieses Verzeichnis wechseln und folgendes Kommando eingeben:
hdiutil makehybrid -udf -udf-volume-name "<DVD-NAME>" -o <FILENAME>.iso ./

<DVD_NAME> und <FILENAME> sind entsprechend zu ersetzen

Allgemein[edit]

hdiutil create 
   -type <UDIF|SPARSE> 
   -fs <HFS+|HFS+J|HFSX|HFS|MS-DOS|UFS> 
   -format <UDZO|UDRO|UDRW|UDTO|UDSP|...> 
   -srcfolder<quelle> 
   -volname <name> 
   <image>

Hybrid-Image[edit]

 hdiutil makehybrid ...

bearbeiten[edit]

  • resize
  • flatten/unflatten
  • segment
  • compact (für sparse images)
  • chpass

überprüfen[edit]

  • verify
  • imageinfo
  • hfsanalyze
  • checksum
  • info
  • pmap

Freien Speicher freigeben[edit]

Um bei mitwachsenden Images (sog. "Sparse Images", Dateiendung ".sparseimage") freien Speicher wieder freizugeben und somit deren Größe zu reduzieren, ist im Terminal folgende Anweisung zu verwenden:

hdiutil compact image.sparsebundle

Wenn hdiutil die Anweisung mit der Meldung "... ist zeitweilig nicht verfügbar" quittiert, ist das Image höchstwahrscheinlich gerade gemountet.

Disk Images konvertieren[edit]

Mit Hilfe von hdiutil lassen sich Disk Images auch konvertieren, um sie beispielsweise auf einem PC weiterverwenden zu können, hier im Beispiel wird ein .ISO Image in ein .img Image konvertiert (z.B. zum Wiederherstellen auf einen USB-Stick):

hdiutil convert -format UDRW -o ziel.img quelle.iso

Mehr Informationen dazu gibt es im Artikel "dmg Images konvertieren".

Disk Images brennnen[edit]

Disk Images lassen sich ganz einfach mit dem folgenden Befehl brennen:

hdiutil burn DiskImage.dmg

Optionen[edit]

Die wichtigsten Optionen sind dabei:

Option Funktion
-speed Angabe der Brenngeschwindigkeit, z.B. 4, 16 oder max
-device Angabe einer Gerätedatei über den OpenFirmware Pfad, z.B. hd1: oder dvd:
-list Listet alle im System verfügbaren Brenner auf (für die Verwendung von -device)
-testburn Nur eine Simulation durchführen
-sizequery Nur den auf der CD/DVD benötigten Platz berechnen (kann durch ein anderes Dateisystem vom Platzbedarf auf der Festplatte variieren)
-noeject CD/DVD nach dem Brennen nicht auswerfen
-noverifyburn Medium nach dem Brennen nicht überprüfen
-forceclose Medium nach dem Brennen abschließen
-optimizeimage Disk Image für das brennen auf CD/DVD optimieren (bzw. für Zugriffe auf CD/DVD)
-nounderrun Buffer Underrun Schutz ausschalten

Mehr Optionen erhält man durch die Eingabe von

hdiutil burn -help

DVD/CD-RW löschen[edit]

Wiederbeschreibbare Rohlinge lassen sich mit dem hdiutil auch wahlweise schnell oder volständig löschen, und zwar mit Hilfe von

hdiutil burn -erase

oder

hdiutil burn -fullerase

Images verwenden[edit]

  • aktivieren (attach / mountvol)
  • Deaktivieren (detach / unmount)

Hinweise[edit]

Gerätenamen von CD-/DVD-Laufwerken[edit]

Die Gerätenamen (/dev/xyz) von diesen Laufwerken werden dynamisch erzeugt, und zwar in der Reihenfolge, in der sie beim Systemstart eingebunden werden. Im Normalfall ist also das (erste) interne CD-/DVD-Laufwerk ...

/dev/rdisk0

und alle folgenden CD-/DVD-/BD-/Floppy-Laufwerke ...

/dev/rdisk1
/dev/rdisk2
...
/dev/rdiskN

Weitere Informationen[edit]

Früher (bis Mac OS 10.2) erfolgte der Zugriff auf HDI Disk Images über die beiden Tools hdid und disktool, die mittlerweile jedoch nur noch aus Kompatibilitätsgründen verwendet werden. Anstatt dessen wird nun von hdid nur noch das entsprechende Framework aufgerufen, für die übrigen Funktionen und den Zugriff durch den Benutzer ist das Programm hdiutil zu verwenden.

Manpages:

weitere Manpages:

  • hdiutil für die Nutzung von .dmg Images
  • drutil für die Verwendung von CD/DVD Brennern (verwendet das DiscRecording framework)

Kurztipps:

Sonstiges: