Ich habe gerade ein Macbook (OS X 10.5.2, Leopard) wiederhergestellt, das nicht mehr booten konnte, weil es auf einem grauen Bildschirm mit einem Apple-Logo und einem sich drehenden Rad für immer hängen blieb. Der Täter war eine beschädigte Konfigurationsdatei ( /etc/authorization
). Im Folgenden werde ich beschreiben, wie ich das Problem gefunden und behoben habe.
Zuerst habe ich überprüft, ob die Hardware in Ordnung ist, indem ich neu gestartet und gedrückt habe D, um die Hardwarediagnose auszuführen. Die Hardware war in Ordnung, also suchte ich weiter nach Fehlermeldungen.
Nach dem Booten im Verbose-Modus ( Command (⌘)+ V) habe ich festgestellt , dass securityd abgestürzt ist und ein Absturzprotokoll erstellt wurde /Library/Logs/CrashReporter/securityd_2015-06-23-120634_localhost.crash
. Ich habe also noch einmal einen Neustart durchgeführt, um eine Shell im Einzelbenutzermodus ( Command (⌘)+ S) zu erhalten. Das Protokoll zeigte, dass der Absturz durch einen Aufruf von CFDictionaryContainsKey
(der einen EXC_BAD_ACCESS
Fehler auslöste ) verursacht wurde. Dies führte zu meinem Verdacht, dass der Absturz durch eine fehlerhafte Konfigurationsdatei verursacht wurde.
Ich bin schließlich auf diesen Blog-Beitrag gestoßen , der vorschlägt, die Dateiaktivität fs_usage
zu überwachen und zu protokollieren:
mount -uw /
fs_usage > /var/log/fs-usage.log &
exit
Nach dem Neustart habe ich nachgesehen /var/log/fs-usage.log
und festgestellt, dass vor dem Absturz darauf securityd
zugegriffen wurde private/etc/authorization
. Dann habe ich den Inhalt von angesehen /etc/authorization
, und es war in der Tat irreparabel kaputt.
Um diese Datei wiederherzustellen, suchte ich für die ursprüngliche Version der Datei in der Quelle des securityd
Pakets (bezogen auf OS X 10.5.2 Quellcode ). Ich habe schließlich festgestellt etc/authorization.plist
, das einige Ähnlichkeiten mit den Verderbten hatten /etc/authorization
.
Um die Wiederherstellung abzuschließen, habe ich den neuen etc/authorization.plist
auf einen USB-Stick gesteckt, ihn in das Macbook eingesteckt (immer noch im Einzelbenutzermodus) und das Laufwerk wie folgt gemountet :
mount -uw /
launchctl load /System/Library/LaunchDaemons/com.apple.kextd.plist
# Wait about 20 seconds
mkdir /Volumes/usb
mount -t msdos -v -o ro /dev/disk1s1 /Volumes/usb
Dann habe ich die Datei an ihren Zielort kopiert, den USB-Stick abgehängt, synchronisiert und erfolgreich neu gestartet:
cp /Volumes/usb/authorization.plist /etc/authorization
umount /Volumes/usb
sync
reboot