Théorie
En bref, il existe un moyen documenté man launchctl
d'accomplir un tel basculement en mode unique sans redémarrage du noyau. Il peut être déployé, par exemple, à partir de la fenêtre Terminal avec une commande SHELL:
sudo launchctl reboot userspace -s
Entraine toi
El Capitan
Je l'ai testé dans El Capitan sur un Macbook Air 2015 où cela a fonctionné. Mais j'ai également rapporté d'un utilisateur que ses tentatives sur El Capitan ont échoué. La seule différence à laquelle je peux penser est la rétine qui nécessite un mode graphique différent ou quelque chose du genre. Je n'ai pas de Macbook avec Retina exécutant El Capitan, donc pour le moment je ne peux rien dire de plus à l'appui d'une telle version.
High Sierra, Mojave
Mes essais avec High Sierra montraient que cette fonctionnalité ne fonctionnait plus (par rapport à El Capitan). Encore une fois, c'est peut-être dû à la rétine, ce n'est pas clair. Mojave ne fonctionne pas aussi.
Explication approfondie par un contributeur¹
Il existe un moyen de revenir en mode mono-utilisateur à partir d'un macOS en cours d'exécution sans effectuer un redémarrage complet en exécutant
sudo launchctl reboot userspace -s
Cela relancera uniquement la partie espace utilisateur de macOS sans redémarrer le noyau Darwin et équivaut à changer le niveau d'exécution sur les anciens UNIX.
Pour plus de détails, voir 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.
Cela signifie que sur le plan technique sudo launchctl reboot userspace -s
n'appelle pas reboot(2)
et fournit donc un moyen de passer en mode mono-utilisateur sans redémarrage.
L'article de Wikipedia sur le mode mono-utilisateur dit également:
Dans OS X El Capitan et les versions ultérieures de macOS, le mode peut être inversé en mode mono-utilisateur avec la commande sudo launchctl reboot userspace -s
dans Terminal, et le système peut être complètement redémarré en mode mono-utilisateur avec la commande sudo launchctl reboot system -s
.
1 - Gracieuseté de @ nohillside
sudo launchctl reboot userspace -s
créé un espace utilisateur efficace et utilisable redémarrer! Autrement dit, quelle que soit la source de la documentation, la commande susmentionnée n'a pas fonctionné et ne fonctionne pas et, par conséquent, malgré le fait que la réponse à cette question ait été acceptée néanmoins, je ne l'ai pas trouvée fonctionner et c'est la raison de mon downvote.