Nessun dispositivo framebuffer: come abilitarlo?


23

Sto cercando di far funzionare una scheda di sintonizzazione PCMCIA sul mio server principale senza testa, con Debian Squeeze. Ora, poiché ho grossi problemi nel trovare la riga di comando corretta da catturare, transcodificare il flusso finale del video sulla rete usando VLC, ho deciso di procedere passo dopo passo e lavorare prima sull'output locale.

È qui che si presenta il problema: sembra che non ci sia alcun dispositivo framebuffer (/ dev / fb0) a cui accedere per visualizzare la grafica sullo schermo allegato! E infatti ho notato che non ho l'immagine del pinguino di Linux all'avvio (non ho prestato attenzione prima che lo schermo sia collegato, ma sempre spento e comunque il computer è sempre acceso).

Dato che non ho molta familiarità con la grafica di Linux, vorrei capire:

  • È correlato al mio hardware particolare (vedi sotto)? O è specifico di Debian Squeeze / una versione del kernel / ...?
  • C'è qualche driver che devo installare / caricare manualmente?

Ora alcune informazioni generali:

  • Il computer non ha una scheda grafica dedicata, ma un chipset grafico incorporato (Intel G31 Express), integrato sulla scheda madre (Gigabyte G31M-ES2L)
  • Non voglio installare un server X completo, ho solo un dispositivo framebuffer per questo particolare test

Qualche idea / commento sulla questione?


1
Una volta che sei /dev/fb0pronto e funzionante, assicurati di accettare la mia risposta. Raramente le persone con esperienza effettiva su un argomento meno comune, andare in giro per dare una risposta HQ. Esistono su UNIX-SE, è un argomento relativamente raro quindi esistono meno esperti.
JM Becker,

Risposte:


36

Posso rispondere alla tua domanda, avendo precedentemente lavorato con l'FB Linux.

Come Linux fa il suo FB.

  1. Per prima cosa devi avere il supporto di FrameBuffer nel tuo kernel, corrispondente al tuo hardware. Le distribuzioni più moderne hanno il supporto tramite moduli del kernel. Non importa se la tua distribuzione è preconfigurata con un logo di avvio, non ne uso uno e ho il supporto FB.

  2. Non importa se si dispone di una scheda grafica dedicata, integrata funzionerà fintanto che Hardware Framebuffer è supportato.

  3. Non hai bisogno di X, che è l'aspetto più allettante di avere FrameBuffer. Alcune persone non lo sanno meglio, quindi hanno sostenuto una qualche forma di X per risolvere i loro malintesi.

  4. Non è necessario lavorare direttamente con l'FB, che molte persone assumono erroneamente. Una libreria davvero fantastica per lo sviluppo con FrameBuffer è DirectFBanche dotata di un supporto di accelerazione di base. Suggerisco sempre almeno di verificarlo, se stai avviando un progetto basato su FB completo (browser Web, gioco, GUI ...)

Specifico per il tuo hardware

  1. Utilizzare il FrameBuffer generico Vesa, i suoi moduli vengono chiamati vesafb. È possibile caricarlo, se disponibile, con i comandi modprobe vesafb. molte distribuzioni lo preconfigurano disabilitato, è possibile effettuare il check-in /etc/modprobe.d/. blacklist vesafbpotrebbe essere necessario commentare con un #, in un blacklist-framebuffer.confo un altro file della lista nera.

  2. L'opzione migliore è un driver KMS specifico per l'hardware. Il principale per Intel è Intel GMA, non sono sicuro di come i suoi moduli siano chiamati. Dovrai leggere a riguardo dai tuoi documenti di distribuzione. Questa è l'opzione FB con le migliori prestazioni, personalmente andrei sempre al primo posto se possibile.

  3. Utilizzare i driver FB specifici dell'hardware legacy, sconsigliati perché a volte sono difettosi. Eviterei questa opzione, a meno che non sia necessario l'ultimo ricorso.

Credo che questo copra tutte le tue domande e dovrebbe fornire le informazioni per rendere /dev/fb0disponibile quel dispositivo. Qualunque cosa più specifica avrebbe bisogno di dettagli di distribuzione e, se si ha una certa esperienza, RTFM dovrebbe essere tutto ciò che serve. (dopo aver letto questo).

Spero di aver aiutato, la tua fortuna mi stai chiedendo di uno dei miei argomenti! Questo è un argomento trascurato su UNIX-SE, poiché non tutti (consapevolmente) usano il FrameBuffer di Linux.

NOTA: UvesaFB o VesaFB?

Si può avere la gente legge usano uvesafbsopra vesafb, come aveva prestazioni migliori. Questo era generalmente vero, ma non in una distribuzione moderna con hardware moderno. Se il tuo hardware grafico supporta la modalità protetta VESA (VESA> = 2.0) e hai un kernel un po 'recente, vesafbora è una scelta migliore.


1
Mille grazie per la tua risposta !!! È molto al di là di quello che mi aspettavo in termini di profondità e qualità !! Apprezzo molto quando riesco a trovare post / risposte come le tue perché non solo forniscono soluzioni sul problema specifico, ma soprattutto forniscono informazioni generali sul lavoro interiore che possono essere utili agli altri per le stesse situazioni o situazioni correlate !!
Federico

1
Per quanto riguarda il mio problema, lo esaminerò in base al tuo contributo e riferirò qui non appena avrò ottenuto risultati soddisfacenti ...
Federico

3
Quindi ho provato modprobe vesa(che ricordo di aver provato prima di porre la domanda qui) che non riesce perché il modulo non esiste sul mio sistema ( FATAL: Module vesafb not found.) -> dovrà capire se questo è correlato al mio hardware o alla mia distribuzione Linux (Debian Squeeze ). La buona notizia è che modprobe uvesafbfunziona e crea il /dev/fb0dispositivo. Tuttavia, ora che ho letto la tua risposta, cercherò di impostare le cose nel modo giusto e troverò il driver KMS ...
Federico

1
Ho votato i tuoi commenti, sono entusiasta di poter essere d'aiuto !. Per rispondere al tuo ultimo commento, non sei corretto sulla soluzione 2. Puoi ASSOLUTAMENTE ottenere un KMS senza X, ma come ho detto, le vere risposte stanno letteralmente annegando nella spazzatura. Il nome del modulo hardware corretto, si chiama inteldrmfb, l'ho scoperto facendo alcune ricerche rapide. Ho sempre ATI, quindi il supporto relativo alla GPU Intel non è il mio punto di forza. Si potrebbe essere necessario installare un pacchetto per questo, ma vedrò se riesco a scoprire.
JM Becker

1
O aspetta, ho fatto un errore ... Ho appena controllato il mio netbook Intel e il modulo è i915, ma carica il Framebuffer noto come inteldrmfb. Potrebbe essere necessario installare il pacchetto libdrm-intel1o verificare se è installato.
JM Becker

10

Ho finalmente trovato la soluzione al mio problema !!

Innanzitutto, molte grazie a tutti coloro che hanno contribuito e in particolare TechZilla e la spiegazione dettagliata da lui fornita senza la quale credo che avrei rinunciato molto tempo fa!

Quindi praticamente tutto ciò che deve essere fatto è abilitare modesetting ( modeset=1) quando il i915modulo del kernel viene caricato. Questo può essere fatto nei soliti modi:

  • tramite il parametro kernel di GRUB,
  • tramite un file di configurazione in /etc/modprobe.d
  • o dalla riga di comando:

    # rmmod i915
    # modprobe i915 modeset=1
    

In effetti, non è necessario fare nulla se si installa il pacchetto xserver-xorg-video-intel, che crea il /etc/modprobe.d/i915-kms.confcontenimento options i915 modeset=1. Tuttavia, se qualcuno non vuole installare X (come nel mio caso), allora KMS non viene abilitato automaticamente, il che spiega perché il dispositivo FrameBuffer non è stato creato ...


2
Dovresti comunque accettare la mia risposta, perché "come accendo KMS con squeeze" non era la tua domanda iniziale. Credo di aver risposto alla tua iniziale e di indicarti il ​​tuo percorso previsto. L'altro motivo, ottieni punti solo per assegnare risposte a "altre" persone. Anche se è positivo auto-aggiudicarsi se nessuno si avvicina, in questo caso non ha senso. Va bene comunque mantenere la risposta pubblicata o integrare le informazioni in questione. Ad ogni modo andrebbe bene. sono davvero felice di averti aiutato! Sono davvero felice che tu abbia fatto funzionare la soluzione KMS, poiché dovrebbe essere più veloce del semplice VESA.
JM Becker

1
Ho appena cambiato la risposta accettata alla tua! Essendo un po 'nuovo qui, non sapevo esattamente cosa fare: inserisci la soluzione nella domanda stessa, in un commento alla tua risposta accettata, o pubblica come nuova risposta. Ho pensato che, creando una nuova risposta accettata, la gente leggesse prima la domanda, poi la tua risposta che arriva in cima poiché ha più voti e poi la mia risposta ...
Federico

Mentre l'altra risposta è completa, questa dovrebbe essere la risposta accettata. Indipendentemente da quanto eloquentemente implori l'autore.
Moog,


-2

Finché si tratta di un'installazione debian standard con niente di speciale e un kernel standard dovresti essere in grado di ottenere una console VGA di assunzioni che utilizza il dispositivo framebuffer con un parametro del kernel come "vga = 792" (che è 24 bit 1024 × 768 ). Sicuramente il kernel lo segnala deprecato, ma funziona.

Vedere http://www.kernel.org/doc/Documentation/kernel-parameters.txt per i parametri del kernel. È interessante notare che il paremetro "vga =" non viene visualizzato come obsoleto.

Assicurati di rieseguire update-grub (2) e simili dopo la modifica.

Dai anche un'occhiata a http://packages.debian.org/squeeze/svgalib-bin non è perfetto, ma ti permette di fare cose grafiche fantasiose su una console.


3
No, non funziona più, in MOLTE circostanze. Questa è la risposta di cui parlo sempre. Se usi GRUB2 funziona solo quando fai il boot con le 16decelerazioni legacy . È anche deprecato, cosa che almeno riconosci, pragmaticamente significa che NON FARE NUOVE IMPOSTAZIONI CON esso. La vecchia vga=spazzatura non si avvia, se i moduli hardware sono disabilitati /etc/modprobe.d/e molte distro vengono preconfigurate come tali.
JM Becker,

Quindi il prossimo problema, svgalib-bin è una libreria non un dispositivo '/ dev / fb0'. Tutto ciò che vuole svgalib, deve essere sviluppato con svgalib. Può essere utilizzato per sostituire un FB, ma non sostituisce "letteralmente" l'FB. In realtà ho fatto un errore all'ultimo commento, quando ho detto "non riesco ad avviare", intendevo "non riesco a caricare FB, probabilmente fallback in vga standard"
JM Becker

3
Non è nemmeno colpa tua, la nostra comunità lascia una documentazione orribilmente obsoleta. Tutti scappano le risposte vecchie su Internet, rendendo difficile la comprensione moderna della bestia. Molte persone rinunciano semplicemente, perché la vera risposta è nuova e sepolta sotto anni di soluzioni deprecate.
JM Becker,

1
Il parametro "vga =" funziona quando si utilizza squeeze. L'ho semplicemente suggerito poiché è una soluzione rapida e semplice, invece di ricercare ciò con cui viene sostituito. kernel.org/doc/Documentation/kernel-parameters.txt non mostra "vga =" come obsoleto. L'unico motivo che conosco è dovuto a un messaggio di avvio rapido a malapena leggibile da parte del kernel ... ne deriva la confusione ... quindi secondo il testo su kernel.org "vga =" NON è deprecato. Cosa dobbiamo credere?
aseq

1
A proposito, il mio suggerimento di usare svgalib è perché l'utente non vuole usare X. Comprendo i colpevoli di svgalib, ma ci sono poche altre opzioni.
aseq
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.