Funktionsfähigkeit des Befehls diskutil im OSX Mavericks-Einzelbenutzermodus

4

Momentan schreibe ich einige Wartungsskripte für den Einzelbenutzermodus. Mein aktuelles Ziel ist es, Berechtigungsreparaturen und Festplattenformatierungen mit dem Befehl diskutil im Einzelbenutzermodus durchführen zu können. Das Ausführen dieser Aufgabe in früheren Versionen von OS X bestand lediglich darin, die Root-Partition bereitzustellen und die folgenden Start-Daemons zu starten:

com.apple.diskmanagementd

com.apple.diskarbitrationd

Danach musste ich nur noch den folgenden Befehl ausführen, um Berechtigungen erfolgreich zu reparieren:

diskutil repairpermissions /

In Mavericks funktioniert dieser Befehl jedoch nicht mehr und ich kann nicht herausfinden, warum. Das Ausführen des Befehls diskutil (auch ohne Parameter) gibt eine einfache und nicht hilfreiche Meldung zurück:

Killed: 9

Ich kann nicht herausfinden, was hier los ist. Zusätzlich zu den Disk Arbitration-Daemons, die diskutil benötigt, lädt mein Wartungsskript auch die folgenden Daemons:

com.apple.notifyd

com.apple.syslogd

com.apple.configd

com.apple.kuncd

com.apple.kextd

com.apple.KernelEventAgent

com.apple.distnoted.xpc.daemon

com.apple.aslmanager

com.apple.opendirectoryd

com.apple.coreservicesd

com.apple.securityd

com.apple.fseventsd

com.apple.cfprefsd.xpc.daemon

Ich erhalte die gleiche Antwort, unabhängig davon, ob ich alle oben genannten Dämonen oder nur die beiden lade, die zuvor für den Betrieb von diskutil erforderlich waren. Wenn ich vom Einzelbenutzermodus booten möchte (indem ich den gesamten Inhalt von / System / Library / LaunchDaemons lade), kann ich diskutil verwenden, nachdem der Computer seinen Bootvorgang beendet hat.

Kann jemand, der mehr über die Funktionsweise des Mac OS weiß, möglicherweise feststellen, was fehlt?

Alex Plumb
quelle

Antworten:

5

Ich bin nicht sicher, was das Problem verursacht, aber es scheint kein fehlender Daemon zu sein - ich habe versucht, alles /System/Library/LaunchDaemonseinzuladen com.apple.WindowServer.plist, außer , und es ist immer noch auf die gleiche Weise fehlgeschlagen. Es schlägt sogar fehl, wenn es nur ausgeführt wird diskutil, wodurch normalerweise nur eine Verwendungsübersicht gedruckt wird. Auch "Killed: 9" deutet darauf hin, dass es sich nicht selbst abstürzt, sondern dass etwas anderes ( launchd?) Es tötet.

Wie auch immer, es gibt ein paar gute Neuigkeiten: Es diskutil repairpermissionsist wirklich nur ein Front-End für das repair_packagesProgramm, und das scheint im Einzelbenutzermodus gut zu laufen (auch wenn überhaupt keine Daemons geladen sind):

/usr/libexec/repair_packages --repair --standard-pkgs

Das Formatieren von Datenträgern wird wahrscheinlich schwieriger. Sie können bei Verwendung suchen gpt, newfs_hfsund dergleichen.

Gordon Davisson
quelle
Genial! Vielen Dank. Es sieht so aus, als wäre es repair_packagesseit 10.6.
Alex Plumb
Übrigens, haben Sie eine Idee, wie ich den SMART-Status im Einzelbenutzermodus überprüfen würde? Die alte Methode ist diskutil info disk0 | grep SMART, aber das funktioniert nicht mehr.
Alex Plumb
Keine Ahnung auf SMART, sorry. Das kann man diskutil selber machen.
Gordon Davisson
-1

el capitan schützt jetzt die Berechtigungen, auch wenn Sie / usr / libexec / repair_packages --repair --standard-pkgs verwenden (danke dafür). Es ist nicht mehr möglich, Berechtigungen zu reparieren. Die zu reparierenden Dateisysteme sind schreibgeschützt. Viele Grüße und danke Martin

Martin Rass
quelle
Ich habe etwas gefunden - vielleicht mit Deaktivierung des Systemschutzes
Martin Rass
Sie können SIP mit csrutil disableim Wiederherstellungsmodus
TheBro21