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.