# [FRAMEBUFFER] vga en el arranque en 1280x800 (abierto)

## sefirotsama

Me he decidido a poner un bootsplash, pues pienso que ya esta bien de optimizar para mejor rendimiento y velocidad de arranque y es hora de ponerle 4 colorines al asunto... He probado con los que vienen por defecto... y funcionan a 1024x768 (por cierto el gentoo pone 2004.0!!!!). Ahora me estaba haciendo uno a medida a mi resolución de 1280x800 pero he recordado que nunca he arrancado a esa resolución...

handbook:

 *Quote:*   

> 
> 
> Opcional: Memoria de imagen (Framebuffer)
> 
> Si ha configurado su kernel con soporte framebuffer (o ha utilizado la configuración predeterminada de genkernel) puede activarlo añadiendo el parámetro vga y/o video al archivo de configuración del gestor de inicio. 
> ...

 

Hasta ahora he estado arrancando en vga=0x318 pero queria poner un bootsplash exacto para mi resolución y se me plantea la duda de como debo hacer para arrancar vga con la opción...

He mirado /usr/src/linux/Documentation/fb/vesafb.txt

Y no llego a ninguna conclusión clara...

si pruebo video=vesafb:1280x800-24@60 deberia funcionar??

Si con grub no puedo, alguien sabe si con gfxgrub podria?? (conocido grub estilo SuSe?)

Agradezco las respuestas

----------

## gringo

 *Quote:*   

> si pruebo video=vesafb:1280x800-24@60 deberia funcionar?? 

 

yo tengo puesto mas o menos eso y me funciona  :Smile: 

 *Quote:*   

> Si con grub no puedo, alguien sabe si con gfxgrub podria?? (conocido grub estilo SuSe?) 

 

si bien nunca lo he usao, creo que si podrás si tienes un tema para la resolución adecuada.

saluetes

----------

## sefirotsama

Gracias Gringo!!!

Ahora lo probar´e!

P.S. he visto tu blog.

----------

## i92guboj

1280x800 no es un modo vesa estándar.

Los drivers framebuffer jamás de los jamases pueden usar una resolución que tu BIOS vesa no soporte, independientemente de los modos que tu tarjeta soporte. No es que el driver sea limitado, es que es sencillamente imposible. La mayoría de BIOS vesa no van a tener una resolución como esa en su lista de modos soportados.

Un driver específico para la tarjeta si podría reconocerlo, como pasa en X, por ejemplo. Pero el framebuffer tiene una serie de peculiaridades:

1.- solo se puede iniciar en modo real, es decir, al inicio, porque linux corre totalmente en modo protegido

2.- es una forma estándar que tiene que funcionar en todos los dispositivos imaginables, la única forma de hacer esto sin escribir un megapack universal de drivers que soporte todos los dispositivos del mundo, es usar las funciones vesa de la BIOS, es decir, que todo se hace a través de la BIOS, y es por eso que si la limitación está en la BIOS el programa no puede hacer nada por arreglarlo (eso rompería totalmente la premisa de la compatibilidad universal).

----------

## sefirotsama

Pues no ha funcionado... lo probar´e con el driver intelfb:

video=intelfb:1280x800-24@60

SI lo consigo ya lo dire... gracias por la explicacion i92

----------

## ensarman

mejor usa la resolucion 1024x768, es mas estandar ya que la puedes usar en otro mointor ya que la mayoria soportan 1204x768, a menos que uses vejestorios o cañones que no soporten esas resoluciones.

----------

## sefirotsama

La soporto correctamente y es la que uso para la consola, pero en las X 1280x800 que es la por defecto (de lo contrario las imagenes se redimensionan de manera curiosa).

Pero no me gusta a cada cambio entre uno y otro que haga un cambio de resolucion, ademas de otros detallitos...

se agradece el consejo, y de hecho habia pensado en dejar la de 1024x768 ya que hay mayor numero de splashes... pero al rato volvi a pensarlo mejor.

----------

## Evincar

Mmm, un detalle que no veo es, ¿que tipo de máquina es?

Lo digo por que en un portátil sí es posible conseguir el framebuffer en 1280x800, ya que es la resolución "nativa" de muchas pantallas. Al menos a mí y a dos amigos más que tenemos Linux en portátil nos funciona. Lo que hicimos fue configurarlo directamente en el Kernel (creo que está en Device Drivers-->Character Devices, pero no me hagas mucho caso, mejor utiliza el buscador para encontrar algo de VESA).

----------

## cronwell

Hola

yo uso una resolucion similar (1280x768) para esto uso el driver VESA-TNG

tengo esto en mi Kernel:

CONFIG_FB_VESA_TNG=y

CONFIG_FB_VESA_DEFAULT_MODE="1280x768@60"

y en mi grub lo sgte:

title=Gentoo Linux kernel-2.6.22-gentoo-r1

root(hd0,0)

kernel /kernel-2.6.22-gentoo-r1 root=/dev/hda3 video=vesafb:mtrr:3,ywrap,1280x768-32@60

me funciona sin problemas, 

ahh se me olvidadva mi tarjeta es una intel855gm, 

y el intelFB a mi por lo menos me deja poner la resolucion pero luego tengo problemas al restaurar la consola desde las X.

salu2

----------

## sefirotsama

Gracias por las respuestas, cuando llegue a casa lo pruebo

----------

## opotonil

La verdad que no uso ningun bootsplash, pero juraria que en el portatil tengo una resolucion framebuffer de 1280x800 con el radeonfb, poniendo tan solo: video=radeonfb

De hecho creo recordar que si intentaba especificarle, al radeonfb, la resolucion en el grub (video=rateonfb:1280x800-24@60) me cascaba o me ponia una resolucion bajisima. Asi que prueba simplemente con: video=intelfb (a ver si hay suerte).

Salu2.

----------

## sefirotsama

Pues va a ser que no...

si pongo solo video=vesafb:mtrr:3,ywrap,1280x800-32@60 me sale la resolucion por defecto (800x600 o 640x480 o algo así). Si lo acompanyo de vga=0x318 entonces muestra algo como 1024x768, el resultado no varia si le pongo intelfb o vesa (y creo que voy a descartar vesa ya que no es una resolución estandart).

No he probado video=intelfb a secas...

Cuando el manual dice "vga=0x318" equivale a 1024x768 ... como hace la conversión?? es decir como puedo escribir en esa codificación 1280x800???

(creo pero no estoy seguro que es hexadecimal y no se como convertirlo a ese formato, no se me ocurre)

----------

## Stolz

 *sefirotsama wrote:*   

> Cuando el manual dice "vga=0x318" equivale a 1024x768 ... como hace la conversión?? es decir como puedo escribir en esa codificación 1280x800???
> 
> (creo pero no estoy seguro que es hexadecimal y no se como convertirlo a ese formato, no se me ocurre)

 

Aquí tienes como calcularlo (en inglés) y una tabla con los valores estándar: http://en.wikipedia.org/wiki/VESA_BIOS_Extensions#VESA_video_mode_numbers

----------

## i92guboj

 *Stolz wrote:*   

>  *sefirotsama wrote:*   Cuando el manual dice "vga=0x318" equivale a 1024x768 ... como hace la conversión?? es decir como puedo escribir en esa codificación 1280x800???
> 
> (creo pero no estoy seguro que es hexadecimal y no se como convertirlo a ese formato, no se me ocurre) 
> 
> Aquí tienes como calcularlo (en inglés) y una tabla con los valores estándar: http://en.wikipedia.org/wiki/VESA_BIOS_Extensions#VESA_video_mode_numbers

 

Sin embargo, sigue dependiendo hasta un punto del driver. Si bien la BIOS suele ser más limitante, usualmente.

Por ejemplo, para vesafb tenemos en /usr/src/linux/Documentation/fb/vesafb.txt:

```

So the table for the Kernel mode numbers are:

    | 640x480  800x600  1024x768 1280x1024

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

256 |  0x301    0x303    0x305    0x307

32k |  0x310    0x313    0x316    0x319

64k |  0x311    0x314    0x317    0x31A

16M |  0x312    0x315    0x318    0x31B

```

Y eso es lo que el driver da de sí, ni más ni menos. El driver no entiende ningún otro modo, y por tanto es incapaz de usarlo. En este sentido, puede que vesa-tng o uvesafb tengan más posibilidades, no lo sé realmente. Hay más docs en ese mismo dir, para los distintos drivers.

----------

## cronwell

sefirotsama,

activaste el VESA-TNG en la configuracion del Kernel?? 

a mi nunca me funciono como esperaba driver el vesa antigo...

insisto, no basta con cambiar la linea en el grub. Usa VESA-TNG

bye

----------

## sefirotsama

Gracais cronwell.

A mi ni el vesa ni el intelfb... y en la dirección del wiki tampoco encuentro como escribir 1280x800 ni como calcular el codigo equivalente (aunque sí veo una tabla bastante extensa de codigos donde no aparece mi resolución).

Agradezco el esfuerzo que haceis por mi.

Probaré el vesa-yng y investigaré más a fondo el driver intelfb que supuestamente deberia hacerlo... pero si no lo consigo me quedaré en 1024x768.

Insisto, gracias a todos aquellos que se han esforzado pro mi en este hilo incluso sin que ellos mismos usaran resoluciones fuera de lo común

----------

## lanshor

Prueba lo siguiente:

Añade "vga=X" como parámetro al kernel cuando uses vesafb. X es un número que indica la resolución y los colores.

Para saber el valor de X hay tablas con resoluciones estándar,  pero a ti no te van a valer a mucho.. entonces:

a) Para x86 emerge "lrmi" y ejecuta "vbetest". Te dará por salida estándar algo como:

```
[352] 1680x1050 (256 color palette)

[353] 1680x1050 (5:6:5)

[354] 1680x1050 (8:8:8)

[355] 1280x800 (256 color palette)

[356] 1280x800 (5:6:5)

[357] 1280x800 (8:8:8)

[263] 1280x1024 (256 color palette)

[282] 1280x1024 (5:6:5)

[283] 1280x1024 (8:8:8)

[261] 1024x768 (256 color palette)

[279] 1024x768 (5:6:5)

[280] 1024x768 (8:8:8)

[274] 640x480 (8:8:8)

[276] 800x600 (5:6:5)

[277] 800x600 (8:8:8)

[257] 640x480 (256 color palette)

[259] 800x600 (256 color palette)

[273] 640x480 (5:6:5)
```

Que son las resoluciones que soporta tu tarjeta gráfica. El primer número es la X buscada -512, el segundo la resolución, y el tercero los bits para cada canal de color (normalmente querrás tener 24 bits = 8+8+8 ).

Entonces sólo tienes que sumarle 512 al número entre corchetes y ya tienes la X.

EJ: Para tener 1024x768 a 24bits: 280+512=792; tendrías que añadir "vga=792" ó "vga=0x318" (en hexadecimal) a los parámetros que le pasas al kernel.

b) Para amd64 emerge "hwinfo" y ejecuta

```
hwinfo --vbe | grep "Mode "
```

Te devolverá algo tal que así:

```
  Mode 0x033c: 1280x800 (+1280), 8 bits

  Mode 0x034d: 1280x800 (+3840), 24 bits

  Mode 0x035c: 1280x800 (+5120), 24 bits

  Mode 0x0305: 1024x768 (+1024), 8 bits

  Mode 0x0317: 1024x768 (+2048), 16 bits

  Mode 0x0318: 1024x768 (+4096), 24 bits

  Mode 0x0312: 640x480 (+2560), 24 bits

  Mode 0x0314: 800x600 (+1600), 16 bits

  Mode 0x0315: 800x600 (+3200), 24 bits

  Mode 0x0301: 640x480 (+640), 8 bits

  Mode 0x0303: 800x600 (+832), 8 bits

  Mode 0x0311: 640x480 (+1280), 16 bits
```

Donde el primer valor es directamente la X (no hay que sumar nada como en el caso anterior, y dada en hexadecimal), el segundo campo es la resolución y del tercero no tengo ni idea. Por supuesto el cuarto los bits de color por pixel.

Todo esto está más o menos explicado en http://gentoo-wiki.com/HOWTO_fbsplash#Can.27t_find_the_required_video_mode_for_your_resolution_.28vesafb.29.3F en el apartado del marcador (Can't find the required video mode for your resolution (vesafb)?).

A ver si te sirve.

----------

## JotaCE

hablando del tema .......

por que no encuentro las opciones en menuconfig ?

```
     ------ Device Drivers ------

     --- Graphics Support ----

     <*> VESA VGA graphics support

     <*> Vesa driver type (vesafb-tng) --->

     (video-mode 1024x768-32@70) VESA Default mode
```

----------

## sefirotsama

Nada de esto me ha funcionado, solo me queda por probar la VESA-TNG. Los codigos que me devuelve hwinfo tal y como explica lanshor no me funcionan (video mode incompatible, y a partir de ahí muestra 640x400).

Investigaré sobre VESA-TNG y sobre el resto de la resolución y si no lo consigo lo aparcaré una vez más por un tiempo.

----------

## InadSan

Hola, 

Entiendo que tienes una intel 945GM  o algo parecido.

Aqui tienes dos soluciones:

https://forums.gentoo.org/viewtopic-p-4511573.html?sid=d9362e4a6d8b6bf4c612a41eadb795eb

y 

http://gentoo-wiki.com/Making_%22broken%22_Intel_video_BIOS_play_nice

El problema es que la bios de la tarjeta no soporta esa resolucion y hay que modificar la bios antes de cambiar de resolución (como se hacia antiguamente con los drivers para X xf86-video-i810-1.x.x)

Yo solo he probado el primer metodo y no me ha funcionado, pero... tampoco le he dedicado mucho tiempo, ya que no veo que sea un tema prioritario...

----------

## kropotkin

vesa tng ya esta descontinuado al parecer, usa uvesafb

Saludos.

----------

## opotonil

Acabo de probar con el uvesafb y me funciona perfectamente el fb a 1280x800.

Simplemente segui las instrucciones de:

 *Quote:*   

> 
> 
> http://dev.gentoo.org/~spock/projects/uvesafb/
> 
> 

 

Inicialmente probe con una resolucion de 1024x768 y una vez que funciono bien comprobe las resoluciones que me admite:

```

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

```

y vi "1280x800-32" asi que la puse y perfecto.

Salu2.

----------

## sefirotsama

Interesante... estos dias que tendre (por fin) un poco de tiempo libre, me pondre a ver si lo consigo!!

Gracias por la respuesta!

----------

