[[:mac|{{ :Apple.png?40|}}]]
===== How To Use -> diskutil =====
Der Befehl diskutil((http://developer.apple.com/mac/library/documentation/Darwin/Reference/ManPages/man8/diskutil.8.html)) ist ein Teil der CLI Variante des GUI-basierten Festplatten-Dienstprogramms. Mit diskutil lassen sich Informationen über Partitionen abrufen (info), die Zugriffsrechte überprüfen (verifyPermissions) und ggf reparieren (repairPermissions), Partitionen löschen (eraseVolume), deren Grösse verändern (resizeVolume), neue Partitionen anlegen (partitionDisk), Partitionen teilen (splitPartition) oder wieder zusammenfügen (mergePartition).
Die Syntax des Befehls lautet: diskutil Kommando [Option] [Partition]
==== Informationen auslesen: ====
Mit dem Kommando list lassen sich Information über alle installierten Devices auslesen:
$ diskutil **list**
/dev/disk0
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *640.1 GB disk0
1: EFI 209.7 MB disk0s1
2: Apple_HFS Macintosh HD 424.0 GB disk0s2
3: Microsoft Basic Data BOOTCAMP 215.8 GB disk0s3
/dev/disk1
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *500.1 GB disk1
1: EFI 209.7 MB disk1s1
2: Apple_HFS HD_2 499.8 GB disk1s2
/dev/disk2
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *500.1 GB disk2
1: EFI 209.7 MB disk2s1
2: Apple_HFS HD_3 499.8 GB disk2s2
/dev/disk3
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *500.1 GB disk3
1: EFI 209.7 MB disk3s1
2: Apple_HFS HD_4 499.8 GB disk3s2
/dev/disk5
#: TYPE NAME SIZE IDENTIFIER
0: FDisk_partition_scheme *2.0 GB disk5
1: Apple_HFS USB-STICK 2.0 GB disk5s1
Wie auch in der Linuxwelt, wo das erste Device zB >>hda<< und das zweite >>hdb<< (bzw. bei SCSI Platten >>sda<< und >>sdb<<) benannt werden, wird bei Mac OS die erste Platte >>disk0<< und die zweite Platte >>disk1<< benannt (-> Device Identifier). Bei Linux wird dann die erste Partition auf dem ersten Device >>hda1<< genannt, bei Mac OS hingegen >>disk0s1<< (-> Device Node). In meinem System residiert die EFI Partition in >>disk0s1<<, die Mac Partition auf >>disk0s2<< und die BootCamp Partition auf >>disk0s3<<.
Die EFI Partition wird auf jedem fest installierten Device angelegt. Hier wird normalerweise das Boot Loader Programm untergebracht. In Mac OS ist diese Partition allerdings leer bzw. kommt beim Booten keine spezielle Rolle zu, der Platz wird lediglich genutzt um Firmware Updates und das Firmware Flash Utility abzulegen.
Im weiteren Verlauf dieses Tutorials verwende ich meinen USB-Stick, der hier als disk5s1 mit dem Namen USB-STICK angezeigt wird. Detailierte Infos über ein Volume bekommt man mit dem Kommando info:
$ diskutil **info** /dev/disk5s1
Device Identifier: disk5s1
Device Node: /dev/disk5s1
Part Of Whole: disk5
Device / Media Name: Untitled 1
Volume Name: USB-STICK
Escaped with Unicode: USB-STICK
Mounted: Yes
Mount Point: /Volumes/USB-STICK
Escaped with Unicode: /Volumes/USB-STICK
File System: HFS+
Type: hfs
Name: Mac OS Extended
Owners: Disabled
Partition Type: Apple_HFS
Bootable: Not bootable
Media Type: Generic
Protocol: USB
SMART Status: Not Supported
Volume UUID: F717C9AB-A483-3C14-996E-07736D2CB9C1
Total Size: 2.0 GB (1998710784 Bytes) (exactly 3903732 512-Byte-Blocks)
Volume Free Space: 2.0 GB (1985560576 Bytes) (exactly 3878048 512-Byte-Blocks)
Read-Only Media: No
Read-Only Volume: No
Ejectable: Yes
Whole: No
Internal: No
Low Level Format: Not Supported
Ein nicht ganz unwichtiger Parameter in der Ausgabe ist >>Owners<<. Sind die Ownerships auf dem Volume aktiviert bedeutet das, dass den Dateien, Verzeichnissen und Links feste Eigentümer (Owner, Groups) zugewiesen werden. Im Umkehrschluss bedeutet >>disabled<< bzw. deaktiviert, dass der momentane Benutzer auf das Volume zugreifen kann. Das ist vor allem wichtig bei USB-Sticks oder anderen Wechseldatenträgern, dass jeder Benutzer auch auf die Daten zugreifen kann, wenn er denn einen solchen Datenträger an seinem Gerät anschließt, auch wenn sich der Benutzername von dem unterscheidet, welcher die Daten erstellt hat. Bei HFS+ formatieren USB Datenträgern ist dies bereits standardmäßig der Fall.
Bei gemounteten Volumes kann das Volume auch über seinen Mountpoint angesprochen werden. Der Befehl diskutil info /dev/disk5s1 liefert das selbe Ergebniss wie der Befehl diskutil info /Volumes/USB-STICK. Mit dem Kommando mount bzw. unmount werden Partitionen eingehängt bzw. wieder ausgeworfen.
$ diskutil **unmount** /Volumes/USB-STICK/
Volume USB-STICK on disk5s1 unmounted
$ diskutil **mount** /dev/disk5s1
Volume USB-STICK on /dev/disk5s1 mounted
==== Datenträger bzw. Volumes einhängen und auswerfen: ====
Mit dem Kommando unmountDisk werden alle Partitionen eines Datenträgers auf einmal ausgeworfen. Mit der Option force wird das Auswerfen erzwungen, wenn das Volume nicht auf normale Art und Weise ausgeworfen werden kann. Eine weitere Variante zB Wechseldatenträger auszuwerfen ist das Kommando eject. Anders herum, können mit mountDisk auch alle Partitionen eines Datenträgers auf einmal eingehängt werden, zusätzlich kann mit der Option readOnly auch der Schreibzugriff auf dem Volume bzw. Datenträger unterbunden werden:
$ diskutil **unmountDisk force** /dev/disk5
Forced unmount of all volumes on disk5 was successful
$ diskutil **mountDisk readOnly** /dev/disk5
Volume(s) mounted successfully
$ mount
~~~ snip ~~~
/dev/disk5s1 on /Volumes/USB-STICK (hfs, local, nodev, nosuid, read-only, noowners)
$ diskutil **eject** /dev/disk5
Disk /dev/disk5 ejected
==== Datenträger löschen: ====
Zum Löschen von Datenträgern können verschiedene Methoden zum Einsatz kommen. Die einfachste Methode ist das Kommando reformat. Der Nachteil dieser Variante liegt darin, dass die Daten wieder herzustellen sind. reformat entfernt zwar das vorhandene Dateisystem, lässt jedoch die Dateistruktur erstmal unberührt. Das entspricht der Option >>Daten nicht löschen<< in den Sicherheitsoptionen des Festplatten-Dienstprogramms. Mit den Kommandos zeroDisk, randomDisk und secureErase können auch Restbestände von Daten entfernt werden, was eine Restaurierung der Daten erheblich erschwert, bis unmöglich macht.
Während das Kommando zeroDisk den Datenträger oder das Volume einfach mit Nullen überschreibt, was der Festplatten-Dienstprogramm Option >>Daten mit Nullen überschreiben<< entspricht, verwendet das Kommando randomDisk eine Zufallsstruktur zum Überschreiben des Datenträgers bzw. des Volumes. Diese Option wird im Festplatten-Dienstprogramm nicht angeboten. Des Weiteren muss dem Kommando randomDisk noch die Anzahl der Läufe mitgegeben werden. Die mit Abstand aber sicherste Variante ist secureErase, welches drei Modis kennt. Modus 1 entspricht einem einfachen randomDisk während bei Modus 2 das Medium in sieben Durchläufen mit Zufallswerten überschrieben wird. Dieser Modus entspricht der Empfehlung des BSI für das sichere Löschen von Datenträgern. Der dritte Modus entspricht wohl einem Paranoia Modus, hier wird der Datenträger in 35 Läufen abwechselnd mit Nullen, mit Einsen und mit Zufallswerten überschrieben. Wer diesen Modus nutzen möchte, sollte allerdings nicht in Eile sein. Die Bearbeitungszeit eines Datenträgers aktueller Grössenordnungen (≈ 1TB) wird viele, viele Stunden benötigen. Wenn die Steuerfahndung bereits an der Tür klingelt wird es wohl zu spät sein. Diese beiden Modis sind ebenfalls im Festplatten-Dienstprogramm anwählbar.
$ diskutil zeroDisk /dev/disk5
Started erase on disk5
Finished erase on disk5
Das Kommando secureErase kennt noch eine weitere Option, welche in der Lage ist nur den freien Speicher auf dem Volume zu löschen bzw. zu überschreiben. Werden Daten auf einem Volume gelöscht, werden diese nicht wirklich gelöscht sondern nur die Zuordnung des Speicherbereichs aus dem //Inhaltsverzeichnis// des Volumes gelöscht. Die Informationen in diesen Speicherbereichen bleiben solange unangetastet, bis dieser Bereich vom System mit neuen Daten gefüllt wird. Die //secureErase//-Option freespace übernimmt diese Aufgabe für alle frei gekennzeichneten Bereiche und erschwert somit eine Rekonstruktion kürzlich gelöschter Daten.
$ diskutil secureErase freespace 1 /dev/disk5s1
Started erase on disk5s1 USB-STICK
Creating temporary file
Securely erasing file
Creating temporary file
Securely erasing file
Mounting disk
Finished erase on disk5s1 USB-STICK
==== Partitionen anlegen ====
Das Kommando eraseVolume löscht zwar auch ein Volume, analog zum og Kommando //reformat//-Kommando, jedoch wird hier nicht das Dateisystem neu erstellt sondern man kann dem Kommando Informationen mitgeben, welche im gleichen Zug ein neues Dateisystem auf dem Datenträger oder dem Volume anlegt. Zum Anlegen eines neuen Volumes kann man folgende Kürzel für das entsprechende Dateisystem verwenden:
* **>>JHFS+<<**: Hierbei handelt es sich um das von Mac OS standardmäßige Dateisystem. Im Festplatten-Dienstprogramm wird ein solches Volume mit Mac OS Extended (Journaled) bezeichnet. Es kann auch >>HFS+<< angegeben werden, dann wird auf die Journaling Funktion des Dateisystems verzichtet.
* **>>Case-sensitive Journaled HFS+<<**: Hier wird wiederum das Mac OS Standard Dateisystem verwendet, wobei bei Datei- und Verzeichnisnamen bei Gross- und Kleinschreibung unterschieden wird. Die Verwendung dieses Dateisystems wird allerdings nicht empfohlen, da einige Programme damit Probleme haben können.
* **>>MS-DOS<<**: Das unter Windows und auf vielen Wechseldatenträgern gebräuchliche Dateisystem FAT wird verwendet.
Folgender Befehl löscht nun das Volume /Volumes/USB-STICK (/dev/disk5s1) und legt ein neues Volume mit dem Namen MyStick und dem Dateisystem HFS+ (Journaled) an:
$ diskutil eraseVolume "JHFS+" MyStick /dev/disk5s1
Started erase on disk5s1 USB-STICK
Unmounting disk
Erasing
Initialized /dev/rdisk5s1 as a 2 GB HFS Plus volume with a 8192k journal
Mounting disk
Finished erase on disk5s1 MyStick
Des Weiteren kann das Kommando partitionDisk zu Erstellen von Partitionen verwendet werden. Hier werden allerdings etwas mehr mehr Information benötigt. Zunächst muss dem Kommando das Partitionsschema übergeben werden. Hier kämen die >>Apple-Partitionstabelle<< (-> APMFormat), die >>GUID-Partitionstabelle<< (-> GPTFormat) und der klassische >>Master-Boot-Record<< (-> MBRFormat) in Frage. Es gibt noch ein weiteres Partitionsschema, welches aber zunehmend an Bedeutung verliert -> OS9Drivers. Dabei handelt es sich das APMFormat, wobei noch zusätzlich ein Treiber installiert wird, der für die Benutzung im klassischen MAc OS (zB OS 9) benötigt wird.
Der Angabe des Schemas folgt die Angabe des Dateisystemtyps (HFS+, MS-DOS etc), der Name des Volumes (zB MyStick im og Beispiel) und die gewünschte Grösse des Volumes. Werden mehr Volumes angelegt, kann die Grösse direkt durch die Angabe der Gigabytes (zB 10G für 10 Gigabyte) oder relativ in Prozent (zB 50%) erfolgen. Der folgende Befehl legt auf dem Device /dev/disk5 (mein USB-Stick) zwei gleich grosse Partitionen an (50%), wobei ein Volume HFS+ und das zweite MS-DOS (FAT) formatiert wird. Die Volumebezeichnung für das HFS+ Volume ist AppleStick und für das MS-DOS Volume WinStick. Das Partitionsschema wird GUID sein:
$ diskutil partitionDisk /dev/disk5 GPTFormat "HFS+" AppleStick 50% "MS-DOS" WinStick 50%
Started partitioning on disk5
Unmounting disk
Creating partition map
Waiting for disks to reappear
Formatting disk5s1 as Mac OS Extended with name AppleStick
Formatting disk5s2 as MS-DOS (FAT) with name WinStick
Finished partitioning on disk5
/dev/disk5
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *2.0 GB disk5
1: Apple_HFS AppleStick 999.8 MB disk5s1
2: Microsoft Basic Data WINSTICK 998.2 MB disk5s2
==== Grosse der Partitionen verändern, Partitionen zusammenführen ====
Ein nachträgliches Ändern der Partitionstabelle ist zwar möglich, ist aber nie ohne Risiko. Sie sollten deshalb zuvor eine Sicherungskopie des Inhalts der betreffenden Partitionen anlegen. Ein Zusammenlegen zweier Partitionen ist nur dann möglich, wenn diese physikalisch nebeneinander liegen und es bleiben auch nur die Daten der ersten Partition erhalten! Ein //mergePartitions// und //resizeVolumes// ist nur auf fest angeschlossenen Festplatten möglich, Partitionen auf USB-Sticks oder USB-Festplatten können nicht oder nur mit Datenverlust in der Grösse verändert werden bzw. zusammen geführt werden!
Die Kommandos zum Verändern der Grösse eines Volumes sind zum Einem -> resizeVolume, zum Zusammenführen zweier Volumes -> mergePartitions und zum Teilen eines Volumes -> splitPartition.
Der erste Befehl teilt die MS-DOS Partition in zwei gleich Partitionen auf. Eine Angabe in % ist hier leider nicht möglich, deshalb habe ich beiden Partitionen eine Grösse von 450MB zugewiesen. Da die gesamte Grösse des Volumes aber grösser ist als die Summe der dem Befehl übergebenen Grössen addiert diskutil den verbleibenden freien Speicher dem letzten Volume:
$ diskutil splitPartition /dev/disk5s2 "MS-DOS" WINSTICK1 **450M** "MS-DOS" WINSTICK2 **450M**
Started partitioning on disk5s2 WINSTICK
Splitting
Unmounting disk
Waiting for disks to reappear
Formatting disk5s2 as MS-DOS (FAT) with name WINSTICK1
Formatting disk5s3 as MS-DOS (FAT) with name WINSTICK2
Finished partitioning on disk5s2 WINSTICK
/dev/disk5
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *2.0 GB disk5
1: Apple_HFS AppleStick 999.8 MB disk5s1
2: Microsoft Basic Data WINSTICK1 449.8 MB disk5s2
3: Microsoft Basic Data WINSTICK2 547.4 MB disk5s3
Beim Zusammenfügen zweier Partitionen wird zunächst das Dateisystem der Partition angegeben die den Bereich der anderen Partition zugewiesen bekommt. Darauf folgt der Name der neuen Partition, dieser muss angegeben werden, obwohl diskutil diesen beim mergePartitions ignoriert. Dann geben Sie den Devicenamen der Partition an, die erhalten bleiben soll, gefolgt vom Devicenamen der Partition deren Speicherbereich verwendet werden soll.
**Hinweis**: Da das Zusammenführen zweier Partitionen nur bei fest angeschlossenen Datenträgern ohne Neuformatierung und somit ohne Datenverlust geht, ist die Ausgabe des folgendes Befehls auf einen USB-Stick zurückzuführen:
$ diskutil mergePartitions "MS-DOS" WIN /dev/disk5s2 /dev/disk5s3
The chosen disk does not support resizing, do you wish to format instead? (y/N) y
Merging partitions into a new partition
Start partition: disk5s2 WINSTICK1
Finish partition: disk5s3 WINSTICK2
Started partitioning on disk5
Merging partitions
Waiting for disks to reappear
Formatting disk5s2 as MS-DOS (FAT) with name WIN
Finished partitioning on disk5
/dev/disk5
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *2.0 GB disk5
1: Apple_HFS AppleStick 999.8 MB disk5s1
2: Microsoft Basic Data WIN 998.2 MB disk5s2
Um nun die Grösse eines Volumes zu ändern, damit möglicherweise eine weitere Partition angelegt werden kann, wird das Kommando resizeVolume verwendet. Da es bei dem hier gezeigten Verfahren nicht möglich ist nachträglich freien Speicher einer neuen Partition zuzuweisen, sollten Sie die zweite Partition beim //resizeVolume//-Kommando gleich mit angeben. Dieses Verfahren kommt dann dem split-Kommando gleich, mit dem Unterschied, dass beim //resizeVolume//-Kommando die Daten der ersten Partition erhalten bleiben, sofern diese noch in die neue Grösse der Partition passen.
**Hinweis**: Da dieses Verfahren auf einem USB-Stick ebenfalls nicht möglich ist, zeige ich hier nur die Syntax des Befehls exemplarisch, denn ein //reformat// wie zB beim //mergePartitions//-Kommando ist beim //resizeVolume//-Kommando nicht vorgesehen:
$ diskutil resizeVolume /dev/disk5s2 25% 1 "MS-DOS" WIN 25%
Volume format does not support resizing
--- //pronto 2010/05/30 19:43//
==== Zugriffsrechte überprüfen/reparieren ====
Es besteht sowohl im Festplatten-Dienstprogramm die Möglichkeit die Zugriffsrechte zu reparieren, wie natürlich auch im CLI Befehl diskutil. Das Kommando hierfür lautet verifyPermissions für die Überprüfung und repairPermissions für die ggf notwendige Reparatur:
$ diskutil verifyPermissions /
Started verify/repair permissions on disk0s2 Macintosh HD
Permissions differ on "Applications/Safari.app/Contents/Info.plist", should be -rw-r--r-- , they are -rwxr-xr-x
Finished verify/repair permissions on disk0s2 Macintosh HD
$ diskutil repairPermissions /
Started verify/repair permissions on disk0s2 Macintosh HD
Permissions differ on "Applications/Safari.app/Contents/Info.plist", should be -rw-r--r-- , they are -rwxr-xr-x
Repaired "Applications/Safari.app/Contents/Info.plist"
Finished verify/repair permissions on disk0s2 Macintosh HD
Weitere Informationen bzgl der Überprüfung und Reparatur der Zugriffsrechte finden Sie im Artikel: [[:mac:repair_permissions|-> Zugriffsrechte reparieren]]
--- //Pronto 2010/07/27 18:17//
==== Ownership auf einem Volume aktivieren ====
Im Gegensatz zu Volumes auf internen Festplatten werden auf Volumes auf externen Datenträgern (zB USB-Festplatten) Benutzerrechte nicht automatisch berücksichtigt. Das bedeutet, dass für die Objekte (File System Object -> FSO) immer der aktuelle Benutzer, welcher das Volume eingehängt hat, Eigentümer des Objekts ist und somit auch Zugriff auf diese hat. Überprüfen können Sie diese Einstellung mit dem oben bereits gezeigten >>info<< Parameter des >>diskutil<< Kommandos:
$ diskutil info disk4s1
Device Identifier: disk4s1
Device Node: /dev/disk4s1
Part Of Whole: disk4
Device / Media Name: Untitled 1
Volume Name: USBSTICK
Escaped with Unicode: USBSTICK
Mounted: Yes
Mount Point: /Volumes/USBSTICK
Escaped with Unicode: /Volumes/USBSTICK
File System: Journaled HFS+
Type: hfs
Name: Mac OS Extended (Journaled)
Journal: Journal size 8192 KB at offset 0x11000
**Owners: Disabled**
Partition Type: Apple_HFS
Bootable: Not bootable
Media Type: Generic
Protocol: USB
SMART Status: Not Supported
Volume UUID: 71DA45FC-FAD2-3F1E-BC6E-4EA53474399B
Total Size: 2.0 GB (1999567872 Bytes) (exactly 3905406 512-Byte-Blocks)
Volume Free Space: 2.0 GB (1978003456 Bytes) (exactly 3863288 512-Byte-Blocks)
Read-Only Media: No
Read-Only Volume: No
Ejectable: Yes
Whole: No
Internal: No
Damit nun auf solchen Volumes die eingestellten Benutzerrechte auch greifen, kann man die >>Ownerships<< auf solchen Volumes aktivieren:
$ sudo diskutil enableOwnership disk4s1
Filesystem user/group ownership enabled
Der Status der Ownerships wird in der lokalen Volume Database >>/var/db/volinfo.database<< für jedes Volume hinterlegt und beim Remount entsprechend der Konfiguration eingestellt, dadurch hat diese Einstellung nur auf dem lokalen System Gültigkeit und die Ownerships werden auf einem anderen System weiterhin ignoriert!
**Verwandte Artikel**:
[[:mac_diskutil_debug_log|-> Debug Log im Festplattendienstprogramm]]
--- //pronto 2011/09/19 13:30//
{{keywords>osx eraseVolume splitPartition repairPermissions mergePartition resizeVolume verifyPermissions partitionDisk FAT MS-DOS NTFS HFS+ GUID Festplatten Dienstprogramm}}