Frame Buffer en console/X sous Linux 2.2

E-mail Print PDF

Frame buffer: pourquoi?
Le frame buffering est une méthode qui vous permet d'utiliser une carte graphique, de façon générique, sans pour autant en posséder le driver spécifique. Vous avez deux possibilitées: le mode console seul ou le mode console et X-window. Le système utilisé est le suivant: le driver générique écrit directement dans la mémoire vidéo de la carte.

1) Kernel
Vous devez posséder une version du kernel >= 2.1.112 . Les sources se trouvent sur ftp.kernel.org . Pour sa configuration, reportez-vous à mon article précédent.

Les options du kernel:
Vous DEVEZ activer les options suivantes:

  • Code Maturity Level menu, enable  prompt for development and/or incomplete drivers.

  • Drivers menu, YES

VGA Text Console
Video Selection Support
Support for frame buffer devices
VESA VGA Graphic console
Advanced Low Level Drivers
Select Mono, 2bpp, 4bpp, 8bpp, 16bpp, 24bpp, and 32bpp packed pixel drivers
VGA character/attributes support

Ensuite recompilez-le comme expliqué dans l'article se rapportant au kernel.

2)Configuration de la console en FB
Ceci vous permet de travailler en console avec une autre résolution.

Dans le fichier /et/lilo.conf écrivez: VGA=ASK. Mettez à jour le Boot loader du MBR en exécutant "/sbin/lilo"Au prochain boot, la machine vous proposera plusieurs résolutions (le code est en octal). Par exemple: 0301 vous propose 640x480 @ 256, Et vous devriez voir un logo de pingouin au-dessus de l'écran (une icone par CPU en fait, n'est-ce-pas Manu  :-) ). Voici une table des différents modes possibles:

Une fois votre mode favori choisi, vous devez le rendre permanent en convertissant sa valeur en décimal et en la plaçant dans le fichier lilo.conf  à la place de ASK.  Par exemple, VGA=792 vous donne 1024x768 @ 16.8M colors. Réexécutez la mise à jour du MBR (/sbin/lilo)

3)Utilisation du frame buffer comme video driver de X-window
Vous DEVEZ avoir choisi un mode en décimal dans /etc/lilo.conf pour pouvoir utiliser X. ASK ne marchera pas.
Tout d'abord, vous devez créer un device /dev/fb0 de type caractère avec un  major number 29 et minor number 0 (mknod /dev/fb0 c 29 0).
Ce device sera utilisé par le driver XF68_FBDev X-Server qui écrira directement dans la mémoire vidéo. un lien symbolique de /dev/fb0 vers /dev/fb0current peut être nécessaire par compatibilité avec les anciens programmes (ln -s /dev/fb0 /dev/fb0current).Pour le multi-head (comme sur les Matrox G-400): vous devez utiliser un second buffer pour un second écran: /dev/fb1 (mknod /dev/fb1 c 29 32), etc...

Driver XF68_FBDev X-Server: Vous pouvez downloader X332servonly.tgz source code depuis ftp.xfree86.org . Vous pouvez aussi bien utiliser celui e votre distribution Linux (rpm ou gz). Installez-le et créez un lien symbolique (ln -s /usr/X11R6/bin/XF68_FBDev /usr/X11R6/bin/X). Avec RedHat ces liens se font dans /etc/X11.
XF86Config: Vous devez avoir ces lignes (en plus de votre configuration de vos périphériques d'entrée clavier-souris) dans /etc/XF86Config:

Section "Files"
RgbPath    "/usr/X11R6/lib/X11/rgb"
FontPath   "/usr/X11R6/lib/X11/fonts/misc:unscaled"
FontPath   "/usr/X11R6/lib/X11/fonts/75dpi:unscaled"
FontPath   "/usr/X11R6/lib/X11/fonts/100dpi:unscaled"
FontPath   "/usr/X11R6/lib/X11/fonts/Type1"
FontPath   "/usr/X11R6/lib/X11/fonts/Speedo"
EndSection
Section "ServerFlags"
EndSection

Section "Keyboard"
Protocol        "Standard"
XkbDisable
EndSection

Section "Pointer"
Protocol        "PS/2"
Device          "/dev/mouse"
EndSection

Section "Monitor"
Identifier      "Primary Monitor"
EndSection

Section "Device"
Identifier      "Primary Card"
EndSection

Section "Screen"
Driver          "FBDev"
Device          "Primary Card"
Monitor         "Primary Monitor"
SubSection      "Display"
Modes   "default"
EndSubSection
EndSection

Remarque: si vous avez des problèmes, lisez le fb-howto, qui se veut beaucoup plus complet que cette courte explication.

 


02/05/1999 Vincent Jamart

Last Updated ( Wednesday, 02 September 2009 23:12 )  
You are here: