Nous allons voir dans cette partie, comment installer et configurer le système //X Window//. La lecture du [[http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/x11.html|chapitre 5]] est conseillée.
Vous devez être le super utilisateur **root**.
La partie configuration n'est pas spécifique à FreeBSD, la méthode fonctionne également sous Linux.
===== 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
Avec l'utilitaire ''pkg_add'', vous pouvez choisir un miroir différent de celui par défaut (Cf. la section [[http://avignu.wiki.tuxfamily.org/doku.php?id=freebsd:post_install#le_shell|shell]], et la configuration de la variable ''PACKAGESITE'').
===== 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.
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.
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 "1024x768" "800x60"''.
Par la suite on va ajuster la résolution d'affichage, mais pour l'instant privilégiez un affichage « standard ».
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
Vous pouvez en faire une copie, pour un autre utilisateur
cp ~/.Xresources /usr/share/skel/dot.Xresources
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 :
* En faisant une copie du fichier ''.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
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 ;-)
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)//
{{ :freebsd:twm-freebsd.png?500 |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.
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|Annexe]]).
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 **1024x768**.
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// ((http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/x-config.html)).
>This information is called EDID information. Creating a ModeLine from this is just a matter of putting the numbers in the correct order:
>ModeLine <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.