Sobre el framebuffer
[ Sistemas operativos / Linux ]



Tengo algunas preguntas sobre el framebuffer de Linux (fbdev). En primer lugar quisiera saber cómo se puede hacer capturas de la consola cuando se usa el framebuffer. También me gustaría saber si se puede cambiar el dibujo que sale durante el arranque: ¿de dónde lo lee el kernel? ¿Es posible utilizar el framebuffer con un PC antiguo que trae una S3 Trio 64?
Juan Riaño Pérez



Para hacer capturas del framebuffer que luego se reproduzcan en el propio framebuffer no hace falta ninguna utilidad especial. Bastaría con utilizar la orden de Unix dd para realizar un volcado del dispositivo /dev/fb a un fichero y luego hacer la operación inversa para verlo.

Suponemos sin embargo que lo que quieres hacer es realizar un volcado que se pueda convertir a un formato estándar como tiff o jpeg. Para ello puedes utilizar FBShot, disponible en www.copyleft.de/pub/author/sbeyer/.

Respecto a si se puede cambiar la imagen de Tux (el pingüino de Linux) por la que tu quieras, la respuesta es afirmativa, pero necesitarás recompilar el kernel. El motivo es que no está en un fichero que se lee al arrancar sino en un mapa de bits codificado en un fichero de cabecera, en concreto en include/linux/linux_logo.h. Este mapa de bits tiene un formato peculiar, al estar separados los tres colores básicos, por lo que lo mejor es recurrir a una pequeña utilidad para generarlo. Se trata de fblogo y está presente en http://freshmeat.net/projects/fblogo/homepage/.

La imagen deberá estar en formato tiff y con una profundidad de color de 8 bits por pixels. Si no es el caso, siempre podemos utilizar la herramienta Convert presente en Image Magick para pasarla a este formato. Si la imagen es de distinto tamaño que la de Tux (80x80 pixels), también habrá que modificar el fichero fbcon.c para indicar la nueva dimensión. En concreto hay que buscar LOGO_H y LOGO_W. El fichero está en el directorio drivers/video de las fuentes del kernel. Por cierto, hay que ser prudente con el tamaño de la imagen, dado que ocupará memoria del kernel.

Respecto a tu última pregunta, el framebuffer VESA requiere la versión 2.0 del estándar, mientras que la S3 Trio64 implementa la 1.2. Existe un parche no oficial para el kernel 2.2 que es posible no funcione con las últimas versiones. Lo puedes encontrar en www.linux-fbdev.org. El fichero del kernel oficial en que aparece Trio64 no se refiere a las S3 para Intel sino que son tarjetas para otra arquitectura.

Otra opción es arrancar desde MS-DOS con loadlin y antes ejecutar un programa residente que actualiza de VESA 1.2 a VESA 2.0. Uno de estos programas es S3VBE y es freeware. El otro es Display Doctor, es shareware y sirve para más tarjetas aparte de las S3. Los puedes encontrar en www.vobis.de/bbs/firmen/diamond/hotline/files/.






Anterior         Siguiente         





© 2002 VNU Business Publications España. Queda terminantemente prohibida su reproducción total o parcial por cualquier medio sin el permiso explicito y por escrito del propietario del copyright.