Tidak ada perangkat framebuffer: bagaimana cara mengaktifkannya?

23

Saya mencoba untuk membuat kartu tuner PCMCIA bekerja di server rumah tanpa kepala saya, menjalankan Debian Squeeze. Sekarang, karena saya memiliki masalah yang sangat besar untuk menemukan baris perintah yang benar untuk diambil, transcode dan streaming video ke jaringan menggunakan VLC, saya memutuskan untuk pergi langkah demi langkah, dan bekerja pertama pada output lokal.

Di situlah masalahnya muncul: sepertinya tidak ada perangkat framebuffer (/ dev / fb0) untuk mengakses untuk menampilkan grafik pada layar yang terpasang! Dan memang saya perhatikan saya tidak memiliki gambar penguin Linux saat boot (tidak memperhatikan sebelumnya karena layar terpasang, tapi selalu mati, dan lagi pula komputer selalu menyala).

Karena saya tidak terlalu mengenal grafis Linux, saya ingin memahami:

  • Apakah ini terkait dengan perangkat keras khusus saya (lihat di bawah)? Atau spesifik untuk Debian Squeeze / versi kernel / ...?
  • Apakah ada driver yang perlu saya instal / muat secara manual?

Sekarang beberapa informasi umum:

  • Komputer tidak memiliki kartu grafis khusus, tetapi chipset grafis tertanam (Intel G31 Express), tertanam pada motherboard (Gigabyte G31M-ES2L)
  • Saya tidak ingin menginstal X server berfitur lengkap, hanya memiliki perangkat framebuffer untuk pengujian khusus ini

Ada ide / komentar tentang masalah ini?

Federico
sumber
1
Setelah Anda /dev/fb0bangkit dan berjalan, pastikan untuk menerima jawaban saya. Jarang orang dengan pengalaman aktual pada topik yang kurang umum, menyiasati untuk memberikan jawaban HQ. Mereka memang ada di UNIX-SE, subjek yang relatif tidak umum sehingga kurang ahli.
JM Becker

Jawaban:

36

Saya dapat menjawab pertanyaan Anda, setelah sebelumnya bekerja dengan Linux FB.

Bagaimana Linux Melakukan FB-nya.

  1. Pertama, Anda perlu memiliki dukungan FrameBuffer di kernel Anda, yang sesuai dengan perangkat keras Anda. Sebagian besar distribusi modern memiliki dukungan melalui modul kernel. Tidak masalah jika distro Anda sudah dikonfigurasikan dengan logo boot, saya tidak menggunakannya dan memiliki dukungan FB.

  2. Tidak masalah jika Anda memiliki kartu grafis khusus, terintegrasi akan berfungsi selama Hardware Framebuffer didukung.

  3. Anda tidak perlu X, yang merupakan aspek paling menarik dari memiliki FrameBuffer. Beberapa orang tidak tahu yang lebih baik, jadi mereka menganjurkan beberapa bentuk X untuk mengatasi kesalahpahaman mereka.

  4. Anda tidak perlu bekerja dengan FB secara langsung, yang banyak orang anggap salah. Pustaka yang sangat luar biasa untuk dikembangkan dengan FrameBuffer DirectFBbahkan memiliki dukungan akselerasi dasar. Saya selalu menyarankan setidaknya memeriksanya, jika Anda memulai proyek berbasis FB berfitur lengkap (Web Browser, Game, GUI ...)

Khusus untuk Perangkat Keras Anda

  1. Gunakan Vesa Generic FrameBuffer, modul-modulnya disebut vesafb. Anda dapat memuatnya, jika tersedia, dengan perintah modprobe vesafb. banyak distribusi yang sudah dikonfigurasi sebelumnya dinonaktifkan, Anda dapat check-in /etc/modprobe.d/. blacklist vesafbmungkin perlu dikomentari dengan #, dalam, blacklist-framebuffer.confatau file daftar hitam lainnya.

  2. Opsi Terbaik, adalah driver KMS khusus Perangkat Keras. Yang utama untuk Intel adalah Intel GMA, tidak yakin apa namanya modul. Anda perlu membaca tentang itu dari dokumen distro Anda. Ini adalah opsi FB berkinerja terbaik, saya pribadi akan selalu pergi KMS terlebih dahulu jika memungkinkan.

  3. Gunakan Driver FB khusus Legacy Hardware, Tidak direkomendasikan karena kadang-kadang bermasalah. Saya akan menghindari opsi ini, kecuali diperlukan pilihan terakhir.

Saya yakin ini mencakup semua pertanyaan Anda, dan harus menyediakan informasi untuk membuat /dev/fb0perangkat itu tersedia. Apa pun yang lebih spesifik akan memerlukan perincian distribusi, dan jika Anda agak berpengalaman, RTFM yang Anda butuhkan. (setelah membaca ini).

Saya harap saya telah membantu, Anda yang beruntung bertanya tentang salah satu topik saya! Ini adalah subjek yang diabaikan pada UNIX-SE, karena tidak semua orang (secara sadar) menggunakan Linux FrameBuffer.

CATATAN: UvesaFB Atau VesaFB?

Anda mungkin memiliki orang-orang membaca menggunakan uvesafblebih vesafb, karena memiliki kinerja yang lebih baik. WAS ini umumnya benar, tetapi tidak dalam distro modern dengan Perangkat Keras modern. Jika Perangkat Keras Grafik Anda mendukung mode terlindungi VESA (VESA> = 2.0), dan Anda memiliki kernel yang agak baru vesafbsekarang merupakan pilihan yang lebih baik.

JM Becker
sumber
1
Terima kasih banyak atas jawaban Anda !!! Ini jauh melebihi apa yang saya harapkan dari segi kedalaman dan kualitas !! Saya sangat menghargai ketika saya dapat menemukan posting / jawaban seperti milik Anda karena mereka tidak hanya memberikan solusi pada masalah spesifik, tetapi yang lebih penting mereka memberikan informasi umum tentang pekerjaan dalam yang dapat membantu orang lain untuk situasi yang sama atau terkait !!
Federico
1
Mengenai masalah saya, saya akan memeriksanya berdasarkan masukan Anda dan melaporkan kembali ke sini segera setelah saya mendapatkan hasil yang memuaskan ...
Federico
3
Jadi saya mencoba modprobe vesa(yang saya ingat pernah mencoba sebelum mengajukan pertanyaan di sini) yang gagal karena modul tidak ada di sistem saya ( FATAL: Module vesafb not found.) -> harus memahami apakah ini terkait dengan perangkat keras saya atau distribusi Linux saya (Debian Squeeze ). Kabar baiknya adalah itu modprobe uvesafbberfungsi dan menciptakan /dev/fb0perangkat. Namun, sekarang saya telah membaca jawaban Anda, saya akan mencoba untuk mengatur hal-hal dengan cara yang tepat dan menemukan driver KMS ...
Federico
1
Saya memilih komentar Anda, saya senang bisa membantu !. Untuk menjawab komentar terakhir Anda, Anda salah tentang solusi 2. Anda benar-benar bisa mendapatkan KMS tanpa X, tapi seperti saya katakan jawaban nyata benar-benar tenggelam dalam sampah. Nama modul perangkat keras yang benar, disebut inteldrmfb, saya menemukan melakukan riset cepat. Saya selalu memiliki ATI, jadi dukungan terkait GPU Intel bukan poin terkuat saya. Anda mungkin perlu menginstal paket untuk itu, tetapi saya akan melihat apakah saya bisa mengetahuinya.
JM Becker
1
O tunggu, saya membuat kesalahan ... Saya baru saja memeriksa netbook Intel saya dan modulnya i915, tetapi memuat Framebuffer yang dikenal sebagai inteldrmfb. Anda mungkin perlu menginstal paket libdrm-intel1, atau memeriksa apakah sudah diinstal.
JM Becker
10

Saya akhirnya menemukan solusi untuk masalah saya !!

Pertama-tama, banyak terima kasih kepada semua yang berkontribusi dan khususnya TechZilla dan penjelasan rinci yang dia berikan tanpanya saya pikir saya akan menyerah dulu!

Jadi pada dasarnya semua yang perlu dilakukan adalah mengaktifkan mode pengaturan ( modeset=1) ketika i915modul kernel dimuat. Ini bisa dilakukan dengan cara biasa:

  • melalui parameter kernel GRUB,
  • melalui file config di /etc/modprobe.d
  • atau di baris perintah:

    # rmmod i915
    # modprobe i915 modeset=1
    

Bahkan, Anda tidak perlu melakukan apa pun jika Anda menginstal paket xserver-xorg-video-intel, yang menciptakan /etc/modprobe.d/i915-kms.confmengandung options i915 modeset=1. Namun, jika seseorang tidak ingin menginstal X (seperti dalam kasus saya), maka KMS tidak secara otomatis diaktifkan, yang menjelaskan mengapa perangkat FrameBuffer tidak dibuat ...

Federico
sumber
2
Anda tetap harus menerima jawaban saya, karena "bagaimana cara mengaktifkan KMS dengan menekan" bukan pertanyaan awal Anda. Saya yakin saya memang menjawab yang pertama, dan mengarahkan Anda ke jalur yang Anda maksudkan. Alasan lainnya, Anda hanya mendapatkan poin karena memberikan jawaban 'orang lain'. Meskipun itu baik untuk penghargaan diri jika tidak ada yang mendekati, dalam hal ini tidak masuk akal. Anda baik-baik saja menjaga jawaban Anda diposting, atau mengintegrasikan info yang dipertanyakan. Bagaimanapun juga tidak masalah. benar-benar senang saya membantu! Saya sangat senang Anda mendapatkan solusi KMS bekerja, karena seharusnya lebih cepat daripada VESA biasa.
JM Becker
1
Saya baru saja mengubah kembali jawaban yang diterima untuk Anda! Menjadi orang baru di sini, saya tidak tahu persis apa yang harus dilakukan: letakkan solusinya dalam pertanyaan itu sendiri, dalam komentar atas jawaban yang Anda terima, atau poskan sebagai jawaban baru. Saya memperkirakan bahwa dengan membuat jawaban yang diterima baru, orang akan membaca dulu pertanyaannya, kemudian jawaban Anda yang berada di atas karena memiliki lebih banyak suara positif dan kemudian jawaban saya ...
Federico
Sementara jawaban lainnya menyeluruh, ini harus menjadi jawaban yang diterima. Terlepas dari seberapa fasih penulis memohon.
Moog
-2

Anda dapat mencoba framebuffer virtual seperti Xvfb (X virtual framebuffer).

Deskripsi paket xvfb dalam pemerasan

artifex
sumber
1. ini adalah FrameBuffer 'virtual', bukan Hardware FrameBuffer langsung yang sebenarnya. 2. Merupakan server X, dan khususnya pertanyaan yang diminta no X.
JM Becker
-2

Selama ini adalah instalasi debian standar tanpa kemewahan dan kernel standar, Anda harus bisa mendapatkan konsol VGA rekrut yang menggunakan perangkat framebuffer dengan parameter kernel seperti "vga = 792" (24 bit 1024 × 768 ). Tentu kernel melaporkannya sudah usang, tetapi berhasil.

Lihat http://www.kernel.org/doc/Documentation/kernel-parameters.txt untuk parameter kernel. Menariknya di sana paremeter "vga =" tidak ditampilkan sebagai usang.

Pastikan untuk menjalankan kembali pembaruan-grub (2) dan sejenisnya setelah perubahan.

Juga lihat di http://packages.debian.org/squeeze/svgalib-bin itu tidak sempurna tetapi memungkinkan Anda untuk melakukan beberapa hal grafis yang bagus di konsol.

aseq
sumber
3
Tidak itu tidak berfungsi lagi, dalam keadaan BANYAK. Inilah jawaban yang selalu saya bicarakan. Jika Anda menggunakan GRUB2 ini hanya berfungsi saat boot dengan 16deselerasi lawas . Ini juga sudah usang, yang setidaknya Anda akui, secara pragmatis itu artinya JANGAN MELAKUKAN SETUPS BARU DENGAN TI. vga=Sampah lama akan gagal mem-boot, jika modul perangkat keras Anda dinonaktifkan /etc/modprobe.d/dan banyak distro yang sudah dikonfigurasikan sebelumnya.
JM Becker
Jadi masalah selanjutnya, svgalib-bin adalah perpustakaan bukan perangkat '/ dev / fb0'. Apa pun yang ingin svgalib, perlu dikembangkan dengan svgalib. Itu dapat digunakan untuk mengganti FB, tetapi tidak 'secara harfiah' menggantikan FB. Saya benar-benar membuat kesalahan komentar terakhir, ketika saya berkata "gagal untuk boot ', saya maksudkan" gagal memuat FB, kemungkinan akan mundur ke vga standar "
JM Becker
3
Ini bahkan bukan kesalahan Anda, komunitas kami meninggalkan dokumentasi yang sangat ketinggalan zaman. Semua orang kera jawaban lama di internet, membuat pemahaman modern sulit di binatang. Banyak orang bahkan menyerah begitu saja, karena jawaban yang sebenarnya adalah baru dan terkubur di bawah bertahun-tahun dengan solusi yang sudah usang.
JM Becker
1
Parameter "vga =" berfungsi saat menggunakan pemerasan. Saya hanya menyarankan itu karena ini adalah perbaikan cepat yang mudah, daripada meneliti apa yang diganti. kernel.org/doc/Documentation/kernel-parameters.txt tidak menunjukkan "vga =" sudah usang. Satu-satunya alasan yang saya tahu adalah karena pesan boot yang hampir tidak dapat dibaca oleh kernel ... kebingungan terjadi ... jadi menurut teks di kernel.org "vga =" TIDAK usang. Apa yang harus kita percayai?
aseq
1
Omong-omong saran saya untuk menggunakan svgalib adalah karena pengguna tidak ingin menggunakan X. Saya mengerti penyebab svgalib, tetapi ada beberapa opsi lain.
aseq