C'è un modo per entrare nella modalità utente singolo senza il riavvio?

8

Come con gli old-days-UNIX quando puoi semplicemente inviare un comando a init e stai guardando la schermata di testo nero con la shell per uso personale. ;)

    
posta poige 24.03.2016 - 20:15
fonte

2 risposte

3

Teoria

In poche parole, c'è un modo documentato in man launchctl per eseguire tale passaggio in modalità singola senza riavvio del kernel. Può essere schierato, per e. g., dalla finestra Terminale con un comando SHELL:

sudo launchctl reboot userspace -s

Practice

El Capitan

L'ho provato su El Capitan su un Macbook Air 2015 in cui funzionava. Ma ho anche segnalato da un utente che i suoi tentativi su El Capitan non hanno avuto successo. L'unica differenza che posso pensare è Retina che richiede diverse modalità grafiche o somesuch. Non ho Macbook con Retina su El Capitan, quindi per il momento non posso dire altro a supporto di una tale versione.

Alta Sierra, Mojave

Le mie prove con High Sierra stavano dimostrando che questa funzionalità non funziona più (rispetto a El Capitan). Di nuovo, potrebbe essere dovuto Retina, non è chiaro. Mojave non ha funzionato anche.

Spiegazione approfondita di un contributore¹

C'è un modo per tornare alla modalità utente singolo da una macOS attiva e in esecuzione senza eseguire un riavvio completo eseguendo

sudo launchctl reboot userspace -s

Questo riavvierà solo la parte userspace di macOS senza riavviare il kernel di Darwin ed equivale a modificare il runlevel dei vecchi UNIX.

Per ulteriori dettagli, consulta 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.

Ciò significa che a livello tecnico sudo launchctl reboot userspace -s non chiama reboot(2) e quindi fornisce un modo per passare alla modalità utente singolo senza un riavvio.

Anche l'articolo di Wikipedia su Modalità utente singolo dice:

In OS X El Capitan and later releases of macOS, the mode can be reversed to single user mode with the command sudo launchctl reboot userspace -s in Terminal, and the system can be fully rebooted in single-user mode with the command sudo launchctl reboot system -s.

1 - Per gentile concessione di @ nohillside

    
risposta data 07.01.2019 - 14:24
fonte
5

A seconda delle esigenze, prova a cambiare la finestra di accesso per chiedere un nome utente e poi inserisci > console come utente.

Probabilmente è stato rimosso alle 10.10, quindi avresti bisogno di avviare il ripristino o ssh in o utilizzare un'app terminale se questo bypass di tipo legacy init non è quello che cerchi.

Inoltre, questa non è la modalità utente singolo root, che deve essere eseguita all'inizio del processo di avvio su macOS moderno.

    
risposta data 06.01.2019 - 20:01
fonte

Leggi altre domande sui tag