Чи існує спосіб перейти в режим єдиного користувача без перезавантаження?


8

Як і у старих-UNIX, коли ви можете просто надіслати команду, initі ви дивитесь на чорний текстовий екран із оболонкою для власного використання. ;)


Після багатогодинного тестування з використанням різних версій OS X / macOS з 10.11.6 по 10.14.2, з включеним SIP і без нього, різними фізичними та віртуальними машинами, не один раз з декількох десятків разів робив sudo launchctl reboot userspace -sуспішну та зручну простору користувача перезавантажте! Простіше кажучи, незалежно від джерела документації, вищезазначена команда не працювала і не працює, і тому незалежно від того, що відповідь на це питання була прийнята, я не вважав, що це працює, і це є причиною мого поступу.
користувач3439894

у моїй відповіді сказано саме "перевірено на Ель-Каптіані", де це працює. Відповідь зараз сильно відредагована, але це все ще можна знайти в історії її перегляду. Простіше кажучи, я не сказав, що це буде працювати над чим-небудь іншим
poige

1
Я тестував під Ель-Капітан, а також Сьєрра, Висока Сьєрра та Мохаве. Ні в якому разі не sudo launchctl reboot userspace -sпідготували успішну та зручну перезавантаження з терміналу, перебуваючи в графічному інтерфейсі! Будь ласка, поважайте, що не тільки я зайняв багато часу, енергії та зусиль, я також висловив вагому причину свого попутного руху, що, звичайно, я не зобов’язаний це робити. Справа в тому, що на трьох різних системах Apple, MacBook Pro, iMac та MacBook Air, що працюють під керуванням El Capitan і пізніше, для мене це не працювало, як рекламується тут або в документації! AFAIC Для мене кінець історії.
користувач3439894

Працювали для мене. Тут: 15.6.0 x86_64 root:xnu-3248.73.11~1/RELEASE_X86_64 x86_64. Про яку повагу ви говорите? :) Або якщо ви говорите про повагу, де ваша повага до моїх слів? :)
poige

Відредагована відповідь. Думаючи про запис відео та завантаження його на youtube. ;)
poige

Відповіді:


5

Залежно від ваших потреб, спробуйте змінити вікно входу, щоб запитати ім’я користувача, а потім введіть > консоль як користувача.

Це, ймовірно, було видалено о 10.10, тому вам потрібно буде завантажитися на відновлення або ввімкнути або використовувати термінальний додаток, якщо цей застарілий тип обходу init не те, що ви шукаєте.

Крім того, це не справжній кореневий єдиний користувальницький режим, що має відбуватися на початку завантажувального процесу на сучасних macOS.


Здається, я знайшов реальну відповідь на своє запитання. Буду перевіряти і відповідати
poige

@poige Я, безумовно, не можу змусити його працювати над Mojave (але я не заплутався із записом за замовчуванням.) Не соромтесь відредагувати свою відповідь, щоб зробити її точно тим, що ви хочете, або самостійно відповісти, якщо чіткіша відповідь найкраща, як тільки ви тестуєте .
bmike


> Немає документально підтвердженого способу переходу з завантаженої ОС в єдиний користувальницький режим без перезавантаження. це хибне твердження.
poige

Привіт @poige, можливо, є плутанина, що таке режим одного користувача. Одна людина підтримала вашу відповідь, а 5 - вниз. Не соромтеся зробити нову відповідь, якщо у вас є ще щось додати? Ця Вікіпедія згадує, що режим одиночного користування на macOS відбувається лише перед завантаженням, тому я відкритий для вас, маючи інше значення, ніж я щодо того, що ви вважаєте одним користувачем. Дайте мені знати, чи можу я допомогти
bmike

3

Теорія

Коротше кажучи, є документально підтверджений man launchctlспосіб здійснити такий перемикання в режим одномодерного без перезавантаження ядра. Його можна розгорнути, наприклад, з вікна терміналу за допомогою команди SHELL:

sudo launchctl reboot userspace -s

Практика

El Capitan

Я тестував його в El Capitan на Macbook Air 2015, де він працював. Але я також маю повідомлення від користувача, що його спроби на «Ель-Капітан» були невдалими. Єдина відмінність, яку я можу придумати, - це Retina, який вимагає іншого графічного режиму або чогось іншого. У мене немає Macbook з Retina під керуванням El Capitan, тому поки що я не можу сказати нічого більше на підтримку такої версії.

Висока Сьєрра, Мохаве

Мої спроби з High Sierra показали, що ця функціональність більше не працює (порівняно з El Capitan). Знову ж, можливо, це пов’язано із сітківкою, не ясно. Mojave також не працює.


Ретельне пояснення дописувача¹

Існує спосіб повернутися до єдиного користувальницького режиму з оновлених macOS, не виконуючи повну перезавантаження, запустивши

sudo launchctl reboot userspace -s

Це відновить лише частину простору користувача macOS, не перезавантажуючи ядро ​​Дарвіна, і еквівалентно зміні рівня запуску в 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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.