Як отримати менше TTY з Systemd?


29

За старих часів я просто змінювався /etc/inittab. Тепер, коли systemd, схоже, запускається tty [1-6] автоматично, як мені відключити tty [4-6]?

Схоже, існує лише один системний файл служби, і він використовує a %Iдля розрізнення різних сеансів tty. Сподіваюся, мені не потрібно видаляти цю службу та створювати її getty@ttyX.serviceвручну.

Відповіді:


35

Немає реальної потреби відключати "зайві" TTY, оскільки під gettys systemdформуються на вимогу: детальніше див man systemd-getty-generator. Зауважте, що за замовчуванням цей автоматичний нерест робиться лише для ВТ до VT6 (для імітації традиційних систем Linux).

Як говорить Леннарт у публікації в блозі 1 :

Для того, щоб зробити ефективнішими підказки для входу, тепер запускаються лише на вимогу. Коли ви переходите на VT, служба getty інсталюється на getty@tty2.service, getty@tty5.service тощо. Оскільки нам більше не доводиться беззастережно запускати процеси Getty, це дозволяє нам зекономити трохи ресурсів і робить процес запуску трохи швидшим.

Якщо ви хочете налаштувати конкретну кількість gettys, ви можете просто змінити logind.confвідповідним записом у цьому прикладі 3:

NAutoVTs=3


1. Насправді всю серію дописів (наразі їх нараховується 18 - систематизовано для адміністраторів ) варто прочитати.


Дякую за відповідь, Джейсон. Додаток моєї компанії постачається на фізичний сервер, і на старих дистрибутивах ми б модифікували inittab, щоб заблокувати інші файли.
jcbwlkr

11

У системах на базі Debian є файл, який спричиняє запуск 5 додаткових getty при запуску, якщо ви тільки що побудували сервер (без служби dbus):

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

У ньому написано:

[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

Просто видалення цього файлу зупинить нерест нересту. Не соромтеся скоротити список, якщо ви хочете просто нерестувати одну додаткову гетті (для 2 конвертів Virt). Зауважте, що ви автоматично отримуєте його на tty1, тому у вас завжди є хоча б одна віртуальна консоль.

Дивіться також: systemd-logind.service не запускається, якщо dbus відсутній


2
Примітка: файл належить пакету systemd, тому для його зміни або видалення використовуйте dpkg-divertспочатку. Але є також рідний для системних способів вийти з цього шляху - запустіть sudo systemctl mask getty-static.serviceі налаштуйте свій власний/etc
Йосип Родін

2
maskЯкщо увімкнена послуга шумно , то було б чистіше створити блок з таким самим іменем, /etcщоб перекрити вміст. Використовуйте ExecStart = / bin / true, якщо ви хочете запустити нульові статичні значення Getty.
sourcejedi

іншим правильним способом є переосмислення версії пакету (ви дійсно НІКОЛИ не повинні видаляти цей файл) за допомогою sudo systemctl edit getty-static.service, що створить файл перезапису, який має перевагу над /libодним
ryeager

8

Щоб відключити gettys на конкретних TTY 4-6, поки можливо залиште 1-3 та 7-9 працюючих, запустіть:

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

maskстворює симпосилання, /etc/systemd/system/{name} -> /dev/nullяке фактично вимикає службу. Спроба запустити його systemctl startвідобразить помилкуFailed to start NAME.service: Unit NAME.service is masked.

Якщо у вас є A.service Wants=masked.service, start Aце вдасться, але також створить помилку запуску залежності в журналі.

Якщо у вас є B.service Requires=masked.service, тоді start Bтакож вийде з ладу.

Так, невідповідач. Ура.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.