GNU/Linux >> Tutoriales Linux >  >> Linux

¿Qué servicio de Systemd inicia la consola de texto en el dispositivo Framebuffer?

Estoy trabajando con una plataforma integrada y necesito tener /dev/fb0 clear for my own use (el dispositivo accesible a través de la consola serial mientras la pantalla se usa para mostrar información, sin X).

Ya he cambiado default.target de gráfico a multiusuario, pero ahora abre Getty con un indicador de inicio de sesión en el dispositivo framebuffer y simplemente no puedo ubicar cuál el servicio es eso. No quiero deshabilitar el inicio de sesión de la consola serie por casualidad, y lsof no muestra nada con /dev/fb0 abierto.

La distribución es Yocto Linux, si te sirve de algo.

Respuesta aceptada:

lsof no muestra nada con /dev/fb0 abierto.

no lo hará Hay un programa emulador de terminal integrado en el kernel de Linux. No se manifiesta como un proceso en ejecución con identificadores de archivos abiertos. Está en capas sobre el framebuffer y el subsistema de eventos de entrada, al que utiliza interfaces internas del kernel para acceder. Se presenta a los sistemas en modo aplicación como una serie de terminales virtuales del núcleo dispositivos, /dev/tty1 Etcétera; un pseudo-archivo bajo /sys que muestra el número KVT activo; y una serie de dispositivos de búfer de video estilo CGA, /dev/vcsa1 y así sucesivamente.

Uno de esos sistemas en modo aplicación es, por supuesto, el getty +login system, que se puede configurar para operar en estos terminales virtuales del kernel y (como ha descubierto) es por defecto. Puedes deshacerte fácilmente del getty procesos utilizando mecanismos systemd documentados.

En un antiguo Sistema 5 init sistema, cada getty sería un registro en /etc/inittab . En un BSD init sistema, cada getty es un registro en /etc/ttys . En un sistema systemd, las cosas son un poco indirectas.

  • El demonio de "inicio de sesión", logind , conoce cosas llamadas "asientos" en la jerga de systemd. El "asiento" cero es el que tiene el framebuffer principal y todos esos terminales virtuales del kernel.
  • Para ese asiento, login intentos de iniciar N servicios systemd, llamados [email protected] a través de [email protected]N.service . El valor de N se establece en el NAutoVTs configuración en /etc/systemd/logind.conf .
  • Estos servicios systemd se crean a partir de una unidad de plantilla de servicio , llamado [email protected] . El parámetro de plantilla es, como arriba, el nombre del dispositivo del archivo de dispositivo del terminal virtual del kernel , en /dev/ .
  • [email protected] es, en la configuración predeterminada, un enlace simbólico a [email protected] .
  • Está [email protected] que describe ejecutar un getty programa, configurado para hacer su entrada/salida a través del archivo de dispositivo de terminal virtual del kernel.

Entonces, para detener algo de esto, visite /etc/systemd/logind.conf y configurar logind no iniciar automáticamente ningún autovt servicios (y no reservar ningún terminal virtual, si quieres ser minucioso al respecto).

Relacionado:¿Cómo cambiar el tamaño de las páginas de un PDF?

Sin embargo, eso no es todo. El programa emulador de terminal todavía está activo en el kernel, y todo, desde los mensajes de registro dirigidos a un VT del kernel hasta el parpadeo regular del cursor, hará que el emulador de terminal interfiera con el uso del framebuffer. Pero eso es cuestión de codificar el programa que tiene que usa el framebuffer para negociar con el programa emulador de terminal del kernel, que ya se ha respondido aquí.

Por cierto, el inicio de sesión de la consola serie se realiza a través de una ruta bastante diferente. Un generador crea una instancia de [email protected] unidad de plantilla en un momento de arranque, instanciando una vez para cada dispositivo de consola del núcleo que encuentre o del que se informe.

Lecturas adicionales

  • Práctica recomendada para ocultar la consola virtual mientras se renderiza el video en el búfer de cuadros
  • https://superusuario.com/a/723442/38062
  • logind.conf . páginas del manual systemd. freedesktop.org.
  • Sistema “multiasiento”d. freedesktop.org.
  • systemd-getty-generator . páginas del manual systemd. freedesktop.org.

Linux
  1. ¿El sustituto correcto para Rc.local en Systemd en lugar de volver a crear Rc.local?

  2. Linux:¿cómo sabe el kernel de Linux los números mayores y menores de los dispositivos?

  3. Linux:¿cómo determinar qué módulo contamina el kernel?

  4. ¿Mejor práctica para ocultar la consola virtual mientras se renderiza video en Framebuffer?

  5. Cómo detener el servicio systemd

Pruebe el editor de texto e3 Linux

El ciclo de vida de las pruebas del kernel de Linux

Comandos Systemctl para administrar el servicio Systemd

Administrar cgroups con systemd

Cómo enumerar el árbol de dispositivos del núcleo

¿Cuál es la diferencia entre partx y kpartx?