Existe-t-il un moyen d'accéder au mode mono-utilisateur sans redémarrage?

8

Comme avec old-days-UNIX lorsque vous pouvez simplement envoyer une commande à initet que vous regardez l'écran de texte noir avec shell pour votre propre usage. ;)

poige
la source
Après de nombreuses heures de tests à l'aide de différentes versions d'OS X / macOS de 10.11.6 à 10.14.2, avec et sans SIP activé, différentes machines physiques et virtuelles, pas une seule fois sur plusieurs dizaines de fois, n'ont sudo launchctl reboot userspace -scréé 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.
user3439894
ma réponse indiquait exactement «testé sur El Captian», où cela fonctionne. La réponse est fortement modifiée maintenant, mais cela se trouve toujours dans son historique de révision. Autrement dit, je n'ai pas dit que cela fonctionnerait sur autre chose
poige
1
J'ai testé sous El Capitan ainsi que Sierra, High Sierra et Mojave. En aucun cas, sudo launchctl reboot userspace -sun redémarrage réussi et utilisable de l'espace utilisateur à partir de Terminal n'a été effectué dans l'interface graphique! Je vous en prie, respectez le fait que non seulement j'ai pris beaucoup de temps, d'énergie et d'efforts, mais que j'ai également exprimé une raison valable pour mon vote négatif, ce qui bien sûr je n'ai aucune obligation de le faire. Le fait que sur trois systèmes Apple différents, un MacBook Pro, un iMac et un MacBook Air, exécutant El Capitan et plus tard, cela n'a pas fonctionné pour moi comme annoncé ici ou dans la documentation! AFAIC Pour moi, fin de l'histoire.
user3439894
A travaillé pour moi. Ici: 15.6.0 x86_64 root:xnu-3248.73.11~1/RELEASE_X86_64 x86_64. De quel respect parlez-vous? :) Ou si vous parlez de respect, où est votre respect pour mes paroles? :)
poige
Réponse modifiée. Penser à l'enregistrement vidéo et le télécharger sur youtube. ;)
poige

Réponses:

5

En fonction de vos besoins, essayez de modifier la fenêtre de connexion pour demander un nom d'utilisateur, puis entrez > console en tant qu'utilisateur.

Cela a probablement été supprimé à 10h10, vous devez donc démarrer à la récupération ou à ssh ou utiliser une application de terminal si ce contournement de type init hérité n'est pas ce que vous recherchez.

En outre, ce n'est pas le véritable mode mono-utilisateur root, qui doit se produire tôt dans le processus de démarrage sur macOS moderne.

bmike
la source
Il semble que j'ai trouvé une vraie réponse à ma question. Va vérifier et répondre
poige
@poige Je ne peux certainement pas le faire fonctionner sur Mojave (mais je n'ai pas gâché avec les valeurs par défaut.) .
bmike
> Il n'y a aucun moyen documenté de passer d'un système d'exploitation démarré au mode mono-utilisateur sans redémarrage. c'est une fausse affirmation.
poige
Salut @poige, il y a peut-être une confusion à propos du mode mono-utilisateur. Une personne a voté pour votre réponse et 5 vers le bas. N'hésitez pas à faire une nouvelle réponse si vous avez autre chose à ajouter? Que Wikipedia mentionne que le mode utilisateur unique sur macOS ne se produit que avant le démarrage, je suis donc ouvert à ce que vous ayez une signification différente de celle que vous considérez comme utilisateur unique. Faites-moi savoir si je peux vous aider
bmike
3

Théorie

En bref, il existe un moyen documenté man launchctld'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 -sn'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 -sdans 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

poige
la source