Nous allons voir dans cette partie, comment installer et configurer le système X Window. La lecture du chapitre 5 est conseillée.
<note importante>Vous devez être le super utilisateur root.</note>
<html><font color=“#cc0000;”><strong>La partie configuration n'est pas spécifique à FreeBSD, la méthode fonctionne également sous Linux.</strong></font></html>
Si vous connaissez votre carte graphique, et que vous avez du temps, vous pouvez installer les composants que vous avez réellement besoin. Sinon, on peut passer par le méta paquet (il va se charger d'installer tous les éléments indispensables).
Si vous passez par les sources :
cd /usr/ports/x11/xorg make install clean
Personnellement, je préfère passer par les binaires, donc :
pkg_add -r xorg rehash
<note tuyau>Avec l'utilitaire pkg_add
, vous pouvez choisir un miroir différent de celui par défaut (Cf. la section shell, et la configuration de la variable PACKAGESITE
).</note>
Avec les dernières versions de X.org, ce fichier n'est plus vraiment indispensable, il détecte la plupart des périphériques (écran, carte graphique, clavier, souris, etc). Malgrès tout, il faut faire des ajustements.
<html><font color=“#cc0000;”><strong>Ce n'est pas la peine de le récupérer à partir d'une session d'un live CD, car il est fort probable que certains modules sont pour l'instant pas encore pris en charge par FreeBSD.</strong></font></html>
Grâce à l'utilitaire Xorg
, on va générer le fameux fichier xorg.conf
:
Xorg -configure
Vous devriez obtenir un fichier xorg.conf.new
dans le répertoire où vous êtes actuellement.
On va préciser, que l'on souhaite utiliser un clavier de type français, avec le support des accents. Dans la section “InputDevice” correspondant au clavier, rajoutez ces options :
. . . Section "InputDevice" Identifier "Keyboard0" Driver "kbd" Option "XkbRules" "xorg" Option "XkbModel" "pc105" Option "XkbLayout" "fr" EndSection . . .
Ensuite dans la section “Screen”, en dessous de la ligne Monitor, rajoutez DefaultDepth 24
et dans les sections Display
, précisez la résolution d'affichage Modes “1024×768” “800×60”
.
<note tuyau>Par la suite on va ajuster la résolution d'affichage, mais pour l'instant privilégiez un affichage « standard ».</note>
Section "Screen" Identifier "Screen0" Device "Card0" Monitor "Monitor0" DefaultDepth 24 SubSection "Display" Viewport 0 0 Depth 1 Modes "1024x768" "800x600" EndSubSection SubSection "Display" Viewport 0 0 Depth 4 Modes "1024x768" "800x600" EndSubSection SubSection "Display" Viewport 0 0 Depth 8 Modes "1024x768" "800x600" EndSubSection SubSection "Display" Viewport 0 0 Depth 15 Modes "1024x768" "800x600" EndSubSection SubSection "Display" Viewport 0 0 Depth 16 Modes "1024x768" "800x600" EndSubSection SubSection "Display" Viewport 0 0 Depth 24 Modes "1024x768" "800x600" EndSubSection EndSection
On peut déjà tester la configuration, en tapant ceci :
Xorg -config xorg.conf.new
Si vous obtenez un fond, qui ressemble à une « grille » de couleur gris - blanc, et que le curseur de votre souris bouge, c'est que la configuration semble correcte.
C'est extrêment rare de démarrer une session X, avec l'utilisateur root, c'est pourquoi, nous allons mettre en place, un gestionnaire de bureaux assez rudimentaire, twm (cela nous évitera de passer par cet utilisateur).
Tout d'abord, nous allons chercher le fichier xinitrc
.
find /usr/local -type f -name '*xinitrc' -print
Vous devriez obtenir cette ligne :
/usr/local/lib/X11/xinit/xinitrc
On copie ce fichier, en le renommant dans le dossier du super-utilisateur.
pwd /root cp /usr/local/lib/X11/xinit/xinitrc ~/.xinitrc
Il ressemble à ça :
!/bin/sh # $Xorg: xinitrc.cpp,v 1.3 2000/08/17 19:54:30 cpqbld Exp $ userresources=$HOME/.Xresources usermodmap=$HOME/.Xmodmap sysresources=/usr/local/lib/X11/xinit/.Xresources sysmodmap=/usr/local/lib/X11/xinit/.Xmodmap # merge in defaults and keymaps if [ -f $sysresources ]; then xrdb -merge $sysresources fi if [ -f $sysmodmap ]; then xmodmap $sysmodmap fi if [ -f $userresources ]; then xrdb -merge $userresources fi if [ -f $usermodmap ]; then xmodmap $sysmodmap fi if [ -f $userresources ]; then xrdb -merge $userresources fi if [ -f $usermodmap ]; then xmodmap $usermodmap fi # start some nice programs twm & xclock -geometry 50x50-1+1 & xterm -geometry 80x50+494+51 & xterm -geometry 80x20+494-0 & exec xterm -geometry 80x66+0+0 -name login
Généralement, je modifie les dernières lignes
. . . # start some nice programs twm & xclock -geometry 50x50-1+1 & xterm & exec xterm -name login
Si vous possédez un fichier .Xresources
et/ou .Xmodmap
(pour la gestion des touches multimédia), vous pouvez les récupérer.
Voici par exemple le mien (.Xresources
):
!Xterm fond blanc xterm*background: #ffffff xterm*visualBell: false xterm*cursorBlink: false xterm*cursorColor: #ffd700 xterm*foreground: #333333 xterm*highlightSelection: true xterm*font: -*-fixed-*-*-*-*-*-*-*-*-*-*-iso8859-* xterm*scrollBar: false xterm*colorMode: on !Emacs emacs*font: -*-fixed-medium-r-normal-*-14-*-*-*-*-*-iso8859-15
<note tuyau>Vous pouvez en faire une copie, pour un autre utilisateur
cp ~/.Xresources /usr/share/skel/dot.Xresources
</note>
On dispose désormais d'un fichier .xinitrc
(et éventuellement .Xresources
, .Xmodmap
), selon certains gestionnaires de bureaux, le fichier .xinitrc
n'est pas reconnu, pour pallier à ce problème, on va créer un fichier .xsession
.
Deux méthodes :
.xinitrc
, l'inconvénient, si on modifie l'un des fichiers, il faudra reporter les modifications dans l'autre..xsession
est un lien symbolique de .xinitrc
, l'avantage, les modifications sont prises en compte immédiatement.ln -s ~/.xinitrc ~/.xsession
Pensez à créer un fichier .xserverrc
contenant ceci :
exec X :0 -nolisten tcp
<note tuyau>Faites une copie, pour un prochain utilisateur,
cp ~/.xserverrc /usr/share/skel/dot.xserverrc
Pas la peine de faire une copie du .xinitrc
, on n'est pas maso non plus </note>
Si vous comptez modifier l'apparence du gestionnaire twm (vert par défaut), ou rajouter des items dans le menu, il vous faut le fichier .twmrc
.
find /usr/local -type f -name '*twmrc' -print /usr/local/share/X11/twm/system.twmrc cp /usr/local/share/X11/twm/system.twmrc ~/.twmrc
On peut maintenant lancer la fameuse commande startx
. Si vous obtenez une horloge et des consoles, vous avez en face de vous twm.
(Cliquez pour zoomer)
Le paramètre ModeLine dans le fichier xorg.conf
permet d'affiner l'affichage, on peut obtenir ces informations à partir du fichier /var/log/Xorg.0.log
. La première fois, il n'est pas évident de trouver les bonnes informations, donc, je vais vous proposer une méthode alternative. Il faut pour cela, être sous X, d'où l'intérêt d'avoir choisit twm, qui nécessite peu de ressources.
Dans une des consoles ouvertes (évitez celle, qui s'appelle login), tapez la commande xrandr
, vous devriez avoir quelque chose qui ressemble à ça (modulo la résolution de votre écran) :
xrandr Screen 0: minimum 320 x 200, current 1440 x 900, maximum 1440 x 1440 DVI-1 disconnected (normal left inverted right x axis y axis) DVI-0 connected 1440x900+0+0 (normal left inverted right x axis y axis) 408mm x 255mm 1440x900 59.9*+ 75.0 1400x1050 74.9 1280x1024 75.0 59.9 1280x960 59.9 1152x864 75.0 74.8 1280x720 59.9 1024x768 75.1 70.1 65.7 60.0 832x624 74.6 800x600 72.2 75.0 60.3 56.2 640x480 75.0 72.8 66.7 60.0 720x400 70.1
La ligne Screen …
nous indique les résolutions possibles, à vous de choisir celle qui vous convient (généralement on choisit le maximum). Puis on va utiliser l'utilitaire cvt
, dans mon cas :
cvt 1440 900 # 1440x900 59.89 Hz (CVT 1.30MA) hsync: 55.93 kHz; pclk: 106.50 MHz Modeline "1440x900_60.00" 106.50 1440 1528 1672 1904 900 903 909 934 -hsync +vsync
On obtient ainsi une ModeLine sans trop d'effort.
<note tuyau>Il existe un autre utilitaire gtf
, qui fait la même chose que cvt
, mais il faut en plus, lui donner le taux de rafraichissement de votre écran (Cf. Annexe).</note>
<note bloquante>Si votre carte graphique n'est pas reconnue, généralement c'est mentionné par vesa
(driver générique), vous ne pourrez pas aller au delà de 1024×768.</note>
Dans la section “Monitor” du fichier xorg.conf.new, rajoutez les deux lignes, que vous avez obtenu avec cvt
(ou gtf
). De plus dans la section “Screen”, changez la valeur des modes par celle située après ModeLine
.
Dans mon cas, voici ce que ça donne :
. . . Section "Monitor" #DisplaySize 370 230 # mm Identifier "Monitor0" VendorName "HSD" ModelName "Hanns.G HW173" ### Comment all HorizSync and VertRefresh values to use DDC: HorizSync 24.0 - 71.0 VertRefresh 55.0 - 75.0 # 1440x900 59.89 Hz (CVT 1.30MA) hsync: 55.93 kHz; pclk: 106.50 MHz Modeline "1440x900_60.00" 106.50 1440 1528 1672 1904 900 903 909 934 -hsync +vsync Option "DPMS" EndSection . . . Section "Screen" Identifier "Screen0" Device "Card0" Monitor "Monitor0" DefaultDepth 24 SubSection "Display" Viewport 0 0 Depth 1 Modes "1440x900_60.00" "1280x1024" "1024x768" "800x600" EndSubSection SubSection "Display" Viewport 0 0 Depth 4 Modes "1440x900_60.00" "1280x1024" "1024x768" "800x600" EndSubSection SubSection "Display" Viewport 0 0 Depth 8 Modes "1440x900_60.00" "1280x1024" "1024x768" "800x600" EndSubSection SubSection "Display" Viewport 0 0 Depth 15 Modes "1440x900_60.00" "1280x1024" "1024x768" "800x600" EndSubSection SubSection "Display" Viewport 0 0 Depth 16 Modes "1440x900_60.00" "1280x1024" "1024x768" "800x600" EndSubSection SubSection "Display" Viewport 0 0 Depth 24 Modes "1440x900_60.00" "1280x1024" "1024x768" "800x600" EndSubSection EndSection
Il ne reste plus qu'à copier le fichier xorg.conf.new
au bon endroit :
cp ~/xorg.conf.new /etc/X11/xorg.conf
Trouver les valeurs du “ModeLine” de manière différente.
Si on reprend les valeurs données par xrandr
xrandr Screen 0: minimum 320 x 200, current 1440 x 900, maximum 1440 x 1440 DVI-1 disconnected (normal left inverted right x axis y axis) DVI-0 connected 1440x900+0+0 (normal left inverted right x axis y axis) 408mm x 255mm 1440x900 59.9*+ 75.0 1400x1050 74.9 1280x1024 75.0 59.9 1280x960 59.9 1152x864 75.0 74.8 1280x720 59.9 1024x768 75.1 70.1 65.7 60.0 832x624 74.6 800x600 72.2 75.0 60.3 56.2 640x480 75.0 72.8 66.7 60.0 720x400 70.1
Ce fichier est particulièrement important, sans lui, on ne pourrait pas analyser les erreurs du serveur X. Il est relativement bien structuré, voici l'en-tête :
X.Org X Server 1.4.2 Release Date: 11 June 2008 X Protocol Version 11, Revision 0 Build Operating System: FreeBSD 7.1-PRERELEASE i386 Current Operating System: FreeBSD tuborg.home.lan 7.1-BETA2 FreeBSD 7.1-BETA2 #0: Mon Oct 13 04:23:28 UTC 2008 root@logan.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC i386 Build Date: 08 September 2008 12:37:00PM Before reporting problems, check http://wiki.x.org to make sure that you have the latest version.
Ensuite la syntaxe
Module Loader present Markers: (--) probed, (**) from config file, (==) default setting, (++) from command line, (!!) notice, (II) informational, (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
En cas d'erreur, il faut repérer les lignes contenant (WW)
et ou (EE)
, comme dans ce cas :
(WW) `fonts.dir' not found (or not valid) in "/usr/local/lib/X11/fonts/dejavu/". Entry deleted from font path. (Run 'mkfontdir' on "/usr/local/lib/X11/fonts/dejavu/").
Les lignes qui nous intéressent (pour mon écran) :
(II) RADEON(0): clock: 106.5 MHz Image Size: 408 x 255 mm (II) RADEON(0): h_active: 1440 h_sync: 1520 h_sync_end 1672 h_blank_end 1904 h_border: 0 (II) RADEON(0): v_active: 900 v_sync: 903 v_sync_end 909 v_blanking: 934 v_border: 0 (II) RADEON(0): Ranges: V min: 55 V max: 75 Hz, H min: 24 H max: 71 kHz, PixClock max 140 MHz (II) RADEON(0): Serial No: 822DY3XY03512 (II) RADEON(0): Monitor name: Hanns.G HW173
Un extrait tiré du handbook 1).
This information is called EDID information. Creating a ModeLine from this is just a matter of putting the numbers in the correct order:
ModeLine <name> <clock> <4 horiz. timings> <4 vert. timings>
Il ne reste plus quà faire le remplacement :
ModeLine "1440x900" 106.5 1440 1520 1672 1904 900 903 909 934
Avec gtf
, il faut préciser le taux de rafraîchissement (59.9, dans mon cas).
gtf 1440 900 59.9 # 1440x900 @ 59.90 Hz (GTF) hsync: 55.83 kHz; pclk: 106.29 MHz Modeline "1440x900_59.90" 106.29 1440 1520 1672 1904 900 901 904 932 -HSync +Vsync
On constate que quelque soit la technique employée, les valeurs sont relativement proches les unes des autres. Vous pouvez faire plusieurs essais avec différentes fréquences de rafraîchissement.