W dawnych czasach właśnie modyfikowałem /etc/inittab. Teraz, gdy systemd wydaje się uruchamiać tty [1-6] automatycznie, jak powinienem wyłączyć tty [4-6]?
Wygląda na to, że jest tylko jeden plik usługi systemowej i używa on %Ido rozpoznawania różnych sesji tty. Mam nadzieję, że nie muszę usuwać tej usługi i tworzyć każdej z nich [email protected]ręcznie.
Nie ma potrzeby wyłączania „dodatkowych” TTY, ponieważ w systemdgettys są generowane na żądanie: zobacz man systemd-getty-generatorszczegóły. Zauważ, że domyślnie to automatyczne spawnowanie odbywa się tylko dla VT do VT6 (w celu naśladowania tradycyjnych systemów Linux).
Aby wszystko było bardziej wydajne, monity logowania są teraz uruchamiane tylko na żądanie. Po przejściu na VT usługa getty jest tworzona w postaci [email protected], [email protected] i tak dalej. Ponieważ nie musimy już bezwarunkowo uruchamiać procesów getty, pozwala nam to zaoszczędzić trochę zasobów i przyspiesza start-up.
Jeśli chcesz skonfigurować określoną liczbę gettys, możesz po prostu zmodyfikować logind.confodpowiednią pozycję w tym przykładzie 3:
Dzięki za odpowiedź, Jason. Aplikacja mojej firmy jest dostarczana na serwerze fizycznym, a przy starszych dystrybucjach zmodyfikowalibyśmy inittab, aby zablokować inne tty.
jcbwlkr
11
W systemach opartych na Debianie istnieje plik, który powoduje uruchomienie 5 dodatkowych programów getty podczas uruchamiania, jeśli właśnie zbudowałeś serwer (bez usługi dbus):
Samo usunięcie tego pliku zatrzyma pojawienie się dodatkowego getty. Skróć listę, jeśli chcesz po prostu odrodzić jednego dodatkowego getty (na 2 konsole virt). Zauważ, że automatycznie dostajesz jeden na tty1, więc zawsze masz przynajmniej jedną wirtualną konsolę.
Uwaga: plik należy do pakietu systemd, więc aby go zmodyfikować lub usunąć, użyj go dpkg-divertnajpierw. Ale istnieje również systemowo natywny sposób na usunięcie go z pracy - uruchomienie sudo systemctl mask getty-static.servicei skonfigurowanie własnego/etc
Josip Rodin
2
maskPonieważ włączona usługa jest głośna , łatwiej byłoby utworzyć jednostkę o tej samej nazwie, /etcaby zastąpić jej zawartość. Użyj ExecStart = / bin / true, jeśli chcesz uruchomić zero statycznego getty.
sourcejedi
innym prawidłowym sposobem jest zastąpienie wersji pakietu (naprawdę NIGDY nie należy usuwać tego pliku) za pomocą sudo systemctl edit getty-static.service, która utworzy plik zastępowania, który będzie nadrzędny w stosunku do /libjednego
ryeager
8
Aby wyłączyć gettys na poszczególnych TTY 4-6, a jednocześnie pozostawiając 1-3 i 7-9 działające, uruchom:
for i in {4..6}; do
systemctl mask getty@tty${i}.service
done
masktworzy dowiązanie symboliczne, /etc/systemd/system/{name} -> /dev/nullktóre skutecznie wyłącza usługę. Próba uruchomienia go systemctl startwyświetli błądFailed to start NAME.service: Unit NAME.service is masked.
Jeśli masz A.service Wants=masked.service, start Aodniesie sukces, ale również wygeneruje błąd uruchomienia zależności w dzienniku.
Jeśli masz B.service Requires=masked.service, to start Brównież się nie powiedzie.
W systemach opartych na Debianie istnieje plik, który powoduje uruchomienie 5 dodatkowych programów getty podczas uruchamiania, jeśli właśnie zbudowałeś serwer (bez usługi dbus):
W nim napisano:
Samo usunięcie tego pliku zatrzyma pojawienie się dodatkowego getty. Skróć listę, jeśli chcesz po prostu odrodzić jednego dodatkowego getty (na 2 konsole virt). Zauważ, że automatycznie dostajesz jeden na tty1, więc zawsze masz przynajmniej jedną wirtualną konsolę.
Zobacz także: systemd-logind.service nie uruchamia się, jeśli brakuje dbus
źródło
dpkg-divert
najpierw. Ale istnieje również systemowo natywny sposób na usunięcie go z pracy - uruchomieniesudo systemctl mask getty-static.service
i skonfigurowanie własnego/etc
mask
Ponieważ włączona usługa jest głośna , łatwiej byłoby utworzyć jednostkę o tej samej nazwie,/etc
aby zastąpić jej zawartość. Użyj ExecStart = / bin / true, jeśli chcesz uruchomić zero statycznego getty.sudo systemctl edit getty-static.service
, która utworzy plik zastępowania, który będzie nadrzędny w stosunku do/lib
jednegoAby wyłączyć gettys na poszczególnych TTY 4-6, a jednocześnie pozostawiając 1-3 i 7-9 działające, uruchom:
mask
tworzy dowiązanie symboliczne,/etc/systemd/system/{name} -> /dev/null
które skutecznie wyłącza usługę. Próba uruchomienia gosystemctl start
wyświetli błądFailed to start NAME.service: Unit NAME.service is masked.
Jeśli masz A.service
Wants=masked.service
,start A
odniesie sukces, ale również wygeneruje błąd uruchomienia zależności w dzienniku.Jeśli masz B.service
Requires=masked.service
, tostart B
również się nie powiedzie.Tak, necroanswer. Twoje zdrowie.
źródło