¿Cómo cambio el nivel de ejecución en systemd?

27

Bastante simple, estoy tratando de cambiar el nivel de ejecución. Todo lo que encuentro en línea me señala el archivo ubicado en:

/etc/init/rc-sysinit.conf

Aquí he intentado cambiar el "DEFAULT_RUNLEVEL" a 3 o cualquier otra cosa y no hace ninguna diferencia (el valor original era 2, lo que tampoco tenía mucho sentido). Pase lo que pase, mi máquina arranca completamente y cuando verifico el comando runlevel, veo "N 5" como resultado cada vez.

¿Cómo cambio el nivel de ejecución? Prefiero no anularlo a través de grub o algún otro mecanismo de solución. Y no estoy buscando cómo deshabilitar X específicamente.

Todas las instrucciones que estaba buscando en línea eran un poco viejas, ¿cambió algo con 16.04?

gnomed
fuente
Entonces, ¿desea cambiarlo manualmente después del arranque o automáticamente a un nivel de ejecución diferente cada vez?
Byte Commander
Automático cada vez. Fue configurado con el escritorio ubuntu, pero ahora quiero bajar el nivel de ejecución y ponerlo en una esquina en alguna parte.
Enviado el
En realidad, ¿por qué quieres cambiar el nivel de ejecución? ¿Solo desea iniciar desde una interfaz de terminal en lugar de cargar el escritorio? En ese caso, debería modificar las cargas estándar de systemd de destino en el arranque y agregar la opción de "texto" del núcleo.
Byte Commander
44
Probablemente porque desde 15.10, Ubuntu usa en systemdlugar de upstarty ese archivo del que estás hablando es para upstart. Si lees artículos aún más antiguos, también encontrarás formas para los antiguos init. Pero con systemd, simplemente puede cambiar entre la GUI y el modo de texto usando sudo systemctl start graphical.targety sudo systemctl start multi-user.target.
Byte Commander
55
Para todos los revisores ¡ Esta es una pregunta válida! Hay ES una manera de cambiar el nivel de ejecución (ya sea o no que se llama "los niveles de ejecución" o "blancos") usandosystemctl isolate
Ron

Respuestas:

50

Ubuntu 16.04 usa systemd en lugar de init y, por lo tanto, el concepto de runlevelses reemplazado por el término targets. Entonces, de hecho, hay un mapeo entre los niveles de ejecución basados ​​en init y los objetivos basados ​​en systemd:

   Mapping between runlevels and systemd targets
   ┌─────────┬───────────────────┐
   │Runlevel │ Target            │
   ├─────────┼───────────────────┤
   │0        │ poweroff.target   │
   ├─────────┼───────────────────┤
   │1        │ rescue.target     │
   ├─────────┼───────────────────┤
   │2, 3, 4  │ multi-user.target │
   ├─────────┼───────────────────┤
   │5        │ graphical.target  │
   ├─────────┼───────────────────┤
   │6        │ reboot.target     │
   └─────────┴───────────────────┘

Ahora, para cambiar los "niveles de ejecución" en 16.04, puede usar, por ejemplo, para:

sudo systemctl isolate multi-user.target

Para hacer que este sea el "nivel de ejecución" predeterminado, puede usar:

sudo systemctl enable multi-user.target
sudo systemctl set-default multi-user.target

Desde man systemctl

   isolate NAME
       Start the unit specified on the command line and its dependencies and stop all others. If
       a unit name with no extension is given, an extension of ".target" will be assumed.

       This is similar to changing the runlevel in a traditional init system. The isolate command
       will immediately stop processes that are not enabled in the new unit, possibly including
       the graphical environment or terminal you are currently using

También eche un vistazo man systemd.specialpara saber más sobre los objetivos en systemd.

Ron
fuente
Hola @Ron tu respuesta es genial Lo hice para instalar el controlador oficial de Nvidia pero ahora mi pantalla no muestra nada más que una pantalla azul. Cómo puedo arreglar esto ? Gracias de antemano por su ayuda.
Raphael Teubner
Ingrese al modo de recuperación desde Grub, luego, cuando la raíz vuelva al nivel de ejecución anterior.
LottaLava
sí. Solo iba a comentar cómo los chicos que dan estos comandos extremadamente agradables de pasar de arranque de gui a modo de texto no se preocupan en absoluto de decirnos acerca de cómo volver de arranque de texto a arranque de gui.
nyxee
Entonces, solo para tener en cuenta, ejecuté sudo systemctl set-default multi-user.targeten el modo GUI, al reiniciar, obtuve una pantalla en blanco, lo que era una buena señal de que la GUI no había podido arrancar, así que presioné Ctrl-Alt-F3para ingresar al Runlevel 3, hice lo que necesitaba (instalé NVIDIA- CUDA), ejecutar sudo systemctl set-default graphical.targety volver a la pantalla de inicio de sesión GUI. Pero, ahora no he podido iniciar sesión. ¿Es esa la forma correcta de volver al nivel de ejecución anterior ?
nyxee
2
@nyxee: sí, sudo systemctl set-default graphical.targetes la forma correcta de volver al entorno de escritorio GUI. Su falla de inicio de sesión no parece estar relacionada con el cambio entre los niveles de ejecución; se parece más al problema del bucle de arranque nVidia . Para salir de dudas, volverá a reducirse al nivel 3, eliminar los controladores de nVidia y Cuda, instalar un controlador de nVidia desde el repositorio, conjunto predeterminado nivel de ejecución 5 (graphical.target), a continuación, reiniciar el sistema y ver si puede entrar.
Andy Turfer