Apple, Mac, Service, Support, Administration, Beratung, Sicherheit, Hotline, Vertrieb, Netzwerk, B2B

HowTo: DiskUtility im Single-User-Modus unter Lion und Mountain Lion

Gelegentlich könnte es auch in OS X 10.7 Lion oder 10.8 Mountain Lion nützlich sein, Apples DiskUtility im Single-User Modus verwenden zu können. Ein Beispiel ist das Fehlen der Recovery-Partition auf Macs in einer Enterprise-Umgebung. Hier werden baugleiche Macs häufig über ein Kopieren eines vorbereiteten DiskImages “installiert”. Sicherlich wäre das Starten eines Diagnose-Systems von Festplatte, Netzwerk oder USB-Stick deutlich komfortabler, als das Arbeiten im Single-User Modus, doch es gibt gute Gründe dafür.

Apple empfiehlt bspw. die Reparatur der Zugriffsrechte eines Systemvolumes nach Möglichkeit nicht von anderen Systemen aus zu führen, da durch Updates Änderungen an den Zugriffsrechten eingeflossen sein könnten. Diese Änderungen werden dann auf dem jeweiligen Volume vermerkt, ein anderes System weiss nichts davon.

Das Starten des Festplatten-Dienstprogramms (diskutil) im Single-User Modus scheitert zunächst mit einer Fehlermeldung. Es fehlen benötigte Dienste für diskutil.

Unable to run because unable to use the DiskManagement framework.
Common reasons include, but are not limited to, the DiskArbitration
framework being unavailable due to being booted in single-user mode.

Ein paar Tests haben ergeben, dass die folgenden Dienste benötigt werden:

  1. notifyd
  2. configd
  3. diskmanagementd
  4. securityd
  5. disarbitrationd

Nach dem manuellen Starten dieser daemons, startet diskutil problemlos und kann bspw. zur Reparatur der Zugriffsrechte verwendet werden:

diskutil repairPermissions /

Das folgende kleine shell-script erspart das manuelle Mounten der Root-Partition mit Schreibrechten und das Starten der Dienste und wurde unter Lion und Mountain Lion erfolgreich getestet:

#!/bin/bash
mount -uw /

launchctl load /System/Library/LaunchDaemons/com.apple.notifyd.plist
launchctl load /System/Library/LaunchDaemons/com.apple.configd.plist
launchctl load /System/Library/LaunchDaemons/com.apple.diskmanagementd.plist
launchctl load /System/Library/LaunchDaemons/com.apple.securityd.plist
launchctl load /System/Library/LaunchDaemons/com.apple.diskarbitrationd.plist

diskutil repairpermissions /

Das Script sollte nach Möglichkeit an einer Stelle abgelegt werden, an der es aus dem Single-User-Modus ohne grossen Navigationsaufwand gestartet werden kann.