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:
lsoftidak menampilkan apa pun dengan/dev/fb0buka.
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,
logindmencoba untuk memulai N layanan systemd, bernama[email protected]melalui[email protected]N.service. Nilai N diatur dalamNAutoVTspengaturan 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 menjalankangettyprogram, 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.