# [RISOLTO] uvesafb e problemi con l'fbsplash all'avvio

## fbcyborg

Salve a tutti, 

ho provato il nuovo kernel 2.6.23-r3 sul mio portatile e a parte per il problema che sto per descrivere va tutto abbastanza bene.

Ho compilato il modulo uvesafb come statico e ho creato di nuovo il mio file initrd per l'fbplash.

Ora però all'avvio mi trovo con dei caratteri cubitali e niente fbsplash.

Questi sono i messaggi che ricevo:

```
Uncompressing Linux... Ok, booting the kernel.

PCI: Failed to allocate mem resource #6:20000@d0000000 for 000:01:00.0

Can't open cfg file /etc/splash/livecd-2007.0/640x480.cfg.

No 8bpp verbose picture specified in the theme.

No 8bpp silent picture specified in the theme.

No 8bpp verbose picture specified in the theme.

iTCO_wdt: faile d to reset NO_REBOOT flag, reboot disabled by hardware

INIT: version 2.86 booting

[...]

```

Il boot continua prima con le scritte normali, poi con schermo nero, poi di nuovo con le scritte e vorrei riportare i messaggi di errore che seguono:

```
 * Setting framebuffer console images ...

No 8bpp silent picture specified in the theme.

No 8bpp verbose picture specified in the theme.

 * Failed to set background image on tty1                                [ !! ]

```

Poi il messaggio si ripete un'altra volta.

In particolare vorrei fare riferimento a queste righe che ho riportato poco fa:

```
Can't open cfg file /etc/splash/livecd-2007.0/640x480.cfg.

No 8bpp verbose picture specified in the theme.

No 8bpp silent picture specified in the theme.
```

Vorrei capire per quale oscura ragione stia tentando di accedere ad un config file di una risoluzione che non mi sono mai minimamente sognato di impostare: la 640x480. A dire il vero questo è un problema che risale a molto tempo fa e che non sono mai riuscito a risolvere e infatti lo splash partiva ma in ritardo (e così continua ad avvenire quando uso vecchi kernel). Altre volte invece tentava di accedere al config file della risoluzione 1024x768, cosa che però non accade sul mio amd64.

Intanto vi dico che comando ho dato per generare il file initrd per lo splash, in base alla risoluzione da me desiderata:

```
splash_geninitramfs livecd-2007.0 -r 1280x800 -g /boot/fbsplash-livecd-2007.0-1280x800-uvesa -v
```

E questa è la parte incriminata nel grub.conf:

```

title=Gentoo Linux 2.6.23-r3

root (hd0,5)

kernel /boot/kernel-2.6.23-gentoo-r3 root=/dev/sda8 video=uvesafb:ywrap,mtrr:3,1280x800-32@75 splash=silent,fadein,theme:livecd-2007.0 CONSOLE=/dev/tty1 quiet resume=/dev/sda7 acpi_sleep=s3_bios pci=assign-busses

initrd (hd0,5)/boot/fbsplash-livecd-2007.0-1280x800-uvesa

```

Ho anche provato a emergere di nuovo splashutils ma non è servito a nulla.

Perché cerca quel config file e non mi carica lo splash????

----------

## ercoppa

Hai seguite questi consigli?

 *Quote:*   

> The guide below assumes you're using Gentoo Linux. If you happen do be using another distro, replace all emerge steps with unpack ; ./configure ; make ; make install or similar.
> 
>    1. cd /usr/src/linux
> 
>    2. configure the kernel; in the "Device Drivers" section select:
> ...

 

Per generare l'initrd io faccio come da guida:

```
# cd /etc/splash/
```

```
# splash_geninitramfs livecd-2007.0 -r 1280x1024 -g /boot/fbsplash-livecd-2007.0-1280x1024 -v
```

E' importante che in /etc/splash/ esista il link simbolico default:

```
ercoppa@gentoo /etc/splash $ ls -l

totale 92

lrwxrwxrwx 1 root    root     13  2 nov 17:15 default -> livecd-2007.0

drwxr-xr-x 3 root    root   4096 12 feb  2007 emergence

drwxr-xr-x 3 root    root   4096 12 feb  2007 gentoo

drwxr-xr-x 6 root    root   4096 12 feb  2007 livecd-2006.1

drwxr-xr-x 6 root    root   4096 15 set 14:37 livecd-2007.0

-rw-r--r-- 1 root    root  66372 28 nov 22:14 luxisri.ttf

drwxr-xr-x 3 ercoppa users  4096 12 lug 17:48 Vampire

```

Infine questa è la mia riga di grub:

```
 kernel (hd0,4)/boot/kernel-2.6.23-2 root=/dev/hda5 video=uvesafb:1280x1024-32,mtrr:3,ywrap splash=silent,fadein,theme:livecd-2007.0 quiet CONSOLE=/dev/tty1

    initrd (hd0,4)/boot/fbsplash-livecd-2007.0-1280x1024

```

----------

## fbcyborg

 *ercoppa wrote:*   

> Hai seguite questi consigli?
> 
> 

 Sì li ho seguiti tutti quei passi. *ercoppa wrote:*   

> 
> 
>  *Quote:*   The guide below assumes you're using Gentoo Linux. If you happen do be using another distro, replace all emerge steps with unpack ; ./configure ; make ; make install or similar.
> 
>    1. cd /usr/src/linux
> ...

 L'unica cosa su cui mi sono venuti i dubbi è che al punto 2 dice di selezionare Connector - unified userspace <-> kernelspace linker ma in realtà non c'è nulla da selezionare. Io almeno sul mio kernel non posso selezionare nulla. Vedo quella voce, ma non compaiono le solite parentesi quadre [ ] che permettono di selezionarlo come modulo o built in. *ercoppa wrote:*   

> 
> 
> Per generare l'initrd io faccio come da guida:
> 
> ```
> ...

 OK, esattamente come faccio io. *ercoppa wrote:*   

> 
> 
> E' importante che in /etc/splash/ esista il link simbolico default:
> 
> ```
> ...

 Effettivamente questo link mancava, ma non l'ho mai avuto questo link simbolico sul mio amd64 (ad esempio) ed ha sempre funzionato. In realtà questo link non c'era mai stato nemmeno sul portatile in questione, ma a parte questo problema che sto ponendo quì, andava bene prima di mettere uvesafb. Adesso comunque l'ho aggiunto il link. *ercoppa wrote:*   

> 
> 
> Infine questa è la mia riga di grub:
> 
> ```
> ...

 

Ok, più o meno è come la mia. Comunque ho provato anche a mettere la tua stessa riga di GRUB ma non funziona.. stessi messaggi di prima, stesso risultato.

----------

## ercoppa

 *Quote:*   

> ma non compaiono le solite parentesi quadre [ ] che permettono di selezionarlo come modulo o built in.

 

Una volta mi è stato detto che se c'è "---" vuol dire che quella voce è automaticamente inclusa per "dipendenza" di un altra.

Se ti può essere utile io sotto "Graphics support" ho abilitato solo:

```
<*> Support for frame buffer devices

....

 <*>   Userspace VESA VGA graphics support

....

Console display driver support  --->

       [*]   Video mode selection support 

       <*> Framebuffer Console support 

        ....

         [*]   Support for the Framebuffer Console Decorations

```

Per il resto non so che consigliarti   :Crying or Very sad: 

----------

## fbcyborg

 *ercoppa wrote:*   

>  *Quote:*   ma non compaiono le solite parentesi quadre [ ] che permettono di selezionarlo come modulo o built in. 
> 
> Una volta mi è stato detto che se c'è "---" vuol dire che quella voce è automaticamente inclusa per "dipendenza" di un altra.

 Sì, anche io ho sentito questa cosa da un mio amico. Di fatto è così! *ercoppa wrote:*   

> 
> 
> Se ti può essere utile io sotto "Graphics support" ho abilitato solo:
> 
> ```
> ...

 

Le stesse voci che ho abilitato io. Comunque ti ringrazio molto per la buona volontà nel cercare la soluzione.

In ogni caso, mi focalizzerei su come trovare la causa di questo messaggio, per il momento:

```
Can't open cfg file /etc/splash/livecd-2007.0/640x480.cfg. 
```

Chi diavolo è a produrre questo messaggio e perché!!!! Visto che io mai mi sono sognato di impostare la risoluzione a 640x480.

EDIT1:

vediamo se queste informazioni possono essere di indizio:

```
# cat /sys/class/graphics/fb0/modes

U:640x480p-60

V:1024x768p-85

V:1024x768p-75

V:1024x768p-70

V:1024x768p-60

V:1024x768i-53

V:800x600p-85

V:800x600p-75

V:800x600p-72

V:800x600p-60

V:800x600p-56

V:640x480p-85

V:640x480p-75

V:640x480p-72

V:640x480p-60

V:640x400p-85

U:320x240p-60

U:320x400p-59

U:320x200p-59

U:1024x768p-60

U:800x600p-59

U:640x480p-60

U:640x400p-59

```

Nel frattempo mi sto documentando su come patchare il kernel per l'fbcondecor.. forse è quello il problema..

EDIT2: no, non era quello il problema, i gentoo-sources, già la includono la patch.

----------

## bandreabis

Boh.

Io do il comando 

```
splash_geninitramfs -v -g  /usr/src/linux/usr/initramfs_data.cpio.gz -r 1024x768 tux-gentoo
```

----------

## fbcyborg

Ma non penso sia quello il problema.

Tu fai così perché compili l'immagine initramfs direttamente nel kernel.

Per caso è obbligatorio fare così se uso uvesafb?

----------

## bandreabis

 *fbcyborg wrote:*   

> Ma non penso sia quello il problema.
> 
> Tu fai così perché compili l'immagine initramfs direttamente nel kernel.
> 
> Per caso è obbligatorio fare così se uso uvesafb?

 

Io l'ho messa lì, ma purtroppo ho solo copiato utontamente da una guida.

----------

## MeMyselfAndI

Ma scusa fammi capire: tu stai cercando di far andare lo splash con una risoluzione di 1280x1024 quando la tua scheda video supporta solamente fino a 1024x768.. a occhio sta proprio li l'errore. Prova a ricreare l'initrd con una risoluzione piu' modesta.

----------

## fbcyborg

 *MeMyselfAndI wrote:*   

> Ma scusa fammi capire: tu stai cercando di far andare lo splash con una risoluzione di 1280x1024 quando la tua scheda video supporta solamente fino a 1024x768.. a occhio sta proprio li l'errore. Prova a ricreare l'initrd con una risoluzione piu' modesta.

 

MMh... non mi risulta. A meno che non ho scritto qualcosa di sbagliato per disattenzione, io ho parlato solo di risoluzione 1280x800.   :Rolling Eyes: 

E poi come fai a dire che la mia risoluzione massima supportata è 1024x768?

----------

## MeMyselfAndI

 *fbcyborg wrote:*   

>  *MeMyselfAndI wrote:*   Ma scusa fammi capire: tu stai cercando di far andare lo splash con una risoluzione di 1280x1024 quando la tua scheda video supporta solamente fino a 1024x768.. a occhio sta proprio li l'errore. Prova a ricreare l'initrd con una risoluzione piu' modesta. 
> 
> MMh... non mi risulta. A meno che non ho scritto qualcosa di sbagliato per disattenzione, io ho parlato solo di risoluzione 1280x800.  
> 
> E poi come fai a dire che la mia risoluzione massima supportata è 1024x768?

 

```

# cat /sys/class/graphics/fb0/modes

```

Ti restituisce le risoluzioni supportate dal framebuffer della tua scheda video. Mi sembra piu' che naturale che non funzioni. Ripeto prova a cambiare risoluzione dell'immagine initrd.

Per quel che ne so io scordati un framebuffer widescreen, ti devi accontentare di un normale 4/3 stirato a 16/10.

Ciao

----------

## unz

 *MeMyselfAndI wrote:*   

>  *fbcyborg wrote:*    *MeMyselfAndI wrote:*   Ma scusa fammi capire: tu stai cercando di far andare lo splash con una risoluzione di 1280x1024 quando la tua scheda video supporta solamente fino a 1024x768.. a occhio sta proprio li l'errore. Prova a ricreare l'initrd con una risoluzione piu' modesta. 
> 
> MMh... non mi risulta. A meno che non ho scritto qualcosa di sbagliato per disattenzione, io ho parlato solo di risoluzione 1280x800.  
> 
> E poi come fai a dire che la mia risoluzione massima supportata è 1024x768? 
> ...

 

Confermo quello che dice MeMyselfAndI ... avevo lo stesso problema, poi ho scoperto che il fb supportava fino a 1024. Ho impostato lo splash a quella risoluzione, e fbcondecor ha iniziato a funzionare

----------

## IlGab

Siccome ci ho appena finito di sbattere la testa ecco qua  :Smile: 

```
cat /sys/bus/platform/drivers/uvesafb/uvesafb.0/vbe_modes
```

Nel mio caso ho

```
640x400-8, 0x0100

640x480-8, 0x0101

800x600-8, 0x0103

1024x768-8, 0x0105

1280x1024-8, 0x0107

320x200-16, 0x010e

320x200-32, 0x010f

640x480-16, 0x0111

640x480-32, 0x0112

800x600-16, 0x0114

800x600-32, 0x0115

1024x768-16, 0x0117

1024x768-32, 0x0118

1280x1024-16, 0x011a

1280x1024-32, 0x011b

320x200-8, 0x0130

320x400-8, 0x0131

320x400-16, 0x0132

320x400-32, 0x0133

320x240-8, 0x0134

320x240-16, 0x0135

320x240-32, 0x0136

640x400-16, 0x013d

640x400-32, 0x013e

1400x1050-8, 0x0147

1400x1050-16, 0x0148
```

Quindi mi prendo la più alta possibile 1400x1050-16 e ci imposto grub.conf

```
kernel /vmlinuz-2.6.23-gentoo-r3 root=/dev/sda3 combined_mode=libata video=uvesafb:1400x1050-16,mtrr:3,ywrap splash=silent,theme:livecd-2007.0,tty:12 console=tty1 quiet
```

Poi creo il ramdrive per la risoluzione scelta

```
splash_geninitramfs -g initrd.img -r 1400x1050 livecd-2007.0
```

e aggiungo a grub.conf il path per il ramdrive

```
initrd /initrd.img
```

Fine  :Smile: 

----------

## lobotomia

hai fatto l'emerge di v86d?

ti da qualche errore al boot relativo a v86d?

inoltre non so la compatibilità diretta tra uvesab e splashutils, visto che devi usare l'initrd di v86d forse non puoi usare l'altra...

----------

## fbcyborg

 *MeMyselfAndI wrote:*   

> 
> 
> Ti restituisce le risoluzioni supportate dal framebuffer della tua scheda video. Mi sembra piu' che naturale che non funzioni. Ripeto prova a cambiare risoluzione dell'immagine initrd.
> 
> Per quel che ne so io scordati un framebuffer widescreen, ti devi accontentare di un normale 4/3 stirato a 16/10.
> ...

 

Ma scusate... Io non metto assolutamente in dubbio quanto affermate... 

Ma mi dite perché allora, se avvio un kernel che invece di uvesa ha vesafb-tng, mi mostra uno splash screen alla risoluzione di 1280x800?

EDIT: Ok, ha funzionato, ma ancora non capisco questa cosa...   :Confused: 

----------

## MeMyselfAndI

probabilmente il tuo computer stirera' in automatico tutte le risoluzioni non native per adattarle alle dimensioni dello schermo: anche io sul mio monitor 16:10 uso un framebuffer con risoluzione 4:3 senza bande nere.

----------

## fbcyborg

 *MeMyselfAndI wrote:*   

> probabilmente il tuo computer stirera' in automatico tutte le risoluzioni non native per adattarle alle dimensioni dello schermo: anche io sul mio monitor 16:10 uso un framebuffer con risoluzione 4:3 senza bande nere.

 

Buono a sapersi! In effetti le bande nere le ho levate da subito, tramite un'impostazione del bios nella quale si abilita l'estensione di ciò che viene mostrato a video su tutto lo spazio disponibile. Del resto, si vede benissimo ed ho un fadein rapidissimo..

----------

## magowiz

 *lobotomia wrote:*   

> hai fatto l'emerge di v86d?
> 
> ti da qualche errore al boot relativo a v86d?
> 
> inoltre non so la compatibilità diretta tra uvesab e splashutils, visto che devi usare l'initrd di v86d forse non puoi usare l'altra...

 

io ho optato in questo caso per la soluzione di includere nel kernel l'immagine di v86d e creare separatamente l'immagine per splash, poi ho messo initrd /boot/<initramfs_dello_splash> in grub e tutto ha funzionato. Credo che si possa anche includere più di un file nell'initramfs del kernel in quanto se vedi nella configurazione c'è scritto source file(s) , dovrò fare delle prove.

----------

## ashlar

ho seguito i vostri consigli e funziona tutto anche a me

----------

## magowiz

 *magowiz wrote:*   

>  *lobotomia wrote:*   hai fatto l'emerge di v86d?
> 
> ti da qualche errore al boot relativo a v86d?
> 
> inoltre non so la compatibilità diretta tra uvesab e splashutils, visto che devi usare l'initrd di v86d forse non puoi usare l'altra... 
> ...

 

in realtà ho scoperto grazie all'help di menuconfig che di immagini compresse se ne può includere solo una, mentre volendo si possono includere più path in quella variabile in modo che prenda il contenuto di tutti i path elencati e da lì crei un'unica immagine compressa

----------

