Bagaimana cara mendapatkan lebih sedikit ttys dengan Systemd?

29

Di masa lalu saya baru saja dimodifikasi /etc/inittab. Sekarang, dengan systemd, tampaknya memulai tty [1-6] secara otomatis, bagaimana saya harus menonaktifkan tty [4-6]?

Sepertinya hanya ada satu file layanan systemd, dan itu menggunakan a %Iuntuk membedakan sesi tty yang berbeda. Saya harap saya tidak perlu menghapus layanan itu, dan membuat masing-masing [email protected]secara manual.

bunga aster
sumber

Jawaban:

35

Tidak ada kebutuhan nyata untuk menonaktifkan TTY "ekstra" karena di bawah systemdgettys dihasilkan sesuai permintaan: lihat man systemd-getty-generatordetailnya. Perhatikan bahwa, secara default, pemijahan otomatis ini dilakukan untuk VT hingga VT6 saja (untuk meniru sistem Linux tradisional).

Seperti yang dikatakan Lennart dalam posting blog 1 :

Untuk membuat hal-hal yang lebih efisien, prompt login sekarang dimulai hanya berdasarkan permintaan. Ketika Anda beralih ke VTs, layanan getty dipakai untuk [email protected], [email protected] dan sebagainya. Karena kita tidak perlu lagi memulai proses getty tanpa syarat, ini memungkinkan kita untuk menghemat sedikit sumber daya, dan membuat start-up sedikit lebih cepat.

Jika Anda ingin mengonfigurasi jumlah gettys tertentu, Anda dapat, cukup memodifikasi logind.confdengan entri yang sesuai, dalam contoh ini 3:

NAutoVTs=3


1. Faktanya seluruh rangkaian tulisan — saat ini berjumlah 18 — systemd untuk Administrator , layak dibaca.

jasonwryan
sumber
Terima kasih atas jawabannya, Jason. Aplikasi perusahaan saya dikirimkan pada server fisik dan pada distribusi lama kami akan memodifikasi inittab untuk mengunci ttys lainnya.
jcbwlkr
11

Pada sistem berbasis Debian, ada file yang menyebabkan 5 getty tambahan diluncurkan saat startup jika Anda baru saja membangun server (tanpa layanan dbus):

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

Di dalamnya tertulis:

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

Hanya menghapus file ini akan menghentikan getty ekstra dari pemijahan. Jangan ragu untuk mempersingkat daftar jika Anda ingin menelurkan satu getty tambahan (untuk 2 konsol konsol). Perhatikan bahwa Anda secara otomatis mendapatkan satu di tty1 sehingga Anda selalu memiliki setidaknya satu konsol virtual.

Lihat juga: systemd-logind.service gagal memulai jika dbus hilang

mili
sumber
2
NB: file tersebut dimiliki oleh paket systemd, jadi untuk memodifikasi atau menghapusnya, gunakan dpkg-divertdulu. Tapi, ada juga cara asli sistem untuk mengeluarkannya - jalankan sudo systemctl mask getty-static.servicedan atur sendiri/etc
Josip Rodin
2
maskJika layanan yang diaktifkan berisik , akan lebih bersih untuk membuat unit dengan nama yang sama /etcuntuk mengganti kontennya. Gunakan ExecStart = / bin / true jika Anda ingin memulai nol getty statis.
sourcejedi
cara yang benar systemd lain adalah dengan menimpa versi paket (Anda benar-benar harus PERNAH menghapus file yang) menggunakan sudo systemctl edit getty-static.service, yang akan membuat file override yang akan didahulukan dari /libsatu
ryeager
8

Untuk menonaktifkan gettys pada TTY tertentu 4-6 sementara mungkin membiarkan 1-3 dan 7-9 berfungsi, jalankan:

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

maskmenciptakan symlink /etc/systemd/system/{name} -> /dev/nullyang secara efektif menonaktifkan layanan. Mencoba menjalankannya systemctl startakan menampilkan kesalahanFailed to start NAME.service: Unit NAME.service is masked.

Jika Anda memiliki A.service Wants=masked.service, maka start Aakan berhasil tetapi juga menghasilkan kesalahan mulai ketergantungan dalam jurnal.

Jika Anda memiliki B.service Requires=masked.service, maka start Bjuga akan gagal.

Yup, necroanswer. Tepuk tangan.

temoto
sumber