# [HOWTO] FrameBuffer con Decorado - sources >= 2.6.23 (pend.)

## AnimAlf

Cómo decorar nuestro FrameBuffer

Este tema va a tratar sobre la decoración de nuestra terminal de texto. Vamos a decorar las vistas de nuestra pantalla cuando ésta sólo debería mostrar caracteres. La terminal (así la llamaré), como la conocida /dev/ttyX, si eres desconocedor, puedes familiarízarte con ella, por ejemplo localizandola. Generalmente se establecen 6 terminales en el sistema. Para ello, lanza desde una consola:

~ # echo Hola terminal 2 >> /dev/tty2

ahora localiza la salida del echo. La encontrarás pulsando Ctrl+Alt+F2, para regresar luego a las X pulsa Alt+F7

Introducción

La intención de este tema es decorar la terminal a la que le has enviado el mensaje anterior. Estableceremos tambien una zona de la pantalla para escribir nuestras ordenes y mover el ratón. Observalo en esta imagen.

Para los ejemplos utilizaré una estructura de disco como la empleada en el handbock:

estructura de discos *Quote:*   

> (hd0,0) => hda1 => /boot
> 
> (hd0,2) => hda3 => / *Quote:*   Utilizaré rutas exactas en grub para asi comprender bién sus opciones 

 

 *Quote:*   

> Este doc pretende ser una guia completa de como realizarlo, en todos sus modos, de momento está verde.
> 
> Para aquellos que desconozcan que se quiere conseguir, mejor unas capturas:
> 
> Iniciando el kernel
> ...

 

Desde la versión del kenel 2.6.23, los parches para el driver uvesafb vienen incluidos en el kernel, és el encargado de poder establecer una zona rectangular de la pantalla como zona de trabajo (establece la zona de movimiento del mouse y flujo de caracteres) y permite mostrar una imagen de fondo. (ejemplo)

Driver Framebuffer

Son los drivers del kernel que permitirán a las aplicaciones acceder y controlar los gráficos en pantalla (antes esta pantalla era conocida como de texto, donde las medidas se basan el ancho de un carater - si hay algún purista que corrija la forma coloquial de describirla). Tenemos que utilizar uno de los siguientes drivers para poder llevarlo a cabo.

vesafb - el driver genérico válido para la mayoria de tarjetas. Algunas desventajas son que no provee de aceleració gráfica, y tiene un modo torpe para indicar el modo de vídeo (vga=0x317).

uvesafb - el nuevo driver (sin aceleración) genérico (''>=2.6.23''), soporta características adicionales como las resoluciones habituales. A diferencia de los otros drivers, necesita un servicio llamado v86d para funcionar. (localizado en el paquete sys-apps/v86d)

vesafb-tng - un driver obsoleto, predecesor de uvesafb. Sólo funciona en x86 y no forma parte oficial de los kernels,  aunque estaba incluido en los gentoo-sources anteriores a ''2.6.23''.

rivafb - Driver con aceleración para viejos chipsets Nvidia, ''no'' compatible con los drivers binarios nVidia para las X.

nVidiafb - Driver con aceleración para nuevos chipsets Nvidia, ''no''  compatible con los drivers binarios nVidia para las X.

radeonfb - Driver con aceleración para los Chipsets ATI

intelfb - Driver con aceleración para los Chipsets Intel.Este tema contempla los drivers vesafb y uvesafb, todas las opciones de carga del driver vesafb están en uvesafb podemos verlo en esta tabla:

```

----------

## aj2r

 *AnimAlf wrote:*   

> 
> 
> Cambiar el mensaje Initializing the kernel... es un poco complicado, ya que de momento, no se contempla esta posibilidad, pero podemos extraer el archivo de cabecera splash.h del paquete /usr/portage/distfiles/splashutils-lite-x.x.x.X.tar.bz2, editarlo y sustituir la cadena "Initializing the kernel..." por la que queramos, por ejemplo "Inicializando el kernel ..."
> 
> 

 

En este POST viene como hacerlo fácilmente, concretamente para cambiar ese mensaje basta con pasar al kernel el parámetro BOOT_MSG="Mensaje que se desee"

 *AnimAlf wrote:*   

> 
> 
> Lo normal sería utilizar la resolucíon y colores dentro de las opciones del driver, pero, personalmente, no hay forma de que me funcione si lo indico así:
> 
> Código:
> ...

 

Sigo viendo que en tu configuración usas vesafb en lugar de uvesafb, por lo que supongo que usas vesafb-tng y no uvesafb y es por eso que necesitas el parámetro vga y no te vale ponerle al driver la resolución. Recuerda que cuando pongas uvesafb necesitarás haber indicado CONFIG_INITRAMFS_SOURCE="/usr/share/v86d/initramfs" como ya te comenté en el otro post.

----------

## AnimAlf

 *aj2r wrote:*   

> basta con pasar al kernel el parámetro BOOT_MSG="Mensaje que se desee"

 

Estupendo!!   :Smile:   lo he rectificado

 *aj2r wrote:*   

> Sigo viendo que en tu configuración usas vesafb en lugar de uvesafb, por lo que supongo que usas vesafb-tng

 

De eso se trata, ya no hace falta más que vesafb. No hace falta parchear nada. Creo que uvesafb es vesafb. ¿podeis confirmarmelo? la modificación es por ello, sólo bajar los fuentes del kernel, compilación y configuración. ¿es así?

Tnks

----------

## Coghan

Algo que podrías añadir es localizar las resoluciones uvesa que nos detecta para nuestro monitor y poder utilizar la más adecuada, muy interesante para los monitores panorámicos. 

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

----------

## Inodoro_Pereyra

Gracias AnimAlf por tomarte toda la molestia... Este es uno de esos hilos que se las trae...  :Very Happy: 

Salud!

----------

## AnimAlf

Tengo unas dudas sobre lo que me comentais

parece que sys-apps/v86d es necesario para uvesafb. Y definir esta ruta en la configuración del kernel:CONFIG_INITRAMFS_SOURCE="/usr/share/v86d/initramfs".

No lo tengo instalado, ni la ruta especificada y todo funciona bien. Para probar lo he instalado y no noto diferencia ni se añaden nuevas funcionalidades al driver. Lo he quitado y todo funciona igual.

Me pregunto si ésto sólo es necesario para los drives uvesafb o quizás para el arranque desde un RamDisk

Éste, el uvesafb no me aparece. Parece que todas sus funcionalidades tendrían que existir también en vesafb, pero ahora que lo comentais no aparece

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

detro de mi ruta:

/sys/bus/platform/drivers/uvesafb

Entonces. ¿Me dejo algo o no es vesafb uvesafb?

todo funciona correctamente con vesafb, pero no conozco mucho. Como dicen (o me parece entender) que todo está incluido dentro de gentoo-sources, los que utilizais uvesafb, ¿es por que habeis parcheado el kernel?

Supongo que se me iran aclarando dudas, cuando entre más a fondo en el RamDisk.

thns

----------

## opotonil

No, estoy usando "gentoo-sources" (2.6.25-r7) con "uvesafb" sin haber aplicado ningun parche (uvesafb no es vesafb):

```

<*> Support for frame buffer devices  --->

    ...

    <*>   Userspace VESA VGA graphics support

    [ ]   VESA VGA graphics support

    ...

```

Esto creo que lo incluye automaticamente al marcar "uvesafb" (o era al reves y hay que marcarlo para que aparezca uvesafb):

```

Device Drivers  --->

    <*> Connector - unified userspace <-> kernelspace linker  --->

        [*]   Report process events to userspace

```

En cuanto al "initramfs":

```

General setup  --->

    ...

    [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support

    (/usr/share/v86d/initramfs) Initramfs source file(s)

    ...

```

grub.conf (sin splash)

```

...

kernel /boot/vmlinuz root=/dev/sda3 video=uvesafb:1280x800-32,mtrr:3,ywrap

...

```

Salu2

PD: Gracias por el manual.Last edited by opotonil on Sat Aug 23, 2008 11:00 am; edited 4 times in total

----------

## Coghan

Para usar uvesa hay que seguir este procedimiento:

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

----------

## AnimAlf

¡¡¡Guau!!! gracias

Opss, me he quedado sin dudas ... ¡jolines! ... bueno ya apareceran más X'D cuando quiera saber de las opciones del grub ...

He modificado el documento explicando un poco esto de los drivers. (no hay nada como tenerlos en el sistema X'D)

News vemos

----------

## aj2r

 *AnimAlf wrote:*   

> 
> 
> la config de grub para el kernel
> 
> ```
> ...

 

Aquí creo que se te ha perdido una e  quit --> quiet  :Laughing: 

----------

## AnimAlf

He visto en una configuración de un grub para otra distribución que esta opción quiet está fuera de las opciones del kernel, quiero decir que no hace falta que esté en la misma línea. Me parecio ver un quiet que era utilizado para el frameBuffer para algo así como no ver parpadeos en modo silent creo.

¿Hay dos quiet? (hay dos root, no sería de extraño) sabeis algo de ello

thns

----------

## piponazo

Gracias por este pedazo de guía Animalf, hacía tiempo que quería hacer esto de decorar las terminales y nunca me había puesto por falta de tiempo. 

Esto que comentaba Coghan me ha salvado:

 *Coghan wrote:*   

> Algo que podrías añadir es localizar las resoluciones uvesa que nos detecta para nuestro monitor y poder utilizar la más adecuada, muy interesante para los monitores panorámicos. 
> 
> ```
> cat /sys/bus/platform/drivers/uvesafb/uvesafb.0/vbe_modes
> ```
> ...

 

Dispongo de un monitor panorámico de 24" y estaba intentando configurar el driver con una resolución de 1024x768 y me aparecían mensajes de error al cargar el kernel (aunque finalmente lo cargaba correctamente). Al examinar este archivo he descubierto que la resolución máxima que soporta mi monitor para las terminales es de 800x600, lo configuré así en el grub y generé una nueva imagen initrd y ya va todo perfecto siguiendo los pasos de este post  :Wink: .

Solo hay una cosa que de momento no funciona. En la inicialización del kernel aparece el fondo en negro con un pingüino en la esquina superior izquierda y aparecen algunos mensajes de los que suelta el kernel (muy pocos, menos de 10), pero no aparece la bonita imagen que muestras tu en el link "Iniciando el kernel". ¿Sabéis que me he podido dejar atrás?

----------

## Coghan

 *piponazo wrote:*   

> Dispongo de un monitor panorámico de 24" y estaba intentando configurar el driver con una resolución de 1024x768 y me aparecían mensajes de error al cargar el kernel (aunque finalmente lo cargaba correctamente). Al examinar este archivo he descubierto que la resolución máxima que soporta mi monitor para las terminales es de 800x600, lo configuré así en el grub y generé una nueva imagen initrd y ya va todo perfecto siguiendo los pasos de este post .

 

Que extraño, solo 800x600, yo tengo un 22" y me permite hasta 1680x1050-32, 0x0169.  

 *Quote:*   

> Solo hay una cosa que de momento no funciona. En la inicialización del kernel aparece el fondo en negro con un pingüino en la esquina superior izquierda y aparecen algunos mensajes de los que suelta el kernel (muy pocos, menos de 10), pero no aparece la bonita imagen que muestras tu en el link "Iniciando el kernel". ¿Sabéis que me he podido dejar atrás?

 

Debes quitar el logo del kernel para quitar a Tux:

```
Device Drivers  ---> 

    Graphics support  ---> 

        [ ] Bootup logo  --->
```

----------

## AnimAlf

Hola,

quiero ampliar el tema añadiendo la creación de un initrd, pero ... estoy aprendiendo a crearlos con el mkinitrd. Aunque los primeros intentos han sido un desastre. Me crea la imagen, pero no es operativa. Ejecuto:

~ # mkinitrd archivo.a.crear VersionKernel

Pero la imagen la crea sin incluir los módulos (al igual que sin el archivo linuxrc que no se donde localizarlo). Miraré de informarme mejor. (veo que por lo general en la compilación manual no se contempla la creación de un RamDisk, si en cambio desde genkernel copiar los modulos en /lib/modules/$(uname -r) sin crear el ramdisk creo que tiene que ver con la opción --no-initrdmodules)

Al igual que el tema del quiet y quit, ahora ya no se cual es, si el uno o el otro. En la documentación sólo encuentro un quit que es el utilizado en la shell del grub. Los he cambiado a quiet como comenta @aj2r dentro de las opciones de kernel. Pero no lo tengo claro. Sólo he encontrado la lista de opciones para video, que aparecen el la doc del kernel, pero para el resto de opciones como splash, video de la opciónes de kernel o las opciones del grub en general, pero no se donde localizarlas (quiero averiguarlo rapidamente, y creo que consigo lo contrario ir más despacio).

He actualizado las opciones del kenel desactivando el logo como inidica @Coghan.

Los modos que muestra /sys/bus/platform/drivers/uvesafb/uvesafb.0/vbe_modes, es sorprendente, ya que con un TFT de 17'' me muestra muchas resoluciones, hasta 1856x1392-32 (que no me atrevo a probar O:-))

--- editado 1 ---

Ya sabia que ese quiet lo havia visto en algún lado, también están ahí el resto de opciones para splash (splash=...)

Precisamente el quiet, creo que dice ahí que es para que no se muestren esos pequeños mensajes iniciales (y está fuera de la opcion kernel), si se siguen viendo letras al iniciar, quiet al menu.lst ;-)

animalf@keeper ~ $ head /usr/share/doc/splashutils/kernel_parameters 

To make sure that the silent mode works correctly with this version of

splashutils, it is required that you add either

'quiet CONSOLE=/dev/tty1' or 'console=tty1' to your kernel command line.

'quiet' will prevent most of the initial kernel messages from being displayed.

'CONSOLE=/dev/tty1' will redirect all initscript messages to tty1.

'console=tty1' will redirect both kernel and initscript messages to tty1.

--- /editado 1 ---

--- editado 2 ---

he visto que aquello que optenemos con /sys/bus/platform/drivers/uvesafb/uvesafb.0/vbe_modes también se optiene con:

~ $ sudo hwinfo --vbe

--- /editado 2 ---

----------

## aj2r

 *AnimAlf wrote:*   

> 
> 
> Establecer los mensajes
> 
> Para cambiar los mensajes que aparecen y adaptarlos a nuestro idioma, lo haremos a través del archivo /etc/conf.d/splash y a mano, descomentando las variables y estableciendo el valor que deseemos:
> ...

 

En las versiones más nuevas, no se debe escapar (usar "\") la variable progress:

```
SPLASH_BOOT_MESSAGE="Arrancando el sistema ($progress%)"

SPLASH_REBOOT_MESSAGE="Reiniciando el sistema ($progress%)"

SPLASH_SHUTDOWN_MESSAGE="Cerrando el sistema ($progress%)"
```

----------

## ZenPiPerS

hola,

Estoy siguiendo este post para decorar mi frambufer. Soy usuario de genkernel y con la versión 3.4.10 no existe la opción initrd.

```
genkernel --splash=gentoo --splash-res=1024x768 initrd
```

Supongo que valdrá con pasarle el parámetro all y luego agregar en el grub la imagen initrd como si se generara sola con initrd no?

Un Saludo!

----------

## pelelademadera

proba algo como esto:

```
genkernel --dmraid --install --disklabel --kernel-config=/home/pelo/configkernel --splash=GoGentooGo --makeopts=-j5 all --bootloader=grub
```

deberia funcionarte

saca dmraid si no lo usas, y el config editalo.

hace rato que no lo uso, xq desarme el raid y no necesito mas el genkernel, pero deberia andar asi.

el -j5 tambien usa el que uses.

----------

