Esiste il modo per accedere alla modalità utente singolo senza riavvio?


8

Come con i vecchi-UNIX, quando puoi semplicemente inviare un comando inite stai fissando una schermata di testo nera con shell per il tuo uso personale. ;)


Dopo molte ore di test utilizzando varie versioni di OS X / macOS dalla 10.11.6 alla 10.14.2, con e senza SIP abilitato, diverse macchine fisiche e virtuali, non una volta su più di una dozzina di volte, hanno sudo launchctl reboot userspace -spreformato uno spazio utente di successo e utilizzabile riavvio! In poche parole, indipendentemente dalla fonte della documentazione, il comando di cui sopra non ha funzionato e non funziona e quindi indipendentemente dal fatto che la risposta a questa domanda sia stata accettata, non l'ho trovata funzionante ed è la ragione del mio downvote.
user3439894

la mia risposta affermava esattamente "testato su El Captian", dove funziona. La risposta è stata pesantemente modificata ora, ma è ancora presente nella sua cronologia delle revisioni. In poche parole, non ho detto che avrebbe funzionato su qualsiasi altra cosa
poige l'

1
Ho provato con El Capitan, Sierra, High Sierra e Mojave. In nessun caso ha sudo launchctl reboot userspace -spreformato un riavvio riuscito e utilizzabile dello spazio utenti dal Terminale nella GUI! Si prega di rispettare che non solo ho impiegato molto tempo, energia e fatica, ma ho anche espresso un valido motivo per il mio voto negativo, che ovviamente non ho l'obbligo di fare. Il fatto che su tre diversi sistemi Apple, un MacBook Pro, iMac e MacBook Air, con El Capitan e successivi, non ha funzionato per me come pubblicizzato qui o nella documentazione! AFAIC Per me, fine della storia.
user3439894,

Ha funzionato per me. Qui: 15.6.0 x86_64 root:xnu-3248.73.11~1/RELEASE_X86_64 x86_64. Di quale rispetto stai parlando? :) O se parli di rispetto, dov'è il tuo rispetto per le mie parole? :)
poige

Risposta modificata. Pensando alla registrazione di video e caricandolo su YouTube. ;)
poige l'

Risposte:


5

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

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

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


Sembra che abbia trovato una vera risposta alla mia domanda. Controllerà e risponderà
poige

@poige Certamente non riesco a farlo funzionare su Mojave (ma non ho pasticciato con le impostazioni predefinite di scrittura.) Sentiti libero di modificare la mia risposta per renderla esattamente quello che vuoi o rispondere autonomamente se una risposta più pulita è la migliore una volta che hai testato .
bmike


> Non esiste un modo documentato per passare da un sistema operativo avviato alla modalità singolo utente senza riavviare. questa è una falsa affermazione.
poige

Ciao @poige forse c'è confusione sulla modalità per singolo utente. Una persona ha valutato la tua risposta e 5 in meno. Sentiti libero di fare una nuova risposta se hai qualcos'altro da aggiungere? Quella Wikipedia menziona che la modalità utente singolo su macOS avviene solo prima dell'avvio, quindi sono aperto a te con un significato diverso rispetto a me su ciò che consideri utente singolo. Fammi sapere se posso aiutarti
bmike

3

Teoria

In breve, c'è un modo documentato man launchctlper realizzare un tale passaggio in modalità singola senza riavvio del kernel. Può essere distribuito, ad esempio, dalla finestra Terminale con un comando SHELL:

sudo launchctl reboot userspace -s

Pratica

Il capitano

L'ho provato a El Capitan su un Macbook Air 2015 dove ha funzionato. Ma ho anche riferito a un utente che i suoi tentativi su El Capitan non hanno avuto successo. L'unica differenza che mi viene in mente è Retina che richiede diverse modalità grafiche o qualcosa del genere. Non ho un Macbook con Retina con El Capitan, quindi per il momento non posso dire altro a supporto di tale versione.

Alta Sierra, Mojave

I miei tentativi con High Sierra hanno dimostrato che questa funzionalità non funziona più (rispetto a El Capitan). Ancora una volta, potrebbe essere dovuto Retina, non è chiaro. Anche Mojave non funziona.


Spiegazione approfondita di un collaboratore¹

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

sudo launchctl reboot userspace -s

Ciò riavvierà solo la parte dello spazio utente di macOS senza riavviare il kernel Darwin ed equivale a cambiare il runlevel sui vecchi UNIX.

Per ulteriori dettagli consultare 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 -snon chiama reboot(2)e quindi fornisce un modo per passare alla modalità utente singolo senza riavviare.

Anche l'articolo di Wikipedia sulla modalità utente singolo dice:

In OS X El Capitan e versioni successive di macOS, la modalità può essere ripristinata alla modalità utente singolo con il comando sudo launchctl reboot userspace -sin Terminale e il sistema può essere riavviato completamente in modalità utente singolo con il comando sudo launchctl reboot system -s.


1 - Per gentile concessione di @ nohillside

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.