[[: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}}