Parmi la manne de nouveautés apportées par la nouvelle série de kernel, on trouve le "console frame-buffer". En jetant un oeil à la documentation du nouveau kernel, on apprend que le frame-buffer permet une résolution élevée en mode console (1024x768 - 120 colonnes par 48 lignes), l'utilisation d'un serveur X générique VBE 2.0 (toutes cartes compatibles vesa) et, le plus important..., un logo Tux au démarrage. Bien sûr, il y a un léger désavantage : l'affichage s'en trouve ralenti.
Jusqu'à présent
Les utilisateurs de la série 2.0 du kernel possédaient jusqu'alors trois modes "d'affichage" :
- Le mode texte, qui est celui auquel vous accédez lorsque vous utilisez le shell. Un certain nombre d'options permettent d'embellir ce mode en se servant de bibliothèques comme ncurse, par exemple.
- Le mode SVGA. En utilisant la bibliothèque SVGALIB, il est possible d'afficher des graphismes en mode point. L'inconvénient de ce mode est sa difficulté de configuration. En effet, il est nécessaire de paramétrer SVGALIB en fonction de sa carte graphique. Ceci est possible par l'intermédiaire d'un fichier spécifique (libvga.config), placé habituellement dans le répertoire /etc/vga. De plus, il faut savoir qu'un certain nombre de cartes ne sont pas supportées par SVGALIB. Les applications utilisant ce mode sont, le plus souvent, des jeux comme svga-koules, Doom, etc.
- Le mode X. Il s'agit tout simplement du système Xwindow. X est une manière d'afficher du graphisme, mais il apporte d'autres possibilités comme le fonctionnement en réseau et la gestion séparée d'un pointeur (souris, tablette...)
Là encore, le problème provient du support des nouvelles cartes graphiques. Le projet de développement libre Xfree86 est souvent pris de vitesse par des sociétés vendant une version propriétaire de leurs serveurs X (et bien sûr, sans les sources).
Tout le monde a pu constater cet état de fait lors de l'apparition des cartes AGP non supportées par la version 3.3.2 d'Xfree.
Frame-Buffer
Les kernels 2.2 offrent une autre approche du mode graphique : la gestion par le kernel lui-même. Le gros avantage de cette implémentation est de permettre l'utilisation d'une API générique. En utilisant le frame-buffer, le programmeur se détache complètement de la gestion du matériel. Le programme devient plus portable car cette API est commune à plusieurs architectures (Intel, Mac, RiscPC, Alpha...). En rendant la gestion graphique interne au kernel, on augmente également la sécurité sur le système. Un programme accédant directement à une ressource matérielle a toujours la possibilité de "planter" complètement le système.
Autre avantage, une carte non supportée directement par Xfree pourra être utilisée par l'intermédiaire du kernel.
Pour l'heure, la gestion du frame-buffer n'est encore qu'expérimentale. Pour l'activer, il vous faudra avant tout opter pour l'utilisation de fonctions en développement et/ou incomplètes.
Configuration et utilisation
Une fois votre kernel recompilé (si nécessaire), vous pourrez expérimenter les joies du frame-buffering : le logo au démarrage.
Pour ce faire, il est nécessaire de passer des paramètres au kernel par l'intermédiaire de LILO.
Au boot, si votre LILO n'attend pas le nom d'une image, appuyez sur la touche MAJ. Sur la ligne de commande de LILO, utilisez le mot-clé vga= en passant le paramètre ask.
Les modes utilisables par le frame-buffer ne sont pas listés. Pour une carte compatible vesa, il vous faudra respecter le tableau suivant :
couleurs 640x480 800x600 1024x768 1280x1024
256 0x301 0x303 0x305 0x307
32k 0x310 0x313 0x316 0x319
64k 0x311 0x314 0x317 0x31A
16M 0x312 0x315 0x318 0x31B
Ainsi, si vous désirez un affichage 800 par 600 en 256 couleurs, entrez 305 ou 0305. Vous vous en doutez, le mode le plus rapide est 0301. Habituellement, c'est par celui-ci que l'on commence les tests...
Si vous obtenez un message vous informant que le mode n'est pas disponible, il s'agit sans doute d'un problème BIOS. En effet, il est impératif d'avoir une compatibilité VBE 2.0 ; 1.2 est insuffisant pour le support frame-buffer.
Ainsi s'achève notre présentation du frame-buffer des kernels 2.2. Pour tous renseignements complémentaires, consultez les documentations fournies avec les sources (./linux/Documen tations/fb).