# una domanda "nuova": il framebuffer (e derivati)

## ckx3009

premetto che mi dispiace chiedere ancora una volta di questo argomento, dato che ho visto numerosi post in proposito, ma anche leggendo quelli non sono riuscito a risolvere.

sono 2 mesi che provo, seguendo varie guide, ad attivare sto maledetto framebuffer sulle mie console, senza alcun risultato (a parte un kernel panic per un errore di sintassi in grub.conf).

ho seguito questa guida come prima cosa, poi ho letto in quella guida che c'era un accorgimento esterno da seguire dato che quella guida e' un po' datata (come dice l'autore).

l'accorgimento e' questo.

ho provato a usare i drivers: radeonfb, uvesafb, vesafb. tutti senza successo: ora non so dove sbattere la testa dato che ho provato in tutti i modi.

dunque: uso il kernel 2.6.24-gentoo-r8, compilato a mano (make menuconfig, senza genkernel)

la risoluzione massima del mio schermo e' 1280*800 (e' un portatile)

all'inizio pensavo potesse dipendere da questo il fatto che non mi caricasse nessuna immagine ma in seguito ne ho trovate con la mia risoluzione, le ho provate e non si e' visto nessun cambiamento.

questa e' la mia /boot (non in automount)

```
# ls -l /boot/

totale 8927

lrwxrwxrwx 1 root root       1 23 giu 02:04 boot -> .

lrwxrwxrwx 1 root root      23 26 giu 22:28 config -> config-2.6.24-gentoo-r8

-rw-r--r-- 1 root root   52277 26 giu 22:28 config-2.6.24-gentoo-r8

-rw-r--r-- 1 root root   52288 26 giu 18:26 config-2.6.24-gentoo-r8.old

lrwxrwxrwx 1 root root      27 26 giu 22:28 config.old -> config-2.6.24-gentoo-r8.old

-rw-r--r-- 1 root root  550939 26 giu 20:14 fbsplash-gentoo-noia-1280x800

drwxr-xr-x 2 root root    1024 24 giu 04:32 grub

drwx------ 2 root root   12288 23 giu 00:38 lost+found

lrwxrwxrwx 1 root root      27 26 giu 22:28 System.map -> System.map-2.6.24-gentoo-r8

-rw-r--r-- 1 root root 1179674 26 giu 22:28 System.map-2.6.24-gentoo-r8

-rw-r--r-- 1 root root 1179218 26 giu 18:26 System.map-2.6.24-gentoo-r8.old

lrwxrwxrwx 1 root root      31 26 giu 22:28 System.map.old -> System.map-2.6.24-gentoo-r8.old

lrwxrwxrwx 1 root root      24 26 giu 22:28 vmlinuz -> vmlinuz-2.6.24-gentoo-r8

-rw-r--r-- 1 root root 3032568 26 giu 22:28 vmlinuz-2.6.24-gentoo-r8

-rw-r--r-- 1 root root 3030552 26 giu 18:26 vmlinuz-2.6.24-gentoo-r8.old

lrwxrwxrwx 1 root root      28 26 giu 22:28 vmlinuz.old -> vmlinuz-2.6.24-gentoo-r8.old

```

questo e' il mio grub.conf

```
timeout 10

default0

title=Gentoo Linux

root (hd0,0)

kernel /boot/vmlinuz root=/dev/sda3

video=vesafb:1280x800-32,mtrr:3,ywrap

splash=verbose,fadein,theme:gentoo-noia

fbcon=scrollback:128K

CONSOLE=/dev/tty1

initrd (hd0,0)/boot/fbsplash-gentoo-noia-1280x800

```

il "gentoo noia" e' un tema per gensplash 1280*800, dal sito kde-look.org.

tra l'altro, seguendo la guida, dice che si possono vedere i temi senza dover bootare com splash_manager.

se uso il comando della guida

```
# splash_manager --theme=tema_da_scegliere --cmd=set --tty=1
```

l'output che ottengo e' questo:

```
splash_manager --theme=gentoo-noia --cmd=set --tty=1

Can't open /dev/fb0 or /dev/fb/0

Error: Theme 'gentoo-noia' doesn't seem to provide a config file for the current resolution ().
```

e in effetti (non so quanto servano) /dev/fb0 o /dev/fb/0 non ci sono proprio.

suggerimenti?

----------

## cloc3

 *ckx3009 wrote:*   

> 
> 
> e in effetti (non so quanto servano) /dev/fb0 o /dev/fb/0 non ci sono proprio.
> 
> 

 

hai impostato il supporto al framebuffere nel kernel?

```

CONFIG_FB=y

```

da menuconfig:

```

 Location:

  │     -> Device Drivers

  │       -> Graphics support 

```

----------

## ckx3009

si, ho seguito la guida che ho linkato che diceva di attivare alcune voci. oltretutto ho provato con i 3 diversi drivers: ati, vesa, userspace vesa

----------

## cloc3

hai messaggi utili in dmesg o nei log di sistema?

succede qualcosa provando a crearli a mano con mknod?

```

# mknod  /dev/fb0 b 29 0

# chown root:video /dev/fb0

# chmod 660 /dev/fb0

```

prova anche a usare genkernel, e se è più bravo di te, gli rubi il trucco.

----------

## ckx3009

dunque: ho provato a creare il nodo come mi hai detto tu ed effettivamente non mi dice piu' che non esiste ma non riesce a usare alcun tema perche' la risoluzione della tty non corrisponde a nessuna risoluzione dei temi che ho attualmente. 

quindi prima dovrei riuscire a dare una risoluzione alla console, poi penso a sfondi e compagnia.

per quello che riguarda i log di sistema non saprei cosa andare a cercare e dove farlo (anche se immagino /var/log).

per genkernel, ho paura di fare parecchio casino..preferirei evitare se fosse possibile.  :Razz: 

un problema e' che ci sono molti wiki a proposito di framebuffer, gensplash eccetera...solo che dicono cose diverse e uno non capisce piu' cosa seguire e come scrivere i file di config

----------

## cloc3

 *ckx3009 wrote:*   

> 
> 
> per genkernel, ho paura di fare parecchio casino..preferirei evitare se fosse possibile. 
> 
> 

 

non devi avere paura. genkernel non è particolarmente difficile.

è solo un po' più comodo e un po' meno istruttivo della strada che stai seguendo.

il fatto è che non mi sembra possibile, al momento, escludere che il problema risieda in una configurazione errata del kernel.

il dispositivo /dev/fb0 dovrebbe generarsi da sè e non è detto che crearlo a mano sia veramente efficace per il tuo problema.

tra l'altro, in genere i kernel impostano il framebuffer in questo modo:

```

cloc3@wlan0 ~ $ ls -l /dev/fb*

lrwxrwxrwx 1 root root  4 30 giu 17:24 /dev/fb0 -> fb/0

/dev/fb:

totale 0

crw-rw---- 1 root video 29, 0 30 giu 17:24 0

```

io ti ho fatto provare una scorciatoia per semplicità.

una cosa che puoi fare è testare un kernel pronto, per esempio una knoppix, verificare se /dev/fb0 si genera automaticamente e copiare quel config come punto di partenza.

usa `zcat /proc/config` oppure il config dentro la cartella di boot (da qualche parte, knoppix lo salva).

----------

## ckx3009

potrei cercare di ravanare in sabayon che e' gentoo-based e scovare tutte le config che usa, dal kernel a grub.conf.

se non va nemmeno cosi', allora provo genkernel. faccio in modo di usare sempre cmq il mio kernel che e' configurato con le cose che servono a me.

penso anche io che sia qualcosa di sbagliato nella config del kernel, pero' ho seguito scrupolosamente le guide per piu' di una volta...

cmq faccio quelle prove e poi ti faccio sapere

volendo qui c'e' il mio .config, magari, se ti va di dare un'occhiata, trovi qualcosa che non ho impostato correttamente  :Razz: 

----------

## cloc3

 *ckx3009 wrote:*   

> 
> 
> volendo qui c'e' il mio .config

 

naturalmente potrebbe essere un buco nell'acqua, però:

```

CONFIG_FB_UVESA=y

CONFIG_FB_VESA=y

```

 *Quote:*   

> 
> 
>  CONFIG_FB_UVESA:
> 
>   │ This is the frame buffer driver for generic VBE 2.0 compliant  
> ...

 

----------

## ckx3009

avevo provato inizialmente a usarli uno alla volta, ma non cambiava nulla. poi ho provato a usarli insieme per poter "switchare" da uno all'altro per delle prove. la prima guida cmq dice che vesafb e' un po' datato e dice di provare uvesafb..e' per quello che ho tentato quella strada

----------

## djinnZ

 *ckx3009 wrote:*   

> per genkernel, ho paura di fare parecchio casino..preferirei evitare se fosse possibile.

 genkernel non fa altro che lanciare in sequenza (nella configurazione di default) make mrproper, copiare un configurazione base che dovrebbe andar bene per quasi tutto l'hardware di uso comune, compilare ed installare kernel e moduli, ricompilare  busybox lvm e compagnia, se necessario, e creare l'initrd. Tutte operazioni che potresti anche inserire in un tuo script bash, sono sempre e soltanto quelle.

Chiaramente se inizi ad usare le opportune opzioni come --menuconfig --splash* etc. (od in corrispondenti in genkernel.conf) il risultato è lo stesso del kernel "a manina" solo che fai meno fatica ed usi un solo comando.

 *ckx3009 wrote:*   

> un problema e' che ci sono molti wiki a proposito di framebuffer, gensplash eccetera...solo che dicono cose diverse e uno non capisce piu' cosa seguire e come scrivere i file di config

 e molti non sono per niente aggiornati, riferisciti alla documentazione ufficiale.

----------

## TwoMinds

 *Quote:*   

> 
> 
> questo e' il mio grub.conf
> 
> ```
> ...

 

...ciao... parto dal presupposto che abbia fatto tutti i passi necessari per installare uvesafb,  v86d, le giuste opzioni nel kernel... che tu sia anche con ~x86... hai provato a mettere video=uvesafb?... provato con risoluzioni piu' standard tipo 1024x768?... tolto qualche opzione tipo fbcon?... ma la riga di opzioni di grub e' su una sola riga?...

----------

## ckx3009

 *djinnZ wrote:*   

> genkernel non fa altro che [...] 

 

d'accordo posso fare una prova anche in quel modo allora

 *djinnZ wrote:*   

> e molti non sono per niente aggiornati, riferisciti alla documentazione ufficiale.

 

sulla documentazione ufficiale c'e' solo un brevissimo accenno durante la configurazione del bootloader, ho provato anche quella ma nulla da fare.

 *TwoMinds wrote:*   

> ...ciao... parto dal presupposto che abbia fatto tutti i passi necessari per installare uvesafb, v86d, le giuste opzioni nel kernel... che tu sia anche con ~x86... hai provato a mettere video=uvesafb?... provato con risoluzioni piu' standard tipo 1024x768?... tolto qualche opzione tipo fbcon?... ma la riga di opzioni di grub e' su una sola riga?...

 

sono con ~x86 su una settantina di pacchetti (package.keywords), non tutto il sistema.

ho provato con video=uvesafb come diceva una delle varie guide e ho anche provato con risoluzioni standard.

le opzioni di grub dovrebbero essere indifferentemente su una riga come su tante...

cmq ora, seguendo la guida alla stage1 di conrad (qui) ho settato il grubsplash e forse riesco anche a settare il resto.

vi faccio sapere

----------

## andreaG

Ho avuto più o meno lo stesso problema e cercando ho trovato che v86d va in errore se non compilato con USE="x86emu" e -O0 nelle CFLAGS (vedi bug #226107).

Ricompilando v86d come sopra ed il kernel con 

```
genkernel --menuconfig --splash=livecd-2007.0 all
```

 tutto ok.

Come opzioni di grub 

```
... quiet splash=silent,kdgraphics,theme=livecd-2007.0 video=uvesafb:ywrap,mtrr:3,1280x1024-32@75 console=tty1
```

Ciao

AG

----------

## ckx3009

forse sto raggiungendo qualche risultato: durante il boot intravedo un messaggio "uvesafb fail...." ma va troppo veloce e non riesco a leggere nulla.

c'e' per caso un log che registra tutto il boot, in modo da vedere gli eventuali errori?

----------

## djinnZ

shift+PgUp

dmesg

emerge showconsole ; echo "RC_BOOTLOG=\"yes\"" >> /etc/conf.d/rc

----------

## ckx3009

grazie mille, djinnZ.

questo e' il risultato dal log del boot

```
uvesafb: (C) 1988-2005, ATI Technologies Inc. M56P01.00, M56P01.00, 01.00, OEM: ATI ATOMBIOS(C) 1988-2005, ATI Technologies Inc. M56P01.00, VBE v3.0

uvesafb: protected mode interface info at c000:aafe

uvesafb: pmi: set display start = c00cab8c, set palette = c00cac4e

uvesafb: VBIOS/hardware supports DDC2 transfers

uvesafb: monitor limits: vf = 60 Hz, hf = 49 kHz, clk = 71 MHz

uvesafb: scrolling: ypan using protected mode interface, yres_virtual=4915

uvesafb: mode switch failed (eax=0x34f, err=0). Trying again with default timings.

uvesafb: mode switch failed (eax=0x34f, err=0). Trying again with default timings.

Console: switching to colour frame buffer device 80x30

uvesafb: mode switch failed (eax=0x34f, err=0). Trying again with default timings.

uvesafb: framebuffer at 0xd0000000, mapped to 0xf8880000, using 6144k, total 16384k

fb0: VESA VGA frame buffer device

```

con questo grub.conf

```
title=Gentoo Linux

root (hd0,0)

kernel /boot/vmlinuz root=/dev/sda3

video=uvesafb:1024x768-32@60,ywrap,mtrr splash=verbose,kdgraphics,theme:livecd-2007.0 quiet CONSOLE=/dev/tty1

initrd /boot/fbsplash-livecd-2007.0
```

edit ho anche provato con uvesafb compilato come modulo ma non cambia nulla..sempre quegli errori.

ho provato pure la configurazione suggeritami da andreaG a parte il fatto ricompilare v86d (a quanto ho capito il bug e' riferito alla compilazione del pacchetto, non del funzionamento. la useflag e' gia' corretta, la Cflag invece non cel'ho e preferirei non metterla se non e' strettamente necessario.

----------

## andreaG

Visto che a me funziona, prova a controllare queste differenze: 

```
mtrr:3
```

 invece di 

```
mtrr
```

 e 

```
console=tty1
```

 invice di 

```
CONSOLE=tty1
```

Controlla se v86d è attivo

```
ps fax | grep v86d
```

Se si, non hai i problemi di cui al bug segnalato.

Dal tuo dmesg sembra che uvesafb non vada d'accordo con la risoluzione/frequenza che hai impostato (1024x768-32@60); se v86d è compilato con USE="debug" il comando

```
testvbe
```

dovrebbe testare e farti vedere le risoluzioni possibili (per quel poco che ho capito finora).

Io ho come risoluzione 1280x1024-32@75, ma la mia scheda grafica è Nvidia e non Ati.

Non so se impostare risoluzioni non supportate potrebbe essere dannoso per la scheda grafica (qualcuno più esperto può suggerire qualcosa?).

Ciao

AG

----------

## ckx3009

ho provato con le differenza (infatti nel post su ti ho scritto che ho usato la tua stessa configurazione, a parte la risoluzione).

ho provato anche a non dare la frequenza @60

il mio problema e' che ho un dannato widescreen 1280*800. la mia scheda video supporta fino al solito 1280*1024.

devo provare con altre risoluzioni...

cmq: # ps fax | grep v86d

```
910 ?        Ss     0:00 /sbin/v86d

 3509 pts/0    S+     0:00  |   |           \_ grep --colour=auto v86d
```

deduco che sembra che esista  :Razz: 

cmq ora provo con diverse risoluzioni e provo a non dare nemmeno la profondita' di colore

----------

## ckx3009

ho provato diverse configurazioni video, tipo specificando o meno colori e refresh ma nulla da fare...non vuol saperne, da sempre quell'errore.

----------

## ckx3009

dunque...seguendo una apparentemente nuova guida

sono riuscito ad ottenere quanto segue

```

uvesafb: (C) 1988-2005, ATI Technologies Inc. M56P01.00, M56P01.00, 01.00, OEM: ATI ATOMBIOS(C) 1988-2005, ATI Technologies Inc. M56P01.00, VBE v3.0

uvesafb: protected mode interface info at c000:aafe

uvesafb: pmi: set display start = c00cab8c, set palette = c00cac4e

uvesafb: VBIOS/hardware supports DDC2 transfers

uvesafb: monitor limits: vf = 60 Hz, hf = 49 kHz, clk = 71 MHz

uvesafb: scrolling: ypan using protected mode interface, yres_virtual=4915

uvesafb: framebuffer at 0xd0000000, mapped to 0xf8880000, using 6144k, total 16384k

fb0: VESA VGA frame buffer device
```

con questo grub.conf

```
title=Gentoo Linux

root (hd0,0)

kernel /boot/vmlinuz root=/dev/sda3

video=uvesafb:ywrap,mtrr:3,1280x800-32@60 splash=verbose,theme:livecd-2007.0 quiet CONSOLE=/dev/tty1
```

quindi deduco che ora funzioni...

il problema e' che non cambia assolutamentenulla. non si vede il cambio di risoluzione, non si vede nemmeno il tema...

edit:

riusando il comando 

```
splash_manager --theme=gentoo-noia --cmd=set --tty=1
```

direttamente in tty, ora ottengo:

```
Error: Theme 'gentoo-noia' doesn't seem to provide a config file for the current resolution (640x480)
```

.

se invece uso un tema che ha anche quella risoluzione (640x480), la tty mi dice:

```
failed to open the fbcon_decor control device
```

qualche suggerimento anche su come cambiare eventualmente la risoluzione?Last edited by ckx3009 on Fri Jul 11, 2008 12:53 pm; edited 1 time in total

----------

## cloc3

 *ckx3009 wrote:*   

> 
> 
> il mio problema e' che ho un dannato widescreen 1280*800.

 

seri sicuro che il driver lo supporti?

la guida che hai seguito non prevede quella dimensione.

prova a cercare qui se trovi qualcosa che fa al caso tuo. altrimenti, accontentati di qualcosa di meno, tipo un 1024x768.

----------

## ckx3009

il dirver dovrebbe supportarlo dato che ho visto molti temi widescreen e che c'e' gente che e' riuscita a farlo andare. cmq ora riprovo subito con 1024*768, sarebbe gia' un risultato.

edit: non cambia nulla nemmeno con quella risoluzione. resta sempre 640x480... non so che pesci prendere

----------

## cloc3

 *ckx3009 wrote:*   

> non so che pesci prendere

 

nemmeno io.

ma sono reduce fresco da una esperienza scioccante con il framebuffer.

mi ha subito ricordato questo post, e allora provo a raccontare.

oggi, dopo un riavvio, il frambuffer non riparte. dice che carica gli EDD dal firmware e che il 31B non è disponibile. poi avvia a letteroni illeggibili, in stile anni 70. /dev/fb0 sparita. terrore, faccio di tutto a livello software, scompongo tutto e riporto alla situazione iniziale, provo vecchi kernel ... ciccia.

sono sfinito, quando, ad un tratto, l'illuminazione:

prima di riavviare, stacco il disco esterno usb sul quale ho lavorato nel pomeriggio e....

(rullo di tamburi)

il frambuffer si riaccende!

 :Shocked: 

----------

