Jadi saya memiliki model Palm Pre (P100EWW asli) yang saya aktifkan mode pengembang, dan menginstal chroot Debian Squeeze. Bagus sekali. Saya memiliki rencana untuk menggunakan ini untuk APA SAJA (rekan bittorrent, server web) tetapi telepon.
Saya perhatikan jika saya melakukan cat /dev/urandom > /dev/fb0
itu sebenarnya menulis piksel acak ke layar sampai No space left on device
kesalahan dihasilkan. Luar biasa, sekarang saya bisa menggunakan layar.
Jadi, jenis utiliti apa yang akan baik A) izinkan saya menggunakan / dev / fb0 sebagai konsol saya dapat menampilkan teks ke atau B) render teks pada / dev / fb0 dari baris perintah.
Saya belum tahu tentang mengkompilasi ulang kernel untuk ini (saya ingin akhirnya menghapus WebOS sepenuhnya dan mengubahnya menjadi server ARM minimal) jadi alat userspace jika mereka ada adalah apa yang saya tanyakan. Juga lebih suka untuk me-render langsung ke / dev / fb0 dan tidak menggunakan X.
sumber
Jawaban:
Untuk menggunakan framebuffer sebagai konsol, Anda memerlukan
fbdev
modul. Anda mungkin harus mengkompilasi ulang kernel Anda.Anda mungkin juga tertarik dengan proyek DirectFB, yang merupakan perpustakaan yang mempermudah penggunaan framebuffer. Ada juga aplikasi dan lingkungan GUI yang sudah ditulis untuk itu.
sumber
dfbg
yang memungkinkan saya menaruh gambar di sana (dan tidak menghapusnya setelah selesai sepertifbi
). Saya tahu saya kemungkinan dapat menemukan utilitas untuk membuat .png atau serupa dari teks blok jadi ini mungkin hanya berfungsi ...Beberapa orang telah menjawab bagian-bagian dari pertanyaan Anda yang berhubungan dengan kernel dan meletakkan gambar (alih-alih teks) ke dalam framebuffer, tetapi sejauh ini sisanya tetap tidak tertangani. Ya, Anda dapat menggunakan subsistem terminal virtual kernel untuk membuat konsol framebuffer . Tetapi ada beberapa alat yang memungkinkan Anda untuk menggunakan perangkat framebuffer untuk membuat terminal virtual ruang pengguna . Ini termasuk:
console-terminal-emulator
andconsole-fb-realizer
tools in nosh - terminal virtual userspace yang bertujuan mereplikasi terminal virtual kernel Linux dan FreeBSD / PC-BSD. Itu juga tidak memiliki ketergantungan pada perpustakaan X.logind
server di systemd dan gagasannya tentang "kursi".Ali Gholami Rudi secara khusus telah menghasilkan lebih dari sekadar emulator terminal untuk pekerjaan framebuffer. Dia juga menulis penampil PDF direct-to-framebuffer, penampil VNC, pemutar media, dan pembaca Quran.
Perbandingan sisi-demi-sisi lengkap dengan cakupan dari jawaban ini; tetapi di sini ada beberapa poin yang relevan dengan pertanyaan:
fbpad
dan alat nosh dengan desain tidak menggunakan perpustakaan X apa pun.bdftobogl
alat; dan satu mengkonversi TTF ke font "tinyfont" yang digunakan oleh fbpad dengan alat ft2tf ( Arch ).console-fb-realizer
menggunakan font "vt" yang sama dengan subsistem terminal virtual FreeBSD 10.1 kernel baru , dan dengan demikian membagikan alat manipulasi font FreeBSDvtfontcvt
untuk mengonversi font BDF.console-convert-kbdmap
alat ini. Sekali lagi, file kbdmap ini adalah yang digunakan dengan subsistem FreeBSD / PC-BSD vt .login
./etc/ttys
(BSD),/etc/inittab
(sistem Linux 5init
), atau sistem lain, di mana mereka meninggalkan pekerjaan pemijahan getty / login / shell.console-fb-realizer
hanya membutuhkan cukup hak istimewa untuk membuka framebuffer dan memasukkan perangkat acara, yang tidak perlu menjadi hak pengguna super, dan untuk mengakses FIFO dan file biasa yang dikelola olehconsole-terminal-emulator
, yang pada gilirannya tidak memerlukan hak istimewa sama sekali.Semua ini tentu saja adalah emulator terminal . Jika Anda ingin mengeluarkan emulasi terminal dan menempatkan teks pada framebuffer secara langsung, Anda memiliki beberapa pilihan:
console-terminal-emulator
.console-fb-realizer
menggunakan file tampilan dengan array sel karakter, seperti/dev/vcsa*
tetapi file biasa (bukan file perangkat karakter khusus) dan dengan titik kode Unicode, atribut ECMA-48, dan warna RGB 24-bit. Jadi orang dapat menjalankannya dan hanya menulis karakter + atribut + warna langsung ke file array sel karakter, membiarkanconsole-fb-realizer
melakukan rendering font ke framebuffer.Sebagai tambahan: Perhatikan bahwa ini adalah kebalikan dari integrasi dengan BRLTTY , yang menggunakan
console-terminal-emulator
tetapi tidak berjalanconsole-fb-realizer
.sumber
fbcon
- tergantung pada opsi waktu kompilasi . Ini juga berlaku untuk emulator terminal dependen mereka Terminologi : Bekerja langsung di framebuffer linux (fbcon) . Selainterminology
, saya yang keduakmscon
(dan pekerjaan lain dari David Herrmann) rekomendasi sendiri .Jika Anda bisa
/dev/urandom > /dev/fb0
menggambar dan mendapatkan piksel acak di layar, Anda memiliki semua yang Anda butuhkan.Dalam kasus saya, saya perlu membuang beberapa info teks. Saya menguji ini di busybox dan raspi, jadi mungkin berhasil untuk Anda. Jawabannya mungkin agak lama, karena jika Anda tidak menggunakan konsol, Anda perlu mencetak sendiri piksel-piksel karakter. Untungnya seseorang telah melakukan pekerjaan berat, jadi kita hanya perlu menggabungkannya.
Di busybox atau raspi Anda, Anda harus memiliki
fbset
biner. Ini mungkin membantu Anda mengetahui pengaturan Anda sebagai dimensi layar.Di embedded saya terlihat seperti ini:
Bagian penting di sini adalah lebar 480 dan tinggi 272 piksel.
Seperti yang Anda sebutkan, Anda dapat memenuhi layar dengan
cat /dev/urandom > /dev/fb0
dan Anda dapat menghapusnya dengan
cat /dev/zeros > /dev/fb0
Dari membersihkan layar Anda, kami harus memastikan Anda mendapatkan dimensi dengan benar.
Secara kebetulan, busybox saya memiliki biner fbsplash yang mendapatkan sebagai input file .ppm.
Benar jika saya salah, tetapi tampaknya
fb0
menerima format ini. Melihat Portable Anymap di Wikipedia , ada beberapa "subformat" ... fbsplash menggunakan yang mewah dengan warna, dan seterusnya ... tetapi kami ingin dapat hanya mencetak sesuatu yang dapat dibaca. Mari kita gunakan kode P1 dalam ASCII demi kesederhanaan. Jika kita bisa mencetak garis vertikal, kita akan tahu dimensi kita benar. Mari kita coba:Garis vertikal dalam ppm tipe P1 akan terlihat seperti ini:
Jadi, akan ada 272 garis, lebar 959 karakter. Dokumentasi mengatakan seharusnya 1 bukannya f ... di busybox dan raspi f lebih cerah.
Penting bahwa Anda tidak memiliki ruang setelah 0 ... Tugas ini bisa sedikit membosankan ... Anda lebih baik menggunakan editor teks yang membantu Anda. Di vim, Anda dapat menyalin dua baris pertama, pergi ke mode perintah (esc), daripada mengetik karakter berikut:
Tentu saja, saya menggunakan dimensi saya, Anda harus menggunakan dimensi Anda. Cat file ini
/dev/fb0
, akan terlihat seperti:Ok, saya curang ... itu bukan hanya satu baris di sana ... itu sekitar 8 ... tetapi ketika tidak bekerja (kami memiliki dimensi yang salah atau kami memiliki ruang pada akhirnya, memiliki hanya satu baris jauh lebih mudah).
Jika Anda sejauh itu, kita hanya perlu mencetak piksel yang tepat untuk dilihat sebagai karakter. Berkat Marcel Sondaar dan repo-nya di GitHub kita tidak perlu menggambar masing-masing char.
Dengan tweak kecil memperluas program sederhana untuk mencetak
f
bukanX
dan0
bukannya spasi, masukkan spasi di antara masing-masing karakter, tambahkan header dan kami memiliki file .ppm dengan huruf yang sesuai dengan kode kodenya.Satu langkah kecil lebih jauh dan Anda tidak mendapatkan char sebagai input, tetapi sebuah baris. Cat file, pipa ke program Anda dan output ke
/dev/fb0
dan Anda mendapatkan output teks:Saya menguji solusi ini juga pada pi raspberry dan itu berhasil. Sistem memberi tahu saya bahwa saya tidak memiliki reputasi untuk mengirim lebih dari 2 tautan. Sampai saya mendapatkan ini, Anda harus mengandalkan kata saya: D
sumber
Untuk sisi konsol, Anda dapat menggema hal-hal
/dev/console
atau Anda dapat menggunakan syslog, dan tergantung pada berbagai pengaturan lain, itu mungkin muncul di konsol.Untuk gambar, saya baru saja mencoba membuat file bmp ke fb0 dan ternyata berfungsi! (sortof - banyak salinan, ukuran lebih kecil)
Saya menemukan program bmp-to-framebuffer di sini . Itu harus menjadi contoh sempurna dari format yang diharapkan oleh fb0. Ada juga
fbi
, program untuk menulis langsung ke frame buffer.sumber
fbi
memungkinkan saya untuk meletakkan gambar di layar, yang berguna, tetapi membersihkan framebuffer setelah keluar.Ini adalah posting lama tapi saya mengerti biasanya Anda memerlukan framebuffer console (fbcon) untuk menjalankan konsol di framebuffer. Ada dalam konfigurasi. (driver perangkat / grafik / tampilan konsol ..)
sumber