Comment obtenir moins de ttys avec Systemd?

29

Dans l'ancien temps, je viens de modifier /etc/inittab. Maintenant, avec systemd, il semble démarrer tty [1-6] automatiquement, comment dois-je désactiver tty [4-6]?

Il semble qu'il n'y ait qu'un seul fichier de service systemd et qu'il utilise un %Ipour discerner différentes sessions tty. J'espère que je n'ai pas besoin de supprimer ce service et de le créer [email protected]manuellement.

Marguerite
la source

Réponses:

35

Il n'est pas vraiment nécessaire de désactiver les ATS "supplémentaires" car les sous systemdgettys sont générés à la demande: voir man systemd-getty-generatorpour plus de détails. Notez que, par défaut, cette génération automatique est effectuée uniquement pour les VT jusqu'à VT6 (pour imiter les systèmes Linux traditionnels).

Comme le dit Lennart dans un article de blog 1 :

Afin de rendre les choses plus efficaces, les invites de connexion sont désormais lancées sur demande uniquement. Lorsque vous basculez vers les VT, le service Getty est instancié vers [email protected], [email protected], etc. Comme nous n'avons plus besoin de démarrer inconditionnellement les processus de Getty, cela nous permet d'économiser un peu de ressources et accélère un peu le démarrage.

Si vous souhaitez configurer un nombre spécifique de gettys, vous pouvez, simplement modifier logind.confavec l'entrée appropriée, dans cet exemple 3:

NAutoVTs=3


1. En fait, toute la série de postes - actuellement au nombre de 18 - systemd pour les administrateurs , mérite d'être lue.

jasonwryan
la source
Merci pour la réponse, Jason. L'application de mon entreprise est expédiée sur un serveur physique et sur les anciennes distributions, nous modifierions inittab pour verrouiller les autres ttys.
jcbwlkr
11

Sur les systèmes basés sur Debian, il existe un fichier qui provoque le lancement de 5 Getty supplémentaires au démarrage si vous venez de construire un serveur (sans service dbus):

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

Il y est écrit:

[Service]
Type=oneshot
ExecStart=/bin/systemctl --no-block start [email protected] [email protected] [email protected] [email protected] [email protected]
RemainAfterExit=true

La simple suppression de ce fichier empêchera les Getty supplémentaires de se reproduire. N'hésitez pas à raccourcir la liste si vous souhaitez simplement générer un Getty supplémentaire (pour 2 consoles virt). Notez que vous en obtenez automatiquement une sur tty1, vous avez donc toujours au moins une console virtuelle.

Voir aussi: systemd-logind.service ne démarre pas si dbus est manquant

milli
la source
2
NB: le fichier appartient au package systemd, donc pour le modifier ou le supprimer, utilisez d' dpkg-divertabord. Mais, il existe également un moyen natif de systemd de le supprimer - exécutez sudo systemctl mask getty-static.serviceet configurez le vôtre/etc
Josip Rodin
2
maskSi un service activé est bruyant , il serait plus propre de créer une unité avec le même nom /etcpour remplacer son contenu. Utilisez ExecStart = / bin / true si vous souhaitez démarrer zéro getty statique.
sourcejedi
L'autre façon correcte de systemd est de remplacer la version du package (vous ne devriez JAMAIS supprimer ce fichier) en utilisant sudo systemctl edit getty-static.service, ce qui créera un fichier de remplacement qui aura priorité sur celui- /libci
ryeager
8

Pour désactiver les gettys sur des ATS particuliers 4-6 tout en laissant éventuellement fonctionner 1-3 et 7-9, exécutez:

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

maskcrée un lien symbolique /etc/systemd/system/{name} -> /dev/nullqui désactive efficacement le service. Tenter de l'exécuter via systemctl startaffichera une erreurFailed to start NAME.service: Unit NAME.service is masked.

Si vous avez A.service Wants=masked.service, start Acela réussira, mais générera également une erreur de démarrage de dépendance dans le journal.

Si vous avez B.service Requires=masked.service, start Bcela échouera également.

Ouais, necroanswer. À votre santé.

temoto
la source