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 elNAutoVTs
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 ungetty
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).
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.