# [RISOLTO] non riesco a far funzionare fbsplash

## t-storm

Salve a tutti,

ho provato ad abilitare lo splash al boot del sistema ma non sono ancora riuscito a farlo funzionare. Eppure credo di avere seguito alla lettera le guide e non ho errori in dmesg o in var/log/messages.

Come parametri in grub.conf ho:

```
kernel /boot/bzImage-2.6.20-gentoo-r6 root=/dev/sda6 video=radeonfb:1280x1024-32@75 splash=silent,fadein,theme:emergence quiet CONSOLE=/dev/tty1 

initrd /boot/fbsplash-emergence
```

Le configurazioni del kernel abilitate sono:

```
CONFIG_FB=y

CONFIG_FB_DDC=y

CONFIG_FB_CFB_FILLRECT=y

CONFIG_FB_CFB_COPYAREA=y

CONFIG_FB_CFB_IMAGEBLIT=y

CONFIG_FB_MODE_HELPERS=y

CONFIG_FB_RADEON=y

CONFIG_FB_RADEON_I2C=y

CONFIG_FB_SPLASH=y

CONFIG_FRAMEBUFFER_CONSOLE=y

CONFIG_INPUT_EVDEV=y

CONFIG_BLK_DEV_FD=y

CONFIG_BLK_DEV_LOOP=y

CONFIG_BLK_DEV_RAM=y

CONFIG_BLK_DEV_RAM_COUNT=16

CONFIG_BLK_DEV_RAM_SIZE=4096

CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024

CONFIG_BLK_DEV_INITRD=y

```

Ho creato l'immagine con 

```
splash_geninitramfs emergence -g /boot/fbsplash-emergence -v
```

Come scheda video ho una ati radeon X1600XT e uso i driver proprietari con accelerazione 3d.

Xorg 7.2 e kernel 2.6.20-r6

Come ho già scritto purtroppo non ho messaggi di errore il boot avviene come prima. 

Cosa sto sbagliando?Last edited by t-storm on Wed May 23, 2007 5:07 pm; edited 1 time in total

----------

## misterwine

Non ti funziona solo il tema oppure anche il semplice framebuffer che ti permette di leggere i messaggi di avvio ad una risluzione "decente"?

Potresti provare ad usare vesafb-tng o vesafb al posto di radeonfb. Io utilizzo il primo... e grub l' ho configurato così (le opzioni acpi=off e irqpoll son per problemi che ho con i driver nvidia)

```
title           Gentoo-2.6.18-r6

root            (hd0,0)

kernel          /kernel-2.6.18-gentoo-r6 root=/dev/hda2 acpi=off irqpoll video=vesafb:ywrap,mtrr,1024x768-16@50 splash=silent,theme:fingerprint console=tty1 quiet

initrd          /splash-fingerprint
```

prova a togliere console=/dev/tty1 e mettere console=tty1

----------

## t-storm

 *Quote:*   

> Non ti funziona solo il tema oppure anche il semplice framebuffer che ti permette di leggere i messaggi di avvio ad una risluzione "decente"? 

 

Vedo i messaggi come prima di abilitare il framebuffer da kernel

 *Quote:*   

> Potresti provare ad usare vesafb-tng o vesafb al posto di radeonfb

 

Devo quindi abilitare le voci corrispondenti nel kernel e disabilitare quelle delle schede ati radeon?

```
 

Device Drivers > 

   Graphics support: >

      [*] Support for frame buffer devices

      <*>   VESA VGA graphics support

              VESA driver type (vesafb-tng)  --->

      (HRESxVRES@FREQ) VESA default mode 

         # Pick your resolution@freq

         # Ex: (1280x1024@75) 

      Console display driver support  --->

         [*] Video mode selection support

         <*> Framebuffer Console support

```

```
Device Drivers > Graphics support:

 [*] Support for frame buffer devices

 <*>   ATI Radeon display support

```

Abilitarle entrambe crea casino?

----------

## misterwine

Penso che abilitarle entrambe non crei problemi, dato che all' avvio grub dice al kernel quale driver per framebuffer usare... comunque prima di ricompilarti il kernel, prova a modificare nel tuo grub.conf console=/dev/tty1 con console=tty1   :Wink: 

----------

## t-storm

Ho provato a mettere console=tty1 invece dsi CONSOLE=/dev/tty1 ma il risultato non è cambiato. 

Ho quindi ricompilato il kernel con abilitato "VESA VGA graphics support".

Il risultato è che ora i messaggi al boot sono illegibili ma colorati   :Razz:  : quindi qualcosa è cambiato.

Inoltre ora ho queste righe in più in dmesg:

```
# dmesg | grep splash

Kernel command line: root=/dev/sda6 video=vesafb:1280x1024-32@75,mtrr,ywrap splash=silent,fadein,theme:emergence quiet console=tty1 

fbsplash: console 0 using theme 'emergence'

fbsplash: switched splash state to 'on' on console 0

```

Ho provato a cambiare i parametri del kernel come vedi sopra, mettendo sia "vesafb-tng" che "radeonfb", ma il risultato è sempre lo stesso. Facendo CTRL+ALT+F1 la console mi appare illeggibile.

----------

## daniel979

io ricordo che non potevo utilizzare tutte le risoluzioni per il framebuffer infatti lo faccio partire a 800x600, prova magari anche per te questo e' il problema (non ricordo dove ma ti dava la lista delle risoluzioni possibili per la tua scheda video per il framebuffer).

in grub.conf ho

kernel		/boot/kernel-suspend2-2.6.18-r1 root=/dev/sda2 splash=silent,fadein,theme:gentoo video=vesafb:800x600-32@60,mtrr,ywrap quiet CONSOLE=/dev/tty1

initrd		/boot/fbsplash-gentoo-800x600

ci sono delle opzioni che non vedo nella tua magari prova anche quelle.

----------

## misterwine

Già... quoto daniel979... controlla se il tema emergence per bootsplash supporta la risoluzione che hai impostato, e aggiungi le opzioni mtrr e ywrap...

----------

## t-storm

ho fatto un po' di prove: innanzitutto emergence supporta 1280x1024, o almeno il tema contiene il cfg e le immagini per quella risoluzione. Ho provato a cambiare tema e ho lo stesso risultato. Cambiando radeonfb con vesafb-tng ho nei log:

```
 # dmesg | grep vesafb  

Kernel command line: root=/dev/sda6 video=vesafb-tng:1280x1024-32@75,mtrr,ywrap splash=silent,fadein,theme:livecd-2007.0 quiet CONSOLE=/dev/tty1 

vesafb: (C) 1988-2005, ATI Technologies Inc. , RV530, 01.00 (OEM: ATI ATOMBIOS)

vesafb: VBE version: 3.0

vesafb: protected mode interface info at c000:a390

vesafb: pmi: set display start = c00ca41e, set palette = c00ca4e0

vesafb: VBIOS/hardware supports DDC2 transfers

vesafb: monitor limits: vf = 75 Hz, hf = 81 kHz, clk = 140 MHz

vesafb: scrolling: redraw

vesafb: mode switch failed (eax: 0x34f)

vesafb: framebuffer at 0xe0000000, mapped to 0xf8880000, using 16384k, total 16384k

```

e

```
# dmesg | grep mtrr

Kernel command line: root=/dev/sda6 video=vesafb-tng:1280x1024-32@75,mtrr,ywrap splash=silent,fadein,theme:livecd-2007.0 quiet CONSOLE=/dev/tty1 

mtrr: your CPUs had inconsistent variable MTRR settings

mtrr: probably your BIOS does not setup all CPUs.

mtrr: corrected configuration.

```

Ma sinceramente non so se c'entra qualcosa con lo splash

ho anche

```

ahci: probe of 0000:04:00.0 failed with error -22

```

e

```

PCI: Device 0000:04:00.0 not available because of resource collisions

ahci: probe of 0000:04:00.0 failed with error -22

PCI: Enabling device 0000:04:00.1 (0000 -> 0001)

ACPI: PCI Interrupt 0000:04:00.1[B] -> GSI 18 (level, low) -> IRQ 16

PCI: Setting latency timer of device 0000:04:00.1 to 64

```

Ma non so se è qualcosa relativo a fbsplash. Sembra relativo al controller SATA, ma l'harddisk funziona correttamente

```
# lspci

00:00.0 Host bridge: Intel Corporation 82P965/G965 Memory Controller Hub (rev 02)

00:01.0 PCI bridge: Intel Corporation 82P965/G965 PCI Express Root Port (rev 02)

00:1a.0 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Contoller #4 (rev 02)

00:1a.1 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #5 (rev 02)

00:1a.7 USB Controller: Intel Corporation 82801H (ICH8 Family) USB2 EHCI Controller #2 (rev 02)

00:1b.0 Audio device: Intel Corporation 82801H (ICH8 Family) HD Audio Controller (rev 02)

00:1c.0 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 1 (rev 02)

00:1c.4 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 5 (rev 02)

00:1c.5 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 6 (rev 02)

00:1d.0 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #1 (rev 02)

00:1d.1 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #2 (rev 02)

00:1d.2 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #3 (rev 02)

00:1d.7 USB Controller: Intel Corporation 82801H (ICH8 Family) USB2 EHCI Controller #1 (rev 02)

00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev f2)

00:1f.0 ISA bridge: Intel Corporation 82801HB/HR (ICH8/R) LPC Interface Controller (rev 02)

00:1f.2 SATA controller: Intel Corporation 82801HR/HO/HH (ICH8R/DO/DH) 6 port SATA AHCI Controller (rev 02)

00:1f.3 SMBus: Intel Corporation 82801H (ICH8 Family) SMBus Controller (rev 02)

01:00.0 VGA compatible controller: ATI Technologies Inc RV530 [Radeon X1600]

01:00.1 Display controller: ATI Technologies Inc RV530 [Radeon X1600] (Secondary)

03:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8053 PCI-E Gigabit Ethernet Controller (rev 22)

04:00.0 SATA controller: JMicron Technologies, Inc. JMicron 20360/20363 AHCI Controller (rev 02)

04:00.1 IDE interface: JMicron Technologies, Inc. JMicron 20360/20363 AHCI Controller (rev 02)

05:06.0 FireWire (IEEE 1394): Texas Instruments TSB43AB23 IEEE-1394a-2000 Controller (PHY/Link)

```

----------

## misterwine

Ciao... ho letto qui proprio adesso:

 *Quote:*   

> In the example below the vesafb-tng frame buffer device is used. If you have problems, such as your splash screen not showing up, use vesafb instead.

 

Ti avevo detto di provare vesafb-tng perchè usando quello a me funziona... ma forse non è così. Ho visto il dmesg che hai postato. Solo le prime due parti centrano col framebuffer, gli altri no.

Mi pare inoltre che bisogna mettere "vesafb" anche se usi "vesafb-tng" su grub.conf (sempre leggendo la guida linkata sopra)

Inoltre:

 *Quote:*   

> Note that for kernel versions from 2.6.13 onwards you *must* specify the mtrr mode: eg "mtrr:2".

 

il che penso possa centrare con i messaggi relativi a mtrr che ti mostra dmesg.

.... che faticaccia sto framebuffer però...   :Wink:   ciao!

----------

## daniel979

la risoluzione che ti dicevo di provare non era per il tema ma proprio per il framebuffer

a volte non si possono settare tutte le risoluzioni, non ricordo dove ma in /proc/qualchecosa ti dava la lista di tutte le risoluzini del framebuffer supportate dalla tua scheda video, quindi se non hai provato a diminuire risoluzione prova, naturalmente poi devi usare anke un tema alla risoluzione minore.

edit: il comando per vedere le risoluzioni supportate per il frame buffer e' cat /proc/fb0/modes

ciao

----------

## t-storm

Allora: ho provato il driver vesafb. Il risultato è che al boot mi appare il messaggio:

 *Quote:*   

> You passed an undefined mode number
> 
> Press <RETURN> to see video modes available, <SPACE> to continue or wait
> 
> 30 secs 

 

Se faccio return vedo un elenco di possibili valori: ne ho provati in po'. Sono tutti 80x60 o meno. Il risultato cmq non cambia.

Con mtrr:2 dopo il messaggio il sistema non si avvia. Con mtrr:3 si. Sto ancora cercando una lista dei possibili valori applicabili alla memoria della mia scheda video, se ho capito qualcosa il valore dovrebbe indicare il tipo di lettura dalla memoria. L'mtrr a cui fanno riferimento i log che ho postato in precedenza potrebbero invece essere relativi alla memoria cache dei processori?

Ho provato altre risoluzioni, 800x600 o 1024x768 ma senza successo. 

Per avere la certezza che la mia scheda video supporti il framebuffer ho masterizzato un cd con la gentoo minimal 2007.0. Qui lo splash funziona e con risoluzione 1024x768-24 (vga=791). Ho provato ad indicare vga=791 oppure video=vesafb:1024x769-24@75 ma senza che cambiasse nulla.

Probabilmente c'è un problema a monte: il file /proc/fb0/modes io non ce l'ho. Ho solo un file /proc/fb vuoto. 

Comunque grazie dell'aiuto. Domani (oggi   :Crying or Very sad:  ), se avrò il tempo, cercherò ancora documentazione per vedere se mi è sfuggito qualcosa.

----------

## Scen

Se usi il driver vesafb "standard" (NON quello avanzato vesafb-tng), devi passare al kernel anche il parametro

```

vga=0x<video mode number>

```

dove <video_mode_number> segue questo schema:

```

    | 640x480  800x600  1024x768 1280x1024

----+-------------------------------------

256 |  0x301    0x303    0x305    0x307

32k |  0x310    0x313    0x316    0x319

64k |  0x311    0x314    0x317    0x31A

16M |  0x312    0x315    0x318    0x31B

```

Trovi altre informazioni in /usr/src/linux/Documentation/fb/vesafb.txt.  :Wink: 

N.B. Sia che utilizzi vesafb, sia che utilizzi vesafb-tng, nel parametri del kernel devi SEMPRE specificare

```

... video=vesafb: ...

```

----------

## t-storm

Si, ho specificato anche questo parametro, come "0x31B" o come 791 o 788, giusto per variare le risoluzioni. Ho fatto tante prove, forse troppe, mischiando tanti parametri. L'ultima prova era (cito a memoria visto che sono lontano dal pc di casa) 

```
video:vesafb:mtrr:3,ywrap vga=0x31B splash=silent,fadein,theme:livecd-2007.0 quiet CONSOLE=/dev/tty1
```

Il risultato è quello descritto in precedenza

 *Quote:*   

> You passed an undefined mode number
> 
> Press <RETURN> to see video modes available, <SPACE> to continue or wait
> 
> 30 secs

 

Spero di trovare qualche informazione precisa su quali sono le risoluzioni accessibili in boot dalla mia scheda video, anche se il vga=791 del livecd mi sembra una buona base di partenza. Proverò a vedere come è compilato il kernel del livecd per vedere cosa cambia nelle impostazioni.

----------

## nick_spacca

 *t-storm wrote:*   

> Si, ho specificato anche questo parametro, come "0x31B" o come 791 o 788, giusto per variare le risoluzioni. Ho fatto tante prove, forse troppe, mischiando tanti parametri. L'ultima prova era (cito a memoria visto che sono lontano dal pc di casa) 
> 
> ```
> video:vesafb:mtrr:3,ywrap vga=0x31B splash=silent,fadein,theme:livecd-2007.0 quiet CONSOLE=/dev/tty1
> ```
> ...

 

Io ho lo stesso tipo di problema, ed ho risolto -accontentandomi- di un + modesto 773, che al momento funziona su tutti i sistemi/pc che posseggo..prova   :Wink: 

----------

## t-storm

 *Quote:*   

> Io ho lo stesso tipo di problema, ed ho risolto -accontentandomi- di un + modesto 773, che al momento funziona su tutti i sistemi/pc che posseggo..prova

 

Ho provato e non ottengo nulla di diverso. Ho anche disabilitato la voce corrispondente alle schede ati visto che in alcuni forum dicono di attivare quello o, in alternativa, vesa, ma non entrambi. 

A questo punto ho quasi perso la speranza: la cosa che mi dispiace di più è non aver raggiunto nessuna certezza. Ad esempio quali driver usare, quale risoluzione.

... intanto il log di xorg  

```
# cat /var/log/Xorg.0.log | grep framebuffer

(**) fglrx(0): Depth 24, (--) framebuffer bpp 32

(--) fglrx(0): Linear framebuffer (phys) at 0xe0000000

(II) fglrx(0): [drm] framebuffer handle = 0x3000
```

Se interpreto bene il log 24 bit è configurato ma 32 "probed". Significa che xorg ha verificato che la scheda può usare fb a 32?

----------

## djinnZ

In realtà 24 o 32 sono la stessa cosa (sempre 1,6 M di colori visualizzano) la diffrenza è nel come vengono allineate le informazioni.

Se non mi sbaglio vuol dire che X lavora a 24 ed il framebuffer è impostato a 32 (che dovrebbe essere più veloce ma richiedere più ram alla scheda).

Ho un problema simile (ma non posso usare vesa-tng perchè ho il kernel hardened) visto che vorrei poter usare 1400x900 ma non vuol saperne di funzionare con tutto ciò che esula 1024x768.

Tuttavia se si applica la logica del driver open source o il bios della scheda supporta tutte le risoluzioni vesa (e non sempre è così) o si dovrebbe usare il driver specifico (vide=radeon...). Speriamo che si decidano a liberarci di questi dannATI driver proprietari... anche se ci spero molto poco per le vecchie schede.

----------

## misterwine

La butto lì... è probabile che quando vuoi cambiare risoluzione devi cambiare anche l' immagine initramfs oltre che modificare il relativo parametro del bootloader. Il comando è come quello che devi aver usato per creare la tua immagine, tipo:

```
splash_geninitramfs livecd-2006.1 -r 1024x768 -g /boot/fbsplash-livecd-2006.1-1024x768 -v
```

----------

## t-storm

Credo che se non specifichi la risoluzione con l'opzione -r vengono inserite nell'immagine tutte le risoluzioni possibili. Leggendo il contenuto dell'immagine con 

```
# zcat /boot/fbsplash-livecd-2007.0 | cpio --list
```

 vedo che contiene le immagini per tutte le risoluzioni ammesse dal tema.

Ma posso sbagliarmi.

Un altra cosa che non ho capito perfettamente è se l'immagine va prodotta nuovamente ogni volta che ricompili il kernel. Comunque è una prova che ho fatto e non ha risolto.

----------

## Scen

 *t-storm wrote:*   

> Un altra cosa che non ho capito perfettamente è se l'immagine va prodotta nuovamente ogni volta che ricompili il kernel. Comunque è una prova che ho fatto e non ha risolto.

 

No, non serve. L'immagine una volta creata è apposto   :Cool: 

Siccome non ci sto capendo più nulla, e siccome le informazioni in questa discussione sono alquanto confuse, ti chiedo gentilmente di rifare il punto della situazione.

posta il contenuto del file di configurazione del tuo bootloader (mi sfugge se usi LILO o GRUB)

Che scheda video hai?

Che driver del framebuffer vuoi utilizzare/stai utilizzando?

Inoltre ti dò questi consigli:

Prima prova ad utilizzare il driver "generico" vesafb, se fallisce passa a vesafb-tng, dopodichè a quello specifico per la tua scheda video

Comincia con il provare delle risoluzioni basse (800x600)

Comincia passando solo le opzioni necessarie (mttr,ywrap e compagnia bella provale successivamente, quando sarai riuscito a far funzionare il tutto)

Personalmente non ho mai riscontrato gravi difficoltà nel far funzionare il framebuffer e lo splash, di solito se qualcosa non funziona si sta sbagliando sicuramente qualcosa nella configurazione/installazione.

----------

## t-storm

Risolto! Grazie Scen! 

Ho ricompilato il kernel come mi hai consigliato con vesafb e non vesafb-tng e disabilitando tutto tranne quello indicato nel howto di gensplash. Ora va anche a 1280 x 1024. Davo per scontato che se non avesse funzionato con vesafb-tng non avrebbe funzionato neanche con vesafb.

Ho in grub.conf:

```
title=Gentoo Linux 2.6.20-r6 splash

root (hd0,1)

kernel /boot/bzImage-2.6.20-gentoo-r6-splash root=/dev/sda6 video=vesfb vga=0x31B splash=silent,fadein,theme:livecd-2007.0 quiet CONSOLE=/dev/tty1

initrd /boot/fbsplash-livecd-2007.0

```

Per riepilogare ho una ATI radeon X1600XT. Funziona con driver VESAFB compilato nel kernel e la riga sopra riportata nel bootloader: testata con risoluzione a 0x31B, 0x318 e 0x314. Nel kernel ho abilitato quanto riportato nella guida nella parte generale e non quanto riportato relativamente alle schede ATI.

Grazie a tutti.   :Wink: 

----------

