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 getty@ttyX.servicesecara manual.

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 getty@tty2.service, getty@tty5.service 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.


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 getty@tty2.service getty@tty3.service getty@tty4.service getty@tty5.service getty@tty6.service
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


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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.