теория
В двух словах, есть документированный man launchctl
способ выполнения такого перехода в одиночный режим без перезагрузки ядра. Его можно развернуть, например, из окна терминала с помощью команды SHELL:
sudo launchctl reboot userspace -s
практика
Эль Капитан
Я тестировал его в El Capitan на Macbook Air 2015, где он работал. Но у меня также есть сообщение от пользователя, что его попытки на Эль-Капитане были безуспешными. Единственное различие, о котором я могу думать, - это Retina, которая требует другого графического режима или некоторого такого. У меня нет Macbook с Retina, работающей под управлением El Capitan, поэтому пока я не могу больше ничего сказать в поддержку такой версии.
Высокая Сьерра, Мохаве
Мои попытки с High Sierra показали, что эта функциональность больше не работает (по сравнению с El Capitan). Опять же, может быть, это из-за Retina, это не ясно. Мохаве тоже не работает.
Тщательное объяснение со стороны участника¹
Существует способ вернуться в однопользовательский режим из запущенного и запущенного MacOS без полной перезагрузки, запустив
sudo launchctl reboot userspace -s
Это перезапустит только часть пользовательского пространства macOS без перезапуска ядра Darwin и будет эквивалентно изменению уровня запуска в старых UNIX-системах.
Для получения дополнительной информации см . man launchctl
:
reboot [system|userspace|halt|logout|apps|reroot ]
Instructs launchd to begin tearing down userspace. With no argu-
ment given or with the system argument given, launchd will make
the reboot(2) system call when userspace has been completely
torn down. With the halt argument given, launchd will make the
reboot(2) system call when userspace has been completely torn
down and pass the RB_HALT flag, halting the system and not ini-
tiating a reboot.
With the userspace argument given, launchd will re-exec itself
when userspace has been torn down and bring userspace back up.
This is useful for rebooting the system quickly under conditions
where kernel data structures or hardware do not need to be re-
initialized.
-s When rebooting the machine (either a full reboot or
userspace reboot), brings the subsequent boot session
up in single-user mode.
Это означает, что на техническом уровне sudo launchctl reboot userspace -s
не вызывает reboot(2)
и, следовательно, предоставляет способ переключиться в однопользовательский режим без перезагрузки.
Также статья в Википедии об однопользовательском режиме гласит:
В OS X El Capitan и более поздних выпусках macOS режим может быть переведен в однопользовательский режим с помощью команды sudo launchctl reboot userspace -s
в Терминале, а система может быть полностью перезагружена в однопользовательском режиме с помощью команды sudo launchctl reboot system -s
.
1 - Предоставлено @ nohillside
sudo launchctl reboot userspace -s
формировалось успешное и пригодное для использования пространство пользователя. перезагрузка! Проще говоря, независимо от источника документации, вышеупомянутая команда не работала и не работает, и поэтому, несмотря на тот факт, что ответ на этот вопрос был принят, тем не менее, я не нашел ее работоспособной и является причиной моего отрицательного ответа.