Получение команды 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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.