¿Existe la manera de ingresar al modo de usuario único sin reiniciar?

8

Al igual que con los viejos tiempos de UNIX, cuando solo puedes enviar un comando inity estás mirando la pantalla de texto en negro con shell para tu propio uso. ;)

poige
fuente
Después de muchas horas de pruebas usando varias versiones de OS X / macOS desde 10.11.6 hasta 10.14.2, con y sin SIP habilitado, diferentes máquinas físicas y virtuales, ni una sola vez de varias docenas de veces sudo launchctl reboot userspace -spreformaron un espacio de usuario exitoso y utilizable ¡reiniciar! En pocas palabras, independientemente del origen de la documentación, el comando mencionado no funcionó y no funciona y, por lo tanto, independientemente del hecho de que la respuesta a esta pregunta fue aceptada, no encontré que funcionara y es la razón de mi voto negativo.
user3439894
mi respuesta declaró exactamente "probado en El Captian", donde funciona. La respuesta está muy editada ahora, pero aún se puede encontrar en su historial de revisiones. En pocas palabras, no dije que funcionaría en cualquier otra cosa
poige
1
Probé con El Capitán, así como con Sierra, High Sierra y Mojave. ¡En ningún caso sudo launchctl reboot userspace -spreformó un reinicio exitoso y utilizable del espacio de usuario desde la Terminal mientras estaba en la GUI! Respete que no solo me tomé un tiempo, energía y esfuerzo considerables, sino que también expresé una razón válida para mi voto negativo, que por supuesto no tengo la obligación de hacerlo. El hecho de que en tres sistemas Apple diferentes, un MacBook Pro, iMac y MacBook Air, con El Capitan y más tarde, ¡no funcionó para mí como se anuncia aquí o en la documentación! AFAIC Para mí, fin de la historia.
user3439894
Trabajó para mi. Aquí: 15.6.0 x86_64 root:xnu-3248.73.11~1/RELEASE_X86_64 x86_64. ¿De qué respeto estás hablando? :) O si hablas de respeto, ¿dónde está tu respeto por mis palabras? :)
Poige
Respuesta editada Pensando en grabar video y subirlo a youtube. ;)
poige

Respuestas:

5

Dependiendo de sus necesidades, intente cambiar la ventana de inicio de sesión para solicitar un nombre de usuario y luego ingrese > consola como usuario.

Es probable que esto se haya eliminado a las 10.10, por lo que deberá iniciar la recuperación o ssh o usar una aplicación de terminal si este bypass de tipo init heredado no es lo que busca.

Además, este no es el modo de usuario único raíz verdadero, que debe suceder temprano en el proceso de arranque en macOS moderno.

bmike
fuente
Parece que he encontrado una respuesta real a mi pregunta. Comprobará y responderá
poige
@poige Ciertamente no puedo hacer que funcione en Mojave (pero no me metí con la escritura predeterminada). Siéntase libre de editar mi respuesta para que sea exactamente lo que desea o auto-respuesta si una respuesta más limpia es mejor una vez que realice la prueba .
bmike
> No hay una forma documentada de pasar de un sistema operativo arrancado al modo de usuario único sin reiniciar. Esa es una afirmación falsa.
Poige
Hola @poige, tal vez haya confusión sobre el modo de usuario único. Una persona votó su respuesta y 5 abajo. Siéntase libre de hacer una nueva respuesta si tiene algo más que agregar. Esa Wikipedia menciona que el modo de usuario único en macOS solo ocurre antes del arranque, por lo que estoy abierto a que tenga un significado diferente al que tengo en lo que considera un usuario único. Avíseme si puedo ayudar
bmike
3

Teoría

En pocas palabras, hay una forma documentada man launchctlde lograr tal cambio al modo único sin reinicio del núcleo. Se puede implementar, por ejemplo, desde la ventana de Terminal con un comando SHELL:

sudo launchctl reboot userspace -s

Práctica

El Capitan

Lo probé en El Capitan en un Macbook Air 2015 donde funcionó. Pero también tengo un informe de un usuario que sus intentos de El Capitán no tuvieron éxito. La única diferencia que se me ocurre es Retina, que requiere un modo gráfico diferente o algo así. No tengo Macbook con Retina corriendo El Capitan, así que por el momento no puedo decir nada más en apoyo de tal versión.

Sierra alta, Mojave

Mis intentos con High Sierra mostraron que esta funcionalidad ya no funciona (en comparación con El Capitan). De nuevo, puede ser debido a Retina, no está claro. Mojave no lo tiene funcionando también.


Explicación exhaustiva de un colaborador¹

Hay una manera de volver al modo de usuario único desde un macOS en ejecución y sin ejecutar un reinicio completo ejecutando

sudo launchctl reboot userspace -s

Esto reiniciará solo la parte del espacio de usuario de macOS sin reiniciar el kernel de Darwin y es equivalente a cambiar el nivel de ejecución en UNIX de antaño.

Para detalles adicionales ver 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.

Esto significa que a nivel técnico sudo launchctl reboot userspace -sno se llama reboot(2)y, por lo tanto, proporciona una forma de cambiar al modo de usuario único sin reiniciar.

También el artículo de Wikipedia sobre el modo de usuario único dice:

En OS X El Capitan y versiones posteriores de macOS, el modo se puede revertir a modo de usuario único con el comando sudo launchctl reboot userspace -sen Terminal, y el sistema se puede reiniciar completamente en modo de usuario único con el comando sudo launchctl reboot system -s.


1 - Cortesía de @ nohillside

poige
fuente