Saya bekerja dengan platform tersemat dan harus memiliki /dev/fb0
clear untuk penggunaan saya sendiri (perangkat dapat diakses melalui konsol serial saat layar digunakan untuk menampilkan informasi, tanpa X.).
Saya sudah mengubah default.target
dari grafis ke multi-pengguna, tetapi sekarang getty terbuka dengan prompt login pada perangkat framebuffer dan saya tidak dapat menemukan yang layanan itu. Saya tidak ingin menonaktifkan login konsol serial secara kebetulan, dan lsof
tidak menampilkan apa pun dengan /dev/fb0
buka.
Distribusinya adalah Yocto Linux, jika itu bisa membantu.
Jawaban yang Diterima:
lsof
tidak menampilkan apa pun dengan/dev/fb0
buka.
Ini tidak akan terjadi. Ada program emulator terminal yang dibangun ke dalam kernel Linux. Itu tidak bermanifestasi sebagai proses yang berjalan dengan pegangan file terbuka. Itu berlapis di atas framebuffer dan subsistem acara input, yang menggunakan antarmuka kernel internal untuk diakses. Ini menampilkan dirinya ke sistem mode aplikasi sebagai serangkaian terminal virtual kernel perangkat, /dev/tty1
Dan seterusnya; file pseudo di bawah /sys
yang menunjukkan nomor KVT aktif; dan serangkaian perangkat penyangga video bergaya CGA, /dev/vcsa1
dan seterusnya.
Salah satu sistem mode aplikasi tersebut tentu saja adalah getty
+logind
sistem, yang dapat dikonfigurasi untuk beroperasi pada terminal virtual kernel ini, dan (seperti yang Anda temukan) secara default. Anda dapat dengan mudah menyingkirkan getty
proses menggunakan mekanisme systemd yang terdokumentasi.
Di Sistem 5 init
sistem, setiap getty
akan menjadi catatan di /etc/inittab
. Dalam init
BSD sistem, setiap getty
adalah catatan di /etc/ttys
. Dalam sistem systemd, hal-hal sedikit tidak langsung.
- Setan “login”,
logind
, tahu tentang hal-hal yang disebut "kursi" dalam bahasa gaul systemd. Nol “Kursi” adalah yang memiliki framebuffer utama dan semua terminal virtual kernel tersebut. - Untuk kursi itu,
logind
mencoba untuk memulai N layanan systemd, bernama[email protected]
melalui[email protected]N.service
. Nilai N diatur dalamNAutoVTs
pengaturan di/etc/systemd/logind.conf
. - Layanan systemd ini dibuat dari unit template layanan , bernama
[email protected]
. Parameter template adalah, seperti di atas, nama perangkat dari file perangkat terminal virtual kernel , di/dev/
. [email protected]
adalah, dalam konfigurasi default, tautan simbolis ke[email protected]
.- Ini
[email protected]
yang menjelaskan menjalankangetty
program, atur untuk melakukan input/outputnya melalui file perangkat terminal virtual kernel.
Jadi untuk menghentikan semua ini, kunjungi /etc/systemd/logind.conf
dan konfigurasikan logind
untuk tidak memulai secara otomatis autovt
layanan (dan tidak memesan terminal virtual apa pun, jika Anda ingin mengetahuinya secara menyeluruh).
Namun, itu bukan keseluruhannya. Program emulator terminal masih aktif di kernel, dan segala sesuatu mulai dari pesan log yang diarahkan ke kernel VT hingga flashing kursor secara teratur akan menyebabkan emulator terminal mengganggu penggunaan framebuffer Anda. Tapi itu masalah pengkodean program yang Anda miliki yang menggunakan framebuffer untuk bernegosiasi dengan program emulator terminal kernel, yang sudah dijawab di sini.
Omong-omong, login konsol serial terjadi melalui rute yang sangat berbeda. Sebuah generator membuat instance [email protected]
unit template waktu boot, membuat instance sekali untuk setiap perangkat konsol kernel yang ditemukan, atau diberitahukan.
Bacaan lebih lanjut
- Praktik terbaik untuk menyembunyikan konsol virtual saat merender video ke framebuffer
- https://superuser.com/a/723442/38062
logind.conf
. halaman manual systemd. freedesktop.org.- Sistem “multiseat”d. freedesktop.org.
systemd-getty-generator
. halaman manual systemd. freedesktop.org.