Come ottenere meno tty con Systemd?


29

Ai vecchi tempi ho appena modificato /etc/inittab . Ora, con systemd, sembra avviare tty [1-6] automaticamente, come dovrei disabilitare tty [4-6]?

Sembra che ci sia un solo file di servizio di systemd e utilizzi a %Iper discernere diverse sessioni tty. Spero di non aver bisogno di rimuovere quel servizio e crearli getty@ttyX.servicemanualmente.

Risposte:


35

Non è necessario disabilitare i TTY "extra" poiché i systemdgettys vengono generati su richiesta: vedere man systemd-getty-generatorper i dettagli. Si noti che, per impostazione predefinita, questa generazione automatica viene eseguita solo per i VT fino a VT6 (per imitare i sistemi Linux tradizionali).

Come dice Lennart in un post sul blog 1 :

Al fine di rendere le cose più efficienti, i prompt di accesso vengono ora avviati solo su richiesta. Quando si passa ai VT, il servizio getty viene istanziato su getty@tty2.service, getty@tty5.service e così via. Dato che non è più necessario avviare incondizionatamente i processi getty, questo ci consente di risparmiare un po 'di risorse e rende l'avvio un po' più veloce.

Se desideri configurare un numero specifico di gettys, puoi semplicemente modificarlo logind.confcon la voce appropriata, in questo esempio 3:

NAutoVTs=3


1. In effetti , vale la pena leggere l'intera serie di post, attualmente numerando 18, sistemati per amministratori .


Grazie per la risposta, Jason. L'applicazione della mia azienda viene spedita su un server fisico e su distribuzioni precedenti dovremmo modificare inittab per bloccare altre tty.
jcbwlkr,

11

Sui sistemi basati su Debian, c'è un file che provoca l'avvio di 5 getty extra all'avvio se hai appena creato un server (senza servizio dbus):

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

In esso, 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

La semplice eliminazione di questo file impedirà la generazione di getty extra. Sentiti libero di abbreviare la lista se vuoi solo generare un getty extra (per 2 console virt). Nota che ne ottieni automaticamente uno su tty1 in modo da avere sempre almeno una console virtuale.

Vedi anche: systemd-logind.service non si avvia se manca dbus


2
NB: il file è di proprietà del pacchetto systemd, quindi per modificarlo o eliminarlo, utilizzare dpkg-divertprima. Ma c'è anche un modo nativo di systemd per toglierlo di mezzo: corri sudo systemctl mask getty-static.servicee creane uno tuo/etc
Josip Rodin

2
maskse un servizio abilitato è rumoroso , sarebbe più pulito creare un'unità con lo stesso nome /etcper sovrascriverne il contenuto. Utilizzare ExecStart = / bin / true se si desidera avviare zero getty statici.
sourcejedi

l'altro modo corretto del sistema è quello di sovrascrivere la versione del pacchetto (in realtà non dovresti MAI eliminare quel file) usando sudo systemctl edit getty-static.service, che creerà un file di sostituzione che ha la precedenza su /libquello
ryeager

8

Per disabilitare i getty su particolari TTY 4-6 lasciando possibilmente 1-3 e 7-9 funzionanti, eseguire:

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

maskcrea /etc/systemd/system/{name} -> /dev/nullun collegamento simbolico che disabilita efficacemente il servizio. Tentativo di eseguirlo tramite systemctl startvisualizzerà l'erroreFailed to start NAME.service: Unit NAME.service is masked.

Se si dispone di A.service Wants=masked.service, l'operazione start Aavrà esito positivo, ma verrà generato anche un errore di avvio della dipendenza nel journal.

Se hai B.service Requires=masked.service, start Banche questo fallirà.

Sì, necroanswer. Saluti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.