Table des matières

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>

Installation

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>

Configuration

Le fichier xorg.conf

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.

Choisir un gestionnaire de bureaux

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 :

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)

twm

Améliorer la résolution de votre écran

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

Annexe

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

À partir du fichier /var/log/Xorg.0.log

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

À partir de l'utilitaire gtf

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.