Vesafb mini-HOWTO Alex Buell, alex.buell@tahallah.demon.co.uk v0.5, 2 August 1998 _________________________________________________________________ _Ce document décrit l'utilisation du gestionnaire vesafb sous Linux pour un pc comprenant une carte graphique conforme aux spécifications VESA 2.0._ _________________________________________________________________ 1. Remerciements Merci aux personnes dont les noms suivent pour avoir aidé à l'amélioration du HOWTO vesafb. * Jeff Noxon jeff@planetfall.com * Francis Devereux f.devereux@cs.ucl.ac.uk * Andreas Ehliar ehliar@futurniture.se * Martin McCarthy marty@ehabitat.demon.co.uk * Simon Kenyon simon@koala.ie * David Ford david@kalifornia.com * Chris Black cblack@cmpteam4.unil.ch * N Becker nbecker@fred.net * Bob Tracy rct@gherkin.sa.wlk.com * Marius Hjelle marius.hjelle@roman.uib.no * Aaron Tiensivu tiensivu@pilot.msu.edu et bien sûr l'auteur du pilote: * Gerd Knorr kraxel@cs.tu-berlin.de * Geert Uytterhoeven Geert.Uytterhoeven@cs.kuleuven.ac.be * Martin Mares mj@ucw.cz * S'il y en a d'autres, qu'ils lèvent la main. :o) 2. Vesafb, quès acco ? Vesafb est un gestionnaire de mémoire vidéo sur compatible PC dédié aux cartes cartes graphiques conformes aux spécifications VESA 2.0. Son fonctionnement est lié de près aux gestionnaires de mémoire vidéo génériques du noyau. Vesafb permet le recours aux modes graphiques sur PC pour l'utilisation des consoles textes en point par point. Vesafb autorise également l'affichage d'un logo et c'est vraisemblablement ce pour quoi vous voulez vous en servir :o) On ne peut malheureusement pas utiliser vesafb avec des cartes VESA 1.2. En effet, ces cartes n'utilisent pas l'adressage linéaire. Quelqu'un écrira peut-ètre un gestionnaire de périphériques vesafb12 pour ce type de cartes, mais cela consommera de la mémoire par ailleurs précieuse pour le noyau. :o( Il existe cependant un moyen détourné d'accéder aux fonctionnalités VESA 2.0 sur une carte VESA 1.2. Peut-ètre pouvez vous charger depuis le DOS un programme de type TSR qui, utilisé conjointement avec loadlin, aidera à configurer la carte pour les modes graphiques voulus. Cela ne marchera pas toujours. Ainsi, certaines cartes de chez Cirrus Logic, telles les VLB 54xx, se retrouvent à une position en mémoire ( par exemple entre 15 et 16 Mo ) qui en interdit l'utilisation sur les systèmes munis de plus de 32 Mo de mémoire. Ce n'est pas rédhibitoire si l'on dispose d'un BIOS permettant de ne pas affecter de mémoire entre 15 et 16 Mo ( "Memory Hole" ) mais il m'a semblé comprendre que Linux n'aime pas ça. Si l'expérience vous tente, vous pouvez essayer UNIVBE ( disponible sur l'Internet ). 3. Qu'est-ce qu'un gestionnaire de mémoire graphique ? Ce gestionnaire fournit une abstraction du matériel graphique. Il reproduit le tampon mémoire de certains composants vidéo et offre aux applications l'accés au matériel via une interface bien définie. Ainsi, les logiciels n'ont plus à se préoccuper des détails de bas-niveau [ Traduit approximativement de /usr/src/linux/Documentation/fb/framebuffer.txt ] 4. Comment fais-je fonctionner le gestionnaire vesafb ? [NB : les informations qui suivent sont basées sur mon expérience concernant le noyau Linux 2.1.112 sur un P75+ muni d'une carte ATI VideoExpress avec 2Mo de mémoire vidéo. N'hésitez pas à me faire part de vos expériences particulières. ] A supposer que vous utilisiez menuconfig, vous devrez passer par les étapes suivantes : Dans le menu "Code maturity level options" : * Prompt for development and/or incomplete code/drivers [ceci peut changer dans les futurs noyaux. Ce HOWTO sera alors modifié] Dans le menu "Console drivers" : * VGA Text Console * Video Selection Support * Support for frame buffer devices (experimental) * VESA VGA Graphic console * Advanced Low Level Drivers * Choisissez les gestionnaires Mono, 2bpp, 4bpp, 8bpp, 16bpp, 24bpp et 32bpp . * VGA character/attributes support Le support des composants VGA (en mode texte) - vgafb - appartenait à la liste ci-dessus mais il en a été supprimé en raison de son obsolescence. Il disparaitra sous peu. Sélectionnez plutôt "VGA Text Console". Vérifiez bien que le support "Mac variable bpp packed pixel" n'est pas activé. [ En 2.2.111, il semblerait qu'il le soit si "Advanced Low Level Drivers" l'est ]. Assurez vous que rien n'est modularisé. [J'ai des doutes quand aux possibilités de modularisation de l'ensemble - les précisions seront les bienvenues] Recompilez le noyau, modifiez l'/etc/lilo.conf de façon à ajouter le paramètre VGA=ASK, lancez lilo. Ceci vous permettra de choisir le mode graphique que vous voulez. Redémarrez le noyau et essayez comme test d'entrer 0301 au prompt VGA. Vous devriez vous retrouver en 640x480 sur 256 couleurs avec un délicieux petit logo de pingouin. Maintenant que ça fonctionne, il vous reste à essayer les différents modes VESA ( cf ci-dessous ), à choisir celui que vous préférez et à le figer via le paramètre "VGA=toto" du lilo.conf. Pour cela, après avoir fait votre choix, cherchez sa représentation décimale dans les tables qui suivent et utilisez ce nombre. Par exemple, pour du 1280 par 1024 en 256 couleurs, vous utiliserez "VGA=775". N'oubliez pas de relancer lilo. C'est tout. Pour davantage d'informations sur le sujet, reportez vous aux HOWTO sur LILO et Loadlin. 5. De quels modes VESA puis-je me servir ? Cela dépend de votre carte graphique, en particulier de la quantité de mémoire dont elle dispose. A vous de voir quels sont les modes qui fonctionnent le mieux. La table suivante fournit les numéros des modes que vous pouvez passer à l'invite VGA ( en fait les indices se sont vus ajouter 0x200 afin de s'y retrouver plus facilement dans la table ). Couleurs | 640x480 800x600 1024x768 1280x1024 1600x1200 ---------+--------------------------------------------- 256 | 0301 0303 0305 0307 031C 32,768 | 0310 0313 0316 0319 031D 65,536 | 0311 0314 0317 031A 031E 16.8M | 0312 0315 0318 031B 031F La même chose en décimal : Couleurs | 640x480 800x600 1024x768 1280x1024 1600x1200 ---------+--------------------------------------------- 256 | 769 771 773 775 796 32,768 | 784 787 790 793 797 65,536 | 785 788 791 794 798 16.8M | 786 789 792 795 799 [L'auteur apprécierait fortement de recevoir les codes 03xx pour les modes manquants, i.e. 1152x900] 6. Existe-t-il un serveur X11 adapté à vesafb ? Oui. Si pour une raison ou une autre votre serveur habituel digère mal vesafb, vous devrez utiliser la version XF86_FBdev. Téléchargez X332servonly.tgz depuis http://wwwxfree86.org ou un de ses mirroirs, décompressez le, effectuez les modifications nécessaires dans le fichier xc/config/cf/xf86site.def et décommentez le #define relatif à XF68FBDevServer. Ne prétez pas attention à ce qui se rapporte à m68k. L'architecture PC est supportée. Compilez le tout, il y en a pour un moment. Ooommmm... Il n'y a pas encore actuellement de binaire XF86_FBdev disponible tel quel mais Debian y travaille et les versions libc5/glibc devraient sortir. Certains ont signalé que X11 n'est pas exploitable sur certaines cartes lorsque le gestionnaire vesafb est activé. Si vous vous retrouvez dans ce cas, essayez le dernier serveur XF86_FBdev pour X11. Ce gestionnaire, utilisé avec vesafb, peut permettre de faire fonctionner X11 avec certains chipsets à des résolutions qui ne seraient pas autrement supportées par quelque serveur X que ce soit ( ex. MGA G-200 ). Esperons que les problèmes de support des cartes graphiques avec X11 seront résolus par les versions à venir. 7. Vesafb peut-il être modularisé ? En ce qui concerne le 2.1.112, vesafb ne peut être compilé en tant que module. D'ailleurs, après modularisation, on ne verrait rien à l'écran jusqu'à ce que l'on effectue un modprobe sur vesafb. Il est donc surement plus sage pour l'instant de le laisser dans le noyau, des fois que le boot ne se déroule pas correctement. 8. Divers Les infos données ici sont valables pour la version 2.1.112 du noyau. Ce HOWTO sera mis à jour selon l'avancement du développement du noyau. N'hésitez pas à transmettre à l'auteur vos commentaires et approfondissements. A noter : le défilement en arrière ne fonctionne pas encore.