Czy istnieje sposób na przejście do trybu pojedynczego użytkownika bez ponownego uruchamiania?

8

Podobnie jak w starych systemach UNIX, kiedy możesz po prostu wysłać polecenie initi wpatrujesz się w czarny ekran tekstowy z powłoką na własny użytek. ;)

poige
źródło
Po wielu godzinach testowania przy użyciu różnych wersji OS X / macOS od 10.11.6 do 10.14.2, z włączoną obsługą SIP i bez niej, różne maszyny fizyczne i wirtualne, ani razu kilkadziesiąt razy nie stworzyły sudo launchctl reboot userspace -sudanej i użytecznej przestrzeni użytkownika restart! Mówiąc najprościej, niezależnie od źródła dokumentacji, powyższe polecenie nie działało i nie działa, a zatem niezależnie od tego, że odpowiedź na to pytanie została zaakceptowana, nie znalazłem
user3439894,
moja odpowiedź brzmiała „przetestowane na El Captian”, tam gdzie to działa. Odpowiedź jest obecnie mocno zredagowana, ale nadal można ją znaleźć w jej historii zmian. Mówiąc
wprost,
1
Testowałem pod El Capitan, a także Sierra, High Sierra i Mojave. W żadnym wypadku nie sudo launchctl reboot userspace -swykonano udanego i użytecznego ponownego uruchomienia przestrzeni użytkownika z terminala w interfejsie GUI! Proszę uszanować to, że nie tylko poświęciłem dużo czasu, energii i wysiłku, ale także wyraziłem uzasadniony powód, dla którego oczywiście nie mam takiego obowiązku. Fakt, że na trzech różnych systemach Apple, MacBook Pro, iMac i MacBook Air, z El Capitan i nowszymi, nie działał dla mnie tak, jak tutaj reklamowano! AFAIC Dla mnie koniec historii.
user3439894
Pracował dla mnie. Tutaj: 15.6.0 x86_64 root:xnu-3248.73.11~1/RELEASE_X86_64 x86_64. O jakim szacunku mówisz? :) A jeśli mówisz o szacunku, gdzie masz szacunek do moich słów? :)
poige
Edytowana odpowiedź. Myślenie o nagrywaniu wideo i przesyłaniu go na YouTube. ;)
poige 11.01.19

Odpowiedzi:

5

W zależności od potrzeb spróbuj zmienić okno logowania, aby poprosić o nazwę użytkownika, a następnie wprowadź > konsolę jako użytkownik.

Najprawdopodobniej został usunięty o 10.10, więc będziesz musiał uruchomić system w celu przywrócenia systemu, ssh lub użyć aplikacji terminalowej, jeśli nie chcesz tego starszego typu inicjacji.

Ponadto nie jest to prawdziwy tryb rootowania dla pojedynczego użytkownika, który musi zdarzyć się na wczesnym etapie uruchamiania systemu w nowoczesnym systemie macOS.

bmike
źródło
Wygląda na to, że znalazłem prawdziwą odpowiedź na moje pytanie.
Sprawdzę
@poige Z pewnością nie mogę zmusić go do pracy na Mojave (ale nie zadzierałem z domyślnymi ustawieniami zapisu). Zapraszam do edycji mojej odpowiedzi, aby była dokładnie taka, jak chcesz, lub odpowiedź własna, jeśli lepsza odpowiedź jest lepsza po przetestowaniu .
bmike
> Nie ma udokumentowanego sposobu przejścia z uruchomionego systemu operacyjnego do trybu pojedynczego użytkownika bez ponownego uruchomienia. to fałszywe twierdzenie.
poige
Cześć @poige. Być może nie ma pewności co do trybu pojedynczego użytkownika. Jedna osoba oceniła twoją odpowiedź, a 5 w dół. Jeśli masz coś jeszcze do dodania, możesz udzielić nowej odpowiedzi? W Wikipedii wspomniano, że tryb pojedynczego użytkownika w systemie macOS odbywa się tylko przed uruchomieniem, więc jestem otwarty na to, że mam inne znaczenie niż to, co uważasz za pojedynczego użytkownika. Daj mi znać, jeśli mogę pomóc
bmike
3

Teoria

Krótko mówiąc, istnieje udokumentowana man launchctldroga do takiego przełączenia na ponowne uruchomienie jądra w trybie pojedynczym. Można go wdrożyć np. Z okna terminala za pomocą polecenia SHELL:

sudo launchctl reboot userspace -s

Ćwiczyć

kapitan

Testowałem go w El Capitan na Macbooku Air 2015, gdzie działał. Ale mam też raport od użytkownika, że ​​jego próby na El Capitan nie powiodły się. Jedyną różnicą, o której mogę myśleć, jest Retina, która wymaga innego trybu graficznego lub czegoś takiego. Nie mam Macbooka z Retiną i systemem El Capitan, więc na razie nie mogę powiedzieć nic więcej na temat takiej wersji.

High Sierra, Mojave

Moje próby z High Sierra pokazały, że ta funkcjonalność już nie działa (w porównaniu do El Capitan). Ponownie, być może jest to spowodowane siatkówką, nie jest jasne. Mojave też nie działa.


Dokładne wyjaśnienie autora

Istnieje sposób na powrót do trybu pojedynczego użytkownika z uruchomionego i działającego systemu macOS bez konieczności pełnego ponownego uruchamiania przez uruchomienie

sudo launchctl reboot userspace -s

Spowoduje to ponowne uruchomienie tylko części macOS w przestrzeni użytkownika bez ponownego uruchamiania jądra Darwin i jest to równoważne ze zmianą poziomu uruchamiania w starych systemach UNIX.

Aby uzyskać dodatkowe informacje, patrz 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.

Oznacza to, że na poziomie technicznym sudo launchctl reboot userspace -snie wywołuje reboot(2)i dlatego umożliwia przejście do trybu pojedynczego użytkownika bez ponownego uruchamiania.

Również artykuł Wikipedii na temat trybu pojedynczego użytkownika mówi:

W systemie OS X El Capitan i nowszych wersjach systemu macOS tryb można odwrócić do trybu pojedynczego użytkownika za pomocą polecenia sudo launchctl reboot userspace -sw terminalu, a system można w pełni zrestartować w trybie pojedynczego użytkownika za pomocą polecenia sudo launchctl reboot system -s.


1 - Dzięki uprzejmości @ nohillside

poige
źródło