Получение команды diskutil для работы в однопользовательском режиме OSX Mavericks

4

В настоящее время я пишу несколько сценариев обслуживания в однопользовательском режиме. Моя текущая цель - иметь возможность выполнять восстановление разрешений и форматирование диска с помощью команды diskutil в однопользовательском режиме. Выполнение этой задачи в предыдущих версиях OS X было простым вопросом монтирования корневого раздела и запуска следующих демонов запуска:

com.apple.diskmanagementd

com.apple.diskarbitrationd

После этого мне только нужно было выполнить следующую команду для успешного восстановления разрешений:

diskutil repairpermissions /

Однако в Mavericks эта команда больше не работает, и я не могу понять, почему. Выполнение команды diskutil (даже без параметров) возвращает простое и бесполезное сообщение:

Killed: 9

Я не могу понять, что здесь происходит. В дополнение к демонам арбитража диска, которые требуются diskutil, мой скрипт обслуживания также загружает следующие демоны:

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

Я получаю один и тот же ответ, загружаю ли я все вышеперечисленные демоны или только два, которые ранее требовались для работы diskutil. Если я выберу загрузку из однопользовательского режима (загрузив все содержимое / System / Library / LaunchDaemons), я смогу использовать diskutil после того, как компьютер завершит процесс загрузки.

Может ли кто-то, кто более осведомлен о внутренней работе Mac OS, определить, чего не хватает?

Алекс Пламб
источник

Ответы:

5

Я не уверен, что является причиной проблемы, но, похоже, это не пропавший демон - я попытался загрузить все, /System/Library/LaunchDaemonsкроме com.apple.WindowServer.plist, но все равно не получилось. Он даже не запускается diskutil, что обычно выводит сводку об использовании. Кроме того, «Убито: 9» предполагает, что оно не разбивается само по себе, а что-то другое ( launchd?) Убивает его.

В любом случае, есть несколько хороших новостей: diskutil repairpermissionsна самом деле это просто интерфейс для repair_packagesпрограммы, и, похоже, он отлично работает в однопользовательском режиме (даже без загруженных демонов):

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

Форматирование дисков, вероятно, будет более сложным. Вы , возможно , придется смотреть на использование gpt, newfs_hfsи тому подобное.

Гордон Дэвиссон
источник
Потрясающие! Огромное спасибо. Похоже, это было repair_packagesс 10.6.
Алекс Пламб
Кстати, у вас есть идея, как я буду проверять состояние SMART в однопользовательском режиме? Старый способ сделать это diskutil info disk0 | grep SMART, но это больше не работает.
Алекс Пламб
Понятия не имею о СМАРТ, извините. Это может быть один дискутил делает сам.
Гордон Дэвиссон
-1

el capitan теперь защищает разрешения, даже с вашими / usr / libexec / repair_packages --repair --standard-pkgs (спасибо за это) восстановить возможности более невозможно - файловые системы для восстановления доступны только для чтения - есть подсказка? С наилучшими пожеланиями и благодарностью Мартин

Мартин Расс
источник
Я нашел кое-что - возможно, работающее с отключением защиты системы
Martin Rass
Вы можете легко отключить SIP csrutil disableв режиме восстановления
TheBro21