Mise à jour : Debian 9.6
Lorsqu'un système dispose d'une carte graphique, différents modes d'affichage sont possibles en console. Ce document présente les trois modes d'affichage suivants
un mode texte au standard VGA
un mode graphique au standard VESA, fourni par le pilote / framebuffer "vesafb" (auparavent "simplefb")
un mode graphique "haute résolution" compatible avec la résolution optimale de l'écran, utilisant selon la carte graphique les pilotes / framebuffers inteldrmfb, radeonfb, nouveaufb (ou nvidia) disponibles dans le noyau.
Ce dernier mode est à privilégier lorsqu'il est disponible car
il permet la résolution optimum de l'écran
il est compatible avec l'affichage X-Window et offre un temps de commutation minimum entre l'affichage console et l'affichage X
La sélection du mode d'affichage s'effectue au démarrage du système en fonction des paramètres passés au noyau et des pilotes disponibles
Sommaire
La sélection du mode s'effectue lors du lancement de de linux et éventuellement de grub. Pour cela,
Modifier le fichier /etc/default/grub :
Bloquer le modesetting dans les paramètres de la ligne GRUB_CMDLINE_LINUX_DEFAULT= "ro quiet", ce qui donne selon le modèle de carte graphique (intel, radeon ou nvidia) :
GRUB_CMDLINE_LINUX_DEFAULT= "ro nomodeset i915.modeset=0 quiet" GRUB_CMDLINE_LINUX_DEFAULT= "ro nomodeset radeon.modeset=0 quiet" GRUB_CMDLINE_LINUX_DEFAULT= "ro nomodeset nouveau.modeset=0 quiet"
En cas d'échec (si le mode texte n'est pas pris en compte dans la console linux ) :
Spécifier le mode texte dans le paramètre GRUB_GFXPAYLOAD_LINUX
GRUB_GFXPAYLOAD_LINUX=text
Alternativement, passer la console grub en mode texte
GRUB_TERMINAL=console
Utiliser update-grub pour mettre à jour le fichier de configuration de grub
Redémarrer linux et ouvrir une console pour vérifier que le mode texte a bien été pris en compte.
$ sudo dmesg |grep -i console
[ 0.000000] Console: colour VGA+ 80x25
[ 0.000000] console [tty0] enabled
......
Dans le cas présent, la console est en mode 80 caractères par 25 lignes.
Vérifier que le framebuffer n'est pas disponible avec ls comme ci-dessous ou en utilisant fbset (voir plus loin)
$ ls /dev/fb*
ls: impossible d'accéder à '/dev/fb*': Aucun fichier ou dossier de ce type
Le mode graphique VESA permet de sélectionner la résolution de l'affichage parmi celles supportées par la carte.
La liste des résolutions disponibles peut-être affichée de deux façons.
dans une console ou un terminal linux, avec hwinfo
# aptitude install hwinfo
# hwinfo --framebuffer |grep "Mode "|sort
Mode 0x0300: 640x400 (+640), 8 bits
Mode 0x0301: 640x480 (+640), 8 bits
Mode 0x0303: 800x600 (+832), 8 bits
Mode 0x0305: 1024x768 (+1024), 8 bits
Mode 0x030d: 320x200 (+640), 15 bits
Mode 0x030e: 320x200 (+640), 16 bits
Mode 0x0310: 640x480 (+1280), 15 bits
Mode 0x0311: 640x480 (+1280), 16 bits
Mode 0x0313: 800x600 (+1600), 15 bits
Mode 0x0314: 800x600 (+1600), 16 bits
Mode 0x0316: 1024x768 (+2048), 15 bits
Mode 0x0317: 1024x768 (+2048), 16 bits
Mode 0x0320: 320x200 (+1280), 24 bits
Mode 0x0321: 640x480 (+2560), 24 bits
Mode 0x0322: 800x600 (+3200), 24 bits
Mode 0x0323: 1024x768 (+4096), 24 bits
Mode 0x0333: 720x400 (+768), 8 bits
Mode 0x0335: 720x400 (+1472), 16 bits
Mode 0x0336: 720x400 (+2944), 24 bits
Mode 0x0393: 320x240 (+320), 8 bits
Mode 0x0395: 320x240 (+640), 16 bits
Mode 0x0396: 320x240 (+1280), 24 bits
Mode 0x03b3: 512x384 (+512), 8 bits
Mode 0x03b5: 512x384 (+1024), 16 bits
Mode 0x03b6: 512x384 (+2048), 24 bits
Mode 0x03c3: 640x350 (+640), 8 bits
Mode 0x03c5: 640x350 (+1280), 16 bits
Mode 0x03c6: 640x350 (+2560), 24 bits
dans une "console" grub, avec vbeinfo. Lorsque le menu grub s'affiche,
taper c (console ou command) pour accéder à la console grub, puis
set pager=1 pour éviter le défilement automatique des lignes
puis vbeinfo, pour afficher toutes les résolutions supportées. Une étoile indique la ligne correspondant à la résolution courante :
.....
* 0x142 640 x 480 x 32 (2560) Couleur directe, masque : 8/8/8/8
.....
La configuration peut être effectuée
Modifier le fichier /etc/default/grub :
ajouter la ligne "GRUB_GFXPAYLOAD_LINUX=ma_résolution", en remplaçant ma_résolution par la valeur choisie plus haut, par exemple 800x600
inhiber le modesetting, en ajoutant à la suite de "GRUB_CMDLINE_LINUX_DEFAULT= ro quiet", en fonction de la carte graphique,
nomodeset i915.modeset=0
ou nomodeset radeon.modeset=0
ou nomodeset nouveau.modeset=0
puis utiliser update-grub pour mettre à jour le fichier de configuration grub.cfg
Lorsque grub affiche le menu au démarrage du système, éditer l'entrée de menu correspondant au système linux à lancer
ajouter la ligne set gfxpayload=ma_résolution, en remplaçant ma_résolution par la résolution choisie précédemment
inhiber le modesetting, en ajoutant à la fin de la ligne qui débute par linuz, en fonction de la carte graphique, nomodeset i915.modeset=0 ou nomodeset radeon.modeset=0 ou nomodeset nouveau.modeset=0
Redémarrer linux pour vérifier les caractéristiques du mode d'affichage
Le framebuffer fb0 VESA VGA a été créé et la résolution texte est de 128x48 colonnes x lignes
$ sudo dmesg |grep "frame buffer"
[ 0.961302] Console: switching to colour frame buffer device 128x48
[ 1.003585] fb0: VESA VGA frame buffer device
Le pilote de framebuffer a pour nom vesafb et la résolution graphique est de 1024x768X32
$ sudo dmesg |grep vesafb
[ 0.919201] vesafb: mode is 1024x768x32, linelength=4096, pages=0
D'autres informations peuvent être également obtenues en installant fbset
$ sudo aptitude install fbset
$ sudo fbset -i |grep -E "mode |Frame |Name"
mode "1024x768"
Frame buffer device information:
Name : VESA VGA
Les pilotes libres i915, radeon et nouveau des cartes graphiques intel, radeon et nvidia sont présents dans le noyau. Sous réserve de ne pas forcer le mode texte ou le mode graphique vga comme indiqués ci-dessus, le mode graphique haute résolution KMS s'installe automatiquement.
On peut vérifier
avec dmesg, la création du framebuffer, le nom du pilote / framebuffer (nouveaufb) et la résolution en caractères par lignes, dans le cas présent 50 lignes de 160 caractères
$ sudo dmesg |grep "frame buffer"
[ 14.931608] Console: switching to colour frame buffer device 160x50
[ 14.933115] nouveau 0000:01:00.0: fb0: nouveaufb frame buffer device
avec fbset, la résolution graphique en nombre de pixels (ici 1280x800), le framebuffer (ici nouveaufb). Selon la carte graphique (radeon, intel ou nvidia), le framebuffer a pour nom radeondrmfb, inteldrmfb, ou nouveaufb.
$ fbset -i |grep -E "mode |Frame |Name"
mode "1280x800"
Frame buffer device information:
Name : nouveaufb
La résolution graphique dans ce mode (ici 1280x800)
est égale à celle de l'écran (on peut également utiliser hwinfo --monitor)
$ xdpyinfo |grep dimensions
dimensions: 1280x800 pixels (338x211 millimeters)
est supérieure à la résolution maximale supportée par le mode VESA de la carte (1024x768)
# hwinfo --framebuffer |grep "Mode "|sort
Mode 0x0300: 640x400 (+640), 8 bits
Mode 0x0301: 640x480 (+640), 8 bits
Mode 0x0303: 800x600 (+800), 8 bits
Mode 0x0305: 1024x768 (+1024), 8 bits
Mode 0x030e: 320x200 (+640), 16 bits
Mode 0x030f: 320x200 (+1280), 24 bits
Mode 0x0311: 640x480 (+1280), 16 bits
Mode 0x0312: 640x480 (+2560), 24 bits
Mode 0x0314: 800x600 (+1600), 16 bits
Mode 0x0315: 800x600 (+3200), 24 bits
Mode 0x0317: 1024x768 (+2048), 16 bits
Mode 0x0318: 1024x768 (+4096), 24 bits
Mode 0x0330: 320x200 (+320), 8 bits
Mode 0x0331: 320x400 (+320), 8 bits
Mode 0x0332: 320x400 (+640), 16 bits
Mode 0x0333: 320x400 (+1280), 24 bits
Mode 0x0334: 320x240 (+320), 8 bits
Mode 0x0335: 320x240 (+640), 16 bits
Mode 0x0336: 320x240 (+1280), 24 bits
Mode 0x033d: 640x400 (+1280), 16 bits
Mode 0x033e: 640x400 (+2560), 24 bits