Как выполнить восстановление из переименованного каталога /etc в Mac OS Monterey (что приводит к невозможности входа в систему)

Я непреднамеренно переименовал /etcкаталог на Mac под управлением macOS Monterey, что привело к катастрофическим последствиям: пароль для sudoв Терминале больше не распознается (поскольку файл /etc/sudoersбольше не может быть найден), что означает, что я больше не могу запускать команды, требующие пароля. Хуже того, я больше не могу даже войти в Mac.

Чтобы решить проблему, я начал с принятого ответа, описанного Дэвидом Роузом в ответ на аналогичный вопрос: папка переименована /etc. Я больше не могу войти - спрашивал в 2019 году.

Первая часть этого решения (загрузка Mac в однопользовательском режиме с существующим паролем и запуск mount -uw) работает отлично.

Однако даже в однопользовательском режиме я не могу переименовать /etcкаталог. Например, попытка запустить cdили mvпо отношению к /etcприводит к No such file or directoryсообщению, а /privateпапка символической ссылки оказывается пустой — см. изображение ниже.

Итак, как я могу снова изменить имя папки, /etcчтобы Mac снова заработал?

введите описание изображения здесь

Проблема в том, что я думаю, что загрузочный диск теперь состоит из двух частей, объединенных вместе, и вы видите только часть, доступную только для чтения .
Вероятно, лучший способ прогресса — переустановить macOS.
Загрузитесь в рекавери, переустановите только ОС. Ваши файлы не должны быть затронуты.
@TechnoCat Почему вы используете однопользовательский режим? Если вы используете режим восстановления и при необходимости разблокируете том «-Data» (если Filevault активен), вы можете получить доступ и изменить все системные структуры.
@mmmmmm Спасибо за полезную ссылку на статью Bombich по адресу bombich.com/kb/ccc6/working-apfs-volume-groups . Если я правильно прочитал это, это означает, что обход обычной системы безопасности MacOS, например, изменение системных файлов и папок после входа в систему в однопользовательском режиме (решение, предложенное два года назад в ссылке, которую я включил в свой вопрос) - не был жизнеспособным вариантом, так как Каталина в 2019 году. Это полезно знать. Это означает, что я искал нежизнеспособное решение, задаваясь вопросом, почему оно не работает. Теперь я знаю, почему! :)
TechnoCat: Вы хотя бы пытались смонтировать том данных? При загрузке в однопользовательском режиме монтируется только запечатанный том, доступный только для чтения. Том, содержащий папку /private, должен быть смонтирован явным образом.
@Jean_JD Я использовал однопользовательский режим, потому что всего два года назад он был представлен как отличное решение идентичной проблемы (поэтому я предположил, что он все еще жизнеспособен). Кроме того, у всех нас есть пробелы в наших технических знаниях; Я не знал, что могу переустановить ОС на Mac без потери данных, поэтому я очень благодарен нескольким людям в этой теме, которые упомянули переустановку только ОС как еще один действенный способ восстановления после этой почти катастрофы. . Спасибо!
@ТехноКот. Из режима восстановления вы можете получить доступ к терминалу в корневом режиме, где все тома могут быть смонтированы и/или разблокированы. Вы можете попробовать восстановить файловую систему (переименовать и т. д.) без переустановки системы. Терминал доступен в верхнем меню в разделе «Утилиты».
@DavidAnderson - я еще не пытался смонтировать том данных (потому что потребуется некоторое чтение / время, чтобы понять, как именно это сделать ... Я не могу позволить себе дальнейший риск с Mac моего коллеги, так что все сделано супераккуратно), и теперь я заперт в другом проекте на следующие 10-12 часов.
Спасибо, Дэвид, Хиллсайд, Джин, мммммм и другим за очень полезные решения и комментарии. Проверю и реализую рекомендации, как только смогу вернуться к этой задаче позже сегодня. Премного благодарен!!
Это круто. @TechnoCat, пожалуйста, поместите все свои новые знания в раздел ответов. Иногда люди пытаются отредактировать вопрос, чтобы он стал записью в блоге, вместо того, чтобы оставить вопрос о том, с чего вы должны были начать, и из всего обучения и прогресса в ответах.

Ответы (1)

У меня установлен Monterey на виртуальной машине VMware Fusion Player.

Я следовал вашим инструкциям и смог переименовать /private/etcв /private/xetc.

Когда я загружаю Monterey в однопользовательском режиме, я вижу следующий вывод. На изображении показаны инструкции в виде трех трех команд, которые можно использовать для монтирования раздела данных на устройстве с поддержкой SEP.

Примечание. Для лучшего просмотра изображения щелкните изображение или откройте изображение в новом окне.

Ниже приведен вывод команды mount. Только запечатанный том только для чтения монтируется на /. Вот почему /privateпапка пуста.

Итак, я следовал инструкциям, показанным на первом изображении, и ввел следующие команды.

Примечание. Эти команды выдавали сообщения, которые я решил проигнорировать.

/sbin/mount -P 1
/usr/libexec/init_data_protection
/sbin/mount -P 2

Ниже приведен вывод команды mount. Теперь том данных монтируется на /System/Volumes/Data.

Поскольку этот том данных был помечен флагом метаданных роли данных при создании и находится в той же группе томов APFS, что и первоначально подключенный том, оба тома имеют общую корневую ( ) /точку монтирования. Другими словами, этот том данных монтируется дважды.

Затем я сделал ремонт, введя следующую команду.

mv /private/xetc /private/etc

Примечание. Я мог бы сделать такой же ремонт, введя более длинную версию, указанную ниже.

mv /System/Volumes/Data/private/xetc /System/Volumes/Data/private/etc

Наконец, я ввел команду ниже, чтобы загрузиться в Монтерей.

exit

 

Интересно, что справочная страница mountничего не знает о -P.
@nohillside: Должен признаться, я не знаю, что на самом деле делают команды. Ввод команд был чистой догадкой с моей стороны. Я обновил свой ответ, чтобы показать вывод команды mountдо и после ввода трех команд.
Спасибо @DavidAnderson. Ваше решение работает отлично!