¿Cómo obtener menos ttys con Systemd?


29

En los viejos tiempos simplemente modifiqué /etc/inittab. Ahora, con systemd, parece iniciar tty [1-6] automáticamente, ¿cómo debo desactivar tty [4-6]?

Parece que solo hay un archivo de servicio systemd, y utiliza a %Ipara discernir diferentes sesiones de tty. Espero no tener que eliminar ese servicio y crear cada uno getty@ttyX.servicemanualmente.

Respuestas:


35

No hay una necesidad real de deshabilitar los TTY "extra", ya que bajo systemdgettys se generan bajo demanda: consulte man systemd-getty-generatorpara más detalles. Tenga en cuenta que, de forma predeterminada, este desove automático se realiza solo para los VT hasta VT6 (para imitar los sistemas Linux tradicionales).

Como Lennart dice en una publicación de blog 1 :

Para hacer las cosas más eficientes, las solicitudes de inicio de sesión ahora solo se inician bajo demanda. A medida que cambia a los VT, el servicio getty se instancia a getty@tty2.service, getty@tty5.service, etc. Dado que ya no tenemos que iniciar incondicionalmente los procesos de getty, esto nos permite ahorrar un poco de recursos y hace que el inicio sea un poco más rápido.

Si desea configurar un número específico de gettys, puede modificarlo logind.confcon la entrada apropiada, en este ejemplo 3:

NAutoVTs=3


1. De hecho , vale la pena leer toda la serie de publicaciones, que actualmente son 18, systemd para administradores .


Gracias por la respuesta, Jason. La aplicación de mi empresa se envía en un servidor físico y en distribuciones anteriores modificaríamos inittab para bloquear otros ttys.
jcbwlkr

11

En los sistemas basados ​​en Debian, hay un archivo que hace que se inicien 5 getty adicionales al inicio si acaba de construir un servidor (sin servicio dbus):

/lib/systemd/system/getty.target.wants/getty-static.service

En ella dice:

[Service]
Type=oneshot
ExecStart=/bin/systemctl --no-block start getty@tty2.service getty@tty3.service getty@tty4.service getty@tty5.service getty@tty6.service
RemainAfterExit=true

Simplemente borrando este archivo se detendrá la generación adicional de getty. Siéntase libre de acortar la lista si solo desea generar un getty adicional (para 2 consolas virt). Tenga en cuenta que automáticamente obtiene uno en tty1, por lo que siempre tiene al menos una consola virtual.

Consulte también: systemd-logind.service no se inicia si falta dbus


2
NB: el archivo es propiedad del paquete systemd, por lo tanto, para modificarlo o eliminarlo, úselo dpkg-divertprimero. Pero también hay una forma nativa de systemd para quitarlo del camino: ejecutar sudo systemctl mask getty-static.servicey configurar el suyo propio/etc
Josip Rodin el

2
maskSi un servicio habilitado es ruidoso , sería más limpio crear una unidad con el mismo nombre /etcpara anular su contenido. Use ExecStart = / bin / true si desea comenzar cero estático getty.
sourcejedi

la otra forma correcta de systemd es anular la versión del paquete (nunca debería eliminar ese archivo) usando sudo systemctl edit getty-static.service, lo que creará un archivo de anulación que tiene prioridad sobre el /libone
ryeager

8

Para deshabilitar gettys en TTY particulares 4-6 y dejar posiblemente 1-3 y 7-9 funcionando, ejecute:

for i in {4..6}; do
  systemctl mask getty@tty${i}.service
done

maskcrea un enlace simbólico /etc/systemd/system/{name} -> /dev/nullque efectivamente deshabilita el servicio. El intento de ejecutarlo systemctl startmostrará un errorFailed to start NAME.service: Unit NAME.service is masked.

Si tiene A.service Wants=masked.service, start Atendrá éxito pero también generará un error de inicio de dependencia en el diario.

Si tiene servicio B. Requires=masked.service, start Btambién fallará.

Sí, necroanswer. Aclamaciones.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.