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.
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).
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:
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):
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.
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.
Pada sistem berbasis Debian, ada file yang menyebabkan 5 getty tambahan diluncurkan saat startup jika Anda baru saja membangun server (tanpa layanan dbus):
Di dalamnya tertulis:
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
sumber
dpkg-divert
dulu. Tapi, ada juga cara asli sistem untuk mengeluarkannya - jalankansudo systemctl mask getty-static.service
dan atur sendiri/etc
mask
Jika layanan yang diaktifkan berisik , akan lebih bersih untuk membuat unit dengan nama yang sama/etc
untuk mengganti kontennya. Gunakan ExecStart = / bin / true jika Anda ingin memulai nol getty statis.sudo systemctl edit getty-static.service
, yang akan membuat file override yang akan didahulukan dari/lib
satuUntuk menonaktifkan gettys pada TTY tertentu 4-6 sementara mungkin membiarkan 1-3 dan 7-9 berfungsi, jalankan:
mask
menciptakan symlink/etc/systemd/system/{name} -> /dev/null
yang secara efektif menonaktifkan layanan. Mencoba menjalankannyasystemctl start
akan menampilkan kesalahanFailed to start NAME.service: Unit NAME.service is masked.
Jika Anda memiliki A.service
Wants=masked.service
, makastart A
akan berhasil tetapi juga menghasilkan kesalahan mulai ketergantungan dalam jurnal.Jika Anda memiliki B.service
Requires=masked.service
, makastart B
juga akan gagal.Yup, necroanswer. Tepuk tangan.
sumber