Vous êtes sur la page 1sur 466

Guide dinstallation et de conguration de Linux

Christian Casteyde

Guide dinstallation et de conguration de Linux par Christian Casteyde Copyright 2003 Christian Casteyde
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".

Permission vous est donne de copier, distribuer et modier ce document selon les termes de la licence GNU pour les documentations libres, version 1.1 ou toute autre version ultrieure publie par la Free Software Foundation. Une copie de cette licence est incluse dans lannexe intitule "Licence de Documentation Libre GNU".

Historique des versions

Version 2.4.1 14/06/2003 Revu par : CC Corrections orthographiques. Mise jour pour le noyau 2.4.21 et la glibc 2.3.2. Mise jour pour gcc 3.2.3 et binutils 2.14. Mise j Version 2.4.0 30/11/2002 Revu par : CC Corrections orthographiques. Mise jour pour le noyau 2.4.20, glibc 2.3.1, binutils 2.13.1, gcc 3.2.1, XFree86 4.2.1, Qt 3.0.6, KDE Version 2.2.1 26/01/2002 Revu par : CC Mise jour pour XFree86 4.2.0 et la Glibc 2.2.5. Mise jour pour LessTiff 0.93.18. Version 2.2.0 13/01/2002 Revu par : CC Mises jour diverses (noyau 2.4.17, Binutils 2.11.2, Glibc 2.2.4, Mesa 4.0.1, KDE 2.2.2, Qt 2.3.1, Samba 2.2.2). Description de la Version 2.0.2 28/04/2001 Revu par : CC Corrections orthographiques. Conguration du protocole DHCP. Complments sur la conguration de base du systme. Mise jour Version 2.0.1 04/04/2001 Revu par : CC Ajout dune traduction de la FDL en franais. Corrections diverses. Mise jour pour le noyau 2.4.3. Mise jour pour la Glibc 2.2.2 Version 2.0.0 07/01/2001 Revu par : CC Mise jour pour le noyau 2.4.0. Mise jour pour la Glibc 2.2. Mise jour pour XFree86 4.0.2. Compilation des binutils. Compilati Version 1.0.32 02/11/2000 Revu par : CC Passage au format de chier SGML. Ajout des liens hypertextes. Gestion des connexions la demande sur les liaisons PPP. Congu Version 0.31 09/09/2000 Revu par : CC Mise jour pour le noyau 2.2.17. Version 0.30 09/07/2000 Revu par : CC Changement du titre du document vers un titre plus gnrique permettant de traiter des sujets plus larges que ce que le titre originel Version 0.29 10/06/2000 Revu par : CC Mise jour pour le noyau 2.2.16. Corrections et modications mineures. Version 0.28 03/06/2000 Revu par : CC Mise jour pour le noyau 2.2.15. Mise jour pour make 3.79. Version 0.27 01/05/2000 Revu par : CC Corrections orthographiques diverses. Version 0.26 22/04/2000 Revu par : CC Correction sur le bit sticky. Corrections mineures sur lditeur vi. Description des variables denvironnement. Achvement du parag Version 0.25 16/02/2000 Revu par : CC Release partielle. Mise jour pour le noyau 2.2.14 et XFree86 3.3.6. Ajout pour la compilation de ttmkfdir. Corrections sur la comp Version 0.24 29/01/2000 Revu par : CC Modication et mise jour de la licence. Mise jour pour make 3.78.1. et la bibliothque crypt 2.1.2. Ajout du paragraphe sur la co Version 0.23 03/11/1999 Revu par : CC Mise jour pour gcc 2.95.2. Version 0.22 01/11/1999 Revu par : CC Ajout de lhistorique des modications. Ajout de la licence. Description des protocoles PAP et CHAP. Mise jour pour le noyau 2. Version 0.21 08/10/1999 Revu par : CC Corrections orthographiques. Version 0.20 14/07/1999 Revu par : CC

Premire version publique.

Table des matires


Remarques de lauteur ........................................................................................................................i 1. Introduction..................................................................................................................................... 1 2. GNU, Linux et les logiciels libres................................................................................................... 5 3. Concepts de base ............................................................................................................................. 9 3.1. Architecture du systme....................................................................................................... 9 3.2. Scurit et utilisateurs ........................................................................................................ 11 3.3. Fonctionnalits des systmes de chiers............................................................................ 15 3.4. Structure du systme de chiers......................................................................................... 19 4. Installation du systme de base ................................................................................................... 27 4.1. Rcupration des informations sur le matriel................................................................... 27 4.2. Sauvegarde des donnes..................................................................................................... 28 4.3. Amorage ........................................................................................................................... 29 4.4. Partitionnement du disque.................................................................................................. 30 4.4.1. Notion de partition et damorage du systme ...................................................... 30 4.4.2. Plan de partitionnement......................................................................................... 32 4.4.3. Trouver de la place pour installer le systme ........................................................ 35 4.4.3.1. Utilisation de parted.................................................................................. 36 4.4.3.2. Utilisation de ps ...................................................................................... 38 4.4.4. Utilisation de fdisk ................................................................................................ 39 4.5. Cration des systmes de chiers....................................................................................... 40 4.6. Cration de la partition de swap......................................................................................... 43 4.7. Installation des composants de base................................................................................... 44 4.8. Amorage du systme et conguration multiboot ............................................................. 45 4.8.1. Ralisation dun multiboot avec LILO .................................................................. 46 4.8.2. Ralisation dun multiboot avec le GRUB ............................................................ 50 4.8.3. Ralisation dun multiboot avec NTLDR.............................................................. 53 5. Commandes Unix de base ............................................................................................................ 55 5.1. Login et dconnexion......................................................................................................... 55 5.2. Arrt et redmarrage du systme ....................................................................................... 56 5.3. Pages de manuel................................................................................................................. 57 5.4. Oprations de base sur les rpertoires................................................................................ 59 5.5. Notions de chemins sous Unix........................................................................................... 60 5.6. Oprations de base sur les chiers ..................................................................................... 62 5.7. Autres commandes utiles ................................................................................................... 64 5.7.1. Passage en mode superviseur ................................................................................ 64 5.7.2. Changement des droits des chiers, du propritaire et du groupe......................... 64 5.7.3. Gestion des liens.................................................................................................... 65 5.7.4. Montage et dmontage dun systme de chiers................................................... 66 5.7.5. Recherche de chiers............................................................................................. 68 5.7.6. Recherche dun texte dans un chier..................................................................... 68 5.7.7. Remplacement de texte dans les chiers ............................................................... 68 5.7.8. Compression et dcompression des chiers .......................................................... 69 5.7.9. Archivage de chiers ............................................................................................. 70 5.7.10. Gestion des paquetages........................................................................................ 71 5.8. vi, lditeur de chiers de base........................................................................................... 72 5.9. Utilisation du shell bash ..................................................................................................... 74 5.9.1. Contrle des processus .......................................................................................... 75 5.9.1.1. Lancement dun programme en arrire-plan............................................. 75

5.9.1.2. Listing des processus ................................................................................ 76 5.9.1.3. Notion de signal ........................................................................................ 76 5.9.1.4. Arrt dun processus ................................................................................. 77 5.9.1.5. Gel dun processus.................................................................................... 77 5.9.1.6. Relancement dun processus..................................................................... 78 5.9.2. Redirections........................................................................................................... 78 5.9.2.1. Principe de base ........................................................................................ 78 5.9.2.2. Redirections de donnes en entre............................................................ 79 5.9.2.3. Redirection de donnes en sortie .............................................................. 79 5.9.2.4. Insertion de documents ............................................................................. 81 5.9.3. Les tubes................................................................................................................ 82 5.9.3.1. Syntaxe des tubes...................................................................................... 82 5.9.3.2. Les tubes nomms..................................................................................... 84 5.9.3.3. La commande tee ...................................................................................... 85 5.9.3.4. La commande xargs .................................................................................. 85 5.9.4. Manipulation des variables denvironnement........................................................ 86 5.9.5. Caractre dchappement et chanes de caractres................................................ 90 5.9.6. Les substitutions .................................................................................................... 92 5.9.6.1. Gnration de chanes de caractres selon un motif ................................. 92 5.9.6.2. Substitution du nom dutilisateur.............................................................. 92 5.9.6.3. Remplacements de variables..................................................................... 93 5.9.6.4. Substitution du rsultat dune commande................................................. 95 5.9.6.5. valuation dexpressions arithmtiques.................................................... 95 5.9.6.6. Substitution de commandes ...................................................................... 96 5.9.6.7. Dcoupage en mots ................................................................................... 97 5.9.6.8. Remplacement des caractres gnriques................................................. 97 5.9.7. Les expressions rationnelles .................................................................................. 98 5.9.8. Structures de contrle ............................................................................................ 99 5.9.8.1. Les instructions composes....................................................................... 99 5.9.8.2. Les tests................................................................................................... 100 5.9.8.3. Le branchement conditionnel.................................................................. 104 5.9.8.4. Les boucles.............................................................................................. 104 5.9.8.5. Les itrations........................................................................................... 105 5.9.8.6. Les ruptures de squence ........................................................................ 105 5.9.8.7. Les fonctions........................................................................................... 106 5.9.8.8. Les entres / sorties de donnes .............................................................. 107 5.9.9. Les alias ............................................................................................................... 108 5.9.10. Les scripts shell ................................................................................................. 109 6. Administration du systme de base........................................................................................... 111 6.1. Sauvegarde de la conguration dinstallation .................................................................. 111 6.2. Mise lheure du systme................................................................................................ 112 6.3. Notion de niveau dexcution et amorage du systme ................................................... 115 6.4. Maintenance des systmes de chiers.............................................................................. 117 6.4.1. Vrication des systmes de chiers................................................................... 118 6.4.2. Conguration du montage des systmes de chiers............................................ 120 6.5. Gestion des utilisateurs et de la scurit .......................................................................... 123 6.5.1. Mcanismes dauthentication des utilisateurs ................................................... 123 6.5.2. Cration et suppression des utilisateurs............................................................... 126 6.5.3. Description de la bibliothque PAM ................................................................... 128 6.6. Conguration des terminaux virtuels ............................................................................... 130 6.7. Conguration de la console.............................................................................................. 133

vi

6.7.1. Pages de codes et Unicode................................................................................... 133 6.7.2. Principe de fonctionnement du clavier ................................................................ 134 6.7.3. Principe de fonctionnement de lcran de la console .......................................... 136 6.7.4. Conguration du clavier ...................................................................................... 139 6.7.4.1. Dnition de scancodes .......................................................................... 139 6.7.4.2. Dnition dun plan de clavier ............................................................... 141 6.7.4.3. Modication des paramtres du clavier .................................................. 145 6.7.5. Choix de la police de caractres .......................................................................... 146 6.7.6. Conguration des paramtres du terminal........................................................... 147 6.7.7. Description des terminaux................................................................................... 148 6.7.8. Paramtrage des applications............................................................................... 152 6.7.8.1. Conguration du clavier pour la bibliothque readline .......................... 152 6.7.8.2. Conguration du clavier pour vi ............................................................. 153 6.7.8.3. Conguration du clavier pour less .......................................................... 156 6.7.9. Conguration de la souris.................................................................................... 158 6.8. Conguration de limprimante......................................................................................... 158 6.8.1. Filtres dimpression ............................................................................................. 159 6.8.2. Commandes dimpression ................................................................................... 160 6.8.3. Conguration des les dimpression ................................................................... 160 6.9. Conguration du lancement automatique des tches ....................................................... 162 7. Notions de compilation et conguration du noyau .................................................................. 165 7.1. Notions de base ................................................................................................................ 165 7.1.1. Dnition des termes........................................................................................... 165 7.1.2. Processus de gnration....................................................................................... 169 7.2. Compilation de GCC........................................................................................................ 171 7.2.1. Prrequis .............................................................................................................. 172 7.2.2. Installation des sources........................................................................................ 172 7.2.3. Conguration....................................................................................................... 173 7.2.4. Compilation ......................................................................................................... 173 7.2.5. Installation de GCC ............................................................................................. 174 7.3. Compilation du noyau Linux ........................................................................................... 174 7.3.1. Installation des sources de Linux ........................................................................ 175 7.3.2. Choix des options de conguration du noyau ..................................................... 176 7.3.3. Compilation et installation du noyau................................................................... 177 7.3.4. Compilation et installation des modules.............................................................. 179 8. Conguration du matriel et des priphriques ...................................................................... 181 8.1. Gnralits sur le support matriel sous Linux ................................................................ 181 8.1.1. Notion de chiers spciaux de priphriques...................................................... 181 8.1.2. Modules du noyau ............................................................................................... 183 8.2. Conguration des priphriques de masse....................................................................... 188 8.2.1. Conguration des priphriques SCSI ................................................................ 188 8.2.2. Conguration des disques durs IDE .................................................................... 189 8.2.3. Installation dun graveur de CD-ROM ................................................................ 192 8.2.3.1. Notions de base sur le gravage sous Linux ............................................. 192 8.2.3.2. Conguration du noyau........................................................................... 192 8.2.3.3. Conguration des modules du noyau...................................................... 194 8.2.3.4. Installation des logiciels de gravage ....................................................... 195 8.2.3.5. Utilisation des logiciels de gravage ........................................................ 195 8.3. Conguration des cartes lles .......................................................................................... 198 8.3.1. Gnralits sur les cartes ISA, Plug And Play et PCI ......................................... 199 8.3.2. Conguration des cartes son................................................................................ 202

vii

8.3.3. Installation dune carte graphique 3D ................................................................. 205 8.3.4. Installation dune carte dacquisition vido ........................................................ 207 8.3.5. Conguration des cartes rseau ........................................................................... 209 8.4. Conguration des ports de communication ..................................................................... 210 8.4.1. Conguration du port parallle............................................................................ 210 8.4.2. Conguration des ports srie ............................................................................... 211 8.4.3. Installation des priphriques USB ..................................................................... 212 8.4.3.1. Conguration du noyau........................................................................... 213 8.4.3.2. Dtection automatique des priphriques USB ...................................... 214 8.4.4. Installation des priphriques IEEE1394 ............................................................ 215 8.4.4.1. Conguration du noyau........................................................................... 216 8.4.4.2. Installation des bibliothques complmentaires ..................................... 217 9. Conguration du rseau............................................................................................................. 219 9.1. Notions de rseau TCP/IP ................................................................................................ 219 9.1.1. Gnralits sur les rseaux .................................................................................. 219 9.1.2. Le protocole IP .................................................................................................... 220 9.1.3. Le protocole TCP ................................................................................................ 227 9.1.4. Les protocoles de haut niveau ............................................................................. 229 9.2. Conguration du rseau sous Linux................................................................................. 229 9.2.1. Conguration statique des interfaces rseau ....................................................... 230 9.2.2. Dnition des rgles de routage .......................................................................... 231 9.2.3. Dnition du nom de la machine......................................................................... 233 9.2.4. Rsolution des noms de domaine ........................................................................ 234 9.2.5. Utilisation des protocoles DHCP et BOOTP....................................................... 235 9.2.5.1. Autoconguration des clients DHCP et BOOTP.................................... 236 9.2.5.2. Conguration dun client DHCP au niveau utilisateur ........................... 236 9.2.6. Dnition des protocoles de haut niveau............................................................. 238 9.2.7. Les super-dmons inetd et xinetd ........................................................................ 239 9.2.7.1. Le super-dmon inetd ............................................................................. 239 9.2.7.2. Le super-dmon xinetd ........................................................................... 240 9.2.8. Conguration de la scurit du rseau................................................................. 245 9.2.8.1. Limitation des services au strict minimum ............................................. 246 9.2.8.2. Dnition de rgles de contrle daccs ................................................. 246 9.2.8.2.1. Restrictions daccs avec tcpd.................................................... 246 9.2.8.2.2. Restrictions daccs avec xinetd................................................. 248 9.2.8.3. Contrle des utilisateurs au niveau des services ..................................... 248 9.2.8.4. Cryptage des connexions ........................................................................ 249 9.2.8.4.1. Principes de base de cryptographie ............................................ 251 9.2.8.4.2. Principes de base de lauthentication SSH............................... 253 9.2.8.4.3. Compilation et installation dOpentSSH.................................... 254 9.2.8.4.4. Conguration dOpenSSH ct serveur ..................................... 255 9.2.8.4.5. Utilisation dOpenSSH ct client ............................................. 257 9.2.8.4.6. Cration dun tunnel SSH .......................................................... 259 9.3. Conguration de la connexion Internet ......................................................................... 260 9.3.1. Le protocole PPP ................................................................................................. 260 9.3.2. Cration dune connexion Internet ................................................................... 262 9.3.3. Utilisation du mail ............................................................................................... 267 9.3.4. Les autres outils de connexion............................................................................. 267 9.4. Firewalls et partages de connexion Internet .................................................................. 268 9.4.1. Mcanismes de ltrage du noyau ........................................................................ 268 9.4.2. Translations dadresses et masquerading ............................................................ 270

viii

9.4.3. Trajet des paquets ................................................................................................ 272 9.4.4. Conguration du noyau et installation des outils ................................................ 273 9.4.5. Utilisation diptables ........................................................................................... 274 9.4.5.1. Manipulation des chanes........................................................................ 274 9.4.5.2. Manipulation des rgles .......................................................................... 275 9.4.6. Exemple de rgles................................................................................................ 277 9.4.6.1. Exemple de rgles de ltrage .................................................................. 277 9.4.6.2. Exemple de partage de connexion Internet .......................................... 278 9.4.7. Conguration des clients ..................................................................................... 278 9.5. Conguration des fonctions serveur................................................................................. 279 9.5.1. Paramtrage des connexions extrieures ............................................................. 279 9.5.2. Conguration des liaisons PPP............................................................................ 281 9.5.3. Liaison de deux ordinateurs par un cble srie ................................................... 284 9.5.4. Installation dun proxy ........................................................................................ 285 9.5.5. Conguration dun serveur DHCP ...................................................................... 289 9.6. Systmes de chiers en rseau ......................................................................................... 291 9.6.1. Installation dun serveur de chiers NFS ............................................................ 291 9.6.2. Conguration dun client NFS ............................................................................ 295 9.6.3. Installation dun serveur de chiers SMB ........................................................... 296 9.6.4. Conguration dun client SMB ........................................................................... 303 10. Installation de XWindow.......................................................................................................... 307 10.1. Gnralits sur XWindow .............................................................................................. 308 10.2. Conguration de XFree86.............................................................................................. 310 10.2.1. Gnration automatique du chier XF86Cong ............................................... 311 10.2.2. Utilisation de xf86cong ................................................................................... 311 10.2.3. Utilisation de xf86cfg ........................................................................................ 314 10.2.3.1. Conguration en mode graphique......................................................... 314 10.2.3.2. Conguration en mode texte................................................................. 317 10.2.4. Description du chier XF86Cong ................................................................... 319 10.2.4.1. Structure gnrale du chier XF86Cong ............................................ 319 10.2.4.2. Section Files .................................................................................... 321 10.2.4.3. Section ServerFlags ........................................................................ 321 10.2.4.4. Section Module ............................................................................... 322 10.2.4.5. Section InputDevice ........................................................................ 322 10.2.4.6. Sections Device ............................................................................... 324 10.2.4.7. Sections Monitor ............................................................................. 325 10.2.4.8. Sections Modes ............................................................................... 334 10.2.4.9. Sections Screen ............................................................................... 335 10.2.4.10. Sections ServerLayout .................................................................. 336 10.2.5. Informations utilises lors du dmarrage de XFree86....................................... 337 10.2.6. Utilisation de xvidtune ...................................................................................... 338 10.3. Utilisation du pilote frame buffer du noyau ................................................................... 339 10.3.1. Conguration du noyau et installation du pilote ............................................... 339 10.3.2. Conguration du serveur X ............................................................................... 340 10.4. Conguration des terminaux X ...................................................................................... 342 10.4.1. Principe de fonctionnement de xdm .................................................................. 342 10.4.2. Conguration de xdm ........................................................................................ 342 10.4.2.1. Serveurs X locaux ................................................................................. 343 10.4.2.2. Serveurs X utilisant XDMCP................................................................ 344 10.4.2.3. Paramtrage du serveur X pour utiliser le protocole XDMCP ............. 346 10.4.2.4. Fichiers dinitialisation de sessions ...................................................... 347

ix

10.4.3. Paramtrage des terminaux X............................................................................ 348 10.4.3.1. La commande xset ................................................................................ 348 10.4.3.2. Conguration de la disposition du clavier ............................................ 349 10.5. Paramtrage des applications et ressources X................................................................ 352 10.6. Gestion de la scurit sous XWindow............................................................................ 354 10.6.1. La commande xhost........................................................................................... 355 10.6.2. La commande xauth .......................................................................................... 355 10.7. Gestion des polices de caractres................................................................................... 356 10.7.1. Gestion des polices de caractres sous XWindow............................................. 357 10.7.2. Installation des polices Truetype ....................................................................... 359 10.7.2.1. Conguration du serveur X................................................................... 359 10.7.2.2. Conguration des polices Truetype pour limpression ......................... 361 10.7.2.2.1. Conversion des polices Truetype en polices Adobe de Type 42361 10.7.2.2.2. Installation des polices Truetype pour GhostScript ................. 362 10.7.3. Conguration dun serveur de polices............................................................... 363 10.8. Problmes classiques rencontrs .................................................................................... 365 11. Conclusion ................................................................................................................................. 367 A. Options de conguration du noyau .......................................................................................... 369 A.1. Menu Code maturity level options ............................................................................ 369 A.2. Menu Loadable module support ................................................................................ 369 A.3. Menu Processor type and features ............................................................................. 369 A.4. Menu General setup .................................................................................................. 371 A.5. Menu Memory Technology Devices (MTD) ............................................................. 373 A.6. Menu Parallel port support ........................................................................................ 373 A.7. Menu Plug and Play conguration ............................................................................ 374 A.8. Menu Block devices .................................................................................................. 374 A.9. Menu Multi-device support (RAID and LVM) ............................................................ 376 A.10. Menu Networking options ....................................................................................... 376 A.11. Menu IP: Netlter Conguration ............................................................................ 381 A.12. Menu IPv6: Netlter Conguration ........................................................................ 384 A.13. Menu AppleTalk devices ......................................................................................... 385 A.14. Menu QoS and/or fair queueing .............................................................................. 386 A.15. Menu Network testing ............................................................................................. 386 A.16. Menu Telephony Support ........................................................................................ 386 A.17. Menu ATA/IDE/MFM/RLL support ....................................................................... 386 A.18. Menu IDE, ATA and ATAPI Block devices ............................................................ 386 A.19. Menu SCSI support ................................................................................................. 389 A.20. Menu SCSI low-level drivers .................................................................................. 390 A.21. Menu PCMCIA SCSI adapter support .................................................................... 390 A.22. Menu Fusion MPT device support .......................................................................... 390 A.23. Menu IEEE 1394 (FireWire) support (EXPERIMENTAL) .................................... 391 A.24. Menu I2O support ................................................................................................... 392 A.25. Menu Network device support ................................................................................ 392 A.26. Menu ARCnet devices ............................................................................................ 394 A.27. Menu Ethernet (10 or 100Mbit) .............................................................................. 394 A.28. Menu Ethernet (1000 Mbit) .................................................................................... 395 A.29. Menu Wireless LAN (non-hamradio) ..................................................................... 395 A.30. Menu Token ring devices ........................................................................................ 395 A.31. Menu Wan interfaces ............................................................................................... 395 A.32. Menu PCMCIA network device support ................................................................. 396 A.33. Menu ATM drivers .................................................................................................. 397

A.34. Menu Amateur Radio support ................................................................................. 397 A.35. Menu AX.25 network device drivers ...................................................................... 398 A.36. Menu IrDA subsystem support ................................................................................ 398 A.37. Menu Infrared-port device drivers ........................................................................... 398 A.38. Menu ISDN subsystem ........................................................................................... 398 A.39. Menu ISDN feature submodules ............................................................................. 398 A.40. Menu Passive ISDN cards ....................................................................................... 399 A.41. Menu Active ISDN cards ........................................................................................ 399 A.42. Menu Old CD-ROM drivers (not SCSI, not IDE) ................................................... 400 A.43. Menu Input Core Support ........................................................................................ 400 A.44. Menu Character devices .......................................................................................... 401 A.45. Menu I2C support ................................................................................................... 404 A.46. Menu Mice .............................................................................................................. 404 A.47. Menu Joystick support ............................................................................................ 405 A.48. Menu Watchdog cards ............................................................................................. 405 A.49. Menu Ftape, the oppy tape device driver .............................................................. 407 A.50. Menu PCMCIA character device support ............................................................... 407 A.51. Menu Multimedia devices ....................................................................................... 407 A.52. Menu Video For Linux ............................................................................................ 408 A.53. Menu Radio Adapters ............................................................................................. 408 A.54. Menu File systems ................................................................................................... 408 A.55. Menu Network File Systems ................................................................................... 409 A.56. Menu Partition Types .............................................................................................. 410 A.57. Menu Native Language Support .............................................................................. 411 A.58. Menu Console drivers ............................................................................................. 411 A.59. Menu Frame-buffer support .................................................................................... 411 A.60. Menu Sound ............................................................................................................ 412 A.61. Menu USB support .................................................................................................. 412 A.62. Menu USB Serial Converter support ....................................................................... 416 A.63. Menu Bluetooth support .......................................................................................... 416 A.64. Menu Bluetooth device drivers ............................................................................... 417 A.65. Menu Kernel hacking .............................................................................................. 417 A.66. Menu Library routines ............................................................................................. 418 B. Compilation et mise jour des principaux composants du systme ..................................... 419 B.1. Compilation de make 3.80.0............................................................................................ 419 B.2. Compilation des binutils 2.14.......................................................................................... 419 B.3. Compilation de la bibliothque C 2.3.2........................................................................... 420 B.4. Compilation de OpenSSL................................................................................................ 423 B.5. Compilation de XFree86 4.3.0 ........................................................................................ 424 B.6. Compilation de Lesstif 0.93.36 ....................................................................................... 426 B.7. Compilation de MESA 5.0.1 ........................................................................................... 426 B.8. Compilation de KDE 3.1.2 .............................................................................................. 427 B.9. Compilation de Gnome 2.2.1 .......................................................................................... 430 B.10. Compilation de Samba 2.2.8a........................................................................................ 433 C. Formulaire pour la cration des lignes de mode de XFree86 ................................................ 435 D. GNU Free Documentation License........................................................................................... 439 E. Licence de documentation libre GNU ...................................................................................... 445

xi

xii

Liste des tableaux


3-1. Caractristiques des liens physiques et symboliques .................................................................. 18 3-2. Hirarchie standard du systme de chiers ................................................................................. 21 5-1. Groupes de pages de man............................................................................................................ 58 5-2. Principaux signaux Unix ............................................................................................................. 77 5-3. Variables denvironnements courantes ........................................................................................ 88 5-4. Tests sur les chiers................................................................................................................... 103 9-1. Plages dadresses IP rserves pour un usage personnel .......................................................... 223 10-1. Frquence maximale des moniteurs ........................................................................................ 329 10-2. Numros des modes graphiques VESA................................................................................... 340

Liste des illustrations


3-1. Architecture des systmes GNU/Linux....................................................................................... 11 3-2. Le systme de chiers virtuel...................................................................................................... 16 4-1. Pistes et secteurs dun disque dur................................................................................................ 31 4-2. Partitions primaires et partitions logiques ................................................................................... 32 4-3. Master boot record et secteurs de boot........................................................................................ 32 6-1. Traitements des entres clavier.................................................................................................. 135 6-2. Traitement des caractres pour lafchage ................................................................................ 138 6-3. Filtres dimpression et imprimantes PostScript......................................................................... 160 7-1. Interprtation dun programme ................................................................................................. 166 7-2. Compilation et excution dun programme............................................................................... 167 7-3. Processus de gnration dun excutable .................................................................................. 168 8-1. Chargement automatique des modules du noyau ...................................................................... 186 9-1. Notion de paquet et dadresse rseau ........................................................................................ 219 9-2. Encapsulation de protocoles...................................................................................................... 220 9-3. Addresse IP et adresse de rseau............................................................................................... 222 9-4. Notion de passerelle .................................................................................................................. 224 9-5. Notion de route.......................................................................................................................... 226 9-6. Connexions TCP........................................................................................................................ 228 9-7. Algorithme de cryptage symtrique .......................................................................................... 251 9-8. Algorithme de cryptage asymtriques....................................................................................... 252 9-9. Translation dadresses avec suivi de port TCP.......................................................................... 271 9-10. Trajet des paquets dans le code de ltrage .............................................................................. 272 10-1. Notion de display..................................................................................................................... 309 10-2. Structure du chier XF86Cong ............................................................................................. 320 10-3. Paramtres des lignes de mode................................................................................................ 331

xiii

xiv

Remarques de lauteur
Il se peut que certaines informations fournies dans ce document soient spciques ma distribution de Linux. titre indicatif, jutilise une Slackware 9.0. Je me suis cependant efforc de rendre ce document gnrique et indpendant de cette distribution, mais je ne peux pas le garantir. En particulier, il est connu que la Slackware nutilise pas, par dfaut, la notion de niveaux dexcution. De mme, certaines informations pourront tre spciques la conguration matrielle des machines que jutilise. Nanmoins, la plupart des informations fournies ici sappliqueront toutes les distributions de Linux. Elles permettront galement aux personnes qui nont jamais vu Linux de dbroussailler un peu le terrain et de comprendre en profondeur comment le systme fonctionne. Je remercie davance les gens qui pourront menvoyer des remarques concernant les imprcisions, voire les horreurs et les neries que jaurais pu crire. Plus je recevrai de critiques constructives et de propositions, plus ce document a de chances de samliorer. Cependant, si vous prenez le temps de menvoyer les remarques et les erreurs que vous avez pu dtecter, je vous serais gr de vrier au pralable quelles sont toujours dactualit dans la dernire version de ce document, que vous pourrez trouver dans diffrents formats de chiers sur mon site Web (http://casteyde.christian.free.fr).

Remarques de lauteur

ii

Chapitre 1. Introduction
Linux est le noyau dun systme dexploitation libre de type Unix, crit initialement par Linus Torvalds en 1991 et auquel un grand nombre de programmeurs ont contribu par Internet depuis. Les origines de tous les systmes Unix remontent la premire version dun systme dexploitation exprimental dvelopp par Dennis Ritchie et Ken Thompson dans les laboratoires AT&Ts Bell Laboratories en 1969. Ce systme a avant tout t dvelopp par des programmeurs, pour des programmeurs, et reprenait un certain nombre de concepts qui avaient t dvelopps auparavant pour le systme dexploitation Multics (abrviation de Multiplexed Information and Computing Service ), dont le rle tait de fournir des services informatiques centraliss un grand nombre de personnes (un peu comme le Minitel a tent de le faire par la suite). Multics na jamais rellement vu le jour, en revanche, le systme Unix initial a engendr un grand nombre dautres systmes plus ou moins compatibles. Rcemment, les diffrents fournisseurs de systmes Unix se sont accords pour dnir lensemble des fonctionnalits que tous les systmes Unix doivent supporter, an de rsoudre les problmes engendrs par les incompatibilits existantes entre ces diffrents systmes. Le terme Unix est donc un terme gnrique pour reprsenter lensemble de tous ces systmes, dont Linux fait partie. Pour lanecdote, la dnomination Unix provient de la contraction de Unics (abrviation de Uniplexed Information and Computing Service ), terme forg ironiquement pour bien signaler quUnix tait une version allge de ce que Multics devait tre. Bien que compatible avec les dernires spcications Unix, Linux ne contient pas une ligne du code source du systme Unix original, ce qui en fait ce que lon appelle un clone . Cela dit, il sagit rellement dun systme Unix part entire. En tant que tel, il dispose des fonctionnalits fournies par les systmes Unix : il est multitche, multiutilisateur et relativement orient rseau. Vous aurez donc, avec Linux, un systme able, fonctionnel et performant. Linux vous permettra de raliser les oprations les plus classiques, comme effectuer un travail bureautique, naviguer sur Internet, raliser lacquisition, la capture et le retraitement dimages, raliser des animations 3D ou encore programmer. En revanche, autant vous prvenir tout de suite : nombre de jeux ne sont tout simplement pas disponibles sous Linux, bien que les principaux titres soient rgulirement ports. De mme, il nexiste pas de logiciel complet permettant de raliser lacquisition de squences vido et den raliser le montage de manire aise. Vous ne pourrez pas non plus raliser ce que vous faisiez avec les applications MS Windows dont il nexiste pas encore dquivalent sous Linux, comme les applications de gestion et de paie utilises par nombre de professionnels indpendants ou par des PME. Que les choses soient claires : linstallation de Linux est une opration relativement complique, et lusage dun systme Unix en gnral nest pas la porte de tout le monde. Mme si la qualit des distributions actuellement disponibles sest grandement accrue ces derniers temps, au point que nimporte qui peut installer un systme Linux viable sans trop de problmes, la conguration du systme pour obtenir un fonctionnement correct exige un travail assez important. En particulier, les distributions actuelles prouvent encore quelques difcults pour optimiser les priphriques exotiques, et souvent seules les fonctionnalits de base sont correctement congures aprs une installation classique. Par ailleurs, la plupart des applications sont dveloppes par des groupes de programmeurs indpendants, et bien que ce soit justement le rle des distributions de raliser lintgration de tous ces composants dans un environnement homogne, celle-ci nest pas forcment parfaite. Les outils de conguration des distributions vous permettront sans doute de congurer votre systme de base simplement, mais pour aller au-del, il faudra sans doute intervenir manuellement. Nanmoins, il faut reconnatre que celui qui installe Linux partir dune distribution sur un ordinateur assez vieux (cest--dire un ordinateur qui ne dispose pas des derniers priphriques et cartes graphiques la mode), ou dont les constituants sont de marque courante, obtient rapidement un systme fonctionnel et capable de raliser la plupart des oprations quil dsire. En particulier, celui qui utilise

Chapitre 1. Introduction son ordinateur pour travailler (jentends par l crire des lettres, les imprimer, naviguer sur Internet pour rcuprer des informations, ou programmer) peut parfaitement se contenter de linstallation par dfaut. Ce type de situation ne convient pas tout le monde : la plupart des gens disposent de cartes graphiques rcentes (surtout depuis lavnement des jeux 3D) ou de priphriques spciques. Tout le monde ne se place pas uniquement dans le cadre dune utilisation professionnelle, et il est absurde de disposer dune carte son et de ne pas pouvoir lutiliser. Et cest l que le bt blesse ! Si lon dsire que Linux reconnaisse ces matriels exotiques, il va falloir mettre les mains dans le cambouis et avoir une bonne dose de patience. Ce problme de conguration apparat malheureusement principalement pour les particuliers, qui souvent disposent de machines htroclites et absolument non standards. Dans le cadre dune entreprise, il existe des personnes qualies pour rsoudre ce type de problme, mais ce sont des informaticiens et, de plus, les machines sont souvent homognes, ce qui permet dapporter des solutions gnriques. En conclusion, il faut tre informaticien ou amateur trs clair pour installer Linux sur une machine de particulier et pour le congurer de manire optimale. La situation est dautant plus grave que la plupart des gens ne connaissent pas Linux, et quil est toujours difcile dapprendre et de prendre de nouvelles habitudes. Je veux dire par l que mme une tche trs simple raliser peut prendre un certain temps, car tout simplement on ne la jamais faite. Celui qui a install trois fois MS Windows sait parfaitement le faire prsent, et il pense que cest relativement facile. Et pourtant, il ralise souvent des tches dune complexit qui dpasse, l aussi, le commun des mortels. Heureusement, et cest l la force de Linux, ces oprations ne doivent tre effectues quune seule fois. On na absolument pas besoin de changer la conguration chaque instant, comme cest le cas sous MS Windows, parce que le systme est globalement beaucoup plus stable. Il ne plante quasiment jamais, les applications ne peuvent pas le corrompre, et sa qualit supprime le besoin permanent de mettre jour une partie du systme. En clair, quand on en a un qui fonctionne, on le garde, non pas parce que cest un enfer installer et congurer, mais tout simplement parce que ce nest pas ncessaire de le changer. En rsum, on peut afrmer que :

Linux est un systme simple installer sur des machines standards ; sa conguration sur une machine plus exotique requiert parfois une intervention manuelle ; dans la plupart des cas, cette intervention nest pas trs difcile raliser ; cependant, elle peut drouter les personnes qui ne lont jamais effectue ; mais le jeu en vaut la chandelle, parce que le systme est rellement solide.

Lobjet de ce document est de donner les connaissances de base ncessaires linstallation de Linux sur un ordinateur de particulier ou un petit serveur. Il est suppos que lutilisateur a dj utilis un autre systme dexploitation, par exemple MS Windows. Cependant, aucune notion avance dinformatique nest ncessaire. Tout sera expliqu au fur et mesure des besoins et, si ncessit est, des complments dinformation seront donns pour permettre la comprhension des oprations effectuer. Nanmoins, les notions qui seront abordes ici ne seront pas simples, et il est possible que la plupart des personnes qui nont pas une grande habitude de linformatique aient quelques difcults les assimiler. Cela dit, vaincre sans peine, on triomphe sans gloire, et linstallation de Linux vous procurera le plaisir dapprendre. Ce document est structur en neuf parties distinctes, qui correspondent essentiellement aux grandes tapes que vous suivrez pour installer et utiliser Linux. La premire partie a pour but de clarier un peu les notions ayant trait aux logiciels libres. Elle tente dexpliquer pourquoi ces logiciels existent, et pourquoi ils font partie des meilleurs logiciels actuels. La deuxime partie dcrit les concepts de base de la plupart des systmes dexploitation Unix. Elle ne traite pas de linstallation proprement parler,

Chapitre 1. Introduction mais sa lecture est recommande pour tous ceux qui nont jamais vu un tel systme. La troisime partie dcrit linstallation du systme de base de Linux. lissue de cette partie, vous devez disposer dun systme fonctionnel, utilisable mais non optimis et ne permettant pas forcment dutiliser tous vos priphriques. La quatrime partie constitue un petit cours dUnix pour les nouveaux utilisateurs de ce type de systme, et la cinquime partie traite des oprations dadministration et de maintenance de base des systmes Unix. Bien que, comme les deux premires parties, ces deux parties ne traitent pas de linstallation proprement parler, leur lecture est vivement recommande. La sixime partie donne les notions de base sur les mcanismes de compilation et dcrit la manire de faire pour compiler la dernire version de GCC, le compilateur C/C++ du projet GNU. Elle dcrit galement la technique utiliser pour compiler et installer un nouveau noyau dans le systme, opration indispensable pour obtenir un noyau optimis qui colle la machine. La conguration des diffrents types de matriel et leur prise en charge au niveau du noyau sera dcrite ensuite dans la septime partie. La huitime partie traite de la conguration du rseau sous Linux. Le rseau est rellement lun des aspects les plus importants de Linux, et ncessite donc une attention toute particulire. Enn, la neuvime et dernire partie vous dcrit la procdure dinstallation de XWindow, lenvironnement graphique de Linux. Linstallation des polices TrueType y est aussi prsente.

Chapitre 1. Introduction

Chapitre 2. GNU, Linux et les logiciels libres


Vous entendrez souvent parler de la licence GPL , du projet GNU et de la Free Software Foundation dans le monde de Linux. Pour bien comprendre ce quest la Free Software Foundation et ce que signie la licence GPL, il est ncessaire den faire une brve prsentation. La Free Software Foundation est une organisation dont le but est de dvelopper des logiciels libres. Le terme de libre signie clairement que chacun peut faire ce quil veut du logiciel, y compris le modier. La vente nest absolument pas interdite, et il faut donc faire la distinction entre libre et gratuit. Cela tant dit, les logiciels libres sont souvent de facto gratuits, car ils sont librement redistribuables par quiconque en possde une copie. La libert de modier les logiciels libres implique naturellement que leur code source, cest dire le texte de leur programme tel quil a t saisi par ses auteurs, soit librement accessible et modiable. Les logiciels libres sont donc qualis de logiciels Open Source , ce qui signie en anglais que les sources du programme sont disponibles. Attention cependant, tous les logiciels Open Source ne sont pas forcment libres, car il nest pas toujours possible de modier ce code source et de le redistribuer librement (ventuellement gratuitement). Ainsi, nombre dditeurs de logiciels propritaires publient leur code source sans pour autant donner de droits supplmentaires ceux qui les lisent. Certains dentre eux jouent dailleurs explicitement sur cette confusion. De plus, la plupart des journalistes anglosaxons font cette confusion et, de ce fait, occultent tous les avantages des logiciels libres. Vous trouverez de plus amples informations sur la notion de code source dans le Chapitre 7. Il faut bien comprendre que le fait de diffuser un logiciel sous une licence libre ne prive absolument pas son auteur de ses droits. Il en reste lauteur et, en tant que tel, conserve les droits dauteurs sur son travail. Il ne fait que concder la libert dexploiter ce travail aux autres. Cest en cela que les logiciels libres se dmarquent du domaine publique, dont les logiciels ne sont plus soumis aucun droit. An de protger les logiciels libres et leurs auteurs, la Free Software Foundation a rdig la licence GPL (abrviation de langlais General Public License ). Cette licence stipule que le logiciel libre peut tre redistribu, utilis, modi librement, pourvu que celui qui en bncie accorde les mmes droits ceux qui il fournit les copies du logiciel, quil lait modi ou non. En dautre termes, elle garantit que la libert des uns sarrte l o commence celle des autres. Cette licence empche donc lalination du logiciel et sa transformation en logiciel propritaire, de quelque manire que ce soit. Cela implique que tout logiciel libre modi par une autre personne que son auteur reste libre, et le restera jamais. Ainsi, il est impossible quune socit commerciale puisse un jour sapproprier un logiciel libre, mme si elle lamliore. Si vous dsirez lire la licence GPL, vous pouvez en trouver une copie dans le chier /usr/src/linux/COPYING une fois que vous aurez install Linux. La FSF a galement rdig dautres licences plus adaptes aux bibliothques de programmes et aux documentations libres. Ainsi, la licence LGPL ( Lesser General Public License ) permet dutiliser les bibliothques de programmes dans des programmes propritaires, et la licence FDL ( Free Documentation License ) permet de diffuser des documentations libres. titre dexemple, ce guide est distribu sous licence FDL, dont vous trouverez une tradution franaise en annexe. La licence GPL a t crite initialement pour le projet GNU de la Free Software Foundation, dont le but est de raliser un systme Unix libre et indpendant des Unix commerciaux. Prcisons ici que le terme Unix caractrise un ensemble de systmes dexploitation, qui disposent tous peu prs des mmes fonctionnalits et proposent dy accder de la mme manire. Le projet GNU est toujours en cours, puisque la Free Software Foundation a dj crit la plupart des utilitaires Unix, mais que le cur du systme (ce que lon appelle le noyau) est toujours en cours de ralisation. Pour information, ce noyau se nomme Hurd . Cependant, dautres noyaux sont disponibles, avec lesquels les commandes GNU peuvent tre utilises. Parmi ces noyaux, il existe bien entendu Linux, qui a t crit par le Finlandais Linus Torvalds lorsquil tait tudiant, et amlior par des programmeurs du monde entier sur Internet. Linux est

Chapitre 2. GNU, Linux et les logiciels libres un noyau parmi tant dautres, ceci prs quil est, lui aussi, distribu sous la licence GPL, bien que nayant rien avoir avec la Free Software Foundation. Cela signie quil serait en fait plus exact de parler du systme GNU/Linux que de Linux tout court. Sous cette dnomination, il est clair que ce systme est constitu des outils GNU fonctionnant sur le noyau Linux. Cest donc un ensemble de logiciels libres provenant de plusieurs sources distinctes. Cependant, il est trs courant dentendre parler de Linux tout court, par abus de langage et par souci de simplicit. Bien entendu, cette dnomination est proscrite sur les sites Internet de la Free Software Foundation, qui devient trs susceptible ce sujet. Prcisons que la licence GPL nest pas la seule licence permettant de distribuer des logiciels libres. Il existe dautres licences, dont les termes sont peu prs similaires. Par exemple, la licence BSD (un autre systme Unix libre) exige galement la distribution des sources, mais permet lappropriation des sources par des socits commerciales. De mme, la licence X, sous laquelle est diffuse lenvironnement graphique X11 quutilise Linux, est une licence libre. Quelques outils fournis avec Linux sont distribus avec dautres licences plus rares. Les logiciels libres disposent davantages indniables par rapport aux logiciels propritaires ou ferms . Je vais tenter de donner ici une liste non exhaustive de ces avantages :

les programmes distribus sous licence libre ont souvent t crits par des passionns du domaine applicatif auquel ils appartiennent. Les logiciels libres disposent donc souvent des dernires fonctionnalits la mode et sont donc gnralement extrmement comptitifs sur ce plan ; du fait du grand nombre possible dintervenants sur les sources des logiciels libres, un grand nombre de possibilits techniques peuvent tre explores, et cest souvent la meilleure qui est slectionne. Cest une forme de slection naturelle de la meilleure solution. Ainsi, sur le long terme, les logiciels libres sont les plus efcaces en terme de performances ; toujours du fait du grand nombre dintervenants, et surtout de par la possibilit de consulter et de modier librement le code source, le cycle de dtection/identication/correction des bogues est trs court. Les logiciels libres sont donc parmi les plus ables qui se font. On peut considrer quun logiciel libre utilis par un grand nombre de personnes est virtuellement sans bogue connu, puisque si tel tait le cas il serait immdiatement corrig ; la possibilit de repartir dune base de source existante permet de raliser des dveloppements beaucoup plus rapidement que dans un modle ferm. Les logiciels libres sont donc galement ceux qui se dveloppent le plus rapidement cot xe, et sont certainement les plus rentables en terme de cot global pour la collectivit ; an de garantir linteroprabilit entre les diffrents intervenants du monde du logiciel libre, chacun svertue respecter les standards. Les logiciels libres sont donc les plus ouverts, non seulement en terme de code source, mais galement au niveau des formats de chiers et des protocoles de communication. Cela garantie une interoprabilit optimale et labsence de mauvaise surprise ; professionnellement parlant, la disponibilit du code source fournit une garantie de fonctionnement que lon ne peut pas retrouver ailleurs. En cas de problme, il est toujours possible de sen sortir, ventuellement en recourant des comptences externes pour adapter le logiciel ses propres besoins ; enn, la disponibilit du code source garantit une prennit absolue du logiciel, ce quaucune socit commerciale vendant des logiciels propritaires ne peut ou ne veut faire.

Mais laspect le plus important des logiciels libres est sans doute le fait quils garantissent la libert des utilisateurs par rapport aux diteurs de logiciels. Le respect des standards, louverture des formats de documents et des protocoles de communication garantissent une interoprabilit absolue, qui permet

Chapitre 2. GNU, Linux et les logiciels libres ainsi chacun de rester libre de ses choix pour sa solution informatique. Il nest que trop courant de voir les diteurs de logiciels enfermer leurs clients dans une dpendance vis vis deux, simplement en leur faisant utiliser des produits ferms et inutilisables sans leur concours. Le pire est sans doute que cette dpendance est transitive (le fait pour un auteur dutiliser un produit implique que ses lecteurs le possdent galement) et durable (on ne peut faire de mise jour que chez le mme diteur de logiciel). Bien que cela ne se situe pas au mme niveau philosophique, la question du nancement se pose galement de manire rcurrente. Il nest en effet pas vident, en premire analyse, de dterminer les raisons qui poussent un auteur ou une entreprise rendre ainsi public son savoir faire, au risque de se le faire tout simplement voler. Les particuliers font souvent cela par amusement ou pour faire valoir leur savoir-faire. Les entreprises quant elles peuvent nancer le dveloppement de certains logiciels libres soit parce quelles lutilisent en interne, soit parce quelles en vivent de manire drive (par vente de produits drivs ou de services complmentaires par exemple). Certaines socits prfrent galement repartir dun logiciel libre qui satisfait 80% de leurs besoins, et de dvelopper les 20% restants. Le cot total de dveloppement dune solution compltement propritaire serait en effet beaucoup plus lev. Dans ce cas, les dveloppeurs de logiciels libres sont avant tout leurs propres utilisateurs... Cela dit, il faut tre clair ce sujet : le logiciel libre rapporte moins que le logiciel propritaire, tout simplement parce quon ne peut pas pressurer le client de la mme manire. Enn, pour information, le terme GNU est labrviation de langlais GNUs Not Unix . Cette curieuse phrase rappelle que le projet GNU est de raliser un systme Unix diffrent des autres. Vous remarquerez que cette dnition est rcursive, cest--dire quelle utilise le mot GNU elle-mme. Cela doit tre attribu au got des dveloppeurs de la Free Software Foundation pour ce genre de dnition inniment rcursive. Vous ne saurez sans doute jamais les raisons qui les ont pousss choisir la lettre G dans leur dnition. Cela tant, GNU se prononce gnou en anglais, et vous trouverez donc souvent la reprsentation dun gnou sur les sites Internet de GNU.

Chapitre 2. GNU, Linux et les logiciels libres

Chapitre 3. Concepts de base


Ce chapitre dcrit les principes de base quil faut connatre pour bien comprendre Linux. Les informations qui sont donnes ici ne sont pas rellement spciques Linux. Elles sappliquent souvent aux systmes Unix en gnral. Il est donc recommand de lire ce chapitre, surtout si lon na jamais vu ni utilis un systme Unix. En particulier, les utilisateurs chevronns de Windows risquent dtre lgrement drouts. Larchitecture du systme sera prsente, ainsi que la scurit et la notion dutilisateur. Viendront ensuite les descriptions des principales fonctionnalits du systme de chiers et de sa structure.

3.1. Architecture du systme


Comme tout logiciel dune certaine taille, Linux est dune grande complexit. Tous les systmes dexploitation rcents sont constitus dun grand ensemble de composants qui interagissent et dont la mise en place peut tre soit indispensable au bon fonctionnement du systme, soit facultative, soit tout simplement inutile tant donns la conguration matrielle et les besoins de lutilisateur. Cette complexit implique un grand nombre derreurs, danomalies et de dysfonctionnements possibles. En effet, pour quun systme informatique fonctionne correctement, il faut tout prvoir pour donner une action approprie tous les vnements possibles. Cela nest pas humainement ralisable quand le systme devient trop complexe. Pour rsoudre ce problme, il est courant de subdiviser le systme en composants indpendants, dont le mauvais fonctionnement potentiel ne peut perturber que partiellement les autres parties du systme. Des points de synchronisation partir desquels le systme peut reprendre un fonctionnement normal aprs une erreur sont prvus. Ces points de synchronisation permettent simplement dassurer la viabilit du systme, mme en cas derreur inopine. Pour quelques systmes, le seul point de synchronisation est le point de dpart, savoir le dmarrage de lordinateur. De tels systmes doivent donc souvent tre redmarrs, parfois pour une cause mineure (erreur dun logiciel, modication de la conguration du systme, ajout dun composant au systme). Ce nest pas le cas de Linux, qui dans le pire des cas dtruit le composant qui a gnr lerreur sans toucher aux autres parties du systme. Le point de synchronisation de Linux est donc le redmarrage dune partie du systme uniquement, ce qui assure ainsi une grande stabilit du systme complet. Il va de soi que, lorsquun composant se plante, ceux qui lutilisent risquent fort de se retrouver dans un tat derreur assez difcile grer. Cela peut souvent provoquer leur propre perte. Par consquent, plus un composant est utilis, plus il doit tre able. Or il est un composant la base de tout dans Linux : le noyau ( kernel en anglais). Cest le cur du systme, et en fait cest prcisment le systme Linux. Heureusement, ce composant est dune trs, trs grande abilit, et il nest pas rare de voir un systme Linux fonctionner plusieurs mois ou annes sur des serveurs. Cette abilit provient du modle de dveloppement de Linux, qui est ouvert tout le monde (chacun peut rcuprer, lire, modier, complter ou corriger le noyau condition de savoir bien programmer). partir dune taille critique en terme de nombre dutilisateurs, taille que Linux a atteinte, il existe sufsamment de dveloppeurs pour dtecter et corriger les erreurs. Ainsi, ds quune erreur est dtecte, elle est souvent corrige dans les jours qui suivent, ce qui assure une grande qualit. Le noyau gre quasiment tout (mmoire, disques, systmes de chiers, rseau, clavier, droits des utilisateurs, etc.), mais il nest pas exploitable tel quel. Il nest par exemple pas capable doffrir une interface utilisateur permettant de lui donner les commandes quil doit excuter. Ces oprations sont du ressort dautres modules dvelopps par la Free Software Foundation. Parmi ces modules, on trouve le shell (ce qui signie grosso modo environnement utilisateur ). Le shell est capable de lire des commandes saisies au clavier, de les excuter et dafcher leurs rsultats lcran. En gnral, les programmes capables de raliser ces oprations sont appels des interprteurs de commandes.

Chapitre 3. Concepts de base Mais le shell est bien plus que cela, car il peut tre programm, et il peut grer les processus (en arrter un, en lancer un autre, etc.). En fait, les commandes que le shell peut excuter sont en nombre trs rduit. La plupart des commandes sont tout simplement dautres programmes. Les programmes que lon peut utiliser dans le shell sont des programmes dits en ligne de commande , parce quils sont propres tre utiliss dans les lignes de commandes que lon saisit au clavier dans le shell. Ces programmes sont, encore une fois, dvelopps soit par la Free Software Foundation, soit par des bnvoles, toujours sous la licence GNU. Toutes ces commandes sont des commandes compatibles Unix. Ces commandes sont absolument essentielles pour pouvoir utiliser le systme, mais elles sont assez rbarbatives et peu dutilisateurs acceptent de sen contenter. Cest pour cela quune couche graphique a t dveloppe, pour introduire une interface graphique plus conviviale (mais cependant lgrement moins puissante en termes de fonctionnalits) : XWindow. Encore une fois, cette couche logicielle est constitue de plusieurs composants, dont la base est le serveur X. Le serveur X est un programme capable de fournir les services graphiques (do le nom de serveur) aux autres applications. Plusieurs implmentations concurrentes existent. Lune delles est particulirement utilise sous Linux, puisquelle est libre (comme tout le reste) : XFree86. vrai dire, un serveur X ne fait pas grand chose dautre que de raliser des afchages sous les ordres dautres programmes. Dautres composants permettent donc dobtenir des fonctionnalits de plus haut niveau. Le gestionnaire de fentres ( Window Manager en anglais) est le composant qui se place juste audessus du serveur X. Il est en charge, comme son nom lindique, de grer les fentres des applications graphiques sous X. Cest le gestionnaire de fentres qui prend en charge la gestion des dcorations des fentres de premier niveau (cest--dire des fentres principales des programmes). Par exemple, il soccupe dafcher les bords, la barre de titre, les boutons de rduction et de restauration, etc. des fentres. Cest galement lui qui soccupe du positionnement des fentres, et qui donc permet lutilisateur de dplacer et de rduire les fentres des applications graphiques. Lutilisateur est libre dutiliser le gestionnaire de fentres quil dsire, selon ses propres gots et ses dsirs, la diffrence est souvent une pure question de style. Il existe des environnements graphiques complets qui, en plus dun gestionnaire de fentres souvent extrmement puissant, fournissent la plupart des outils classiques que lon est en droit dattendre dun systme graphique moderne. Ainsi, ces environnements comprennent des diteurs, des outils de conguration, des navigateurs Internet, des logiciels multimdia... En plus de ces applications, ils fournissent un cadre standard pour les applications graphiques qui savent communiquer avec eux. Ce cadre permet damliorer lintgration des diverses applications entre elles, et cest la raison pour laquelle on appelle souvent ces environnements des gestionnaires de bureau. KDE et Gnome sont des exemples de tels environnements de travail. Enn, au-dessus de toutes ces couches logicielles, on trouve les applications X, qui sont aussi diverses que varies (traitement de texte, tableurs, logiciels de dessin...). Quelques-unes de ces applications sont simplement des front-end dapplications en ligne de commande, cest--dire des interfaces graphiques des programmes non graphiques existants. Ce concept permet davoir un composant unique, et plusieurs interfaces diffrentes pour ce composant, et en plus de rendre indpendante la fonctionnalit de linterface utilisateur. Encore une fois, la stabilit en est dautant plus accrue. Bon nombre dapplications pour XWindow sont libres, ou utilisables librement des ns non commerciales. Cela signie quun particulier a le droit de les utiliser tant quil ne sen sert pas pour un travail quil revendra. Comme cest le cas de la plupart des particuliers, on peut considrer quil est actuellement possible, avec Linux, davoir un environnement logiciel complet, able et performant... pour un prix de revient minime. En rsum, un systme GNU/Linux est structur de la manire suivante :

le noyau Linux ;

10

Chapitre 3. Concepts de base


les programmes en ligne de commande et le shell ; le serveur XWindow ; le gestionnaire de fentres et le gestionnaire de bureau ; les applications XWindow.

Figure 3-1. Architecture des systmes GNU/Linux

Il nest pas vident dtablir un parallle avec MS Windows, puisque ce systme est rellement monolithique. Cependant, on peut considrer que le noyau Linux correspond aux modules KERNEL ou IO.SYS de Windows, que le shell correspond aux interprteurs de commandes COMMAND.COM ou CMD.EXE, que les programmes en ligne de commande correspondent aux programmes DOS ou console classiques (xcopy, fdisk, format...), que le serveur X correspond au couple (pilote de carte graphique, GDI), que le gestionnaire de fentres correspond au module USER, et le gestionnaire de bureau lexplorateur, les fonctionnalits dOLE et aux programmes fournis avec Windows. La diffrence essentielle vient du fait que le shell est peine programmable sous Windows, que les commandes DOS ont tendance accder aux ressources de la machine directement sans passer par le noyau, que le pilote de carte graphique, la GDI et le module USER sont tous intgrs dans le systme au lieu den tre spars (ce qui multiplie les chances de crash du systme complet), et que la plupart des applications Windows ne peuvent fonctionner que dans lenvironnement graphique. Elles sont donc entranes par le systme lorsque les modules graphiques de Windows plantent (je nai dailleurs jamais vu un processus DOS survivre un crash de linterface graphique de Windows). En conclusion :

les systmes Unix, donc Linux, sont trs structurs, plus simples utiliser, congurer, maintenir et dvelopper ; ils sont trs stables, car les composants de haut niveau ninterfrent pas sur les composants de bas niveau ; ils sont faciles personnaliser, puisque lutilisateur a le choix des outils chaque niveau ; Linux a de plus la particularit dtre parfaitement modiable, puisque si lon sait programmer, on peut personnaliser les composants du systme ou en rajouter ; et il nest pas propritaire, cest--dire que lon nest pas dpendant dune socit ditrice de logiciel pour rsoudre un problme donn.

En bref, cest la voie de la vrit.

11

Chapitre 3. Concepts de base

3.2. Scurit et utilisateurs


Linux est un systme multiutilisateur. Cela signie que plusieurs personnes peuvent utiliser lordinateur simultanment (et pas uniquement les unes la suite des autres), et que le systme se charge de faire respecter la loi entre elles. Les ressources de la machine sont ainsi partages quitablement, tant au niveau de la puissance de calcul quau niveau de la mmoire, du disque, des imprimantes... videmment, une question se pose : comment plusieurs utilisateurs peuvent-ils se partager le clavier et lcran ? La rponse est simple : ils ne le peuvent pas. Par consquent, il ny a que trois solutions possibles : soit on connecte lordinateur dautres claviers et dautres crans (on appelle un couple clavier/cran un terminal ), soit on accde au systme par lintermdiaire dun autre ordinateur via le rseau, soit les utilisateurs lancent tour tour leurs programmes. La dernire solution ncessite que les programmes ne soient pas interactifs : ils doivent tre capable de fonctionner sans intervention de celui qui les a lancs. La premire hypothse nest pas srieuse pour un particulier, il est dailleurs assez difcile de connecter un terminal supplmentaire sur un PC (cest ralisable, soit en connectant un terminal ddi lun des ports srie, soit en ajoutant une carte graphique PCI et en connectant un deuxime clavier et une deuxime souris, par exemple sur le port USB, et en utilisant une version modie de XFree86. Ce nest donc pas une opration la porte du commun des mortels.). La deuxime solution, en revanche, est nettement plus envisageable. Il est parfaitement possible quun particulier dispose de deux PC connects en rseau, et que deux membres de la mme famille cherchent utiliser des ressources de la mme machine (par exemple, une imprimante ou tout autre priphrique, un programme install sur un seul ordinateur, des chiers personnels, etc.). Quant la troisime solution, elle est du domaine du quotidien, mme pour un ordinateur sans rseau et avec un seul utilisateur. En effet, certains programmes sont lancs par le systme pour effectuer des tches de maintenance, et fonctionnent au nom de ladministrateur de la machine. Il va de soi que pour tre multiutilisateur, le systme doit satisfaire certains critres :

il doit tre multitche, cest--dire quil doit tre capable de faire fonctionner plusieurs programmes simultanment sur la mme machine, en partageant les ressources de celle-ci ; il doit tre able, car un arrt du systme peut dranger un nombre arbitraire de personnes, y compris celles qui ne sont pas proximit de lordinateur ; il doit tre sr, car il ne faut pas que les erreurs ou les malveillances dun utilisateur ne puissent dranger les autres.

Le multitche est assur au niveau du noyau. Chaque programme en cours dexcution (on les appelle processus ) fonctionne dans sa propre zone de mmoire, qui est compltement contrle par le noyau. Les ressources du processeur sont partages entre les processus, et il est impossible lun dentre eux de monopoliser la mmoire, le disque ou quoi que ce soit. Les processus doivent toujours passer par le noyau pour effectuer une opration, ce qui permet un contrle absolu. La abilit est galement assure au niveau du noyau. Les zones de mmoire utilises par chaque processus (encore appeles espaces dadressage ) sont bien distinctes et bien identies par le noyau. Cela implique quil est impossible un processus de perturber le fonctionnement dun autre processus. Ainsi, si un processus fait une faute, il est purement et simplement termin par le noyau. Cela est sans appel : le noyau est le seul matre bord. Enn, la scurit est assure par le noyau et par le systme de chiers. Au niveau du noyau, chaque utilisateur est identi de manire unique par un numro dans le systme. Ce numro est utilis pour vrier les droits de lutilisateur, ou, autrement dit, ce quil peut faire. Les droits des utilisateurs

12

Chapitre 3. Concepts de base comprennent la possibilit de lire ou crire un chier, daccder ou non une ressource ou dexcuter un programme. Il est galement possible de crer un ou plusieurs groupes dutilisateurs, et de donner des droits particuliers ces groupes. Tous les utilisateurs qui font partie de ce groupe recevront les droits du groupe. Ainsi, des classes dutilisateurs peuvent tre facilement dnies, et ces classes peuvent se voir attribuer un peu plus de privilges que les utilisateurs normaux selon les ncessits. Il existe toutefois un utilisateur spcial, qui a tous les droits : ladministrateur du systme ( root en anglais). Aucune restriction ne sapplique cet utilisateur, car il doit tre capable de grer le systme, linstaller, larrter, le mettre jour si ncessaire, et de dnir les utilisateurs et leurs droits. Au niveau du systme de chiers, la scurit est assure par le stockage dinformations additionnelles pour chaque chier ou rpertoire. Ces informations permettent de connatre :

le numro de lutilisateur qui possde le chier ou le rpertoire. En gnral, le propritaire est simplement celui qui la cr. Cependant, ladministrateur peut changer le propritaire dun chier tout moment ; le numro du groupe auquel appartient le chier ou le rpertoire. Tout chier ou rpertoire appartient un groupe unique, qui est utilis pour calculer les droits des utilisateurs faisant partie de ce groupe. Par dfaut, un chier nouvellement cr par un utilisateur appartient au groupe des utilisateurs users , ce qui convient dans la majorit des cas (attention, ce comportement varie selon les systmes). Lutilisateur peut toutefois donner ses chiers nimporte quel groupe dont il fait partie ; les droits daccs au chier ou au rpertoire pour le propritaire, pour les utilisateurs faisant partie du groupe auquel appartient le chier ou le rpertoire, et pour tous les utilisateurs en gnral. Ces droits comprennent le droit de lecture (reprsent par la lettre r, pour Read only ), le droit dcriture (reprsent par la lettre w, pour Writeable ), le droit dexcution (reprsent par la lettre x, pour eXecutable ) et quelques attributs supplmentaires (qui seront dtaills plus loin).

Il nest sans doute pas inutile de prciser un peu le fonctionnement des droits dans le systme de chiers. Le droit de lecture correspond la possibilit douvrir et de consulter un chier, ou de lister le contenu dun rpertoire. Le droit dcriture correspond la possibilit de modier un chier, ou de crer ou supprimer un chier dun rpertoire. Enn, le droit dexcution correspond la possibilit dexcuter un chier contenant un programme, ou dentrer dans un rpertoire. On notera par exemple quil est possible dobtenir la liste des chiers dun rpertoire sans pouvoir sy dplacer, ou encore de modier un chier sans pouvoir le lire. On prendra garde galement que le fait davoir le droit dcriture sur un chier ne donne pas le droit de le supprimer (cependant, on peut le vider !). Pour cela, il faut avoir le droit dcriture sur le rpertoire contenant ce chier. Comme on le voit, les droits daccs aux chiers et aux rpertoires sont trs souples. Ces droits sont attribus sparment pour le propritaire, le groupe et les autres utilisateurs (cest-dire les utilisateurs qui ne font pas partie du groupe auquel appartient le chier). Il est donc possible de donner par exemple tous les droits au propritaire dun chier, et seulement le droit de lecture aux autres utilisateurs. Cette conguration est celle qui est choisie par dfaut lors de la cration dun chier, elle assure que seul le propritaire peut modier ou excuter ce chier, tout en laissant la possibilit aux autres de le lire. Ce choix privilgie la scurit des donnes de chacun en laissant le maximum de libert aux autres. Si plusieurs personnes doivent travailler sur les mmes chiers, il suft de les regrouper dans un groupe, de donner les chiers sur lesquels ils doivent travailler ce groupe, et de donner les droits dcriture aux membres de ce groupe sur ces chiers. La scurit du systme est transitive, cela signie que tout programme lanc par un utilisateur sexcute en son nom et reoit donc les droits de cet utilisateur. Le processus correspondant se voit donc attribuer les mmes restrictions que lutilisateur qui la lanc. Il dispose galement des droits du groupe auquel le chier du programme appartient. Il existe toutefois quelques exceptions cette

13

Chapitre 3. Concepts de base rgle, pour les programmes dont le comportement est bien connu et quil est impossible de dtourner de leur fonction initiale. Cest notamment le cas de quelques commandes systmes (comme passwd, qui permet de changer de mot de passe), qui peuvent tre lances par les utilisateurs et qui sexcutent toutefois au nom du systme (dans le compte root). Il est donc impossible un utilisateur de violer les rgles de scurit du systme. Pour parvenir ce comportement, il faut utiliser des attributs spciaux sur les chiers de ces programmes. Les attributs spciaux sont dcrits ci-dessous. Le premier attribut spcial est le bit setuid (qui est labrviation de langlais SET User IDentier ). Il ne peut tre plac quau niveau des droits du propritaire sur le chier. Il permet dindiquer que le chier est excutable, et que lorsque le programme quil contient est lanc par un utilisateur, le processus correspondant sexcute avec les droits du propritaire du chier et non pas avec ceux de lutilisateur qui la lanc. Cependant, le systme conserve tout de mme le numro de lutilisateur rel qui a lanc le processus, ce qui fait que le programme peut savoir par qui il a t lanc et au nom de qui il sexcute. Un processus dispose donc toujours de deux numros dutilisateur :

le numro de lutilisateur rel ( real user id en anglais), qui est le numro de lutilisateur qui a lanc le programme ; le numro de lutilisateur effectif ( effective user id en anglais), qui est le numro de lutilisateur avec les droits duquel le processus fonctionne.

Le bit setuid permet donc simplement daffecter le numro du propritaire du chier au numro dutilisateur effectif du processus lorsquil est lanc. Le fait de conserver le numro de lutilisateur rel permet au programme de raliser des vrications de scurit additionnelles. Par exemple, la commande passwd, qui permet de changer le mot de passe dun utilisateur, a besoin des droits de lutilisateur root pour enregistrer le nouveau mot de passe. Il dispose donc du bit setuid pour que tous les utilisateurs puissent lutiliser. Cependant, mme sil sexcute au nom de lutilisateur root, il ne doit pas permettre nimporte qui de changer le mot de passe des autres utilisateurs : seul lutilisateur root a le droit de faire cette opration. Il utilise donc le numro de lutilisateur rel qui a lanc la commande pour savoir si cest bien lutilisateur root qui la lanc. Le bit setuid est lattribut le plus couramment utilis, essentiellement pour certaines commandes systmes. Il est reprsent par la lettre s (comme Setuid ), et il remplace le droit dexcution (x) des chiers pour le propritaire des chiers (rappelons que le bit setuid implique que le chier est excutable). Il na aucune signication pour les rpertoires. Le deuxime attribut spcial est le bit setgid (qui est labrviation de langlais SET Group IDentier ). Ce bit fonctionne un peu de la mme manire que le bit setuid, ceci prs quil xe le numro de groupe effectif du processus lanc celui de son chier excutable. Cet attribut est galement reprsent par la lettre s, et remplace le droit dexcution (x) pour les utilisateurs du groupe auquel appartient le chier excutable. De plus, et contrairement au bit setuid, ce bit a une signication pour les rpertoires. Un rpertoire disposant du bit setgid permet de faire en sorte que tous les chiers qui sont crs dans ce rpertoire se voient automatiquement attribus le mme groupe que le rpertoire. Ce bit est relativement peu utilis. Enn, le troisime et dernier attribut spcial est le bit sticky . Cet attribut remplace lattribut excutable pour les autres utilisateurs que le propritaire du chier ou du rpertoire et les membres du groupe auquel il appartient. Contrairement aux bits setuid et setgid, il est reprsent par la lettre t (pour sTickky ). Sa signication est assez spciale : elle permet de faire en sorte que les programmes restent chargs en mmoire aprs leur terminaison, ce qui permet de les relancer plus rapidement. An de ne pas consommer la mmoire de manire permanente, le code du programme est plac automatiquement dans le swap sil nest toujours pas relanc aprs un certain temps, mais mme dans ce cas, tous les calculs de chargement sont dj effectus. Le lancement des programmes

14

Chapitre 3. Concepts de base marqus de ce bit sera donc toujours acclr. Sachez cependant ne pas abuser du bit sticky car la mmoire (mme virtuelle) est encore une ressource rare. Pour les rpertoires, sa signication est totalement diffrente : elle permet de restreindre les droits des utilisateurs sur les rpertoires ayant ce bit positionn. Ce bit fait en sorte que mme si un utilisateur dispose des droits dcriture sur le rpertoire, il ne peut pas supprimer tous les chiers de ce rpertoire. Les seuls chiers quil est autoris supprimer sont ses propres chiers. Bien entendu, il est toujours possible dajouter des chiers dans le rpertoire en question. En pratique, les utilisateurs nont pas se soucier des attributs des chiers, et en fait mme ladministrateur laisse souvent les attributs par dfaut, car ils correspondent la majorit des besoins de scurit. Ladministrateur a cependant le contrle total sur les droits daccs aux chiers, sur le propritaire et le groupe de chaque chier. Il est galement le seul utilisateur capable de crer un autre utilisateur ou un groupe, ainsi que de les dtruire. Les questions qui se posent videmment sont les suivantes. Est-ce quun particulier a besoin de tout cela ? Ces fonctionnalits ne sont-elles pas rserves aux serveurs ? Est-ce quon ne risque pas de perdre beaucoup de temps pour dnir les droits pour chaque utilisateur et pour chaque ressource du systme ? La gestion de la scurit ne consomme-t-elle pas trop de ressources ? Ces questions sont lgitimes, mais en fait, il est trs intressant mme pour un particulier de disposer de ces fonctionnalits. En effet, la scurit permet tout simplement de protger le systme contre ses propres erreurs. Qui na pas effac un jour un chier important ou dplac le rpertoire Windows en bougeant lgrement la souris lors dun double clic effectu trop lentement ? Avec Linux, on peut faire nimporte quoi, on est certain que le systme restera intact. Dailleurs la rgle essentielle, mme pour un ordinateur utilis par une seule personne, est de toujours crer un compte utilisateur normal et de ne jamais travailler sous le compte root. Cette scurit est telle que Linux est le systme dexploitation idal pour apprendre linformatique quelquun : savoir que le systme protge tout ce qui est important permet aux dbutants de prendre des initiatives sans crainte. Quant aux ventuels revers de mdaille, ils sont absents : la gestion de la scurit ne consomme quasiment aucune ressource, et sa conguration est lmentaire. Toutes les distributions sinstallent de telle sorte que le systme se protge des utilisateurs, et que ceux-ci soient indpendants les uns des autres. En rsum :

le multitche est un confort indniable. Il est apprciable de pouvoir utiliser son ordinateur mme lorsquil est en train de faire une tche longue en arrire-plan ; la abilit est videmment indispensable. Il est rassurant de se dire que mme si un processus trs gourmand en ressources fonctionne en arrire-plan, il ne perturbera pas les autres processus ; la scurit permet de se protger de ses propres erreurs, pour un cot minimal. Il suft de conserver les paramtres par dfaut du systme et de ne plus sen soucier !

3.3. Fonctionnalits des systmes de chiers


Il est srement bon de revenir sur les fonctionnalits fournies par les systmes de chiers Unix. En effet, peu dutilisateurs savent exactement quels sont les services quils peuvent fournir en gnral, et beaucoup croient que les systmes de chiers savent juste stocker des donnes dans des chiers organiss dans une hirarchie de rpertoires. Heureusement, ils permettent de faire beaucoup mieux que cela ! En fait, les systmes de chiers des systmes Unix sont trs puissants. Ils assurent la fois fonctionnalits, performances et abilit.

15

Chapitre 3. Concepts de base Pour commencer, il faut prciser que Linux ne travaille pas directement avec les systmes de chiers physiques. En effet, il interpose systmatiquement un systme de chiers intermdiaire, nomm Virtual File System ( VFS en abrg), qui permet aux applications daccder diffrents systmes de chiers de manire indpendante de leur nature et de leur structure interne. Le systme de chiers virtuel ne fait pas grand chose en soi : il se contente de transfrer les requtes des applications vers les systmes de chiers rels. Il fournit donc une interface bien dnie pour les applications, que celles-ci doivent utiliser. Les systmes de chiers rels, quant eux, doivent simplement fournir les services dont le systme de chiers virtuel a besoin. Tous les systmes de chiers rels ne disposent toutefois pas forcment de toutes les fonctionnalits demandes par le systme de chiers virtuel. Dans ce cas de conguration, la requte de lapplication dsirant effectuer lopration manquante chouera tout simplement. Comme on peut le constater, cette architecture est modulaire. Et comme on la vu pour larchitecture du systme en gnral, cela apporte beaucoup de bnces. Les plus vidents sont indiqus cidessous :

Linux est capable de grer plusieurs systmes de chiers rels. La seule condition est quils doivent tous fournir les services de base exigs par le systme de chiers virtuel ; les applications peuvent utiliser plusieurs de ces systmes de chiers rels de manire uniforme, puisquelles nutilisent que le systme de chiers virtuel. Cela simplie leur programmation, et permet dviter autant de bogues potentiels ; chaque systme de chiers rel tant indpendant des autres, il ne perturbe pas leur fonctionnement. En particulier, un systme de chiers corrompu ne corrompt pas les autres.

Figure 3-2. Le systme de chiers virtuel

Avec cette architecture, un grand nombre de systmes de chiers ont t dvelopps pour Linux. Parmi ces systmes de chiers, on retrouve les plus connus, savoir :

le systme de chiers EXT2, qui est le systme de chiers natif de Linux ; le systme de chiers EXT3, qui est une volution du systme de chiers EXT2 capable de prendre en charge galement les mcanismes de journalisation (EXT3 est donc plus tolrant aux pannes matriel et aux coupures de courant que EXT2) ; le systme de chiers ReiserFS, qui supprime la notion de bloc disque et qui est journalis (cest-dire quil supporte les arrts intempestifs du systme suite une panne de courant ou tout autre vnement contre lequel le systme ne peut rien faire) ; les systmes de chiers FAT, FAT32 et FAT32X (utiliss par les systmes DOS et Windows) ; le systme de chiers NTFS (utilis par Windows NT, Windows 2000 et XP), en lecture seule pour linstant ;

16

Chapitre 3. Concepts de base

le systme de chiers ISO9660, qui est utilis par tous les CD-ROM. Les extensions permettant de grer les noms longs sont galement gres. Ces extensions comprennent en particulier le systme de chiers Joliet (extensions de Microsoft pour Windows 95) et Rock Ridge (extensions utilises par tous les systmes Unix) ; le systme de chiers NFS (utilis pour distribuer sur un rseau un systme de chiers).

Linux gre galement dautres systmes de chiers utiliss par dautres systmes dexploitation (Unix ou non). Il permet mme dintgrer un pseudo systme de chiers gnr par le noyau. Ce systme de chiers est compltement ctif : sa structure et ses chiers sont gnrs dynamiquement par le noyau lorsquune application y accde. Il est principalement utilis par les applications pour lire des informations que le noyau met leur disposition, ainsi que pour changer dynamiquement certains paramtres du noyau en les crivant simplement dans les chiers. Le systme de chiers natif de Linux EXT2 est de loin le systme de chiers le plus fonctionnel, le plus able et le plus courant, car il a t hautement optimis. Les principales fonctionnalits de EXT2 sont les suivantes :

les accs aux chiers sont rapides, mme plus rapides que les systmes de chiers bass sur la FAT sous Windows, qui pourtant ne grent pas les droits des utilisateurs ni les autres fonctionnalits avances des systmes de chiers Unix ; la fragmentation des chiers est quasiment inexistante. En fait, la fragmentation des chiers est si faible que lon peut lignorer en pratique. Cela provient de lalgorithme que EXT2 utilise pour allouer les blocs du disque dur lors de lcriture dans un chier : il cherche tout simplement donner systmatiquement les blocs les plus proches. Pour donner un ordre de grandeur de la fragmentation des chiers sur une partition de 800 Mo, aprs installation, suppression, manipulation dun grand nombre dapplications et de petits chiers, le tout ralis par plusieurs processus fonctionnant en mme temps, elle reste infrieure 1% sur 57571 chiers (sur un total de 249856 chiers que le systme de chiers pourrait contenir) ; quant la abilit, elle est gre grce un stockage redondant des principales structures de donnes internes. Ainsi, si une erreur apparat dans le systme de chiers, les parties dfectueuses peuvent tre reconstitues partir des informations sauvegardes. Cette rparation est ralise automatiquement chaque redmarrage de la machine si ncessaire.

Nous allons maintenant voir les quelques fonctionnalits additionnelles que EXT2 supporte. Notez bien ici que dautres systmes de chiers Unix peuvent fournir ces fonctionnalits, mais quil ne sera question ici que de EXT2 par souci de simplication. La premire fonctionnalit intressante est le support des droits daccs aux chiers pour les utilisateurs et pour les groupes. La gestion de ces droits est un impratif sous Unix. Comme on la dj vu, ces droits comprennent les droits daccs en lecture, en criture et en excution, plus les attributs spciaux des chiers. Ces droits sont xs indpendamment pour lutilisateur propritaire du chier, le groupe dutilisateur propritaire du chier, et tous les autres utilisateurs. Une autre fonctionnalit intressante est la possibilit de raliser des liens sur des chiers ou des rpertoires. Un lien est une rfrence un chier ou un rpertoire existant, qui peut tre manipul exactement comme sa cible. Il existe deux sortes de liens : les liens physiques, qui sont rellement une rfrence sur les donnes du chier au niveau de la structure mme du systme de chiers, et les liens symboliques, qui ne sont rien dautre quun chier additionnel contenant les informations ncessaires pour retrouver la cible. Les liens physiques prsentent les inconvnients de ne pas pouvoir rfrencer des rpertoires, et de ne pouvoir rfrencer que des objets du mme systme de chiers que celui dans lequel ils sont crs. La limitation sur les rpertoires permet dviter de construire des cycles dans la structure du systme

17

Chapitre 3. Concepts de base de chiers. Quant la limitation la frontire des systmes de chiers, elle est obligatoire puisque les liens physiques sont grs directement au niveau de la structure du systme de chiers. En revanche, ils prsentent des avantages certains :

le dplacement des cibles ne les perturbe pas si celles-ci restent dans le mme systme de chiers, parce que dans ce cas les donnes ne sont pas dplaces sur le disque ; la suppression de la cible ne dtruit pas le lien physique. Tous les liens physiques sur un chier partagent la mme structure de donnes du systme de chiers, et celle-ci nest rellement dtruite qu la destruction du dernier lien physique.

En fait, toute entre de rpertoire est un lien physique sur le contenu du chier. Le fait davoir plusieurs liens physiques sur les mmes donnes correspond disposer de plusieurs entres de rpertoire donnant accs aux mmes donnes dans le systme de chiers. Il serait possible de crer des liens physiques dans un systme de chiers FAT, mais ils seraient interprts comme des rfrences croises par les outils de vrication de disque. Le systme de chiers FAT de Linux interdit donc la cration des liens physiques, tout comme le font DOS et Windows. Les liens symboliques, quant eux, permettent de rfrencer des chiers ou des rpertoires se trouvant dans dautres systmes de chiers que le leur. Cest pour cette raison quils sont trs couramment utiliss (en fait, les liens physiques ne sont quasiment pas utiliss, parce quil est trs courant de faire un lien sur un rpertoire, ce que seuls les liens symboliques savent faire). En revanche, ils sont extrmement dpendants de leur cible : si elle est supprime ou dplace, tous les liens symboliques qui sy rfrent deviennent invalides. La rfrence sur le chier ou le rpertoire cible contenue dans les liens symboliques peut tre soit relative lemplacement de leur cible, soit absolue dans le systme de chiers. Chacune de ces mthodes a ses avantages et ses inconvnients : les liens symboliques qui contiennent des rfrences relatives ne sont pas briss lors dun dplacement de la cible, pourvu quils soient dplacs galement et restent la mme position relative par rapport celle-ci dans la hirarchie du systme de chiers. En revanche, ils sont briss sils sont dplacs et que la cible ne lest pas. Les liens symboliques utilisant des rfrences absolues sont systmatiquement briss lorsque la cible est dplace, mais ils restent valides lorsquils sont eux-mmes dplacs. Comme en gnral cest le comportement que lon recherche, les liens symboliques sont toujours crs avec des rfrences absolues, mais vous tes libre de faire autrement si vous en ressentez le besoin. Sachez cependant que dplacer une source de donnes nest jamais une bonne ide. Le tableau suivant rcapitule les avantages et les inconvnients des diffrents types de liens : Tableau 3-1. Caractristiques des liens physiques et symboliques Fonctionnalit Liens physiques Liens symboliques Rfrence relative Peuvent tre dplacs Suivent la cible Grent la suppression de la cible Oui Oui Oui Avec la cible Rfrence absolue Oui

Si dplacs avec elle Non Non Oui Non Oui

Peuvent rfrencer des cibles Non sur un autre systme de chiers

18

Chapitre 3. Concepts de base Fonctionnalit Liens physiques Liens symboliques Rfrence relative Peuvent rfrencer des rpertoires Non Oui Rfrence absolue Oui

Le systme de chiers EXT2 donne galement la possibilit de grer des chiers presque vides ( sparse les en anglais) et les quotas. Ces deux fonctionnalits sont relativement peu utilises par les particuliers, elles ne sont mentionnes ici quan dtre complet. Les chiers presque vides sont des chiers contenant des donnes spares par de grands espaces vides. Il est inutile de stocker ces espaces vides sur le disque, aussi EXT2 signale-t-il simplement que ce chier contient des trous, et il ne stocke que les donnes relles et la position des trous avec leur taille. Cela constitue une conomie de place non ngligeable. Les applications classiques des chiers presque vides sont les bases de donnes, qui utilisent souvent des chiers structurs contenant relativement peu de donnes effectives. Les quotas quant eux permettent dattribuer un espace disque xe chaque utilisateur. Ce nest rellement utile que pour les serveurs.
Note : Le systme de chiers EXT3, compltement compatible avec le systme de chiers EXT2, supporte galement une fonctionnalit avance qui permet de le rendre encore plus able : la journalisation. La journalisation consiste crire sur le disque toutes les oprations en cours chaque instant. Ainsi, lorsquun redmarrage intempestif se produit, le systme peut ramener rapidement la structure de donnes du systme de chiers dans un tat cohrent. La journalisation accrot donc encore la abilit du systme de chiers.

3.4. Structure du systme de chiers


Il est ncessaire de dnir un peu les termes qui vont tre utiliss dans cette section, car les systmes de chiers Unix sont trs diffrents des systmes de chiers du DOS et de Windows. La connaissance de ce vocabulaire est ncessaire pour la comprhension de la structure du systme de chiers de Linux. Comme la plupart des systmes de chiers, les systmes de chiers Unix sont structurs hirarchiquement, et regroupent les chiers dans des rpertoires. Il existe un rpertoire racine qui contient tous les chiers soit directement, soit indirectement dans ses sous-rpertoires. Cest de ce rpertoire que dbutent tous les chemins possibles dans le systme de chiers. Chaque chier ou rpertoire a un nom qui permet aux utilisateurs du systme de lidentier. Le seul rpertoire qui na pas de nom est le rpertoire racine. Les systmes de chiers Unix nont pas les mmes limitations sur les noms que les systmes de chiers FAT et FAT32. Les noms des chiers et des rpertoires peuvent tre trs longs (jusqu 256 caractres par nom), et ils prennent en compte la casse des lettres. Les chiers contiennent des donnes au sens large, ce peut tre des documents (texte, image, lm, son), des programmes, des donnes utilises par le systme ou tout autre type de donne imaginable. En fait, les rpertoires sont eux-mmes des chiers spciaux, interprts par le systme diffremment des autres chiers. Les donnes stockes dans les rpertoires sont simplement les entres de rpertoires, qui caractrisent et permettent davoir accs aux autres chiers et aux autres rpertoires. Les noms de rpertoires et de chiers sont spars par un caractre spcial. Ce caractre est traditionnellement, sous Unix, la barre oblique de division (nomme slash en anglais) : /. Les utilisateurs du DOS et de Windows prendront garde ici au fait que Microsoft a prfr la barre oblique inverse

19

Chapitre 3. Concepts de base (nomme backslash en anglais) \, rendant ainsi tous ses systmes incompatibles avec les systmes Unix, et gnrant ainsi beaucoup de problmes supplmentaires l o il ntait pas ncessaire den avoir (sincrement, le cot de cette nerie, ainsi que celle des marqueurs de n de ligne dans les chiers textes, doit atteindre des sommes astronomiques dans tous les projets de portage ou de dveloppement dapplications portables). Comme le rpertoire racine na pas de nom, il peut tre accd directement avec un simple slash :
/

La qualication complte dun chier se fait en prcisant le nom du rpertoire chaque niveau et en sparant par des slashes chacun de ces noms. Cette qualication porte le nom de chemin daccs ( path en anglais). Lexemple suivant vous montre lallure dun chemin daccs typique sous Unix :

/home/dupond.jean/lettres/professionnelles/marketing/ventes1999.sdw

La longueur maximale dun chemin daccs est de 4 ko dans le systme de chiers EXT2. Les utilisateurs du DOS et de Windows constateront ici que les chemins daccs Unix ne comportent pas de spcication de lecteur. Les systmes de chiers Unix sont dits mono-ttes, ce qui signie quils nont quun seul point de dpart : le rpertoire racine (alors que les systmes Microsoft sont multi-ttes, puisquils ont un point de dpart par lecteur et par partition). Le fait de navoir quun seul point de dpart est beaucoup plus simple et permet, encore une fois, dcrire les programmes plus simplement et donc avec moins de bogues potentiels. Je sens tout de suite venir la question de la part des habitus du DOS : Mais alors, comment spcie-t-on le lecteur que lon veut utiliser ? . Cette question a deux rponses. Premirement, on naccde pas aux lecteurs, mais aux systmes de chiers. Les utilisateurs du DOS devront donc rapprendre quun lecteur reprsente un priphrique physique, et quil est possible quil contienne plusieurs systmes de chiers. Ils devront galement se rendre compte quun systme de chiers nest pas ncessairement stock sur un lecteur : il peut tre stock dans un chier (cest le cas par exemple pour les images disques de CD-ROM), accessible par le rseau (cest le cas des systmes de chiers rseau, Network File System en anglais), ou encore gnr par un composant du systme (cest le cas des systmes de chiers virtuels du noyau). La question na donc pas beaucoup de sens telle quelle. Cependant, le problme de laccs aux systmes de chiers se pose malgr tout. La rponse ce problme-ci est cette fois la suivante : pour accder un systme de chiers, il faut raliser une opration que lon nomme le montage . Cette opration associe le rpertoire racine de ce systme de chiers lun des rpertoires de larborescence existante. Ce rpertoire est couramment appel point de montage . Par exemple, il est courant de monter le lecteur de disquette dans le rpertoire /floppy/. Ainsi, si la disquette contient le chier ventes1999.sdw, ce chier sera accessible grce au chemin suivant :
/floppy/ventes1999.sdw

Cette solution permet daccder tous les systmes de chiers de la mme manire, partir dun seul rpertoire racine, que ces systmes de chiers soient EXT2, FAT, ISO9660, NTFS ou Amiga... En pratique, cest nettement plus simple. Lopration de montage peut raliser bien plus doprations quune simple association dun systme de chiers un point de montage. En effet, elle peut gnrer les oprations suivantes :

chargement des pilotes pour ce systme de chiers ;

20

Chapitre 3. Concepts de base


allocation des zones de mmoire pour les entres/sorties en mmoire ; masquage des chiers et des rpertoires ventuellement prsents avant le montage dans le rpertoire utilis comme point de montage.

On prendra en particulier garde toujours dmonter les systmes de chiers pour les lecteurs amovibles. Linux utilise en effet des zones de la mmoire que lon appelle les tampons ( buffers en anglais), pour y stocker les donnes des systmes de chiers monts, et il ncrit ces donnes que lorsque cest ncessaire. Ce mcanisme permet dacclrer les lectures et les critures sur les disques, mais a linconvnient de ncessiter une requte de vidange des tampons (opration que lon appelle sync ) avant de retirer le lecteur ou avant dteindre le systme. Si on ne le fait pas, des donnes seront certainement perdues. Le systme effectue le sync lorsquil sarrte (par lune des commandes halt, shutdown ou reboot), mais il ne le fait pas si on coupe le courant brutalement. Cest pour cela quil faut toujours arrter le systme proprement. De manire similaire, Linux empche ljection des CD-ROM tant quils sont monts. En revanche, il ne peut rien faire pour les lecteurs de disquettes, cest lutilisateur de prendre garde les dmonter avant de retirer la disquette. Deux derniers points auxquels les utilisateurs de DOS et Windows devront faire attention :

les chiers ne sont pas identis par leur extension. Un nom de chier peut contenir un ou plusieurs points, et une extension peut tre arbitrairement longue. En particulier, un nom de chier peut commencer par un point. Dans ce cas, ce chier sera considr comme cach par les programmes, et on ne les verra que si on le demande explicitement ; les systmes de chiers Unix font la distinction entre les majuscules et les minuscules. Il faut donc prendre garde la manire dont on crit les noms de chiers et de rpertoires. Cependant, la plupart des rpertoires et des chiers ont un nom crit compltement en minuscules.

Nous allons prsent nous intresser lorganisation du systme de chiers de Linux. Ce systme de chiers contient un certain nombre de rpertoires et de chiers standards, qui ont chacun une fonction bien dnie. Cette structure standard permet de grer tous les systmes Linux de manire homogne : les programmes savent o trouver ce dont ils ont besoin. Ils sont donc portables dun systme un autre, et les utilisateurs ne sont pas dpayss lorsquils changent de machine (en fait, cette structure est peu prs la mme pour tous les systmes Unix, ce qui donne encore plus de poids largument prcdent). Cette organisation standard du systme de chiers a t conue de telle manire que les donnes et les programmes sont placs chacun leur place, et quils puissent tre facilement intgrs dans un rseau. Lintgration dans un rseau sous-entend que les chiers des programmes peuvent tre partags par les diffrentes machines de ce rseau, ce qui permet dconomiser beaucoup de place. De plus, il est possible daccder la plupart des ressources du systme grce une interface uniforme. En particulier, il est possible daccder tous les priphriques installs sur lordinateur par lintermdiaire de chiers spciaux, et on peut rcuprer des informations sur le systme mises disposition par le noyau simplement en lisant des chiers gnrs par un pseudo systme de chiers. Le tableau suivant dcrit les principaux lments de larborescence du systme de chiers de Linux. Tableau 3-2. Hirarchie standard du systme de chiers Rpertoire Signication

21

Chapitre 3. Concepts de base Rpertoire


/

Signication Rpertoire racine. Point de dpart de toute la hirarchie du systme de chiers. Le systme de chiers contenant ce rpertoire est mont automatiquement par le noyau pendant lamorage du systme. Ce systme de chiers est appel systme de chiers racine ( root en anglais). Rpertoire contenant le noyau de Linux et ses informations de symboles. Ce rpertoire est parfois le point de montage dun systme de chiers de trs petite taille, ddi au noyau. Dans ce cas, il est recommand que le systme de chiers correspondant soit mont en lecture seule. On notera que sur certains systmes, le noyau reste plac dans le rpertoire racine. Cette technique nest pas recommande, car on ne peut pas monter en lecture seule la partition racine en utilisation normale du systme. Noyau comprim de Linux. Les noyaux comprims se dcompriment automatiquement lors de lamorage du systme. Sur certains systmes, le noyau est encore plac dans le rpertoire racine du systme de chiers. Fichier systme contenant la liste des symboles du noyau. Ce chier est utilis par certains programmes donnant des renseignements sur le systme. En particulier, il est utilis par le programme top (programme qui indique la liste des principaux processus actifs) an de donner le nom de la fonction du noyau dans lequel un processus se trouve bloqu lorsquil est en attente de la n dune opration que le noyau doit excuter pour lui. Rpertoire contenant tous les chiers spciaux permettant daccder aux priphriques. Sous Linux, la plupart des priphriques sont accessibles au travers de chiers spciaux, grce auxquels lenvoi et la rception des donnes vers les priphriques peuvent tre raliss de manire uniforme. Il existe un tel chier pour chaque priphrique, et ils sont tous placs dans ce rpertoire. Les distributions installent souvent dans ce rpertoire les chiers spciaux pour la plupart des priphriques, mme sils ne sont pas physiquement prsents dans la machine. Dans ce cas, les oprations sur les chiers spciaux des priphriques non installs seront tout simplement refuses par le noyau. Une autre possibilit est dutiliser un systme de chiers virtuel, gr directement par le noyau. Le rpertoire /dev/ ne contient dans ce cas que les chiers spciaux des priphriques pour lesquels le noyau dispose dun gestionnaire intgr ou charg dynamiquement. Quelle que soit la technique utilise, ce rpertoire doit tre imprativement plac dans le systme de chiers racine. Rpertoire contenant les commandes systmes ncessaires lamorage et rserves ladministrateur. Ce rpertoire doit tre imprativement plac dans le systme de chiers racine. En gnral, seul ladministrateur utilise ces commandes. Rpertoire contenant les commandes systmes gnrales ncessaires lamorage. Ce rpertoire doit tre imprativement plac dans le systme de chiers racine. Tous les utilisateurs peuvent utiliser les commandes de ce rpertoire. Rpertoire contenant les bibliothques partages ( DLL en anglais, pour Dynamic Link Library ) utilises par les commandes du systme des rpertoires /bin/ et /sbin/. Ce rpertoire doit tre imprativement plac dans le systme de chiers racine.

/boot/

/boot/vmlinuz

/boot/System.map

/dev/

/sbin/

/bin/

/lib/

22

Chapitre 3. Concepts de base Rpertoire


/lib/modules/

Signication Ce rpertoire contient les modules additionnels du noyau. Les modules sont des composants logiciels du noyau, mais qui ne sont pas chargs immdiatement pendant la phase damorage du systme. Ils peuvent en revanche tre chargs et dchargs dynamiquement, lorsque le systme est en fonctionnement. Il est fortement recommand que ce rpertoire soit plac dans le systme de chiers racine. Rpertoire contenant tous les chiers de conguration du systme. Ce rpertoire doit tre imprativement plac dans le systme de chiers racine. Rpertoire contenant les chiers de conguration de lenvironnement graphique XWindow. Dans certaines distributions, ces chiers sont placs directement dans le rpertoire /etc/, mais ce nest pas une technique recommandable. Rpertoire contenant les chiers de conguration des applications. Rpertoire permettant de stocker des donnes temporaires. En gnral, /tmp/ ne contient que des donnes trs phmres. Il est prfrable dutiliser le rpertoire /var/tmp/. En effet, le rpertoire /tmp/ ne dispose pas ncessairement de beaucoup de place disponible. Rpertoire contenant les chiers du systme partageables en rseau et en lecture seule. Rpertoire contenant la plupart des commandes des utilisateurs. Rpertoire contenant les commandes systmes non ncessaires lamorage. Ces commandes ne sont normalement utilises que par ladministrateur systme. Rpertoire contenant les bibliothques partages de tous les programmes de /usr/bin/ et /usr/sbin/ et les bibliothques statiques pour la cration de programmes. Rpertoire contenant les chiers den-ttes du systme pour le compilateur C/C++. Les chiers de ce rpertoire sont utiliss pour raliser des programmes dans les langages de programmation C et C++. Rpertoire contenant X11R6 et ses applications. Ce rpertoire contient des sous-rpertoires bin/, lib/ et include/, o se trouvent les excutables de XWindow, les bibliothques et les chiers den-ttes pour crer des programmes pour XWindow en C et C++. Rpertoire contenant les chiers sources du noyau et des applications de la distribution. Normalement, ce rpertoire ne doit contenir que le code source des applications dpendantes de la distribution que vous utilisez. Sources du noyau de Linux. Il est vivement recommand de conserver les sources du noyau de Linux sur son disque, an de pouvoir changer la conguration du systme tout moment.

/etc/

/etc/X11/

/etc/opt/ /tmp/

/usr/ /usr/bin/ /usr/sbin/

/usr/lib/

/usr/include/

/usr/X11R6/

/usr/src/

/usr/src/linux/

23

Chapitre 3. Concepts de base Rpertoire


/usr/local/

Signication Rpertoire contenant les programmes dextension du systme indpendants de la distribution. Ce nest toutefois pas le rpertoire dinstallation des applications, que lon installera en gnral dans le rpertoire /opt/. local ne signie pas ici que les programmes qui se trouvent dans ce rpertoire ne peuvent pas tre partags sur le rseau, mais plutt que ce sont des extensions du systme quon ne trouve donc que localement sur un site donn. Ce sont donc les extensions qui ne font pas partie de la distribution de Linux utilise, et qui doivent tre conserves lors des mises jour ultrieures de cette distribution. Ce rpertoire contient les sous-rpertoires bin/, lib/, include/ et src/, qui ont la mme signication que les rpertoires du mme nom de /usr/, ceci prs quils ne concernent que les extensions locales du systme, donc indpendantes de la distribution. Rpertoire contenant toutes les donnes variables du systme. Ce rpertoire contient les donnes variables qui ne pouvaient pas tre places dans le rpertoire /usr/, puisque celui-ci est normalement accessible en lecture seule. Rpertoire contenant les chiers temporaires. Il est prfrable dutiliser ce rpertoire plutt que le rpertoire /tmp/. Rpertoire contenant les donnes variables des applications. Rpertoire contenant les traces de tous les messages systme. Cest dans ce rpertoire que lon peut consulter les messages derreurs du systme et des applications. Rpertoire contenant les donnes en attente de traitement. Les travaux dimpression en cours, les mails et les fax en attente dmission, les travaux programms en attente dexcution sont tous stocks dans ce rpertoire. Rpertoire contenant les verrous sur les ressources systme. Certaines ressources ne peuvent tre utilises que par une seule application (par exemple, un modem). Les applications qui utilisent de telles ressources le signalent en crant un chier de verrou dans ce rpertoire. Rpertoire contenant les donnes de rsultats intermdiaires des applications. Les applications qui doivent stocker des rsultats intermdiaires doivent les placer dans ce rpertoire. Rpertoire contenant les applications. Cest dans ce rpertoire que les applications qui ne font pas rellement partie du systme doivent tre installes. Les applications graphiques devraient tre installes dans ce rpertoire. Cest en particulier le cas des gestionnaires de bureau. Les seules applications graphiques considres comme faisant partie du systme sont les applications de X11, qui sont donc stockes dans /usr/X11R6/. Il est recommand que ce rpertoire soit plac sur un systme de chiers en lecture seule, et que les applications utilisent le rpertoire /var/opt/ pour travailler. Rpertoire contenant les rpertoires personnels des utilisateurs. Il est bon de placer ce rpertoire dans un systme de chiers indpendant de ceux utiliss par le systme.

/var/

/var/tmp/ /var/opt/ /var/log/

/var/spool/

/var/locks/

/var/cache/

/opt/

/home/

24

Chapitre 3. Concepts de base Rpertoire


/root/

Signication Rpertoire contenant le rpertoire personnel de ladministrateur. Il est donc recommand que le rpertoire personnel de ladministrateur soit plac en dehors de /home/ pour viter quun problme sur le systme de chiers des utilisateurs ne lempche de travailler. Toutefois, il est important que ladministrateur puisse travailler mme si les rpertoires /root/ et /home/root/ ne sont pas prsents. Dans ce cas, son rpertoire personnel sera le rpertoire racine. Rpertoire rserv au montage des systmes de chiers non-permanents (CD-ROM, disquettes, etc.). Ce rpertoire peut contenir plusieurs sous-rpertoires pour chaque priphrique amovible, an de permettre den monter plusieurs simultanment. Notez quil est assez courant de disposer de liens symboliques dans la racine rfrenant les principaux systmes de chiers, an den simplier laccs. Par exemple, il est courant davoir un rpertoire /floppy/ rfrenant le lecteur de disquette et un rpertoire /cdrom/ rfrenant le lecteur de CD-ROM. Rpertoire contenant les donnes rcupres lors de la rparation dun systme de chiers endommag. Ces donnes sont crites par les utilitaires de vrication et de rparation des systmes de chiers lorsquils trouvent des informations qui ne peuvent tre rattaches aucun chier existant, ainsi, il est possible de rcuprer ces informations si elles ne sont pas dans un tat de dtrioration trop avanc. Rpertoire contenant le pseudo systme de chiers du noyau. Ce pseudo systme de chiers contient des chiers permettant daccder aux informations sur le matriel, la conguration du noyau et sur les processus en cours dexcution.

/mnt/

/lost+found/

/proc/

Note : Les informations donnes ici peuvent ne pas tre correctes pour votre distribution. En effet, certaines distributions utilisent une structure lgrement diffrente. Les informations donnes ici sont conformes la norme de hirarchie de systmes de chiers version 2.0 ( FHS en anglais). Vous pouvez consulter ce document pour une description exhaustive du systme de chiers de Linux.

Vous avez pu constater que les rpertoires bin/, lib/, include/ et src/ apparaissent rgulirement dans la hirarchie du systme de chiers. Cela est normal : les rpertoires sont classs par catgorie dapplications et par importance. Les rpertoires bin/ contiennent en gnral les programmes, et les rpertoires lib/ les bibliothques partages par ces binaires. Cependant, les rpertoires lib/ peuvent aussi contenir des bibliothques statiques, qui sont utilises lors de la cration de programmes. En gnral, tous les systmes Unix fournissent en standard un compilateur pour raliser ces programmes. Dans le cas de Linux, ce compilateur est gcc (pour GNU C Compiler ). La cration dun programme ncessite que lon dispose des chiers sources, qui contiennent le programme crit dans un langage de programmation, des chiers den-ttes, qui contiennent les dclarations de toutes les fonctions utilisables, et des chiers de bibliothques statiques, contenant ces fonctions. Ces diffrents chiers sont stocks respectivement dans les rpertoires src/, include/ et lib/. Les notions de sources et de compilation seront dcrites en dtail dans le Chapitre 7.

25

Chapitre 3. Concepts de base

26

Chapitre 4. Installation du systme de base


Maintenant que vous connaissez tout des grands principes de Linux (et de la plupart des systmes Unix), vous devez brler dimpatience de linstaller et de commencer exploiter toutes ses possibilits. Cependant, il faut ne pas tomber dans le travers de ceux qui veulent imprativement utiliser une fonctionnalit sous prtexte quelle est disponible. Il se peut que vous ayez envie de les essayer, parce que vous en avez t priv depuis longtemps. Ce comportement est tout fait normal, mais vous allez devoir refrner vos envies, pour deux raisons. La premire est quil va falloir installer Linux au pralable, et la deuxime est quil ne faut pas faire un sac de nuds avec vos donnes. Vous pourrez exprimenter loisir, mais il faudra rester srieux ds que vous toucherez au systme. Comprenez bien que linstallation et la conguration de Linux doivent se faire pas pas. Griller les tapes peut se rvler tre une erreur, car cela rendrait les choses plus compliques quelles ne le sont. La conguration minimale supporte par Linux est un 386 avec au minimum 12 Mo de mmoire vive. Il va de soi quavec un tel foudre de guerre, vous ne pourrez pas aller bien loin, et une conguration minimale plus raisonnable serait plutt un 486DX2 66MHz avec au moins 32Mo de mmoire. La quantit de mmoire est de loin le facteur le plus important, et si vous voulez utiliser lenvironnement graphique X11, il faut au minimum compter sur 64 Mo de mmoire vive. Vous pourrez donc parfaitement transformer un vieux 486 ou pentium en routeur ou en Firewall avec partage de connexion Internet par exemple. Vous naurez donc certainement aucun problme avec les ordinateurs puissants qui se vendent actuellement.

4.1. Rcupration des informations sur le matriel


Avant de commencer quoi que ce soit, vous devriez rcuprer le maximum de donnes concernant votre matriel. En effet, ces informations peuvent tre particulirement utiles pour diagnostiquer la cause des ventuels problmes de conguration du matriel que vous pourriez rencontrer. Vous aurez aussi peut tre spcier certains paramtres matriels lors de linstallation et, dans le pire des cas, lors du premier dmarrage de Linux. Les informations dont vous aurez certainement besoin sont les suivantes :

type de processeur, avec sa marque et ventuellement sa vitesse ; type de carte mre, avec sa marque et imprativement son chipset ; type de branchement de la souris (srie, PS/2, USB, interface bus propritaire) ; nombre de ports srie, ainsi que leurs paramtres (ports dentre/sortie, lignes dinterruption) ; nombre de ports parallles, ainsi que leurs paramtres (ports dentre/sortie, lignes dinterruption) ; si vous disposez dun contrleur SCSI, marque et modle de ce contrleur (modle du chipset de la carte SCSI) ; sinon, nom du contrleur de disque IDE (regardez sur le chipset de la carte mre !) ; types de disques durs (IDE, IDE UltraDMA 33, 66 ou 100, SCSI), ainsi que leurs taille et leur position dans le systme (contrleurs auxquel ils sont connects, numros dunits logiques SCSI) ; types de lecteurs ou de graveur de CD-ROM ou de DVD (IDE, ATAPI, SCSI, connect sur carte son) et le type de leur branchement sils sont externes (port parallle, SCSI ou USB) ; nom, modle et marque de la carte graphique, type de chipset utilis par cette carte et taille de sa mmoire vido ;

27

Chapitre 4. Installation du systme de base

nom, modle et marque de lcran, avec ses frquences de balayage horizontales et verticales, sa bande passante et les frquences recommandes par le constructeur pour les diffrentes rsolutions ; type de carte son (ISA, PCI, PnP) ainsi que le nom du chipset utilis par cette carte ; type de carte rseau (ISA, PCI, PnP) ainsi que le nom de son chipset ; type de modem (interne, externe) et, si le modem est interne, sa nature (modem complet ou mulation).

Vous pouvez obtenir ces informations en consultant la documentation fournie avec votre ordinateur, les sites Web des constructeurs des diffrents composants, les informations fournies par le programme de conguration du BIOS ou afches directement par le BIOS au dmarrage de la machine, ou tout simplement en ouvrant le botier de la machine et en regardant ce quil y a lintrieur. Vous pouvez galement rcuprer les informations indiques dans la conguration de MS Windows si celui-ci est install. Il se peut que vous nayez pas besoin de ces informations et que linstallation se passe sans problmes. Cependant, si daventure Linux exige que vous les connaissiez, mieux vaut pouvoir lui rpondre.
Note : Bien que cela soit assez rare, certains composants ou priphriques additionnels peuvent ne pas tre grs par Linux, faute davoir un gestionnaire de priphriques adquat (cet tat de fait est en gnral d une rtention dinformations de la part des fabricants, qui empchent ainsi les dveloppeurs de Linux dcrire les gestionnaires de priphriques dans de bonnes conditions). Cest en particulier le cas de nombre de priphriques bas de gamme conus pour ne fonctionner quavec MS Windows, ou de quelques priphriques exotiques. Les Winmodems ont une triste rputation ce sujet (il sagit de modems incomplets, dont une partie du traitement de signal est report dans un logiciel spcique Windows), ainsi que des imprimantes dites GDI , qui ne comprennent que les commandes graphiques de Windows. Vous pourrez galement avoir des problmes avec des cartes de numrisation vido analogiques ainsi que certaines cartes de dcompression MPEG. Certaines marques se distinguent par le fait quelles refusent obstinment de dvelopper des gestionnaires de priphriques pour leur matriel ou, pire encore, de fournir les informations ncessaires aux dveloppeurs de Linux pour crire ces gestionnaires sous licence libre. Il est donc recommand, comme toujours, de bien se renseigner auprs des vendeurs et des groupes de discussion avant tout achat de matriel... Vous pourrez trouver une liste (non exhaustive) de matriel test sous Linux dans la liste de matriel compatible Linux (http://www.linuxdoc.org/HOWTO/Hardware-HOWTO/). La Linux Hardware Database (http://lhd.datapower.com/) vous permettra galement deffectuer une recherche sur nimporte quel type de matriel et sur nimporte quel modle trs facilement. Il existe dautres sites ralisant priodiquement des tests sur le matriel rcent, comme par exemple LinuxHardware (http://www.linuxhardware.org).

4.2. Sauvegarde des donnes


Linstallation du systme de base est lopration la plus dlicate, puisquil faut travailler au niveau le plus bas. La moindre erreur peut provoquer une catastrophe, ce qui peut aller jusqu recommencer compltement linstallation. Si vous installez Linux pour la premire fois sur votre ordinateur, ou sil ny a pas dautre systme dexploitation install dessus, vous en serez quitte pour quelques heures perdues. Sinon, ce qui est le plus craindre, cest la perte totale de vos donnes, y compris celles des autres systmes installs ! Donc :
IL FAUT DONC FAIRE UNE SAUVEGARDE DE VOS DONNES !

28

Chapitre 4. Installation du systme de base

La manire de procder dpend bien entendu des systmes dexploitation ventuellement dj installs. Gnralement, il sagit de Microsoft Windows. Si vous disposez dun lecteur de bande, le problme de la sauvegarde est trs simple : vous navez qu faire une sauvegarde complte. Dans le cas contraire, vous allez sans doute devoir trier vos chiers an didentier ceux auxquels vous tenez rellement, et les recopier sur un support physique able (vitez absolument les disquettes, ils sont lents et nont jamais t ables). Vous pouvez par exemple faire un CD de sauvegarde si vous disposez dun graveur de CD. En fait, lidal est tout simplement de disposer dun autre disque dur, que lon pourra consacrer compltement linstallation de Linux. Ainsi, vous pourrez exprimenter tout loisir, sans craindre de perdre vos prcieuses donnes. De plus, linstallation de Linux sur un disque vierge est nettement plus facile que sur un disque o Windows est dj install, parce que vous navez pas dgager de la place pour son installation. Prenez toutefois garde au fait que Linux restera capable daccder aux donnes de votre premier disque dur, et que toute erreur de manipulation peut dtruire les donnes qui sy trouvent. Par exemple, si vous ne spciez pas le bon disque dur lors de la cration des systmes de chiers, vous perdrez nouveau toutes vos donnes. Lachat dun tiroir peut tre la vraie solution, car vous naurez alors quun seul disque un instant donn dans votre ordinateur. Toutefois, cette technique a linconvnient de ne pas vous permettre daccder aux donnes de votre disque Windows partir de Linux.

4.3. Amorage
Pour commencer votre installation, vous devez avant tout dmarrer votre ordinateur sous Linux. La mthode la plus simple est certainement de mettre le CD damorage de votre distribution dans le lecteur de CD et de redmarrer lordinateur. Il faut que votre BIOS soit congur pour amorcer le systme sur le lecteur de CD pour que cette solution fonctionne. Si votre BIOS ne vous permet pas de le faire, il ne vous reste plus qu utiliser lune des disquettes fournies avec votre distribution. Dans tous les cas, Linux doit se lancer, et le programme dinstallation doit dmarrer. Suivez les indications fournies avec votre distribution pour cette tape. Le noyau de Linux qui est fourni avec votre distribution est un noyau qui a t spcialement conu pour dmarrer correctement sur le plus grand nombre de machines possibles. Il contient donc les pilotes ( drivers en anglais) pour votre disque dur, ainsi que pour dautres types de disques. Il se peut mme que plusieurs noyaux vous aient t livrs avec votre distribution. Chacun de ces noyaux permet de dmarrer sur un certain type dordinateur. Lorsquil se lance, Linux tente de dtecter le matriel de votre ordinateur. Seuls les pilotes correspondant votre matriel sactivent, les autres sont tout simplement ignors. Il se peut cependant que Linux ne dtecte pas vos disques durs. Cela peut arriver surtout pour les disques SCSI. Dans ce cas, soit il faut changer de noyau, soit il faut utiliser des pilotes additionnels, qui peuvent tre chargs la demande. Ces pilotes sont appels des modules du noyau. Ces modules sont en gnral accessibles directement sur le CD-ROM ou la disquette de dmarrage, ou sur une disquette complmentaire. Si Linux ne dtecte pas vos disques durs, vous serez oblig dindiquer les modules charger au programme dinstallation. Si cela ne fonctionne toujours pas, vous devrez ramorcer votre systme avec un noyau plus adapt votre matriel. Pour cela, vous aurez sans doute besoin de crer une disquette damorage pour ce noyau, et de lutiliser la place de votre lecteur de CD. En gnral, les distributions fournissent un petit utilitaire DOS nomm RAWRITE.EXE qui permet de crer une disquette damorage partir dun noyau trs simplement. Il sutilise avec la ligne de commande suivante :
rawrite image lecteur:

29

Chapitre 4. Installation du systme de base o image est limage dune des disquettes damorage (que vous trouverez sur le CD damorage de votre distribution), et lecteur est le lecteur de disquette utilis (en gnral, A: ). Vous pouvez aussi consulter la documentation de votre distribution pour savoir comment indiquer au noyau les modules quil doit charger, ou comment crer une disquette de dmarrage pour un autre noyau. Dans la majorit des distributions, les outils ncessaires linstallation sont placs sur un disque virtuel en mmoire aprs le dmarrage de Linux. Cest en particulier le cas du programme dinstallation. Cela est normal, puisque Linux nest pas encore install, dune part, et que ces outils ne tiennent pas facilement sur une disquette, dautre part. Ces outils sont donc souvent comprims. Vous devez malgr tout avoir dj accs aux priphriques de votre ordinateur, en particulier aux disques, pour poursuivre votre installation.

4.4. Partitionnement du disque


La deuxime opration aprs le dmarrage du systme est le partitionnement du disque dur. Cette tape est de loin la plus dangereuse, mais elle est absolument ncessaire. Elle ne pose pas de problmes lorsquon installe Linux sur une machine neuve, mais peut tre dlicate si un autre systme dexploitation est dj install ou doit tre install en parallle. Cette section dcrit les principes de base du partitionnement, la manire de rcuprer de la place sur un disque dur et lopration de partitionnement proprement dite.

4.4.1. Notion de partition et damorage du systme


Une partition est, comme son nom lindique, une partie dun disque dur. Les partitions permettent de diviser lespace de stockage des disques durs en zones indpendantes de taille restreinte, et dans lesquelles diffrents systmes ou diffrentes donnes peuvent tre stockes de manire totalement indpendante. Lopration de partitionnement est lopration de cration des diffrentes partitions dun disque dur. Linstallation de plusieurs systmes dexploitation ncessite souvent dallouer une partition chaque systme, car les systmes dexploitation ne comprennent gnralement pas le format des systmes de chiers les uns des autres. Il est galement parfois ncessaire, pour un mme systme, de dnir plusieurs partitions, qui seront utilises des ns spciques. Par exemple, Linux fonctionne nettement mieux si on lui attribue une partition de swap (dite aussi partition dchange ) pour stocker des donnes peu utilises qui se trouve en mmoire, lorsquil a besoin de plus de mmoire quil nen est physiquement installe sur la machine. De mme, il est possible de crer plusieurs partitions pour sparer les donnes utilisateurs des programmes, ce qui permet de faciliter les mcanismes de sauvegarde dune part, et dassurer une plus grande scurit des donnes lors des oprations de maintenance du systme dautre part. Sur les machines de type PC, chaque disque dur peut tre dcoup en quatre partitions dites primaires . La position, la taille et le type de ces partitions sont enregistres dans le premier secteur du disque dur, que lon appelle souvent le Master Boot Record ( MBR en abrg). Le MBR ne contient que quatre entres pour la dnition des partitions, do la limite de quatre partitions primaires. Le type des partitions est un code numrique qui indique le systme dexploitation capable de lutiliser et sa nature (partition de swap ou systme de chiers par exemple). titre dexemple, Linux utilise principalement deux types de partition : les partitions de swap (numro 82) et les partitions pour les systmes de chiers (type 83). La dnition des partitions se fait donc en donnant leur adresse de dpart, leur taille et leur type. Ladresse de dpart et la longueur des partitions sont exprimes en secteurs. Un secteur est lunit de base pour les donnes des disques durs, qui correspond un bloc de 512 octets utiles (auxquels

30

Chapitre 4. Installation du systme de base sajoutent bien entendu dventuels octets de contrle derreur, mais qui ne sont manipuls que par le disque dur lui-mme et par son contrleur, et que lon ne peut donc pas utiliser pour y stocker des donnes). Cela dit, certains systmes (ceux de Microsoft) ne permettent pas une telle nesse dans la dnition des partitions et ncessitent de travailler au niveau du cylindre.
Note : Pour comprendre ce quest un cylindre, il faut savoir que les donnes des disques durs sont stockes sur les faces magntiques de plateaux en rotation, au dessus (et en dessous) desquelles les ttes de lecture/criture du disque se dplacent radialement. Les donnes sont donc crites en cercles concentriques sur les diffrents plateaux en raison de leur rotation sous les ttes de lecture (contrairement aux microsillons et aux CD, il sagit bien ici de cercles et non dune spirale car les ttes de lecture/criture restent une position xe pendant la rotation des plateaux). On appelle ces cercles des pistes ( track en anglais). Chaque tte accde donc une piste et une seule un instant donn, sur laquelle les secteurs sont enregistrs. Comme toutes les ttes sont solidaires (elles se dplacent ensemble lorsque lune dentre elles doit changer de piste), les diffrentes pistes des diffrents plateaux sont accdes simultanment. Lensemble de ces pistes, situs un rayon donn pour tous les plateaux, constitue ce que lon appelle un cylindre . Les paramtres des disques durs sont donc exprims en termes de nombre de ttes, de cylindres et de secteurs par piste.

Figure 4-1. Pistes et secteurs dun disque dur

Vous remarquerez souvent que le nombre de ttes est impair, alors quen gnral, un plateau a deux faces... Cela est d au fait que les fabricants de disques durs conservent toujours une face dun plateau pour y crire des donnes de contrle permettant aux ttes de lecture/criture de se positionner ou pour y placer des pistes complmentaires en cas de zones dfectueuses sur la surface de lun des autres plateaux.

Bien entendu, la limitation quatre partitions seulement est extrmement contraignante, aussi la notion de partition tendue a-t-elle t introduite. Une partition tendue est une partition primaire spciale, dans laquelle il est possible de dnir jusqu 64 sous-partitions. Ces sous-partitions sont appeles des partitions logiques . Les donnes ne sont jamais stockes dans la partition tendue elle-mme, mais dans ses partitions logiques. On ne peut dnir quune seule partition tendue sur un disque donn, mais cela nempche pas davoir des partitions primaires normales ct de celle-ci. Il est donc recommand, lorsque lon cre la quatrime partition, de crer une partition tendue et non une partition primaire, an de se rserver la possibilit de crer de nouvelles partitions ultrieurement. Il faut toutefois savoir que certains systmes ne peuvent pas tre installs sur des partitions logiques

31

Chapitre 4. Installation du systme de base (notamment DOS et Windows 9x/Millenium), bien quils soient capables dy accder une fois quils ont dmarr. Figure 4-2. Partitions primaires et partitions logiques

Outre la table des partitions primaires, le MBR contient un petit programme appel le bootstrap loader qui permet de charger le premier secteur dune des partitions primaires. Ce secteur est communment appel le secteur de boot , parce quil contient le programme capable de charger le systme dexploitation. La partition dont le secteur de boot est charg par le bootstrap loader est appele la partition active . Il ne peut y avoir quune seule partition active chaque instant : celle du systme dexploitation principal. Gnralement, le programme stock sur le secteur de boot dune partition a pour but de charger le systme dexploitation qui y est install. Cependant, pour certains systmes dexploitation, ce programme est trs volu et permet de lancer dautres systmes dexploitation, ventuellement installs sur dautre partitions ou dautres disques durs. Ces programmes sont alors appels des gestionnaires damorage . Linux dispose de deux gestionnaires damorage trs puissants : le GRUB et LILO. Windows NT, 2000 ou XP disposent galement dun gestionnaire damorage capable de lancer dautres systmes dexploitation : NTLDR. Pour rsumer, lors du dmarrage dun PC, le BIOS charge le MBR du premier disque dur en mmoire et excute le bootstrap loader. Celui-ci cherche ensuite charger le secteur de boot de la partition active, et excute le gestionnaire damorage qui sy trouve. Ce gestionnaire peut donner accs aux diffrents systmes dexploitation, quils soient situs sur dautres partitions ou mme dautres disques durs. La manire dont chaque systme est lanc dpend bien sr du systme. Il faut donc, en gnral, lancer chaque systme dexploitation avec son propre chargeur. Cependant, on peut toujours utiliser un gestionnaire damorage dun autre systme en rusant quelque peu : il suft dindiquer ce gestionnaire de charger le secteur de boot de la partition dinstallation du systme que lon dsire lancer si celui-ci nest pas pris en charge directement. Dans ce cas, le gestionnaire damorage ne fait que passer la main au chargeur de lautre systme. La manire de procder pour installer LILO, le GRUB ou NTLDR sera dcrite dans la Section 4.8. Figure 4-3. Master boot record et secteurs de boot

32

Chapitre 4. Installation du systme de base

4.4.2. Plan de partitionnement


Avant de se lancer dans lopration de partitionnement proprement dite, il faut tablir un plan de partitionnement. Cela consiste tout simplement dterminer la taille et la nature de chaque partition dans le systme. Il est normal, sur un systme o seul Linux sera utilis, de disposer dau moins trois partitions :

une partition de swap, que Linux utilisera pour y stocker temporairement des donnes lorsquil aura besoin de rcuprer un peu de place en mmoire. Il est recommand de placer cette partition au dbut du disque (cest dire au plus prs du cylindre 0, l o le taux de transfert est le plus rapide) ; une partition pour le systme de chiers racine (point de montage /), dans laquelle doit se trouver lensemble des chiers du systme. Cette partition doit se trouver dans les 1024 premiers cylindres pour que le BIOS puisse y accder et charger le gestionnaire damorage du systme ; une partition devant contenir les donnes des utilisateurs (point de montage /home/).

Lavantage davoir une partition spare pour toutes les donnes des utilisateurs est considrable, puisque dans ce cas on peut mettre jour le systme ou le rinstaller compltement sans avoir faire de sauvegarde de ses donnes. De plus, les chiers de conguration importants peuvent tre sauvegards sur cette partition avant la rinstallation, ce qui est extrmement pratique. Ce type de partitionnement est prendre srieusement en considration, surtout pour les machines de particuliers, sur lesquelles un grand nombre de programmes peuvent tre installs simplement pour les tester. Il nest donc pas rare, dans ces conditions, davoir refaire une installation complte pour nettoyer rapidement le systme. Toutefois, si lon ne dispose pas de beaucoup de place sur le disque, il est possible de regrouper la partition racine et la partition contenant les donnes utilisateurs. Un mauvais dimensionnement de ces partitions aura dans ce cas de moins lourdes consquences (si une partition est pleine, on ne peut pas facilement utiliser lespace restant sur les autres partitions). Si votre machine est destine accueillir plusieurs systmes dexploitation, il est vivement recommand de crer au moins une partition FAT ou FAT32. Cette partition permettra en effet dchanger des donnes entre Linux et les autres systmes dexploitation, car les systmes de chiers FAT sont reconnus par tous les systmes dexploitation courants. Notez que si Windows NT4 doit tre install, vous devrez crer une partition FAT plutt quune partition FAT32, car Windows NT ne reconnat pas, sans programmes additionnels, les partitions FAT32. Ce problme ne se pose plus pour Windows 2000 et pour XP. Notez galement que bien que Linux sache parfaitement lire les partitions NTFS (utilises par Windows NT4, Windows 2000 et par XP), lcriture sur ces partitions est exprimentale et nest donc pas conseille. Inversement, aucun systme Windows ne sait lire les systmes de chiers Linux, quels quils soient. Avoir une partition FAT est donc incontournable dans ce cas de conguration. Si la machine doit tre dune abilit absolue ou si vous tes soumis des contraintes dexploitation fortes, vous pouvez opter pour des solutions radicales qui consistent sparer les donnes dexploitation (normalement situes dans le rpertoire /var/) des chiers des programmes, et de les placer dans une partition ddie. Vous pourrez alors ne monter que cette partition en lecture/criture. Ainsi, en cas de crash systme, seule la partition contenant les donnes dexploitation devra tre rpare, ou lextrme rigueur rinitialise compltement par les scripts de dmarrage. Rien ne vous empche de crer dautres partitions si vous le dsirez. Sachez cependant que les systmes de chiers de Linux ne sont pas aussi limits que les systmes de chiers FAT et FAT32 en ce qui concerne les tailles maximales des partitions et que, par consquent, crer une multitude de partitions nest pas ncessaire et nest certainement pas une bonne ide. La cration de partitions

33

Chapitre 4. Installation du systme de base supplmentaires peut malgr tout savrer ncessaire, par exemple pour y installer dautres systmes dexploitation. Dans ce cas, vous aurez certainement crer une partition tendue et des partitions logiques. La grande difcult dans ltablissement du plan de partitionnement est de bien dterminer ses besoins en place disque, aussi bien pour les programmes que pour les donnes et le swap. Cependant, dune manire gnrale, on peut considrer que ce qui est le plus important pour un particulier, ce sont ses donnes, et que le systme ne va pas prendre des dizaines de giga-octets sur le disque ! Si vous dcidez de placer les programmes et les donnes utilisateurs dans deux partitions spares, vous pouvez envisager le plan de partitionnement suivant :

une partition de swap : deux fois la mmoire vive de lordinateur si vous ne disposez pas de beaucoup despace disque, 256 Mo sinon. Il est inutile de consacrer plus de place que cela, car il est trs rare davoir besoin de plus de 384 Mo de mmoire virtuelle (la mmoire virtuelle est la somme de la mmoire libre et de la taille des partitions ou chiers dchange). Notez que la rgle du double de la mmoire vive est tout fait empirique. Elle se base sur le principe que si le systme a besoin de plus de swap, cest que de toutes faons il nest pas dimensionn pour ce quon lui demande de faire. Cela dit, vous pouvez mettre autant de swap que vous le dsirez si vous en avez rellement besoin (par exemple pour manipuler de trs grandes photos ou des chiers de trs grande taille). Si vous avez un gros disque, vous pouvez utiliser une trs grande partition de swap : elle ne sera quasiment pas utilise, mais le jour o vous en aurez besoin, elle sera l. Aprs tout, abus de bien ne nuit pas... Sachez toutefois que de toutes faons, si un jour il fallait plus de mmoire virtuelle, vous pourriez crer un chier dchange temporaire ; une partition racine, contenant le systme, les programmes et les chiers de conguration : environ 2 Go. Il est possible de travailler avec 1 Go, mais on nest vraiment pas laise avec XWindow ou si lon dsire compiler des programmes rcuprs sur Internet (ce qui est assez courant). Il est inutile de dpasser les 3 Go pour cette partition, si lon a besoin de plus de place, cest que le rpertoire des donnes de travail /var/ devient trop gros et dans ce cas on a intrt le placer sur une partition qui lui est ddie. Notez que lon a intrt placer cette partition au dbut du disque pour deux raisons : premirement, cest cet endroit que le disque dur est le plus rapide, et deuximement, certains BIOS ne sont pas capables daccder aux cylindres de numro suprieur 1024 et ne peuvent donc pas accder au gestionnaire damorage du systme sil est install sur cette partition ; une partition pour les rpertoires personnels des utilisateurs : le reste de lespace disponible sur le disque moins, bien entendu, lespace ncessaire aux partitions des autres systmes dexploitation et celui dune ventuelle partition de sauvegarde ou dchange de donnes ; enn, si ncessaire, une partition de sauvegarde ou dchange de donnes entre les diffrents systmes dexploitation si lon dsire raliser une conguration multiboot. Cette partition devra tre en FAT16 si les autres systmes ne supportent pas les partitions de type FAT32 (par exemple DOS, Windows 95 premire dition ou Windows NT4), mais on prfrera tout de mme la FAT32 si possible (Windows 95OSR2 ou plus, ou Windows 2000 ou XP). Cette partition pourra faire environ 1 Go, soit la taille ncessaire pour stocker une image disque de CD-ROM plus quelques chiers complmentaires. Elle pourra tre de taille suprieure si un autre systme dexploitation y est install.

Note : La partition du systme dont on utilise le gestionnaire damorage doit tre place de prfrence avant le cylindre 1024. En effet, certains BIOS ne peuvent pas accder aux cylindres suivants, et le bootstrap loader ne peut donc pas charger le gestionnaire damorage du systme dans ce cas. Cela signie que la deuxime partition doit tre la partition du systme dexploitation

34

Chapitre 4. Installation du systme de base


principal (cela a en plus lavantage de donner les accs disque les plus rapides pour les chiers de ce systme). Notez que ce plan de partitionnement utilise les quatre entres de la table des partitions, et ne permet donc pas den ajouter une complmentaire. Si lon dsire installer un autre systme dexploitation, on pourra le faire sur la partition FAT (auquel cas on pourra lui consacrer plus dun giga-octet), soit sur un deuxime disque dur. Si cela ne savre pas possible (par exemple parce que lon veut installer Windows NT, Windows 2000 ou XP sur une partition NTFS tout en conservant la partition FAT), on devra crer une partition tendue. Je prconise dans ce cas de placer les deux dernires partitions (la partition dchange et la partition des rpertoires personnels des utilisateurs) dans des partitions logiques de cette partition tendue, ce qui laisse libre la troisime partition primaire pour un autre systme dexploitation. Bien entendu, ce plan de partitionnement est une suggestion et vous tes absolument libre den choisir un autre. Je ne le fournis que pour aider ceux qui ne savent pas comment effectuer leur partitionnement prcisment. Il devrait convenir pour tous les disques de plus de 4 Go, qui sont monnaie courante prsent. En fait, il est possible dinstaller Linux sur une partition FAT, mme si elle est partage avec un autre systme dexploitation, laide dune extension de ce systme de chiers nomme UMSDOS . Cependant, cette opration nest pas prvue par la plupart des distributions en standard, et on commence l sortir des sentiers battus. Autant dire que linstallation risque de se compliquer srieusement. De plus, ce choix est fondamentalement mauvais, parce que :
le systme de chiers FAT est support par Linux, mais nest pas optimis. Il est donc environ

deux fois plus lent que les systmes de chiers natif EXT2 ou ReiserFS ;
le systme de chiers UMSDOS simule un systme de chiers Unix sur la FAT en rajoutant

des chiers dinformations complmentaires, ce qui est encore plus lent ;


le systme de chiers FAT nest intrinsquement pas sr, car il ne prvoit aucun moyen de

dupliquer les donnes ;


votre systme Linux est alors la merci des innombrables virus du monde Windows ; les systmes de chiers de Linux sont plus performants quun systme de chiers FAT32,

mme lorsquon lutilise sous Windows 95. Cela dit, il faut se faire une raison, si lon installe Linux, cest pour lutiliser. La solution la plus simple pour ceux qui hsitent encore est peut tre de disposer dun tiroir et dun deuxime disque dur.

4.4.3. Trouver de la place pour installer le systme


Lun des problmes les plus courants lors dune nouvelle installation est labsence de place disponible sur le disque dur pour placer une partition Linux. Ce problme na hlas pas de solution : il faut supprimer une autre partition appartenant un autre systme, ou en rduire une. Souvent, rduire une partition revient sauvegarder les donnes, la supprimer, la recrer avec une taille infrieure et restaurer les donnes. Certains outils commerciaux permettent de rduire des partitions directement, mais ils se vendent souvent pour le prix dun disque dur neuf (je ne peux donc rellement pas conseiller de les acheter, sauf si vous avez plusieurs disques durs dont les partitions doivent tre redimensionnes ou dplaces !). De plus, Linux dispose galement dun outil similaire qui, bien quil soit encore en phase de dveloppement, permet dj de raliser la plupart des oprations que lon peut avoir faire sur les partitions FAT et les partitions EXT2 de Linux. Il sagit du programme parted, que nous dcrirons ci-aprs. De mme, il existe un programme DOS permettant de rduire la taille dune partition FAT, moyennant quelques prcautions complmentaires. Bien entendu, il va de soi que si lon doit dplacer ou modier une partition, il faut faire au pralable des sauvegardes de toutes les donnes de cette partition...

35

Chapitre 4. Installation du systme de base Lorsquon installe Linux sur un ordinateur sur lequel un autre systme dexploitation est dj prsent, ce systme est trs souvent un systme Microsoft (DOS, Windows 9x ou Windows NT/2000/XP). La plupart de ces systmes utilisent le systme de chiers FAT sur leur partition. Or ce systme de chiers est relativement primaire et il est donc possible de redimensionner et de dplacer facilement les partitions sur lesquelles il est utilis. En revanche, si le systme de chiers utilis est de type NTFS (ce systme de chiers nest disponible quavec Windows NT, Windows 2000 ou XP), aucune mthode simple ne permet de le redimensionner. Il est possible que votre distribution dispose dun outil graphique permettant de manipuler les partitions existantes pendant la phase dinstallation. Ce type doutil pourra tre utilis pour dgager de la place pour Linux, ventuellement en rduisant une partition existante. Nous ne dcrirons cependant pas ces outils ici, car ils sont spciques chaque distribution. En revanche, nous prsenterons les deux principales techniques permettant de redimensionner une partition, la premire fonctionnant sous Linux et la deuxime sous DOS.

4.4.3.1. Utilisation de parted


Lutilitaire GNU parted est le standard en ce qui concerne les manipulations de partitions sous Linux. Cet outil sutilise en ligne de commande, et peut donc tre utilis partir dun terminal en mode texte pendant la phase dinstallation, si votre distribution linclut avec ses outils dinstallation standards. Si ce nest pas le cas, vous pourrez rcuprer limage dune disquette de boot Linux contenant cet outil ladresse ftp://ftp.gnu.org/gnu/parted/bootdisk/partboot.img. Cette image pourra tre copie sur une disquette laide de lutilitaire DOS RAWRITE.EXE, de la mme manire que les disquettes de boot de votre distribution peuvent tre cres. La manire de procder a t dcrite dans la Section 4.3. Une fois que vous aurez dmarr Linux et obtenu un terminal fonctionnel, vous pourrez lancer parted avec la simple commande suivante :
parted disque

o disque est lidentiant du disque dur sur lequel la partition modier se trouve. Comme on la vu prcdemment, tous les priphriques sont accessibles par lintermdiaire de chiers spciaux placs dans le rpertoire /dev/. Le nom des chiers spciaux correspondants vos disques peut varier selon leur nature. Ainsi, les disques et les lecteurs de CD IDE sont accessibles par lintermdiaire des chiers spciaux /dev/hda, /dev/hdb, /dev/hdc, etc. Ces chiers permettent daccder respectivement au disque matre du premier contrleur IDE, au disque esclave de ce mme contrleur, puis au disque matre du deuxime contrleur IDE puis au disque esclave du deuxime contrleur IDE, etc. Ainsi, si vous ne disposez que dun disque, il doit normalement tre connect sur le premier contrleur IDE et tre matre. Dans ce cas, vous y accderez par le chier spcial /dev/hda. Pour les disques SCSI, les noms sont lgrement diffrents : ils sont nomms /dev/sda, /dev/sdb, etc. La modication des partitions du premier disque dur IDE se fera donc laide de la commande suivante :
parted /dev/hda

Note : partir de la version 2.4.0 du noyau de Linux, le rpertoire /dev/ peut tre gnr par le noyau, dans un systme de chiers virtuel. Lorganisation de ce rpertoire est dans ce cas diffrente de lorganisation classique, et les noms de chiers spciaux correspondants aux disques peuvent tre diffrents de ceux indiqus ci-dessus. Par exemple, le chemin du chier spcial permettant daccder au premier disque IDE sera /dev/ide/host0/bus0/target0/disc. Comme vous pouvez le constater, la reprsentation de la machine dans le systme de chiers virtuels est plus structure, mais galement plus complique. An de simplier ces mcanismes, il est dusage de placer des liens symboliques dans le rpertoire /dev/ permettant daccder aux chiers spciaux de priphriques avec leurs anciens noms. Vous naurez donc normalement

36

Chapitre 4. Installation du systme de base


pas vous soucier de savoir si votre noyau utilise ou non le systme de chiers virtuels /dev/, et les chemins utiliss dans la suite de ce document seront les chemins classiques. Vous devrez faire la traduction vers les chemins du systme de chiers virtuels vous-mme si vous ne voulez pas utiliser ces liens symboliques.

parted dispose de plusieurs commandes permettant de modier les partitions. lheure actuelle, il ne permet rellement de travailler que sur les partitions FAT et les partitions contenant un systme de chiers EXT2, EXT3 ou ReiserFS. Seul les fonctionnalits de manipulation des partitions FAT nous intressent ici, car nous devons rduire une partition FAT. La premire commande indispensable est la commande print, qui permet dafcher la table des partitions du disque courant. Les informations afches par cette commande se prsentent de la manire suivante :
Disk geometry for /dev/hda: 0.000-32634.492 megabytes Disk label type: msdos Minor Start End Type Filesystem Flags 1 0.031 32632.031 primary FAT lba

Comme vous pouvez le constater, les partitions sont dcrites raison dune ligne par partition. Cette ligne contient le numro de la partition (les quatre premiers numros tant affects aux partitions primaires), les points de dpart et de n de ces partitions, exprims en mgaoctets, le type de la partition, le systme de chiers de cette partition, et des indications complmentaires.
Note : Comme il la dj t expliqu ci-dessus, les partitions sont gnralement dcrites en terme de cylindres. parted prfre utiliser le mgaoctet comme unit, ce qui est gnralement plus clair. Il prend compltement en charge la traduction des informations de taille en termes plus physiques, en tenant compte des ventuels problmes dalignement aux limites de cylindre. Son utilisation est donc relativement directe.

La commande qui nous intresse le plus ensuite est la commande resize, qui permet de redimensionner une partition. Cette commande utilise la syntaxe suivante :
resize partition dbut fin

o partition est le numro de la partition tel quil est prsent dans la premire colonne des informations de la commande print, dbut est la nouvelle position o la partition commencera et fin est la nouvelle limite de cette partition. Comme vous pouvez le constater, il est possible de rduire une partition aussi bien par son dbut que par sa n ! La seule contrainte est, bien entendu, que cette partition reste sufsamment grande pour contenir lensemble de ses donnes. Par exemple, pour rduire de 8 Go la premire partition du disque dur de lexemple prcdent an dy placer la partition de swap et les systmes de chiers, on utiliserait la commande suivante :
resize 1 8192 32632.031

Note : Lopration de redimensionnement peut prendre un certain temps. En effet, parted doit dplacer les donnes qui se trouveraient en dehors de la partition aprs son redimensionnement si aucune mesure spciale ntait prise, et il doit reconstruire compltement la FAT de cette partition pour quelle soit cohrente avec le nouvel emplacement de ces donnes.

37

Chapitre 4. Installation du systme de base


Il est impratif de dsactiver la limite utilisateur concernant la taille maximale des chiers manipuls avant deffectuer la moindre opration sur les partitions. En effet, cette limite pourrait empcher parted daccder aux donnes situes au-del dune certaine position dans la partition. Pour dsactiver cette limite, il faut taper la commande suivante avant de lancer parted :
ulimit -f unlimited

Si vous dsirez dplacer une partition plutt que de la redimensionner, vous pouvez utiliser la commande move :
move partition dbut

o partition est le numro de la partition et dbut est son nouvel emplacement de dpart, exprim en mgaoctets. De mme, si vous dsirez copier une partition, la commande cp devra tre utilise. Cette commande suit la syntaxe suivante :
cp [disque] source destination

o disque est le disque dur o se trouve la partition source, source est le numro de cette partition, et destination est le numro de la partition destination. La partition destination est toujours situe sur le disque dur courant (cest--dire celui qui a t indiqu en ligne de commande lors du lancement de parted ou celui spci par la commande select de parted). Enn, une fois que toutes les manipulations sur les partitions auront t effectues, vous pourrez quitter parted avec la simple commande quit. Vous pourrez obtenir la liste des autres commandes acceptes par parted en tapant la commande help.

4.4.3.2. Utilisation de ps
ps (abrviation de langlais First Interactive Partition Splitter ) est un utilitaire similaire parted, ceci prs quil fonctionne sous DOS et quil ne permet que de rduire la limite suprieure dune partition FAT. De plus, cet utilitaire est incapable de rorganiser le systme de chiers lissue de la rduction de la taille de la partition. Il est donc ncessaire de dfragmenter le systme de chiers avant dutiliser ce programme, an de placer toutes ses donnes au dbut de la partition.
Note : Vriez bien les options du dfragmenteur de systme de chiers que vous utilisez : quelques outils consolident bien lespace libre mais placent certains chiers la n de la partition FAT pour laisser plus de place aux chiers les plus utiliss au dbut du disque, an doptimiser le dbit de donnes sur ces chiers (cest notamment le cas avec le dfragmenteur de Norton). Il faut imprativement dsactiver ce type doption avant de rduire la partition, faute de quoi vous perdriez dnitivement les chiers qui se trouvent la n de la partition et votre FAT serait dans un tat incohrent.

Une fois la dfragmentation ralise, ps peut tre utilis pour rduire la taille de la partition FAT. La plupart des distributions de Linux fournissent des utilitaires DOS sur leur CD-ROM dinstallation, gnralement dans le rpertoire dosutils. Cest l que vous pourrez sans doute trouver ps. Attention, vous devrez imprativement utiliser la version 2.0 de ps pour manipuler les FAT32 et FAT32X. La rduction de la taille dune partition se fait en modiant la variable qui contient la taille de la partition dans la table des partitions. Pour cela, vous devrez simplement lancer ps. Celui-ci vous prsentera alors la liste des disques durs installs sur votre systme, et vous devrez lui indiquer le

38

Chapitre 4. Installation du systme de base disque sur lequel la partition rduire se trouve. Il vous demandera ensuite la partition que vous dsirez rduire, puis le cylindre auquel cette partition devra se terminer. Lorsque vous aurez dtermin la nouvelle taille de cette partition, vous devrez presser la touche c pour poursuivre. ps vous demandera alors conrmation avant dcrire sur disque les nouvelles informations de partition. Si vous tes sr de vous, vous pouvez rpondre par lafrmative en pressant la touche y.
Note : Contrairement parted, ps ne reconstruit pas la table dallocation des chiers (la FAT ) aprs avoir rduit la taille de la partition, ce qui fait que cette dernire est trop grosse pour cette nouvelle taille aprs rduction. Cela nest pas gnant, seuls quelques mgaoctets seront perdus sur la partition FAT dans la FAT elle-mme. Cette technique a en revanche lavantage dtre extrmement rapide.

4.4.4. Utilisation de fdisk


Le partitionnement en soi peut se faire soit directement laide du fdisk de Linux, soit par lintermdiaire du programme dinstallation de la distribution correspondante. Il est recommand dutiliser ce programme dinstallation, qui vous guidera et vous indiquera comment raliser cette opration. Si toutefois vous dsirez utiliser fdisk, il vaut mieux faire attention ce que vous faites. Pour lancer fdisk, il suft de taper la commande suivante en ligne de commande :
fdisk disque

o disque est le chier spcial de priphrique reprsentant le disque que vous dsirez partitionner. Si vous voulez partitionner le disque matre du premier contrleur IDE, vous devrez donc taper :
fdisk /dev/hda

Si vous ne spciez aucun disque en paramtre fdisk, il prendra par dfaut le disque /dev/sda, ou
/dev/hda si aucun disque SCSI nest install.

fdisk est un programme trs peu interactif. Il attend que vous lui communiquiez les commandes excuter en tapant sur une lettre. Les diffrentes commandes possibles peuvent tre afches avec la commande m. Lorsque vous crez une partition, vous devez utiliser la commande n, puis indiquer son type avec les commandes p (pour primary ) pour une partition primaire ou e (pour extended ) pour une partition tendue. Vous devrez ensuite donner son numro dans la table des partitions, puis indiquer le dbut et la n de la partition. Par dfaut, lunit utilise par fdisk est le cylindre. Il est recommand de conserver cette unit, surtout si lon utilise un systme qui ne sait manipuler que les cylindres. Toutefois, on peut changer cette unit grce la commande u et utiliser le secteur comme unit. Si vous avez cr une partition tendue, celle-ci sera utilise pour y stocker des partitions logiques. Pour pouvoir les crer, il faut encore utiliser la commande n, et choisir le type de partition logique avec la commande l (pour logical ). Les partitions logiques sont numrotes avec les nombres 5 et suivants. La cration des partitions logiques se fait exactement de la mme manire que les partitions primaires, en spciant leur dbut et leur n, soit en cylindres, soit en secteurs selon lunit courante. Une fois les partitions cres, vous pouvez spcier leur type laide de la commande t (pour type ). Cette commande demande successivement le numro de la partition modier et la valeur de son identicateur en hexadcimal. Rappelons que les identicateurs utiliser pour Linux sont 83 pour les partitions de systmes de chiers Linux, et 82 pour les partitions de swap. La liste des

39

Chapitre 4. Installation du systme de base valeurs admissibles peut tre obtenue laide de la commande l. Par dfaut, le fdisk de Linux cre des partitions Linux natives, de code 83. Lorsque vous aurez compltement dni vos partitions, il ne vous restera plus qu activer la partition qui contiendra le gestionnaire damorage. La slection de la partition active se fait avec la commande a de fdisk. Cest donc sur cette partition que le chargeur du MBR ira chercher le gestionnaire damorage du systme lancer.
Note : Thoriquement, il est tout fait possible dinstaller le gestionnaire damorage dun systme directement sur le MBR, mais procder de cette manire est trs dconseill. En effet, certains systmes dexploitation (notamment tous les systmes de Microsoft) crasent systmatiquement le MBR lorsquils sinstallent, dtruisant ainsi le chargeur dun autre systme qui y serait ventuellement install. Cela implique que si lon dsire installer un gestionnaire damorage autre que celui des systmes Microsoft sur le MBR, il faut le faire aprs linstallation de ces systmes. En pratique, cela veut dire que dans ce cas, on doit installer Linux aprs Windows ou le DOS. Notez quil nest toutefois pas toujours faisable dinstaller le gestionnaire damorage sur le secteur de boot de la partition de son systme, en particulier si cette partition ne se trouve pas sur le premier disque dur de la machine. En effet, la plupart des BIOS sont incapables dutiliser les MBR des autre disques durs. Dans ce cas, on peut soit crer une partition de dmarrage de petite taille (quelques mga-octets, un cylindre au maximum) au dbut du disque et sur laquelle on installera le gestionnaire damorage et ventuellement quelques outils de rparation en cas de coup dur, soit installer le gestionnaire damorage directement sur le MBR du premier disque dur. Dans ce cas, on devra faire particulirement attention lordre dinstallation des systmes dexploitation. De manire gnrale, il faut toujours installer les systmes Microsoft en premier (respectivement dans lordre suivant si lon veut viter les problmes : DOS, Windows 9x/Millenium et Windows NT4/2000/XP). Nous verrons plus loin comment installer le gestionnaire damorage de Linux et faire une conguration multiboot avec les principaux autres systmes dexploitation existants.

4.5. Cration des systmes de chiers


Une fois le disque correctement partitionn, il faut crer les systmes de chiers. Cette opration nest pas ncessaire pour les partitions de swap, cependant il faut le faire pour les autres partitions. Attention ! Dans le monde du DOS et de Windows, la cration dun systme de chiers est lopration de formatage dune partition. Le terme de formatage est trs mal employ dans ce sens, car il ny a strictement rien voir entre le formatage dun disque, qui est lopration consistant enregistrer des marques sur le support magntique pour dnir les pistes et les secteurs du disque, et la cration du systme de chiers dune partition, qui consiste enregistrer les structures de donnes permettant de retrouver les chiers dans cette partition. Le formatage est normalement effectu par le fabricant du disque, et a lieu avant le partitionnement. En effet, partitionner un disque suppose quil existe dj des pistes et des secteurs sur le disque. Cest pour cette raison que lon ne parlera ici que de cration de systmes de chiers. La cration des systmes de chiers EXT2 et EXT3 se fait avec la mme commande, savoir la commande mke2fs. La cration des autres systmes de chiers se fait gnralement de la mme manire que pour ces systmes, mais avec des outils diffrents. Par exemple, la cration dun systme de chiers ReiserFS se fait laide de loutil mkreiserfs. ReiserFS constitue une alternative possible EXT3 car, tout comme EXT3, il prend en charge les mcanismes de journalisation qui assurent la cohrence du systme de chiers mme en cas darrt intempestif de lordinateur. Cependant, ce sys-

40

Chapitre 4. Installation du systme de base tme de chiers est encore jeune et na certainement pas t dbogu autant que EXT3, qui sappuie sur la base de code du vieux systme de chiers EXT2. Sachez galement que ReiserFS, contrairement EXT2 et EXT3, ne se comporte pas encore trs bien si le disque dur a des secteurs physiques dfectueux. La suite de cette section ne traitera que des systmes de chiers EXT2 et EXT3, consultez la documentation de votre distribution et les pages de manuel des outils des autres systmes de chiers pour plus de dtails sur la mthode utiliser pour les crer. An de pouvoir utiliser mke2fs correctement, il est ncessaire de dnir quelques termes, et dexpliquer quelles notions dEXT2 et dEXT3 ils se rfrent. Premirement, le systme de chiers EXT2 travaille, comme la plupart des systmes de chiers, avec des blocs de taille xe ( clusters en anglais). Cela signie que lallocation de lespace disque se fait par multiples de la taille de ces blocs : il est impossible de demander seulement une partie dun bloc. Cette technique prsente des avantages et des inconvnients. Essentiellement, lavantage est la rapidit engendre par la simplication des mcanismes dallocation et de libration despace disque. Linconvnient majeur est videmment quon perd de la place pour tous les chiers qui ne tiennent pas dans un nombre entier de blocs, puisquil faut allouer un bloc supplmentaire qui sera partiellement utilis. En moyenne, on perd la moiti dun bloc par chier, ce qui ne peut tre rduit quen limitant la taille des blocs une valeur relativement faible.
Note : EXT2 et EXT3 grent lallocation et la libration des blocs de manire toujours trouver le meilleur bloc allouer pour crer un chier. Ainsi, il limite la fragmentation des chiers son strict minimum, ce qui rend inutiles les programmes de dfragmentation de systmes de chiers.

Deuximement, EXT2 et EXT3 utilisent des structures de donnes appeles inodes pour dnir les chiers. Un inode contient la plupart des informations dun chier, savoir :

son propritaire et son groupe ; ses droits daccs ; ses dates de cration, modication, accs ; les blocs quil utilise ; dautres informations utilises par EXT2.

Ces inodes sont stocks dans une table du systme de chiers, ce qui permet daccder trs rapidement toutes ces informations et de retrouver galement trs simplement le ou les blocs contenant les donnes du chier. Le problme est ici que cette table a un nombre dentres limit, ce qui implique un nombre limit de chiers dans le systme de chiers. Plus cette table est grande, plus le nombre de chiers que lon pourra crer sera grand, et inversement. Il faut donc trouver un compromis entre la taille de cette table et le nombre de chiers que lon est susceptible de crer. Il va de soi quen gnral, les grandes partitions contiennent plus de chiers, mais que la table dinodes peut galement avoir une taille suprieure sans que cela soit drangeant. Par consquent, il est relativement courant de dnir le taux dinode par bloc ou, autrement dit, la proportion dinodes dans la partition par rapport sa taille. Toutes ces informations (blocs libres et inodes) sont sauvegardes plusieurs endroits dans la partition, ce qui permet de disposer en permanence de copies de la structure du systme de chiers. De cette manire, il est relativement simple de rparer un systme de chiers endommag, mme si les donnes sont dtruites en raison dune erreur matrielle (secteurs dfectueux sur le disque dur par

41

Chapitre 4. Installation du systme de base exemple). Chacune de ces copies sappelle un groupe de blocs. Chaque groupe de blocs contient un bloc particulier, le super bloc , qui contient la description de son groupe. Lors de la cration du systme de chiers, il est ncessaire dindiquer la taille dun bloc en octets. Cette taille doit imprativement tre un multiple de la taille dun secteur du support physique de donnes, parce que les blocs ne peuvent contenir quun nombre entier de secteurs. Pour un disque dur, la taille des secteurs est xe 512 octets, ce qui fait que la taille dun bloc est au moins de 512 octets. De mme, il faut spcier le nombre dinodes de la partition. Il est possible de spcier ce nombre soit directement, ou dindiquer seulement le nombre doctets de la partition par inode. Le nombre total dinodes utilis sera alors calcul partir de ce nombre doctets et de la taille de la partition. Bien entendu, le nombre maximal dinodes possibles est le nombre total de blocs, puisque tout chier non vide requiert au moins un bloc et que chaque inode caractrise un chier. Si vous ne savez pas quelles valeurs prendre, vous pouvez utiliser des blocs de 1024 octets (2 secteurs), et un rapport de 4096 octets par inode (donc de 4 blocs de 1 Ko par inode). Le systme de chiers EXT3 gre, en plus de tout ce que sait faire le systme de chiers EXT2, un journal contenant les oprations raliser de manire transactionnelle sur le disque dur. Ces oprations sont excutes de telle sorte que la structure du systme de chiers reste cohrente en toutes circonstances. Cela implique que le systme de chiers est toujours valide, mme si une panne de courant se produit pendant une opration disque. La syntaxe de la commande mke2fs est donne ci-dessous :
mke2fs [-j] fichier

o fichier est le nom du chier spcial de priphrique reprsentant la partition sur laquelle le systme de chiers doit tre cr. Ce nom est le nom du disque dur, sufx du numro de la partition. Les numros de partitions commencent 0, si bien que la premire partition du premier disque dur IDE sera rfrence par le chemin /dev/hda0. Loption -j quant elle est facultative. Lorsquelle est utilise, le systme de chiers cr est un systme de chiers EXT3. Il est recommand dutiliser cette option pour tous les systmes de chiers dont on voudra garantir la cohrence, par exemple pour les systmes de chiers devant contenir des documents ou des informations importantes. Sachez cependant que la journalisation peut dgrader sensiblement les performances de votre ordinateur, aussi pouvez-vous vous en passer sur les partitions pour lesquelles un dbit lev est ncessaire (par exemple pour les partitions devant servir manipuler des chiers vido).
Note : Le systme de chiers EXT3 utilise les mmes structures de donnes que le systme de chiers EXT2. Il est donc parfaitement compatible avec ce dernier, et un systme de chiers EXT3 peut tre utilis comme un systme de chiers EXT2. En ralit, les mcanismes de journalisation peut tre activs ou non lors de lopration de montage du systme de chiers, en fonction du type de systme de chiers indiqu la commande de montage. Nous dtaillerons la manire de monter les systmes de chiers dans la Section 5.7.4 et dans la Section 6.4.2. Pour les mmes raisons, il est possible de convertir un systme de chiers EXT2 en systme de chiers EXT3 a posteriori, laide de loption -j de la commande tune2fs. Cette commande permet dactiver et de dsactiver des fonctionnalits complmentaires pour ces systmes de chiers, dont la journalisation fait partie.

Invoque sans autres options, la commande mke2fs prend des valeurs par dfaut pour tous les paramtres du systme de chiers cr, mais vous pouvez galement spcier dautres valeurs. La taille des blocs peut tre indique en octets avec loption suivante :
mke2fs [-j] -b taille fichier

42

Chapitre 4. Installation du systme de base o taille reprsente la taille dun bloc en octets. De mme, le nombre doctets par inode peut tre prcis avec lune des options -i :
mke2fs [-j] -i octets fichier

o octets est le rapport de la taille de la partition en octets par le nombre dinodes crer. Il est possible dindiquer directement ce nombre avec la commande suivante :
mke2fs [-j] -N nombre fichier

Enn, sachez que loption -c permet de demander mke2fs deffectuer une vrication des secteurs dfectueux du disque dur avant de crer le systme de chiers. Il est fortement recommand dutiliser cette option lors de la premire cration dun systme de chiers.

4.6. Cration de la partition de swap


En cas de manque de mmoire vive, Linux peut utiliser une partie du disque dur pour y stocker les donnes temporairement inutilises an de librer de lespace mmoire. Cette opration permet de continuer travailler, mme si la machine ne dispose pas de sufsamment de mmoire vive pour excuter tous les processus dont elle a la charge. Linconvnient de cette mthode est videmment la dgradation des performances, mais cest un bon compromis si lon considre le prix du mga-octet de mmoire par rapport celui des disques durs dune part, et le fait quil vaut mieux parvenir faire son travail, mme lentement, que de ne pas le faire du tout. Lespace disque consacr par Linux pour ce stockage temporaire est appel swap , du terme anglais to swap qui fait rfrence lchange des donnes de la mmoire vers le disque dur (et inversement, lorsquelles sont recharges en mmoire). Linux est capable de grer plusieurs formes de swap. Il est capable dutiliser des chiers dchange, qui sont stocks dans un systme de chiers, ou les partitions de swap. Ces dernires ont lavantage dtre bien plus rapides, puisque le noyau na pas se proccuper de la structure du systme de chiers lors des oprations de swap (qui, rappelonsle, constituent dj un ralentissement notable de la machine). En revanche, elles ont linconvnient majeur dtre trs contraignantes, puisquelles ncessitent de rserver une partition pour le swap de manire permanente. Cependant, il est tout fait acceptable de consacrer 128 ou 256 Mo de disque dur pour une partition de swap de nos jours. Linux est capable de grer jusqu 8 partitions de swap dont la taille peut aller jusqu 2 Go chacune, plus les chiers dchange que lon peut rajouter ultrieurement. Nous ne dcrirons que la manire de crer une partition de swap, car les chiers dchange ne constituent plus le meilleur compromis avec les tailles de disques que lon rencontre de nos jours. Bien entendu, le programme dinstallation de votre distribution prend certainement dj en charge la cration des partitions de swap. Il est donc recommand, encore une fois, dutiliser ce programme, mme si la description qui suit vous permettra de comprendre ce dont il sagit. Les partitions de swap peuvent tre cres, comme toutes les partitions, laide du programme fdisk. En fait, la seule distinction entre une partition de swap et une partition rserve un systme de chiers est tout simplement son identicateur. Comme on la dj vu lors du partitionnement du disque, lidenticateur utilis pour les partitions de systmes de chiers Linux est 83, et celui pour les partitions de swap est 82. Vous devrez donc affecter cet identicateur votre partition de swap lorsque vous partitionnerez votre disque dur. Il est recommand de placer la partition de swap au dbut du disque dur, car cest cet emplacement que le taux de transfert est le plus lev (et donc cest cet emplacement quon obtiendra les meilleures performances en cas de manque de mmoire vive).

43

Chapitre 4. Installation du systme de base Une fois cre, la partition de swap peut tre prpare pour que le noyau puisse lutiliser. Cette prparation revient peu prs formater un systme de chiers, ceci prs que les structures de donnes crites dans la partition de swap sont beaucoup plus simples car il ne sagit plus ici de stocker une arborescence complte de chiers. La commande mkswap permet de prparer les partitions pour tre utilises en tant que partition de swap. Elle sutilise selon la syntaxe suivante :
mkswap -c partition

o partition est la partition prparer pour le swap. Notez que, en ralit, mkswap peut tout aussi bien travailler sur un chier que sur une partition. Lorsque la partition aura t prpare pour le swap, il est possible de demander Linux de lutiliser avec la commande suivante :
swapon partition

o partition est la partition de swap utiliser. Cette zone de swap est alors automatiquement prise en compte par le systme. La commande suivante permet darrter le swapping sur une partition :
swapoff partition

Normalement, vous naurez jamais utiliser ces commandes manuellement. Le programme dinstallation de votre distribution congure le swap, et fait en sorte que les partitions de swap sont charges automatiquement lors du dmarrage de la machine. Notez cependant que cette mthode de conguration dynamique permet dajouter temporairement un chier dchange si les besoins sen font sentir, sans avoir redmarrer la machine.

4.7. Installation des composants de base


Si vous tes arriv jusquici, vous avez ni les oprations les plus risques et sans doute les plus difciles. Dans les premiers jours de Linux, il fallait installer la main les diffrents composants du systme, voire les recompiler soi-mme. Heureusement, toutes les distributions actuelles disposent aujourdhui de programmes dinstallation du systme de base, qui simplient beaucoup le travail. Les oprations que vous allez raliser prsent sont donc plus simples, et certainement moins dangereuses. Lordre logique est videmment de commencer par les couches les plus basses du systme, donc en particulier le noyau. Cependant, il faut galement installer le shell et les outils complmentaires, puisque sans eux on ne peut strictement rien faire de ce noyau. Cet ensemble de programme constitue ce que lon appelle le systme de base. Je suggre de congurer correctement le systme ce stade, avant de se lancer dans laventure XWindow. Cest videmment cette partie qui sera la plus difcile raliser. Linstallation de XWindow ne devrait alors pas causer de problme majeur. Une fois ces oprations ralises, vous pourrez installer les applications. En gnral, lorsque le systme est bien congur, linstallation des applications est une tche relativement facile et se fait rapidement. Ce document ne traitera pas en dtail de linstallation des applications, car il y en a trop pour que lon puisse donner des informations valides pour toutes les applications. Quelques rgles gnrales seront malgr tout donnes, car elles peuvent sappliquer pour certaines applications. Toutes les distributions organisent les diffrents composants logiciels quelles fournissent en paquetages ( package en anglais). Ainsi, linstallation du systme se fait par groupes homognes de chiers, et le regroupement dans un paquetage est gnralement une dpendance forte (en pratique, ce sont les chiers dune mme application). En installant un paquetage, on installe nalement un

44

Chapitre 4. Installation du systme de base logiciel particulier. Cependant, certains paquetages dpendent dautres paquetages, par exemple, les paquetages contenant le systme de base sont videmment utiliss par tous les autres paquetages. Les programmes dinstallation grent relativement bien les dpendances et les conits entre paquetages, si bien que linstallation peut maintenant se faire sans trop de problmes. An dorganiser un peu tous ces paquetages, les distributions les trient souvent par sries . Une srie nest rien dautre quun ensemble de paquetages regroups par domaine fonctionnel. Cela signie que lon peut facilement retrouver un paquetage donn, en allant le chercher dans la srie contenant tous les paquetages fonctionnellement proches. Le regroupement des paquetages en sries ne signie absolument pas que tous les paquetages de la srie doivent tre installs pour obtenir une fonctionnalit donne, mais que les logiciels qui sy trouvent ont plus ou moins trait cette fonctionnalit. En fait, il peut mme y avoir redondance ou conit entre deux paquetages dune mme srie. Dans ce cas, il faut choisir lun ou lautre, selon ses besoins personnels. Certains paquetages sont indispensables pour le systme, dautres sont purement optionnels. Mais la plupart des paquetages sont simplement les paquetages des applications, et vous devrez faire le tri et choisir ceux qui vous intressent parce quil est impensable dinstaller tous les paquetages (une distribution de Linux peut faire 5 ou 6 CD-ROM, en tenant compte du systme, des applications et des sources). Les seuls paquetages quil faut imprativement installer sont les paquetages de la srie de base. En gnral, cette srie porte le nom A, ou AAA, ou quelque chose de similaire, an quelle puisse toujours tre en tte de liste dans les programmes dinstallation. Cette srie comprend au moins les paquetages des commandes Unix de base, du shell, du programme dinstallation et de tous les chiers ncessaires au fonctionnement du systme (chiers de conguration, scripts et bibliothques partages). Tant que les programmes de cette srie sont intacts et fonctionnels, le systme est utilisable. Sil en manque, les problmes peuvent survenir tout moment : de labsence ou lindisponibilit de la documentation limpossibilit complte de dmarrer le systme. Le choix des paquetages installer est crucial mais non dnitif. En effet, si vous avez install un paquetage dont vous navez pas ou plus besoin, rien ne vous empche de le supprimer par la suite. De mme, si vous vous apercevez que vous avez oubli dinstaller un paquetage dont vous avez besoin, vous pouvez linstaller ultrieurement. Il nest pas possible de donner ici la liste des paquetages que vous devez installer, car cette liste dpend beaucoup trop de la distribution que vous possdez. Il est conseill de lire le manuel de cette distribution ou de bien lire les crans daides du programme dinstallation. Cependant, les paquetages dont vous aurez certainement besoin pour poursuivre linstallation sont sans doute les suivants :

paquetage du systme de base ; paquetage du compilateur GCC ; paquetage du rseau ; paquetage de XWindow ; paquetage de documentation ; paquetages susceptibles de faire fonctionner votre matriel (carte son, serveur XWindow appropri votre carte graphique...).

Gardez lesprit que dans le monde du logiciel libre, les programmes sont souvent distribus sous la forme de chiers sources et que vous aurez sans doute besoin des outils de dveloppement pour les compiler et les installer. Veillez donc inclure dofce tous ces outils, mme si vous ne dsirez pas programmer personnellement. Bien entendu, vous pourrez revenir ultrieurement dans le programme dinstallation et rinstaller un paquetage si vous lavez oubli pendant la phase dinstallation.

45

Chapitre 4. Installation du systme de base

4.8. Amorage du systme et conguration multiboot


Lorsque vous aurez install votre systme de base, vous devrez faire en sorte quil puisse dmarrer. Pour cela, il existe plusieurs possibilits, les principales tant les deux suivantes :

soit vous dmarrez partir dune disquette ou dun CD damorage ; soit vous utiliser un gestionnaire damorage.

Il va de soi que cest la deuxime solution qui est recommande. Cependant, la premire solution pourra tre utile si daventure votre MBR se trouvait tre cras ou endommag. Seule lutilisation des gestionnaires damorage de Linux et de Windows NT/2000 et XP sera dcrite ici. Le gestionnaire damorage le plus utilis sous Linux se nomme LILO (pour LInux LOader ). LILO permet de dmarrer un grand nombre de systmes, dont DOS, Windows 95/98/Millenium, Windows NT/2000/XP et OS/2. Linux dispose galement dun autre gestionnaire damorage galement trs performant : le GRUB (abrviation de langlais GRand Unied Bootloader ). Vous tes libre de choisir celui que vous voulez. Le GRUB est quelque peu plus moderne que LILO, mais le choix du gestionnaire damorage est ici une question de got. Windows NT, Windows 2000 et Windows XP disposent galement dun gestionnaire damorage nomm NTLDR , capable de dmarrer dautres systmes dexploitation. Vous aurez donc galement la possibilit dutiliser ce gestionnaire la place de LILO ou du GRUB si un de ces systmes est install sur votre machine. Quel que soit le gestionnaire damorage que vous dsirez utiliser, il vous faudra activer la partition sur laquelle il est install. Cette opration peut tre ralise laide de lutilitaire fdisk et a dj t dcrite dans la Section 4.4. Cela permettra au bootstrap loader de slectionner le secteur de boot de cette partition et de lancer le gestionnaire damorage qui y est install. Bien entendu, cela suppose que ce gestionnaire soit install sur cette partition, ce qui est normalement le cas (rappelons quil nest en gnral pas conseill dinstaller le gestionnaire damorage directement sur le MBR du disque dur).

4.8.1. Ralisation dun multiboot avec LILO


LILO est un gestionnaire damorage extrmement performant, puisquil permet de dmarrer Linux comme tout autre systme dexploitation trs simplement, en donnant le nom du systme lancer lors de lamorage. Il est bien entendu possible de lancer un systme par dfaut, et de donner un temps dattente avant de choisir ce systme si lutilisateur nintervient pas. LILO est constitu de deux parties. La premire partie peut sinstaller sur le secteur damorage principal du disque dur ou sur le secteur de boot de nimporte quelle partition. Comme on la dj indiqu plus haut, il est fortement recommand dinstaller cette partie de LILO sur le secteur de boot de la partition racine de Linux, an dviter quelle ne soit crase par le DOS ou par une quelconque version de Windows installe ultrieurement. La deuxime partie de LILO est enregistre directement dans la partition Linux. Elle contient les informations ncessaires pour pouvoir charger les diffrents systmes dexploitation grs. Bien entendu, la premire partie est capable de retrouver directement la deuxime sur le disque dur de manire autonome car, lors de lamorage, les systmes de chiers de Linux ne sont pas encore chargs. LILO utilise le chier de conguration /etc/lilo.conf pour y retrouver tous ses paramtres de conguration. Ce chier contient la description des diffrents systmes dexploitation que LILO doit proposer au dmarrage. Vous pourrez consulter ce chier avec un des nombreux diteurs de chiers texte prsents sur toute installation de Linux. Toutefois, si vous installez Linux pour la premire fois, il est possible que vous nen connaissiez aucun et que vous soyez un peu perdu. Cela est normal, et dans ce cas je vous recommande de vous familiariser un peu avec le systme et lenvironnement utilisateur avant de vous lancer dans ldition de ce chier. Il existe bon nombre dditeurs graphiques

46

Chapitre 4. Installation du systme de base ou en mode texte et il est hors de question de tous les dcrire ici. Toutefois, toutes les distributions Linux installent un diteur historique, jai nomm laffreux vi . Cet diteur nest pas du tout convivial pour les nouveaux utilisateurs, mais il dpannera toujours quand tous les autres seront inutilisables ou inaccessibles. En fait, on nit mme par lapprcier lusage... La manire dutiliser vi sera dcrite ultrieurement, dans le chapitre donnant les notions de base dUnix la Section 5.8. Vous devriez donc jeter un coup dil cette section si vous dsirez modier immdiatement le chier /etc/lilo.conf, ou revenir ultrieurement la prsente section une fois que vous vous serez familiaris avec un autre diteur. Quoi quil en soit, les options les plus importantes du chier /etc/lilo.conf sont les suivantes :

loption boot, qui permet dindiquer sur quel secteur damorage LILO doit sinstaller. Cette option suit la syntaxe suivante :
boot = destination

o destination est le nom dun chier spcial de priphrique sur lequel LILO va sinstaller. Ce nom peut identier un disque dur (comme par exemple /dev/hda), auquel cas LILO va sinstaller sur le MBR de ce disque (cest--dire sur le MBR du premier disque du premier contrleur de disques IDE dans notre exemple), ou une partition (comme /dev/hda2). Dans ce cas, LILO sinstalle sur le secteur de boot de cette partition (la deuxime partition du premier disque dur IDE dans notre exemple). Rappelons quil est recommand dinstaller LILO sur le secteur de boot de la partition racine de Linux ;

loption read-only permet de demander au noyau de monter le systme de chiers racine en lecture seule lors du dmarrage. Cette option est ncessaire pour que les scripts de dmarrage du systme puissent effectuer les vrications du systme de chiers de cette partition si ncessaire. La partition sera remonte en lecture et en criture une fois ces vrications ralises ; loption prompt, qui permet LILO de demander le systme lancer chaque dmarrage. Cette option force donc lapparition du message dinvite de LILO au dmarrage : LILO boot: auquel on pourra rpondre en tapant le nom de la conguration lancer ; loption timeout, qui permet de xer un dlai au del duquel LILO lancera la premire conguration dnie dans le chier lilo.conf. La syntaxe de cette option est la suivante :
timeout = diximes

o diximes est le nombre de diximes de seconde attendre avant le lancement du systme ;

loption keytable, qui donne la possibilit de spcier un chier de tradution des codes de caractre envoys par le BIOS (qui suppose gnralement que le clavier utilise la disposition dun clavier amricain) en les codes de caractre qui seraient envoys par un BIOS localis. Cette option permet donc de rednir la disposition des touches du clavier pour prendre en compte les claviers non-amricains. La syntaxe de cette option est la suivante :
keytable = fichier

o fichier est le chemin sur un chier de traduction de clavier pour LILO. Un tel chier peut tre gnr par le script keytab-lilo.pl laide des chiers de dnition des claviers de Linux (gnralement installs dans le rpertoire /usr/lib/kbd/keymaps/). La ligne de commande utiliser pour ce script est la suivante :
keytab-lilo.pl us local > fichier

o us est le nom du chier de dnition de clavier Linux pour la disposition utilise par le BIOS (donc, effectivement, la disposition dun clavier amricain en gnral), local est le nom du chier de dnition de clavier pour la disposition du clavier rellement utilise, et fichier est le nom du chier de traduction des codes gnrer. Par exemple, la cration de ce chier pour le clavier franais se ferait avec la commande suivante :

47

Chapitre 4. Installation du systme de base


keytab-lil.pl us fr-latin1 > /boot/fr-latin1.klt

Remarquez que cette technique de traduction de clavier souffre dun inconvnient majeur, puisque les combinaisons de touches qui ne sont pas valides dans la disposition amricaine des claviers ne peuvent pas tre converties. Si lune de ces combinaisons doit tre utilise, il faut abandonner lide dutiliser loption keytable.

La suite du chier lilo.conf dcrit les diffrentes congurations que LILO peut lancer. Les sections de conguration permettant de charger Linux ont le format suivant :
image = noyau root = root_device label = nom

o noyau est le chemin complet sur le noyau de Linux charger, root_device est le nom complet du chier spcial de priphrique contenant le systme de chier racine et nom est le nom de la conguration tel quil devra tre saisi linvite de LILO. Lexemple donn ci-dessous permet de charger le noyau /boot/vmlinuz en utilisant la partition /dev/hda2 comme partition racine :
image = /boot/vmlinuz root = /dev/hda2 label = linux

Si vous dsirez crer une section de conguration permettant de lancer un autre systme dexploitation que Linux (DOS ou Windows par exemple), vous pouvez utiliser la possibilit de passer le relai au chargeur de ces systmes, quil sagisse dun simple secteur de boot ou dun gestionnaire damorage complet. Cela se fait avec la syntaxe suivante :
other = partition table = disque loader = relai label = nom

o partition est la partition sur laquelle le secteur de boot de lautre systme est install, disque est le disque dur contenant la table des partitions utilise par ce systme, relai est le nom dun chargeur spcial permettant de simplement passer la main au chargeur du systme, et nom est le nom de la conguration. Le chargeur utiliser pour demander LILO de passer le relai au chargeur de lautre systme dexploitation est le chargeur contenu dans le chier chain.b de LILO. Ce chier se trouve gnralement dans le rpertoire /boot/, aussi doit-on spcier /boot/chain.b pour le champ relai.
Note : Prenez garde au fait que Windows NT/Windows 2000/XP installent NTLDR dans la premire partition laquelle il savent accder en gnral. Donc, si un DOS ou Windows 95, Windows 98 ou Millenium est install en premier, ils installeront NTLDR dans la partition de ces systmes. Dans ce cas, la conguration permettant de lancer le DOS ou le Windows 95, Windows 98 ou Millenium qui se trouve sur cette partition risque fort de lancer NTLDR qui proposera, son tour, de lancer les diffrents systmes dexploitation Microsoft installs. Cela peut tre relativement gnant et peut tre corrig en dplaant NTLDR sur la partition de Windows NT/Windows 2000/XP et en reconstruisant les secteurs de boot des diffrentes partition pour que leur chargeurs soccupent de leurs systmes respectifs, mais il sagit l dune opration extrmement technique dune part, et qui ne concerne absolument pas Linux dautre part. Cela ne sera donc pas dcrit dans ce document. Il existe toutefois des documents sur Internet qui

48

Chapitre 4. Installation du systme de base


dcrivent la manire de procder et je vous invite vous y rfrer (avec une prudence extrme cependant).

Lexemple donn ci-dessous permet de donner la possibilit de charger Linux ou Windows NT, en lanant Linux par dfaut au bout de 10 secondes. Windows NT est install sur la troisime partition, et Linux utilise la deuxime et la quatrime partition respectivement pour y stocker sa partition racine et la partition des rpertoires personnels des utilisateurs. LILO est ici install sur la partition racine de Linux :
# Exemple de fichier de configuration /etc/lilo.conf : # Options gnrales : boot = /dev/hda2 read-only prompt timeout=100 keytable = /boot/fr-latin1.klt # Premire configuration (Linux) : image = /boot/vmlinuz root = /dev/hda2 label = linux # Deuxime configuration (NT) : other = /dev/hda3 table = /dev/hda loader = /boot/chain.b label = NT

Linstallation de LILO est trs simple une fois que lon a crit le chier lilo.conf. En effet, il suft tout simplement de taper la commande suivante :
lilo [-L]

Loption -L permet de demander LILO dutiliser le mode dadressage LBA pour accder au disque dur pendant la phase damorage. Cette option est ncessaire si vous disposez dun grand disque dur et que certaines partitions disposant de systmes lancer sont situes au del du cylindre 1024. Il est recommand de lutiliser systmatiquement tant donn les tailles des disques durs actuels.
Note : Comprenez bien que si votre BIOS est incapable dutiliser le mode LBA ou le si bootstrap loader est incapable dutiliser ce mode, cette option ne vous sera daucune utilit. En effet, dans ce cas, le bootstrap loader ne parviendrait mme pas charger le secteur de boot de la partition Linux. Cest pour cette raison quil a t recommand de placer la partition du systme principal en de de cette limite des 1024 cylindres. Cette limitation est donc bien une limitation du BIOS, mais vous ne devriez plus rencontrer ce genre de problme que sur de vieilles machines sur lesquelles un nouveau disque dur de grande capacit a t install.

Si lilo signale une erreur, il vaut mieux ne pas insister et corriger le chier lilo.conf. Lorsque la machine dmarre, LILO afche son invite de dmarrage : LILO boot:

49

Chapitre 4. Installation du systme de base Il attend ici que vous indiquiez le nom du systme que vous dsirez dmarrer. Vous devez ici taper le nom du systme charger et valider : LILO boot:linux Si vous ne tapez rien, et que vous avez donn un dlai dattente dans le chier de conguration de LILO, la premire conguration sera lance automatiquement aprs ce dlai. LILO permet de spcier des paramtres de dmarrage complmentaires pour Linux la suite du nom de la conguration qui permet de le lancer. Ces paramtres servent principalement renseigner le noyau sur la conguration matrielle (en particulier les ports dentre/sortie et les lignes dinterruption des priphriques non Plug and Play), pour le cas o il ne parviendrait pas les dterminer automatiquement. Lun des paramtres les plus intressants est sans doute mem, qui permet dindiquer au noyau la taille de la mmoire vive dont dispose lordinateur. Ce paramtre peut tre ncessaire si vous disposez de plus de 64 Mo de mmoire, parce que les fonctions du BIOS ne permettent pas dindiquer les tailles de mmoire plus grandes (la plupart des BIOS rcents nont toutefois plus ce problme). Par exemple, si votre ordinateur dispose de 256 Mo de mmoire, vous devrez taper la ligne de paramtres suivante au dmarrage : LILO boot:linux mem=256M Bien entendu, il est possible denregistrer ces paramtres dans le chier de conguration de LILO an de ne pas avoir les saisir chaque dmarrage. Pour cela, il suft dindiquer le paramtre de dmarrage du noyau dans une ligne append de la section de conguration de Linux :
append="paramtre"

Ainsi, la section de conguration de Linux du chier lilo.conf exemple donn ci-dessus pourrait tre remplace par celle-ci sur une machine disposant de 256 Mo de mmoire :
# Premire configuration (Linux) : image = /boot/vmlinuz root = /dev/hda2 label = linux append="mem=256M"

La liste des paramtres que lon peut fournir au noyau est relativement grande et ne sera pas dcrite ici. Les plus utiles seront prsents en temps et en heure, notamment dans le chapitre dcrivant la conguration du systme.

4.8.2. Ralisation dun multiboot avec le GRUB


Le GRUB (abrviation de langlais GRand Unied Bootloader ) est le gestionnaire damorage dvelopp par la Free Software Foundation pour amorcer le noyau Hurd du projet GNU. Il est capable de faire dmarrer tous les systmes utilisant un protocole de dmarrage standard initialement dni pour le Hurd. Bien entendu, il sait aussi amorcer les systmes Linux, qui nutilisent pas ce protocole, ainsi que la plupart des autres systmes dexploitation en passant le relai leurs propres gestionnaires damorage. En fait, le GRUB fournit la possibilit de contrler totalement lamorage de son systme par lintermdiaire dun interprteur de commandes simpli. Il est possible, par lintermdiaire de cet interprteur de commandes, deffectuer nombre doprations dans le but de charger un noyau de systme dexploitation et de lamorcer. Bien entendu, ces commandes peuvent tre crites dans un chier de conguration an dautomatiser le processus de chargement.

50

Chapitre 4. Installation du systme de base Le GRUB est normalement install dans le rpertoire /boot/grub/. Ce rpertoire contient, outre les chiers binaires du GRUB lui-mme, son chier de conguration. Ce chier se nomme normalement menu.lst, en raison du fait quil permet de dnir les diffrentes congurations correspondantes aux systmes dexploitation charger et qui apparatront dans le menu de dmarrage lors de lamorage de la machine. Contrairement LILO, qui enregistre lemplacement des chiers des diffrents noyaux charger dans une liste de blocs du disque dur, le GRUB sait interprter les systmes de chiers classiques de Linux. En particulier, il est capable de retrouver son chier de conguration et les chiers images des noyaux Linux dans les systmes de chiers FAT, EXT2/EXT3 et ReiserFS. Cette particularit fait quil nest pas ncessaire, lorsquon modie le chier de conguration menu.lst, de rinstaller le GRUB. Tout comme le chier de conguration de LILO, le chier menu.lst se compose dune partie contenant les options globales et dune ou plusieurs parties contenant la description des diffrents systmes dexploitation proposer au dmarrage. Les options gnrales les plus utiles sont les suivantes :

loption default, qui permet de spcier la conguration par dfaut charger. Cette option doit tre suivi du numro de cette conguration. Les congurations sont numrotes partir de 0, dans leur ordre dapparition dans le chier de conguration ; loption timeout, qui permet de spcier le dlai dattente avant que la conguration par dfaut spcie par loption default ne soit lance.

Les congurations spciques aux systmes dexploitation suivent la syntaxe suivante :


title titre root partition kernel noyau options

o titre est le titre de la conguration tel quil doit apparatre dans le menu de dmarrage du GRUB, partition est la partition dans laquelle se trouve le noyau charger, et noyau est le chemin sur le chier image de ce noyau dans cette partition. Attention, ce chemin est dni dans la partition ellemme et peut donc tre diffrent du chemin utilis sous Linux. En effet, il faut dnir ce chemin par rapport au point de montage de la partition, faute de quoi le GRUB ne retrouverait pas le chier image du noyau charger. Comme le GRUB nest pas un chargeur spcique Linux mais a t crit au contraire avec comme principal objectif une gnricit absolue, la manire de spcier la partition dans laquelle le noyau se trouve utilise une syntaxe diffrente de celle utilise sous Linux. Cette syntaxe, propre au GRUB donc, est la suivante :
(hdn,m)

o n est le numro du disque dans lordre numr par le BIOS de la machine et m est le numro de la partition. Ce dernier numro est facultatif (ainsi que la virgule qui le prcde), ce qui permet de rfrencer un disque complet et non une partition. La numrotation des disques et des partitions commence toujours 0 dans le GRUB, ce qui fait que la premire partition du premier disque est rfrence par (hd0,0), la deuxime partition du premier disque par (hd0,1), la premire partition du deuxime disque par (hd1,0), etc. Tout comme avec LILO, il est possible de spcier des options de dmarrage qui devront tres fournies au noyau. Ces options devront tre spcies immdiatement aprs le nom de limage du noyau. Comme vous pouvez le constater, la dnition dune conguration de dmarrage pour un systme Linux est trs simple, puisquil suft quasiment de donner la ligne de commande pour lancer ce

51

Chapitre 4. Installation du systme de base noyau ! Par exemple, pour charger le noyau /boot/vmlinuz dun systme situ sur la deuxime partition du premier disque, la conguration suivante doit tre dnie :
title Linux root (hd0,1) kernel /boot/vmlinuz mem=256M

Cet exemple prsente galement comment spcier la taille de la mmoire disponible dans la machine (cela nest normalement pas ncessaire avec les BIOS rcents et avec le GRUB). Bien entendu, le GRUB est capable de charger le secteur de boot dune partition an de passer le relai au gestionnaire damorage dun autre systme dexploitation. Pour cela, il faut utiliser la commande chainloader, plutt que la commande kernel, dans la description de la conguration de dmarrage de ce systme. La forme gnrale dune conguration de ce type est donc la suivante :
title titre root partition chainloader +1

Le +1 qui suit la commande chainloader indique au GRUB de charger le premier secteur de la partition indique par la commande root et dexcuter le gestionnaire damorage normalement stock dans ce secteur. Comme pour les congurations Linux, la syntaxe utilise pour spcier la partition o ce secteur est situ est la syntaxe du GRUB et non celle utilise sous Linux. Le chier de conguration dexemple suivant correspond au chier de conguration de LILO vu dans la section prcdente. Il permet de dmarrer un Linux install sur la deuxime partition ou un Windows NT install sur la troisime partition du premier disque dur de la machine :
# Exemple de fichier de configuration /boot/grub/menu.lst : # Options gnrales : default 0 timeout 10 # Premire configuration (Linux) : title Linux root (hd0,1) kernel /boot/vmlinuz root=/dev/hda2 mem=256M # Deuxime configuration (NT) : title NT root (hd0,2) chainloader +1

Linstallation du GRUB sur une nouvelle machine ne pose quant elle pas de problme particulier. Il suft de sassurer que le chier de conguration menu.lst se situe bien dans le rpertoire /boot/grub/, de mme que les chiers binaires du GRUB. Ces chiers sont respectivement les chiers stage1, stage2 et tous les chiers *_stage1_5. Sils ne sy trouvent pas, vous pourrez les copier partir du rpertoire /usr/share/grub/i386-pc/, dans lequel le programme dinstallation du GRUB les place par dfaut. Lorsque tous les chiers sont en place, il ny a plus qu lancer le GRUB en mode interactif avec la commande suivante :
grub

52

Chapitre 4. Installation du systme de base et dnir le secteur o il doit installer son chier damorage principal stage1 (cest--dire dans le secteur de boot dune partition ou directement sur le MBR du premier disque dur). Pour cela, vous devrez utiliser les deux commandes suivantes :
root source setup destination source est ici la partition o est install le GRUB (il sagit donc de la partition o se trouvent le rpertoire /boot/grub/), et destination est le disque dur ou la partition dont le premier secteur

doit recevoir le code damorage du GRUB. Ces deux informations doivent suivre la syntaxe utilise par le GRUB pour spcier les disques durs et les partitions. Par exemple, pour installer le GRUB sur le secteur de boot de la deuxime partition du premier disque dur, on utilisera les deux commandes suivantes :
root (hd0,1) setup (hd0,1)

Cet exemple suppose que le GRUB est galement install dans cette partition. Si ce nest pas le cas pour vous, vous devrez modier la partition spcie dans la commande root. Vous pourrez quitter le grub avec la commande quit une fois linstallation termine.

4.8.3. Ralisation dun multiboot avec NTLDR


Le gestionnaire damorage de Windows NT, Windows 2000 et XP se nomme NTLDR . Ce gestionnaire damorage permet de dmarrer ces systmes, bien entendu, mais galement les autres systmes dexploitation les plus courants, dont Linux. Cette section ne traitera bien entendu que de la manire dutiliser NTLDR pour dmarrer Linux, pour de plus amples informations sur la manire dajouter les autres systmes dexploitation, veuillez consulter la documentation de Microsoft. Tout comme LILO, NTLDR dispose dun chier de conguration qui permet de dcrire les diffrentes options de son menu de dmarrage. Il sagit du chier boot.ini, qui est normalement plac la racine du disque o NTLDR est install. Il sagit donc gnralement du rpertoire racine du disque C:\. Le chier boot.ini contient la dnition du systme dexploitation lancer par dfaut et du dlai dattente attendre avant de le slectionner. Ces deux informations sont crites dans la section [boot loader] du chier et sont introduites respectivement par les options default et timeout. La valeur de loption default doit tre lune des entres de la section [operating systems], qui contient la dnition de tous les systmes dexploitation que NTLDR devra proposer au dmarrage. La syntaxe des entres pour les systmes dexploitation dans la section [operating systems] est la suivante :
emplacement = "Nom"

o emplacement est la description de lemplacement o se trouve le systme dexploitation, et Nom est le nom avec lequel ce systme devra apparatre dans le menu de dmarrage de NTLDR. Cette syntaxe est trs simple, mais pour les systmes NT4, Windows 2000 et XP, la dnition de lemplacement du systme est assez complique. En effet, elle ncessite de dnir compltement le disque physique et sa partition, ainsi que le rpertoire du systme. Pour les autres systmes dexploitation, le plus simple est de spcier un chier contenant limage du secteur de boot de leur partition, et de laisser leur chargeur prendre en charge leur amorage.

53

Chapitre 4. Installation du systme de base Pour cela, il faut bien entendu disposer dun tel chier. Il faut donc copier le premier secteur de la partition du systme dans un chier accessible NTLDR, donc, en pratique, situ dans le rpertoire C:\. Vous pourrez extraire le contenu du secteur de boot de votre partition Linux avec la commande suivante sous Linux :
dd if=/dev/hda3 of=linux.sec bs=512 count=1

Cette commande suppose que LILO ait t install sur la partition /dev/hda3. Elle permet de lire un bloc de 512 octets de la troisime partition du premier disque dur et de lenregistrer dans le chier linux.sec. Vous pourrez ensuite transfrer ce chier dans le rpertoire C:\ de Windows, soit en passant par une partition FAT, soit tout simplement laide dune disquette (rappelons que le systme de chiers NTFS nest utilisable quen lecture seule sous Linux). Une fois ce chier obtenu, vous pourrez simplement ajouter la ligne suivante dans votre chier boot.ini :
C:\linux.sec="Linux"

Le contenu de votre chier boot.ini devrait alors ressembler ceci :


[boot loader] timeout=10 default=multi(0)disk(0)rdisk(0)partition(2)\WINNT

[operating systems] multi(0)disk(0)rdisk(0)partition(2)\WINNT="Microsoft Windows 2000 Professionnel" /fastdet C:\linux.sec="Linux"

Vous devriez alors pouvoir dmarrer Linux directement partir du menu de dmarrage de NTLDR.
Note : Prenez soin utiliser un nom court pour le chier contenant le secteur de Linux (cest-dire un nom ne comprenant pas plus de huit caractres et une extension dau plus trois caractres). En effet, Windows, mme dans ses versions les plus rcentes, a toujours du mal prendre en charge les noms longs et il se peut que le gestionnaire damorage NTLDR ne puisse pas localiser le chier si vous ne respectez pas cette rgle.

54

Chapitre 5. Commandes Unix de base


Si vous tes parvenu installer les paquetages de la srie de base, vous disposez dun systme Linux fonctionnel. Flicitations ! Maintenant, il va falloir le congurer... Autant vous prvenir tout de suite : cette opration demande beaucoup de temps et de patience, moins davoir une machine vraiment standard et une chance phnomnale. Mais pour cela, il va falloir que vous appreniez les commandes Unix de base et la manire dutiliser un systme Linux en ligne de commande (cest--dire en mode texte, sans XWindow).

5.1. Login et dconnexion


Comme il la dj t dit, Linux est un systme multiutilisateur. Il faut donc que chacun sidentie pour que le systme puisse fonctionner correctement. Cette opration est ralise lors de lopration dite de login (du verbe anglais to log in , qui signie senregistrer dans le systme). Le login consiste essentiellement taper son nom dutilisateur, valider, et rpondre ventuellement la demande de mot de passe de la part du systme. Le login doit tre la premire opration effectuer. Il est impossible daccder au systme dune autre manire, et la vrication du mot de passe fournit lauthenticit de lutilisateur qui se logue. Ainsi, le systme sait en permanence au nom de quelle personne il effectue les oprations demandes. Cette opration est la base des mcanismes de scurit et de personnalisation du systme pour chaque utilisateur. Il existe deux types de login. Le plus courant est le login en mode texte, qui peut tre fait directement sur le poste local ou travers un rseau. Le systme vous invite vous identier avec la ligne suivante :

login:

Dautres informations peuvent tre afches avant le mot login, qui peuvent vous renseigner sur la nature du systme. Quoi quil en soit, vous devez taper votre nom dutilisateur (que lon appelle simplement login ), ou root si vous dsirez vous connecter en tant quadministrateur. Le systme vous demande alors le mot de passe avec la ligne suivante :
password:

Bien entendu, vous ne devrez jamais oublier votre mot de passe administrateur. Si toutefois cela vous arrive, vous naurez plus quune seule solution : dmarrer lordinateur partir dune disquette systme, et faire le mnage dans le chier de mots de passe. Cette opration nest jamais trs agrable raliser. Conclusion : noubliez jamais votre mot de passe. Le deuxime type de login est le login graphique, sous X11. Ce type de login a en gnral lieu sur un terminal X (cest--dire un terminal graphique). La procdure peut varier selon lenvironnement utilis, mais le principe reste toujours le mme : il faut fournir son nom dutilisateur et son mot de passe.

55

Chapitre 5. Commandes Unix de base Si, comme la plupart des gens, vous ne cherchez pas utiliser votre ordinateur distance travers un rseau, vous vous connecterez quasiment toujours en local. Linux fournit, pour lutilisateur local, plusieurs terminaux virtuels. Cela signie quil est possible de se connecter plusieurs fois dans le systme dans des terminaux diffrents. Pour passer dun terminal virtuel un autre, il suft de taper les combinaisons de touches ALT+DROITE ou ALT+GAUCHE, o DROITE et GAUCHE sont respectivement les ches du curseur droite et gauche. Il est galement possible daccder un terminal donn laide de la combinaison de touches ALT+Fn, o Fn est lune des touches de fonction F1, F2, F3, etc. La plupart des distributions utilisent au moins quatre terminaux virtuels, plus un terminal X. Le terminal X est le terminal graphique, qui fonctionne sous XWindow. Vous noterez sans doute que lorsquon est sous XWindow, les combinaisons ALT+Fn ont une autre signication. Elles ne peuvent donc pas tre utilises pour basculer vers les terminaux en mode texte. Pour remdier ce problme, une autre combinaison de touches a t dnie, spcialement pour XWindow : CTRL+ALT+Fn. Il suft donc simplement dutiliser la touche CTRL en plus de la touche ALT. Lutilisation des terminaux virtuels est trs pratique, mme pour un seul utilisateur. En effet, ceux-ci permettent de lancer plusieurs programmes simplement, raison dun par terminal virtuel, et de sy retrouver ainsi plus facilement. Pour ceux qui ne connaissent pas les systmes Unix, il est recommand de jouer un peu avec les terminaux virtuels an de simuler la prsence de plusieurs utilisateurs. Ils auront ainsi un aperu de la puissance de ces systmes. Lorsquon a ni de travailler, il faut se dconnecter. Cette opration est trs simple pour les terminaux non graphiques, puisquil suft de taper la commande suivante :
logout

Si daventure cette commande ne fonctionnait pas, vous pourrez utiliser la commande exit ou la combinaison de touches CTRL+d, qui terminent le shell courant (y compris le shell de login). Pour les terminaux X, le processus de dconnexion dpend de lenvironnement utilis. Il faut ttonner un peu, et normalement on trouve une option de menu du style logout ou dconnexion . Vous pouvez par exemple cliquer sur le bouton droit de la souris sur le bureau de lenvironnement de travail, an dappeler un menu contextuel. Dans bien des cas, ce menu contient une option de dconnexion. Il est trs important de se dconnecter et de ne jamais laisser une session ouverte. En effet, cette ngligence peut vous coter cher, car une personne mal intentionne pourrait trs bien utiliser ce terminal vos dpends. Il aurait tous vos droits, et effectuerait ses oprations en votre nom. La scurit du systme garantissant que vous seul pouvez vous connecter sous ce nom, grce au mot de passe, vous seriez donc responsable des agissements de lintrus. Bien entendu, ce genre de considration na pas autant dimportance pour un particulier que dans une entreprise ou une collectivit quelconque.

5.2. Arrt et redmarrage du systme


Il faut bien comprendre que Linux, tout comme la plupart des systmes dexploitation modernes, ne peut pas tre arrt en teignant directement lordinateur, comme on le faisait autrefois avec le DOS. En effet, la plupart des systmes dexploitation utilisent une partie de la mmoire de lordinateur pour y stocker temporairement les donnes qui ont t lues partir du disque et celles qui doivent y tre crites. Cette zone de mmoire constitue ce quon appelle un tampon ( buffer en anglais), et elle sert acclrer les accs aux priphriques plus lents, que sont les disques durs et lecteurs de CDROM. Il va de soi quune requte de lecture sur des donnes dj situes en mmoire est inniment plus rapide que si elles ne sy trouvaient pas. Il est en revanche plus difcile de comprendre pourquoi les requtes dcriture doivent tre diffres. La raison est la suivante : le systme prfre diffrer

56

Chapitre 5. Commandes Unix de base lcriture physique sur le disque parce quune autre requte dcriture dans la mme zone du disque peut trs bien avoir lieu ultrieurement. Si les donnes qui nont pas t crites sont ainsi modies par une requte ultrieure, il nest plus ncessaire de les crire, et ainsi le systme peut conomiser un temps prcieux en ne le faisant pas. Si les donnes crire sont contigus celles dune requte prcdente, le systme peut les crire en bloc, ce qui est toujours plus rapide que de faire plusieurs critures partielles (notamment parce que les ttes de lecture du disque nont pas tre dplaces). Enn, si les donnes qui doivent tre crites font lobjet dune requte de lecture, il va de soi quelles sont immdiatement accessibles. On voit que cette stratgie permet de travailler beaucoup plus vite. De facto, Linux utilise toute la mmoire vive libre pour ses tampons dentres / sorties, ce qui en fait un systme extrmement performant. Le gain en performances peut facilement atteindre un facteur 3 ou 4. Le problme majeur est videmment que si lon teint lordinateur brutalement, les donnes dont lcriture a t diffre sont perdues. Pire, parmi ces donnes, il est probable quil y ait des informations vitales pour le systme de chiers, ce qui fait quil risque fort dtre endommag. Les systmes de chiers journaliss comme EXT3 et ReiserFS sont labris de ce type derreur en raison de laccs transactionnel aux structures de donnes du systmes de chiers quils utilisent, et le systme parvient gnralement rparer les autres systmes de chiers lors de la vrication qui est lance au redmarrage suivant de la machine, mais il est inutile de prendre des risques. Tout cela signie quil est impratif de prvenir le systme avant de larrter, pour quil puisse crire les donnes situes dans ses tampons. Larrt du systme est une opration qui est du ressort de ladministrateur. On ne peut donc le raliser que sous le compte root. Plusieurs commandes sont disponibles, les plus simples sont donnes cidessous :

halt, qui permet darrter le systme. reboot, qui permet de le redmarrer.

Ces commandes sont en fait des scripts permettant deffectuer les oprations darrt et de redmarrage du systme rapidement. Si elles ne sont pas disponibles sur votre distribution, vous devrez sans doute utiliser la commande gnrique suivante :
shutdown [-r] now

o loption -r permet de demander un redmarrage et non un arrt simple. Il est galement possible que votre gestionnaire de bureau vous donne le moyen darrter lordinateur par lintermdiaire de linterface graphique de X11. La technique utiliser dpend videmment de lenvironnement que vous aurez install, et elle ne sera pas dcrite ici. Consultez la documentation de votre distribution pour plus de dtails ce sujet. De plus, la plupart des distributions provoquent un redmarrage de la machine lorsquon appuie sur les touches CTRL+ALT+SUPPR simultanment dans un terminal virtuel.

5.3. Pages de manuel


Maintenant que vous savez lessentiel pour conserver votre systme en bon tat, nous allons traiter des autres commandes Unix. Parmi elles, il en est qui sont certainement fondamentales : ce sont les commandes qui permettent dobtenir de laide !

57

Chapitre 5. Commandes Unix de base Chaque commande Unix a une page de manuel qui la dcrit. Ces pages sont trs souvent crites en anglais, mais elles sont trs prcises et fournissent toutes les informations dont on peut avoir besoin. Pour afcher la page de manuel dune commande, il suft dutiliser la commande suivante :
man page

o page est la page de manuel de la commande sur laquelle on cherche des informations. En gnral, le nom de la page de manuel est le mme que celui de la commande. Par exemple, pour afcher laide sur la commande cp, il suft de taper :
man cp

Lorsquune page de man est afche, il est possible de faire dler son texte laide des touches du curseur. Pour quitter laide, il suft dappuyer sur la touche q. Les pages de man sont classes en groupes de pages thmatiques, chaque groupe tant identi gnralement par un numro ou une lettre. Si la page de man afche ne correspond pas celle dsire, cest quune page homonyme dun autre groupe a t utilise. Dans ce cas, il faut prciser lidenticateur du groupe de pages de manuel avant le nom de la page afcher :
man groupe page

o goupe est lidenticateur du groupe auquel la page de manuel appartient. Les principaux groupes sont les suivants : Tableau 5-1. Groupes de pages de man Identicateur 1 2 3 4 5 6 7 8 Type de pages de manuel Commandes utilisateur Appels systmes (programmation en C) Fonctions de la bibliothque C Description des chiers spciaux Description des chiers de conguration Jeux et programmes divers Programmes systmes divers Administration systme

Si vous ne savez pas dans quel groupe se trouve une page de manuel, vous pouvez utiliser loption -k, qui permet dafcher lensemble des pages disponibles portant ce nom :
man -k commande

Lidenticateur du groupe est en gnral prcis entre parenthses, la suite du nom de la page de manuel. Il se peut galement que vous recherchiez de laide sur un sujet donn, mais que vous ne connaissiez pas le nom exact de la page de manuel qui en parle. Pour ce genre de recherche, vous pourrez utiliser le programme apropos, qui recherchera toutes les pages de manuel qui contiennent un mot cl

58

Chapitre 5. Commandes Unix de base particulier. Ce programme sutilise avec la syntaxe suivante :
apropos mot

o mot est le mot cl rechercher dans toutes les pages de manuel. La commande man est la commande daide standard sur tous les systmes Unix. Cependant, Linux utilise un grand nombre de commandes crites sous la licence GNU, et qui utilisent un format daide spcique GNU. Laide pour ces commandes peut tre obtenue par la commande suivante :
info commande

Il se peut que les deux mthodes fonctionnent. Dans ce cas, la page de man sera certainement moins rcente que la page dinfo, car la commande que vous utilisez est sans aucun doute une commande GNU, qui a t fournie avec sa page dinformation. Il est donc recommand de lire plutt la page dinformation GNU. Le format daide GNU est plus riche que celui de man, puisquil permet de naviguer dans le systme daide laide de liens hypertextes. Ces liens sont organiss hirarchiquement, avec des chapitres et des sous-chapitres. Chaque chapitre dispose dune forme de table des matires constitue de menus, qui permettent daccder aux sous-chapitres. Les menus se distinguent du texte normal par un astrisque ( * ) en dbut de ligne dans la table des matires. Les commandes clavier suivantes pourront vous tre utiles pour naviguer dans la hirarchie du systme daide de GNU :

la touche de tabulation permet de passer au lien hypertexte suivant ; la touche n (pour Next ) permet de passer au chapitre suivant ; la touche p (pour Previous ) permet de revenir au chapitre prcdent ; la touche u (pour Up ) permet de remonter dun niveau dans le systme daide et datteindre la table des matires rfrenant le chapitre courant.

Enn, la commande q permet de quitter le systme daide.

5.4. Oprations de base sur les rpertoires


Ce paragraphe va vous dcrire les oprations de base quil faut savoir faire pour manipuler les rpertoires du systme de chiers. La premire commande est videmment celle qui permet de lister le contenu dun rpertoire. Elle dispose dun grand nombre doptions :
ls [options] [fichier]

o fichier est le nom dun chier ou dun rpertoire que lon dsire lister. Si ce paramtre est absent, ls afchera tous les chiers du rpertoire courant. Les principales options sont -l, qui permet dafcher des informations tendues (notamment les propritaires, les groupes, les droits, la taille et ventuellement les liens), et -a, qui permet dafcher tous les chiers, y compris les chiers cachs (ceux dont le nom commence par un point). La deuxime commande est celle qui permet de changer de rpertoire courant. Sa syntaxe est trs simple :

59

Chapitre 5. Commandes Unix de base


cd [chemin]

o chemin est un chemin de rpertoire Unix valide. Ce chemin est constitu des noms des rpertoires et sous-rpertoires successifs, spars par des barres obliques / . Si aucun chemin nest spci, cette commande change le rpertoire courant pour le rpertoire personnel de lutilisateur. Par exemple, pour aller dans le rpertoire dinstallation de XWindow, il faut taper la commande suivante :
cd /usr/X11

La notion de chemin sera dtaille dans le paragraphe suivant. cd est labrviation de langlais Change Directory . La troisime commande permet de crer un rpertoire :
mkdir chemin

o chemin est le chemin spciant le rpertoire crer. Si le chemin ne contient que le nom du rpertoire crer, celui-ci est cr dans le rpertoire courant et devient donc un sous-rpertoire. mkdir est labrviation de langlais MaKe DIRectory ). La commande pour supprimer un rpertoire est la suivante :
rmdir chemin

Pour supprimer un rpertoire, il faut quil soit vide (cest--dire quil ne contienne ni chier, ni rpertoire). rmdir est labrviation de langlais ReMove DIRectory . Enn, voici une commande dont vous ne vous servirez normalement que trs peu, voire pas du tout. Elle permet dafcher le rpertoire courant :
pwd

Cette commande nest a priori pas trs utile, car le shell afche toujours le rpertoire courant sur la plupart des distributions. Cependant, le chemin afch par le shell tant relatif au rpertoire personnel de lutilisateur lorsquon se trouve dans un sous-rpertoire de celui-ci, la commande pwd peut tre utile lorsquon dsire obtenir un chemin absolu sur le rpertoire courant. pwd est labrviation de langlais Print Working Directory . Cette commande est galement utilise par les scripts pour dterminer le rpertoire partir duquel ils sont excuts.

5.5. Notions de chemins sous Unix


Les chemins Unix permettent de qualier compltement un rpertoire ou un chier sur le disque. Pour cela, ils utilisent les noms de ces rpertoires et de ces chiers, et ils les combinent pour indiquer comment atteindre la cible dans le systme de chiers. Classiquement, les chemins sont spcis par la squence des rpertoires dans lesquels il faut aller pour trouver cette cible. Cette squence est donne par la suite des noms des rpertoires, spars par un caractre spcial. Sous Unix, ce caractre est la barre oblique ( / ). Le rpertoire racine na pas de nom, et peut donc tre rfrenc par une barre oblique seule.

60

Chapitre 5. Commandes Unix de base Les chemins peuvent tre absolus (cest--dire quils peuvent partir du rpertoire racine) ou relatifs (cest--dire quil peuvent partir du rpertoire courant). Si lon utilise un chemin relatif, il faut savoir que le rpertoire courant est dsign par un point ( . ), et que le rpertoire parent du rpertoire courant est dsign par deux points successifs ( .. ). Ainsi, si lon est dans le rpertoire /usr/local/bin, on peut accder au rpertoire /usr/X11/bin avec les deux chemins suivants :
/usr/X11/bin

ou :
../../X11/bin

Le premier chemin est absolu, parce quil part directement du rpertoire racine. Le deuxime chemin est relatif, car il part du rpertoire courant.
Note : Il va de soi que les chemins relatifs ne sont valides, sauf coup de chance, que dans le rpertoire dans lequel ils sont crits, alors que les chemins absolus sont toujours valables. En revanche, si des rpertoires sont dplacs ensemble, les chemins relatifs entre ces rpertoires restent valides, mais les chemins absolus deviennent faux. Toutefois, ces considrations ne concernent pas un utilisateur de base.

La plupart des shells sont capables deffectuer ce que lon appelle la compltion automatique des commandes. La compltion automatique permet de ncrire quune partie des noms de chiers ou de rpertoires et de demander au shell de complter ces noms. Cela peut se faire de deux manires. La premire solution, qui est aussi la plus simple, consiste taper le dbut du nom, puis dutiliser une touche spciale qui permet de demander au shell de le complter. Si vous utilisez le shell bash (bash est le shell de prdilection sur les systmes Linux), cette touche est la touche de tabulation. Ainsi, si vous tapez :
cd /ho

et que vous appuyez sur la touche de tabulation, bash compltera cette ligne de la manire suivante :
cd /home/

Pour cela, il regarde la liste des chiers et des rpertoires qui commencent par ho dans le rpertoire racine. Normalement, il ne sy trouve que le rpertoire /home/, et cest ce nom que bash utilise. Il va de soi quil ne faut pas quil y ait ambigut sur un nom partiel. Par exemple, si vous tapez la commande suivante :
cd /usr/l

et que vous demandiez au shell de complter le nom, il ne pourra pas choisir quel rpertoire utiliser entre /usr/lib/ et /usr/local/. Dans ce cas, il mettra un petit bip signalant lerreur. En appuyant une fois de plus sur la touche de tabulation, bash afche la liste des choix possibles et vous propose de terminer la ligne de commande en saisissant des caractres supplmentaires an de rsoudre lambigut.

61

Chapitre 5. Commandes Unix de base La deuxime solution est dutiliser les caractres gnriques du shell. Ces caractres permettent de dsigner nimporte quel caractre, ou nimporte quelle squence de caractres. Ils sont dsigns respectivement par un point dinterrogation ( ? ) et par un astrisque ( * ). Ainsi, si lon tape la commande suivante :
cd /ho*

le shell ira directement dans le rpertoire /home/, car le caractre gnrique * peut tre remplac par la squence de caractres me . Il est galement possible dcrire :
cd /?ome

et dans ce cas le caractre gnrique ? sera remplac par h . Encore une fois, il ne faut pas quil y ait ambigut. Dans le cas contraire, le comportement varie selon le shell. En gnral, il essaie de rsoudre lambigut au mieux en analysant la suite du chemin, et sil ne peut pas, il afche un message derreur.
Note : Ces caractres gnriques sont interprts directement par le shell et non par la commande qui les reoit en paramtres. Tout nom de chier contenant un caractre gnrique est remplac par la liste des chiers qui correspondent au motif donn. Sil nexiste quun seul chier dans cette liste, il est possible dutiliser les commandes comme cd, qui ne prennent quun seul paramtre. Mais il est possible dutiliser les commandes acceptant plusieurs paramtres, mme sil y a plusieurs chiers dans cette liste. Ainsi, la commande suivante :
ls *txt

permet de lister tous les chiers dont le nom se termine par txt . Il ne peut videment pas y avoir dambigut dans ce cas. Si on doit passer un paramtre comprenant lun des caractres gnriques interprts par le shell une commande particulire, on devra prxer les caractres gnriques dun caractre dchappement pour signaler au shell quil ne doit pas linterprter. Ce caractre dchappement est la barre oblique inverse ( \ ). Il est galement possible de passer les paramtres entre guillements " , car le shell ninterprte pas les caractres gnriques dans les chanes de caractres. Par exemple, pour crer un rpertoire ?, on utilisera la commande suivante :
mkdir \?

5.6. Oprations de base sur les chiers


Vous aurez sans doute afcher le contenu dun chier. Pour cela, la commande la plus approprie est certainement la commande less :
less fichier

Cette commande afche le contenu du chier et vous permet de le faire dler avec les ches du curseur. Lorsque vous dsirez terminer la visualisation, il suft de taper la touche q (pour quitter less). Pour information, le nom de la commande less provient dun trait dhumour sur une commande

62

Chapitre 5. Commandes Unix de base Unix plus classique, la commande more. Cette commande effectue peu prs le mme travail que less, mais elle nafche le texte que page par page. Pour passer la page suivante, il faut appuyer sur la barre despace. Quant lorigine du nom de la commande more, cest quelle afche le mot more au bas de lcran pour indiquer quil y a encore du texte visualiser, et quil faut appuyer sur la barre despace pour lire la suite. La commande less permet galement deffectuer une recherche dans le chier en cours ddition. Pour cela, il suft de taper une commande de recherche de less. Cette commande commence par une barre oblique, suivie du texte chercher. Par exemple, pour rechercher la chane de caractres local dans un chier en cours de visualisation avec less, il suft de taper :
/local

Lorsque vous voudrez rechercher loccurrence suivante du motif de recherche, vous pourrez appuyer sur la touche n (pour Next en anglais). Pour rechercher loccurrence prcdente, il suft de taper la touche N (en majuscule, cette fois). Il est encore plus probable que vous aurez diter un chier. Cette opration peut se faire relativement facilement grce un diteur simpli, vi. Cet diteur nest pas franchement ce qui se fait de plus convivial, cependant, il existe sur toutes les plates-formes Unix dune part, et il est sufsamment lger pour pouvoir fonctionner sur un systme minimal. Il est donc recommand de savoir se servir de vi, ne serait-ce que dans le cas o votre systme ne serait pas compltement fonctionnel. En clair, quand tout va mal, on peut compter sur vi ! vi sera dcrit plus loin dans la Section 5.8, car il dispose dun grand nombre de commandes et il ne serait pas opportun de les dcrire ici. En gnral, la cration dun chier se fait avec vi, bien que dautres commandes puissent crer des chiers. En revanche, pour supprimer un chier, il nexiste quune seule commande :
rm chemin

o chemin est le chemin complet permettant daccder au chier supprimer. Il est possible de spcier plusieurs chiers la commande rm. Dans ce cas, ils seront tous supprims. rm est galement capable de supprimer tous les chiers dun rpertoire, ainsi que ses sous-rpertoires. Dans ce cas, elle dtruit toute une branche de larborescence du systme de chiers. Pour cela, il suft dutiliser loption -r (pour rcursif ) avant le chemin du rpertoire supprimer.
Attention ! : La commande rm ne demande aucune conrmation avant de supprimer les chiers ! Dautre part, les chiers supprims sont irrmdiablement perdus (il ny a pas de commande undelete ou autre commande similaire). Vriez donc bien ce que vous avez tap avant de valider une commande rm (surtout si vous tes sous le compte root). Il peut tre judicieux de forcer la commande rm demander conrmation avant la suppression des chiers, laide de son option -i. On pourra pour cela dnir un alias rm -i pour la commande rm dans le chier dinitialisation du shell (cest--dire le chier .bashrc pour le shell bash). La notion dalias sera dcrite dans la Section 5.9.9.

La copie dun chier se fait avec la commande cp, dont la syntaxe est donne ci-dessous :
cp fichiers rpertoire

o fichiers est la liste des chiers copier, et rpertoire est le rpertoire destination dans lequel ces chiers doivent tre copis. Enn, le dplacement des chiers se fait avec la commande mv, comme indiqu ci-dessous :

63

Chapitre 5. Commandes Unix de base


mv source destination

o source est le nom du chier source et destination est le nom du rpertoire destination. Notez que mv est une commande trs puissante, puisquelle permet galement de dplacer des rpertoires et de renommer des chiers et des rpertoires. Pour renommer un chier ou un rpertoire, il suft dindiquer le nouveau nom de ce chier ou de ce rpertoire la place de destination.

5.7. Autres commandes utiles


Pour terminer ce petit cours dUnix, nous allons dcrire quelques-unes des autres commandes dUnix parmi les plus utiles. Elles sont utilises moins souvent que les commandes vues prcdemment, mais vous apprendrez certainement trs vite vous en servir, car elles sont trs pratiques.

5.7.1. Passage en mode superviseur


Si vous tes prudent, vous avez sans doute cr un compte utilisateur juste aprs avoir install votre systme de base, et vous ne travaillez plus que dans ce compte. Cette technique est prudente, cependant, elle pose un problme vident : vous ne pouvez pas y faire votre travail dadministrateur. Cest pour cela que la commande su a t cre. Cette commande permet de changer son identit dans le systme :
su [utilisateur]

o utilisateur est lutilisateur dont on veut prendre lidentit. Par dfaut, si aucun utilisateur nest spci, le changement didentit se fait vers lutilisateur root. Bien entendu, il va de soi que la commande su demande le mot de passe avant dobtemprer...

5.7.2. Changement des droits des chiers, du propritaire et du groupe


La commande permettant de changer les droits dun chier ou dun rpertoire est la suivante :
chmod droits fichier

o fichier est le chier ou le rpertoire dont on dsire changer les droits, et droits est une chane de caractres permettant de spcier les nouveaux droits. Cette chane commence par une lettre indiquant le groupe dutilisateurs auquel le droit doit tre appliqu, dun caractre + ou - indiquant si le droit doit tre ajout ou supprim, et dune lettre indiquant le droit que lon est en train de manipuler. La premire lettre peut prendre les valeurs suivantes :

u g o

pour le champ utilisateur , cest--dire le propritaire du chier ; pour le champ groupe , cest--dire tous les utilisateurs faisant partie du groupe du chier ;

pour le champ other , cest--dire pour tous les utilisateurs qui ne sont ni propritaires, ni membres du groupe du chier ; pour tous les champs sans distinction, donc pour tous les utilisateurs.

64

Chapitre 5. Commandes Unix de base Les droits sont identis par lun des caractres suivants :
r w x s t

pour le droit de lecture ; pour le droit dcriture ; pour le droit dexcution ; pour les bits setuid et setguid ; pour le bit sticky.

Ainsi, la commande suivante :


chmod g+w toto

permet de donner le droit dcriture sur le chier toto tous les membres du groupe auquel ce chier appartient. Les droits daccs ont dj t dcrits en dtail ci-dessus dans le chapitre concernant les notions gnrales sur Unix. Le changement de propritaire dun chier ne peut tre ralis que par ladministrateur du systme. Cette opration se fait laide de la commande suivante :
chown utilisateur fichier

o utilisateur est le nom de lutilisateur qui doit devenir propritaire du chier, et fichier est le chier devant changer de propritaire. Le changement de groupe peut tre ralis par nimporte quel utilisateur, mais on ne peut donner un chier qu lun des groupes dont on est membre. Cette opration se fait laide de la commande suivante :
chgrp groupe fichier

o groupe est le nom du groupe qui doit tre affect au chier, et fichier est le chier devant changer de groupe. Bien entendu, ladministrateur peut affecter un chier nimporte quel groupe dutilisateur.

5.7.3. Gestion des liens


La commande pour crer un lien est ln. Cette commande utilise la syntaxe suivante :
ln [-s] source lien

o source est le nom du chier ou du rpertoire source auquel le lien doit se rfrer, et lien est le nom du lien. Loption -s permet de crer un lien symbolique. Par dfaut, ce sont des liens physiques qui sont crs. Rappelons quil est impossible de crer des liens physiques sur des rpertoires. Lorsquon liste des chiers, on peut demander lafchage dinformations complmentaires sur les liens. Pour cela, il suft dutiliser loption -l de la commande ls. Ainsi, la commande suivante :
ls -l lien

permet dafcher les informations sur le lien lien, et en particulier le chier ou le rpertoire cible de ce lien.

65

Chapitre 5. Commandes Unix de base La suppression des liens se fait exactement comme celle dun chier. La destination nest pas affecte en gnral, sauf si le lien est un lien physique et constitue la dernire rfrence au chier point par le lien. Les liens symboliques nont pas de droits daccs ni de propritaires, les informations de scurit de la cible sont utilises lorsquon accde au lien.

5.7.4. Montage et dmontage dun systme de chiers


Comme il la t vu dans le chapitre expliquant les gnralits sur Unix, les systmes de chiers ne sont pas accessibles directement. Ils doivent subir une opration que lon nomme le montage. De la mme manire, il faut penser dmonter les systmes de chiers avant dteindre la machine ou de retirer le support dans le cas des supports amovibles, faute de quoi les donnes non crites seront dnitivement perdues. Heureusement, il y a la possibilit denregistrer les systmes de chiers les plus utiliss pour que le systme les monte et les dmonte automatiquement au dmarrage et larrt du systme. Cependant, cet automatisme nest disponible que pour les systmes de chiers xes, et il est ncessaire de monter soi-mme les systmes de chiers sur disques amovibles (comme les disquettes et les CD-ROM). Lopration permettant de monter un disque suit la syntaxe suivante :
mount [-t type] fichier base

o fichier est le chier contenant le systme de chiers monter (en gnral, il sagit dun chier spcial de priphrique, mais ce peut galement tre une image disque), et base est le point de montage, cest--dire le rpertoire partir duquel le systme de chiers doit tre accd. Loption -t permet dindiquer le type du systme de chiers, mais en gnral, il nest pas ncessaire de le prciser. En effet, le noyau sait reconnatre la plupart des systmes de chiers automatiquement. Pour information, les systmes de chiers les plus utiliss sont les suivants :

ext2 ext3

pour les systmes de chiers EXT2 ;

pour les systmes de chiers EXT3. Il est ncessaire davoir cr le journal du systme de chiers au pralable, avec loption -j de la commande mke2fs ou de la commande tune2fs ; pour les CD-ROM (quils soient avec extensions Joliet ou Rock Ridge ou en mode ISO 9660 pur) ; pour les systmes de chiers FAT normaux ;

iso9660

msdos vfat

pour les systmes de chiers FAT32 ;

umsdos pour les systmes de chiers UMSDOS (extension au DOS pour permettre les fonctionna-

lits des systmes de chiers Unix).

Si le rpertoire de montage nest pas vide, les chiers qui sy trouvent sont masqus par le systme de chiers mont. Il est donc recommand de ne monter les systmes de chiers que dans des rpertoires vides. La commande permettant de dmonter un systme de chiers est beaucoup plus simple :
umount fichier

ou :

66

Chapitre 5. Commandes Unix de base


umount base

o fichier est le chier contenant le systme de chiers dmonter, et base est le rpertoire dans lequel ce systme de chiers est mont. On peut utiliser lun ou lautre de ces paramtres, la commande umount se dbrouillera pour retrouver lautre automatiquement. On notera quil est impossible de dmonter un systme de chiers qui est en cours dutilisation par quelquun. En particulier, il ne faut pas tre dans le rpertoire servant de point de montage pour pouvoir dmonter un systme de chiers, car dans ce cas on est en train de lutiliser. La commande mount peut prendre diverses options pour le montage des systmes de chiers. Par exemple, elle permet de monter des systmes de chiers en lecture seule, ou de monter des systmes de chiers placs dans des images disques. Ces options sont introduites par loption de ligne de commande -o, et doivent tre spares les unes des autres par des virgules. Par exemple, pour monter un systme de chiers ISO9660 en lecture seule, on utilisera la ligne de commande suivante :
mount -t iso9660 -o ro fichier base

Une autre option utile pour le montage des CD-ROMs est sans doute loption session, qui permet dindiquer le numro de la session monter dans le cas des CD-ROMs multisessions. Par exemple, pour monter la deuxime session dun CD-ROM multisession, on utilisera une ligne de commande telle que celle-ci :
mount -t iso9660 -o ro,session=2 fichier base

Vous pourrez trouver la liste des options acceptes par chaque systme de chiers dans la page de manuel de la commande mount. Le systme de chiers EXT3 prend des options supplmentaires par rapport au systme de chiers EXT2, qui permettent de contrler la manire dont la journalisation des oprations sur disque est ralise. Avec EXT3, le journal peut tre utilis pour stocker toutes les oprations concernant la structure de donnes mme du systme de chiers (cest--dire ce que lon appelle les mta-donnes du systme de chiers) et les oprations concernant les donnes des chiers elles-mmes. La diffrence est importante et il faut bien la comprendre. Si lon choisit de ne journaliser que les mta-donnes du systme de chiers, les informations concernant les rpertoires, les chiers et les droits daccs seront toujours dans un tat cohrent. En revanche, les donnes stockes dans les chiers eux-mmes peuvent tre a priori fausses la suite dun redmarrage impromptu. Si, en revanche, on dcide de stocker galement les informations concernant les donnes des chiers dans le journal, le contenu des chiers sera galement garanti, au dtriment dune perte de performances notable. Le mode de fonctionnement utiliser est spci laide de loption data du systme de chiers, qui doit donc tre xe lors de lopration de montage. Cette option peut prendre lune des trois valeurs suivantes :

journal, qui permet deffectuer une journalisation complte des mta-donnes et des donnes des

chiers. Il est donc garanti que le contenu des chiers est toujours cohrent, tout comme lest le systme de chiers. Cette option procure le maximum de scurit, mais cest galement celle qui pnalise le plus les performances du systme (les donnes sont crites deux fois, une fois dans le journal, et une fois sur disque) ;
ordered,

qui est loption par dfaut et qui permet de ne journaliser que les mta-donnes, mais qui garantit galement que les tampons dcriture sont vids avant chaque journalisation dune opration disque. Tout comme avec loption journal, il est garantit que le systme de chiers est dans un tat cohrent. Les donnes des chiers seront galement cohrentes avec les structures de donnes du systme de chiers. Cependant, rien ne garantit que le contenu des chiers sera lui aussi cohrent en interne, car mme si les donnes sont crites avant toute modication du systme de chiers, aucun contrle nest effectu pour que les critures soient ralises dans lordre

67

Chapitre 5. Commandes Unix de base dans lequel les applications les ont effectues. Cela dit, les performances sont meilleures quavec loption journal, tout en garantissant une scurit quasi totale des chiers ;
writeback, qui permet de ne journaliser que les mta-donnes du systme de chiers. Le contenu

des chiers peut donc tre incorrect, voire mme contenir des donnes alatoires la suite dun arrt brutal du systme, mais le systme de chiers est toujours dans un tat correct. Cette option permet donc simplement de rendre facultative la vrication et la rparation des systmes de chiers EXT2 au redmarrage. Les performances sont quasiment aussi bonnes que pour le systme de chiers EXT2.

Il est possible denregistrer les valeurs par dfaut de toutes ces options dans le chier de conguration /etc/fstab. Ce chier contient, entre autres, le rpertoire de montage, le type du systme de chiers et le chier de priphrique utiliser pour chaque systme de chiers. De cette manire, il est possible dutiliser la commande mount de manire simplie, en ne prcisant que le rpertoire servant de point de montage ou le chier spcial de priphrique. Le chier /etc/fstab sera dcrit plus en dtail dans la Section 6.4.2. Enn, il est possible de monter un systme de chiers plusieurs fois, ventuellement avec des options diffrentes, dans diffrents points de montage.

5.7.5. Recherche de chiers


Il vous sera sans doute ncessaire de rechercher des chiers selon un critre donn dans toute une arborescence de rpertoires. Pour cela, vous utiliserez la commande nd. Cette commande est trs puissante, mais dispose dune syntaxe assez complique :
find rpertoire -name nom -print

o rpertoire est le rpertoire partir duquel la recherche doit commencer et nom est le nom du chier rechercher. Ce nom peut contenir des caractres gnriques du shell, mais dans ce cas doit tre plac entre guillemets an dviter que ce dernier ne les interprte. nd accepte dautres options de recherche que le nom (partie -name de la ligne de commande), et peut effectuer dautres actions que lafchage du chemin des chiers trouvs (partie -print ). Consultez les pages de manuel pour plus dinformations ce sujet.

5.7.6. Recherche dun texte dans un chier


La recherche dune chane de caractres dans un ou plusieurs chiers peut se faire laide de la commande grep. Cette commande prend en premier paramtre le texte rechercher, puis la liste des chiers dans lequel ce texte doit tre trouv :
grep texte fichiers

Le texte peut tre plac entre guillemets si ncessaire (en particulier, sil contient des espaces ou des caractres interprts par le shell, comme * et ?). grep accepte un grand nombre doptions, qui ne seront pas dcrites ici. Consulter les pages de manuel pour plus dinformation ce sujet.

68

Chapitre 5. Commandes Unix de base

5.7.7. Remplacement de texte dans les chiers


Le remplacement de texte dans un chier peut tre effectu de manire automatique, cest--dire sans avoir ouvrir le chier dans un diteur, grce la commande sed (abrviation de langlais Stream Editor ). Cette commande est en fait un utilitaire de manipulation de ux de donnes, qui permet deffectuer des traitements plus gnraux que le simple remplacement de texte, mais cest malgr tout pour cette opration quelle reste la plus utilise. sed peut travailler la vole sur un ux de donnes textuelles, que ce ux provienne de lentre standard ou dun chier. Par dfaut, il crit le rsultat de son travail sur le ux de sortie standard. Les oprations quil doit effectuer sur le ux de donnes peuvent tre spcies de diffrentes manires, soit en fournissant un chier script laide de loption -f, soit directement sur la ligne de commande, avec loption -e. La syntaxe utilise pour appeler sed est donc typiquement la suivante :
sed -e "commandes" fichier > rsultat

ou :
sed -f script fichier > rsultat

o fichier est le chier sur lequel sed doit travailler, et rsultat est le chier devant recevoir le ux de donnes modies. Notez que cette commande utilise une redirection du ux de sortie standard dans un chier. Ce type de redirection sera dcrit en dtail dans la Section 5.9.2. sed peut effectuer un grand nombre de commandes diffrentes et est rellement un outil trs puissant. Cependant, nous ne verrons ici que la commande qui permet deffectuer un remplacement de texte. Cette commande utilise la syntaxe suivante :
s/texte/remplacement/options

o texte est le texte rechercher, remplacement est le texte de remplacement, et options est un jeu doptions exprimant la manire dont le remplacement doit tre fait. Les options sont spcies laide de simple caractres, les plus utiles tant sans doute g, qui permet deffectuer un remplacement global (au lieu de ne remplacer que la premire occurrence du texte rencontre dans chaque ligne), et I, qui permet deffectuer une recherche sans tenir compte de la casse des caractres. Par exemple, la ligne de commande suivante :
sed -e "s/bonjour/bonsoir/g" test.txt > modif.txt

permet de remplacer toutes les occurrences de la chane de caractres bonjour par la chane de caractres bonsoir dans le texte du chier test.txt, et denregistrer le rsultat dans le chier modif.txt.
Note : Il ne faut pas utiliser le mme nom de chier pour le chier source et le chier de rsultat. En effet, sed lit le chier source la vole, et effectuer une redirection sur ce chier pendant son traitement provoquerait la perte irrmdiable de son contenu. Pour rsoudre ce problme, on pourra utiliser un nom de chier temporaire, et craser le chier original par ce chier une fois la commande sed excute.

69

Chapitre 5. Commandes Unix de base

5.7.8. Compression et dcompression des chiers


Linux fournit un grand nombre de programmes de compression de chiers. Le meilleur est sans doute bzip2, et le plus compatible sans doute compress. Cependant, le plus utilis et le plus courant, surtout pour la distribution des sources, reste incontestablement gzip. Nous allons dcrire brivement comment comprimer et dcomprimer des chiers avec gzip et bzip2 dans ce paragraphe. La compression dun chier se fait de manire lmentaire :
gzip fichier

o fichier est le chier comprimer. Aprs avoir effectu son travail, gzip renomme le chier comprim en fichier.gz . La compression dun chier avec bzip2 utilise exactement la mme syntaxe, ceci prs quil faut remplacer gzip par bzip2. De plus, le nom du chier comprim porte lextension .bz2 au lieu de .gz. Le chier obtenu est donc nomm fichier.bz2 . La dcompression dun chier se fait laide de la commande suivante :
gunzip fichier.gz

ou
bunzip2 fichier.bz2

selon quil a t comprim avec gzip ou bzip2. Aprs dcompression, lextension complmentaire
.gz ou .bz2 est supprime du nom de chier.

5.7.9. Archivage de chiers


Larchivage de chiers se fait classiquement sous Unix avec le programme tar (abrviation de langlais Tape ARchiver ). Ce programme permet simplement de regrouper tous les chiers quil doit archiver dans un seul chier structur en blocs. Il a t initialement crit pour permettre des archivages sur bandes ou sur tout autre priphrique de stockage de masse, mais il est galement utilis pour crer des chiers archives contenant toute une arborescence. La syntaxe de tar est trs simple :
tar options archive [fichiers]

o options sont les options qui indiquent lopration effectuer et comment elle doit tre ralise, archive est le nom de larchive qui doit tre cre ou le nom du chier de priphrique du priphrique darchivage, et fichiers est la liste des chiers archiver. Les options de tar que vous utiliserez le plus souvent sont les suivantes :
cvf tvf xvf

pour crer une archive ; pour lister le contenu dune archive ; pour restaurer le contenu dune archive.

Par exemple, pour archiver le contenu du rpertoire courant dans le chier archive.tar, vous utiliserez la ligne de commande suivante :
tar cvf archive.tar *

70

Chapitre 5. Commandes Unix de base

De plus, pour extraire le contenu de larchive archive.tar, vous utiliserez la commande suivante :

tar xvf archive.tar

Note : Loption z permet deffectuer une compression des donnes archives ou une dcompression des donnes restaures la vole. tar utilise gzip et gunzip pour la compression et la dcompression. De mme, loption y permet de comprimer larchive la vole avec bzip2. Cette option est mois courante et varie selon les versions de tar utilises. Si lon utilise un signe ngatif (-) la place du nom de larchive, tar enverra le rsultat de la compression vers la sortie standard. Cela peut tre utilis pour des oprations avances. Un exemple sera donn dans la Section 5.9.2.

5.7.10. Gestion des paquetages


La plupart des distributions actuelles utilisent le format de chier rpm ( Redhat Package Manager ) pour leurs paquetages. Ce format de chier a t introduit par la distribution Redhat, mais a t licenci sous la licence GNU, ce qui a permis aux autres distributions de lutiliser. Ces chiers encapsulent tous les chiers des paquetages, ainsi que des informations permettant de grer les dpendances entre les paquetages, leurs versions, la manire de les installer dans le systme, de les supprimer ou de les mettre jour facilement. Les chiers rpm peuvent tre manipuls laide du programme rpm. Il est probable que le programme dinstallation de votre distribution vous vite davoir manipuler cet outil vous-mme. Cependant, les principales commandes de rpm seront dcrites ici, an que vous puissiez lutiliser en cas de besoin. Le programme rpm utilise une syntaxe trs classique :
rpm options [paquetage]

Les options indiquent les oprations effectuer. La premire option est bien entendu loption -i, qui permet linstallation dun paquetage :
rpm -i paquetage

La mise jour dun paquetage dj install se fait laide de loption -U :


rpm -U paquetage

La suppression dun paquetage se fait laide de loption -e :


rpm -e paquetage

71

Chapitre 5. Commandes Unix de base La commande permettant dobtenir les informations (auteur, description, version) sur un paquetage contenu dans un chier rpm est la suivante :
rpm -qi -p paquetage

Enn, la commande pour lister tous les chiers dun paquetage contenu dans un chier rpm est la suivante :
rpm -ql -p paquetage

Cette commande afche les chemins complets, ce qui permet de savoir dans quel rpertoire chaque chier sera install. Il existe beaucoup dautres options disponibles. Cependant, leur description dpasserait le cadre de ce document. Vous pouvez toujours consulter la page de manuel rpm si vous dsirez plus dinformations.

5.8. vi, lditeur de chiers de base


Vous serez oblig, lorsque vous effectuerez la conguration de votre systme, dditer les chiers de conguration (classiquement, ces chiers sont placs dans le rpertoire /etc/). Ces modications peuvent tre ralises avec nimporte quel diteur a priori, et il est mme conseill dutiliser votre diteur favori. Cependant, il faut savoir se servir de vi, parce que cest le seul diteur qui sera toujours install, et qui fonctionnera en toutes circonstances. Le prix payer pour cette abilit est un nombre restreint de fonctionnalits. En fait, vi est trs puissant, mais il ne sembarrasse pas de superu, ce qui en fait certainement lditeur le moins convivial du monde. Ce paragraphe vous donnera la liste des principales commandes de vi. Cette liste ne sera toutefois pas exhaustive, car vous nutiliserez certainement pas vi dans la vie courante. Pour diter un chier avec vi, il suft de passer le nom de ce chier en ligne de commande :
vi fichier

Il est possible de passer plusieurs chiers dans la ligne de commande, et vi les ditera les uns aprs les autres. Cependant, il faut savoir que vi ne permet de travailler que sur deux chiers la fois, et quil nest pas facile de passer de lun lautre. Par consquent, il est conseill de nditer quun seul chier la fois. vi est un diteur qui fonctionne dans plusieurs modes diffrents : le mode ddition, dans lequel le texte peut tre modi, le mode de commande, dans lequel des commandes particulires peuvent tre donnes, et le mode de visualisation, dans lequel le chier ne peut tre que visualis. Par dfaut, vi est en mode de visualisation, et il faut utiliser une commande ddition pour passer en mode ddition. Quand on est en mode ddition, on peut revenir au mode de visualisation en appuyant sur la touche Echap (ou Esc, selon votre clavier). Cette touche a aussi une signication dans le mode de commande : elle annule la saisie de la commande en cours. Par consquent, lorsquon est perdu et que lon ne sait plus dans quel mode on se trouve (ce qui arrive fatalement un moment donn), il suft dappuyer sur cette touche. On sait alors quon se trouve en mode de visualisation.

72

Chapitre 5. Commandes Unix de base Le dplacement du curseur en mode de visualisation se fait avec les touches du curseur. Cependant, si votre clavier nest pas bien congur, ces touches peuvent ne pas fonctionner. Cest pour cette raison que vi fournit un jeu de touches alternatif :

la touche h permet de dplacer le curseur vers la gauche ; la touche l permet de dplacer le curseur vers la droite ; la touche j permet de dplacer le curseur vers le bas ; la touche k permet de dplacer le curseur vers le haut.

Le curseur est bien entendu dplac automatiquement lors de la saisie du texte en mode ddition. Le passage en mode ddition peut se faire avec lune des commandes suivantes :

la touche i permet de passer en mode dinsertion (le texte saisi sinsre avant le caractre sur lequel le curseur est positionn) ; la touche a permet de passer en mode dajout de caractres (le texte saisi sinsre aprs le caractre sur lequel le curseur est positionn) ; la touche A permet de placer le curseur en n de ligne et de passer en mode dajout de caractres ; la touche o permet de crer une nouvelle ligne aprs la ligne o se trouve le curseur et de passer en mode ddition sur cette nouvelle ligne ; la touche O permet de crer une nouvelle ligne avant la ligne o se trouve le curseur et de passer en mode ddition sur cette nouvelle ligne.

La cration dune nouvelle ligne peut donc tre faite avec les commandes o et O, mais il est possible de couper une ligne en deux, ou de passer la ligne simplement en tapant sur la touche Entre en mode ddition. Inversement, la commande J permet de supprimer un saut de ligne en n de ligne et de placer ainsi le texte de la ligne suivante la suite du texte de la ligne courante. La suppression dun caractre se fait avec la touche Suppr (ou Del, selon le clavier) ou la touche de retour arrire (dite touche Backspace). Cependant, encore une fois, vi fournit un jeu de touches alternatif permettant de travailler avec un clavier mal congur :

la commande x permet deffacer le caractre situ sous le curseur ; la commande dd permet deffacer la ligne o se trouve le curseur ; la commande dw permet deffacer le mot o se trouve le curseur.

Le texte qui a t supprim est plac dans ce que lon appelle un buffer. Le contenu du buffer peut tre insr nimporte quel endroit du chier grce la commande p. Ainsi, il est possible de faire un couper/coller en effaant la ligne dsire et en appuyant sur la touche p lemplacement destination. La commande u permet dannuler la dernire opration effectue, et la commande U permet de la r-excuter. La commande yy permet de copier la ligne courante dans le buffer. Cette commande est donc utilise pour effectuer des copier/coller, en combinaison avec la commande p. Les commandes de vi peuvent tre rptes un certain nombre de fois, en spciant ce nombre avant de les crire. Ainsi, pour supprimer 3 lignes, il sufra de taper la commande suivante :
3dd

73

Chapitre 5. Commandes Unix de base

Dans ce cas, ces trois lignes sont galement places dans le buffer. La mme technique peut tre utilise pour copier/coller plusieurs lignes en une seule opration. Enn, vi accepte un certain nombre de commandes gnrales lorsquil est en mode de commande. Ce mode est activ ds que lon appuie sur la touche deux points (:) dans le mode de visualisation. Les commandes gnrales les plus utiles sont dcrites ci-dessous :

la commande :q permet de quitter vi. Si le chier en cours ddition a t modi, vi refusera de se terminer sans lenregistrer. Si lon veut malgr tout sortir sans lenregistrer, il faudra utiliser la commande :q! ; la commande :w permet denregistrer le chier courant. Pour enregistrer ce chier et quitter vi, la commande :wq peut tre utilise ; la commande :help sujet permet dobtenir de laide sur le sujet sujet ; la commande :!commande permet dexcuter la commande du shell commande . Cela peut tre pratique pour effectuer une opration dans le shell sans avoir quitter vi. Cela dit, il sera sans doute plus efcace dutiliser un autre terminal virtuel.

Comme vous lavez constat, vi est rellement une horreur utiliser. Malgr tout, il permet de faire tout ce dont on a besoin pour diter un chier. Il dispose mme de puissantes fonctionnalits que mme les traitements de texte volus ne sont pas capables de faire. Elles ne seront cependant pas dcrites ici, car cela dpasserait le cadre de la simple installation de Linux. Vous pourrez toujours consulter laide de vi pour de plus amples informations.

5.9. Utilisation du shell bash


Le shell est lenvironnement utilisateur en mode texte sous Linux. Cest le programme qui se charge de lire et dexcuter les commandes que lutilisateur saisit. Classiquement, le shell est utilis de manire interactive, cest--dire que lutilisateur dialogue avec le systme par lintermdiaire du shell. Il saisit les commandes, et le shell les excute et afche les rsultats. Le shell le plus couramment utilis sous Linux est sans aucun doute bash. En tout cas, cest le shell par dfaut que la plupart des distributions utilisent. Il est donc conseill de connatre un petit peu ce que ce shell est capable de raliser, et comment. Le shell bash est une volution du shell sh, utilis par quasiment tous les systmes Unix. Son nom provient de labrviation de langlais Bourne Again SHell , ce qui signie quil sagit effectivement dune nouvelle variante du shell sh. Au temps des interfaces graphiques complexes et sophistiques, il peut paratre archaque de vouloir encore utiliser des lignes de commandes pour utiliser un ordinateur. Cest en partie vrai, mais il faut savoir que les shells Unix sont extrmement puissants et que les interfaces graphiques ne permettent toujours pas, mme lheure actuelle, de raliser toutes les tches faisables avec un shell. Dautre part, il est souvent plus efcace de taper une simple commande dans un shell que de rechercher un outil graphique et de parcourir les divers menus, puis de choisir les options de la commande dsire avant de valider. Des ergonomes ont dmontr, et des graphistes du monde entier le conrmeront, que la souris nest pas le priphrique dentre le plus prcis et le plus facile utiliser pour manipuler les objets de lenvironnement utilisateur. La plupart des programmeurs utilisent encore bon nombre de ce quon appelle des raccourcis clavier pour excuter des commandes, mme dans les environnements utilisateurs graphiques.

74

Chapitre 5. Commandes Unix de base Quoi quil en soit, le shell est bien plus quun interprteur de commande. Il sagit rellement dun environnement de programmation, permettant de dnir des variables, des fonctions, des instructions complexes et des programmes complets, que lon appelle des scripts shell. Les sections suivantes ont pour objectif de vous montrer les principales caractristiques du shell, sans pour autant prtendre vous apprendre la programmation des scripts shell. La lecture de cette section pourra donc tre diffre dans un premier temps. Toutefois, elle pourra tre bnque ceux qui dsirent comprendre les scripts de conguration utiliss par leur distribution, ou tout simplement ceux qui sont curieux de nature.

5.9.1. Contrle des processus


Un des avantages des lignes de commandes par rapport aux environnements graphiques est la facilit avec laquelle elles permettent de contrler les processus. Ce paragraphe dcrit les principales mthodes pour lancer et arrter un processus, ainsi que pour lui fournir les donnes sur lesquelles il doit travailler et rcuprer ses rsultats.

5.9.1.1. Lancement dun programme en arrire-plan


Le lancement normal dun programme se fait en tapant sa ligne de commande et en appuyant sur la touche de validation. Le shell ne rendra pas la main et ne permettra pas de lancer un autre programme tant que le processus en cours ne sera pas termin. Cependant, vous pouvez fort bien dsirer lancer en arrire-plan une commande dont la dure dexcution peut tre trs longue et continuer travailler. Aprs tout, Linux est multitche... Eh bien, rien de plus facile ! Pour lancer une commande en arrire-plan, il faut :

sassurer que la commande aura toutes les informations ncessaires pour travailler sans intervention de lutilisateur (ou, autrement dit, que la commande nest pas interactive) ; ajouter une esperluette (caractre & ) la n de la ligne de commande.

Par exemple, la commande suivante :


cp /cdrom/kernel/linux-2.4.9.tar.gz . &

copiera larchive du noyau 2.4.9 du CD-ROM vers le rpertoire courant, et sexcutera en arrire-plan. Lorsquune commande est lance en arrire-plan, le shell afche deux nombres qui permettront de lidentier par la suite. Le premier nombre, indiqu entre crochets, est le numro de job du shell. Ce numro sert identier les commandes du shell de manire unique. Un job est donc en ralit une commande du shell, simple ou complexe. Le deuxime numro est le numro de processus ( PID , pour Process IDentier ) dans le systme du processus matre du job. Le PID est un numro unique dans le systme, qui permet didentier de manire unique les processus en cours. Ces deux nombres permettront de manipuler les processus, avec les commandes que lon verra plus tard. Il ne faut pas confondre les numros de job avec les numros de processus. Premirement, un numro de job nest unique que dans un shell donn, et na aucune signication au niveau du systme complet, alors que le numro de processus est attribu par le systme chaque programme en cours dexcution. Ensuite, une mme commande du shell peut lancer plusieurs processus conjointement. Dans ce cas, il y a bien videmment plusieurs numros de processus, mais un seul et unique job. Ce genre de situation se produit par exemple lors de lutilisation dune redirection du ux de sortie standard dun processus vers le ux dentre standard dun autre processus.

75

Chapitre 5. Commandes Unix de base Le numro de processus afch par le shell lors du lancement dune ligne de commande complexe reprsente le PID du processus matre de la commande, cest--dire, en pratique, le dernier processus dune srie de redirections ou le processus du shell excutant les commandes complexes. Cela signie que dans tous les cas de conguration, ce PID est celui du processus qui contrle lensemble des oprations effectues par la ligne de commande. Cest donc par ce processus que lon peut manipuler la commande complte, par exemple pour linterrompre. Il est possible de retrouver le PID du processus matre dune commande partir du numro de job correspondant du shell. Cela se fait simplement, en utilisant lexpressions suivante :
%job

o job est le numro du job dont on cherche le PID. Ainsi, dans toutes les commandes dcrites ci-dessous, le PID peut tre utilis directement, ou tre remplac par le numro du job prx du caractre de pourcentage.

5.9.1.2. Listing des processus


Il nest pas ncessaire de retenir tous les numros de jobs et tous les PID des processus en cours dexcution. Il existe en effet des commandes permettant dobtenir la liste des processus et des jobs. La plus simple utiliser est bien videmment la commande du shell pour obtenir la liste des jobs avec leurs lignes de commandes. Pour obtenir cette liste, il suft de taper la commande suivante :
jobs

qui afche, dans lordre, le numro de job, ltat du processus correspondant, et la ligne de commande. Une autre commande, plus bas niveau, permet dobtenir des informations plus compltes directement partir du systme. Il sagit de la commande ps, dont la syntaxe est donne ci-dessous :
ps [options]

Les options les plus utiles sont sans doute x, qui permet de demander lafchage de toutes les commandes en cours dexcution et non pas seulement les processus en cours dexcution dans le shell o la commande ps est excute, et a, qui permet dobtenir lafchage de toutes les commandes, pour tous les utilisateurs connects. Ces deux options peuvent tre cumules, et la commande suivante :
ps ax

afche donc toutes les commandes en cours dexcution sur le systme. Les informations les plus intressantes afches par ps sont le PID du processus, qui est donn par le premier nombre afch, et la ligne de commande, qui est la dernire information afche. Pour plus de dtails sur la commande ps, veuillez consulter la page de manuel correspondante.

5.9.1.3. Notion de signal


Dans un systme Unix, tous les processus peuvent recevoir des messages, envoys soit par lutilisateur, soit par un autre processus, soit par le systme. Ces messages sont appels signaux. La plupart des signaux sont envoys par le systme pour indiquer au processus quil a fait une faute et quil va tre termin. Cependant, ce nest pas toujours le cas : certains signaux sont envoys uniquement dans le cadre de la communication entre les processus, et certains autres ne peuvent mme pas tre capts par le processus et sont traits directement par le systme. Nous nentrerons

76

Chapitre 5. Commandes Unix de base pas en dtail dans la gestion des signaux ici, car cela nous emmnerait trop loin. Cependant, la manire denvoyer un signal un processus partir du shell sera dcrite. Lenvoi dun signal se fait avec la commande kill, avec la syntaxe suivante :
kill [-signal] PID

o signal est une option qui permet de prciser le signal qui doit tre envoy, et PID est le numro du processus qui doit le recevoir. Les numros de signaux les plus importants sont dcrits dans le tableau ci-dessous : Tableau 5-2. Principaux signaux Unix Numro de signal 15 9 19 18 Signication Signal de terminaison de processus. Signal de destruction inconditionnelle de processus. Signal de suspension de processus. Signal de reprise dexcution dun processus suspendu.

Lorsquaucun signal nest spci, le signal 15 de terminaison est utilis par dfaut. Ce signal demande au processus en cours dexcution de se terminer immdiatement. Il peut tre capt par le processus, pour lui donner une chance denregistrer les donnes sur lesquelles il travaillait et de librer les ressources quil utilisait. Pour certains processus, cela ne fonctionne pas, et il faut utiliser le signal de destruction du processus laide de la commande suivante :
kill -9 PID

Attention cependant cette commande : le processus est immdiatement dtruit, sans autre forme de procs. Il peut donc sensuivre une perte de donnes, nen abusez donc pas trop.

5.9.1.4. Arrt dun processus


Tout processus lanc en ligne de commande peut tre arrt immdiatement sous Linux. Pour cela, deux mthodes sont disponibles. La premire consiste taper la combinaison de touches CTRL+C lorsque le processus est en cours dexcution interactive (cest--dire lorsquil na pas t lanc en arrire-plan). Sil a t lanc en arrire-plan, on peut soit le ramener en avant-plan (avec la commande fg, que lon verra plus loin) avant dutiliser CTRL+C, soit lui envoyer le signal de terminaison laide de la commande kill vue prcdemment. Dans le cas dune ligne de commande, le signal de terminaison est transmis au processus matre de la ligne de commande, et est ensuite propag lensemble des processus ls de ce processus. Cela signie que tous les processus invoqus dans le cadre de cette commande sont galement arrts.

5.9.1.5. Gel dun processus


Il est possible de geler un processus en cours dexcution, cest--dire de le suspendre, sans pour autant larrter dnitivement. Cela peut tre utilis pour librer un peu les capacits de calcul, lorsque

77

Chapitre 5. Commandes Unix de base ce processus consomme trop de ressources par exemple. Pour cela, deux mthodes sont possibles :

soit on utilise la combinaison de touches CTRL+Z, lorsque le processus est en avant-plan ; soit on envoie le signal 19 au processus (signal STOP ) laide de la commande kill.

La premire mthode est recommande pour les processus lancs par une ligne de commande complexe, car le signal STOP est envoy au processus matre de la commande, et est propag lensemble des processus ls de ce processus. Cela signie que tous les processus invoqus dans le cadre de cette commande sont galement gels. La deuxime mthode est plus bas niveau, et permet de geler nimporte quel processus que lon a lanc.

5.9.1.6. Relancement dun processus


Un processus suspendu peut tre relanc soit en avant-plan, soit en arrire-plan. Pour relancer un processus en avant-plan, il faut utiliser la commande suivante :
fg [PID]

o PID est le PID du processus relancer en avant-plan. Si ce paramtre nest pas spci, le dernier processus stopp sera relanc en arrire-plan. fg est labrviation de langlais foreground , ce qui signie avant-plan . Il faut attendre que ce processus se termine pour entrer de nouvelles commandes. Par consquent, on ne peut lancer en avant-plan quun seul processus. De mme, pour lancer un processus en arrire-plan, il faut utiliser la commande bg, qui est labrviation de langlais background . Cette commande sutilise de la mme manire que la commande fg :
bg [PID]

Le relancement dun processus suspendu peut galement se faire en lui envoyant le signal 18 laide de la commande kill.

5.9.2. Redirections
Pour pouvoir lancer un programme en arrire-plan, il est ncessaire quil nait pas besoin de demander des donnes lutilisateur. En effet, lorsquil est en arrire-plan, la saisie de ces donnes ne peut pas se faire, puisque le shell les interprterait comme une nouvelle commande. De plus, tout afchage en provenance dune commande en arrire-plan apparat sur la console tel quel, et risque de se mlanger avec lafchage des autres programmes ou mme avec la commande en cours ddition. Cest pour rsoudre ces problmes que le mcanisme des redirections a t introduit.

5.9.2.1. Principe de base


Le mcanisme des redirections a pour but de transfrer les donnes provenant dun ux vers les donnes dun autre ux. Il se base sur la notion de descripteur de chier, utilise par la plupart des systmes Unix. Un descripteur de chier est un numro utilis par les programmes pour identier les chiers ouverts. Les descripteurs 0, 1 et 2 sont respectivement affects dofce au ux dentre stan-

78

Chapitre 5. Commandes Unix de base dard (nomm stdin ), au ux de sortie standard ( stdout ) et au ux derreur standard ( stderr ), qui en gnral apparat galement sur lcran. Les descripteurs de chiers dun processus sont gnralement hrits par tous ses processus ls. Cela signie que, lors de leur lancement, ces processus peuvent utiliser tous les descripteurs de chiers mis leur disposition par leur pre. Dans le cas des lignes de commande, les processus ls sont les processus lancs par le shell, et les descripteurs de chiers hrits sont donc les descripteurs de chiers du shell. Cest de cette manire que le shell peut manipuler les descripteurs de chiers des processus quil lance : il effectue dabord les redirections sur ses propres descripteurs de chiers, puis il lance le processus ls avec ces redirections actives. Le mcanisme est donc compltement transparent pour les processus ls. Le mcanisme des redirections permet en fait dinjecter dans un descripteur de chier des donnes provenant dun autre descripteur ou dun chier identi par son nom, et denvoyer les donnes provenant dun descripteur de chier dans un autre descripteur ou dans un chier identi par son nom. Si lon utilise les descripteurs de chiers des ux dentre / sortie standards, on peut excuter nimporte quelle commande interactive en arrire-plan.

5.9.2.2. Redirections de donnes en entre


Pour injecter des donnes provenant dun chier dans le descripteur de chier n dun processus, il suft dajouter la ligne suivante la n de la commande permettant de lancer ce processus :
n<fichier

o fichier est le nom du chier dont les donnes doivent tre injectes dans le descripteur n. Dans cette syntaxe, le descripteur peut ne pas tre prcis. Dans ce cas, le shell utilisera le descripteur 0, et les donnes du chier seront donc envoyes dans le ux dentre standard du processus. Par exemple, supposons que lon dsire utiliser une commande nomme search , et que cette commande demande un certain nombre dinformations lors de son excution. Si lon sait lavance les rponses aux questions qui vont tre poses, on peut crer un chier de rponse (nomm par exemple answer.txt ) et alimenter la commande search avec ce chier. Pour cela, on utilisera la ligne de commande suivante :
search < answer.txt

Il est galement possible dinjecter des donnes provenant dun autre descripteur de chier dans un descripteur de chier. On utilisera pour cela la syntaxe suivante :
n<&s

o n est toujours le descripteur de chier du processus excuter dans lequel les donnes doivent tre injectes, et s est un descripteur de chier contenant les donnes sources injecter. Par dfaut, si n nest pas prcis, le ux dentre standard du processus sera utilis.

5.9.2.3. Redirection de donnes en sortie


Inversement, il est possible denregistrer les donnes crites par un processus dans un de ses descripteurs de chier dans un chier. Pour cela, on utilisera loprateur > avec la syntaxe suivante :
n>fichier

79

Chapitre 5. Commandes Unix de base o n est le numro du descripteur de chier du processus enregistrer, et fichier est le nom du chier dans lequel les donnes doivent tre stockes. Par dfaut, si n nest pas spci, le descripteur du ux de sortie standard sera utilis (descripteur 1). Par exemple, si la commande prcdente afche des rsultats et que lon dsire les stocker dans le chier result.txt , on utilisera la ligne de commande suivante :
search < answer.txt >result.txt

Notez que cette commande dtruira systmatiquement le contenu du chier result.txt et le remplacera par les informations provenant du ux de sortie standard du processus search . Il est possible de ne pas vider le chier result.txt et dajouter les informations en n de chier, en utilisant loprateur >> la place de loprateur >. Ainsi, la commande suivante :
search < answer.txt >>result.txt

aura pour effet dajouter la n du chier result.txt les informations afches par le processus search . Le ux derreur standard, qui correspond normalement lcran et qui permet dafcher les messages derreur, peut tre redirig avec loprateur 2>, de la mme manire que loprateur > est utilis pour le ux de sortie standard (puisque cest le descripteur de chier utilis par dfaut par loprateur >). Par exemple, si lon veut envoyer les messages derreurs ventuels de la commande prcdente vers le priphrique nul (cest--dire le priphrique qui nen fait rien) pour ignorer ces messages, on utilisera la ligne de commande suivante :
search <answer.txt >result.txt 2> /dev/null

Une telle ligne de commande est compltement autonome, et peut tre lance en arrire-plan, sans aucune intervention de lutilisateur :
search <answer.txt >result.txt 2> /dev/null &

Il est galement possible deffectuer une redirection des donnes provenant dun descripteur de chier du processus vers un autre descripteur de chier de ce processus. On utilisera pour cela la syntaxe suivante :
n>&d

o n est le descripteur de chier dont les donnes doivent tre rediriges, et d le descripteur de chier destination. Cette syntaxe est souvent utilise pour rediriger le ux derreur standard vers le ux dentre standard, lorsquon veut rcuprer les erreurs et les messages dexcution normale dans un mme chier. Par exemple, si lon veut rediriger le ux de sortie et le ux derreurs de la commande search dans un mme chier, on utilisera la ligne de commande suivante :
search <answer.txt >result.txt 2>&1

80

Chapitre 5. Commandes Unix de base Cette ligne de commande utilise deux redirections successives pour les donnes afches par la commande search : la premire redirige le ux de sortie standard vers un chier, et la deuxime le ux derreur standard vers le ux de sortie standard. Notez que lordre des redirections est important. Elles sont appliques de gauche droite. Ainsi, dans la commande prcdente, le ux de sortie standard est redirig vers le chier result.txt , puis le ux derreur standard est inject dans le ux de sortie standard ainsi redirig.
Note : Il est galement possible dutiliser un autre descripteur de chier que les descripteurs des ux standards. Cependant, il est ncessaire, dans ce cas, douvrir ce descripteur dans le shell avant de lancer la commande. Cela peut se faire laide de la syntaxe suivante :
n<>fichier

o n est un numro de descripteur de chier non encore utilis, et fichier est un nom de chier. Ce nouveau descripteur de chier pourra tre utilis dans les commandes prcdentes, an de faire manipuler le chier fichier par les processus ls de manire transparente. Les descripteurs de chiers ouverts de cette manire le restent dune commande sur lautre dans le shell. Cela implique que toutes les donnes crites dans ces descripteurs de chiers sont ajoutes automatiquement la n des chiers manipuls par ces descripteurs. Ce comportement est diffrent de la redirection vers un chier effectue par loprateur >, qui ouvre chaque fois le chier en criture son dbut et qui supprime donc toutes les donnes dj existantes. Il ny a donc pas doprateur >>& pour ajouter des donnes un descripteur de chier, car cela na pas de sens. Les descripteurs de chiers peuvent galement tre manipuls directement, par lintermdiaire de chiers virtuels du rpertoire /dev/fd/. chaque descripteur de chier (y compris les descripteurs pour les ux dentre/sortie standards !) y correspond un chier dont le nom est le numro du descripteur. Par exemple, le chier /dev/fd/2 correspond au ux derreur standard. En fait, le rpertoire /dev/fd/ est un lien symbolique vers le rpertoire /proc/self/fd/ du systme de chiers virtuel /proc/. Ce systme de chiers est gr par le noyau directement, et permet daccder aux informations sur le systme et les processus. Il contient en particulier un sous-rpertoire portant le nom du PID de chaque processus existant dans le systme, et chacun de ces rpertoires contient lui-mme un sous-rpertoire fd/ o sont reprsents les descripteurs de chiers ouvert par le processus correspondant. Le systme de chiers /proc/ contient galement un lien symbolique self/ pointant sur le sous-rpertoire du processus qui cherche louvrir. Ainsi, /proc/self/fd/ est un chemin permettant chaque processus daccder ses propres descripteurs de chiers. En pratique, la manipulation directe des descripteurs de chiers nest rellement intressante que pour les ux standards, dont les numros de descripteurs sont xes et connus de tous les programmes. Pour les autres descripteurs, cette technique est souvent inutilisable ou inutile, sauf lorsquon utilise des programmes sachant manipuler des descripteurs de numros bien dtermins.

5.9.2.4. Insertion de documents


Il existe un dernier oprateur de redirection, qui nest utilis en pratique que dans les scripts shell. Cet oprateur permet dinsrer directement un texte complet dans le ux dentre standard, sans avoir placer ce document dans un chier part. Cette technique permet donc de stocker des donnes avec le code des scripts shell, et de navoir ainsi quun seul chier contenant la fois le script et ses donnes. Cet oprateur est loprateur <<, il sutilise selon la syntaxe suivante :
<<EOF

81

Chapitre 5. Commandes Unix de base


texte . . . EOF

o texte est le contenu du texte insrer, et EOF est un marqueur quelconque qui sera utilis seul sur une ligne an de signaler la n du texte. Par exemple, il est possible de crer un chier test.txt de la manire suivante :
cat <<fin >test.txt Ceci est un fichier texte saisi directement dans le shell. On peut crire tout ce que lon veut, et utiliser les fonctions dditions de ligne du shell si lon veut. Pour terminer le fichier, il faut taper le mot "fin" tout seul, au dbut dune ligne vide. fin

5.9.3. Les tubes


Les redirections sont trs pratiques lorsquil sagit dinjecter un chier dans le ux dentre standard dun processus, ou inversement de rediriger le ux standard dune commande vers un chier, mais elles ont justement le dfaut de devoir utiliser des chiers. Il est des situations o lon dsirerait injecter le rsultat dune commande dans le ux dentre standard dune autre commande, sans passer par un chier intermdiaire. Cela est heureusement ralisable, grce ce que lon appelle les tubes .

5.9.3.1. Syntaxe des tubes


Pour rediriger le rsultat dune commande dans le ux dentre dune autre commande, il faut utiliser loprateur |. Cet oprateur reprsente un tuyau canalisant les donnes issues dune commande vers le ux dentre standard de la commande suivante, do le nom de pipe en anglais (ce qui signie tuyau ou tube ). Loprateur tube sutilise de la manire suivante :

on crit la premire commande, qui doit fournir les donnes la deuxime commande ; on crit loprateur tube ; on crit la deuxime commande, qui doit lire les donnes provenant de la premire.

La commande se trouvant la gauche de loprateur tube doit tre complte, avec ses autres redirections ventuelles. La redirection dans un tube seffectue aprs les autres types de redirections vues prcdemment. Le systme contrle lexcution des processus qui se trouvent aux deux bouts dun tube, de telle sorte que le transfert de donnes puisse toujours se faire. Si le processus source a trop de donnes, il est g par le systme dexploitation en attendant que le processus consommateur ait ni de traiter les donnes dj prsentes. Inversement, si le processus source est trop lent, cest le processus consommateur qui attendra patiemment que les donnes soient disponibles. Les tubes sont utiliss trs couramment, ne serait-ce que pour afcher page par page le contenu dun rpertoire. La commande suivante effectue un tel travail :
ls | less

82

Chapitre 5. Commandes Unix de base

Ici, le rsultat de la commande ls est redirig vers la commande less, qui permet dafcher page par page (et de revenir en arrire dans ces pages) la liste des chiers du rpertoire courant. Prenons un exemple un peu plus complexe. Supposons que lon veuille archiver et comprimer un rpertoire. Il est possible darchiver ce rpertoire avec la commande tar, puis de comprimer le chier archive rsultant :
tar cvf archive.tar * gzip archive.tar

Cette mthode est correcte, mais souffre dun dfaut : elle utilise un chier intermdiaire, qui peut prendre beaucoup de place disque. Une mthode plus conome consiste lancer tar et gzip en parallle, et rediriger la sortie standard de lun dans le ux dentre de lautre. Ainsi, il ny a plus de chier temporaire, et la place consomme sur le disque est minimale :
tar cv * | gzip > archive.tar.gz

La premire commande demande tar darchiver tous les chiers du rpertoire et denvoyer le rsultat dans le ux standard de sortie. Le pipe redirige ce ux standard vers le ux dentre standard de gzip. Celui-ci comprime les donnes et les met vers son ux standard de sortie, qui est lui-mme redirig vers le chier archive.tar.gz. Aucun chier temporaire na t utilis, et on a ainsi conomis lespace disque de larchive complte non comprime, cest--dire environ la taille complte du rpertoire archiver. Ce genre de considration peut tre trs important lorsque le disque dur commence tre plein...
Note : En fait, la commande tar de GNU permet de comprimer la vole les donnes archiver, permettant dviter de se prendre la tte comme on vient de le faire. Pour cela, il suft dutiliser loption z dans la ligne de commande de tar. Ainsi, la ligne de commande suivante fournit le mme rsultat :
tar cvfz archive.tar.gz *

Mais cette solution ne fonctionne pas avec les versions non GNU de tar, qui ne supportent pas cette option.

Un autre exemple pratique est le dplacement de toute une arborescence de chiers dun systme de chiers un autre. Vous ne pourrez pas y parvenir laide de la commande mv, car celle-ci ne fait que modier la structure du systme de chiers pour dplacer les chiers et les rpertoires, elle ne peut donc pas fonctionner avec deux systmes de chiers. Vous ne pouvez pas non plus utiliser la commande cp, car celle-ci ne prendra pas en compte les dates des chiers, leur propritaire et leur groupe, ainsi que les liens symboliques et physiques. Il faut donc imprativement utiliser un programme darchivage. La mthode suivre est donc de crer une archive temporaire, puis de se dplacer dans le rpertoire destination, et enn dextraire larborescence de larchive :
cd source tar cvf archive.tar * cd destination tar xvf source/archive.tar

83

Chapitre 5. Commandes Unix de base


rm source/archive.tar

Malheureusement, cette technique ncessite beaucoup de place disque, puisque larchive temporaire est stocke directement sur disque. De plus, elle est assez lente, car toutes les donnes copier sont recopies sur le disque dur, et relues ensuite, pour nalement tre dtruites... La vraie solution est de raliser un tube entre les deux processus tar invoqus. Dans ce cas, le transfert se fait simplement via la mmoire vive :
cd source tar cv * | (cd destination ; tar xvf -)

La commande utiliser est cette fois un peu plus complique, car la commande dextraction des chiers ncessite un changement de rpertoire. Il faut donc utiliser une commande multiple du shell. Ces commandes sont constitues de plusieurs autres commandes spares par des points virgules. La premire commande effectue ici est le changement de rpertoire, et la deuxime est lextraction par tar de larchive qui lui est transfre par le ux dentre standard (reprsent ici par -). Ces deux commandes sont mises entre parenthses, car loprateur | du tube est prioritaire sur loprateur ; de concatnation des commandes du shell. Si vous trouvez que cela est un peu compliqu, je vous laccorde. Cependant, la commande qui utilise le tube consomme deux fois moins despace disque et est deux fois plus rapide que la commande qui nen utilise pas. Je vous invite mesurer le gain de temps sur un rpertoire contenant un grand nombre de donnes (utilisez la commande time !).

5.9.3.2. Les tubes nomms


Les tubes crs par loprateur | constituent ce que lon appelle des tubes anonymes, car ils sont crs directement par le shell pour une commande donne. Il est possible de crer manuellement des tubes en leur donnant un nom, et de les utiliser a posteriori dans plusieurs commandes. Ces tubes constituent ce que lon appelle des tubes nomms. En fait, les tubes nomms sont des chiers spciaux, que lon cre dans un systme de chier capable de les grer. Les seules oprations ralisables sont lcriture et la lecture, sachant que les donnes crites en premier seront forcment les premires donnes lues. Cest ce comportement qui a donn leur nom ces chiers, que lon appelle des FIFO (abrviation de langlais First In First Out ). De plus, la quantit de donnes en transit dans ces chiers est souvent trs rduite, ce qui fait que ces donnes sont toujours places dans la mmoire cache du systme. Ainsi, bien quil sagisse de chiers, aucune criture ou lecture sur disque na lieu lors de lutilisation dun pipe. Les tubes nomms sont crs par la commande mkfo, dont la syntaxe est la suivante :
mkfifo nom

o nom est le nom du tube nomm. Notez que cette commande chouera sur les systmes de chiers incapables de grer les tubes nomms. Une fois cr, le chier de tube peut tre utilis comme nimporte quel chier dans les redirections que lon a vues dans la section prcdente. Par exemple, la redirection suivante :
ls | less

peut tre rcrite pour utiliser un tube nomm temporaire de la manire suivante :

84

Chapitre 5. Commandes Unix de base


mkfifo /tmp/tempfifo ls > /tmp/tempfifo less < /tmp/tempfifo

La destruction dun tube nomm se fait comme nimporte quel chier, laide de la commande rm.

5.9.3.3. La commande tee


La commande tee est un petit programme permettant denregistrer les donnes quil reoit dans son ux dentre standard dans un chier et de les renvoyer simultanment vers son ux de sortie standard. Elle est couramment utilise, en conjonction avec les tubes, pour dupliquer un ux de donnes. Sa syntaxe est la suivante :
tee fichier

o fichier est le nom du chier dans lequel le ux dentre standard doit tre enregistr. Supposons par exemple que lon dsire rediriger tous les messages (derreur ou non) de la commande ls /proc/1/* dans un chier result.txt, tout en continuant les visualiser sur lcran. Pour cela, on utilisera la commande suivante :
ls -l /proc/1 2>&1 | tee result.txt

lissue de cette commande, le chier result.txt contiendra une copie des donnes qui ont t mises par la commande ls -l /proc/1 2>&1.

5.9.3.4. La commande xargs


La commande xargs permet dappeler une autre commande, en passant en paramtre les donnes quelle reoit dans le ux dentre standard. Sa syntaxe est la suivante :
xargs commande

o commande est la commande que xargs doit excuter. xargs construira une ligne de commande complte pour cette commande, en utilisant comme paramtres les donnes issues du ux dentre standard. Une fois cette ligne de commande construite, xargs lexcutera. Par exemple, la commande suivante :
ls -l

peut tre excute galement de la manire suivante :


xargs ls

et en tapant la chane de caractres -l suivie du caractre de n de chier CTRL+D. La commande xargs est une commande extrmement utile lorsquelle est utilise conjointement avec les tubes, parce quelle permet dutiliser le rsultat dune commande en tant que paramtre pour une autre commande. Ce mcanisme est donc complmentaire de celui des pipes, puisque ceux-ci permettaient dutiliser le rsultat dune commande pour alimenter le ux dentre standard dune autre commande.

85

Chapitre 5. Commandes Unix de base Un exemple plus utile que le prcdent permettra de mieux comprendre comment on utilise la commande xargs. Supposons que lon dsire trouver tous les chiers dune arborescence complte dont lextension est .txt et contenant la chane de caractres test . La liste des chiers de larborescence peut tre dtermine simplement laide de la commande nd, et la recherche du texte dans les chiers se fait naturellement laide de la commande grep. On utilisera xargs pour construire la ligne de commande pour grep, partir du rsultat fourni par la commande nd :
find -name "*.txt" | xargs grep -l "test"

Cette commande est plus simple et plus efcace que la commande quivalente :
find -name "*.txt" -exec grep -l "test" {} \;

parce que grep nest excut quune seule fois (alors que loption -exec de la commande nd lexcute pour chaque chier trouv).

5.9.4. Manipulation des variables denvironnement


Les systmes Unix permettent de dnir un environnement dexcution pour chaque programme en cours dexcution. Lenvironnement est un ensemble de paramtres, que lon appelle les variables denvironnement, qui permettent de modier le comportement du programme. Ces variables contiennent une valeur de type chane de caractres, dont la signication est propre chaque variable. Il est dusage que les noms des variables denvironnement soient crits compltement en majuscules, mais ce nest pas une obligation. Chaque programme est susceptible de reconnatre un certain nombre de variables denvironnement qui lui sont propres, mais il existe galement des variables standards que tous les programmes utilisent. Cest notamment le cas de la variable denvironnement PATH, qui contient la liste des rpertoires dans lesquels le systme doit rechercher les programmes excuter. Cette variable permet donc de lancer les programmes en tapant simplement leur nom, et de laisser le systme rechercher le chier de ce programme dans chacun des rpertoires indiqus dans cette variable. Par dfaut, les programmes sont lancs avec lenvironnement du programme qui les lance, cest-dire dans la plupart des cas lenvironnement dexcution du shell. Les programmes peuvent galement dnir de nouvelles variables denvironnement, qui seront ainsi accessibles par les programmes quils lanceront eux-mmes. Comme tout programme, le shell dispose dun environnement, quil utilise pour stocker ses propres variables. En effet, comme nous lavons dj signal plus haut, le shell est bien plus quun interprteur de commande : il est compltement programmable. Et en tant quinterprteur dun langage de programmation, il fournit la possibilit de dnir des variables de ce langage. Les variables du shell sont donc galement des variables denvironnement, mais le shell ne les communique pas par dfaut aux programmes quil lance. Pour tre plus prcis, le shell utilise deux environnements diffrents :

son propre environnement, qui contient les variables denvironnement locales la session du shell en cours ; lenvironnement dexcution, dont les variables denvironnement sont transmises aux programmes que le shell lance.

86

Chapitre 5. Commandes Unix de base Il est trs facile de dnir une variable du shell. Pour cela, il suft de lui affecter une valeur, laide de la syntaxe suivante :
variable=valeur

o variable est le nom de la variable dnir, et valeur est la valeur que lon dsire lui affecter. Notez quil nest pas ncessaire de fournir une valeur. Dans ce cas, la variable ainsi dnie sera vide. Par exemple, la ligne suivante :
BONJOUR="Bonjour tout le monde \!"

permet de dnir la variable BONJOUR. Notez que la valeur est encadre entre guillemets, car elle contient des espaces. Notez galement que le caractre point dexclamation (!) est prcd dun caractre dchappement antislash (\), car il a une signication particulire pour le shell. Ce caractre dchappement permet simplement de signaler au shell quil ne doit pas interprter le caractre qui le suit, et fait donc en sorte que le point dexclamation fasse partie de la chanes de caractres affecter la variable. Bien entendu, le caractre antislash tant lui-mme un caractre spcial pour le shell, il doit lui-mme tre prx dun autre antislash si lon dsire lutiliser dans une chane de caractres. La valeur dune variable peut tre rcupre simplement en prxant le nom de la variable du symbole dollar ($). Ainsi, la commande suivante permet dafcher le contenu de la variable BONJOUR :
echo $BONJOUR

Les variables ainsi dnies ne font partie que de lenvironnement du shell, elles ne sont donc pas accessibles aux programmes que le shell lance. Donc, si lon relance un nouveau shell avec la commande suivante :
bash

et que lon essaie de lire le contenu de la variable BONJOUR avec la commande echo, on obtient une chane vide. Cela est normal, puisque le deuxime shell (cest--dire celui qui est en cours dexcution) nutilise pas le mme environnement que le premier shell. Vous pouvez quitter le nouveau shell avec la commande suivante :
exit

Ds lors, vous serez nouveau dans le shell initial, et la variable BONJOUR sera nouveau accessible. Pour rendre une variable du shell accessible aux programmes que celui-ci peut lancer, il faut lexporter dans lenvironnement dexcution. Cela peut tre ralis avec la commande export :
export variable

o variable est le nom de la variable du shell exporter dans lenvironnement dexcution. La syntaxe prcdente exporte de manire permanente les variables du shell. Mais il existe galement une autre syntaxe, qui permet de ne dnir des variables denvironnement que pour lenvironnement dexcution dune seule commande. Cette syntaxe consiste simplement prxer la commande excuter par la dnition de ladite variable. Par exemple, la commande suivante :
BONSOIR="Bonsoir tout le monde \!" bash

87

Chapitre 5. Commandes Unix de base permet de lancer un shell et de lui communiquer la variable denvironnement BONSOIR. Cette variable ne sera dnie que pour ce programme, si lon quitte ce shell avec un exit, la variable BONSOIR ne sera plus dnie. Une variable peut tre dtruite tout instant laide de la commande unset. Cette commande prend en paramtre le nom de la variable supprimer. Par exemple, la commande suivante supprime notre variable :
unset BONJOUR

Vous pouvez tout moment visualiser lensemble des variables dnies avec la commande set. Le tableau donn ci-dessous vous prsentera les variables denvironnement les plus utilises, que la plupart des programmes utilisent pour permettre lutilisateur de modier leur comportement : Tableau 5-3. Variables denvironnements courantes Nom HOME USER TERM Signication Chemin du rpertoire personnel de lutilisateur. Nom de login de lutilisateur. Cette information est galement disponible au travers de la variable denvironnement LOGNAME. Type de terminal utilis. La valeur de cette variable sert aux applications pour dterminer les caractrisques du terminal et ses fonctionnalits an doptimiser leur afchage. La valeur de cette variable est souvent linux sur les consoles Linux, et xterm dans les mulateurs de terminal graphiques sous X11. Nous verrons lutilit de cette variable plus en dtail dans la Section 6.7.7. Chemin sur le chier de programme du shell actuellement utilis. Sous Linux, il sagit souvent du shell bash. Liste des rpertoires dans lesquels les programmes excuter seront recherchs. Cette liste ne doit pas contenir le rpertoire courant (.) pour des raisons de scurit de base (il suft de placer un cheval de troie portant le nom dune commande classique dans un rpertoire pour que lutilisateur le lance sans sen rendre compte). Liste des rpertoires dans lesquels les bibliothques dynamiques seront recherches si elles ne sont pas trouvables dans les rpertoires classiques des bibliothques de programme du systme. Liste des rpertoires dans lesquels le compilateur C recherchera les chiers den-tte lors de la compilation des chiers sources C. Cette liste doit contenir les rpertoires additionnels, qui ne sont pas dj pris en compte automatiquement par le compilateur C.

SHELL PATH

LD_LIBRARY_PATH

C_INCLUDE_PATH

CPLUS_INCLUDE_PATH Liste des rpertoires dans lesquels le compilateur C++ recherchera les chiers den-tte lors de la compilation des chiers sources C/C++. Cette liste doit contenir les rpertoires additionnels, qui ne sont pas dj pris en compte automatiquement par le compilateur C++.

88

Chapitre 5. Commandes Unix de base Nom LIBRARY_PATH Signication Liste des rpertoires dans lesquels les bibliothques utiliser lors de ldition de liens des programmes doivent tre recherches. Cette variable nest utilise que par les outils de dveloppement lors de la compilation de chiers sources et elle ne doit pas tre confondue avec la variable denvironnement LD_LIBRARY_PATH, qui indique la liste des rpertoires dans lequel lditeur de liens dynamiques recherchera les bibliothques dynamiques utilises par les programmes lors de leur chargement. Les notions de chiers sources et de compilation seront dtailles dans le Chapitre 7. Rpertoire des chiers temporaires. Par dfaut, le rpertoire des chiers temporaires est le rpertoire /tmp/, mais il est possible den changer grce cette variable denvironnement. Dnition de la zone horaire de lutilisateur. Le systme travaillant exclusivement en temps universel, chaque utilisateur peut dnir sa propre zone horaire pour obtenir lafchage des dates et des heures dans son temps local. Le format de cette variable denvironnement est assez complexe. Il est constitu de plusieurs champs spars par des espaces, reprsentant successivement le nom du fuseau horaire (au moins trois caractres), le dcalage ajouter lheure universelle pour obtenir lheure locale, le nom du fuseau horaire pour lheure dt, le dcalage pour lheure dt, et les dates de dbut et de n de lheure dt. Les dcalages horaires doivent tre exprims avec un + pour les fuseaux horaires placs louest de Greenwich, - pour ceux situs lest. Les dates de dbut et de n de la priode dheure dt peuvent tre exprims de deux manires diffrentes. La premire mthode est dindiquer le numro du jour dans lanne aprs la lettre J. Ce numro ne doit pas tenir compte du 29 fvrier, mme pour les annes bissextiles. La deuxime mthode est dindiquer le mois de lanne, la semaine du mois et le jour de la semaine, spars par des ., et aprs la lettre M. Les mois sont compts de 1 12, les semaines de 1 5 et les jours de 0 6, 0 tant le dimanche. Seul le premier champ est obligatoire, et il est possible dutiliser les noms de fuseaux horaires dnis par la bibliothque C. En France, on utilise normalement le fuseau CES (temps dEurope centrale). Nom de la locale utiliser par dfaut pour les paramtres dinternationalisation des applications. Cette valeur sera utilise pour les paramtres qui nen dnissent pas une explicitement. Elle doit tre compose de deux codes deux caractres, le premier indiquant la langue, et le deuxime le pays (car plusieurs pays peuvent parler la mme langue, et un pays peut avoir plusieurs langues nationales). Pour la France, on utilise normalement la valeur fr_FR . Cette valeur peut tre rednie par lune des variables denvironnement dcrites ci-dessous. Nom de la locale utiliser pour dterminer la langue des messages. La valeur par dfaut est spcie par la variable denvironnement LANG.

TMPDIR

TZ

LANG

LC_MESSAGES

89

Chapitre 5. Commandes Unix de base Nom LC_TYPE Signication Nom de la locale utiliser pour dterminer les rgles de classication des caractres. La classication des caractres permet de dire si un caractre est un chiffre ou non, sil est en majuscule ou en minuscule, etc. La valeur par dfaut est spcie par la variable denvironnement LANG. Nom de la locale utiliser pour dterminer les rgles de comparaison des caractres. La comparaison des caractres est utilise pour les tris lexicographiques (tri par ordre alphabtique par exemple). La valeur par dfaut est spcie par la variable denvironnement LANG. Nom de la locale utiliser pour dterminer lemplacement et le caractre reprsentant le symbole montaire du pays. La valeur par dfaut est spcie par la variable denvironnement LANG. Nom de la locale utiliser pour dterminer les conventions locales dcriture des nombres (sparateur dcimal, format de la virgule, etc.). La valeur par dfaut est spcie par la variable denvironnement LANG.

LC_COLLATE

LC_MONETARY

LC_NUMERIC

En rsum, le shell utilise les variables denvironnement du systme pour grer ses propres variables, et permet de les exporter vers lenvironnement dexcution quil communique aux commandes quil lance. Un grand nombre de variables denvironnement classiques sont reconnues par les programmes. Elles servent paramtrer leur comportement. Nous reverrons ultrieurement quelques-unes de ces variables lors de la conguration du systme de base.

5.9.5. Caractre dchappement et chanes de caractres


Un certain nombre de caractres sont interprts par le shell dune manire spciale. Nous en avons dj vu quelques-uns pour les redirections et les tubes, mais il en existe dautres. Par consquent, il faut utiliser une syntaxe particulire lorsquon dsire utiliser un de ces caractres dans une commande du shell sans quil soit interprt par le shell. Pour cela, il suft de faire prcder ces caractres du caractre dchappement antislash (caractre de la barre oblique inverse, \). Ce caractre permet dindiquer au shell que le caractre suivant doit tre trait tel quel et ne doit pas tre interprt avec son sens habituel. Par exemple, pour crer un rpertoire nomm <, on utilisera la commande suivante :

mkdir \<

Bien entendu, le caractre antislash peut lui-mme tre prcd dun autre antislash, lorsquon veut lutiliser en tant que caractre normal. Le caractre dchappement antislash permet galement, lorsquil est plac en n de ligne, de supprimer le saut de ligne qui le suit. Cela signie quil permet de rpartir une commande trop longue sur plusieurs lignes, des ns de lisibilit. Vous trouverez quelques exemples de cette notation plus loin dans ce document, pour prsenter des commandes trop longues pour tenir sur une page A4. Il peut tre relativement fastidieux de devoir taper des antislashs dans les chanes de caractres qui contiennent beaucoup de caractres interprtables par le shell. Cest pour cela que le shell permet de dnir des chanes de caractres dont il ignore le contenu lors de lanalyse syntaxique. Ces chanes de caractres sont simplement donnes entre guillemets simples (caractre ). Par exemple, la commande suivante :

90

Chapitre 5. Commandes Unix de base


MESSAGE=La syntaxe est A | B

permet daffecter la chane de caractres La syntaxe est A | B, contenant des espaces et le caractre | normalement utilis par le shell pour les tubes, dans la variable denvironnement MESSAGE.
Note : Une chane de caractres commence par un guillemet et se termine par un guillemet. Les chanes de caractres ne peuvent donc pas contenir de guillemet, mme prcd dun caractre dchappement. On veillera ne surtout pas confondre les guillemets simples (caractre ) avec les guillemets inverses (caractre ). Ces deux caractres se ressemblent en effet normment dans certaines polices de caractres, mais ont nanmoins une signication trs diffrente. Le premier sert dnir des chanes de caractres, et le deuxime excuter une commande et en inclure le rsultat dans une autre commande. Nous verrons plus loin comment utiliser ce type de guillemets.

Les guillemets simples sont donc trs pratiques pour crire simplement une chane de caractres, mais ne permettent pas de bncier des fonctionnalits de substitutions du shell, comme par exemple le remplacement dune variable par sa valeur dans la chane de caractres. De plus, elles ne peuvent pas contenir de guillemets simples, puisque cest leur caractre de terminaison. Cest pour ces raisons que le shell donne la possibilit de dnir des chanes de caractres plus souples, laide des guillemets doubles (caractre "). Dans ces chanes de caractres, la plupart des caractres normalement interprts par le shell ne le sont plus, comme pour les chanes de caractres utilisant les guillemets simples. Cependant, les caractres spciaux $, et \ conservent leur signication initiale. Il est donc possible, par exemple, dutiliser des variables denvironnement dans les chanes de caractres de ce type :
echo "Mon nom est $USER"

Le caractre dchappement antislash peut toujours tre utilis, en particulier pour insrer un caractre de guillemets doubles dans une chane de caractres. En effet, ce caractre marquerait la n de la chane de caractres sil ntait pas prcd dun antislash.
Note : Remarquez que les guillemets et les caractres dchappement ne sont utiliss que pour lanalyse de la ligne de commande. Une fois toutes les chanes de caractres et toutes les substitutions traites, les guillemets et les caractres dchappement inutiles sont supprims. En pratique, ce sont tous les caractres dchappement et les guillemets qui restent aprs traitement de la ligne de commande et qui ne font pas partie du rsultat dune des substitutions. Ainsi, la commande suivante :
echo "Bonjour tout le monde"

a pour but de passer la chane de caractres Bonjour tout le monde en tant que premier (et unique) paramtre de la commande echo, puis de lexcuter. Les guillemets ne font pas partie de la chane de caractres, ils ont t supprims par le shell et seul le contenu de la chane sera effectivement afch. Notez que la commande prcdente est trs diffrente de celle-ci :
echo Bonjour tout le monde

mme si le rsultat est le mme. En effet, cette dernire commande passe les chanes de caractres Bonjour, tout, le et monde en tant que paramtres (4 au total) la commande echo, alors que lutilisation des guillemets permet de passer toute la phrase en un seul paramtre. On peut

91

Chapitre 5. Commandes Unix de base


voir la diffrence en utilisant plus dun espace entre chaque mot : les espaces superus ne sont conservs que dans la premire commande.

5.9.6. Les substitutions


Lune des fonctionnalits les plus puissantes du shell est sans doute sa capacit effectuer des substitutions dexpressions par leur valeur. Lune des substitutions les plus courantes est sans doute le remplacement dune variable par sa valeur, mais le shell peut faire beaucoup plus que cela. Les lignes de commandes peuvent tre crites en utilisant diffrents types dexpressions spciales, qui seront remplaces par leur valeur par le shell avant lexcution de la commande. Ces expressions permettent de spcier des motifs de chane de caractres, dexprimer des chemins partiels sur des chiers ou des rpertoires, de rcuprer la valeur des variables du shell, et de calculer des expressions mathmatiques, voire dinclure le rsultat dune autre commande dans la ligne de commande en cours. Les mcanismes des substitutions dcrits ci-dessous sont prsents par ordre de priorit dcroissante. Cela signie que si une expression substituable contient elle-mme une autre expression substituable de priorit infrieure, cette expression sera remplace aprs la substitution de lexpression contenante.

5.9.6.1. Gnration de chanes de caractres selon un motif


Il est possible de demander au shell de gnrer une srie de chanes de caractres selon un motif simple. Ce motif est toujours constitu dun prxe, suivi dune partie variable, suivie dun sufxe. La partie variable du motif est celle qui subira les substitutions pour gnrer une liste de chanes de caractres commenant par le prxe suivi du rsultat de la substitution et se terminant par le sufxe. Cette partie variable doit tre spci entre accolades, et prend la forme dune liste de valeurs possibles pour chaque substitution, spares par des virgules. Par exemple, la commande suivante :
ls test{0,1,2,3,4}

sera transforme par le shell en la commande suivante :


ls test0 test1 test2 test3 test4

Note : Ceux qui se souviennent un peu de leurs mathmatiques se diront quil sagit l dune factorisation. Cest rigoureusement exact.

5.9.6.2. Substitution du nom dutilisateur


Le caractre tilde (~) est remplac par le nom de lutilisateur courant ou, dfaut de nom, par le chemin sur le rpertoire personnel de cet utilisateur. Il est possible de spcier un autre utilisateur en donnant le nom de login de cet autre utilisateur immdiatement aprs le caractre tilde. Par exemple, la commande suivante :
cp *.txt ~jean

92

Chapitre 5. Commandes Unix de base permet de copier tous les chiers dextension .txt dans le rpertoire personnel de lutilisateur jean.

5.9.6.3. Remplacements de variables


Comme il la dj t indiqu plus haut, la valeur des variables du shell et des variables denvironnement peut tre rcupre en prxant le nom de la variable par le caractre dollar ($). En fait, cette criture est lune des formes les plus simples que peuvent prendre les substitutions de paramtres. En effet, il est possible de remplacer lexpression par une partie seulement de la valeur de la variable, ou une par une autre valeur calcule partir de celle de la variable. En pratique, les expressions utilises par les substitutions de variables peuvent tre relativement compliques, et il peut tre ncessaire de les isoler du reste de la ligne de commande laide daccolades. La syntaxe exacte complte de ce type de substitution est donc la suivante :
${expression}

o expression est lexpression qui dnit la chane de remplacement utiliser. Si cette expression est un nom de variable, ce sera le contenu de cette variable qui sera utilis pour la substitution. Il est possible de fournir une valeur par dfaut pour le cas o cette variable ne contient rien ou nest pas dnie. Pour cela, on utilisera la syntaxe suivante :
${variable:-valeur}

o valeur est la valeur par dfaut utiliser dans ce cas. Notez que la variable reste indnie aprs la substitution. Pour xer la valeur de la variable cette valeur par dfaut en plus deffectuer la substitution, on utilisera plutt la syntaxe suivante :
${variable:=valeur} valeur a toujours la mme signication dans cette syntaxe.

Il est parfois prfrable dafcher un message derreur plutt que de donner une valeur par dfaut lorsquune variable nest pas dnie. Cela peut se faire avec la syntaxe suivante :
${variable:?message}

o message est le message afcher dans le cas o la variable variable est non dnie ou de valeur nulle. Si lon veut tester si une variable est non dnie et renvoyer une valeur spcique si elle est dnie, on utilisera la syntaxe suivante :
${variable:+valeur}

o valeur est la valeur renvoyer si la variable est dnie. Si la variable nest pas dnie, la substitution sera faite avec la chane de caractres vide (lexpression complte sera donc supprime). Le shell permet galement de faire la substitution avec une sous-chane de la valeur de la variable, partir dune position donne et dune longueur. La syntaxe utiliser est donne ci-dessous :
${variable:position:longueur}

o position est la position laquelle commence la sous-chane extraire, et longueur est le nombre de caractres extraire. Ce dernier champ est facultatif (on ne mettra pas non plus les deuxpoints prcdents si on dcide de ne pas spcier de longueur). Si on ne le prcise pas, la sous-chane extraite sera constitue du reste de la valeur de la variable partir de la position indique. La position

93

Chapitre 5. Commandes Unix de base quant elle doit tre positive ou nulle. Une valeur ngative indique un point de dpart correspondant au nombre de caractres correspondant partir de la droite de la valeur de la variable. Si lon veut obtenir la longueur dune chane de caractres contenue dans une variable, on utilisera cette syntaxe :
${#variable}

o variable est toujours le nom de la variable. Il est galement possible de considrer que la valeur dune variable est une chane de caractre prxe dune autre chane de caractres particulire. Le shell permet dextraire la chane de caractres principale, en supprimant ce prxe. Pour raliser cette opration, on utilisera lune des syntaxes suivantes :
${variable#prfixe}

ou :
${variable##prfixe}

o variable est la variable contenant la chane de caractres traiter, et prfixe est le prxe supprimer. En fait, le prxe peut tre spci laide dun motif de caractres. Ce motif peut correspondre une partie plus ou moins grande de la valeur de la variable. Dans ce cas, il y a plusieurs manires dinterprter ce motif, et donc plusieurs choix de prxes possibles supprimer. La premire syntaxe devra tre utilise lorsquon dsire supprimer le plus petit prxe possible correspondant au motif. La deuxime syntaxe, quant elle, permettra de supprimer le prxe le plus long. Par exemple, si la variable VAR contient la chane de caractres abbbc, la commande suivante :
echo ${VAR#a*b}

afchera la chane de caractres bbc, car le plus petit prxe correspondant au motif a*b est ab. Inversement, la commande :
echo ${VAR##a*b}

utilisera le prxe le plus long, savoir abbb. Le rsultat de cette substitution sera donc la chane de caractres c. La syntaxe des motifs de caractres utiliss ici sera prcise dans la Section 5.9.7. Le shell fournit une syntaxe similaire pour extraire des sufxes de la valeur des variables. Cette syntaxe utilise simplement le caractre % au lieu du caractre #. Comme pour les prxes, le fait de doubler ce caractre implique que le sufxe le plus long correspondant au motif sera utilis, alors que lutilisation dun seul % permet de choisir le sufxe le plus court. Ainsi, la commande :
echo ${VAR%b*c}

afchera la chane de caractres abb, alors que la commande :


echo ${VAR%%b*c}

nafchera que a. Pour terminer ce tour dhorizon des remplacements de variables, nous allons voir les possibilits de recherche et de remplacement du shell dans les chanes de caractres contenues dans des variables. La syntaxe suivante :

94

Chapitre 5. Commandes Unix de base


${variable/motif/remplacement}

permet de rechercher la plus grande sous-chane de caractres correspondant au motif motif dans la chane contenue dans la variable variable, et de remplacer cette sous-chane par la chane de caractres remplacement. Par exemple, si la variable VAR contient la chane de caractres abab, la commande suivante :
echo ${VAR/b/d}

afchera la chane de caractres adab. Ce remplacement nest donc effectu quune seule fois. Si lon veut que toutes les occurrences du motif soient remplaces par la chane de remplacement, il suft de doubler le premier / :
${variable//motif/remplacement}

Dans les deux syntaxes, la prsence du champ remplacement est facultative. Cela permet de supprimer purement et simplement les sous-chanes de caractres qui correspondent au motif. La syntaxe des motifs sera dtaille dans la Section 5.9.7. Cependant, une prcision doit tre signale : si le motif commence par le caractre #, il sera obligatoirement recherch au dbut de la chane de caractres contenue dans la variable. De mme, si le motif commence par le caractre %, il sera obligatoirement recherch la n de cette chane. Ces deux notations permettent dobtenir le mme effet que les suppressions de prxes et de sufxes prsentes plus haut.

5.9.6.4. Substitution du rsultat dune commande


Le shell peut valuer une commande apparaissant dans une expression an de la remplacer par son rsultat. Il existe deux syntaxes pour raliser ce type de substitutions. La premire, et la plus classique (voire historique), utilise des guillemets inverses :
commande

o commande est la commande devant tre remplace par son rsultat (cest--dire ce quelle enverra ce rsultat sur le ux standard de sortie). Pour donner un exemple, la commande suivante :
kill cat /var/pid/p.pid

a pour rsultat de lancer un signal SIGTERM au processus dont le PID est stock dans le chier /var/pid/p.pid. La commande cat est utilise pour afcher le contenu de ce chier, et elle est substitue par ce contenu. En n de compte, la commande kill est appliqu au PID afch par cat. La deuxime syntaxe utilisable est la suivante :
$(commande)

o commande est toujours la commande excuter et substituer. La diffrence entre ces deux syntaxes est que, dans le premier cas, les caractres $, et \ sont toujours interprts par le shell et doivent tre prcds dun antislash sils doivent apparatre tels quels dans la commande substituer, alors que, dans le deuxime cas, on peut utiliser tous les caractres sans protection particulire (sauf, bien entendu, la parenthse fermante, puisquelle marque la n de la commande).

95

Chapitre 5. Commandes Unix de base

5.9.6.5. valuation dexpressions arithmtiques


En gnral, le shell ne manipule que des chanes de caractres. Cependant, il est capable dvaluer des expressions mathmatiques simples faisant intervenir des entiers. Pour cela, il faut utiliser la syntaxe suivante :
$((expression))

o expression est lexpression valuer. Les expressions mathmatiques peuvent contenir tous les oprateurs classiques du langage C : addition, soustraction, multiplication et division. Il existe en plus un oprateur dlvation la puissance, reprsent par une double toile (**). Les oprateurs de dcalage binaires vers la gauche (<<) et la droite (>>) sont galement utilisables, ainsi que les oprateurs de manipulation de bits & ( ET binaire ), | ( OU binaire ), ^ ( OU binaire exclusif ) et ~ ( ngation binaire ). Comme en C, les comparaisons logiques peuvent galement tre values, elles ont la valeur 1 lorsque lexpression qui les utilise est vraie, et 0 dans le cas contraire. Les oprateurs disponibles sont ==, <, <=, >, >= et !=. Les tests peuvent tre composs laide des oprateurs && ( ET logique ) et || ( OU logique ). Les divers oprateurs daffectation du langage C +=, -=, etc. sont galement disponibles.

5.9.6.6. Substitution de commandes


Nous avons dj vu quil tait possible de rcuprer le rsultat dune commande pour linsrer dans une ligne de commande. Cette technique sapparente ce quil est possible de faire avec la commande xargs et un pipe. De la mme manire, le shell fournit une substitution permettant dobtenir des fonctionnalits similaires celles fournies par les pipes nomms. Cette substitution est la substitution de commande. La syntaxe utilise par les substitutions de commandes est similaire celle des redirections classiques :
<(command)

ou :
>(command)

o command est la commande substituer. La premire syntaxe permet de lancer une commande en arrire-plan en redirigeant son ux standard de sortie vers un descripteurs de chiers du shell. Le rsultat de cette substitution est le nom du chier /dev/fd/n permettant de lire les donnes crites par la commande dans ce descripteur de chier. En pratique, on utilise donc cette substitution en lieu et place dun chier dentre pour une commande normale. La deuxime commande permet de lancer galement une commande en arrire-plan, mais en redirigeant le ux dentre standard de cette commande cette fois. Il est alors possible de fournir les donnes ncessaires cette commande en crivant dans le chier /dev/fd/n dont le nom est fourni par le rsultat de la substitution. Ces deux commandes permettent donc de simplier lusage des pipes nomms, en vitant davoir crer un chier de tube nomm manuellement et davoir lancer les deux commandes devant se servir de ce tube pour communiquer. Ainsi, la commande suivante :
cat <(ls)

96

Chapitre 5. Commandes Unix de base est fonctionnellement quivalente la srie de commandes suivante :
mkfifo /tmp/lsfifo ls > /tmp/lsfifo cat /tmp/lsfifo rm /tmp/lsfifo

Les substitutions de commandes sont donc nettement plus pratiques et plus sres, car elles nimposent pas la cration dun chier de pipe nomm dont le nom peut tre choisi arbitrairement.

5.9.6.7. Dcoupage en mots


Les rsultats provenant des substitutions vues prcdemment sont systmatiquement dcomposs en srie de mots par le shell avant de poursuivre le traitement de la ligne de commande. Cela signie que les rsultats de substitutions sont analyss pour identier les mots quils contiennent, en se basant sur la notion de sparateur. Par dfaut, les sparateurs utiliss sont lespace, le caractre de tabulation et le retour de ligne, mais il est possible de spcier des sparateurs diffrents laide de la variable denvironnement IFS (abrviation de langlais Internal Field Separator ). Par exemple, le rsultat de la commande ls dans la commande suivante :
echo ls

est une chane de caractres contenant la liste des chiers du rpertoire courant, chacun tant spar du suivant par un caractre de saut de ligne. La substitution du rsultat de cette commande est donc soumise au dcoupage en mots, et chaque caractre de retour la ligne est interprt comme un sparateur. Par consquent, cette chane de caractres est transforme en une liste de mots, chacun de ces mots tant un des noms de chiers renvoys par la commande ls. Au nal, la commande echo est appele, avec comme paramtres ces noms de chiers, raison dun par paramtre. Les noms de chiers sont donc afchs sur une seule ligne.
Note : Ce dcoupage en mot est effectu automatiquement par le shell la suite des substitutions vues prcdemment. Cela signie en particulier que sil ny a pas de substitution, il ny a pas de dcoupage en mots non plus.

5.9.6.8. Remplacement des caractres gnriques


Si, aprs avoir appliqu toutes les formes de substitutions prcdentes, le shell trouve des caractres gnriques * et ? dans lexpression en cours de traitement, il interprtera la partie de lexpression contenant ces caractres comme un motif reprsentant des chemins de chier Unix. Les caractres * et ? auront donc le comportement que lon a dj dcrit dans la Section 5.5. Ce motif sera donc remplac par autant de chemins Unix lui correspondant que possible. Rappelons que le caractre gnrique * reprsente 0 ou plusieurs caractres quelconques, et que le caractre gnrique ? reprsente un caractre et un seul. Les chemins gnrs sont classs par ordre alphabtique. Il est possible galement de restreindre le jeu de caractres utilis par le shell pour rechercher les noms de chiers correspondants au motif. Pour cela, il faut lui indiquer un ensemble de caractres ou de plages de caractres utilisables, spars par des virgules, et entre crochets. Les plages de caractres sont spcies en indiquant le premier et le dernier caractre, spars par un tiret. Par exemple, la commande suivante :

97

Chapitre 5. Commandes Unix de base


ls [a-c,m-t]*.txt

permet dafcher tous les chiers dont le nom commence par les lettres a, b, c et les lettres allant de m t, et dont lextension est .txt. Vous trouverez de plus amples renseignements sur la syntaxe de ces motifs dans la Section 5.9.7. Sauf paramtrage pour indiquer explicitement de faire le contraire, le shell ignore systmatiquement les rpertoires . et .. dans les substitutions. Cela est trs important. En effet, une commande utilisant le caractre gnrique * ne sappliquera pas, par dfaut, sur le rpertoire courant et le rpertoire parent. Paramtrer bash pour quil prenne en compte ces rpertoires peut tre extrmement dangereux, surtout avec une commande telle que rm -f *, qui dans ce cas effacerait galement les rpertoires parents en plus du contenu du rpertoire courant !

5.9.7. Les expressions rationnelles


Les substitutions de variables et de noms de chiers utilisent des motifs pour identier des chanes de caractres. Ces motifs peuvent tre reconnus dans plusieurs chanes de caractres diffrentes, car ils contiennent une ou plusieurs parties variables qui pourront reprsenter chacune une sous-chane des chanes qui vrient ce motif. Par exemple, le motif a*b reprsente toute chane de caractres commenant par un a et se terminant par un b. La sous-chane situe entre ces deux caractres peut tre quelconque, et constitue la partie variable du motif. La syntaxe utilise pour dnir les motifs de chanes de caractres dans le shell bash est un sousensemble dun langage plus complexe permettant de dcrire ce que lon appelle les expressions rationnelles (lusage dit galement expressions rgulires ). Le langage des expressions rationnelles est relativement compliqu, mais extrmement puissant. Ce langage permet didentier avec prcision des sous-chanes de caractres dans un chane de caractres laide des parties variables des expressions rationnelles, et permet ventuellement de remplacer ces sous-chanes par des chanes de substitutions. Malheureusement, la description des expressions rationnelles pourrait prendre plusieurs pages, aussi ne verrons-nous ici que expressions utilisables dans les substitutions du shell bash. Comme vous lavez sans doute dj devin au travers des exemples prcdents, le caractre * permet didentier une quelconque chane de caractres, y compris la chane vide. Utilis dans les expressions rationnelles, il constitue la partie variable principale de ces expressions. De la mme manire, le caractre ? reprsente un et un seul caractre quelconque. Ce caractre sera donc utilis quand on dsirera contrler la taille de la partie variable dune expression rationnelle, ventuellement en le rptant un certain nombre de fois. Les deux caractres de substitutions prcdents peuvent contenir nimporte quel caractre, ce qui peut parfois ne pas tre assez restrictif dans la dnition dun motif. Le shell fournit donc une syntaxe plus volue, permettant de dnir prcisment le jeu de caractre auquel un caractre du motif doit appartenir. Cette syntaxe consiste simplement donner la liste des caractres du jeu de caractres entre crochets :
[...]

Les points de suspension reprsentent ici lensemble des caractres qui peuvent apparatre dans le motif ainsi dni. Notez que dans le cas dune suite de caractres, il suft de spcier le premier et le dernier caractre, et de les sparer par un trait dunion (caractre -). Ainsi, le motif suivant :
[a-egt]

reprsente nimporte lequel des caractres de a e, plus les caractres g et t.

98

Chapitre 5. Commandes Unix de base


Note : Pour spcier le caractre - lui-mme, il suft de le placer tout seul au dbut ou la n de la liste de caractres spcie entre les crochets. De mme, pour spcier le caractre ] lui-mme (normalement utilis pour marquer la n du jeu de caractres), il faut le placer au dbut de la liste, juste aprs le crochet ouvrant.

Pour nir, sachez que le shell bash est galement capable de prendre en charge des expressions rationnelles plus complexes que celles prsentes ici. Cependant, ces expressions ne sont pas actives par dfaut, et ne sont donc accessibles quen activant une option complmentaire du shell. Ces extensions ne seront pas dcrites ici, mais vous pouvez consulter la page de manuel de bash si vous dsirez en savoir plus ce sujet.

5.9.8. Structures de contrle


Tout langage de programmation digne de ce nom dispose de structures de contrles volues permettant de contrler lexcution du programme, de raliser des boucles et de structurer lensemble dun programme. Le shell nchappe pas la rgle, et fournit la plupart des constructions classiques. Cette section a pour but dexposer leurs syntaxes.

5.9.8.1. Les instructions composes


Dans le langage du shell, une instruction se termine soit par un retour la ligne (non prcd dun antislash), soit par un point-virgule. Les instructions peuvent tre pourtant trs complexes, car elles peuvent contenir des tubes et des redirections. En fait, une instruction peut peu prs tre dnie comme tant une ligne de commande normale du shell. Le shell permet bien entendu de raliser des instructions composes, an de regrouper plusieurs traitements dans un mme bloc dinstructions. La mthode la plus simple pour raliser un bloc dinstructions est tout simplement de les regrouper sur plusieurs lignes, ou de les sparer par des points-virgules, entre accolades. Par exemple, les instructions suivantes constituent un bloc dinstructions :
{ cd /tmp rm *.bak }

Notez que laccolade fermante est considre comme une instruction part entire. Cela signie que si lon ne met pas laccolade fermante sur une ligne indpendante, il faut faire prcder linstruction prcdente dun point-virgule. De mme, il faut le faire suivre dun autre point-virgule sil ne se trouve pas la n dune ligne. Les instructions des instructions composes cres laide des accolades sont excutes au sein du shell courant. Les variables quelles dnissent, ainsi que les changements de rpertoires, sont donc toujours valides lissue de lexcution de ces instructions. Si cela nest pas dsirable, on pourra crer des instructions composes laide de parenthses. Les instructions seront alors excutes dans un autre shell, lanc pour loccasion, et elles nauront donc pas deffet de bord imprvu dans le shell appelant. Par exemple, le rpertoire courant lissue de linstruction compose prcdente est le rpertoire /tmp/, alors que linstruction compose suivante :
( cd /tmp

99

Chapitre 5. Commandes Unix de base


rm *.bak )

ne change pas le rpertoire courant.


Note : On ne confondra pas les instructions composes utilisant des parenthses et les substitutions de rsultat de commande. Les instructions composes renvoient le code derreur de la dernire instruction excute, alors que le rsultat des substitutions est ce que la commande a crit sur son ux de sortie standard.

Le shell permet galement de raliser des instructions composes conditionnelles, o lexcution de chaque instruction de linstruction compose est conditionne par le rsultat de linstruction prcdente. Ces instructions composes sont dnies laide des oprateurs || et &&. La syntaxe de ces oprateurs est la mme :
command1 || command2 command1 && command2

o command1 et command2 sont deux commandes du shell (composes ou non). Avec loprateur ||, la commande command2 nest excute que si le code de retour de la commande command1 est non nul, ou, autrement dit, si cette commande ne sest pas excute correctement. Inversement, avec loprateur &&, la commande command2 nest excute que si la premire commande sest excute correctement (et renvoie donc un code de retour nul). Par exemple, la commande suivante :
rm *.txt 2> /dev/null || echo "Aucun fichier supprimer"

permet deffacer tous les chiers dextension .txt, ou dafcher le message derreur Aucun fichier supprimer sil nexiste pas de chier ayant une telle extension. Les instructions composes peuvent tre utilises comme nimporte quelle commande normale. En particulier, elles peuvent tre utilises dans des commandes plus complexes, par exemple comme destination dun tube. Cest ce que faisait lexemple de dplacement de toute une arborescence dans la Section 5.9.3.1.

5.9.8.2. Les tests


Sous Unix, chaque processus reoit plusieurs valeurs en paramtres et renvoie un code de retour. La plupart des paramtres sont passs en ligne de commande, et sont rcuprs directement par le processus, mais dautres paramtres peuvent tre fournis par le processus appelant par lintermdiaire de variables denvironnement et de descripteurs de chiers. Le code de retour, quant lui, est un entier signalant si lexcution du processus sest termine correctement ou si des erreurs ont eu lieu. Si les codes derreurs varient grandement dun programme un autre, la valeur 0 signie toujours, et ce quel que soit le programme, que lexcution sest droule correctement. Il est possible de tester le code de retour dune commande avec linstruction if. La syntaxe la plus simple pour un test est la suivante :
if commande ; then action fi

o commande est la commande dont on dsire tester le code de retour, et action est la commande excuter si ce code vaut 0 (cest--dire, si la commande commande sest excute correctement).

100

Chapitre 5. Commandes Unix de base Il peut paratre rducteur de ne pouvoir tester que le code de retour dune commande. Mais en fait, cest une fonctionnalit trs puissante du shell, car elle permet de raliser tous les types de tests imaginables. En effet, il existe une commande spciale, [, qui permet de raliser divers types de tests sur les paramtres quon lui passe, et dajuster son code derreur en consquence. Par exemple, pour tester lgalit dune variable denvironnement avec une chane de caractres, on utilisera la syntaxe suivante :
if [ $variable == valeur ] ; then action fi

Notez que dans cette syntaxe, le test effectu est une commande complte. Cela implique quil faut mettre une espace entre chaque paramtre, et en particulier entre le nom de la commande ([), le premier oprande ($variable), loprateur utilis (==), le deuxime oprande (valeur) et le caractre de marque de n de test (]). La commande [ est capable deffectuer tous les tests standards. Par dfaut, elle considre que les deux oprandes du test sont des chanes de caractres, et elle utilise lordre lexicographique pour les comparer. Les tests dgalit et dingalit sont effectus respectivement avec les oprateurs == et !=. Les oprateurs dantriorit dans lordre lexicographique sont < et <=, et les oprateurs de postriorit sont > et >=. Notez que lutilisation de ces oprateurs peut tre relativement pnible, parce que les caractres < et > sont interprts par le shell en tant que redirections. Par consquent, il faut souvent les prcder du caractre dchappement antislash. Lordre lexicographique convient dans la plupart des cas, mais il nest pas trs appropri pour la comparaison de valeurs numriques. Par exemple, le test suivant :
if [ -1 \< -2 ] ; then echo "-1 est plus petit que -2" fi

est vri, car le caractre 1 prcde le caractre 2 dans lordre lexicographique. La commande [ fournit donc la possibilit dutiliser une autre syntaxe pour comparer les entiers. Cette syntaxe utilise les options lt et gt respectivement pour les tests dinfriorit stricte et de supriorit stricte, et les options le et ge respectivement pour les tests dinfriorit et de supriorit ou dgalit. Ainsi, le test :
if [ $i -gt 3 ] ; then echo "$i est suprieur 3" fi

permet de comparer la valeur entire de la variable i avec le nombre 3. Nous avons vu dans la Section 5.9.8.1 que les oprateurs || et && permettent de tester le code de retour dune commande, et quen fonction de la valeur de ce code de retour, dexcuter ou non la commande suivante. La syntaxe de ces oprateurs provient en fait de la possibilit de les employer pour effectuer des tests complexes avec linstruction if. Par exemple, pour effectuer un ET logique entre deux tests, on utilisera la syntaxe suivante :
if [ $i == "A" ] && [ $j -lt 3 ] ; then echo "i contient la lettre \"A\" et j contient un nombre infrieur 3" fi

101

Chapitre 5. Commandes Unix de base Notez que la deuxime commande [ nest excute que si le premier test est vri. Lutilisation de loprateur || se fait selon le mme principe. Il est bien entendu possible de regrouper plusieurs commandes de test ensemble, laide de parenthses. Comme dans la plupart des langages informatiques, linstruction if peut prendre une forme plus complexe pour traiter les cas o le test nest pas vri. Ainsi, pour excuter une action spcique pour le cas o le test serait faux, on peut utiliser la syntaxe suivante :
if commande ; then action1 else action2 fi

o commande est toujours la commande dont le code de retour sera test, action1 est laction qui doit tre ralise si cette commande a renvoy le code de retour 0, et action2 la commande excuter dans le cas contraire. De mme, si lon veut enchaner des tests, on utilisera le mot cl elif. La syntaxe gnrale du test est donc la suivante :
if commande1 ; then action1 elif commande2 ; then action2 elif commande3 ; then ... else actionn fi

Note : Pour des raisons doptimisation, le shell peut simuler le comportement du programme [, et viter ainsi de le lancer chaque fois quil a faire un test. Cependant, le principe originel tait bien celui dcrit ci-dessus. Cette description, bien que ntant plus tout fait exact, permet de mieux comprendre la syntaxe du shell. Il est possible de rcuprer la valeur du code de retour de la dernire commande excute grce la variable spciale $?. Cependant, il est trs rare davoir manipuler cette valeur directement, car les structures de contrle du shell telles que if permettent deffectuer les actions qui simposent sans avoir la connatre. Pour ceux qui savent programmer en C, sachez que le code de retour est la valeur renvoye par la fonction C exit ou par linstruction return de la fonction principale main. Les paramtres de la ligne de commande, quant eux, sont rcuprables par lintermdiaire des paramtres de la fonction principale main.

Il ne faut pas oublier que la fonction premire du shell est de permettre les manipulations de chiers. Il nest donc pas tonnant que la commande [ permette galement de raliser tous les tests imaginables sur les chiers. Ces tests vont de lexistence dun chier au test de sa nature et de ses attributs, en passant par les tests sur lidentit de son propritaire et de son groupe. La syntaxe gnrale de ces tests est la suivante :
if [ option fichier ] ; then . . .

102

Chapitre 5. Commandes Unix de base


fi

o option est une option de la commande [ dcrivant la proprit teste, et fichier est le nom du chier sur lequel le test doit porter. Les principales options utilisables dans les tests sur les chiers sont rcapitules dans le tableau cidessous : Tableau 5-4. Tests sur les chiers Option
-e -d -f -s -L -b -c -p -r -w -x -g -u -k -O -G -N

Signication Test dexistence dun chier ou dun rpertoire. Test dexistence dun rpertoire. Test dexistence dun chier normal. Test dexistence dun chier et vrication que sa taille est non nulle. Test dexistence dun lien symbolique. Test dexistence dun chier spcial de priphrique de type bloc (disque dur, CD-ROM, lecteur de cassettes, etc.). Test dexistence dun chier spcial de priphrique de type caractre (port srie, port parallle, carte son...). Test dexistence dun tube. Test dexistence du chier et daccessibilit en lecture de ce chier. Test dexistence du chier et daccessibilit en criture de ce chier Test dexistence du chier et de possibilit dexcution de ce chier. Test dexistence du chier et de prsence du bit setgid sur ce chier. Test dexistence du chier et de prsence du bit setuid sur ce chier Test dexistence du chier et de prsence du bit sticky sur ce chier. Test dexistence du chier et dappartenance de ce chier lutilisateur effectif courant. Test dexistence du chier et dappartenance de ce chier au groupe effectif courant. Test dexistence du chier et de modication de ce chier depuis la dernire fois quil a t lu.

Note : Ce tableau nest pas exhaustif, mais les options les plus importantes et les plus utilises sy trouvent. Vous pourrez vous rafrachir la mmoire sur les notions de bit setuid, setgid et sticky, ainsi que sur les notions dutilisateur et de groupe effectifs en relisant la Section 3.2.

La commande [ accepte galement les options -nt et -ot, qui permettent respectivement de tester si un chier est plus rcent ou plus vieux quun autre, en se basant sur les dates de dernire modication de ces chiers. Ces deux oprateurs sutilisent avec la syntaxe suivante :
if [ fichier1 option fichier2 ] ; then . . .

103

Chapitre 5. Commandes Unix de base


fi

o fichier1 et fichier2 sont les deux chiers sur lesquels la comparaison doit porter, et option est lune des options -nt ou -ot.

5.9.8.3. Le branchement conditionnel


Lorsquon veut effectuer diffrentes oprations selon la valeur dune variable, linstruction if peut devenir trs lourde utiliser. En effet, si le nombre de valeurs diffrentes est grand, elle peut conduire crire un grand nombre de tests. Le shell fournit donc une instruction de branchement conditionnel, qui permet de spcier quelle action doit tre prise pour chaque valeur de la variable. Le branchement conditionnel sutilise de la manire suivante :
case valeur in ( motif1 | motif2 | ... ) commande1 ;; ( motifn | motifn+1 | ... ) commande2 ;; . . . esac

o motif1, motif2... motifn+1 sont des motifs spciant les valeurs possibles pour la valeur valeur, et commande1, commande2, etc. sont les commandes excuter pour les valeurs de ces motifs. La commande excute est la premire commande pour laquelle la variable correspond lun de ses motifs correspondants. Une fois excute, la recherche se termine, et lexcution reprend la suite du branchement conditionnel. Par exemple ce branchement conditionnel :
case $i in ( *.txt ) echo "$i est un fichier texte" ;; ( *.gz ) echo "$i est comprim avec gzip" ;; ( *.tar ) echo "$i est une archive" ;; esac

afche la nature du chier dont le nom est stock dans la variable i partir de son extension. Le code de retour du branchement conditionnel est 0 si la variable ne correspond aucun des motifs, ou le code de retour de la commande excute sinon.

5.9.8.4. Les boucles


Il existe deux types de boucles : le while et le until. La syntaxe des boucles while est la suivante :
while commande ; do action done

o commande est une commande dont le code de retour est utilis comme critre de la n de la boucle, et action est linstruction (compose ou non) excute chaque itration de la boucle. Comme on le voit, le shell utilise le mme principe pour les boucles que pour les tests pour valuer une condition. Tant que la commande commande renvoie un code de retour gal 0, linstruction action est excute. Linstruction until utilise la mme syntaxe que linstruction while :

104

Chapitre 5. Commandes Unix de base


until commande ; do action done

ceci prs que linstruction action est excute tant que la commande commande renvoie un code de retour non nul. Linstruction until utilise donc simplement le test inverse de celui de linstruction while. Bien entendu, il est possible dutiliser la commande [ pour effectuer des tests plus complexes que le simple test du code de retour dune commande. Par exemple, la boucle suivante calcule la somme des dix premiers entiers :
result=0 i=0 while [ $i -le 10 ] ; do result=$(($result + $i)) i=$(($i + 1)) done echo $result

5.9.8.5. Les itrations


Les itrations sont des boucles qui sexcutent pour chaque lment dun ensemble donn. Le shell gre les itrations par lintermdiaire de linstruction for. La syntaxe de cette instruction est la suivante :
for variable [ in ensemble ] ; do action done

o variable est un nom de la variable utilise pour litration, ensemble est lensemble des valeurs que peut prendre cette variable, et action est la commande (simple ou compose) excuter pour chaque valeur de cette variable. Le principe des itrations est trs simple. Pour chaque valeur indique dans lensemble des valeurs, la commande est excute, avec la valeur en question accessible dans la variable utilise pour litration. Par exemple, la commande suivante :
for i in *.txt ; do mv $i ${i/%.txt/.doc} done

permet de renommer tous les chiers portant lextension .txt en chier du mme nom, mais avec lextension .doc. Il nest pas ncessaire de prciser lensemble des valeurs que peut prendre la variable. Dans ce cas, lensemble utilis sera celui de tous les paramtres du script ou de la fonction. Nous verrons plus loin comment raliser des fonctions et des scripts, ainsi que la manire de rcuprer leurs paramtres.

105

Chapitre 5. Commandes Unix de base

5.9.8.6. Les ruptures de squence


Il est parfois ncessaire de modier lordre dexcution dans les boucles et les itrations du shell. Par exemple, il est souvent ncessaire de sortir de la boucle courante, soit parce quon ne peut plus la continuer dans de bonnes conditions, soit parce que le traitement est termin. Cest notamment le cas lorsquune erreur se produit, ou lorsquon recherche une valeur spcique en itrant sur les valeurs possibles dun ensemble. Le shell fournit donc les instructions break et continue, qui permettent respectivement de sortir de la boucle courante et de passer directement litration suivante. Ces deux commandes peuvent tre utilises aussi bien lintrieur des boucles while et until que dans les itrations crites avec linstruction for. Par exemple, le calcul de la somme des dix premiers entiers aurait pu tre crit de la manire suivante :
result=0 i=0 while true ; do result=$(($result + $i)) i=$(($i + 1)) if [ $i ==11 ] ; then break ; fi done echo $result

Les instructions break et continue peuvent prendre un paramtre entier indiquant le niveau dimbrication de la boucle sur laquelle elles sappliquent. Ce paramtre doit imprativement tre suprieur sa valeur par dfaut, cest--dire 1. Ainsi, pour sortir directement dune double boucle lorsquon est dans le corps de la boucle la plus imbrique, on utilisera la commande suivante :
break 2

5.9.8.7. Les fonctions


Le langage du shell est un langage procdural. Cela signie que lon peut crer des fonctions pour regrouper des sries dinstructions couramment excutes. La syntaxe permettant dcrire de telles fonctions est la suivante :
function nom () { instructions }

o nom est le nom de la fonction, et instructions est la liste des commandes excuter dans cette fonction. Vous constaterez quil ny a pas de dclaration des paramtres de cette fonction. Cest normal : les paramtres des fonctions sont passs implicitement dans les variables denvironnement $1, $2, $3, etc. En fait, comme nous le verrons plus loin, cette syntaxe est galement celle utilise pour rcuprer les paramtres de la ligne de commande des scripts shell. Cela signie que les paramtres du script ne sont pas accessibles dans le corps dune fonction, puisquils sont masqus par les paramtres de la fonction. Les autres variables utilises dans les fonctions sont des variables globales. Celles qui sont dclares dans une fonction sont donc galement globales, et restent accessibles mme aprs lexcution de

106

Chapitre 5. Commandes Unix de base cette fonction. Si lon veut dnir des variables locales, on prcdera la dnition de la variable du mot cl local :
local variable=valeur

o variable est le nom de la variable locale, et valeur est sa valeur. Les fonctions peuvent retourner une valeur numrique en code de retour. Cette valeur peut tre indique laide de linstruction return. Par exemple, la fonction suivante calcule la somme des entiers de 0 la valeur de lentier quelle reoit en paramtre :
function somme () { local result=0 local i=0 while [ $i -le $1 ] ; do result=$(($result + $i)) i=$(($i + 1)) done return $result }

Ce code derreur pourra tre rcupr par lappelant dans la variable denvironnement $? :
somme 10 echo $?

5.9.8.8. Les entres / sorties de donnes


Tout langage de programmation qui se respecte dispose de possibilits dentre / sortie pour permettre la communication avec lutilisateur de manire interactive, et le shell nchappe pas la rgle. Nous avons dj vu la commande echo dans bon nombre des exemples qui prcdaient, et vous avez sans doute devin quil sagissait l de la commande qui permet dafcher du texte lcran. Son utilisation est des plus simples, puisquelle se contente denvoyer sur le ux de sortie standard une chane de caractres contenant tous les paramtres quelle reoit, spars par des espaces. Nous ne nous attarderons donc pas sur cette commande, qui na pas d vous poser de problmes jusqu prsent. Il ne nous reste donc plus qu voir la manire de demander lutilisateur de saisir une valeur. Avec bash, la demande de saisie des donnes se fait classiquement laide de la commande read. Cette commande lit une ligne sur le ux dentre standard, la dcoupe en une ou plusieurs donnes et place les rsultats dans les variables denvironnement quelle reoit en paramtre. La syntaxe de read est donc la suivante :
read variable1 variable2 ... variablen

o variable1, variable2, etc. sont les noms des variables denvironnement dans lesquelles les rsultats de la saisie doivent tre placs. La commande read utilise les sparateurs indiqus dans la variable denvironnement IFS pour dcouper la ligne lue dans le ux dentre standard. Si le nombre de variables spci est infrieur au nombre de mots de cette ligne aprs dcoupage, les premires variables denvironnement reoivent

107

Chapitre 5. Commandes Unix de base les premiers mots, et la dernire reoit le reste de la commande. Par exemple, la commande suivante :

read MOT RESTE

permet de lire le premier mot dune ligne dans la variable denvironnement MOT et de placer le reste dans la variable RESTE. La commande read dispose dune syntaxe simplie, qui ne prend aucun paramtre. Dans ce cas, la ligne lue dans le ux dentre standard est place telle quelle dans la variable denvironnement REPLY. Il est la charge du programmeur danalyser son contenu. Le shell dispose galement dune instruction volue permettant de raliser des menus simplis : linstruction select. Cette instruction construit un menu partir dun certain nombre de choix, chaque choix tant prcd par un numro, et demande lutilisateur de taper le numro de son choix. Elle affecte alors la valeur du choix correspondant une variable denvironnement, et excute une commande pour le traitement du choix. La syntaxe gnrale de linstruction select est donne ci-dessous :
select variable in liste ; do action done

o variable est le nom de la variable devant recevoir la valeur choisie par lutilisateur, liste est la liste des valeurs que cette variable peut prendre, et action est la liste des instructions excuter pour chaque choix effectu. Si le choix de lutilisateur est incorrect, la variable de contrle reoit la valeur nulle. Le programmeur peut rcuprer la valeur saisie par lutilisateur dans la variable denvironnement REPLY et effectuer un traitement derreur appropri. Linstruction select est une boucle. Le menu est repropos aprs chaque excution de laction action. La sortie de cette boucle ne peut se faire que si un caractre de n de chier (CTRL + D) est lu sur le ux dentre standard, ou si une option de menu spcique est propose pour quitter cette boucle. Vous trouverez un exemple de menu simpli ci-dessous :
select LU in A B C case $LU in ("A") echo ("B") echo ("C") echo ("D") echo ("Sortir") esac done D Sortir; do "Vous "Vous "Vous "Vous break avez avez avez avez ;; choisi choisi choisi choisi A" B" C" D" ;; ;; ;; ;;

5.9.9. Les alias


Il est incontestable que certaines commandes peuvent avoir une grande complexit, et il peut tre fastidieux de les retaper compltement chaque fois que lon en a besoin. Dautre part, la saisie dune longue ligne de commande multiplie les risques de faire une faute de frappe et davoir corriger la commande. Cela peut au mieux faire perdre son temps lutilisateur, et au pire lnerver.

108

Chapitre 5. Commandes Unix de base Le shell fournit donc un mcanisme pour donner un nom simpli aux commandes complexes : le mcanisme des alias. Les alias reprsentent en fait des chanes de caractres complexes, et sont remplacs automatiquement par le shell lorsquil analyse les lignes de commandes. Cest un mcanisme plus souple que celui des variables denvironnement, et qui permet de dnir des macro-commandes plus facilement quavec les fonctions du shell. Pour crer un alias, vous devrez utiliser la syntaxe suivante :
alias nom=chane

o nom est le nom de lalias, et chane est la chane de caractres reprsente par cet alias. Par exemple, pour faire un alias nomm beep permettant de faire un bip sonore, on pourra utiliser la commande suivante :
alias beep="echo $\a"

Cet alias pourra tre simplement utilis simplement en tapant beep en ligne de commande. Vous pouvez visualiser la liste des alias existant simplement laide de la commande alias, appele sans paramtres. Je vous recommande de consulter cette liste, pour vous donner une ide des alias courants, qui se rvlent gnralement trs utiles. La suppression des alias se fait laide de la commande unalias. Sa syntaxe est la suivante :
unalias nom

o nom est le nom de lalias supprimer.


Note : Les alias ne sont remplacs par la chane de caractres quils reprsentent que lorsque le shell analyse la ligne de commande. Cela signie que les dnitions dalias ne sont valides quaprs validation de cette ligne. On vitera donc de dnir des alias dans la dclaration dune instruction compose, car cet alias ne sera pas disponible lintrieur de son propre bloc dinstructions. Par dfaut, les alias ne sont disponibles que dans les shells interactifs. Ils ne peuvent donc pas tre utiliss dans les scripts shell. La notion de script shell est dtaille dans la Section 5.9.10.

5.9.10. Les scripts shell


Pour linstant, toutes les fonctionnalits de bash, aussi puissantes soient-elles, ne constituent que linterface dun interprteur de commandes puissant. Mais nous avons dit que le shell tait vritablement un langage de programmation. Cela signie quil est possible dcrire des programmes complexes en langage shell, simplement en stockant plusieurs commandes dans un chier. On appelle ces chiers des scripts shell. Lcriture dun script shell nest pas plus complique que de taper les commandes du programme les unes la suite des autres dans un shell interactif. La seule diffrence est que les scripts shell peuvent tre rejous plusieurs fois, recevoir des paramtres en ligne de commande et renvoyer un code de retour. Tout script shell est en fait un chier texte sur lequel on a mis les droits dexcution. Il contient les diffrentes commandes quil doit excuter. Sa premire ligne est trs importante, elle permet dindiquer au shell excutant quelle est la nature du chier. La syntaxe de cette ligne est la suivante :

109

Chapitre 5. Commandes Unix de base


#!shell

o shell est le chemin absolu sur le shell ou linterprteur de commande capable dexcuter ce script. En pratique, pour bash, on utilisera toujours la ligne suivante :
#!/bin/bash

Les paramtres des scripts shell sont accessibles exactement comme des paramtres de fonction. On rcuprera donc le premier paramtre avec lexpression $1, le deuxime avec lexpression $2, le troisime avec lexpression $3, etc. Le code de retour dun shell pourra tre x laide de la commande exit. Par exemple :
exit 0

Ce code de retour pourra tre rcupr par lappelant laide de lexpression $?. Nous nirons pas plus loin dans la description du shell bash, car ce nest pas le but de ce document. Vous pouvez vous rfrer un bon livre dUnix ou aux pages de manuel si vous dsirez approfondir le sujet. Comme vous avez d vous en rendre compte dans cette section, les shells Unix sont des vritables langages de programmation, qui dpassent de trs loin les interprteurs de commandes du type DOS. De plus, il existe plusieurs autres langages dont nous navons pas parl ici, chacun tant conu souvent pour raliser un certain type de tche (administration systme, manipulation de chiers textes, cration de pages Web dynamiques, cration dinterfaces utilisateur en mode fentr, pilotage dapplications, etc.). Si vous vous y intressez, vous verrez que le sujet est rellement vaste et passionnant.

110

Chapitre 6. Administration du systme de base


Un certain nombre doprations que lon peut faire avec un systme Unix ne rentrent pas dans le cadre dune utilisation quotidienne, mais sont destines plutt ladministration du systme lui-mme. Ces oprations peuvent tre ralises laide de commandes Unix spciales, gnralement rserves ladministrateur du systme, ou peuvent tre ralises en modiant les chiers de conguration du systme. Il est trs probable que le programme dinstallation ou le programme de conguration de votre distribution vous permette deffectuer ces tches de manire relativement aise ou conviviale. Lutilisation de ces programmes est trs simple, puisquen gnral il suft de rpondre quelques questions et les modications sont effectues automatiquement pour vous. Il est fortement recommand de toujours essayer les programmes de ce type en premier lieu, car eux seuls connaissent les spcicits de chaque distribution. Cela dit, ces programmes ne peuvent pas tout prvoir, parce que Linux est un systme capable deffectuer un grand nombre de tches trs diversies dune part, et parce que ce que vous voulez en faire personnellement ne correspond pas forcment un standard prdtermin dautre part. Cette partie dcrira donc le mcanisme gnral damorage des systmes Linux et les commandes dadministration les plus importantes. Les principaux chiers de conguration permettant de modier le comportement du systme seront galement dcrits an de permettre un usage courant de Linux dans de bonnes conditions. Les notions les plus avances concernant ladministration systme ne seront en revanche pas abordes, car cela dpasserait le cadre de ce document. Les lecteurs les plus intresss pourront toujours se rfrer un guide dadministration Unix. Ladministration du systme est un peu moins sensible que son installation. En effet, les seuls risques que lon encourt sont de dtruire les chiers de conguration du systme, et donc de devoir les recrer manuellement. Il ny a pas de manipulation de partitions ou de systme de chiers crer, aussi le risque de perdre des donnes est-il nettement plus faible. Cependant, les oprations dadministration se feront sous le compte root, ce qui implique une prudence extrme. Cest pour cette raison que nous allons commencer par sauvegarder lensemble des chiers de conguration, an de pouvoir revenir ltat initial aprs installation, sans repasser par la case dpart.

6.1. Sauvegarde de la conguration dinstallation


La sauvegarde de la conguration du systme est une opration facile raliser. En effet, tous les chiers de conguration sont placs dans le rpertoire /etc/. Par consquent, il suft de faire une archive des chiers de ce rpertoire et de ses sous-rpertoires. Cette opration peut tre ralise avec la commande suivante :
tar cvfz /root/install.conf.tar.gz /etc/*

Cette commande crera une archive nomme install.conf.tar.gz dans le rpertoire personnel de ladministrateur systme. On notera que, pour certaines distributions, quelques chiers de conguration sont placs dans le rpertoire /sbin/init.d/. Pour ces distributions, on utilisera donc plutt la commande suivante :
tar cvfz /root/install.conf.tar.gz /etc/* /sbin/init.d/*

111

Chapitre 6. Administration du systme de base De cette manire, si lon a un gros problme avec la conguration de la machine, on peut revenir simplement la conguration utilise juste aprs linstallation du systme avec la simple commande suivante :
tar xvfz /root/install.conf.tar.gz

commande que lon excutera dans la racine du systme de chiers. Cette commande crasera tous les chiers existants par ceux de la sauvegarde. Les chiers qui ont t ajouts depuis cette sauvegarde seront bien entendu conservs. Il est galement recommand de faire une sauvegarde identique celle-ci une fois que lon aura russi congurer le systme correctement et que, thoriquement, il ny aura plus toucher aux chiers de conguration. Cette sauvegarde devra tre place sur une disquette ou un support amovible que lon conservera en lieu sr.

6.2. Mise lheure du systme


Les systmes dexploitation utilisent lheure pour un certain nombre de tches. En particulier, les chiers disposent de plusieurs dates (date de cration, date daccs et date de dernire modication), qui sont utilises par diffrents programmes. Les programmes de sauvegarde en font videmment partie, parce quils se basent sur les dates de modication des chiers pour dterminer quels sont les chiers qui doivent tre sauvegards depuis la dernire sauvegarde (cas des sauvegardes dites incrmentales ). Les programmes de maintenance sont galement lancs des dates prcises, et les applications normales des utilisateurs peuvent utiliser la date systme pour lintgrer dans leurs documents. En clair, il est important que votre systme soit lheure. En fait, il existe deux horloges dans votre systme. La premire horloge, qui est lhorloge de rfrence pour toutes les oprations effectues dans le systme, est lhorloge dite systme . Cette horloge est maintenue par le noyau grce un compteur qui est incrment rgulirement, sur la base dune interruption matrielle. La prcision de ce compteur est a priori la mme que celle de linterruption du timer matriel. Sur les PC, cette interruption a lieu, par dfaut, 18,6 fois par seconde, ce qui donne pour la plus petite unit de temps mesurable environ 1/20 de seconde (cependant, la plupart des systmes reprogramment la frquence de cette interruption 100 Hz environ). La deuxime horloge est lhorloge matrielle, qui est lhorloge qui maintient lheure de votre ordinateur pendant quil est teint. Cette horloge est couramment appele lhorloge CMOS, parce quelle est gre par un composant CMOS qui stocke toutes les informations permanentes du BIOS. Pour rpondre immdiatement une question (dsormais sans objet), prcisons que Linux na aucun problme vis--vis des dates critiques du changement de millnaire. En effet, les systmes Unix nutilisent quun seul format de date au niveau application : le nombre de secondes coules depuis le 01/01/1970 0 heure. Ce compteur est stock sur 32 chiffres binaires sur la plupart des machines et passe donc allgrement le cap de lan 2000. En fait, le dbordement de ce compteur est prvu pour 2038, mais naura jamais lieu car lapparition des processeurs 64 bits va porter, dici l, la taille de ce compteur 64 bits. Cela tant, il est possible que certaines applications mal crites nutilisent pas ce format de date, et ne soient donc pas compatibles. Heureusement, ce cas de gure est trs rare sous Unix. Bien entendu, le problme reste entier si lhorloge matrielle de votre PC nest pas compatible. Dans ce cas, la solution la plus simple est de rgler lheure systme chaque dmarrage, manuellement ou laide de scripts de correction de la date renvoye par lhorloge matrielle. La valeur du compteur de lhorloge systme est toujours interprte en temps universel ( UTC en anglais, abrviation de Universal Time Coordinated ), cest--dire le temps de rfrence valide dans le monde entier. Ce temps ne comprend pas les fuseaux horaires ni les rglementations concernant les heures dhiver et dt. Cette convention est utilise partout dans le systme, ce qui est la condition

112

Chapitre 6. Administration du systme de base sine qua non pour que tous les ordinateurs du monde utilisent la mme date et la mme heure. Ainsi, deux ordinateurs connects Internet peuvent communiquer sans se poser de questions quant leurs localisations respectives, ce qui simplie beaucoup les choses. Notez galement que le fait de compter le temps en secondes permet de saffranchir des conventions de dcoupage du temps et des calendriers utiliss dans chaque pays. Bien entendu, les dates prsentes lutilisateur doivent tre traduites en temps local, corrig des carts pour lheure dt et lheure dhiver. Cela est ralis par tous les programmes qui doivent afcher ces dates (par exemple, les simples commandes ls et date). Cette conversion est effectue par le systme en fonction du fuseau horaire et des plages de validit des horaires dt et dhiver. La solution la plus simple pour rgler la date et lheure de votre machine est donc de rgler lhorloge matrielle sur le temps universel, et de dnir le fuseau horaire dans lequel elle se trouve, pour que le systme puisse calculer lheure locale. Malheureusement, les systmes dexploitation de Microsoft ne voient pas la chose de la mme manire. Ils attendent que lhorloge matrielle soit rgle lheure locale. Par consquent, si Linux est install sur un ordinateur disposant dj de Windows, vous devrez rgler lheure de votre ordinateur en temps local. A priori, cela ne fait aucune diffrence, le systme tant galement capable de calculer le temps universel partir de lheure locale et de la zone horaire. Cependant, cela a un inconvnient : il est ncessaire de mettre lheure lhorloge systme en cas de dplacement de la machine, et chaque changement dhoraire dt ou dhiver. Bien sr, Windows est suppos tre capable de mettre jour lheure matrielle en observation avec lheure dt / dhiver . Mais il utilise pour cela des rgles qui sont xes dnitivement dans le systme et qui ne peuvent pas tre mises jour avec les rglementations locales (par exemple, la rgle de changement dheure a t modie en 1996, si bien que Windows 95 na jamais pu fonctionner correctement sur ce point...). Quoi quil en soit, la mise lheure dun systme Linux requiert la dnition de la zone horaire, la mise lheure du systme et la mise lheure de lhorloge matrielle. La dnition de la zone horaire est primordiale et doit avoir lieu avant toute autre opration, car le rglage des horloges dpend videmment de cette zone. Les zones horaires sont dnies par un ensemble de rgles, qui comprennent chacune la priode de validit de la rgle (en gnral avec une date de dpart et une date de n) et la diffrence entre le temps universel et le temps local lorsque cette rgle sapplique (gestion des horaires dt et dhiver compris). Toutes ces rgles portent le nom de la zone gographique dans laquelle elles sont valides. Vous pourrez trouver des exemples de dnitions de rgles (ainsi que lhistorique des conventions concernant le temps) dans le rpertoire timezone des sources de la bibliothque C GNU. Les chiers de rgles des zones horaires doivent tre compils avec le programme zic et installs dans le rpertoire /usr/share/zoneinfo. Normalement, votre systme dispose de la totalit des rgles, dj compiles, des diffrentes zones horaires du monde. Le programme zic permet galement de dnir la zone horaire active. Cette opration se fait dans les chiers de dmarrage de votre systme, avec une commande similaire la suivante :
zic -l zone

o zone est le chemin relatif du chier de dnition des rgles de la zone horaire locale, par rapport au rpertoire de base /usr/share/zoneinfo. Pour les systmes situs en France mtropolitaine, la commande utilise est donc celle-ci :
zic -l Europe/Paris

Une fois la zone horaire xe, il est possible de rgler lhorloge systme. Il existe deux solutions pour cela. La premire solution est dutiliser la commande systme date. Cette commande, appele sans paramtres, permet dobtenir la date systme, exprime en temps local. Mais elle permet galement

113

Chapitre 6. Administration du systme de base de modier la date et lheure systme avec loption -s. La syntaxe complte utilise est donne cidessous :
date -s "MM/JJ/AAAA HH:MM:SS"

Il nest pas ncessaire de prciser lanne si celle-ci ne doit pas tre change. De mme, vous pouvez ne donner que lheure, si la date du jour est correcte. En revanche, vous devez obligatoirement prciser lheure si vous changez la date. Notez que lheure doit tre donne en temps local, moins que loption -u ne soit prcise. Le systme rglera son horloge en temps universel automatiquement, selon les rgles de zones horaires en vigueur qui ont t indiques par zic. Vous pouvez obtenir lheure exacte en appelant le 3699. La deuxime solution est celle qui est utilise au dmarrage du systme. Elle consiste initialiser lhorloge systme partir de lhorloge matrielle. Cette opration se fait normalement laide de la commande clock (qui en fait est un lien symbolique vers hwclock, mais la commande Unix traditionnelle est clock). La syntaxe de cette commande est la suivante :
clock [-u] -s | -w | -a

Loption -s permet dinitialiser lhorloge systme partir de la date et de lheure stockes dans lhorloge matrielle. Cest typiquement cette commande qui est utilise dans les scripts de dmarrage du systme. Loption -w permet de raliser lopration inverse, cest--dire sauvegarder la date et lheure de lhorloge systme dans lhorloge matrielle. Elle nest en gnral utilise quaprs avoir remis lheure lhorloge systme. Loption -a permet, quant elle, de corriger lavance ou le retard que lhorloge matrielle peut prendre. Ce dernier point mrite quelques explications complmentaires. En fait, lhorloge matrielle nest pas extrmement prcise, et peut se dcaler petit petit de lheure relle. Heureusement, ce dcalage est constant, ce qui fait quil est possible de le mesurer et de le prendre en compte. Le programme clock utilise le chier /etc/adjtime pour enregistrer de combien est ce dcalage an de pouvoir effectuer les corrections. Le principe de fonctionnement est le suivant :

lors du premier rglage de lhorloge matrielle (avec loption -w), il enregistre linstant de ce rglage dans le chier /etc/adjtime ; lors des rglages suivants, il calcule le temps qui sest coul depuis le rglage prcdent, et le dcalage entre lheure de lhorloge matrielle et lheure laquelle celle-ci aurait d se trouver. Il enregistre ce dcalage et met jour la date de mise lheure (pour pouvoir refaire ce calcul ultrieurement) ; lorsquon lappelle avec loption -a, clock ajuste lhorloge matrielle. Pour cela, il regarde la date courante, calcule le temps coul depuis la dernire mise lheure ou le dernier ajustement, en dduit lavance ou le retard de lhorloge matrielle, et la remet lheure en consquence. Il enregistre galement la date de cet ajustement comme nouvelle date de mise lheure, an de ne pas faire deux fois lajustement pour cette priode la prochaine fois.

De cette manire, il est possible de maintenir lhorloge systme une valeur proche de la ralit (sans ce genre de mcanisme, il est courant de prendre 5 minutes dcart en trois ou quatre mois, ce qui est dj considrable). Les scripts dinitialisation de votre systme doivent donc certainement contenir au moins les deux lignes suivantes aprs le rglage de la zone horaire :

114

Chapitre 6. Administration du systme de base


# Ajuste lhorloge matrielle : clock -a # Initialise lhorloge systme : clock -s

Dans tous les cas, loption -u permet dindiquer que lhorloge matrielle est rgle en temps universel. Si votre machine ne dispose pas dautre systme que Linux, il est recommand de procder ainsi et dutiliser systmatiquement cette option.
Note : Il est important de dnir la zone horaire avec zic avant dutiliser clock. En effet, si lhorloge matrielle est rgle en temps local, clock ne pourra pas dterminer lheure en temps universel. Dautre part, clock initialise la structure de zone horaire interne noyau, que celui-ci utilise notamment pour lcriture des dates en temps local sur les systmes de chiers FAT (Eh oui, les dates des chiers des systmes de chiers FAT sont enregistres en temps local...). Sachez galement que lhorloge systme peut galement se dcaler sensiblement sur de longues priodes. videmment, ce phnomne ne peut se dtecter que si le systme reste actif suffisamment longtemps, ce qui en pratique ne se produit que dans les serveurs (noubliez pas que Linux peut fonctionner des mois sans interruption...). Si vous tes intress par la manire de resynchroniser lhorloge systme pour de telles congurations, vous devriez vous intresser la diffusion du temps sur le rseau Internet avec le protocole NTP ( Network Time Protocol ). En gnral, la resynchronisation de lheure systme doit se faire progressivement an de ne pas perturber la ligne du temps pour les applications. Cela peut tre fait avec le programme adjtimex.

6.3. Notion de niveau dexcution et amorage du systme


La plupart des systmes Unix utilisent la notion de niveau dexcution. Un niveau dexcution est un mode de fonctionnement dans lequel un certain nombre de services sont accessibles. En gnral, il existe 7 niveaux dexcution, dont seulement trois fournissent des services bien dnis pour quasiment toutes les distributions de Linux. Le niveau 0 correspond larrt du systme, et aucun service nest disponible ( part le redmarrage de la machine bien entendu...). Le fait de passer dans le niveau dexcution 0 correspond donc arrter le systme. Le niveau 6 correspond au redmarrage de la machine. Le fait de passer dans le niveau dexcution 6 revient donc arrter et redmarrer la machine. Le niveau dexcution 1 correspond au mode de fonctionnement monoutilisateur (encore appel mode de maintenance). Ce niveau dexcution fournit les services de base pour un seul utilisateur (normalement ladministrateur du systme). Dans ce niveau dexcution, ladministrateur peut changer la conguration et effectuer les tches de maintenance les plus critiques (par exemple, vrier le systme de chiers racine). La signication des autres niveaux dexcution dpend de la distribution que vous utilisez mais en gnral le niveau dexcution 2 correspond au mode multiutilisateur avec rseau mais sans XWindow, et le niveau dexcution 3 ou 4 correspond au mode multiutilisateur avec login graphique sous XWindow. Les autres niveaux restent votre disposition. Le programme en charge de grer les niveaux dexcution est le programme init. Ce programme est le premier programme lanc par le noyau aprs quil a t charg et dmarr par le gestionnaire damorage ( savoir, en gnral, LILO ou le GRUB). Ce programme ne peut pas tre dtruit ou arrt, et cest rellement le processus pre de tous les autres dans le systme. Le rle fondamental dinit est de grer les changements de niveau dexcution, mais il soccupe galement des tches de

115

Chapitre 6. Administration du systme de base base concernant la gestion des autres processus. En particulier, il permet de supprimer les processus zombies.
Note : Un processus zombie est un processus qui vient de se terminer et dont aucun processus na lu le code de retour. De tels processus apparaissent gnralement lorsque leur processus pre se termine avant eux car, gnralement, cest toujours le processus pre qui lit le code de retour de ses processus ls.

Il suft dutiliser la syntaxe suivante pour forcer le changement de niveau dexcution :


init niveau

o niveau est le niveau dexcution atteindre. Cela dit, cette manire de faire est assez rare, car en gnral on na pas besoin de changer de niveau dexcution, sauf pour arrter et redmarrer la machine. Mais pour ces oprations, les commandes shutdown, halt et reboot sont dj disponibles. Le niveau dexcution dans lequel le systme doit se placer lors de son dmarrage peut galement tre prcis en paramtre du noyau lors du dmarrage. Vous devrez donc utiliser une commande semblable celle-ci : LILO boot:linux niveau si vous utilisez LILO, ou kernel noyau niveau si vous utilisez le GRUB pour dmarrer le noyau noyau Linux dans le niveau dexcution niveau. Ainsi, pour passer en mode monoutilisateur (cest--dire le mode de maintenance), il suft de taper la commande suivante lamorage de LILO :
LILO boot:linux 1

ou la commande suivante sur la ligne de commande interactive du GRUB :

kernel /boot/vmlinuz 1

Note : Il est galement possible dutiliser le paramtre single, qui est synonyme du niveau dexcution 1.

Le comportement dinit est dni dans le chier de conguration /etc/inittab. Ce chier contient la description des niveaux dexcution, le niveau par dfaut dans lequel le systme se place au dmarrage, et les actions quinit doit effectuer lorsque certains vnements arrivent. En particulier, il est indiqu quels sont les scripts qui doivent tre excuts lors du changement de niveau dexcution. Il est fortement, mais alors trs fortement dconseill de toucher au chier /etc/inittab pour des raisons bien videntes. Vous trouverez de plus amples renseignements dans les pages de manuel dinit et dinittab. Lorsquon change de niveau dexcution, ainsi quau dmarrage du systme, des scripts de conguration sont appels. Comme on la vu, ces scripts sont spcis dans le chier /etc/inittab. En gnral, ils sont tous placs dans le rpertoire /etc/rc.d/ (ou /sbin/init.d/, selon votre distribution). Ce rpertoire contient donc :

le script excut lors du dmarrage du systme ; les scripts excuts lors de la sortie dun niveau dexcution ;

116

Chapitre 6. Administration du systme de base

les scripts excuts lors de lentre dans un niveau dexcution.

Le script appel lors du dmarrage du systme est en gnral spci directement dans /etc/inittab. Vous pouvez y ajouter les commandes spciques votre systme, comme par exemple les commandes de conguration du matriel. Ce chier nest excut quune seule fois et est plac directement dans /etc/rc.d/ (ou dans /sbin/init.d/). En revanche, les scripts appels lors du changement de niveau dexcution sont souvent placs dans des sous-rpertoires du rpertoire rc.d ou init.d. Ils sont classs raison dun rpertoire par niveau dexcution. Ces sous-rpertoires portent le nom de rc0.d, rc1.d, rc2.d, etc. pour les diffrents niveaux dexcution. En fait, un seul script est excut par init lorsquon change de niveau dexcution, et ce script se charge dexcuter les bons scripts dans les sous-rpertoires de rc.d ou init.d. Classiquement, ce script principal est appel avec le numro du niveau dexcution en paramtre, et il commence par appeler les scripts de sortie du niveau dexcution courant, puis les scripts dentre dans le nouveau niveau dexcution. La distinction entre les scripts dentre et de sortie dans chaque rpertoire rc?.d se fait par la premire lettre du script. Sur certaines distributions, la lettre K correspond aux scripts de sortie et la lettre S au script dentre (ces deux lettres correspondent respectivement aux mots anglais Kill et Start ). De plus, lordre dans lequel ces scripts doivent tre excuts est indiqu par le nombre suivant cette lettre dans le nom du script. Cela dit, ces conventions peuvent varier selon votre distribution. Consultez votre documentation pour plus de dtails ce sujet. Il est assez courant que les rpertoires rc?.d ne contiennent que des liens symboliques vers les chiers de scripts, et que ceux-ci soient tous placs directement dans le rpertoire /etc/rc.d/ (ou /sbin/init.d/). La raison en est quun mme script peut tre utilis pour diffrents niveaux dexcution, et quil na donc pas de raison dtre dans le rpertoire dun niveau plutt que celui dun autre. De mme, il est assez courant que chacun de ces scripts gre la fois lentre et la sortie du niveau dexcution, selon le paramtre quil reoit lors de son appel. Parmi les paramtres les plus courants, on retrouve les suivants :
start, stop,

pour le dmarrage du service correspondant ;

pour son arrt.

Ce sont les deux paramtres que le script de contrle de changement de niveau dexcution (celui appel par init et enregistr dans /etc/inittab) utilisera lors de lentre et de la sortie du niveau dexcution. Il existe dautres paramtres, comme par exemple restart, pour redmarrer le service correspondant. De cette manire, vous pouvez ajouter ou supprimer des services simplement dans chaque niveau dexcution. Il suft dcrire un chier script capable de prendre en paramtre laction raliser sur le service (start ou stop), de le placer dans /etc/rc.d/ (ou /sbin/init.d/) et de crer les liens dans les sous-rpertoires /etc/rc.d/rc?.d/ (ou /sbin/init.d/rc?.d/). Ds lors, votre service sera arrt ou redmarr selon le niveau dexcution dans lequel passera le systme. La rdaction des scripts shells de conguration dpasse largement le cadre de ce document, de mme que la conguration du comportement du systme chaque changement de niveau dexcution. La description qui tait donne ici permet simplement davoir une ide plus claire de la manire dont le systme se comporte au dmarrage et larrt. Consultez la documentation de votre distribution pour plus de dtails ce sujet.

117

Chapitre 6. Administration du systme de base

6.4. Maintenance des systmes de chiers


La gestion des systmes de chiers par Linux est extrmement volue, car il est capable de prendre en charge plusieurs types de systmes de chiers diffrents. Ces systmes de chiers doivent subir lopration de montage avant de pouvoir tre utiliss. Le montage est lopration qui consiste associer un rpertoire au point dentre dun systme de chiers. Les donnes de ce systme sont alors accessibles partir de ce rpertoire. Lopration de montage permet de raliser une abstraction du support des systmes de chiers, qui peuvent donc se trouver aussi bien sur disque quen mmoire ou que sur un rseau, mais peut se rvler ennuyante pour les systmes de chiers couramment utiliss. Cest pour cette raison quil existe un mcanisme de montage automatique pour les systmes de chiers les plus utiliss. Cette section vous prsentera les oprations de base sur les systmes de chiers sur disque, car ce sont les plus courants. Vous y trouverez la description de la manire de procder pour vrier un systme de chiers et pour monter automatiquement les systmes de chiers les plus utiliss au dmarrage du systme. En revanche, la description des systmes de chiers rseau sera donne dans le chapitre traitant de la conguration rseau.

6.4.1. Vrication des systmes de chiers


La vrication des systmes de chiers est une opration que lon ne devrait jamais avoir faire. Il y a plusieurs raisons cela. Premirement, si lon arrte le systme correctement avant dteindre la machine, les systmes de chiers sont dmonts et ils sont dans un tat correct. Deuximement, les systmes de chiers Unix sont rputs pour tre trs ables. Troisimement, une vrication priodique est faite par le systme au bout dun certain nombre de dmarrages. Quatrimement, si un systme de chiers nest pas dmont correctement avant larrt du systme, celui-ci sera vri automatiquement au dmarrage suivant, ce qui fait quil ny a pas lieu de le faire soi-mme. Enn, pour les systmes de chiers journaliss tels que EXT3 ou ReiserFS, cette opration peut tre ralise trs rapidement laide des informations qui sont stockes dans le journal des transactions du systme de chiers. Toutefois, mme le meilleur systme du monde ne saurait tre labri des secteurs dfectueux du disque dur sur lequel il est install. Il est donc parfois ncessaire deffectuer une vrication manuelle des systmes de chiers, et il faut savoir le faire mme quand plus rien ne fonctionne. Un systme de chiers ne se manipule que lorsquil est dmont. Cela pose videmment quelques problmes pour le systme de chiers racine, puisquon ne peut pas accder aux outils de vrication sans le monter. Pour ce systme de chiers, il ny a donc que deux possibilits :

soit on utilise une disquette de dmarrage contenant les outils de vrication et de rparation des systmes de chiers ; soit on monte le systme de chiers racine en lecture seule.

La deuxime solution est la seule ralisable si lon ne dispose pas de disquette de dmarrage. Par consquent, cest cette mthode qui sera dcrite ici. La premire tape consiste passer en mode mono utilisateur, an de sassurer que personne ni aucun programme naccde au systme de chiers racine en criture. Pour cela, il suft de taper la commande suivante :
init 1

qui fait passer le systme dans le niveau dexcution 1. On peut galement passer le paramtre single au noyau lors de lamorage du systme, comme il la t expliqu dans le paragraphe prcdent.

118

Chapitre 6. Administration du systme de base Ensuite, il faut sassurer que le systme de chiers racine est en lecture seule, ce qui se fait avec la commande suivante :
mount -n -o remount,ro /

Loption remount permet de dmonter et de remonter le systme de chiers racine, et loption ro indique quil doit tre remont en lecteur seule ( ro signie Read Only ). Les options sont spares par des virgules (attention, il ne faut pas insrer despace). De plus, loption -n indique mount quil ne doit pas crire dans le chier /etc/mtab lorsquil aura remont le systme de chiers, parce que ce chier sera alors galement en lecture seule et quon ne pourra pas y crire. Ce chier est utilis par mount pour mmoriser les systmes de chiers qui sont monts, an de pouvoir en donner la liste (ce que la commande mount fait lorsquelle est appele sans paramtres) et de permettre la commande umount de vrier que les systmes de chiers dmonter ne le sont pas dj.
Note : Normalement, le noyau monte toujours le systme de chiers racine en lecture seule lors de lamorage. Ce sont les scripts de dmarrage du systme, lancs par init, qui le remontent en lecture / criture sil est dans un tat correct. Il est donc fortement probable, si votre systme ne dmarre plus correctement, que le systme de chiers racine soit dj en lecture seule aprs un dmarrage en mode de maintenance. La commande prcdente nest donc dcrite qu titre indicatif.

Lorsque le systme de chiers racine sera mont en lecture seule, on pourra utiliser le programme fsck an de le vrier et ventuellement le rparer. En ralit, ce programme ne fait rien dautre que dappeler un programme spcique pour chaque systme de chiers. Par exemple, pour les systmes de chiers EXT2 et EXT3, fsck appelle le programme e2fsck, qui est capable de vrier et de rparer ce type de systme de chiers. La ligne de commande utiliser pour vrier un systme de chiers avec fsck est la suivante :
fsck -a fichier

o fichier est le chier spcial du priphrique ou le chier image contenant le systme de chiers vrier. Il faut donc, gnralement, spcier la partition sur laquelle le systme de chiers racine se trouve. Loption -a demande fsck deffectuer les ventuelles corrections automatiquement en cas derreur sur le systme de chiers ainsi vri, sans conrmation de la part de lutilisateur. Il est galement possible de demander la vrication de tous les systmes de chiers enregistrs dans le chier de conguration /etc/fstab. Pour cela, il faut ajouter loption -A :
fsck -a -A

La syntaxe du chier de conguration /etc/fstab sera dcrite dans la section suivante. Il nest videmment plus ncessaire de spcier le chier spcial du priphrique contenant le systme de chiers vrier, puisque tous les systmes de chiers enregistrs dans le chier /etc/fstab seront vris. Si le disque dur contient des secteurs dfectueux, il peut tre ncessaire de les marquer comme tels dans les structures du systme de chiers an de ne pas les utiliser par la suite. De manire gnrale, la recherche de ces blocs peut tre faite laide du programme badblocks. Cette commande effectue un test de lecture de tous les blocs du disque sur lequel le systme de chiers se trouve, et gnre une liste des blocs dfectueux. Vous pouvez lappeler directement et fournir cette liste au programme e2fsck laide de son option -l, mais le plus simple est encore de demander e2fsck dappeler

119

Chapitre 6. Administration du systme de base badblocks lui-mme. Pour cela, il suft de lui passer loption -c, ce qui se fait en faisant prcder cette option dun double-tiret dans la ligne de commande de fsck :
fsck -a -- -c priphrique

Note : Loption -c est spcique e2fsck et peut ne pas fonctionner avec dautres systmes de chiers. En particulier, certains systmes de chiers ne sont pas capable de grer correctement les blocs dfectueux des disques durs. Cest le cas du systme de chiers ReiserFS. Le programme badblocks peut galement effectuer un test dcriture sur le disque dur, si on lui communique loption -w. Il va de soi que ce type de test est destructif, car toutes les donnes du disque sont alors crases par des motifs particuliers. Il ne faut donc jamais utiliser cette option sur un systme de chiers existant !

De manire gnral, il vaut mieux prvenir que gurir, aussi est-il recommand dutiliser la commande badblocks au moins une fois avant dutiliser un systme de chiers. Cette vrication peut tre ralise de manire automatique lors de la cration du systme de chiers laide de loption -c de la commande mke2fs. Une fois que vous aurez termin la vrication du systme de chiers, vous pourrez le remonter en lecture et criture avec la commande suivante :
mount -n -o remount,rw /

Cette commande est similaire celle que lon a vue pour monter le systme de chiers en lecture seule, ceci prs que loption rw est utilise la place de loption ro. Cette option permet de remonter le systme de chiers en lecture et en criture ( rw est labrviation de langlais Read Write ).

6.4.2. Conguration du montage des systmes de chiers


Le montage des systmes de chiers est une opration assez fastidieuse. Heureusement, elle peut tre automatise pour les systmes de chiers situs sur les disques xes, et simplie pour les systmes de chiers amovibles. Pour cela, il faut enregistrer ces systmes de chiers dans le chier de conguration /etc/fstab. Ce chier contient une ligne pour chaque systme de chiers. Ces lignes contiennent plusieurs champs spars par des espaces. Les informations suivantes sont enregistres dans ces champs :

le chier spcial permettant daccder au systme de chiers ; le rpertoire servant de point de montage par dfaut ; le type du systme de chiers ; les options de montage pour ce systme de chiers ; un entier indiquant si le systme de chiers doit tre sauvegard ; un entier indiquant lordre que ce systme de chiers doit avoir dans la liste des systmes de chiers vrier.

120

Chapitre 6. Administration du systme de base Grce ces informations, lemploi de la commande mount est plus simple :
mount priphrique

ou :
mount rpertoire

o priphrique est le chier spcial de priphrique contenant le systme de chiers monter, et rpertoire est le rpertoire servant de point de montage indiqu dans le chier /etc/fstab. Il est possible dutiliser indiffremment le chier spcial de priphrique ou le rpertoire du point de montage. Le type du systme de chiers est lun des types disponibles accepts par la commande mount. Consultez la page de manuel de cette commande pour plus de renseignements ce sujet. Les principales options disponibles pour le montage sont les suivantes :

loption defaults, qui permet de choisir les options par dfaut pour ce systme de chiers ; loption auto, qui permet de faire en sorte que le systme de chiers soit mont automatiquement au dmarrage du systme ; loption user, qui permet dautoriser le montage de ce systme de chiers par les utilisateurs ; loption ro, qui permet de monter le systme de chiers en lecture seule ; loption rw, qui permet de monter le systme de chiers en lecture et criture ; loption exec, qui permet dautoriser lexcution des chiers excutables sur ce systme de chiers ; loption uid=utilisateur, qui permet de spcier le numro utilisateur de lutilisateur propritaire du rpertoire racine de ce systme de chiers ; loption gid=groupe, qui permet de spcier le numro groupe du groupe dutilisateurs auquel le rpertoire racine du systme de chiers appartient ; loption mode=valeur, qui permet de xer les droits sur le rpertoire racine du systme de chiers monter. La valeur valeur est donne en octal ; loption umask=valeur, qui permet de xer les droits sur les chiers qui ne sont pas grs par le systme de chiers. La valeur valeur est donne en octal.

Par dfaut, les utilisateurs nont pas le droit de monter et de dmonter les systmes de chiers. Loption user permet de dsactiver cette protection. Elle peut tre utile pour permettre le montage et le dmontage des disquettes et des CD-ROM. De mme, lexcution des chiers excutables nest par dfaut pas autorise sur les systmes de chiers. Cette restriction permet dviter lexcution de programmes placs sur des systmes de chiers de systmes dexploitation diffrents. Elle peut tre leve grce loption exec. Tous les systmes de chiers disposant de loption auto seront monts automatiquement au dmarrage du systme par la commande mount -a. Les autres systmes de chiers sont montables manuellement, avec les autres options indiques dans le chier /etc/fstab. Les options ro et rw permettent dindiquer mount si le systme de chiers doit tre mont en lecture seule ou en lecture et criture. Les systmes de chiers devant tre rpars doivent tre monts en lecture seule si lon ne peut pas les dmonter (cest le cas notamment du systme de chiers racine). Il en va de mme pour les CD-ROM, car on ne peut bien entendu pas crire dessus.

121

Chapitre 6. Administration du systme de base Les options uid et gid permettent de spcier le propritaire et le groupe du rpertoire racine du systme de chiers monter. Par dfaut, cest lutilisateur root qui devient propritaire de ce systme de chiers. Enn, loption mode permet de spcier les droits daccs sur tous les chiers du systme de chiers monter. Loption umask permet quant elle de xer les droits qui ne sont pas grs par le systme de chiers. Ce peut tre utile pour les systmes de chiers FAT et FAT32. Il est ainsi possible de donner les droits de lecture et dexcution pour les chiers de ces systmes avec une valeur de masque nulle. Cela permet de monter les systmes de chiers FAT et FAT32 de telle sorte que tous les chiers appartiennent lutilisateur root par dfaut, et de donner cependant tous les droits tous les utilisateurs sur ces chiers. On prendra garde ces options, car elles permettent quiconque dcrire des chiers sous le nom de root, et donc constituent un grave dfaut dans la scurit du systme. Les deux derniers champs de /etc/fstab spcient des options pour des programmes annexes. Lavant-dernier contrle le comportement du programme de sauvegarde dump, et le dernier celui du programme de vrication de systme de chiers fsck. Consultez les pages de manuel pour plus de dtails ce sujet. Si vous disposez de systmes de chiers FAT ou FAT32, vous pourrez monter ces partitions automatiquement lors du dmarrage du systme. Comme les systmes de chiers bass sur la FAT ne peuvent pas grer les droits des utilisateurs, vous allez devoir faire un choix pour xer ces droits une valeur raisonnable. Vous pouvez par exemple donner le droit de lecture tous les utilisateurs, mais le droit dcriture uniquement ladministrateur systme. La ligne ajouter dans le chier /etc/fstab sera alors la suivante :
/dev/partition rpertoire vfat auto,exec 0 0

o partitition est la partition contenant le systme de chiers FAT, et rpertoire est le rpertoire servant de point de montage pour cette partition. Cette ligne permettra de monter automatiquement ce systme de chiers en tant que FAT32 au dmarrage du systme. Les chiers binaires seront excutables, bien quils ne soient pas stocks sur un systme de chiers EXT2. Si vous voulez laisser les droits dcriture aux utilisateurs, vous pouvez utiliser la ligne suivante la place de celle indique ci-dessus :
/dev/partition rpertoire vfat auto,umask=0 0 0

Cette ligne permet de monter le systme de chiers FAT en laissant les droits dexcution et dcriture aux utilisateurs. Cependant, aucun chier excutable de ce systme de chiers ne pourra tre lanc, car loption exec na pas t prcise. Par ailleurs, certaines distributions spcient des options incorrectes pour le systme de chiers /dev/pts/ dans le chier /etc/fstab. Veuillez vous assurer que la ligne utilise pour ce systme de chiers est bien identique la ligne suivante :
none /dev/pts devpts auto,gid=5,mode=620 0 0

Si ce nest pas le cas, certains mulateurs de terminaux dvelopps rcemment ne fonctionneront pas correctement. Le systme de chiers /dev/pts/ est en effet un systme de chiers virtuel, gr directement par le noyau, dans lequel des chiers spciaux de priphriques utiliss par les mulateurs de terminaux sont placs. Si les droits ne sont pas correctement xs sur le rpertoire racine de ce systme de chiers, les mulateurs de terminaux utilisant cette fonctionnalit ne pourront se connecter au systme que sous le compte root. Il faut donc imprativement corriger cette ligne, si vous voulez que les utilisateurs normaux puissent utiliser ces mulateurs. Notez galement quil faut que tout le

122

Chapitre 6. Administration du systme de base monde ait les droits dcriture et de lecture sur le chier spcial de priphrique /dev/ptmx pour que les utilisateurs non privilgis puissent utiliser ce systme de chiers virtuel. Vous devrez galement ajouter le systme de chiers virtuel /dev/shm/ dans votre chier /etc/fstab. Ce systme de chiers permet aux applications qui le dsirent dutiliser des segments de mmoire partage de manire compatible avec la norme POSIX, par exemple pour raliser des communications inter-processus. Ce systme de chiers permet en effet de crer des chiers qui sont directement stocks dans la mmoire virtuelle et qui peuvent tre ouverts par plusieurs processus simultanment, ce qui permet dutiliser les fonctionnalits classiques de partage de chiers pour partager des zones de mmoire entre plusieurs processus. Ce type de communication peut tre utilis par des processus courants, aussi faut-il vous assurer que la ligne suivante se trouve bien dans la chier fstab :
tmpfs /dev/shm tmpfs defaults 0 0

Bien entendu, vous devrez crer le point de montage /dev/shm/ si celui-ci nexiste pas avant de monter ce systme de chiers virtuels. Enn, si vous utilisez des priphriques USB, vous pouvez monter le systme de chiers virtuel /proc/bus/usb/ en ajoutant la ligne suivante dans le chier fstab :
none /proc/bus/usb usbdevfs defaults 0 0

Cette ligne doit tre place aprs celle qui effectue le montage du systme de chiers virtuel /proc/.

6.5. Gestion des utilisateurs et de la scurit


La rgle de scurit numro un sous Unix est de ne jamais travailler dans le compte root. En effet, ce compte dispose de tous les droits, et la moindre erreur de la part de lutilisateur dans ce compte peut endommager non seulement ses propres donnes, mais galement lensemble du systme dexploitation. De plus, le fait de ne pas travailler sous le compte root restreint un seul utilisateur les dgts que pourraient faire un ventuel virus ou programme dfectueux. Lune des premires tapes dans linstallation dun systme est donc de crer un compte utilisateur normal, qui devra tre utilis pour le travail quotidien. Le compte root ne doit donc tre rserv quaux tches dadministration, et toute opration ralise sous cette identit doit tre contrle deux fois avant dtre effectivement lance. Les programmes dinstallation des distributions demandent donc toujours un mot de passe pour protger le compte root et le nom et le mot de passe pour au moins un compte utilisateur standard aprs une nouvelle installation. Ces mmes programmes dinstallation peuvent tre utiliss par la suite pour ajouter de nouveaux utilisateurs dans le systme. Il est dailleurs recommand de les utiliser ds quune telle opration doit tre effectue. Cela dit, il est bon de connatre la manire dont les utilisateurs sont grs dans les systmes Unix, aussi une approche plus bas niveau sera-t-elle adopte dans cette section.

6.5.1. Mcanismes dauthentication des utilisateurs


La scurit des systmes Unix repose fondamentalement sur les mcanismes dauthentication des utilisateurs. Ces mcanismes visent sassurer que chacun est bien celui quil prtend tre, an de donner chacun les droits daccs aux diffrents services du systme en fonction de ses privilges. Laccs aux services du systme repose donc sur deux oprations essentielles : lidentication et lauthentication. Lopration didentication consiste annoncer qui lon est, an de permettre

123

Chapitre 6. Administration du systme de base au systme de dterminer les droits auxquels on a droit, et lopration dauthentication consiste prouver quon est bien celui quon prtend tre. Le systme refuse ses services tout utilisateur inconnu (cest--dire qui sest identi sous un nom inconnu) ou qui na pas pass avec succs la phase dauthentication. En interne, les systmes Unix identient les utilisateurs par un numro qui est propre chacun, son UID (abrviation de langlais User IDentier ), mais il existe une correspondance entre cet UID et un nom dutilisateur plus humainement lisible. Ce nom est classiquement appel le login , en raison du fait que cest la premire chose que le systme demande lorsquon cherche accder ses services, pendant lopration dite de login. Lauthentication des utilisateurs se fait classiquement par mot de passe, bien que dautres mcanismes soient possibles en thorie. Laccs au systme se passe donc toujours de la manire suivante :

le systme demande lutilisateur son nom (cest--dire son login) ; il demande ensuite son mot de passe ; il vrie la validit du couple (login / mot de passe) pour dterminer si lutilisateur a le droit de lutiliser ; et, si lutilisateur est connu et sest correctement authenti, le programme qui a ralis lauthentication prend lidentit et les privilges de lutilisateur, xe son environnement et ses prfrences personnelles, puis lui donne accs au systme.

Lexemple classique de ces oprations est tout simplement lopration de login sur une console : le programme getty de gestion de la console demande le nom de lutilisateur, puis passe ce nom au programme login qui lauthentie en lui demandant son mot de passe. Si lauthentication a russi, il prend lidentit de cet utilisateur et lance son shell prfr. La suite des oprations dpend du shell. Sil sagit de bash, le chier de conguration /etc/profile est excut (il sagit donc du chier de conguration dans lequel toutes les options communes tous les utilisateurs pourront tre places par ladministrateur), puis les chiers de conguration ~/.bash_profile et ~/.bashrc sont excuts. Ces deux chiers sont spciques chaque utilisateur et permettent chacun dentre eux de spcier leurs prfrences personnelles. Le chier ~/.bash_profile nest excut que lors dun nouveau login, alors que le chier ~/.bashrc est excut chaque nouveau lancement de bash. Bien entendu, ces oprations ncessitent que des informations relatives aux utilisateurs soient stockes dans le systme. Historiquement, elles taient effectivement stockes dans le chier de conguration /etc/passwd. Cela nest, en gnral, plus le cas. En effet, cette technique se rvle peu pratique lorsque plusieurs ordinateurs en rseau sont accds par des utilisateurs itinrants. Dans ce genre de conguration, il est courant de recourir un service rseau permettant de rcuprer les informations concernant les utilisateurs partir dun serveur centralis. Plusieurs solutions existent actuellement (NIS, LDAP, etc.), mais elles fonctionnent toutes plus ou moins selon le mme principe. De plus, mme pour des machines isoles, le chier /etc/passwd ne contient plus que les informations publiques sur les utilisateurs. Les informations utilises pour lauthentication sont dsormais stockes dans un autre chier de conguration, qui nest lisible que pour lutilisateur root : le chier /etc/shadow. La raison premire de procder ainsi est dviter que des utilisateurs malicieux puissent casser les mots de passe.
Note : Les mots de passe nont jamais t stocks en clair dans le chier passwd. Le mcanisme dauthentication repose en effet sur une fonction de cryptage sens unique, qui ne dispose donc pas de fonction inverse permettant de dcrypter un mot de passe crypt. Lorsquun utilisateur saisit son mot de passe, celui-ci est crypt de la mme manire que lorsquil la dni initialement, et cest le rsultat du texte crypt qui est compar avec ce qui se trouve dans le

124

Chapitre 6. Administration du systme de base


chier /etc/passwd ou le chier /etc/shadow. Ainsi, il est ncessaire de connatre le mot de passe en clair pour authentier lutilisateur, mais aucun moment ce mot de passe nest stock sur le disque dur. Cela dit, mme si le dcryptage des mots de passe est quasiment impossible, la connaissance des mots de passe crypts peut tre dune aide prcieuse. Un intrus potentiel peut essayer de crypter tous les mots de passe possibles et imaginables laide dun dictionnaire ou de mots de passe probablement choisis par les utilisateurs peu inventifs, et comparer le rsultat de tous ces mots de passe crypts avec ce qui se trouve dans le chier de mot de passe. Sil y a une correspondance, lintrus pourra pntrer le systme et tenter dutiliser dautres failles pour acqurir les droits de lutilisateur root. Cette technique, dite attaque du dictionnnaire, est tout fait ralisable, dune part parce que la puissance des machines actuelles permet de crypter un nombre considrable de mots de passe la seconde, et dautre part parce que bon nombre de personnes utilisent des mots de passe triviaux (leur date de naissance, le nom de leur chien, etc.) facilement devinables et testables. Cest pour cette raison que le chier de conguration /etc/shadow a t introduit : tant lisible uniquement par lutilisateur root, un pirate ne peut pas comparer ses mots de passe crypts avec ceux du systme. Il doit donc les essayer un un, ce qui peu en dcourager plus dun...

La technique dauthentication par mot de passe peut paratre relativement primitive, lheure o les cartes puce sont lgions et o lon commence voir apparatre des scanners dempreintes digitales. En fait, cest une bonne solution, mais qui ne saurait en aucun cas tre exhaustive en raison des problmes mentionns ci-dessus. Lidal est donc dutiliser plusieurs systmes dauthentication en srie, ce qui laisse libre cours un grand nombre de possibilits. Il est vident que la technique des mots de passe traditionnellement utilise sur les systmes Unix nvoluera pas aisment vers de nouveaux mcanismes dauthentication. Cest pour cela que les programmes devant raliser une opration dauthentication ou de gestion des utilisateurs de manire gnrale ont t modis pour utiliser la bibliothque PAM (abrviation de langlais Pluggable Authentication Modules ). Cette bibliothque permet de raliser les oprations didentication et dauthentication de manire externe aux programmes qui lutilisent, et se base pour ces oprations des chiers de conguration et des modules dynamiquement chargeables. Ainsi, grce la bibliothque PAM, ladministrateur peut dnir avec prcision les diffrentes oprations ralises pour identier et authentier les utilisateurs, sans avoir modier les programmes qui ont besoin de ces fonctionnalits. De plus, il est possible dajouter de nouveaux modules au fur et mesure que les besoins voluent, et de les intgrer simplement en modiant les chiers de conguration. De nos jours, la plupart des distributions utilisent la bibliothque PAM. Bien entendu, il existe des modules qui permettent de raliser les oprations didentication et dauthentication Unix classiques, et ce sont ces modules qui sont utiliss par dfaut. Nous verrons le format des chiers de conguration de la bibliothque PAM plus en dtail dans les sections suivantes.
Note : Les mcanismes dcrits ici ne sont srs que dans le cadre dune connexion sur un terminal local. Cela dit, il faut bien prendre conscience que la plupart des applications rseau sont de vritables passoires ! En effet, ils utilisent des protocoles qui transmettent les mots de passe en clair sur le rseau, ce qui implique que nimporte quel pirate peut les capter en moins de temps quil nen faut pour le dire. Les protocoles applicatifs suivants sont rputs pour tre non srs et ne devront donc JAMAIS tre utiliss sur un rseau non sr (et donc, plus forte raison, sur Internet) :
TELNET, qui permet deffectuer des connexions distance : FTP, qui permet de transfrer et de rcuperer des chiers sur une machine distante ; POP3, qui permet de consulter son mail ;

125

Chapitre 6. Administration du systme de base


SMTP, qui permet denvoyer des mails un serveur de messagerie ; X, qui permet aux applications graphiques dafcher leurs fentres sur un terminal X.

Cette liste nest pas exhaustive mais regroupe dj les protocoles rseau des applications les plus utilises. La scurisation de ces protocoles ne peut se faire quen les encapsulant dans un autre protocole utilisant un canal de communication crypt. Lun des outils les plus courant pour cela est sans doute ssh. Cet outil sera dcrit dans la Section 9.2.8.4 du chapitre traitant du rseau.

6.5.2. Cration et suppression des utilisateurs


La cration dun nouvel utilisateur est une opration extrmement facile. Il suft simplement de lui crer un rpertoire personnel dans le rpertoire /home/ et de le dnir dans le chier de conguration /etc/passwd. Si votre systme utilise les shadow passwords, ce qui est probable, il faut galement dnir cet utilisateur dans le chier de conguration /etc/shadow. De plus, il faut ajouter cet utilisateur dans au moins un groupe dutilisateurs dans le chier /etc/group. Le chier de conguration /etc/passwd est constitu de plusieurs lignes, raison dune ligne par utilisateur. Chaque ligne est constitue de plusieurs champs, spars par deux points (caractre :). Ces champs contiennent respectivement le login de lutilisateur, son mot de passe crypt, son identiant numrique, lidentiant numrique de son groupe principal, son nom complet ou un commentaire, le chemin de son rpertoire personnel et le chemin sur son interprteur de commandes favori. Si le champ du mot de passe contient un astrisque, le compte est dsactiv. Sil est vide, le mot de passe est stock dans le chier /etc/shadow. Le chier de conguration /etc/shadow a une syntaxe similaire celle de /etc/passwd, mais contient les champs suivants : le login de lutilisateur, son mot de passe crypt, le nombre de jours depuis que le mot de passe a t dni (compts partir du premier janvier 1970), le nombre de jours aprs cette date attendre avant que le mot de passe puisse tre chang, le nombre de jours au del duquel le mot de passe doit obligatoirement tre chang, le nombre de jours avant la date dexpiration de son mot de passe pendant lesquels lutilisateur doit tre averti que son mot de passe va expirer, le nombre de jours attendre avant de dsactiver le compte aprs lexpiration du mot de passe, et le nombre de jours depuis que le compte est dsactiv, compts depuis le premier janvier 1970. Il est possible de supprimer lobligation pour les utilisateurs de changer rgulirement de mot de passe en donnant un nombre de jours minimum suprieur au nombre de jours maximum avant le changement de mot de passe. Enn, le chier de conguration /etc/group, dans lequel les groupes dutilisateurs sont dnis, ne dispose que des champs suivants : le nom du groupe, son mot de passe (cette fonctionnalit nest plus utilise), son identiant numrique, et la liste des utilisateurs qui y appartiennent, spars par des virgules. Bien entendu, tous ces champs ne doivent pas tre modis la main. La commande useradd permet de dnir un nouvel utilisateur simplement. Cette commande suit la syntaxe suivante :
useradd [-c commentaire] [-d rpertoire] [-e expiration] [-f inactivit] \ [-g groupe] [-G groupes] [-m [-k modle]] [-p passe] [-s shell] [-u uid [-o]] login

126

Chapitre 6. Administration du systme de base Comme vous pouvez le constater, cette commande prend en paramtre le login de lutilisateur, cest-dire le nom quil devra utiliser pour sidentier sur le systme, et un certain nombre doptions complmentaires. Ces options sont rcapitules dans le tableau suivant : Option
-c -d -e -f

Signication Permet de dnir le champ commentaire du chier de mot de passe. Permet de xer le rpertoire personnel de lutilisateur. Permet de xer la date dexpiration du compte. Cette date doit tre spcie au format AAAA-MM-JJ. Permet de dnir le nombre de jours avant que le compte ne soit dsactiv une fois que le mot de passe est expir. La valeur -1 permet de ne jamais dsactiver le compte. Permet de dnir le groupe principal auquel lutilisateur appartient. Il sagit souvent du groupe users. Permet de donner la liste des autres groupes auxquels lutilisateur appartient. Cette liste est constitue des noms de chacun des groupes, spars par des virgules. Permet de forcer la cration du rpertoire personnel de lutilisateur. Les chiers du modle de rpertoire personnel stocks dans le rpertoire /etc/skel/ sont automatiquement copis dans le nouveau rpertoire. Si ces chiers doivent tre copis partir dun autre rpertoire, il faut spcier celui-ci laide de loption -k Permet de donner le mot de passe initial du compte. Cette option ne doit jamais tre utilise, car le mot de passe apparat dans la ligne de commande du processus et peut tre lue par un utilisateur mal intentionn. On xera donc toujours le mot de passe initial de lutilisateur laide de la commande passwd. Permet de spcier le shell par dfaut utilis par lutilisateur. Permet de spcier lUID de lutilisateur. Cette valeur doit tre unique en gnral, cependant, il est possible de forcer lutilisation dun mme UID pour plusieurs utilisateurs laide de loption -o. Cela permet de crer un deuxime compte pour un utilisateur dj existant.

-g -G -m

-p

-s -u

Lajout dun groupe se fait avec la commande groupadd, qui suit la syntaxe suivante, beaucoup plus simple que celle de useradd :
groupadd [-g GID [-o]] nom

o nom est le nom du groupe et GID son numro. Il nest normalement pas possible de dnir un groupe avec un identiant numrique dj attribu un autre groupe, sauf si lon utilise loption -o. De la mme manire, la suppression dun utilisateur peut se faire manuellement en effaant son rpertoire personnel et en supprimant les lignes qui le concernent dans les chiers /etc/passwd, /etc/shadow et /etc/group. Il est galement possible dutiliser la commande userdel. Cette commande utiliser la syntaxe suivante :
userdel [-r] login

o login est le nom de lutilisateur. Loption -r permet de demander userdel deffacer rcursivement le rpertoire personnel de lutilisateur, ce quelle ne fait pas par dfaut. Il existe galement une commande groupdel pour supprimer un groupe dutilisateurs (cette commande supprime le groupe seulement, pas les utilisateurs qui y appartiennent !).

127

Chapitre 6. Administration du systme de base


Note : Comme pour la plupart des autres oprations dadministration systme, il est fortement probable que loutil de conguration fourni avec votre distribution dispose de toutes les fonctionnalits ncessaires lajout et la suppression des utilisateurs. Il est recommand dutiliser cet outil, car il peut effectuer des oprations dadministration complmentaires que les outils standards neffectuent pas forcment, comme la dnition des comptes mail locaux par exemple.

6.5.3. Description de la bibliothque PAM


La bibliothque PAM permet de centraliser toutes les oprations relatives lidentication et lauthentication des utilisateurs. Ces tches sont en effet dportes dans des modules spcialiss qui peuvent tre chargs dynamiquement dans les programmes qui en ont besoin, en fonction de paramtres dnis dans des chiers de conguration. Le comportement des applications peut donc tre parfaitement dni simplement en ditant ces chiers. La bibliothque PAM permet une trs grande souplesse dans ladministration des programmes ayant trait la scurit du systme et devant raliser des oprations privilgies. Il existe dj un grand nombre de modules, capables de raliser une multitude de tches diverses et varies, et que lon peut combiner loisir pour dnir le comportement de toutes les applications utilisant la bibliothque PAM. Il est hors de question de dcrire chacun de ces modules ici, ni mme de donner la conguration des programmes qui utilisent PAM. Cependant, nous allons voir les principes gnraux permettant de comprendre comment les modules de la bibliothque sont utiliss. Initialement, toute la conguration de PAM se faisait dans le chier de conguration /etc/pam.conf. Ce chier contenait donc la dnition du comportement de chaque programme utilisant la bibliothque PAM, ce qui ntait pas trs pratique pour ladministration et pour les mises jour. Les informations de chaque programme ont donc t spares en plusieurs chiers distincts, raison dun chier par application, tous stocks dans le rpertoire /etc/pam.d/. Il est fort probable que votre distribution utilise cette solution, aussi le format du chier /etc/pam.conf ne sera-t-il pas dcrit. Certains modules utilisent des chiers de conguration pour dterminer la manire dont ils doivent se comporter. Ces chiers de conguration sont tous stocks dans le rpertoire /etc/security/. Les modules de PAM eux-mmes sont, quant eux, stocks dans le rpertoire /lib/security/. Le principe de fonctionnement est le suivant. Lorsquun programme dsire raliser une opration relative lauthentication dun utilisateur, il sadresse la bibliothque PAM pour effectuer cette opration. La bibliothque recherche dans le rpertoire /etc/pam.d/ le chier de conguration correspondant cette application (il porte gnralement le nom de lapplication elle-mme), puis dtermine les modules qui doivent tre chargs dynamiquement dans lapplication. Si le chier de conguration dune application ne peut pas tre trouv, le chier de conguration /etc/pam.d/other est utilis, et la politique de scurit par dfaut qui y est dnie est utilise. Quel que soit le chier de conguration utilis, chaque module est utilis en fonction des paramtres qui y sont stocks. Les modules peuvent, sils en ont besoin, utiliser leurs propres chiers de conguration, qui se trouvent dans le rpertoire /etc/security/. Ces chiers portent gnralement le nom du module avec lextension .conf. Par exemple, le chier de conguration du module limits, qui prend en charge les limites dutilisation des ressources systme pour chaque utilisateur, est le chier /etc/security/limits.conf. Les chiers de conguration des applications sont constitus de lignes dnissant les diffrents modules qui doivent tre chargs, le contexte dans lequel ils sont chargs, et comment doit se comporter lapplication en fonction du rsultat de lexcution des oprations ralises par ces modules. Lordre des lignes est important, puisquelles sont analyses les unes aprs les autres. Chaque ligne est consti-

128

Chapitre 6. Administration du systme de base tue de trois colonnes. La premire colonne indique le cadre dutilisation du module. La deuxime colonne indique le comportement que doit adopter la bibliothque PAM en fonction du rsultat renvoy par le module aprs son excution. Enn, la troisime colonne donne le chemin daccs complet au module, ventuellement suivi des options qui doivent lui tre communiques pour son excution. Les modules peuvent tre utiliss dans lun des contextes suivants :
auth,

qui est le contexte utilis par les programmes qui demandent lauthentication de lidentit de utilisateur ; qui est le contexte utilis par les programmes qui dsirent obtenir des informations sur lutilisateur (rpertoire personnel, shell, etc.)

account,

password, qui est le contexte utilis par les applications qui cherchent revalider lauthentication

de lutilisateur. Les programmes comme passwd par exemple, qui demandent le mot de passe de lutilisateur avant den xer un nouveau, sont susceptibles dutiliser ce contexte ;
session,

qui est le contexte utilis par les applications lorsquelles effectuent les oprations de gestion douverture et de fermeture de session. Ce contexte peut tre utilis pour raliser des tches administratives, comme lenregistrement de lutilisateur dans la liste des utilisateurs connects ou le chargement des prfrences personnelles de lutilisateur par exemple.

Une mme application peut dnir plusieurs jeux de rgles pour plusieurs contextes diffrents, et certains modules peuvent tre utiliss dans plusieurs contextes diffrents galement. Cependant, lorsquune application ralise une demande la bibliothque PAM, cette demande nest excute que dans le cadre dun contexte bien dni. Attention cependant, une mme application peut effectuer plusieurs oprations successivement dans des contextes diffrents. Par exemple, le programme login peut utiliser le contexte auth pour valider lidentit de lutilisateur, puis le contexte account pour dterminer le rpertoire personnel de lutilisateur, et enn le contexte session pour enregistrer lutilisateur dans le journal des utilisateurs connects. Le comportement de la bibliothque PAM en fonction du rsultat de lexcution des modules dpend de ce qui est spci dans la deuxime colonne des lignes de ces modules. Les options qui peuvent y tre utilises sont les suivantes :
required,

qui permet dindiquer que le succs de lopration effectue par le module est ncessaire pour que lopration effectue dans le contexte spci dans la premire colonne de la ligne russisse. Un chec sur cette ligne ne provoque pas larrt de lanalyse du chier de conguration, ce qui permet dappeler dautres modules, par exemple pour gnrer des traces dans les chiers de traces du systme. Cependant, quel que soit le comportement des modules suivants, lopration demande par le programme appelant chouera ; qui permet dindiquer que le succs de lopration effectue par le module est ncessaire, faute de quoi lopration ralise par le programme appelant choue immdiatement. Les autres modules ne sont donc pas chargs en cas dchec, contrairement ce qui se passe avec loption required ;

requisite,

sufficient,

qui permet dindiquer que le succs de lexcution du module garantira le succs de lopration demande par le programme appelant. Les modules suivants seront chargs malgr tout aprs lappel de ce module, sauf sil sagit de modules de type required ; autre module ne peut dterminer si lopration est valide ou non. Dans le cas contraire, le module est charg, mais son rsultat est ignor.

optional, qui permet dindiquer que le rsultat du module ne doit tre pris en compte que si aucun

129

Chapitre 6. Administration du systme de base titre dexemple, nous pouvons prsenter deux implmentations possibles du chier de conguration par dfaut /etc/pam.d/other. Une conguration extrmement sre interdira laccs toute fonctionnalit fournie par un programme nayant pas de chier de conguration. Dans ce cas de conguration, on utilisera un chier comme celui-ci :
auth auth account password password session required required required required required required /lib/security/pam_warn.so /lib/security/pam_deny.so /lib/security/pam_deny.so /lib/security/pam_warn.so /lib/security/pam_deny.so /lib/security/pam_deny.so

Nous voyons que toutes les oprations de type authentication ou de revalidation de lidentit sont dabord traces dans les chiers de traces du systme, puis dclares comme interdites. Une telle conguration peut tre un peu trop restrictive car, en cas derreur dans un chier de conguration dune application, laccs cette application peut tre interdit systmatiquement. Une autre conguration, plus permissive, cherchera utiliser les mcanismes didentication et dauthentication Unix classiques. Cela se fait avec les modules pam_unix_auth, pam_unix_acct, pam_unix_passwd et pam_unix_session :
auth account password session required required required required /lib/security/pam_unix_auth.so /lib/security/pam_unix_acct.so /lib/security/pam_unix_passwd.so /lib/security/pam_unix_session.so

Les autres chiers de conguration ne seront pas dcrits ici, car ils dpendent de chaque application et de chaque distribution. Vous pouvez consulter ceux qui sont installs sur votre systme si vous dsirez en savoir plus. Nous ne dcrirons pas non plus la syntaxe des chiers de conguration des diffrents modules, car cela dpasserait largement le cadre de ce document. Cela dit, la plupart de ces chiers sont parfaitement comments et leur modication ne devrait pas poser de problme particulier. titre dexemple, on peut prsenter le cas du module de gestion des limites des ressources consommes par les utilisateurs. Si lon dsire restreindre le nombre de processus que les utilisateurs peuvent lancer, on pourra ajouter la ligne suivante dans le chier /etc/security/limits.conf :
@users hard nproc 256

Il faudra galement demander le chargement de ce module dans les chiers de conguration des applications fournissant un accs au systme. Pour cela, on ajoutera une ligne telle que celle-ci la n de leur chier de conguration :
session required /lib/security/pam_limits.so

Il est galement possible de limiter le nombre de login de chaque utilisateur, la quantit de mmoire quil peut consommer, la dure de connexion autorise, la taille maximum des chiers quil peut manipuler, etc. Vous trouverez de plus amples renseignements sur la conguration des modules de PAM dans le guide dadministration de PAM pour Linux, que lon trouvera avec les sources de PAM (http://www.kernel.org/pub/linux/libs/pam/).

130

Chapitre 6. Administration du systme de base

6.6. Conguration des terminaux virtuels


Un terminal est, comme son nom lindique, un quipement qui se trouve au bout dune connexion un ordinateur et qui permet de travailler sur lordinateur. Un terminal comprend gnralement un clavier et un cran (graphique pour les terminaux X), et parfois une souris. Initialement, les terminaux taient des priphriques passifs connects sur un port srie de lordinateur. Cette architecture permettait de partager une mme unit centrale avec plusieurs utilisateurs. De nos jours, la plupart des terminaux sont simplement dautres ordinateurs du rseau, qui se connectent laide dun programme que lon appelle mulateur de terminal . Lmulateur de terminal se contente de simuler un terminal rel et permet de se connecter toute machine grant des terminaux clients. Du point de vue du systme, tous les utilisateurs sont connects via des terminaux, quils soient physiques ou muls. Les connexions locales sont donc ralises par lintermdiaire dun terminal local, la console. La console est tout simplement le priphrique prenant en charge le clavier et lcran. Ce priphrique est gr directement par le noyau, et mule un modle de terminal standard, le VT102. En fait, la console nest utilise directement en tant que terminal de login quen mode monoutilisateur (cest--dire en mode maintenance). En mode multiutilisateur, la console est partage entre plusieurs terminaux dits virtuels , parce quils simulent la prsence de plusieurs terminaux sur la mme console. Ces terminaux virtuels se partagent le clavier et lcran, mais seulement un de ces terminaux peut accder la console chaque instant : celui qui traite les caractres saisis au clavier et qui ralise lafchage. Pour pouvoir passer dun terminal virtuel un autre, il faut utiliser une squence de touches spciale, comme par exemple ALT+Fn (ou CTRL+ALT+Fn si vous tes sous XWindow), o Fn est lune des touches de fonction du clavier. Si lon utilise cette combinaison avec la touche F1, on accdera au premier terminal virtuel. Avec la touche F2, ce sera le deuxime, avec F3, le troisime, etc. Il est donc possible de simuler la prsence de plusieurs crans et claviers sur une mme machine, ce qui est trs pratique lorsquon commence lancer plusieurs programmes en mme temps (cela ncessite videmment de se connecter plusieurs fois sur des terminaux diffrents). Bien entendu, la conguration du clavier et la police de caractres utilise sont communs tous les terminaux virtuels, puisquils utilisent tous la mme console. La plupart des distributions utilisent au moins quatre terminaux virtuels, plus ventuellement un terminal pour le serveur X. Mais il est possible de dnir dautres terminaux, quils soient graphiques ou non. Nous allons maintenant voir comment modier le nombre de terminaux virtuels disponibles. Lutilisation des terminaux avec XWindow sera traite dans le chapitre traitant de la conguration de XWindow. Chaque terminal virtuel utilise un chier spcial de priphrique du rpertoire /dev/. Le nom de ce chier commence toujours par tty et est complt par le numro du terminal. Ainsi, le chier spcial de priphrique /dev/tty1 correspond au premier terminal virtuel, accessible avec la combinaison de touches CTRL+ALT+F1, le chier spcial de priphrique /dev/tty2 correspond au deuxime terminal virtuel, etc. Linux peut grer jusqu 64 terminaux virtuels, cependant, il est ncessaire de dnir dautres combinaisons de touches pour accder aux terminaux 13 et suivants (puisquil nexiste que 12 touches de fonctions). Il serait possible dutiliser les combinaisons de touches ALT+DROITE et ALT+GAUCHE pour les atteindre, mais dune part ce ne serait pas trs pratique, et dautre part, vous ne devriez pas avoir besoin de plus de quatre ou cinq terminaux virtuels. Nous nutiliserons donc ici que les douze premiers terminaux virtuels. Les terminaux virtuels sont crs par le noyau la demande, ds quun processus cherche y accder. Ainsi, le systme nalloue les ressources utilises pour la gestion de ces terminaux que lorsque cela est ncessaire. Les terminaux peuvent tre crs par diffrents processus, et leur emploi nest pas restreint la simple connexion des utilisateurs. Par exemple, il est possible dafcher un message sur un terminal simplement en crivant dans son chier spcial de priphrique. Ainsi, si vous tapez la commande suivante sous le compte root :

131

Chapitre 6. Administration du systme de base


echo Coucou > /dev/tty11

la chane de caractres Coucou devrait apparatre sur le terminal virtuel 11. En gnral, les terminaux virtuels sont utiliss soit pour afcher les messages du systme, soit pour permettre aux utilisateurs de se connecter, soit pour XWindow. Les terminaux peuvent donc tre attribus diffrents programmes, selon lemploi quon leur rserve. Il faudra cependant bien prendre garde au fait que les terminaux ne sont pas partageables entre tous les processus. Ainsi, on ne devra pas essayer de lancer un serveur X sur un terminal utilis par un processus de connexion en mode texte. Pour crer des terminaux de login, il suft de demander au systme de lancer les processus de connexion sur chaque terminal dsir. Ce travail est la charge du processus fondamental du systme : init. La dnition des terminaux de login se fait donc dans le chier de conguration /etc/inittab. Si vous regardez le contenu de ce chier, vous trouverez quelques lignes semblables la suivante :
1:2345:respawn:/sbin/getty 9600 tty1 linux 2:2345:respawn:/sbin/getty 9600 tty2 linux etc.

Ces lignes indiquent init que plusieurs processus getty doivent tre lancs sur les diffrents terminaux virtuels. Le programme getty est le programme qui vous demande votre nom dutilisateur sur les terminaux virtuels. Plus prcisment, getty initialise le terminal, demande le nom dutilisateur et lance le programme login en lui fournissant le nom saisi, an que celui-ci demande le mot de passe de cet utilisateur. Si vous dsirez rajouter des terminaux de login votre conguration, vous devrez donc rajouter des lignes de ce genre dans le chier /etc/inittab. En fait, ces lignes sont constitues de quatre champs :

le premier champ est le numro de la ligne. En pratique, ce numro doit tre celui du terminal virtuel qui sera utilis par getty ; le champ suivant ( 2345 ) contient les numros des niveaux dexcution dans lesquels cette ligne est valide. Ces numros doivent tre spcis les uns la suite des autres, sans sparateur. Dans lexemple donn ci-dessus, ces lignes sont valides dans les niveaux dexcution 2 5 compris, cest--dire tous les niveaux dexcution classiques ; le troisime champ indique init des options pour le lancement du programme getty. Dans lexemple donn ci-dessus, le programme getty doit tre relanc immdiatement ds quil se termine. Cela est le comportement dsir, puisque la terminaison de getty correspond la dconnexion de lutilisateur courant, et quil faut laisser la possibilit de se reconnecter aux suivants ; le dernier champ indique le programme lancer et ses options de ligne de commande. Dans notre cas, il sagit de /sbin/getty. Les options indiques sont la vitesse de la ligne de communication utilise, le nom du terminal sur lequel getty doit travailler et son type (ici, ce sont des terminaux de type linux ).

Vous pouvez bien entendu vous baser sur les lignes existantes pour en crer de nouvelles. Lopration est trs simple : il suft de renumroter les lignes et les terminaux virtuels utiliss. Prenez garde cependant ne pas affecter getty un terminal utilis par XWindow. Il est recommand deffectuer ces modications dans le niveau dexcution 2 pour ne pas tre gn par XWindow. Une fois les modications ajoutes, vous pourrez demander init de relire son chier de conguration avec la commande suivante :

132

Chapitre 6. Administration du systme de base


init Q

Ds lors, les nouveaux terminaux sont prts tre utiliss.

6.7. Conguration de la console


Comme nous venons de le voir, tous les terminaux virtuels utilisent la mme console. La suite logique des oprations est donc de voir comment on ralise la conguration de celle-ci... Nous allons donc voir dans ce chapitre la manire de paramtrer le clavier et lafchage du texte lcran. Pour cela, il est ncessaire de bien comprendre les mcanismes mis en uvre pour le traitement des codes mis par le clavier dune part, et pour lafchage des symboles des lettres partir de leurs codes dautre part. Ces mcanismes sont relativement volus et complexes, mais permettent de paramtrer avec prcision la disposition des touches du clavier, le comportement des applications et lallure des symboles afchs lcran. Le plus simple pour comprendre le fonctionnement de la console est encore de voir les diffrentes tapes entrant en ligne de compte de lappui sur une touche jusqu laction correspondant cet appui. Notez bien que cette action nest pas forcment lafchage dune lettre lcran : cela dpend de lapplication qui a trait lvnement correspondant lappui sur la touche. Il est toutefois ncessaire de prsenter auparavant quelques notions sur la manire dont les caractres sont reprsents dans les programmes.

6.7.1. Pages de codes et Unicode


De par leur nature de calculateurs, les ordinateurs nont jamais t conus pour manipuler nativement du texte. Cela signie quils nont aucune notion de caractre ou de symbole : pour eux, tout est numrique. Par consquent, il a fallu trouver le moyen de reprsenter les caractres humains sous une forme numrique an de pouvoir raliser des programmes de manipulation de texte. Cette reprsentation est effectue en associant chaque caractre un numro donn, t en travaillant directement sur ces numros. Par exemple, le caractre A est classiquement reprsent par le nombre 65, la lettre B par le nombre 66, etc. Lopration consistant effectuer cette association sur chaque caractre dun texte constitue ce que lon appelle lencodage du texte. Plusieurs manire de raliser cet encodage ont t inventes, mais lun des standards les plus utiliss est lencodage ASCII. Lorsquil a t cr, lencodage ASCII codait les caractres sur 7 bits. Depuis, il a t tendu pour utiliser 8 bits, ce qui fait que chaque caractre est dornavant cod sur un octet. Ainsi, il est possible de reprsenter 256 caractres diffrents avec un octet, ce qui est sufsant pour toutes les langues occidentales. Cependant, le standard ASCII initial ne spciait que lencodage des caractres utiliss en anglais, tout simplement parce que les Amricains parlent anglais. videmment, cela ne convenait pas pour les pays qui utilisent des lettres accentues, cest--dire pour quasiment tout le monde. Il a donc fallu dnir dautres conventions que celle initialement utilise, an dassocier des codes numriques aux caractres utiliss par les autres pays. Ces conventions constitue ce que lon appelle une page de codes. Chaque pays est donc susceptible dutiliser une page de codes qui lui est spcique. Par exemple, la page de codes 437 reprsente lencodage utilis aux tats-Unis, et la 850 celle utilise en France. Historiquement, les pages de codes nont pas t immdiatement standardises, ce qui a conduit la prolifration de pages diffrentes et parfois incompatibles. Ainsi, les pages de codes utilises en France sont les pages de codes 850 sous DOS, 1252 sous Windows, ISO 8859-1 et ISO 8859-15 sous Unix. Ces deux dernires constituent la norme actuelle, et sont celles qui doivent tre utilises de

133

Chapitre 6. Administration du systme de base prfrence. La norme ISO 8859-1 est galement connue sous le nom latin-1, et la norme ISO 8859-15 sous le nom latin-0. La norme latin-0 est une extension de la latin-1, qui ne prvoyait pas le codage de certains caractres europens (comme le o e dans lo franais) et le symbole de lEuro. Le dfaut majeur de lASCII et de ses drivs est de travailler sur des nombres 8 bits. Si le nombre de 256 caractres diffrents convient pour la plupart des pays occidentaux, ce nest pas le cas de quelques autres pays, qui utilisent un nombre de symboles de trs loin suprieur 256. Cest notamment le cas du Japon et de la Chine, qui ne peuvent pas encoder tous leurs idogrammes sur des nombres 8 bits. Il a donc fallu introduire dautres types dencodages, plus riches, permettant de satisfaire aux besoins de tout le monde. Aprs des tentatives infructueuses dencodages taille variable (un ou plusieurs octets selon le caractre cod), Unicode a t introduit et normalis sous le nom ISO 10646. Unicode est une convention de codage universelle des caractres, qui utilise pour cela des nombres 32 bits (il existe galement une version plus ancienne qui nutilise que 16 bits). Chaque caractre est reprsent par un nombre et un seul, comme pour lASCII. Cependant, avec ses 16 ou 32 bits, le jeu de caractres Unicode est sufsamment large pour coder tous les caractres de toutes les langues du monde. Bien entendu, tous les codes ne sont pas utiliss, et le jeu de caractre Unicode est discontinu. Pour des raisons de compatibilit, les 256 premiers caractres Unicode sont les mmes que ceux dnis dans la norme ISO 8859-1 (ce qui rend malheureusement non compatible la norme ISO 8859-15, plus complte). Les autres caractres sont affects dautres plages de codes, qui sont parfaitement dnies. Ainsi, lutilisation dUnicode permettra, terme, de navoir plus quune seule page de codes pour tous les pays. Malheureusement, Unicode est une volution relativement rcente, et la plupart des programmes travaillent encore avec des caractres 8 bits, ce qui rend lutilisation dUnicode prmature. Linux, quant lui, est capable de grer lUnicode. Cependant, pour des raisons dconomie de place, il ne lutilise pas directement. Il prfre en effet utiliser lencodage UTF-8 (abrviation de langlais Unicode Tranfer Format ). Cet encodage est un encodage taille variable, qui permet dencoder les caractres Unicode avec de un six octets selon leur emplacement dans la page de codes Unicode.

6.7.2. Principe de fonctionnement du clavier


En gnral, les claviers envoient une srie de codes lunit centrale lorsquon appuie sur une touche. Certaines touches gnrent un seul code, dautres peuvent en produire jusqu une dizaine. Ces codes, que lon appelle scancode, sont rcuprs par le pilote du clavier dans le noyau de Linux, et constituent le dbut du traitement des saisies clavier. Les scancodes permettent normalement de dterminer avec certitude lvnement qui sest produit, pour peu que lon connaisse parfaitement le type de clavier utilis. Malheureusement, ils sont spciques chaque modle de clavier, et il est difcilement concevable pour un programme de prendre en charge les particularits de tous les claviers existants. De plus, qui peut prvoir aujourdhui combien de touches les claviers du futur auront, et quels scancodes ceux-ci utiliseront ? Linux effectue donc un travail duniformisation en interprtant les scancodes et en les traduisant en dautre codes, les keycodes. Ces codes sont toujours les mmes, quel que soit le clavier utilis. Les keycodes simplient le traitement des donnes provenant du clavier en dnissant un code de touche unique chacune des touches du clavier. Les keycodes sont galement souvent appels les codes de touches virtuelles, car ils correspondent aux scancodes dun clavier virtuel uniforme et commun toutes les plates-formes. La gestion des vnements clavier par lintermdiaire des keycodes est donc beaucoup plus aise, car il ny a plus se soucier ici que de ce clavier virtuel. La correspondance entre les scancodes, donc les touches physiques, et les keycodes, ou codes de touches virtuelles, est dnie dans le pilote du clavier. La plupart des claviers courants sont pris en charge et, en gnral, peu de personnes ont besoin de modier ce type dinformation. Toutefois, an de permettre lintgration des

134

Chapitre 6. Administration du systme de base claviers futurs, il est possible de complter la table de conversion des scancodes en codes de touches virtuelles. Linterprtation des keycodes est une opration relativement complique et peu commode cause du grand nombre de dispositions de clavier existantes et, pour chaque type de clavier, des diffrentes dclinaisons existantes en fonction des langages des divers pays qui les utilisent. Cest pour cela quune autre association, qui permet de dnir le comportement obtenir pour chaque combinaison de codes de touches virtuelles, a t introduite. Cette correspondance est dcrite dans un chier que lon appelle couramment le plan de clavier (ou keymap en anglais). Les keymaps contiennent donc, pour chaque touche ou combinaison de touches virtuelles utilise, la dnition dune action effectuer ou dun code de caractre renvoyer. Ces codes sont renvoys en ASCII, cods selon la page de codes dnie dans le plan de clavier. Cependant, certaines touches ne sont pas associes une lettre ASCII et ne peuvent donc pas tre reprsentes par des codes simples. Cest le cas, par exemple, des touches du curseur et des touches de suppression du clavier. Ces touches sont donc signales aux programmes laide de squences de codes appeles les codes dchappement. Les codes dchappement sont en ralit des squences de codes ASCII dont le premier est le code du caractre dchappement Escape (dont le numro est 27, quelle que soit la page de codes utilise). Ces squences sont donc utilises typiquement pour signaler aux programmes qui les lisent quun traitement particulier doit tre effectu, comme par exemple le dplacement du curseur. Figure 6-1. Traitements des entres clavier

Les programmes peuvent peuvent travailler nimporte lequel des trois niveaux de traitement que lon vient de dcrire. Les programmes qui rcuprent directement les scancodes travaillent en mode raw (ce qui signie en anglais que les donnes sont brutes ). Ils nutilisent donc pas la traduction en codes de touches virtuelles et doivent ncessairement connatre les caractristiques physiques des claviers quils veulent supporter. Cest le cas par exemple des serveurs X. Les programmes qui utilisent les keycodes travaillent dans le mode nomm medium raw ou keycode. Cependant, la plupart des programmes travaillent avec les codes issus du plan de clavier, qui sont normaliss et font bncier dune plus grande portabilit (y compris avec dautres systmes Unix que Linux). Dans ce cas, on dit quils travaillent en mode ASCII, ou xlate (abrviation de langlais translate , ce qui signie traduction ).
Note : En fait, la console peut galement travailler en Unicode, dans le mode UTF-8. Ce mode permet de travailler directement en Unicode, si vous le dsirez. Cependant, vous devrez vous

135

Chapitre 6. Administration du systme de base


assurer dans ce cas que tous les programmes que vous utilisez sont capables de fonctionner avec un encodage taille variable.

Dans tous les cas, les programmes lisent les donnes provenant du clavier sur la console, par lintermdiaire du chier spcial de priphrique /dev/console. En fait, ces programmes ne savent pas quils lisent les donnes du clavier local. Pour eux, ces donnes semblent provenir dun terminal VT102, et ils traitent ces donnes comme celles provenant de nimporte quel terminal. Cela signie que ces donnes semblent provenir dune ligne de communication, laquelle le terminal local est connect. Et qui dit ligne de communication, dit paramtres de transmission des informations sur la ligne ! Les caractres issus de la keymap peuvent donc subir un traitement supplmentaire, en fonction des paramtres de la ligne de communication (virtuelle) utilise par la console. Cependant, il nest en gnral pas ncessaire de modier ces paramtres, puisque la ligne de communication utilise est bien entendue idale (quitte tre virtuelle, autant tre idale, non ?). Gloups !? Que cest compliqu ! Cest effectivement la rexion que vous tes en droit de vous faire. Cependant, si lon prend un peu de distance par rapport ce mcanisme en trois passes, on comprend son intrt. Premirement, la contrainte initiale est la complexit des scancodes. Sur ce point, il ny a rien dire. Grce aux keycodes, il nest plus ncessaire de se soucier du modle de clavier utilis. Ensuite, grce aux keymaps, il est possible de faire lassociation entre les keycodes et les lettres crites sur les touches du clavier. Ainsi, la disposition du clavier, ainsi que les raccourcis claviers, peuvent tre compltement paramtrs. Enn, les applications qui grent les touches spciales du clavier peuvent interprter les codes dchappement, qui sont ceux renvoys par le terminal de la console. Dans tous les cas, les programmes qui lisent les donnes du clavier considrent que ces donnes proviennent dun terminal classique. Ils nont donc pas besoin de faire des hypothses sur lorigine des donnes, et leur programmation en est dautant plus simple. Passons maintenant aux travaux pratiques. La commande kbd_mode permet de dterminer le mode de fonctionnement du clavier. Si vous lessayez partir dune console, vous verrez que le clavier est en mode ASCII. Inversement, si vous tapez cette commande partir dune session X, vous constaterez que XWindow utilise le clavier en mode raw, et gre donc les scancodes lui-mme. Vous pouvez galement visualiser les codes renvoys dans les trois modes de fonctionnement du clavier avec la commande showkey. Lance avec loption -s, elle permet dafcher les scancodes lors de lappui sur chaque touche. Vous pourrez constater que toutes les touches ne renvoient pas le mme nombre de codes. Vous pourrez utiliser loption -k pour visualiser les keycodes renvoys par le noyau lors de lappui et du relchement des touches. Enn, si vous utilisez loption -a, vous verrez les codes de touches ASCII. Vous pourrez constater que les touches spciales renvoient des squences de codes dchappement.
Note : Notez galement que certaines touches renvoient des caractres de contrle (nots ^A ^Z). Ces caractres correspondent en fait aux codes ASCII allant de 1 26 et ne sont pas des squences dchappement. Ils peuvent galement tre gnrs avec les combinaisons de touches CTRL+A CTRL+Z. Si vous ne me croyez pas, tapez la commande ls dans une console et tapez la combinaison de touches CTRL+M (celle affecte la touche Entre). Vous verrez, cest comme si vous aviez tap Entre ! Le programme showkey ne peut pas tre lanc sous XWindow, parce que celui-ci gre lui-mme le clavier. showkey se termine de lui-mme au bout de dix secondes aprs la dernire frappe, ou lors de lappui de la squence de touches CTRL+D sil est en mode ASCII.

136

Chapitre 6. Administration du systme de base

6.7.3. Principe de fonctionnement de lcran de la console


Il est temps maintenant de passer au mcanisme dafchage des caractres sur lcran. Comme vous avez pu le voir dans les paragraphes prcdent, le fait dappuyer sur une touche ne fait rien dautre que de fournir des codes numriques aux programmes. Contrairement ce que vous pourriez penser, les codes de ces touches ne sont pas forcment transmis directement lcran (heureusement, comment taperiez-vous votre mot de passe labri des regards indiscrets sinon ?). En fait, lafchage des caractres lcran est un des paramtres de la ligne du terminal, que lon nomme echo. Pour la plupart des programmes, lcho automatique est dsactiv. Pour dautres ce sont les applications qui, en fonction des codes quelles lisent sur la console, effectuent une action. Mais la majorit de ces actions ncessitent effectivement dafcher des rsultats sur le moniteur. Pour raliser cela, les programmes crivent les donnes afcher dans le chier spcial de priphrique de la console. Comme nous lavons vu, la console de Linux se comporte comme un terminal local. Cela implique que les applications qui dsirent crire des donnes doivent les envoyer par la ligne de communication via laquelle elles sont connectes ce terminal. Tout comme les scancodes du clavier, les caractres envoys la console par les applications subissent un traitement impos par les paramtres de la ligne de communication virtuelle utilise. Bien entendu, ce traitement est encore une fois minimal, puisque cette ligne est idale. Notez que les programmes nen savent absolument rien car, pour eux, tout se passe comme sils crivaient sur un terminal rel. Quoi quil en soit, le ux de caractres arrive au niveau du gestionnaire de la console aprs ce traitement de base. Comme nous lavons dj dit plus haut, la console Linux mule un terminal VT102, et recherche donc les codes de contrle et les squences dchappement de ces consoles. Ces codes dchappement sont classiquement utiliss pour effectuer des oprations sur la console, comme par exemple le dplacement du curseur, la prise en compte de la couleur et des attributs des caractres afchs, leffacement de lcran, etc. Pour information, tous les codes de la console sont dcrits dans la page de manuel console_codes. Les codes qui ne sont pas reconnus comme tant des codes dchappement sont traits en tant que caractres normaux. Le gestionnaire de la console doit donc dterminer quel caractre doit tre imprim lcran pour chaque code fourni par lapplication. Cela nest pas une opration facile, parce que les polices de caractres, qui contiennent la dnition de la reprsentation graphique des caractres, nutilisent pas forcment la page de codes active dans le systme. Cela signie que les caractres dnis dans la police napparaissent pas forcment dans le mme ordre que celui de la page de codes, et pour cause : une police peut parfaitement tre utilisable dans plusieurs pays diffrents ! Cela complique donc un peu plus les choses, puisquil faut utiliser une table de conversion entre la page de codes du texte afcher et lencodage propre de la police. An de raliser cette conversion, le gestionnaire de la console Linux commence par convertir tous les caractres quil reoit en Unicode . Si la console est en mode UTF-8, cette opration est immdiate, car lUTF-8 est un encodage Unicode. En revanche, si la console est en mode ASCII, cette opration ncessite lemploi dune table de conversion. Linux dispose de quatre tables de conversion :

la premire table permet de faire la conversion entre la page de codes ISO 8859-1 et Unicode (cette conversion est, par dnition, immdiate) ; la deuxime table permet de faire la conversion entre les codes graphiques des terminaux VT100 et Unicode ; la troisime table permet deffectuer la conversion entre la page de codes 437 et Unicode ; et la quatrime et dernire table est rserve lusage personnel de lutilisateur.

137

Chapitre 6. Administration du systme de base La dernire table est trs utile, car elle permet de dnir une nouvelle table de conversion si ncessaire. Par dfaut, elle convertit les codes reus en codes Unicode spciaux, qui reprsentent les codes utiliss par la police de caractres charge. Ainsi, lorsque cette table est utilise, les codes reus par la console seront utiliss directement pour localiser les caractres dans la police de caractres. Cela ne peut fonctionner que si les applications utilisent le mme encodage que la police de caractres courante. Linux dispose de deux jeux de caractres, nomms respectivement G0 et G1, qui permettent de slectionner la table de conversion utiliser. Par dfaut, ces jeux de caractres pointent respectivement sur la premire et la deuxime table de conversion, mais cela peut tre modi laide de codes dchappement. Seul un jeu de caractres est actif un moment donn. Par dfaut, il sagit du jeu G0, ce qui implique que la table de conversion utilise par dfaut est la table ISO 8859-1 vers Unicode. Il est galement possible de changer de jeu de caractres, laide dun code de contrle. Ce mcanisme ne sera pas dcrit plus en dtail ici, car il ne nous sera pas utile.
Note : En fait, la recherche des codes de contrle est effectue a posteriori, aprs la conversion en Unicode.

Dans tous les cas, les codes envoys par lapplication sont donc convertis en Unicode (16 bits). Ils peuvent donc tre reconvertis aisment dans lencodage utilis par la police de caractre charge en mmoire vido. Par dfaut, cette opration est triviale, et lencodage cible est donc lencodage ISO 8859-1, sauf si la quatrime table de conversion a t utilise. Dans ce cas en effet, lencodage cible est le mme encodage que celui utilis par lapplication (tout se passe donc comme si rien ne stait pass). Enn, la dernire opration est tout simplement lcriture du code dans la mmoire vido. Ce code est utilis par la carte graphique comme index dans la police de caractre, et le caractre ainsi localis est afch. Figure 6-2. Traitement des caractres pour lafchage

Gloups !? Que cest compliqu ! a ne va pas recommencer ? Eh si ! Mais, encore une fois, ce mcanisme permet de rendre indpendant les applications des polices de caractres. Chacun peut utiliser lencodage quil dsire, et grce un petit passage en Unicode, tous les caractres nissent par tre reprsents par le bon symbole lcran... En fait, le passage par Unicode donne la possibilit de dnir les tables de conversion des polices uniquement par rapport Unicode, et non par rapport

138

Chapitre 6. Administration du systme de base tous les encodages possibles que les applications peuvent utiliser. Cela permet donc lutilisation de polices de caractres diverses et varies, sans avoir modier les applications.

6.7.4. Conguration du clavier


Bien que les distributions modernes fournissent les outils ncessaires la conguration correcte du clavier, vous aurez peut-tre intervenir pour le personnaliser selon vos propres dsirs. La conguration du clavier comprend la dnition des scancodes, la dnition du plan de clavier, et le rglage de la vitesse de rptition et de la touche de verrou numrique.

6.7.4.1. Dnition de scancodes


La dnition des scancodes est une opration qui ncessite une bonne connaissance du fonctionnement du clavier des PC. Heureusement, rares sont les personnes qui disposent de claviers non standards, cest--dire, en pratique, de claviers disposant de plus de 105 touches. Notez que Linux reconnat parfaitement les touches Windows qui ont t introduites par Microsoft, et il ny a donc pas lieu de dnir leurs scancodes. Cependant, les claviers les plus rcents disposent de touches Internet ou Multimedia , qui ne sont pas encore reconnues par Linux en standard. Lutilisation de ces touches se traduit donc simplement par un message derreur dans les traces systmes. Si vous disposez dun tel clavier, et que vous dsirez utiliser ces touches, vous allez devoir les dnir dans la table des scancodes du noyau. Pour raliser cette opration, il faut avant tout dterminer les scancodes envoys par le clavier lors de lappui sur la touche dnir. Comme nous lavons indiqu plus haut, les scancodes peuvent tre visualiss avec loption -s de showkey :
showkey -s

Les scancodes sont exprims en hexadcimal, cest--dire en base 16. Dans cette base, les lettres A F reprsentent les chiffres manquants la base 10, cest--dire les chiffres ayant respectivement pour valeur 10, 11, 12, 13, 14 et 15. En gnral, le clavier envoie un scancode lors de lappui sur une touche, puis le mme scancode augment de 128 lors de son relchement. Le nombre de 128 provient du fait que le bit de poids fort du scancode est mis un lors du relchement de la touche. Ainsi, la touche A des claviers franais renvoie le scancode 16 lors de lappui, soit 0x10 en hexadcimal, et le scancode 144, soit 0x90, lors du relchement (notez que la valeur 128 se note 0x80 en hexadcimal, et que lon a bien 0x90 = 0x10 + 0x80). Cependant, certaines touches renvoient des scancodes plus complexes. Ces touches sont gnralement des touches qui ont t ajoutes aprs la dnition des premiers claviers PC, et qui ont sensiblement le mme rle quune touche dj prsente. Cest exactement le cas de la touche CTRL de droite par rapport la touche CTRL de gauche. Pour cette raison, les scancodes de ces touches sont les mmes que ceux de certaines touches classiques , mais ils sont prcds du prxe 0xE0, qui indique quil sagit dune touche tendue. Par exemple, la touche CTRL de gauche (cest--dire la premire touche de contrle qui ait t utilise) utilise le scancode 0x1D lappui, et le scancode 0x9D au relchement. La touche CTRL de droite renvoie donc la squence suivante lappui :
0xE0 0x1D

et la squence suivante au relchement :

139

Chapitre 6. Administration du systme de base


0xE0 0x9D

Lintrt de procder ainsi est que les vieux programmes, incapables de grer les codes de touches tendus, ignoraient purement et simplement le code 0xE0. Ainsi, ils confondaient les deux touches CTRL, ce qui est le comportement dsir. Dautres touches tendues utilisent des squences de scancodes variables. Par exemple, les touches du curseur (entre la touche Entre et le pav numrique) ont t ajoutes pour simplier le dplacement du curseur lcran. Initialement, on nutilisait que les touches du pav numrique, en combinaison de la touche Majuscule de droite si le verrou numrique tait enclench. Par consquent, la squence de scancodes gnre lors de lutilisation de la touche Flche Haute du pav numrique tait 0x48 si le verrou numrique ntait pas enclench, et 0x2A 0x48 sinon (soit le scancode de la touche Majuscule de gauche suivi du scancode de la touche 8 du pav numrique). Lors du relchement, la squence tait inverse (et augmente de 128) : 0xC8 ou 0xC8 0xAA selon ltat du verrou numrique. La touche Flche Haute tendue renvoie donc deux squences de scancodes diffrents selon ltat du verrou numrique 0xE0 0x48 ou 0xE0 0x2A 0xE0 0x48. Lors du relchement, la squence suivante complexe 0xE0 0xC8 ou 0xE0 0xC8 0xE0 0xAA est mise selon ltat du verrou numrique. Notez que ltat du verrou numrique est maintenu en interne par llectronique du clavier, indpendamment de ltat de la diode lumineuse du verrou numrique. Celui-ci peut en effet tre enclench sans que la diode soit allume, si le programme de gestion du clavier ne synchronise pas le clavier et sa diode. Enn, pour couronner le tout, certaines touches spciales utilisent une squence de scancodes spciques. Par exemple, la touche Pause ne renvoie que la squence 0xE1 0x1D 0x45 0xE1 0x9D 0xC5 lappui. Elle utilise donc le prxe 0xE1 au lieu de 0xE0, et simule lappui et le relchement immdiat des touches CTRL + Verrou Numrique (ce qui tait la manire de provoquer la pause avant lintroduction de la touche Pause). Comme vous pouvez le constater, tout cela est trs compliqu. Heureusement, le noyau fait le mnage pour vous et limine les touches suivantes :

les touches non tendues sont traites immdiatement (scancodes 0x01 0x58) ; la touche Pause est gre automatiquement ; les codes 0x2A et 0xAA de la touche Majuscule de droite sont automatiquement limins.

Grce ce traitement, les seuls scancodes que vous manipulerez sont les scancodes simples non connus, et les scancodes prcds du prxe 0xE0. Lassociation dun scancode inconnu un keycode se fait laide de lutilitaire setkeycodes. Sa syntaxe est la suivante :
setkeycodes scancode keycode

o scancode est le numro du scancode, exprim en hexadcimal et sans le prxe 0x , et keycode est bien entendu le numro de keycode attribuer cette touche. Les numros de scancodes peuvent tre simples (par exemple 48) ou prcds de leur prxe (par exemple E048). Les numros de keycodes doivent tre exprims en dcimal, et doivent tre compris entre 1 et 127. Par exemple, mon clavier dispose de 12 touches Multimdia supplmentaires, dont les scancodes ne sont pas reconnues par le noyau. La touche Arrt du son gnrant les scancodes suivants lappui :
0xE0 0x20

140

Chapitre 6. Administration du systme de base je peux lui associer le keycode 119 avec la commande suivante :
setkeycodes E020 119

Il va de soi quil faut sassurer que chaque keycode nest utilis quune fois ( moins, bien entendu, de vouloir que plusieurs touches aient le mme comportement). Pour cela, vous aurez sans doute besoin de voir les correspondances entre scancodes et keycodes. La commande suivante vous donnera la liste de ces correspondances :
getkeycodes

Les keycodes sont prsents raison de huit par ligne. Le scancode de la touche dcrite par le premier lment de chaque ligne est afch en tte de la ligne. Les autres scancodes peuvent tre dduits en ajoutant le numro de la colonne dans laquelle se trouve chaque keycode au numro du scancode du premier keycode.

6.7.4.2. Dnition dun plan de clavier


Comme nous lavons expliqu dans les paragraphes prcdents, les plans de clavier dnissent les associations entre les keycodes et les caractres ou les squences dchappement renvoys par le clavier. Les plans de clavier permettent galement de dnir des squences de composition, an dobtenir de nouveaux caractres en composant les actions de plusieurs touches. La dnition dun plan de clavier est donc constitue de trois parties. La premire partie dcrit les symboles accessibles pour certaines touches du clavier. Par exemple, les symboles accessibles pour la touche A peuvent tre les caractres a, A, et , laide des touches de majuscule et AltGr. La deuxime partie permet daffecter des chanes de caractres certaines touches particulires. Cette partie peut contenir par exemple la dnition de touches de raccourci pour les commandes les plus utilises. En pratique cependant, elles sont souvent utilises pour dnir des squences dchappement pour les touches de fonction et les touches du curseur, squences qui seront interprtes ensuite par les applications. Enn, la dernire partie permet de dnir les compositions de touches pour obtenir des caractres qui nauraient t accessibles autrement que par des combinaisons de touches compliques. Pour chaque touche normale du clavier, il est possible de dnir jusqu 256 symboles diffrents. Ces symboles sont slectionns grce des touches de modication du comportement de base des autres touches, comme par exemple la touche Ctrl ou la touche Alt Gr. Linux est capable de grer des combinaisons de touches faisant intervenir jusqu huit touches de modication diffrentes en plus de la touche affecte (remarquez quavec dix doigts, on peut encore y parvenir !). Ces touches sont rcapitules dans le tableau suivant : Touche de modication Shift altgr control alt 1 2 4 8 Valeur Description

Touches de passage en majuscule (situes au dessus des touches Ctrl sur les claviers franais). Touche Alt Gr, situe droite de la barre despacement. Touches Ctrl, situes aux extrmits infrieures du clavier. Touche Alt, situe gauche de la barre despacement.

141

Chapitre 6. Administration du systme de base Touche de modication shiftl shiftr ctrll ctrlr 16 32 64 128 Valeur Description

Touche de majuscule de gauche. Touche de majuscule de droite. Touche Ctrl de gauche. Touche Ctrl de droite.

Chaque touche dispose dun code numrique qui est une puissance de deux. Lorsquelles sont utilises dans une combinaison avec une touche donne, la somme de ces valeurs est calcule pour dterminer le numro du symbole dans la liste des symboles associs la touche. Comme on peut le voir, toutes les valeurs possibles allant de 0 255 sont ralisables selon la combinaison de touches utilise, ce qui permet donc de dnir effectivement 256 symboles diffrents pour chaque touche du clavier. Cependant, les touches Shift et Ctrl sont utilises plusieurs fois dans le tableau, prcisment trois fois, la premire ne faisant pas de distinction entre la touche de droite et la touche de gauche. En pratique donc, toutes les combinaisons ne sont pas ralisables. Mais en ralit, les touches de contrle du clavier sont des touches comme les autres, et peuvent tre places nimporte o dans le plan de clavier. Il est donc parfaitement possible de raliser une distinction entre les touches Majuscule, Majuscule Droite et Majuscule Gauche (et de mme pour les touches Ctrl). Par exemple, on peut associer la touche Majuscule la touche Echap, ce qui permet de faire la distinction entre les trois variantes de touches de majuscules... Heureusement, il nest pas ncessaire daller jusque l. Les plans de clavier nutilisent en pratique que les quatre premires touches de contrle, qui sont celles que vous connaissez. La dnition des symboles accessibles pour une touche utilise la syntaxe suivant :
keycode = symbole symbole symbole ...

o keycode est le keycode qui identie la touche en question, et symbole est un des symboles accepts dans les plans de clavier. Vous pourrez obtenir la liste des symboles utiliss grce la commande suivante :
dumpkeys --long-info

Vous pourrez voir par exemple les symboles A, B, C, etc. qui reprsentent les lettres classiques, ainsi que des symboles spciaux comme exclamdown, hyphen, cedilla, etc. pour les lettres non alphabtiques. Il existe galement des symboles pour les touches spciales comme Backspace, Delete, Escape. Enn, le symbole VoidSymbol permet de signaler labsence de symbole pour la combinaison de touches considre. En thorie, il faut dnir la liste des 256 symboles accessibles pour chaque touche. Le premier symbole est donc le symbole obtenu par appui direct de la touche, le deuxime est celui obtenu par la combinaison Majuscule + Touche, le troisime celui de la combinaison AltGr + Touche, le quatrime par Majuscule + AltGr + Touche, etc. videmment, il est trs fastidieux de dnir ces 256 possibilits. Pour simplier le format des plans de clavier, il est possible de ne spcier que les combinaisons utilises, ce qui rduit en pratique quatre colonnes de symboles un plan de clavier franais. De plus, les derniers symboles sont facultatifs sils sont tous VoidSymbol. Vous pouvez indiquer au dbut du plan de clavier les valeurs des combinaisons de touches de modications qui seront effectivement utilises avec la syntaxe suivante :
keymaps valeurs

142

Chapitre 6. Administration du systme de base o valeurs est la liste des valeurs ou des plages de valeurs des combinaisons de touches utilises. Les lments de cette liste sont spars par des virgules, et les plages de valeurs sont indiques par leurs premire et dernire valeurs, spares par un tiret. Vous pouvez galement utiliser une autre syntaxe, qui permet de ne modier que les symboles associs certaines combinaisons de touches. Cette syntaxe est trs utile lorsque vous ne dsirez modier que quelques affectations de touches :
modificateur keycode = symbole

Dans cette syntaxe, modificateur est la liste des modicateurs devant intervenir dans la combinaison de touches, et keycode et symbole sont toujours le keycode de la touche et le symbole gnrer. Les modicateurs autoriss sont les noms des touches de modication indiques dans le tableau cidessus, plus le modicateur plain, qui signie quaucune touche de modication nest utilise. Par exemple, la ligne suivante :
plain keycode 16 = q

permet daffecter le symbole q la touche A de votre clavier, et la ligne :


alt keycode 30 = a

permet daffecter le symbole a la combinaison de touches Alt + Q (nessayez surtout pas ces deux exemples, vous deviendriez fou).
Note : Par dfaut, les symboles utilisables dans les plans de clavier sont les symboles du jeu de caractres ISO 8859-1. Dautres encodages sont utilisables, mais celui-ci convient parfaitement pour un clavier franais.

Comme nous lavons dit plus haut, la deuxime partie dun plan de clavier permet daffecter des chanes de caractres certaines touches. Cela est facilement ralisable, avec la syntaxe suivante :
string symbole = "chane"

o symbole est le nom dun des symboles affect prcdemment une touche, et chane est une chane de caractres. Les chanes de caractres tant dlimites par des guillemets anglais ( " ), ceux-ci ne peuvent pas tre utiliss en tant que caractres de ces chanes. Pour rsoudre ce problme, on peut utiliser un antislash comme caractre dchappement :
\"

Vous pouvez galement spcier des caractres directement laide de leur valeur en base huit, laide de la syntaxe suivante :
\0valeur

o valeur est la valeur du caractre. Bien entendu, lantislash tant utilis comme caractre dchappement, il doit lui-mme tre prcd dun caractre dchappement si lon dsire lutiliser dans une chane de caractres :

143

Chapitre 6. Administration du systme de base


\\

Ainsi, si lon veut faire en sorte que la touche F4 afche la chane de caractres Coucou , il suft dutiliser la ligne suivante dans le plan de clavier :
string F4 = "Coucou"

Bien entendu, les chanes de caractres les plus utiles sont celles qui dnissent les squences dchappement pour les touches spciales. Par exemple, la dnition de la touche Page Haut est la suivante :
string PageUp = "\033[5~"

Vous pouvez reconnatre ces squences dchappement la prsence du caractre octal 033, soit 27 en dcimal, qui nest rien dautre que le caractre Escape dans le jeu de caractres ISO 8859-1. Ne vous inquitez par pour linstant de la forme apparemment complique de ces squences dchappement, nous verrons plus loin comment elles sont utilises. Enn, les plans de clavier contiennent la dnition des compositions. Les compositions de touches sont accessibles laide dune touche spciale dite de composition, dont le symbole est Compose dans le plan de clavier (il est donc ncessaire que ce symbole soit affect lune des touches du clavier pour utiliser les compositions). Lorsquon appuie sur la touche de composition, le clavier attend deux autres touches, dont les caractres serviront de base au caractre compos. Par exemple, les caractres ^ et a donne le caractre compos . Les compositions utilisent la syntaxe suivante :
compose caractre caractre to rsultat

o caractre est un des deux caractres composer et rsultat est le caractre rsultant de la composition. Notez bien que les compositions se font sur les caractres, et pas sur les touches. Elles sont donc actives quel que soit la mthode obtenue pour gnrer ces caractres (combinaison de touches ou touches simples).
Note : Le noyau dnit la plupart des compositions ncessaires pour le jeu de caractres ISO 8859-1. Ne les cherchez donc pas en vain dans votre plan de clavier, vous ne les trouverez pas forcment... Dune manire gnrale, vous pourrez trouver de plus amples renseignements concernant les plans de clavier dans la page de man keymaps.

Il est long et difcile de crer un plan de clavier de toutes pices. Heureusement, encore une fois, cette description ntait que didactique. Vous naurez certainement mme pas modier votre plan de clavier (sauf si vous voulez faire des expriences), car des plans de claviers prdnis sont fournis avec toutes les distributions. Ces plans de clavier sont en gnral stocks dans le rpertoire /usr/lib/kbd/keymap. Pour les claviers de PC franais, je vous conseille tout particulirement le plan de clavier fr-latin0.map.gz du sous-rpertoire i386/azerty. Ce plan de clavier permet daccder toutes les touches utilises par le franais, plus la plupart des touches utilises en Europe. Il utilise lencodage ISO 8859-15, an davoir accs aux rares caractres manquants dans lencodage ISO 8859-1.

144

Chapitre 6. Administration du systme de base Le chargement dun plan de clavier est trs simple. Il suft de taper la commande suivante sous le compte root :
loadkeys keymap

o keymap est le nom du chier contenant le plan de clavier utiliser. Si lon ne spcie pas de chier, loadkey attend que vous tapiez la spcication des touches directement. Vous pourrez valider en gnrant le caractre EOF (abrviation de End Of File , ce qui signie Fin de chier ) laide de la combinaison de touche CTRL + D, ou abandonner avec le classique CTRL + C. En gnral, les distributions utilisent la commande loadkey dans les chiers dinitialisation du systme, pour charger le plan de clavier que vous avez choisi linstallation ds le dmarrage. Il est recommand de ne modier le plan de clavier courant que par lintermdiaire du programme de conguration du systme fourni avec votre distribution.

6.7.4.3. Modication des paramtres du clavier


Il nous faut encore voir deux petits utilitaires permettant de xer quelques paramtres du clavier pour nir notre tour dhorizon de ce priphrique. Le premier de ces outils permet de manipuler ltat des diodes lumineuses qui indiquent si le verrou numrique, le verrou des majuscules ou larrt dlement sont actifs. Cet utilitaire se nomme logiquement setleds, et il permet non seulement de xer ltat de ces diodes, mais galement ltat du clavier. Rappelons en effet que les diodes peuvent tre dsynchronises par rapport ltat rel du clavier. Ce cas de gure peut se produire si lon passe dun terminal X un terminal en mode console, tout simplement parce que les serveurs X ne savent pas comment dterminer ltat du clavier sur une console an de le restaurer. La syntaxe de setleds est la suivante :
setleds -D num | caps | scroll

o num, caps et scroll sont des options permettant de prciser respectivement ltat des verrous numriques, majuscules et dlement. Ces options sont de la forme +num, -num pour le verrou numrique, et de forme similaire pour les autres verrous. Comme leur syntaxe lindique, elles permettent denclencher ou de dsenclencher ltat des verrous correspondants du clavier. Ltat des verrous du clavier est conserv par chaque terminal virtuel, indpendamment les uns des autres. Cette commande devra donc tre rpte pour tous les terminaux virtuels utiliss. Loption -D permet de rendre les changements permanents pour le terminal slectionn. Ainsi, si ce terminal est rinitialis, la modication sera conserve. Cest en gnral leffet dsir. Sachez quil est galement possible deffectuer une modication temporaire, et de ne modier que lafchage des diodes (sans changer ltat des verrous). Il est recommand de placer les quelques lignes suivantes dans les chiers dinitialisation de votre systme an dactiver le verrou numrique pour tous les terminaux, si votre distribution ne vous permet pas de le faire par lintermdiaire de son programme de conguration :
INITTTY=ls /dev/tty[1-9] /dev/tty1[0-2] for tty in $INITTTY; do setleds -D +num < $tty done

Ces lignes appellent la commande setleds sur les terminaux virtuels 1 12.

145

Chapitre 6. Administration du systme de base Le deuxime utilitaire est kbdrate. Sa fonction est de xer les paramtres de dlai dattente avant rptition lorsquon maintient une touche enfonce, ainsi que la vitesse de rptition utilise une fois que ce dlai dattente est dpass. Sa syntaxe est elle aussi trs simple :
kbdrate -s -r taux -d dlai

o taux est le taux de rptition, et dlai est le dlai dattente avant le dbut des rptitions de la touche enfonce. Loption -s indique kbdrate de ne pas afcher de messages pendant lexcution de la commande. Les dlais dattente spcis peuvent tre de 250, 500, 750 ou 1000 millisecondes. Les taux de rptition utilisables vont de 2 30 caractres par seconde. Toutefois, les claviers ne peuvent pas accepter toutes les valeurs intermdiaires pour le taux de rptition. Vous trouverez la liste exhaustive des valeurs admissibles dans la page de manuel kbdrate.

6.7.5. Choix de la police de caractres


Par dfaut, la police de caractres utilise par Linux est la police enregistre dans la carte graphique. Cette police convient pour lafchage des textes anglais, car elle utilise la page de codes 437. Il est donc souhaitable, sinon recommand, de changer de police de caractres la fois pour bncier dun encodage adapt la langue franaise, et pour bncier damliorations esthtiques ventuelles. Linux est fourni avec un certain nombre de chiers de polices, qui sont normalement installes dans le rpertoire /usr/lib/kbd/consolefonts. Comme vous pourrez le constater si vous y jetez un coup dil, ce rpertoire contient un grand nombre de polices, utilisant divers encodages. Les polices les plus utiles pour un ordinateur situ en France sont sans doute les polices iso01*, lat1-* et lat0-*. Cette dernire police utilise lencodage ISO 8859-15, et contient donc tous les symboles utiliss en Europe. Il est recommand, mais non ncessaire, dutiliser une des polices encodes en ISO 8859-1 ou en ISO 8859-15, avec un plan de clavier appropri. Par exemple, le plan de clavier fr-latin0.map.gz pourra tre utilis avec la police de caractres lat0-16.psfu.gz. Les polices de caractres sont charges aisment avec lutilitaire setfont. La syntaxe de ce programme est trs simple :
setfont police

o police est le chier de police charger. Si vous ne spciez aucun chier de police, la police par dfaut sera charge. Notez que les chiers de polices peuvent utiliser un encodage particulier spcique, qui ne correspond aucune des tables de conversion prdnies du noyau. Pour ces polices, il est ncessaire de spcier des tables de conversion qui leurs sont propres. Ces tables permettent de convertir les codes des caractres reus par la console en codes Unicode spciaux. Tous ces codes appartiennent une plage de codes Unicode rserve au systme, et que Linux utilise pour dnir les codes qui permettront daccder directement aux caractres de la police. Lassociation entre les codes de caractres de lapplication et leurs descriptions dans la police de caractres est donc ralise grce ces tables de conversion. Vous pouvez charger une table de conversion spcique laide de lutilitaire mapscrn. Cet utilitaire prend en ligne de commande un chier contenant la table de conversion, et charge cette dernire dans la quatrime table de conversion du noyau (cest--dire la table rserve lutilisateur) :
mapscrn fichier

(o fichier est le chier contenant la description de la table de conversion).

146

Chapitre 6. Administration du systme de base Notez que lutilitaire mapscrn charge la table de conversion, mais ne sassure pas que le jeu de caractres courant utilise cette table. Par consquent, vous aurez sans doute utiliser les codes dchappement \033(K et \033)K pour faire pointer respectivement les jeux de caractres G0 et G1 sur la quatrime table. Ces codes dchappement peuvent tre saisis laide de la commande cat :

cat

Il vous faudra alors taper sur la touche Echap, puis saisir (K ou )K , et enn signaler la n de chier avec un CTRL + D. Faites bien attention ce que vous fates : en cas derreur, le jeu de caractres utilis peut rendre lcran totalement illisible. Si cela devait se produire, vous devrez taper laveugle la commande reset. Cette table sassure que le jeu de caractres actif est le jeu de caractres G0, et que celui-ci utilise la premire table de conversion. Vous pourrez galement recharger la police par dfaut laide de setfont. Heureusement, la plupart des polices de caractres contiennent galement la table de conversion utiliser, et setfont effectue tout le travaille en une seule passe. Il charge la police de caractres dans la carte graphique, puis sa table de conversion dans le noyau, et sassure enn que le jeux de caractres G0 soit actif et utilise cette table. Ainsi, lutilisation de mapscrn est devenue facultative. La dernire tape dans la conguration de la police de caractres est le chargement de la table de conversion Unicode vers les indices des caractres dans la police. Cette table est essentielle, puisque cest elle qui indique lemplacement des caractres de la police utiliser pour chaque code Unicode. Ces tables dpendent donc de lencodage utilis par la police de caractres. Le chargement des tables de conversion est ralise par le programme loadunimap. La syntaxe de ce dernier est la mme que celle de mapscrn :
loadunimap fichier

o fichier est un chier de conversion appropri. Vous trouverez de tels chiers dans le rpertoire /usr/lib/kbd/consoletrans. Les chiers proposs permettent dutiliser les polices de caractres encodes selon les encodages les plus courants. Bien entendu, certaines polices disposent de leur propre table dencodage. Encore une fois, lutilisation de loadunimap est rendue facultative par setfont, qui se charge deffectuer tout le travail. Cest notamment le cas pour les polices fr-latin0.psfu.gz et fr-latin1.psfu.gz, dont le u en n dextension indique la prsence de la table de conversion Unicode.

6.7.6. Conguration des paramtres du terminal


La conguration du gestionnaire de la console ne concerne proprement parler que les plans de clavier et les polices de caractres. Pour les applications, tout se passe comme si elles accdaient un terminal comme les autres, donc par lintermdiaire dune ligne de communication. En gnral, les lignes de communication utilises pour les terminaux sont des lignes srie, cest--dire des lignes sur lesquelles les donnes sont envoyes sous la forme de petits paquets de 5 8 bits, et contrles par dautres bits ventuellement facultatifs (bit de stop et bit de parit). Il va de soi que tous les terminaux ne sont pas identiques, et quun certain nombre de paramtres doivent tre dnis tant au niveau des terminaux quau niveau des lignes de communication utilises. Ces paramtres peuvent tre xs avec la commande stty. Leur nombre interdit ici une description exhaustive, dautant plus que pour un terminal local, ils sont tous initialiss des valeurs par dfaut

147

Chapitre 6. Administration du systme de base correctes, et vous naurez pas les modier. Vous pouvez toutefois consulter la page de manuel de stty pour de plus amples renseignements ce sujet. Si vous tes curieux, vous pourrez obtenir tout moment la liste des paramtres de la ligne de communication dun terminal avec loption -a de stty :
stty -a

Comme vous pourrez le constater, le nombre des options utilises est assez impressionnant. Sont dnis, entre autres, les paramtres de vitesse de communication de la ligne (option speed), le format des donnes transfres sur la ligne (option parodd pour la parit impaire, option cs8 pour des paquets 8 bits, etc.), la gomtrie du terminal (options rows et columns), les caractres de contrle affects un certain nombre dactions (comme, par exemple, le caractre ^Z , accessible par la combinaison de touches CTRL + Z, qui permet de suspendre lexcution du programme utilisant la ligne, et le caractre ^C , qui permet de le tuer) et des options de gestion des caractres transfrs (par exemple, echo fait en sorte que tout caractre entrant est immdiatement r-mis sur la console, ce qui permet de voir ce que lon tape). Parmi ces paramtres, les plus intressants sont sans doute ceux dnissant les actions associes aux diffrentes touches de contrle. Vous pourrez modier ces paramtres avec la syntaxe suivante :
stty action caractre

o action est lune des actions gres par stty, comme par exemple susp pour suspendre le processus en cours, intr pour le tuer, etc. Remarquez que laction kill na rien voir avec la gestion des signaux des processus. Elle permet simplement deffacer la ligne courante du terminal.

6.7.7. Description des terminaux


Le dernier maillon de la chane de gestion des caractres est bien entendu les applications. La plupart des applications sont capables de traiter les caractres simples comme les lettres de lalphabet, les chiffres et la ponctuation. Cependant, il nen va pas de mme pour les codes dchappement des terminaux. Comme nous lavons vu, certaines touches sont programmes pour renvoyer des codes dchappement dans le plan de clavier. Mais le gestionnaire de la console est galement capable dinterprter certains codes dchappements, an deffectuer des actions spciques. Par exemple, les touches du curseur mettent des codes dchappement spciaux, et il est du ressort de chaque programme de reconnatre ces codes et dagir en consquence. De mme, les programmes peuvent envoyer des codes dchappement la console pour dplacer le curseur afch, effacer lcran, effectuer un dlement, etc. Le malheur, cest que les codes dchappement utilisables diffrent selon les terminaux utiliss. Les terminaux les plus standards sont les terminaux VT100 et VT102 (la console Linux en fait partie). Cependant, les programmes ne peuvent pas savoir, a priori, quels codes dchappement doivent tre utiliss pour effectuer telle ou telle action. Cest pour ces diverses raisons que les systmes Unix disposent dune base de donne de dnition des terminaux. Cette base de donne contient tous les codes dchappement que chaque type de terminal est capable de grer, dcrits dune manire uniforme. Ainsi, les programmes dsirant grer correctement les terminaux nont qu consulter cette base de donnes pour interprter et rcuprer les codes dchappement utiliss par le terminal. Historiquement, la dnition des terminaux tait ralise dans le chier de conguration /etc/termcap. Ce chier est obsolte et a t remplac par la base de donnes terminfo, que tous les programmes modernes doivent prsent utiliser. Ce-

148

Chapitre 6. Administration du systme de base pendant, le chier de conguration /etc/termcap a t conserv par compatibilit avec les vieux programmes qui lutilisent encore. Le chier termcap comprend une ligne pour chaque type de terminal dcrit. Cette ligne est constitue dun certain nombre de champs, spars par le caractre :. Le premier champ de chaque ligne contient la description du terminal que cette ligne dcrit. Les champs suivants sont des dnitions des variables contenant les squences dchappement du terminal. Les informations descriptives du terminal sont les suivantes :

le nom abrg du terminal ; le nom complet du terminal ; les autres noms sous lesquels le terminal est galement connu ; la description dtaille du terminal (toujours en dernier).

Ces informations sont spares les unes des autres par une barre verticale (|). Viennent ensuite les dnitions des variables. Chaque variable est dnie selon la syntaxe suivante :
variable=squence

o variable est le nom de la variable, et squence est la squence dchappement associe cette variable. Notez que certaines variables ne prennent pas de paramtres, et que leur prsence dans la description du terminal signale simplement un comportement particulier de celui-ci. Notez galement que pour les variables numriques, le caractre dgalit est remplac par un caractre dise (#). Un certain nombre de variables peuvent tre dnies pour chaque terminal. Ce sont ces variables qui sont utilises par les programmes pour retrouver les squences dchappement du terminal. Par consquent, les noms de ces variables sont xs une fois pour toutes, et elles reprsentent toujours la mme fonctionnalit. La liste des fonctionnalits est, encore une fois, trs grande, et les variables utilisables sont listes exhaustivement dans la page de manuel termcap.
Note : Il est vident que les lignes du chier /etc/termcap peuvent devenir trs longues. Il est donc possible de les taler sur plusieurs lignes physiques, en insrant le caractre de continuation de ligne antislash (\). Aprs chaque retour la ligne, il faut utiliser une indentation laide du caractre de tabulation.

Vous trouverez ci-dessous un exemple de dnition de terminal :


lx|linux|Console Linux:\ :do=^J:co#80:li#25:cl=\E[H\E[J:sf=\ED:sb=\EM:\ :le=^H:bs:am:cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:\ :ce=\E[K:cd=\E[J:so=\E[7m:se=\E[27m:us=\E[36m:ue=\E[m:\ :md=\E[1m:mr=\E[7m:mb=\E[5m:me=\E[m:is=\E[1;25r\E[25;1H:\ :ll=\E[1;25r\E[25;1H:al=\E[L:dc=\E[P:dl=\E[M:\ :it#8:ku=\E[A:kd=\E[B:kr=\E[C:kl=\E[D:kb=^H:ti=\E[r\E[H:\ :ho=\E[H:kP=\E[5~:kN=\E[6~:kH=\E[4~:kh=\E[1~:kD=\E[3~:kI=\E[2~:\ :k1=\E[[A:k2=\E[[B:k3=\E[[C:k4=\E[[D:k5=\E[[E:k6=\E[17~:\ :k7=\E[18~:k8=\E[19~:k9=\E[20~:k0=\E[21~:K1=\E[1~:K2=\E[5~:\ :K4=\E[4~:K5=\E[6~:\ :pt:sr=\EM:vt#3:xn:km:bl=^G:vi=\E[?25l:ve=\E[?25h:vs=\E[?25h:\ :sc=\E7:rc=\E8:cs=\E[%i%d;%dr:\ :r1=\Ec:r2=\Ec:r3=\Ec:

149

Chapitre 6. Administration du systme de base

Cette ligne permet de dnir le terminal associ la console Linux. Vous pourrez par exemple reconnatre le nombre de colonnes et de lignes (variables co et li), ainsi que les codes dchappement associs aux touches du curseur (variable ku, kd, kr et kl respectivement pour les touches haut, bas, droite et gauche). Par exemple, la variable cl donne la squence dchappement utilisable pour effacer lcran et faire revenir le curseur en haut gauche (squence dchappement Esc [ H Esc [ J ). Comme il la dj t dit plus haut, la liste complte des variables peut tre obtenue en consultant la page de manuel termcap, et ce chier ne sera pas dcrit plus en dtail ici. La base de donnes terminfo a t introduite pour combler certaines limitations du chier termcap. Si le principe de fonctionnement est presque le mme, les informations fournies tiennent compte des terminaux plus rcents et de nouvelles fonctionnalits. Cela signie en pratique que de nouvelles variables ont t dnies pour dcrire les nouveaux terminaux. Inversement, certaines variables de termcap ont disparu parce quelles devenaient obsoltes, et ont t remplaces par des variables quivalentes de terminfo. La principale diffrence entre terminfo et termcap est que la description des terminaux nest plus stocke dans un chier de conguration en mode texte. Toutes les donnes sont dsormais stockes dans des chiers binaires, qui peuvent tre gnrs laide du programme tic. Ces chiers binaires sont usuellement placs dans les sous-rpertoires du rpertoire /usr/share/terminfo/. En fait, le nombre de chiers de description est tellement grand quils ont t regroups par ordre alphabtique. Ainsi, le rpertoire /usr/share/terminfo contient des sous-rpertoires dont les noms sont les premires lettres des chiers de description, et chaque chier de description est situ dans le rpertoire correspondant. Par exemple, le chier de description des terminaux Linux se nomme tout simplement linux. Comme la premire lettre de son nom est l, il est stock dans le rpertoire /usr/share/terminfo/l/, avec les descriptions de tous les autres terminaux dont le nom commence par l.
Note : En fait, les chiers de description de terminaux peuvent tre placs un autre emplacement que lemplacement par dfaut. Les bibliothques de programme utilisant les informations de terminfo cherchent en effet en premier dans le chemin rfrenc par la variable denvironnement TERMINFO, puis dans le rpertoire .terminfo du rpertoire de lutilisateur. Ce nest que si ces deux recherches chouent quelles utilisent les informations du rpertoire par dfaut.

Comme nous lavons dit, les chiers de description sont des chiers binaires, qui ont t compils laide du compilateur tic. Cependant, vous pouvez parfaitement visualiser le contenu de ces chiers ou comparer deux chiers laide de lutilitaire infocmp. Par exemple, vous pouvez visualiser sous une forme lisible les informations du chier de description des terminaux Linux avec la commande suivante :
infocmp linux

Vous obtiendrez certainement un rsultat semblable ceci :


#Reconstructed via infocmp from file: /usr/lib/terminfo/l/linux linux|linux console, am, bce, eo, mir, msgr, xenl, xon, colors#8, it#8, pairs#64, acsc=+\020\,\021-\030.^Y0\333\004a\261f\370g\361h\260i\316j\\ 331k\277l\32m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\\ 363z\362{\343|\330}\234~\376,

150

Chapitre 6. Administration du systme de base


bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l, clear=\E[H\E[J, cnorm=\E[?25h, cr=^M, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=^J, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, cvvis=\E[?25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, flash=\E[?5h\E[?5l$<200/>, home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J, invis=\E[8m, kb2=\E[G, kbs=\177, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kend=\E[4~, kf1=\E[[A, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf2=\E[[B, kf20=\E[34~, kf3=\E[[C, kf4=\E[[D, kf5=\E[[E, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khome=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, kspd=^Z, nel=^M^J, op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM, rmacs=\E[10m, rmir=\E[4l, rmpch=\E[10m, rmso=\E[27m, rmul=\E[24m, rs1=\Ec, sc=\E7, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;\ %?%p5%t;2%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m, sgr0=\E[m, smacs=\E[11m, smir=\E[4h, smpch=\E[11m, smso=\E[7m, smul=\E[4m, tbc=\E[3g, u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?6c, u9=\E[c, vpa=\E[%i%p1%dd,

Comme vous pouvez le constater, le format de ces informations est similaire celui de celles qui sont enregistres dans le chier /etc/termcap. Les principales diffrences sont que les diffrents champs sont spars par des virgules (,) au lieu du caractre deux points (:), et quil est possible de les rpartir sur plusieurs lignes physiques (il est donc inutile dutiliser le caractre antislash en n de ligne physique pour indiquer la continuation de la ligne logique). De plus, le nom des variables utilises dans les chiers terminfo nest pas le mme a priori. Cependant, le principe dutilisation de ces variables reste le mme, chacune dentre elles permet de dnir une des fonctionnalits gres par le terminal et de dnir la squence dchappement ncessaire lobtention de cette fonctionnalit si ncessaire. Vous pourrez trouver la liste exhaustive des variables utilisables dans la page de manuel terminfo. Le format des chiers de conguration de terminfo ne sera donc pas dcrit plus en dtail dans ce document. Quils utilisent des bibliothques bases sur termcap ou terminfo, les programmes doivent tous connatre le nom du terminal courant pour rcuprer les informations qui permettent de lutiliser dans ces bases de donnes. Cest prcisment ce quoi sert la variable denvironnement TERM. Cette variable contient en permanence le nom du terminal courant, que les programmes peuvent utiliser comme index dans les bases de donnes termcap ou terminfo. Ainsi, si vous dsirez travailler sur un terminal Linux, vous pourrez xer le type de terminal correct avec la commande suivante :
export TERM=linux

La liste des noms de terminaux utilisables peut tre obtenue en lisant directement le chier termcap. Cette liste peut tre obtenue plus facilement pour terminfo, laide de lutilitaire toe (abrviation de langlais Table Of terminfo Entry ).

151

Chapitre 6. Administration du systme de base Bien entendu, vous naurez dnir la valeur de TERM que si cette variable denvironnement nest pas correctement dnie, ce qui est trs rare. En fait, cela ne peut se produire que lors dune connexion distance sur un autre ordinateur, dont les terminaux ne sont pas de type Linux.

6.7.8. Paramtrage des applications


En thorie, la description du terminal courant fournie par les bases de donnes termcap ou terminfo est sufsante pour faire fonctionner correctement la plupart des applications. En particulier, les programmes qui utilisent les bibliothques de fonctions de manipulation des terminaux sont capables dutiliser ces informations. Cest le cas par exemple de tous les programmes qui utilisent les bibliothques curses ou ncurses , car celles-ci sappuient sur la base de donnes terminfo. Cependant, certaines applications utilisent un mcanisme plus simple (mais moins souple) pour grer les terminaux. Pour ces applications, une conguration spcique doit tre effectue, souvent pour chaque terminal, en prcisant les codes dchappement utiliser dans leurs chiers de conguration. On remarquera la prsence du shell bash , de lditeur vi et du programme de pagination less dans cette catgorie de logiciels. Comme ce sont les logiciels les plus couramment utiliss, il est indispensable dindiquer comment les congurer pour une utilisation correcte.

6.7.8.1. Conguration du clavier pour la bibliothque readline


Un certain nombre dapplications, dont le shell bash , utilisent la libraire GNU readline pour obtenir les lignes de commandes saisies par lutilisateur. Tous ces programmes peuvent donc tre congurs de la mme manire, grce au chier de conguration de la bibliothque readline. Cette bibliothque recherche son chier de conguration en premier lemplacement indiqu par la variable denvironnement INPUTRC. Si cette variable denvironnement nest pas dnie, le chier de conguration ~/.inputrc est lu pour dterminer les squences dchappement utiliser. Il est donc recommand de crer un chier de conguration gnral /etc/inputrc et de dnir la variable denvironnement INPUTRC an de dnir des paramtres communs tous les utilisateurs. Vous pouvez galement recopier ce chier dans les rpertoires personnels de tous les utilisateurs sous le nom .inputrc. Ainsi, si vous voulez grer correctement le clavier franais sous le shell bash, vous devrez vous assurer que les lignes suivantes sont places dans votre chier inputrc :
# Active la gestion du huitime bit des caractres # (par exemple pour les caractres accentus) : set meta-flag on set input-meta on set output-meta on set convert-meta off # Dfinit les codes dchappement associs aux touches du curseur : "\e[1~": beginning-of-line "\e[3~": delete-char "\e[4~": end-of-line "\e[5~": history-search-backward "\e[6~": history-search-forward "\e[C": forward-char "\e[D": backward-char "\e[A": previous-history "\e[B": next-history

152

Chapitre 6. Administration du systme de base


# Redfinit les codes dchappement pour lmulateur de terminal xterm : $if term=xterm "\e[1~": history-search-backward "\e[4~": set-mark "\e[H": beginning-of-line "\e[F": end-of-line $endif

Ce chier commence par autoriser le traitement des caractres dont le bit meta , cest--dire le huitime bit, est positionn. Cest en particulier le cas de tous les caractres accentus dans les principales pages de codes ; ces options sont donc ncessaires pour pouvoir utiliser ces caractres dans le shell. La suite du chier dnit les actions associes chaque code dchappement du terminal. Le caractre dchappement est reprsent ici par la chane de caractres \e . Comme les codes dchappement sont diffrents pour la console et pour les mulateurs de terminaux de XWindow, il est ncessaire de les rednir en fonction de la nature du terminal.

6.7.8.2. Conguration du clavier pour vi


Lditeur en ligne de commande vi nest pas rput pour tre agrable utiliser. Cela provient essentiellement de sa distinction entre les mode de commande, ddition et de visualisation. Mais cela nest pas sufsant pour le rendre hassable : la torture psychologique impose par la mauvaise gestion du curseur vient souvent bout des plus rsistants. Heureusement, Linux fournit un clone nettement plus puissant et qui permet de rsoudre ces problmes : vim. Lditeur vim peut bien entendu tre parfaitement compatible avec vi an ne pas drouter les habitus de vi. Mais il dispose en plus de fonctionnalits avances qui en font un outil extrmement congurable, et il est possible de le rendre nettement plus ergonomique que son anctre. Malheureusement, il faut reconnatre que la plupart des distributions fournissent un vim brut de fonderie , ce qui fait que seuls ceux qui se lancent dans la lecture de son aide peuvent parvenir lutiliser correctement. Les options qui sont proposes ici sont donc donnes simplement titre indicatif, mais permettront peut-tre de rendre vim un peu plus ergonomique. Les options de conguration de vim sont stockes dans deux chiers. Le premier chier est le chier de conguration commun tous les utilisateurs, vimrc. Ce chier peut tre plac soit dans le rpertoire /etc/, soit dans le rpertoire /usr/share/vim/, selon votre distribution. Le deuxime chier est le chier de prfrences personnelles de chaque utilisateur, et se nomme .vimrc. Il est normalement plac dans le rpertoire personnel de lutilisateur. Plusieurs types doptions peuvent tre indiques dans ces chiers de conguration. Les premires associent les actions effectuer aux codes dchappement gnrs par les touches du curseur. Les autres spcient simplement le comportement de lditeur et le paramtrage de ses principales fonctionnalits. Vous trouverez ci-dessous les principales options que vous pourrez ajouter votre chier de conguration vimrc. Ces options rendront sans doute lutilisation de vim beaucoup plus agrable.

" " " " "

Exemple doptions de configuration pour vim. Notez que les commentaires sont introduits ici par des guillemets anglais (") et non par des dises (#), contrairement aux fichiers de configuration de la plupart des autres applications.

" viter tout pris la compatibilit avec vi, qui est insupportable : set nocompatible

153

Chapitre 6. Administration du systme de base

" Dfinir les touches du clavier : " Gestion du curseur en mode de visualisation : map ^[OA k map ^[[A k map ^[OB j map ^[[B j map ^[OD h map ^[[D h map ^? h map ^H h map ^[OC l map ^[[C l map ^[[2~ i map ^[[3~ x map ^[[1~ 0 map ^[OH 0 map ^[[H 0 map ^[[4~ $ map ^[OF $ map ^[[F $ map ^[[5~ ^B map ^[[6~ ^F map ^[[E "" map ^[[G "" map ^[OE "" " Gestion du pav numrique en mode de visualisation : map ^[Oo : map ^[Oj * map ^[Om map ^[Ok + map ^[Ol + map ^[OM ^M map ^[Ow 7 map ^[Ox 8 map ^[Oy 9 map ^[Ot 4 map ^[Ou 5 map ^[Ov 6 map ^[Oq 1 map ^[Or 2 map ^[Os 3 map ^[Op 0 map ^[On . " Gestion du pav numrique en mode insertion : map! ^[Oo : map! ^[Oj * map! ^[Om map! ^[Ok + map! ^[Ol + map! ^[OM ^M map! ^[Ow 7 map! ^[Ox 8

154

Chapitre 6. Administration du systme de base


map! map! map! map! map! map! map! map! map! ^[Oy ^[Ot ^[Ou ^[Ov ^[Oq ^[Or ^[Os ^[Op ^[On 9 4 5 6 1 2 3 0 .

" Gestion du curseur dans les modes dinsertion et de commande : map! ^[[H <Home> map! ^[OH <Home> map! ^[[F <End> map! ^[OF <End> map! ^[OA <Up> map! ^[OB <Down> map! ^[OC <Right> map! ^[OD <Left> map! ^[[3~ <Delete> map! ^[OE <Space>

" Dfinir les autres options globales : " Paramtrage des touches Backspace et Delete : set t_kb=^? set t_kD=ESC[3~ " Faire en sorte que le "backspace" efface mme les sauts de lignes : set bs=2 " Utiliser lindentation automatique dans les fichiers C et C++ " (pour les programmeurs) : set cindent " Utiliser la coloration syntaxique pour les principaux langages " de programmation : set background=dark if &t_Co > 1 syntax on endif " Signaler les correspondances de parenthses, accolades et crochets : set showmatch " Rappeler le mode de fonctionnement courant : set showmode

Vous constaterez que certains caractres de contrle sont utiliss dans ce chier de conguration, dont le caractre de contrle ^[ , qui reprsente le caractre dchappement. Ces caractres sont reprsents avec la notation classique ^C , o C est la lettre utiliser avec la touche CTRL pour obtenir ce caractre. Ces notations ne font que reprsenter les caractres de contrle, et doivent tre remplaces par les caractres quelles reprsentent dans le chier de conguration. Pour saisir ces caractres spciaux, vous devrez passer en mode insertion dans vi, puis utiliser la combinaison

155

Chapitre 6. Administration du systme de base de touches CTRL+V. Ce raccourci permet dindiquer vi quil doit insrer les codes dchappement directement issus du clavier, sans les interprter. Vous pourrez alors taper la squence de touches gnrant le caractre de contrle ou la squence dchappement dsire. Par exemple, vous pourrez obtenir le caractre ^H en tapant la combinaison de touches CTRL+H, et le caractre ^? en appuyant sur la touche Backspace (retour arrire). Les caractres dchappement peuvent tre gnrs par la touche Echap ou directement par les touches du curseur.
Note : En fait, vous pouvez galement utiliser les chanes de caractres \e et <Esc> pour reprsenter le caractre dchappement. Mais certaines options ne fonctionnent pas avec ces notations, et je vous les dconseille.

Vous pouvez bien entendu ajouter dautres options dans ce chier de conguration. En pratique, toutes les options utilisables dans le mode de commande de vim peuvent tre xes dnitivement dans ce chier. Vous obtiendrez de laide sur ces options grce la commande :help de vim.

6.7.8.3. Conguration du clavier pour less


Le programme de pagination less est naturellement bien plus agrable utiliser que son anctre more, puisquil permet de revenir sur les pages dj consultes. Cependant, il peut le devenir encore plus si lon sarrange pour quil reconnaisse les touches du curseur. Le programme less lit ses informations de conguration dans un chier binaire dont lemplacement est spci par la variable denvironnement LESSKEY. Si cette variable denvironnement nest pas dnie, less utilise le chier de conguration .less du rpertoire personnel de lutilisateur. Ce chier binaire contient les associations entre les squences dchappement du terminal et les actions effectues par less. Il est gnr par le compilateur lesskey, partir dun chier de conguration textuel classique. Ce chier de conguration comprend plusieurs sections, qui permettent de dnir les touches utilises en mode de commande, les touches utilises en mode ddition de lignes (par exemple dans une commande de recherche), et enn les variables denvironnement utilises par less. Vous trouverez ci-dessous un exemple de chier de conguration pour less. Vous trouverez de plus amples renseignements sur les actions qui peuvent tre associes aux squences dchappement et aux caractres de contrle dans la page de manuel lesskey.
# Exemple de fichier de configuration pour less # Premire section : #command \e[B forw-line \e[A back-line \e[6~ forw-scroll \e[5~ back-scroll \177 back-screen ^H back-screen \e[3~ back-screen \e[2~ visual \e[1~ goto-line \eOH goto-line \e[4~ goto-end \eOF goto-end \eOM forw-line

156

Chapitre 6. Administration du systme de base

# Deuxime section : #line-edit \177 backspace ^H backspace \e[3~ delete \e[1~ home \e[H~ home \eOH home \e[4~ end \e[F~ end \eOF end \e[5~ up \e[6~ down \e[2~ insert \e[E insert \e[G insert \eOE insert \eOo insert : \eOj insert * \eOm insert \eOk insert + \eOl insert + \eOM insert \eOw insert 7 \eOx insert 8 \eOy insert 9 \eOt insert 4 \eOu insert 5 \eOv insert 6 \eOq insert 1 \eOr insert 2 \eOs insert 3 \eOp insert 0 \eOn insert .

# Troisime section : #env LESSCHARSET=latin1

Conformment un usage courant, les commentaires sont introduits par le caractre dise (#) dans ce chier de conguration. Cependant, certains commentaires sont utiliss pour identier le dbut des trois sections du chier. Il sagit des commentaires #command , #line-edit et #env . Il ne faut donc surtout pas supprimer ces commentaires dans votre chier de conguration. Encore une fois, le caractre dchappement est symbolis par la chane de caractre \e . De mme, les caractres de contrle sont reprsents par la notation classique ^C , o C est la touche utilise en combinaison avec CTRL pour gnrer ce caractre de contrle. Notez que, contrairement au chier de conguration /etc/vimrc, ces notations peuvent tre utilises directement dans le chier de conguration de less.

157

Chapitre 6. Administration du systme de base Ce chier de conguration pourra tre compil avec le programme lesskey an de gnrer le chier binaire utilis par less. Pour cela, il faudra simplement utiliser la syntaxe suivante :
lesskey fichier

o fichier est le nom du chier de conguration compiler. Le chier binaire gnr est par dfaut celui rfrenc par la variable denvironnement LESSKEY. Si cette variable nest pas dnie, un chier .less sera cr dans le rpertoire personnel de lutilisateur.

6.7.9. Conguration de la souris


Linstallation de la souris est une opration trs simple raliser. La seule chose importante est de bien connatre les diffrents types de souris et de ne pas les confondre. Autrefois, la plupart des souris taient des souris connectes sur le port srie (souris srielles). Aujourdhui, ces souris se font de plus en plus rares, et le port de prdilection est le port PS/2. Ce port a t introduit par IBM dans ses ordinateurs PS/2 et est quelque peu plus pratique que le port srie, car il dnit une interface standard pour toutes les souris. De plus, il permet de dgager un des ports srie, ce qui simplie la conguration des modems. Le port PS/2 ressemble au port clavier du mme type, et en fait on peut se tromper et brancher la souris la place du clavier et inversement. Il ne faut surtout pas confondre les souris PS/2 avec les souris Bus, qui ont t vendues autrefois et que lon ne trouve quasiment plus prsent. Ces souris pouvaient se connecter sur des cartes spciales voire, parfois, sur la carte graphique. Pour que linstallation de la souris se fasse correctement, il faut sassurer que les options concernant la souris ait bien t dnies dans la conguration du noyau de Linux. Cela nest pas ncessaire pour les souris srie. Vous pouvez consulter la Section 7.3 pour plus de dtails sur la conguration du noyau. Lorsque cette tape est faite, il ne reste plus qu indiquer au programme de gestion de la souris quel type de souris il a affaire. Ce programme, nomm gpm, permet dutiliser la souris en mode texte. La conguration de la souris pour XWindow sera vue dans le Chapitre 10. La conguration de gpm se fait normalement par lintermdiaire du programme de conguration de votre distribution. Lorsquon nutilise pas XWindow, gpm est lanc automatiquement au dmarrage. Il se peut que votre programme de conguration vous demande le type de souris utiliser. Dans ce cas, il faut choisir le bon type, faute de quoi gpm ne fonctionnera pas correctement. Attention, si vous dsirez utiliser une souris molette (souris disposant dune petite roue entre les deux boutons, et permettant de faire dler le contenu des fentres), le type de souris utiliser est imps2 et non simplement ps2 . Pour avoir la liste des types de souris grs par gpm, il suft de le lui demander avec la ligne de commande suivante :
gpm -t help

Normalement, vous aurez utiliser gpm avec la ligne de commande suivante :


gpm -t type -m /dev/mouse

o type est le type de la souris que gpm doit utiliser et /dev/mouse est un lien vers le chier spcial de priphrique grant votre souris.

158

Chapitre 6. Administration du systme de base

6.8. Conguration de limprimante


Le sous-systme dimpression de Linux est emprunt un autre systme Unix clbre, BSD. Les commandes utilisateurs sont donc les mmes, et son fonctionnement repose sur les mmes principes. En gnral, les imprimantes sont connectes au port parallle de lordinateur (sauf les imprimantes professionnelles, qui disposent dune interface rseau). Il est donc ncessaire que la conguration du port parallle soit correcte. Dans la suite, nous supposerons que limprimante est connecte sur le port /dev/lp0 (premier port parallle, soit lquivalent de LPT1 sous DOS).

6.8.1. Filtres dimpression


Il est possible denvoyer directement un chier imprimer limprimante, en le recopiant directement sur le chier spcial de priphrique de limprimante. Cette technique peut parfaitement convenir pour un chier texte simple, mais elle pose quelques problmes. Premirement, elle ne fonctionne quavec des chiers que limprimante peut comprendre, donc des chiers contenant des instructions qui lui sont spciques. Mais le problme le plus important est sans doute le fait que cette technique nest pas utilisable lorsque plusieurs programmes ou plusieurs utilisateurs dsirent envoyer un chier en mme temps limprimante. Le sous-systme dimpression utilise donc un mcanisme de les dattente pour les impressions ( spool en anglais). Tous les travaux dimpression soumis sont placs dans une le dattente, et attendent leur tour pour tre envoys limprimante associe cette le. Une fois que limpression est termine, les travaux sont supprims de la le. Ainsi, un seul programme accde limprimante : le sous-systme dimpression. Notez quil est possible de dnir plusieurs les dattentes sur une mme imprimante, selon la nature du travail effectuer. Par exemple, une le peut se charger des documents textes, et une autre des documents graphiques. Bien entendu, le sous-systme dimpression contrle tous les accs limprimante et assure quun seul document est en cours dimpression chaque instant. Dautre part, le sous-systme dimpression donne la possibilit de spcier la nature des chiers imprimer, an de les traduire dans un langage comprhensible par limprimante. Ce travail de conversion est ralis par un ensemble de programmes que lon appelle les ltres. Un ltre nest en fait rien dautre quun programme qui reoit un chier en entre et qui fournit la traduction de ce chier dans un autre format en sortie. Les distributions Linux sont fournies avec un certain nombre de ltres qui permettent de grer la plupart des formats de chiers utiliss. Parmi ces formats de chiers, il en est un qui est plus important que les autres : PostScript. PostScript est un langage de description de pages invent par Adobe, et que nombre dimprimantes laser comprennent. En fait, il sagit dun vritable langage de programmation, qui permet de programmer les priphriques dont la vocation est dafcher ou dimprimer des documents. Techniquement parlant, PostScript permet dobtenir une qualit dimpression irrprochable, car cest limprimante elle-mme qui dessine la page imprimer. Le problme est que toutes les imprimantes ne comprennent pas forcment le langage PostScript, notamment les imprimantes jet dencre. Pour ces imprimantes, il faut donc un ltre particulier, capable de convertir le PostScript dans le langage graphique de limprimante. Linux utilise pour cela un interprteur PostScript . Un interprteur PostScript est un programme capable de comprendre les chiers PostScript et de les convertir dans le format compris par limprimante. Linterprteur couramment utilis sous Linux est GhostScript, parce que cest un logiciel libre (cependant, la version courante est toujours commerciale). Il est galement capable dafcher les chiers PostScript sous XWindow, et de grer la plupart des imprimantes du march. La plupart des autres ltres ont donc pour vocation de convertir un chier en PostScript. Lavantage de cette technique est que toutes les imprimantes apparaissent comme tant des imprimantes PostScript pour les programmes dsirant imprimer. Ainsi, leur programmation est beaucoup plus simple, puis-

159

Chapitre 6. Administration du systme de base quils nont quun seul format grer. Bon nombre dapplications gnrent directement des chiers PostScript, qui sont donc envoys directement GhostScript pour limpression dnitive. Figure 6-3. Filtres dimpression et imprimantes PostScript

Comme on le voit, pour Linux, le langage dimpression universel est le langage PostScript. Bien entendu, cela est idal si lon dispose effectivement dune imprimante PostScript, mais mme dans le cas contraire, les impressions se font parfaitement grce GhostScript.

6.8.2. Commandes dimpression


La commande dimpression sous Linux est la commande lpr (abrviation de langlais Laser PRinter ). Cette commande est trs simple utiliser, comme le montre la syntaxe suivante :
lpr fichier

o fichier est le nom du chier imprimer. Cette commande se contente de placer le chier imprimer dans un rpertoire affect la le dattente des travaux dimpression. Le travail dimpression est ensuite effectu par le dmon lpd, qui fait passer chaque chier imprimer travers la srie de ltres pour le convertir dans le langage de limprimante, puis qui alimente limprimante. La liste des travaux dimpression en attente peut tre consulte avec la commande lpq. Chaque travail en attente porte un numro, grce auquel on peut le manipuler. Entre autres oprations, il est possible de labandonner laide de la commande lprm. Enn, pour consulter et contrler ltat des les dimpression, on peut utiliser la commande lpc. Cette commande peut prendre des options en ligne de commande an de prciser lopration effectuer. Par exemple, loption status permet dobtenir ltat de chacune des les dimpression. Les autres options permettent darrter le travail en cours, de le suspendre, de dsactiver limprimante pour les travaux suivants, et inversement de relancer les travaux dimpression sur cette le.

160

Chapitre 6. Administration du systme de base

6.8.3. Conguration des les dimpression


Les distributions modernes fournissent toutes un outil permettant deffectuer la conguration du soussystme dimpression. Il est videmment recommand dutiliser ces outils, car le rsultat est assur et la vie en est dautant plus facile. De plus, les distributions peuvent fournir des ltres complmentaires que seuls ces outils connaissent et sont capables dinstaller. Toutefois, il est bon de savoir quels sont les mcanismes mis en uvre lors de limpression dun document. Nous allons donc nous y intresser brivement dans ce paragraphe. Le dmon lpd utilise le chier de conguration /etc/printcap pour dterminer lensemble des les dimpression existantes et quel ltres doivent tre utiliss. Chaque le est dcrite par une ligne et une seule de ce chier. Ces lignes sont constitues de divers champs, spars par des deux points (:). Comme ces lignes peuvent tre relativement longues, elles peuvent tre rparties sur plusieurs lignes physiques en plaant le caractre dchappement \ la n de chaque ligne, sauf la dernire. Le premier champ de la description dune le dattente est une liste des noms sous lesquels cette le sera connue. Les diffrents noms sont crits les uns la suite des autres, spars par une barre verticale (caractre |). Les champs suivants dcrivent limprimante utiliser, ainsi que les options gnrales de la le dattente. Ces champs utilisent tous la mme syntaxe :
option = valeur

Il existe un grand nombre doptions, nombre dentre elles sont facultatives. Cependant, il est impratif que le dmon lpd puisse trouver limprimante utiliser. Par consquent, il faut lui fournir au moins lune des deux srie doptions suivantes :

loption lp permet de spcier le chier spcial de priphrique auquel limprimante est connecte ; les options rm et rp permettent de spcier respectivement le nom dun serveur dimpression distant ( remote en anglais) et de limprimante utiliser sur ce serveur ( remote printer ).

Le dmon lpd doit galement connatre le rpertoire dans lequel les travaux en attente seront stocks (rpertoire dit de spool ). Ce rpertoire peut tre dni avec loption sd. Dautres options peuvent tre utiles, comme sh (cette option ne prend pas de valeur), qui permet de supprimer la page de garde au dbut de chaque impression, et mx, qui permet de spcier la taille maximale des travaux dimpression soumis. Cette dernire option permet de xer des quotas dimpression selon la taille des documents, an de donner la possibilit aux autres documents dtre imprims. Cette option utilise une syntaxe particulire :
mx#taille

o taille est la taille maximale autorise, exprime en kilo-octets. Le fait de spcier une taille nulle permet de supprimer ce contrle. Lexemple ci-dessous correspond la dnition dune le dattente locale lmentaire :
ascii|lp:lp=/dev/lp:sd=/var/spool/lpd/ascii:mx#0:sh

Comme vous pouvez le constater, il ny a aucune spcication des ltres dimpression utiliser dans cet exemple. Les travaux sont donc directement envoys limpression, sans traduction pralable. Il est donc ncessaire quils soient dj au format de limprimante. Si lon veut utiliser des ltres

161

Chapitre 6. Administration du systme de base dimpression, il faut utiliser lune des options if, cf, df, gf, nf, rf, tf ou vf. Chacune de ces options permet de spcier la ligne de commande dun ltre dimpression spcique. Le choix du ltre utilis pour un travail dimpression est effectu lors de lappel la commande lpr, laide dune option en ligne de commande. Le ltre if est le ltre par dfaut, il ny a donc besoin daucune option pour lutiliser. Les autres ltres peuvent tre slectionns respectivement avec les options -c, -d, -g, -n, -f, -t et -v. Comme on le voit, le sous-systme dimpression ne reconnat pas automatiquement le format de chier utilis. Dautre part, le nombre de ltres utilisables est limit 8, ce qui peut ne pas sufre tant donn la prolifration des formats de chiers. Pour rsoudre ce problme, les distributions utilisent souvent un ltre gnrique (utilis en tant que ltre par dfaut) qui, lui, est capable de reconnatre le format du chier imprimer et de le diriger vers un autre ltre ou une srie de ltres. Comme on la vu ci-dessus, lultime ltre utilis est en gnral linterprteur GhostScript. Ainsi, il ny a plus de limite sur le nombre de ltres utilisables, et les ltres sont slectionns automatiquement en fonction de la nature du document imprimer. Malheureusement, ces ltres volus ne sont pas standards, et chaque distribution est susceptible de fournir sa propre version. Cest pour cette raison quil est recommand dutiliser les programmes de conguration fournis par ces distributions pour installer limprimante.

6.9. Conguration du lancement automatique des tches


Il est possible de dclencher lexcution de certaines oprations intervalles rguliers sous Linux. Ces oprations sont dnies pour le systme et pour chaque utilisateur. Elles sont enregistres dans des chiers de conguration indiquant le moment o elles doivent tre dclenches, et quelle action elles doivent raliser. Les oprations dnies pour le systme sont stockes dans le chier de conguration /etc/crontab. Des commandes additionnelles peuvent tre dnies dans les rpertoires /etc/cron.d/, /etc/cron.daily/, /etc/cron.weekly/ et /etc/cron.monthly/. Par ailleurs, les chiers de conguration des utilisateurs sont stocks dans le rpertoire /var/cron/tab/, sous le nom de chaque utilisateur. Il est bien entendu possible dditer ces chiers en tant que root, mais ce nest pas recommand. En effet, la commande crontab permet dinstaller, de supprimer et de consulter les chiers crontab de chaque utilisateur, et ce de manire sre. La commande crontab peut tre utilise pour afcher le contenu du chier de conguration de lutilisateur qui lappelle, laide de loption -l :
crontab -l

Elle permet galement de supprimer ce chier, laide de loption -r :


crontab -r

Enn, loption -e permet dditer le chier crontab, laide de lditeur spci dans la variable denvironnement VISUAL ou EDITOR. Par dfaut, lditeur vi sera utilis. En tant quadministrateur du systme, il est possible de modier les paramtres pour nimporte quel utilisateur. Pour cela, il faut prciser le login de lutilisateur avec loption -u. Il est recommand

162

Chapitre 6. Administration du systme de base dutiliser galement loption -u si lon a effectu un su, car la commande crontab peut ne pas pouvoir dterminer lutilisateur qui la appel dans ce cas. Le format des chiers crontab est sufsamment riche pour permettre de spcier avec nesse les conditions dexcution des oprations programmes. En gnral, le dbut du chier contient la dnition de variables denvironnement utilises par crontab. La suite du chier est rserve aux commandes programmes. Chaque programmation est ralise sur une ligne du chier crontab. Les lignes contiennent 5 champs spciant la date et lheure laquelle la commande doit tre excute, un nom dutilisateur ventuel et la commande elle-mme. Le nom dutilisateur ne doit tre spci que dans le chier /etc/crontab, qui dnit les commandes du systme. Il spcie alors au nom de quel utilisateur la commande doit tre excute. Pour les chiers crontab propres chaque utilisateur, il nest bien entendu pas ncessaire dindiquer ce nom. Les 5 champs de la partie dcrivant la date dexcution de la commande fournissent respectivement les informations suivantes :

les minutes (comprises entre 0 et 59) ; les heures (comprises entre 0 et 23) ; le jour dans le mois (compris entre 0 et 31) ; le mois (compris entre 0 et 12, ou indiqu par les trois premires lettres du nom du mois en anglais) ; le jour dans la semaine (compris entre 0 et 7, ou indiqu par les trois premires lettres du nom du jour en anglais).

Les numros de mois 0 et 12 correspondent Janvier, et les numros de jours 0 et 7 correspondent au Dimanche. La commande sera excute chaque fois que le jour, le mois, lheure et les minutes du systme correspondront avec ces 5 champs. Il suft que lune des spcications du jour corresponde pour que la commande soit excute (cest--dire quelle est excute une fois pour le jour du mois et une fois pour le jour de la semaine si ces deux champs sont spcis). Il est possible dutiliser un intervalle de valeurs pour chacun de ces champs, en indiquant la premire et la deuxime valeur, spares dun tiret. Il est galement possible de faire une liste de valeurs et dintervalles, en sparant chaque donne par une virgule. Si lon veut spcier toutes les valeurs possibles pour un champ, on peut utiliser le caractre *. Enn, il est possible dindiquer que la commande doit tre excute toutes les n valeurs pour chaque champ. Pour cela, il suft de faire suivre le champ dune barre oblique de division (/) et du nombre n. Ainsi, si lon trouve lexpression */3 pour les heures, la commande sera excute toutes les trois heures. La spcication de la commande doit tre faite sur une seule ligne. Le caractre de pourcentage (%) a une signication spciale, sauf sil est prcd dun antislash (\). Les donnes qui suivent le premier pourcentage sont passes telles quelles dans lentre standard de la commande. Les caractres pourcentages suivants sont interprts comme des saut de lignes (donc une validation). Ainsi, la commande suivante :
rm -i file.txt%y%

permet de supprimer le chier file.txt et de rpondre y la commande rm. Le caractre y est pass ici dans le ux dentre standard de rm. Comme vous pouvez le voir, le chier /etc/crontab du systme permet de programmer des oprations priodiques, comme les sauvegardes, la destruction des chiers temporaires, ou toute autre tche de maintenance. Ne vous tonnez donc pas si votre ordinateur semble sactiver tout seul rgulirement, heure xe (par exemple, sur le coup de 11 heures ou minuit). Cest le fonctionnement

163

Chapitre 6. Administration du systme de base normal de votre systme, qui soccupe de toutes les tches mnagres quil sest rserv pour une heure o normalement tout le monde dort... Les utilisateurs peuvent galement dnir leur propre crontab pour effectuer les oprations priodiques quil dsirent. Par exemple, ils peuvent programmer une commande qui leur rappellera un rendez-vous.

164

Chapitre 7. Notions de compilation et conguration du noyau


Ce chapitre prsente les notions de base de compilation et de chiers sources de programmes. Il est certain que le lecteur de ce document na pas forcment lintention de programmer sous Linux, cependant, il est ncessaire de connatre les notions qui vont tre dcrites ici. En effet, il nest pas rare, voire il est mme courant, davoir recompiler une application lorsquon travaille avec Linux. Cela nest pas tonnant, quand on sait que toute bonne installation passe par la recompilation du noyau de Linux ! La raison de cet tat de fait provient sans nul doute du fait que la licence GNU impose de fournir les chiers sources aux utilisateurs dune part, et que le langage C et Unix sont historiquement fortement lis. Nous allons commencer par donner la dnition des notions de base et les tapes intervenant dans le processus de gnration des chiers binaires des programmes. Nous verrons ensuite comment installer (et compiler !) la suite de compilateurs GCC du projet GNU, et nous prsenterons les tapes intervenant dans la compilation et linstallation dun nouveau noyau. Ces informations pourront tre utiles pour la lecture du chapitre traitant de la conguration du matriel puisque, bien souvent, la prise en charge dun priphrique ncessite la compilation de ses pilotes au niveau du noyau.

7.1. Notions de base


7.1.1. Dnition des termes
Le langage naturel est le langage que les tres humains utilisent pour communiquer, soit oralement, soit par crit. Le langage naturel est trs riche : il utilise des constructions grammaticales et syntaxiques complexes, et il dispose dun vocabulaire trs tendu. Il permet donc dexprimer la plupart des ides humaines, et cest bien sa fonction. En revanche, il nest pas rigoureux, dans le sens o il laisse la porte ouverte un grand nombre dambiguts. Ce qui nest pas dit est souvent sous-entendu, et cest donc pratiquement entre les mots que se trouve le sens du discours. Il nest ainsi pas rare de pouvoir interprter une mme phrase diffremment, selon le contexte socioculturel, gographique ou temporel dans lequel elle est dite. Les jeux de mots utilisent cette caractristique merveille. La consquence est que lon ne peut pas utiliser facilement le langage naturel pour dcrire rigoureusement, voire mathmatiquement, quelque chose. Un langage formel est, au contraire, un langage restreint, qui ne dispose que de trs peu de constructions syntaxiques et dun vocabulaire trs limit. La caractristique principale des langages formels est quils sont rigoureux, une expression ou une phrase donne peut tre valide selon les rgles de syntaxe qui doivent tre respectes. Tout texte crit dans un langage formel est donc soit valide, soit invalide. En dnissant une association entre les constructions dun langage formel et un jeu de concepts limit, il est possible de donner une smantique un langage formel. Cette smantique donne la possibilit de qualier de vraie ou de fausse les assertions crites dans le langage formel (on notera quune expression peut tre valide du point de vue de la syntaxe mais smantiquement fausse). Un langage formel permet donc dexprimer avec prcision, sans aucune ambigut possible, une ide base sur les concepts quil utilise. Les notations mathmatiques constituent un langage formel par excellence.

165

Chapitre 7. Notions de compilation et conguration du noyau


Note : Par exemple, lexpression mathmatique x=1 est toujours valide, cest une simple quation. En revanche, elle nest pas toujours vraie, cela dpend de la valeur de x. En particulier, si x reprsente 3, on a 3 = 1 , ce qui est valide, mais faux. Notez bien la diffrence.

Un langage de programmation est un langage formel qui permet de dnir les tches quun ordinateur doit effectuer, et de dcrire les objets informatiques sur lesquels il doit travailler. Un langage de programmation est donc un code, et tout programme doit tre crit dans un tel langage. Pratiquement, les langages de programmation sont des langages trs simples, disposant de constructions du type si ... alors ... ou pour chaque ... fait ... . Les programmes tant crits avec de tels langages, il est clair quun programme ne fait que ce qui a t crit : ni plus, ni moins. Il faut donc tout dire lordinateur quand on crit un programme, ce qui en gnral est relativement fatigant et compliqu. Cest le prix payer pour la rigueur de linformatique : lordinateur ne se trompe jamais, parce quil ne fait quobir aux ordres donns dans un langage formel (donc prcis). Celui qui se trompe, cest en gnral le programmeur, et assez couramment lutilisateur.
Note : Notez quun programme est un texte valide sil vrie la grammaire du langage formel dans lequel il est crit. Cela ne lempchera pas de faire nimporte quoi si on lexcute. Un programme vrai est donc un programme syntaxiquement correctement crit et qui en plus fait ce que lon dsire quil fasse. Il ny en a pas beaucoup... surtout que dans bien des cas, on ne sest jamais pos clairement la question de savoir ce que doivent faire les programmes que lon crit !

Le C est un langage de programmation relativement simple, qui se trouve sur tous les types dordinateurs et de systmes dexploitation. Les programmes sont plus difcile crire en C que dans dautres langages de programmation, mais ils sont plus performants. Le C est trs utilis pour crire les systmes dexploitation : le noyau Linux lui-mme est crit en C. Le C++ est un langage plus volu, qui est driv du C. Il est beaucoup plus riche, et il permet dcrire des programmes plus compliqus et de les faire voluer plus facilement. Bien que plus lents que ceux crits en C, les programmes crits en C++ sont toujours trs performants par rapport ceux crits dans dautres langages. Les programmes sont en gnral crits dans un certain nombre de chiers. Ces chiers sont appels les chiers sources, du fait quils sont lorigine du programme. Le texte de ces chiers est appel le code source, ou plus simplement le code. Il va de soi que le code source est crit dans un langage de programmation, qui nest pas comprhensible tel quel par le matriel de lordinateur. Pour excuter un programme partir de son code source, il ny a que deux solutions :

disposer dun autre programme, nomm interprteur, capable de lire le code source et deffectuer les oprations dcrites dans le code source ; disposer dun autre programme, nomm compilateur, capable de traduire le code source en langage binaire, qui sera alors directement excutable par lordinateur.

Les programmes interprts sont fatalement relativement lents, puisque linterprteur doit analyser en permanence les chiers sources pour le traduire en opration excuter la vole.

166

Chapitre 7. Notions de compilation et conguration du noyau Figure 7-1. Interprtation dun programme

En revanche, les programmes compils sont beaucoup plus rapides lexcution, puisque la phase danalyse du code source a t ralise au pralable et se fait en dehors de la phase dexcution. Ces programmes peuvent donc sexcuter nativement, sans tre ralenti par linterprteur. Figure 7-2. Compilation et excution dun programme

Note : Si vous avez bien suivi, on se trouve face au problme de luf et de la poule. En effet, les interprteurs et les compilateurs sont eux-mmes des programmes crits dans un langage informatique. Quel est donc le premier compilateur ou interprteur ? Ce problme a effectivement d tre rsolu au dbut de linformatique, de la manire la plus simple : les premiers programmeurs entraient directement le langage machine en binaire dans les ordinateurs (via les cblages ou les cartes perfores...). Quand on sait le travail que cela reprsentait, et le nombre derreurs que cela a pu gnrer, on comprend facilement pourquoi les compilateurs et les interprteurs font partie des tous premiers programmes qui ont t dvelopps...

Dans les systmes Unix, les deux types de programmes existent. Les programmes interprts constituent ce que lon appelle des scripts. Le systme utilise le shell pour les interprter. La plupart des oprations dadministration du systme utilisent des scripts, car il est toujours plus facile dcrire et de tester un script que dcrire un programme en C. Les programmes compils sont notamment le noyau lui-mme, le shell, les commandes de base et les applications. Ce sont eux qui en n de compte effectuent le travail, et ils sont souvent appels partir de scripts. Nous avons dj vu des exemples de scripts lors de la conguration du systme. Pour linstant, nous allons nous intresser au langage C et au processus de compilation.

167

Chapitre 7. Notions de compilation et conguration du noyau La compilation est lopration qui consiste lire un chier source et le traduire dans le langage binaire du processeur. Ce langage est absolument incomprhensible par les tres humains, cependant, il existe un langage de programmation qui permet de coder directement le binaire : il sagit de lassembleur. En gnral, le processus de compilation gnre un chier binaire pour chaque chier source. Ces chiers binaires sont nomms chiers objets, et porte de ce fait lextension .o (ou .obj dans les systmes Microsoft). Comme un programme peut tre constitu de plusieurs chiers sources, il faut regrouper les chiers objets pour gnrer le chier excutable du programme, chier que lon appelle galement le chier image en raison du fait que cest le contenu de ce chier qui sera charg en mmoire par le systme pour lexcuter et quil contient donc limage sur disque des instructions des programmes en cours dexcution. Lopration de regroupement des chiers objets pour constituer le chier image sappelle ldition de liens, et elle est ralise par un programme nomm le linker (diteur de liens en franais). Ce programme regarde dans tous les chiers objets les rfrences partielles aux autres chiers objets et, pour chaque lien ainsi trouv, il complte les informations ncessaires pour en faire une rfrence complte. Par exemple, un chier source peut trs bien utiliser une fonctionnalit dun autre chier source. Comme cette fonctionnalit nest pas dnie dans le chier source courant, une rfrence partielle est cre dans le chier objet lors de sa compilation, mais il faudra tout de mme la terminer en indiquant exactement comment accder la fonctionnalit externe. Cest le travail de lditeur de liens, lorsquil regroupe les deux chiers objets. Certains chiers objets sont ncessaires pour tous les programmes. Ce sont notamment les chiers objets dnissant les fonctions de base, et les fonctions permettant daccder au systme dexploitation. Ces chiers objets ont donc t regroups dans des bibliothques (galement couramment appeles librairies ), que lon peut ainsi utiliser directement lors de la phase ddition de liens. Les chiers objets ncessaires sont alors lus dans la bibliothque et ajouts au programme en cours ddition de liens. Les bibliothques portent souvent lextension .a (ou .lib dans les systmes Microsoft). Figure 7-3. Processus de gnration dun excutable

Malheureusement, la solution consistant stocker dans des bibliothques les fonctions les plus utilises souffre de la duplication du code contenu dans ces bibliothques dans tous les programmes, do une perte de place considrable. De plus, la mise jour dune bibliothque ncessite de refaire ldition de liens de tous les programmes qui lutilisent, ce qui nest pas ralisable en pratique. Cest pour cela que les bibliothques dynamiques ont t cres : une bibliothque dynamique nest pas incluse dans les chiers des excutables qui lutilisent, mais reste dans un chier spar. Les bibliothques sont regroups dans un rpertoire bien dni du systme de chiers, ce qui permet de les partager entre diffrents programmes. Ainsi, la mise jour dune bibliothque peut se faire sans avoir toucher tous les programmes qui lutilisent. Le problme est cependant que ldition de liens reste in-

168

Chapitre 7. Notions de compilation et conguration du noyau complte, parce que les rfrences aux objets des bibliothques dynamiques sont toujours externes. Il existe donc un programme spcial, lditeur de liens dynamiques ( ld , pour Link Dynamically ), qui rsout les dernires rfrences incompltes lors du chargement de chaque programme. Les bibliothques dynamiques portent lextension .so (pour Shared Object ), ou .dll dans les systmes Microsoft (pour Dynamic Link Library ). videmment, le chargement des programmes est un peu plus lent avec les bibliothques dynamiques, puisquil faut raliser ldition de liens dynamiques lors de leur lancement. Cependant, ce processus a t optimis, et les formats de chiers binaires utiliss contiennent toutes les informations prcalcules pour faciliter la tche de lditeur de liens dynamiques. Ainsi, la diffrence de performance est devenue peine dcelable.

7.1.2. Processus de gnration


Classiquement, les chiers sources C et C++ se divisent en deux grande catgories :

les chiers den-tte, qui contiennent les dclarations des symboles du programme ; les chiers C (ou C++), qui contiennent leurs dnitions.

Le fait de faire cette distinction entre la dclaration (qui consiste dire : telle chose existe ) et la dnition (qui consiste dcrire la chose prcdemment dclare) permet de faire en sorte que lon peut utiliser les chiers objets sans avoir les chiers sources. En effet, la dclaration permet de raliser les rfrences partielles dans les programmes, tandis que les chiers objets contiennent bien entendu la dnition binaire de ce qui a t dclar. Pour compiler un programme, on na donc rellement besoin que de trois types de chiers :

les chiers de dclaration du systme et des bibliothques de base ; les chiers des bibliothques de base eux-mmes ; les chiers source (de dclaration et de dnition) du programme compiler.

En C et C++, les chiers sources de dclaration portent lextension .h (plus rarement .hpp pour les chiers de dclaration C++), et les chiers de dnition portent lextension .c pour les programmes crits en C et .C (ou .cpp , ou encore .c++ ) pour les programmes crits en C++. Il va de soi que la ralisation dun programme peut ncessiter la cration dun grand nombre de chiers, tous plus ou moins dpendants les uns des autres. Pour pouvoir sy retrouver plus facilement, les programmeurs utilisent un programme spcial : make. Ce programme est capable de raliser toutes les oprations ncessaires la cration des chiers excutables dun programme partir de ses chiers sources. Pour cela, il utilise un chier contenant la dnition des oprations raliser, ainsi que la description des dpendances entre les diffrents chiers sources. Ce chier est appel le chier makele. Grce make, lutilisateur de base que vous tes va pouvoir compiler la plupart des programmes sans avoir la moindre notion de programmation. En gnral, la compilation dun programme passe par les tapes suivantes :

rcupration des chiers sources du programme ; conguration du programme pour lenvironnement courant ; appel make pour la compilation ;

169

Chapitre 7. Notions de compilation et conguration du noyau

appel make pour linstallation.

La premire tape est lmentaire et va de soi. La deuxime tape se fait souvent en appelant un script dans le rpertoire dinstallation des chiers sources. Ce script se nomme souvent congure, et peut tre appel avec la ligne de commande suivante :
./configure

partir du rpertoire o se trouvent les chiers sources. Ce script effectue tous les tests sur le systme et lenvironnement de dveloppement, et gnre le chier makele. Le programme congure est en gnral fourni avec les logiciels GNU. Il permet de dterminer lenvironnement logiciel et systme et de gnrer le chier makele et des chiers den-ttes contenant la dnition de quelques options du programme. Dans quelques cas particuliers, vous aurez utiliser des options de congure an de prciser certains paramtres. Loption --host permet dindiquer le type de la machine cible, dans le cas o congure ne parvient pas le dterminer automatiquement :
--host=machine

o machine est la description de votre machine. Pour les PC fonctionnant sous Linux, cette description est de la forme ix86-pc-linux-gnu , o le x reprsente le numro de la gnration du processeur du PC. Par exemple, pour un Pentium ou un AMD K6, la description sera i586-pc-linux-gnu . Loption --enable-shared permet de gnrer des bibliothques dynamiques lors de la compilation. Cela procure un gain de place vident. Enn, loption --prefix permet de prciser le rpertoire de base dans lequel le programme sera install a priori. Cette option sutilise de la manire suivante :
--prefix=rpertoire

o rpertoire est le rpertoire de base de linstallation. La connaissance de ce rpertoire est utile aux autres programmes pour localiser les composants qui vont tre installs. Dans la plupart des cas, la valeur par dfaut du prxe convient, mais il est parfois ncessaire de le modier. Cest en particulier le cas lorsque vous dsirez mettre jour un programme dj install et que votre distribution nutilise pas le rpertoire par dfaut. Dans ce cas, il convient dindiquer le rpertoire de base dans lequel ce programme a t install, an de le remplacer au lieu de le dupliquer dune part, et an que les autres programmes puissent trouver la nouvelle version la place de lancienne dautre part. La troisime tape est trs simple aussi. Il suft de taper la commande suivante :
make

toujours dans le rpertoire o se trouvent les chiers sources. Enn, la dernire tape se fait en tapant la commande suivante :
make install

Bien entendu, ces diffrentes tapes varient parfois avec le logiciel installer. Cependant, il existe quasiment toujours un chier texte indiquant comment effectuer ces oprations dans le rpertoire des chiers sources. Ce chier porte souvent le nom de readme , install , ou quelque chose de similaire.

170

Chapitre 7. Notions de compilation et conguration du noyau Avec les notions que vous venez de voir, vous devriez pouvoir compiler quasiment tous les programmes que vous pourrez rcuprer sous la forme de chiers sources. Un dernier dtail cependant : la compilation est une opration trs gourmande en ressources. Cela signie quelle peut consommer beaucoup de ressources processeur, de mmoire, de disque et de temps. Pour des gros programmes, il nest pas rare de passer jusqu une heure de compilation, mme sur une machine rcente. Notez galement que les facteurs limitants dans les compilations sont souvent la rapidit du processeur et du disque dur, ainsi que la quantit de mmoire vive disponible.

7.2. Compilation de GCC


La clef de vote du processus de compilation est bien entendu la suite de compilateurs GCC du projet GNU. Cette suite comprend un compilateur pour les languages C, C++, Objective C, Fortran, Java et Ada. La plupart des distributions fournissent ces outils sur leur CD dinstallation, mais ne les installent pas par dfaut. Il est toutefois recommand dinstaller au moins le compilateur C/C++ et les outils de dveloppement associs, ainsi que les chiers den-tte des bibliothques de base du systme (bibliothque C, en-ttes de XWindow, des bibliothques utilitaires et des bibliothques de base des environnements graphiques Gnome et KDE). Le choix de la version de GCC utilise est extrmement important, car la stabilit et les performances du systme en dpendront directement. De plus, certains programmes exigeront une version spcique du compilateur pour tre compils, soit parce quils nont t tests quavec cette version par les dveloppeurs, soit parce quils utilisent une fonctionnalit qui nest disponible que dans les versions rcentes de GCC. La versions stable de GCC reconnue par le plus grand nombre de dveloppeurs est sans aucun doute la version 3.2.3. Cette version ne posera certainement pas de problmes aux possesseurs de PC base de processeur x86. De toutes les versions antrieures, seule la version 2.95.3 est rellement utilisable. Les versions intermdiaires ont toutes souffert de bugs graves et ne doivent donc pas tre utiliss. En pratique, on utilisera de prfrence la version 3.2.3 pour les raisons suivantes :

elle permet de compiler de programmes pour les processeurs les plus rcents, tels que les IA-64 dIntel, les x86-64 dAMD et les PowerPC dIBM ; elle permet dutiliser les instructions spciques des processeurs les plus rcents, mme darchitecture x86 ; la bibliothque standard C++ fournie avec cette version respecte nettement mieux la norme C++ que les versions antrieures, et elle permet dutiliser les caractres Unicode dans les programmes C++ ; elle dispose des dernires optimisations ajoutes GCC.

On prendra garde au fait que certaines distributions utilisent rgulirement des versions non stabilises des programmes de base tels que GCC ou la bibliothque C. Cest en particulier le cas de la Redhat et de toutes ses drives, telle la Mandrake par exemple. Ces distributions ont jadis utilis une version non stabilise de gcc (les fameuses versions 2.96 et 2.97), et prsent utilisent une version spciale de la bibliothque C et du noyau de Linux pour un meilleur support des programmes multithreads. Tout cela est fort dommageable, car les paquetages binaires de ces distributions sont systmatiquement incompatibles avec ceux des autres dune part, et il est quasiment impossible denvisager une compilation correcte dun programme avec ces distributions dautre part. En pratique, les possesseurs de distributions Redhat et drives sabstiendront donc de faire une mise jour manuelle de GCC, de

171

Chapitre 7. Notions de compilation et conguration du noyau la bibliothque C ou mme du noyau, car les les programmes installs sur leur machine risqueraient de ne plus fonctionner. Les utilisateurs de ces distributions devrait faire une mise jour complte de leurs distributions dans ce cas.
Note : En ce qui concerne les numros de version, il faut savoir que le dernier chiffre caractrise souvent le numro de correctif. Plus ce chiffre est lev, moins le programme a de chances de comporter de bogues. En pratique, on vitera gnralement dinstaller systmatiquement les dernires versions des logiciels lorsque ces versions sont les premires dune nouvelle srie. Ainsi, un programme de version x.y.0 est certainement peu able. Il faudra attendre au moins la version x.y.1 ou mieux la x.y.2, pour pouvoir lutiliser sereinement. Sachez galement que le numro intermdiaire sert, pour certains logiciels, indiquer les versions de dveloppement. Cest par exemple le cas du noyau de Linux, pour lequel les numros de version impairs correspondent aux versions de dveloppement et les numros pairs aux versions stables. Ce nest pas le cas pour la bibliothque C ou GCC. On notera que GCC 3.2.0 correspond en fait une version 3.1.1 avec un nouveau format binaire pour le C++, et nest donc pas proprement parler une nouvelle version. La version 3.3 de GCC est dj disponible, mais on ne lutilisera toutefois pas pour les raisons indiques ci-dessus : comme toute version en x.y.0, elle est certainement truffe derreurs de jeunesse. Certaines documentations rfrencent galement la version 1.1.2 du compilateur EGCS (abrviation de Experimental GNU Compilation System ). Ces documentations sont obsoltes : EGCS ne doit plus tre utilis. Il sagit de la version de dveloppement de GCC 2.95, qui est donc prsent relativement ancienne.

7.2.1. Prrequis
moins que vous ne russissiez mettre la main sur une version de GCC dj compile pour Linux, vous ne disposerez que des sources. Les sources de GCC peuvent tre rcupres sur Internet sur le site de GCC (http://gcc.gnu.org). Ces sources sont fournies sous la forme dune archive au format tar-gzip. Le nom de cette archive est gcc-3.2.3.tar.gz . Un autre prrequis est bien entendu que vous disposiez galement dun compilateur C sur votre systme. Ce compilateur peut trs bien tre une ancienne version de GCC, mais il est impratif de disposer dun compilateur C correct. Le code de GCC a t crit pour pouvoir tre compil de manire minimale avec la plupart des compilateurs C existants. Il faut galement que ce compilateur porte le nom de cc ou gcc et soit dans lun des rpertoires de la variable denvironnement PATH, ou que la variable CC ait t dnie avec le chemin absolu du compilateur.

7.2.2. Installation des sources


Lorsque vous aurez install le compilateur C natif de votre systme, vous devrez dcomprimer les sources de GCC. Cela doit se faire avec la commande suivante :
tar xvfz archive

o archive est le nom de larchive comprime contenant ces sources. Dans notre cas, ce doit tre gcc-3.2.3.tar.gz. Cette commande a pour consquence de crer larborescence des rpertoires des sources de GCC dans le rpertoire o elle a t excute. Une fois cette opration effectue, il est conseill de crer un autre rpertoire, ailleurs que dans le rpertoire des sources de GCC, dans lequel la compilation aura lieu. Dans toute la suite, nous suppo-

172

Chapitre 7. Notions de compilation et conguration du noyau serons que le rpertoire des sources se nomme srcdir, et que le rpertoire de compilation se nomme
objdir.

7.2.3. Conguration
Ltape suivante est daller dans le rpertoire de compilation et de lancer le programme de conguration de GCC dans ce rpertoire. Cela peut tre ralis avec les commandes suivantes :
cd objdir srcdir/configure [options]

Comme on la vu ci-dessus, le programme de conguration congure peut recevoir des options en ligne de commande. Il est recommand de fournir loption --enable-__cxa_atexit, qui permet de rendre GCC compatible avec la version 3 de la norme inter-vendeurs spciant le format des interfaces binaires pour les compilateurs C++, et donc de garantir la compatibilit binaire ascendante avec les versions futures de GCC. Cela vous permettra dviter davoir recompiler toutes les bibliothques C++ lors des mises jours ultrieures de GCC. Il est galement recommand dutiliser loption --enable-long-long, qui ajoute le support du type de donnes long long, qui permet de manipuler des donnes 64 bits sur les machines 32 bits comme les PC. Normalement, le programme de conguration dtecte le type de machine et le systme utilis. Cependant, cette dtection peut chouer si les types de machines indiqus pour les diffrents composants du systme ne sont pas identiques. Dans ce cas, il vous faudra spcier la machine hte laide de loption --host. La ligne de commande pour la conguration sera alors la suivante :
srcdir/configure --enable-__cxa_atexit --enable-long-long --host=hte \

o hte est de la forme ix86-pc-linux-gnu . Le nombre de compilateurs fournis avec la suite de compilateurs GCC est impressionnant. Cependant, seuls les compilateurs C et C++ sont rellement essentiels. Aussi est-il possible de ne prendre en charge que certains langages laide de loption --enable-languages. Cette option doit tre suivie des noms des langages pour lesquels le compilateur doit tre cr, spars par des virgules. Ainsi, on peut ninstaller que les compilateurs C/C++ et Java en ajoutant loption suivante la ligne de commande :
--enable-languages=c,c++,java

Enn, si votre distribution utilise le compilateur GCC comme compilateur de base du systme, et que vous dsirez remplacer la version de votre distribution par la version que vous allez compiler, il faut changer le rpertoire dinstallation de GCC. Normalement, GCC sinstalle dans le rpertoire /usr/local/ ce qui fait quil ne remplace pas la version de votre distribution. Vous devez donc spcier les rpertoires de base pour linstallation. Pour cela, il suft dajouter les options suivantes :

--prefix=/usr

la ligne de commande de congure.

173

Chapitre 7. Notions de compilation et conguration du noyau

7.2.4. Compilation
La compilation de GCC peut ensuite tre ralise. Autant vous prvenir tout de suite : cest une opration trs longue, qui de plus demande beaucoup despace disque. Il faut au moins prvoir 200 Mo despace disque, et une bonne demi-heure sur une machine 500 Mhz. Cela est d la technique employe par GCC lors de la compilation. La plupart des compilateurs C ne sont pas capables de compiler GCC avec toutes ses fonctionnalits. Cest pour cela que la compilation se passe en trois tapes :

une version allge de GCC est compile avec le compilateur natif dans une premire passe ; cette version est utilise pour compiler la version complte de GCC ; la version complte est utilise pour se recompiler, an de tester les diffrences entre les deux versions compltes.

Ainsi, GCC se compile lui-mme ! Ces trois oprations peuvent tre excutes laide dune seule commande :
make bootstrap

Cette commande doit tre excute partir du rpertoire de compilation objdir.

7.2.5. Installation de GCC


Lorsque la compilation sest termine, vous pouvez installer GCC. Il est recommand de supprimer le compilateur que vous avec utilis pour compiler GCC, sauf si, bien entendu, il sagissait dj de GCC. En effet, il nest pas ncessaire de le conserver, puisque vous utiliserez dsormais GCC. Linstallation de GCC est, encore une fois, trs simple :
make install

Cette commande installe GCC ainsi que la bibliothque standard C++.

7.3. Compilation du noyau Linux


La compilation du noyau est une spcicit des systmes libres, qui nest possible que parce que lon dispose des sources du noyau. Cependant, mme pour certains Unix commerciaux, il est possible deffectuer une dition de liens, les modules du noyau tant fournis sous la forme de chiers objets. La compilation ou ldition de liens du noyau est une opration technique qui peut surprendre un habitu des systmes ferms que sont par exemple Windows ou OS/2. Cependant, elle permet dobtenir un noyau trs petit, optimis pour la machine sur laquelle il tourne, et donc la fois conome en mmoire et performant. Il est donc recommand deffectuer cette compilation : pourquoi conserver un monstre capable de grer des priphriques qui ne sont pas et ne seront jamais installs sur votre systme ? La compilation du noyau de Linux ncessite de disposer des dernires sources du noyau (version 2.4.21. au 13/06/2003) et dun compilateur. Il est vident que le compilateur idal est le compilateur GCC. La version recommande par les dveloppeurs du noyau est la 2.95.3, mais les versions rcentes semblent fonctionner correctement. Je supposerai dans la suite de ce document que vous disposez de la dernire version du noyau, savoir la version 2.4.21.

174

Chapitre 7. Notions de compilation et conguration du noyau La compilation du noyau nest pas trs difcile. Elle ncessite cependant de rpondre correctement aux questions de conguration. Les erreurs peuvent tre multiples, et souvent fatales. Il est donc fortement conseill de disposer dune disquette de dmarrage an de rparer le systme en cas derreur. Par ailleurs, il faut toujours conserver le dernier noyau utilisable en sauvegarde dans le rpertoire /boot/. Il faut galement ajouter une entre spciant ce noyau dans le programme de dmarrage (lilo), an de pouvoir slectionner lancien noyau en cas derreur. Ces oprations seront dcrites en dtail plus loin. La compilation du noyau se passe en quatre tapes :

installation des chiers sources ; rponse aux questions de conguration ; compilation et installation du noyau ; compilation et installation des modules.

7.3.1. Installation des sources de Linux


Les sources du noyau peuvent tre trouves sur le site kernel.org (http://www.kernel.org). Il est possible de rcuprer les sources compltes, sous la forme dune archive comprime denviron 24 Mo. Toutefois, si lon dispose dj dune version complte des chiers sources, il est envisageable de ne tlcharger que les chiers diffrentiels de cette version la version courante (ce que lon appelle classiquement des patches ).
Note : Les utilisateurs des distributions Redhat drives (telle que la Mandrake par exemple) doivent imprativement utiliser les sources fournies par leur distribution. En effet, les noyaux de ces distributions sont patchs mort pour utiliser des fonctionnalit non stabilises de la version de dveloppement du noyau de Linux, et sans lesquelles la plupart des programmes et la bibliothque C elle-mme ne fonctionneraient plus. Je dconseille aux utilisateurs de ces distributions de se lancer dans laventure dune quelconque compilation dun des composants systme.

Il est recommand dinstaller les sources du noyau dans un autre rpertoire que celui o se trouvent les chiers sources de votre distribution, car ceux-ci contiennent les chiers den-tte C qui ont t utiliss pour gnrer la bibliothque C du systme et sont donc ncessaires la compilation des programmes. Le remplacement des chiers sources du noyau imposerait donc, en toute rigueur, de recompiler la bibliothque C du systme (en pratique cependant, il est rare que les en-ttes du noyau soient modis au point de gnrer des incompatibilits, du moins dans une mme srie de noyaux). Cette opration est extrmement technique, risque et longue, il est donc logique que lon sen dispense. Les plus motivs trouveront en annexe la manire de procder pour recompiler la bibliothque C. Gnralement, les chiers sources de Linux sont installs dans le rpertoire /usr/src/linux/. On devra donc renommer temporairement le rpertoire originel avant dinstaller les sources du nouveau noyau, ou au moins en faire une sauvegarde. Une autre solution est dinstaller les chiers du noyau dans un rpertoire /usr/src/linux<version>/ et dutiliser un lien symbolique /usr/src/linux/ pour slectionner la version que lon veut compiler. Cela permet de conserver plusieurs jeux de sources de versions diffrentes, et de travailler sur la version courante dans le rpertoire /usr/src/linux/ facilement. Les commandes suivantes permettront dextraire les sources dans le rpertoire ddi au sources de Linux. Elles supposent quil existe dj un lien symbolique /usr/src/linux/ vers le rpertoire devant acceuillir ces chiers sources :

175

Chapitre 7. Notions de compilation et conguration du noyau


cd /usr/src rm linux mkdir linux-2.4.21 ln -s linux-2.4.21 linux tar xvfz linux-2.4.21.tar.gz

Une fois le nouveau noyau compil et install, on pourra rtablir la dpendance de la bibliothque C sur les chiers den-tte de lancien noyau en rtablissant le lien symbolique sa valeur initiale. Si lon dispose dj dune version complte des chiers sources, et que lon dsire appliquer un patch, il faut dcomprimer le chier de patch avec la commande suivante :
gunzip fichier.gz

o fichier.gz reprsente le chier de patch comprim (en supposant quil ait t comprim laide de gzip). Lapplication du patch se fait de la manire suivante :
patch -p0 < fichier

Cette commande doit tre lance partir du rpertoire /usr/src/. Elle suppose que les chiers sources de Linux pourront tre trouves dans le rpertoire ./linux/. Dans cette ligne de commande, fichier reprsente le nom du chier de patch prcdemment dcomprim, et loption -p0 indique au programme patch dutiliser les noms de rpertoires relatifs au rpertoire courant ( savoir ./linux/). Si les sources sont installes dans un autre rpertoire, il faudra modier loption -px passe en paramtre au programme patch, o x est le nombre de niveaux de rpertoires ignorer pour lapplication du patch. Consultez la page de manuel patch pour plus de dtails sur cette option. Il est recommand de tlcharger au moins une fois lensemble des sources du noyau, et de ne pas utiliser les sources fournies avec la distribution que vous utilisez. En effet, certaines distributions modient les sources et on ne peut donc pas leur appliquer les patches standards. Toutefois, les chiers sources fournis avec les distributions contiennent souvent dautres patches non encore intgrs ofciellement dans le noyau. Si lune des fonctionnalits apportes par ces patches est utilise, on devra se contenter des sources de la distribution.

7.3.2. Choix des options de conguration du noyau


La conguration du noyau peut se faire lancienne avec la commande suivante :
make config

Cette commande pose une srie de questions auxquelles il faut pouvoir rpondre correctement du premier coup. On na pas le droit lerreur ici, faute de quoi il faut tout reprendre zro. Il est nettement plus convivial dutiliser la version Tcl/Tk sous X11. Cette version donne laccs aux diffrentes options sans un ordre quelconque, et ne prsente que les options ralisables tant donnes celles dj xes. Cette mthode est videmment la mthode conseille. Pour lutiliser, il suft de taper la commande suivante :
make xconfig

176

Chapitre 7. Notions de compilation et conguration du noyau Si lon ne dispose pas encore de X11, ce qui est probablement le cas lors dune premire installation, on peut utiliser la version texte avec menu en tapant la commande suivante :
make menuconfig

Quelle que soit la mthode utilise, il faut rpondre par Y (pour Yes ), N (pour No ) ou M (pour Module ) lorsque cest possible. Y et M incluent la fonctionnalit courante dans le noyau, N la supprime. M permet dutiliser la fonctionnalit en tant que module du noyau. En gnral, lutilisation des modules permet dallger le noyau car les fonctionnalits sont charges et dcharges dynamiquement. Cependant, les fonctionnalits ncessaires au dmarrage de Linux, comme les gestionnaires de disques et systmes de chiers par exemple, ne doivent en aucun cas tre places dans des modules, car alors le systme ne pourrait pas dmarrer. Le choix des options de conguration est rellement trs large, car celles-ci couvrent un ensemble de fonctionnalits trs large. La description exhaustive de ces options est la fois fastidieuse et inutile, car vous nutiliserez pas tous les gestionnaires de priphriques et toutes les fonctionnalits de Linux avec un mme ordinateur. Il sagit donc de rpondre aux questions appropries pour votre conguration, mais de le faire avec rigueur : la moindre erreur de conguration peut empcher votre systme de fonctionner correctement, voire lempcher de dmarrer tout simplement. Vous trouverez une description rapide des principales options de conguration dans lAnnexe A. Les options les plus utiles seront galement dcrites lorsque cela sera ncessaire dans le chapitre de conguration du matriel.

7.3.3. Compilation et installation du noyau


Une fois la conguration du noyau ralise, la compilation peut tre lance. Pour cela, il suft de lancer les trois commandes suivantes dans le rpertoire /usr/src/linux :
make dep make clean make bzImage

La premire commande gnre les dpendances entre les chiers du noyau. Ces dpendances sont utilises par les chiers makele. La deuxime commande effectue le mnage ncessaire pour supprimer tous les chiers objets pouvant rsulter dune prcdente compilation. Cette opration est ncessaire an dviter de mlanger des chiers ayant t compils avec des options de conguration diffrentes. Enn, la troisime commande lance la compilation et ldition de liens proprement dite. Une fois la compilation acheve, il faut installer le nouveau noyau. Cette opration ncessite beaucoup de prudence, car si le noyau nouvellement cr nest pas bon, le systme ne redmarrera pas. Cest pour cela quil est conseill de conserver toujours deux versions du noyau, dont on est sr que lune dentre elle fonctionne parfaitement. En pratique, cela revient conserver la version originale du noyau install par votre distribution. Pour cela, il faut en faire une copie de sauvegarde. En gnral, le noyau est install dans le rpertoire /boot/ (ou dans le rpertoire racine pour les anciennes versions de Linux). Il porte souvent le nom de vmlinuz. Pour le sauvegarder, il suft donc de taper par exemple la commande suivante :
cp vmlinuz vmlinuz.old

177

Chapitre 7. Notions de compilation et conguration du noyau Il faut galement indiquer au gestionnaire damorage quil faut quil donne maintenant la possibilit de dmarrer lancienne version du noyau sous ce nouveau nom. Pour LILO, il suft dditer le chier /etc/lilo.conf et dy ajouter une nouvelle conguration. En pratique, cela revient dupliquer la conguration du noyau actuel et changer simplement le nom du noyau charger (paramtre image de la conguration dans /etc/lilo.conf) et le nom de la conguration (paramtre label ). Vous devrez aussi rajouter loption prompt si elle ny est pas dj, an que LILO vous demande la conguration lancer chaque dmarrage. Dans notre exemple, le nom du noyau utiliser pour la conguration de sauvegarde sera vmlinuz.old. De mme, si la conguration initiale de Linux porte le nom linux , vous pouvez utiliser le nom oldlinux pour la conguration de sauvegarde. Une fois le chier lilo.conf mis jour, il faut vrier que lon peut bien charger lancien systme. Pour cela, il faut rinstaller LILO et redmarrer la machine. La rinstallation de LILO se fait exactement de la mme manire que son installation, simplement en linvoquant en ligne de commande :

lilo

Si LILO signale une erreur, vous devez corriger immdiatement votre chier lilo.conf et le rinstaller. Pour le GRUB, la dnition dune nouvelle conguration se fait galement en dupliquant la conguration initiale et en changeant le nom de loption de menu du GRUB et le chemin sur le chier du noyau sauvegard. Veillez galement bien ajouter une option timeout pour avoir la moindre chance de slectionner la conguration lancer. Tout cela doit tre effectu dans le chier de conguration /boot/grub/menu.lst. Contrairement LILO, il nest pas ncessaire de rinstaller le GRUB pour que les modications de ce chier soient prises en compte au dmarrage suivant. Vous pourrez alors redmarrer redmarrer la machine avec la commande suivante :
reboot

Le gestionnaire damorage utilis vous propose alors de choisir le systme dexploitation lancer. Il faut ici slectionner la conguration de sauvegarde pour vrier quelle est accessible et fonctionne bien. Le systme doit alors dmarrer en utilisant la copie sauvegarde du noyau. Si cela ne fonctionne pas, on peut toujours utiliser le noyau actuel en slectionnant le noyau initial et en corrigeant la conguration du gestionnaire damorage. Lorsque vous vous serez assur que le systme peut dmarrer avec la sauvegarde du noyau, vous pourrez installer le nouveau noyau. Son image a t cre par make dans le rpertoire /usr/src/linux/arch/i386/boot/, sous le nom bzImage. Linstallation se fait donc simplement par une copie dans /boot/ en crasant le noyau actuel vmlinuz :
cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz

Il faut galement copier le chier System.map du rpertoire /usr/src/linux/ dans le rpertoire /boot/ :
cp System.map /boot

178

Chapitre 7. Notions de compilation et conguration du noyau Ce chier contient la liste de tous les symboles du nouveau noyau, il est utilis par quelques utilitaires systmes. Si vous utiliser LILO, il vous faudra le rinstaller nouveau pour quil prennent en compte le nouveau noyau. Cela se fait avec la mme commande que celle utilise prcdemment :
lilo

Cette opration nest en revanche pas ncessaire avec le GRUB. Encore une fois, il faut redmarrer la machine avec la commande suivante :
reboot

et vrier que le nouveau noyau fonctionne bien. Sil ne se charge pas correctement, cest que les options de conguration choisies ne sont pas correctes. Il faut donc utiliser le noyau sauvegard, vrier ses choix et tout recommencer. Attention cependant, cette fois, il ne faut pas recommencer la sauvegarde du noyau puisque cette opration craserait le bon noyau avec un noyau dfectueux. Si le nouveau noyau dmarre correctement, il ne reste plus qu installer les modules.

7.3.4. Compilation et installation des modules


Si le systme a redmarr correctement, on peut compiler les modules et les installer. Il nest pas ncessaire de prendre les mmes prcautions pour les modules que pour le noyau. Il suft donc ici de lancer la commande suivante dans le rpertoire /usr/src/linux/ :
make modules

Les modules slectionns lors de la conguration sont alors compils, il ne reste alors plus qu les installer. Au pralable, il est recommand de dcharger tous les modules prsents en mmoire. Cette opration peut tre ralise avec les commandes suivantes :
modprobe -ar lsmod rmmod module rmmod module ...

Notez que certains modules ne se dchargent pas automatiquement, il faut donc excuter rmmod sur ces modules manuellement. Linstallation des modules est alors trs simple, puisquil suft de lancer la commande suivante dans le rpertoire /usr/src/linux/ :
make modules_install

Les modules sont installs dans le rpertoire /lib/module/version/, o version est le numro de version du noyau courant. Il est possible que des modules dautres versions du noyau existent dans

179

Chapitre 7. Notions de compilation et conguration du noyau leurs rpertoires respectifs. Si vous nen avez plus besoin, vous pouvez les effacer. Attention cependant si vous avez install des modules additionnels non fournis avec le noyau dans ces rpertoires, vous pourriez encore en avoir besoin. Comme on la dj vu, les modules sont utiliss par le chargeur de module du noyau, grce la commande modprobe. Cette commande a besoin de connatre les dpendances entre les modules an de les charger dans le bon ordre. Il faut donc imprativement mettre jour le chier /lib/modules/version/modules.dep chaque fois que lon installe les modules, laide de la commande suivante :
depmod -a

Note : La commande depmod -a est excute automatiquement lors de linstallation des modules du noyau. Toutefois, elle devra tre excute manuellement si lon installe des modules non fournis avec le noyau. Les modules doivent tre installs aprs avoir install le noyau et redmarr le systme, faute de quoi la commande depmod peut ne pas trouver trouver tous les symboles utiliss par les modules dans le noyau en cours dexcution.

180

Chapitre 8. Conguration du matriel et des priphriques


Ce chapitre prsente les concepts ncessaires linstallation de cartes lles additionnelles et la conguration des priphriques complmentaires sous Linux. La procdure dinstallation des disques durs, graveurs, cartes son, cartes graphiques, cartes vido et cartes rseau sera donc dcrite, ainsi que la manire de les congurer pour obtenir un fonctionnement correct sous Linux.

8.1. Gnralits sur le support matriel sous Linux


Comme il la dj t expliqu dans les chapitres prcdents, Linux gre tous les priphriques comme des chiers spciaux. De plus, la plupart des gestionnaires de priphriques peuvent tre chargs dynamiquement, sous la forme de modules du noyau. Cette section prsentera donc les notions de base concernant les chiers spciaux de priphriques, les modules du noyau ainsi que leurs rles respectifs dans la conguration dun nouveau matriel.

8.1.1. Notion de chiers spciaux de priphriques


La notion de chier spcial de priphrique simplie normment lutilisation du matriel par les programmes dapplication, puisque la plupart des oprations sur un priphrique reviennent simplement raliser une criture ou une lecture. videmment, lcriture sur un chier spcial de disque permet denregistrer les donnes sur ce disque, et la lecture permet de les rcuprer. Mais cela ne sarrte pas l ! Par exemple, la communication avec le modem se fait simplement en crivant et en lisant les donnes sur le chier spcial du port srie sur lequel le modem est connect. De mme, jouer un chier son revient simplement lcrire dans le chier spcial qui gre la carte son. Il est mme possible daccder la mmoire vido par lintermdiaire dun chier spcial de priphrique... Bien entendu, certaines fonctionnalits avances des priphriques ne peuvent pas tre accdes simplement par une une criture ou une lecture dans un chier spcial. Le systme fournit donc aux applications dautres moyens daccder ces fonctionnalits, par lintermdiaire dappels systmes spciques (pour ceux qui sont intresss par la programmation systme, cet appel systme est ralis par la fonction ioctl, dont le nom provient de labrviation de langlais Input / Output ConTroL ). videmment, cette mthode nest utilise que par les programmes qui connaissent bien le fonctionnement du gestionnaire du priphriques, car ils doivent spcier une requte que seul ce gestionnaire comprend en gnral. Quoi quil en soit, les requtes de ce type utilisent elles aussi un descripteur de chier spcial de priphrique, ce qui fait que tous les accs au matriel ont lieu par lintermdiaire de ces chiers. Il existe deux principaux types de chiers spciaux de priphriques. Le premier type correspond aux priphriques de type bloc, dont les donnes ne peuvent tre lues que par blocs (cest le cas des disques durs, des lecteurs de CD et de disquettes en particulier). Le deuxime type correspond aux priphriques de type caractre, dont les donnes peuvent tre lues caractre par caractre (cartes son, ports srie, etc.). En plus de son type, chaque chier spcial de priphrique est caractris par deux codes permettant didentier le type et le modle du priphrique auquel il donne accs. Ces deux codes portent le nom de code majeur et de code mineur. Comme nous le verrons plus tard, cest par lintermdiaire de ces codes que le noyau est capable de retrouver le gestionnaire de priphriques utiliser pour satisfaire aux requtes des clients qui accdent un chier spcial de priphrique. Il y a donc, en gnral, une association unique entre ces codes et les gestionnaires de priphriques. La liste des codes majeurs et mineurs dj affects des priphriques est donne

181

Chapitre 8. Conguration du matriel et des priphriques dans le chier /usr/src/linux/Documentation/devices.txt (ce chier vous donnera donc une ide des priphriques qui peuvent tre ou qui seront grs par Linux). Les chiers spciaux de priphriques sont tous stocks dans le rpertoire /dev/. En gnral, ce rpertoire contient un grand nombre de chiers spciaux de priphriques, mme pour des priphriques inexistants sur votre machine. Ces chiers sont installs automatiquement par les distributions, qui laissent au noyau le soin de signaler que le priphrique est absent lorsquun programme tente daccder un chier spcial auquel aucun matriel ne correspond. Les chiers fournis par les distributions sont donc, en thorie, susceptibles de couvrir toutes les gammes de priphriques courants, et vous naurez pas toucher au rpertoire /dev/. Cependant, si vous devez crer un chier spcial de priphrique vous-mme, vous devrez utiliser la commande mknod. Sa syntaxe est relativement simple :
mknod fichier type majeur mineur

o fichier est le nom du chier spcial de priphrique crer, type est une lettre indiquant le type du chier spcial (c pour les chiers de type caractre et b pour les chiers de type bloc), et majeur et mineur sont les codes majeur et mineur du priphrique. Depuis la version 2.4.0 du noyau, il est galement possible que le rpertoire /dev/ contienne un systme de chiers virtuel, gr par le noyau. Ce systme de chiers est peupl automatiquement par le noyau avec les chiers spciaux de priphriques de tous les priphriques dtects lors de linitialisation du systme. Cette technique permet de rsoudre plusieurs problmes concernant les chiers spciaux de priphriques. Le plus vident pour lutilisateur est que seuls les chiers spciaux des priphriques effectivement prsents apparaissent dans le rpertoire /dev/, ce qui limine la prsence de tous les chiers spciaux inutiles. Le gros avantage du systme de chiers virtuel /dev/ est que les chiers spciaux sont crs par les gestionnaires de priphriques eux-mmes. Cela implique que lassociation entre les chiers spciaux et les gestionnaires de priphriques du noyau qui en ont la charge est directe, et ne ncessite plus dutiliser les codes majeurs et mineurs. Cela a plusieurs consquences :

il ny a plus besoin davoir recours une autorit centrale pour obtenir les valeurs de codes mineurs et majeurs. Les chiers spciaux de priphriques continuent davoir des codes majeurs et mineurs bien quils ne soient plus ncessaires, mais les valeurs de ces codes sont attribues dynamiquement de manire unique par le noyau lorsque les gestionnaires de priphriques sinitialisent. Il ny a donc plus de risques de conit entre deux priphriques ; la limitation du nombre de priphriques due au nombre limit de codes majeurs et mineurs nexiste plus (il suft de consulter la liste du chier /usr/src/linux/Documentation/devices.txt pour constater quil reste peu de codes libres pour les priphriques venir) ; les performances sont suprieures, puisque la recherche du gestionnaire de priphriques associ un chier spcial de priphrique na plus lieu ; la conguration du systme en est simplie.

Par ailleurs, le systme de chiers virtuel est beaucoup plus structur que le rpertoire /dev/ classique, car les chiers spciaux de priphriques sont classs par type et par nature. Ce systme de chiers constitue donc une image logique et cohrente de larchitecture matrielle de lordinateur. Ainsi, la recherche dun priphrique est beaucoup plus facile. En revanche, les chemins sur les chiers spciaux de priphriques sont nettement plus longs que les chemins classiques. Par exemple, le chier spcial de priphrique /dev/hda1 permettant daccder la premire partition du premier disque IDE sera accessible avec le chemin /dev/ide/host0/bus0/target0/lun0/part1 dans le systme de chiers virtuel.

182

Chapitre 8. Conguration du matriel et des priphriques Ce changement dans la structure du rpertoire /dev/ est un changement de taille, propre empcher la plupart des applications systme de fonctionner normalement. Cest pour rsoudre ce problme que le dmon devfsd a t crit. Ce dmon, sil est lanc juste aprs que le systme de chiers virtuel a t cr (donc, en pratique, dans les premiers scripts de dmarrage du systme), surveille la cration des chiers spciaux de priphriques dans le systme de chiers virtuel et permet ainsi deffectuer des actions spciques lorsquun gestionnaire de priphriques senregistre ou se dcharge du noyau. Les actions effectuer sont spcies dans le chier de conguration /etc/devfsd.conf. Par dfaut, le dmon devfsd cre des liens symboliques portant les noms des anciens chiers spciaux de priphriques vers les chiers du systme de chiers virtuel. Ainsi, les anciennes applications peuvent continuer utiliser les anciens noms de chiers spciaux pour accder aux priphriques. La suite de ce document utilisera donc les noms de chiers spciaux de priphriques classiques. Vous devrez faire la transcription pour toutes les commandes manipulant les priphriques si vous utilisez le systme de chiers virtuel avec sa nouvelle structure.
Note : Un dmon est un processus qui tourne en arrire plan dans le systme. Les dmons fonctionnent souvent dans le compte root et offrent des services de base que les autres programmes utilisent. Le terme dmon provient de la traduction littrale daemon , ce qui signie ange en ralit. Le dmon se place donc en tant quintermdiaire entre Dieu (cest--dire le noyau) et les hommes (cest--dire les applications normales). Le terme daemon a t ensuite clairci et dni comme lacronyme de langlais Disk And Execution MONitor .

Mme si votre distribution utilise le systme de chiers virtuel /dev/, il se peut que vous ayez crer des chiers spciaux manuellement. Cela peut tre ncessaire pour crer un chier spcial de priphrique pour un gestionnaire qui ne gre pas encore le systme de chiers virtuel /dev/. La syntaxe utiliser est strictement la mme que dans le cas des chiers spciaux classiques. Je vous invite consulter la page de manuel de la commande mknod si vous devez crer vous-mme un chier spcial de priphrique. Ce ne sera normalement pas ncessaire. Vous pouvez galement obtenir de plus amples informations sur le dmon devfsd et son chier de conguration dans la page de manuel devfsd.

8.1.2. Modules du noyau


Les modules du noyau sont des bibliothques que lon peut charger dans le noyau lorsque celui-ci a besoin dune certaine fonctionnalit. Une fois chargs, les modules font partie intgrante du noyau et ajoutent leurs fonctions celles existantes. Ces bibliothques sont normalement stockes dans le rpertoire /lib/modules/version/, o version est le numro de version du noyau pour lequel ces modules ont t crs. Beaucoup de fonctionnalits du noyau peuvent tre congures pour tre utilises sous la forme de modules. Certains pilotes ne fonctionnent que sous la forme de modules, aussi faut-il savoir les manipuler. Les modules peuvent tre chargs manuellement laide des commandes insmod et modprobe. modprobe est un peu plus volue, car elle gre les dpendances entre les modules et est capable de charger les modules utiliss par le module demand. Leur utilisation est des plus simple :
insmod module

ou :
modprobe module

o module est le nom du module charger.

183

Chapitre 8. Conguration du matriel et des priphriques En ralit, la commande modprobe appelle la commande insmod pour chaque module qui doit tre charg, dans lordre des dpendances des modules. De cette manire, chaque module peut tre charg sans problmes, car toutes les fonctionnalits quil utilise sont dj prsentes dans le noyau lors de son chargement. La commande modprobe va chercher les informations de dpendances dans le chier modules.dep, situ dans le rpertoire /lib/module/version/. Ce chier utilise une syntaxe trs simple, et spcie pour chaque module les modules dont il dpend. Bien quil puisse parfaitement tre crit la main, cela ncessiterait davoir une connaissance approfondie des modules du noyau. Cest donc pour cela que loutil depmod a t crit. Cet outil permet de gnrer le chier modules.dep automatiquement, pourvu quon lappelle avec loption -a en ligne de commande :
depmod -a

Il faudra donc appeler cette commande aprs chaque installation ou suppression de module dans le systme. La liste de modules qui ont t chargs peut tre obtenue aisment avec la commande lsmod :
lsmod

Enn, la commande rmmod permet de dcharger un module, avec la ligne de commande suivante :
rmmod module

La plupart des modules peuvent prendre un certain nombre doptions lors de leur chargement. Ces options sont en quelque sorte lquivalent des options que lon communique au noyau lors de lamorage, pour prciser par exemple la conguration matrielle utilise. Toutes ces options sont dnies dans le chier de conguration/etc/modules.conf. Lors du chargement dun module, modprobe consulte ce chier et passe les paramtres indiqus au module charger. Les options des modules sont spcies dans le chier module.conf laide du mot cl options, suivi du nom du module pour lequel ces options sont dnies, lui-mme suivi des paramtres de chargement du module. La syntaxe est donc la suivante :
options module paramtres

La liste des paramtres que lon peut passer un module dpend bien videmment du module. Vous pouvez obtenir la liste des options supportes par un module laide de loption -p de la commande modinfo :
modinfo -p module

Nous verrons par la suite des exemples de passage de paramtres pour les modules les plus courants. Le chier module.conf permet galement de dnir des oprations complmentaires qui doivent tre effectues lors du chargement et du dchargement dun module. Ces oprations sont introduites par les mots cls pre-install, post-install, pre-remove ou post-remove. Selon le mot cl utilis, elles sont excutes respectivement avant et aprs le chargement du module, et avant et aprs son dchargement. Ces quatre mots cls utilisent tous la mme syntaxe :
xxx-install module opration

184

Chapitre 8. Conguration du matriel et des priphriques o xxx-install est le mot cl indiquant les conditions dapplication de lopration, module est le nom du module pour lequel une opration complmentaire doit tre effectue, et opration est la ligne de commande de lopration en question. Ainsi, si le port parallle est utilis pour accder un priphrique ncessitant une opration dinitialisation quelconque, celle-ci peut tre excute aprs le chargement du module laide du mot cl post-install :
post-install parport_pc initperiph

(en supposant que la commande initperiph permet dinitialiser le priphrique en question). videmment, ce type dopration dpend du matriel connect sur le port parallle, mais le principe est l. Dans la plupart des cas, ces options sont facultatives, car modprobe utilise un jeu de valeurs par dfaut qui permettent dutiliser les modules mme si le chier de conguration modules.conf est absent. Vous pouvez visualiser ces options en renommant le chier de conguration modules.conf et en tapant la commande suivante :
modprobe -c

Cette commande vous permettra galement de recrer un nouveau chier de conguration si daventure vous perdiez celui fourni avec votre distribution. Il nest normalement pas ncessaire dutiliser ces commandes pour charger les modules. En effet, il est possible de faire en sorte que les modules soient chargs la demande, lorsquune de leurs fonctionnalits est demande au niveau du noyau. Pour cela, le noyau utilise lui-mme la commande modprobe pour charger les modules, ce qui assure la gestion correcte des dpendances entre les modules. chaque fois que le noyau a besoin dune fonctionnalit qui nest pas encore charge, il effectue une requte modprobe en lui demandant de charger le module manquant. Le nom du module dont le noyau demande le chargement modprobe dpend videmment de la fonctionnalit demande et ne correspond pas forcment un nom de module existant. modprobe doit donc faire la correspondance entre le nom de module demand par le noyau et le nom dun module rel. Cest encore une fois dans le chier de conguration /etc/modules.conf que cette correspondance est stocke. Par exemple, lorsque le noyau dsire accder au port parallle, il utilise la commande suivante :
modprobe -k parport_lowlevel

o parport_lowlevel est le nom que le noyau utilise pour rfrencer le port parallle. Ce nom est identique quelle que soit la plate-forme sur laquelle le noyau fonctionne, quil sagisse dun PC, dun Mac ou dune station de travail Sun. Sur les ordinateurs dont larchitecture est de type PC, le vritable module utiliser est le module parport_pc. Il faut donc donner indiquer lassociation entre les noms parport_lowlevel et parport_pc dans le chier modules.conf. Cette association est ralise par la dnition dun certain nombre dalias de modules rels. Chaque alias est introduit par le mot cl alias, dont la syntaxe est donne ci-dessous :
alias nom module

o nom est le nom de lalias, et module est le nom du module rel. Lorsque la commande modprobe est appele avec le nom dun alias en paramtre, elle commence par rechercher le nom du module rel

185

Chapitre 8. Conguration du matriel et des priphriques dans le chier modules.conf, puis elle le charge en mmoire. Pour le port parallle, on aura donc la dnition suivante dans le chier modules.conf :
alias parport_lowlevel parport_pc

Figure 8-1. Chargement automatique des modules du noyau

Loption -k passe en paramtre modprobe par le noyau nest quant elle utilise que par le noyau. Elle permet de marquer le module comme tant automatiquement dchargeable, lorsque plus personne nutilisera ses fonctionnalits. Cette technique permet de minimiser la consommation mmoire du noyau sur les machines dont les ressources sont trs limites. Les modules qui sont chargs automatiquement par le noyau sont en effet marqus comme tant automatiquement dchargeables, et on peut effectivement les supprimer laide de la commande suivante :
modprobe -r

Cette commande dcharge les modules inutiliss automatiquement, dans lordre inverse de leur chargement. Cette commande respecte donc les dpendances entre modules, et seuls les modules inutiliss sont rellement dchargs. Il est recommand de placer cette commande dans le chier /etc/crontab de votre systme, an que les modules inutiliss soient dchargs intervalle de temps rgulier. Vous aurez donc sans doute placer une ligne telle que celle-ci :
*/2 * * * * root modprobe -r

dans votre chier /etc/crontab. Le dchargement des modules inutiliss aura lieu toutes les deux minutes. Vous pouvez constater que le mcanisme dalias permet de rendre le noyau indpendant des modules utiliss, puisque lassociation entre le nom du module utilis par le noyau et le module rel et ses paramtres est maintenu dans le chier de conguration modules.conf. Linconvnient de cette

186

Chapitre 8. Conguration du matriel et des priphriques mthode est en revanche quil faut connatre les noms de modules utiliss par le noyau. Ces noms sont assez variables et dpendent de la fonctionnalit demande. Toutefois, les noms utiliss par le noyau peuvent facilement tre dtermins pour les modules grant les chiers spciaux de priphriques. En effet, il est possible de construire un nom unique pour chaque chier spcial de priphrique, qui pourra tre utilis par le noyau pour spcier le module capable de grer les fonctionnalits de ce chier. La manire de construire ces noms varie selon que le chier spcial de priphrique accd, et selon quil sagit dun chier rel ou dun chier du systme de chiers virtuel /dev/ du noyau. Sil sagit dun vrai chier spcial de priphrique, il est parfaitement identi par sa nature (disque, priphrique de type caractre, interface rseau...) et ses deux codes majeur et mineur. Le noyau peut donc construire un nom partir de ces informations. Ainsi, pour un chier spcial de priphrique de type caractre, le nom gnr par le noyau est en gnral de la forme char-major-xxxx . Pour les priphriques de type bloc, il est de la forme block-major-xxxx . Les caractres xxxx identient le code majeur de ce priphrique, plus rarement son code mineur. Par exemple, pour les cartes son, le nom de module char-major-14 sera utilis, parce que les cartes sons utilisent toutes le code majeur 14. Le code mineur nest actuellement pas utilis pour les cartes son. Mme si les noms de modules sont toujours construit plus ou moins selon ce schma pour les chiers spciaux de priphriques rels, il reste difcile de dterminer le nom exact du module associ un chier spcial de priphrique. Par exemple, nous avons vu que le nom de module utilis pour le port parallle (accessible via le chier spcial de priphrique /dev/lp0) est parport_lowlevel. De mme, le nom utilis pour les interfaces rseau de type Ethernet est eth0, eth1, etc. Il nest donc pas toujours vident de savoir quel est le nom que le noyau utilisera. Le plus simple dans ce cas est encore de regarder dans la conguration utilise par modprobe laide de son option -c. En revanche, si le chier spcial de priphrique est un chier virtuel, le mcanisme de nommage est compltement diffrent. En effet, le systme de chiers virtuel /dev/ cre les chiers spciaux de priphriques la demande, lorsque les gestionnaires de priphriques senregistrent au niveau du noyau. Il nest donc pas possible de dterminer les codes majeurs et mineurs des chiers spciaux de priphriques si les modules qui les grent ne sont pas chargs, parce que ces chiers nexistent pas encore dune part, et parce que ces codes sont dtermins dynamiquement et ne sont donc jamais xes dautre part. Le chargement des modules la demande est en fait ralis par le dmon devfsd, que nous avons dj dcrit dans la Section 8.1.1. Outre la cration des liens symboliques permettant daccder aux chiers spciaux de priphriques sous leur nom classique, ce dmon est capable deffectuer des actions diverses lorsquun vnement se produit dans le systme de chiers virtuel /dev/. Toutes ces actions sont dcrites dans le chier de conguration /etc/devfsd.conf. En particulier, il est possible deffectuer une action lorsquun programme recherche un chier spcial de priphrique dans le systme de chiers, chose que tous les programmes qui utilisent les chiers spciaux de priphriques font, ne serait-ce que pour pouvoir les ouvrir. Cest lors de cette recherche que le dmon devfsd va demander le chargement du module correspondant au chier spcial de priphrique demand. Pour que ce mcanisme fonctionne, il faut avant tout lactiver. Cela se fait simplement en ajoutant la ligne suivante dans le chier devfsd.conf :
LOOKUP .* MODLOAD

qui signie que le chargement dynamique de module (action MODLOAD ) doit tre effectue lorsquune recherche (vnement LOOKUP ) a lieu dans le systme de chiers virtuel /dev/, et ce pour nimporte quel nom de chiers spcial de priphrique (expression rguire .* , qui reprsente nimporte quelle squence de caractres). Bien entendu, les noms de module utiliss par le dmon devfsd ne peuvent pas se baser sur les codes majeur et mineur du chier spcial de priphrique pour les raisons que lon a indiqu ci-dessus.

187

Chapitre 8. Conguration du matriel et des priphriques Mais pourquoi faire compliqu quand on peut faire simple ? Le dmon devfsd ne sembarrasse pas de dtails, et demande tout simplement le chargement du module dont le nom est exactement le chemin du chier spcial de priphrique recherch ! Il suft donc tout simplement de dnir les alias correspondant dans le chier modules.conf pour ventuellement trouver le bon nom de module charger. En fait, le dmon devfsd utilise un autre chier de conguration, le chier /etc/modules.devfs, an de simplier lcriture du chier modules.conf. Ce chier lui permet dassocier un ensemble de noms de chiers spciaux de priphriques un seul module. Par exemple, tous les ports srie dune machine utilisent, en gnral, le mme gestionnaire, bien quils soient accessibles par lintermdiaire des chiers spciaux de priphriques /dev/ttySn, o n est le numro du port srie (0 pour le port COM1, 1 pour le port COM2, etc.). Le chier modules.devfs regroupe donc tous les noms de modules /dev/ttyS* en un seul nom de module, savoir serial. Cest donc ce nom l qui sera communiqu modprobe pour le chargement du module de gestion des ports srie. De manire gnrale, vous naurez pas modier les chiers devfsd.conf et modules.devfs, car ceux fournis avec les distributions conviennent parfaitement. En revanche, vous modierez certainement le chier modules.conf. Il sagit l dun opration dlicate, car elle ncessite de bien connatre les mcanismes de nommage utiliss par le noyau, les noms des modules rels et leurs paramtres de conguration. En gnral, vous trouverez les informations sur les entres ajouter ou modier dans le chier daide du module correspondant, que vous pourrez trouver dans les sources du noyau (dans le rpertoire /usr/src/linux/Documentation/). Quoi quil en soit, la modication de modules.conf peut gnrer de nouvelles dpendances entre les modules. Il est donc ncessaire dexcuter la commande depmod -a aprs chaque modication de ce chier.

8.2. Conguration des priphriques de masse


Les priphriques de masse sont les priphriques permettant de manipuler de grandes quantit de donnes. Il sagit gnralement des priphriques connects sur bus SCSI, des disques durs et lecteurs de CD/DVD, des graveurs et des scanners.

8.2.1. Conguration des priphriques SCSI


Les priphriques de qualit sont gnralement connects sur bus SCSI, en raison des capacits de celui-ci en termes de dbit et de performances. En particulier, les disques durs SCSI restent privilgis sur les systmes haut de gamme comme les serveurs par exemple, parce que le bus SCSI permet dutiliser plusieurs priphriques simultanment. Sous Linux, les priphriques SCSI sont accds par lintermdiaire des chiers spciaux de priphrique /dev/sdx pour les disques durs ou /dev/scdn pour les lecteurs ou les graveurs de CD-ROM, o x est la lettre dnissant le disque dur et n est le numro du lecteur ou du graveur de CD-ROM. Les autres priphriques SCSI sont accds par lintermdiaire des chiers spciaux de priphriques SCSI gnriques, savoir les chiers /dev/sgn. Notez que certains priphriques pourront tre utiliss par lun ou lautre de ces chiers spciaux, selon la fonctionnalit laquelle on cherche accder. Par exemple, les programmes de gravage utilisent les chiers spciaux de priphriques /dev/sgn pendant le gravage, alors que la simple lecture dun CD avec un graveur se fait via le chier spcial de priphrique /dev/scdn correspondant. La prise en charge des priphriques SCSI se fait au niveau du noyau pour les fonctionnalits de base. En ralit, la conguration des priphriques SCSI se restreint celle de la carte SCSI utilise. Les

188

Chapitre 8. Conguration du matriel et des priphriques fonctionnalits de plus haut niveau sont relgues au niveau applicatif. Par exemple, la prise en charge des diffrents graveurs SCSI du march est ralise par les logiciels de gravage eux-mmes, de mme que la prise en charge des diffrents scanners lest par les logiciels dacquisition dimage. La gestion des contrleurs SCSI au niveau du noyau se fait par lintermdiaire des options du menu SCSI support du programme de conguration du noyau. Outre loption SCSI support que lon activera bien videmment, ce menu comprend les options suivantes, que lon choisira en fonction du type des priphriques SCSI utiliser :

SCSI disk support , pour les disques durs SCSI ; SCSI tape support , pour les lecteurs de cartouches SCSI. Les possesseurs de lecteurs de cartouches OnStream SC-x0 devront plutt utiliser loption SCSI OnStream SC-x0 tape support , car le gestionnaire de priphriques standard nest pas capable de les prendre en charge ; SCSI CD-ROM support , pour les lecteurs de CD-ROM SCSI ; SCSI generic support , pour les autres priphriques dont lutilisation requiert lutilisation dun programme applicatif spcique. Il sagit ici des graveurs de CD, des scanners et autres priphriques spciaux.

Certains priphriques SCSI disposent de plusieurs numros dunits logiques sur leur bus. Il peut donc tre ncessaire, pour ces priphriques, dactiver loption Probe all LUNs on each SCSI device an de pouvoir les utiliser correctement. Les autres options ne sont pas essentielles, consultez leur aide pour plus de dtails leur sujet. En plus des options gnrales de la prise en charge du SCSI, il est impratif de slectionner le gestionnaire de priphriques capable de piloter votre contrleur SCSI. Cela peut tre fait dans le sous-menu SCSI low-level drivers . Vous devrez y activer la prise en charge pour votre matriel, aucune rgle ne peut donc tre dnie ce niveau. Consultez la documentation de votre matriel pour dterminer le gestionnaire de priphriques adquat utiliser. Une fois la conguration du noyau effectue, vous navez plus qu le compiler et linstaller pour pouvoir utiliser vos priphriques. La manire de procder a t dcrite en dtail dans la Section 7.3.

8.2.2. Conguration des disques durs IDE


Les disques durs IDE ont longtemps souffert dun gros dfaut par rapport aux disques SCSI : celui de ne pas pouvoir effectuer des oprations sans lintervention du processeur. En effet, lenvoi des donnes aux disques se faisaient classiquement par de nombreuses critures dans les ports dentre/sortie des contrleurs de disques, obligeant ainsi le systme consacrer une part importante des ressources processeur uniquement pour les accs disque. Ce dfaut a t corrig avec la monte en puissance du mode DMA (abrviation de langlais Direct Memory Access ). Le mode DMA des priphriques IDE existe depuis les tous dbuts de larchitecture PC, mais les premiers contrleurs DMA ntaient pas capables de suivre la cadence des disques dur, mme des plus anciens. Il na donc malheureusement pas t utilis pendant longtemps, jusqu ce quune nouvelle technologie soit mise au point : lUltra DMA. La plupart des jeux de composants des cartes mres modernes sont prsent capables de grer lUltra DMA, dont les frquences de bus les plus courantes sont 33, 66 et 100MHz.
Note : Mme si les interfaces IDE ont prsent rduit lcart avec les interfaces SCSI au niveau du taux de transfert des donnes, elles ont toujours un train de retard par rapport elles. En effet, les priphriques SCSI sont dune part capables de communiquer entre eux sur leur bus, dchargeant ainsi totalement le processeur de ce travail de transfert des donnes, et dautre

189

Chapitre 8. Conguration du matriel et des priphriques


part capables de traiter plusieurs requtes dafle sans lintervention du processeur. Ces fonctionnalits dchargent le bus systme, mais sont galement extrmement utiles pour les systmes dexploitation multitches. Ceux-ci peuvent en effet envoyer plusieurs commandes aux priphriques et effectuer dautres traitements pendant quelles sexcutent en asynchrone. Les disques SCSI ont donc un taux doccupation du processeur et du bus systme nettement moindre, et permettent aux systmes tels que Linux datteindre un degr de ractivit ingal avec les disques IDE classiques. Cela dit, les priphriques IDE cotent nettement moins cher que les priphriques SCSI, et cest sans doute l la clef de leur succs.

Par dfaut, Linux utilise les disques durs en mode de compatibilit, cest dire quil nactive pas lUltra DMA pour les accs aux disques. Les performances du systme en sont donc grandement rduites au niveau des accs disque. Ceci se remarque particulirement lors des gros transferts de donnes, car le cache disque gr par Linux peut ne plus tre sufsant pour acclrer les oprations destination du disque. Notez cependant que pour une utilisation courante, les mcanismes de cache du systme sont tellement puissants que vous ne pourriez dtecter aucun dsagrment (jai par exemple pu travailler pendant plus de quatre mois sur ma machine avant de mapercevoir que mes disques taient mal congurs). Toutefois, puisquon peut faire mieux, autant congurer correctement les contrleurs IDE... Les contrleurs IDE peuvent tre congurs grce lutilitaire hdparm. Comme son nom lindique, cet utilitaire permet de modier les paramtres des disques durs et des contrleurs IDE. Il permet galement de tester les performances de votre conguration, et peut donc servir doutil de diagnostic trs utile. La mesure du dbit de votre sous-systme disque (sans les mcanismes de cache du systme) peut tre en effet ralise facilement avec la commande suivante :
hdparm -t priphrique

o priphrique est le chier spcial de priphrique de votre disque dur.


Note : Si vous obtenez des valeurs infrieures ou gales 3 Mo/s, vous avez rellement un problme de conguration. Les premiers disques UltraDMA 33 peuvent atteindre facilement 8 10 Mo/s, les disques UltraDMA 66 atteignent facilement 17 22 Mo/s, et les disques les plus rcents en UltraDMA 100 peuvent aller encore bien au del. Faites bien attention ne pas utiliser loption -T la place de loption -t. En effet, vous mesureriez le dbit dans le sous-systme disque complet de Linux, avec ses mcanismes de cache. Vous obtiendriez alors des taux de transfert nettement plus grands (dix fois plus au moins), qui ne reprsenteraient pas le taux de transfert rel de votre interface IDE.

Lactivation de lUltraDMA avec hdparm se fait simplement avec loption -d. Cette option prend en paramtre un entier pouvant valoir 0 ou 1, selon que lUltraDMA doit tre activ ou non. Cependant, cette option peut ne pas tre sufsante pour les disques modernes, pour lesquels il faut galement prciser le mode de transfert utiliser. Ce mode peut tre indiqu laide de loption -X, qui prend en paramtre un nombre dont la valeur est le numro du mode plus une constante identiant le type de transfert utilis. Les transferts de type PIO (cest dire le mode dans lequel le processeur effectue luimme les transferts par lintermdiaire des ports dentre / sortie) utilisent la constante 8, les transferts de type DMA simple utilisent la constante 32, et les transferts en UltraDMA utilisent la constante 64. Ainsi, la slection du mode UltraDMA mode 2 pour le disque matre du premier contrleur IDE se fait avec la commande suivante :
hdparm -d1 -X66 /dev/hda

190

Chapitre 8. Conguration du matriel et des priphriques La valeur 66 utilise ici signie donc que les transfers se font en UltraDMA (constante 64), mode 2 (valeur 2). Le choix des modes de fonctionnement dpend bien entendu du matriel install sur votre ordinateur. Cependant, la ligne de commande de lexemple prcdent conviendra dans la plupart des cas.
Note : Pour que lUltraDMA soit utilisable, il faut bien entendu que les pilotes IDE de votre noyau Linux le grent. Gnralement, les noyaux des distributions en sont capables, mais si daventure ce ntait pas le cas, vous devriez recompiler votre noyau. Les options activer dans le programme de conguration du noyau sont les options suivantes du menu ATA/IDE/MFM/RLL support :
Generic PCI IDE chipset support du menu IDE, ATA and ATAPI Block devices ; Generic PCI bus-master DMA support ; Use PCI DMA by default when available .

Vous devrez galement activer le support pour les jeux de composants utiliss par votre carte mre.

Lutilitaire hdparm permet galement de xer dautres paramtres des contrleurs IDE. En particulier, il est possible dactiver et de dsactiver le mode 32 bits de ces contrleurs laide de loption -c. Comme pour loption -d, loption -c prend en paramtre un indicateur pouvant valoir 0 ou 1 et permettant dactiver ou de dsactiver le mode 32 bits du contrleur. Notez que certains contrleurs ne supportent pas correctement le mode de fonctionnement 32 bits et peuvent perdre des donnes si vous lactivez.
Note : Prenez garde lorsque vous utilisez la commande hdparm. Si vous spciez des paramtres incorrects ou non pris en charge par votre matriel, vous pouvez fort bien bloquer compltement vos contrleurs IDE, et planter ainsi le systme en un temps trs court. Si daventure cela se produisait, il faudrait attendre un peu de temps, jusqu ce que le systme saperoive de la mauvaise conguration des contrleurs et les rinitialisent avec leurs paramtres initiaux. Vous pouvez dtecter ce genre de rinitialisation dans les messages du noyau, que vous pouvez tout moment afcher avec la commande dmesg. Sachez toutefois que le risque de corruption du systme de chiers en cas de mauvaise conguration reste bien rel, et quil vaut mieux un systme lgrement plus lent quun systme qui dtruit vos donnes en un temps record.

Lorsque vous aurez trouv les paramtres optimaux de vos contrleurs de disque, vous pourrez demander au systme de conserver ces paramtres par dfaut en ajoutant loption -k1 dans la ligne de commande de hdparm. Par exemple, pour congurer de manire permanente le premier disque IDE en UltraDMA mode 2 et en accs 32 bits, il faut utiliser la commande suivante :
hdparm -c1 -d1 -X66 -k1 /dev/hda

Note : Prenez garde toutefois au fait que les rinitialisations du contrleur en cas derreur reprendront systmatiquement les mmes paramtres, ce qui peut rellement bloquer compltement votre sous-systme disque (et planter irrmdiablement votre systme). Dans ce cas, il ne vous restera plus que le redmarrage brutal, avec les risques de pertes de donnes qui en dcoulent.

191

Chapitre 8. Conguration du matriel et des priphriques La conguration des disques durs et des contrleurs IDE pourra galement tre ajoute dans le script de dmarrage de votre systme. Ce script est gnralement plac dans le rpertoire /etc/rc.d/ ou dans le rpertoire /sbin/init.d/ selon votre distribution. Bien entendu, il faut rellement tre sr de la commande de conguration utilise, car elle sera excute systmatiquement chaque dmarrage.

8.2.3. Installation dun graveur de CD-ROM


Linux dispose de tous les logiciels permettant de graver des CD-ROM, et ce avec la plupart des graveurs disponibles sur le march. Il permet de copier des CD et de crer des images disques. Cependant, il nest pas encore possible dutiliser le gravage par paquet, qui permet dutiliser les graveurs de CD comme des priphriques amovibles. Cette fonctionnalit est en effet encore ltude, elle sera sans doute disponible sous peu.

8.2.3.1. Notions de base sur le gravage sous Linux


Originellement, tous les graveurs de CD utilisaient linterface SCSI. Ce nest que plus tard que les graveurs sur port parallle et les graveurs IDE ATAPI sont apparus. Actuellement, les graveurs externes connects sur port parallle sont de moins en moins vendus. Les graveurs IDE font une belle perce, mais les graveurs SCSI restent incontournables pour les vielles machines dont on nest pas sr des performances au niveau des disques. Les logiciels de gravage doivent donc tre capable dutiliser nimporte quel type de graveur, ce qui nest pas simple. Cest pour cette raison quils utilisent tous linterface SCSI, aussi bien pour des raisons historiques que pour des raisons techniques. Cela ne signie pas quil est impossible dutiliser les graveurs ATAPI, car le protocole de communication ATAPI nest rien dautre quune traduction des commandes IDE en commandes SCSI au niveau matriel. Lutilisation dun graveur de CD SCSI ne posera donc pas de problme et se fera de manire directe. En revanche, les graveurs de CD IDE ATAPI devront tre accds par lintermdiaire dun mulateur SCSI, qui traduira les commandes SCSI en commandes ATAPI correspondantes. Cet mulateur est gr au niveau du noyau de Linux. Le problme est quil est impossible dactiver la fois le support des CD-ROM IDE ATAPI et lmulateur SCSI pour les priphriques IDE dans un mme noyau. On devra donc faire le choix entre les deux solutions suivantes :

soit on nutilise que linterface SCSI pour accder aux lecteurs de CD, et on ne risque aucun conit ; soit on active les deux fonctionnalits sous la forme de modules, et on nutilise quune seule des interfaces chaque instant.

La premire solution est videmment la plus simple (et surtout la plus sre). La deuxime solution permet dutiliser ses lecteurs de CD-ROM IDE ATAPI normalement avec leur interface native, sauf lorsquon dsire graver un CD. Comme il ny a pas de cas o linterface SCSI est infrieure linterface IDE en termes de performances et de fonctionnalits, cette mthode est dconseille.

8.2.3.2. Conguration du noyau


Vous allez encore une fois avoir effectuer des choix de conguration dans le noyau pour activer la gestion des priphriques SCSI capables de piloter votre graveur. Les questions concernant les

192

Chapitre 8. Conguration du matriel et des priphriques graveurs de CD-ROM sont rcapitules ci-dessous : Include IDE/ATA-2 CDROM support Cette option permet dactiver la gestion des lecteurs de CD IDE ATAPI. Vous ne devez pas rpondre cette question par Y, faute de quoi vous ne pourrez pas utiliser votre graveur de CD. Il vous est en revanche possible de rpondre par M, pour nactiver la fonctionnalit qu la demande, sous la forme de module. La rponse recommand est N, moins que vous ne sachiez ce que vous faites. En effet, si vous activez cette fonctionnalit, vous risquez davoir des conits avec lmulation SCSI. Ce problme sera dtaill plus loin. SCSI emulation support Cette option permet dactiver la gestion des priphriques IDE ATAPI par lintermdiaire de commandes SCSI. Cest cette option qui va vous permettre dutiliser votre graveur de CD IDE avec les programmes qui ne peuvent grer que des graveurs SCSI. Vous pouvez rpondre N cette question si vous nutilisez ni lecteur de CDROM SCSI ni graveur SCSI. Dans tous les autres cas, il est recommand de rpondre Y cette question an daccder votre matriel via linterface SCSI. Vous pouvez activer cette fonctionnalit sous la forme de module en rpondant par M cette question, cette solution est recommande si vous avez activ la gestion des CDROM IDE ATAPI dans la question prcdente. Loopback device support Cette option permet dactiver une fonctionnalit permettant dutiliser un chier comme un priphrique normal. Elle est trs utile pour tester les images de CD, car il suft simplement de monter le chier image comme un priphrique loopback . Il est donc recommand dactiver cette fonctionnalit, que lon dispose dun graveur SCSI ou IDE. Cette fonctionnalit peut tre active sous la forme de module ou non, la rponse recommande est Y. SCSI support Cette option permet dactiver la gestion des priphriques SCSI dans votre noyau. Il va de soi quil faut lactiver, que lon dispose dun graveur SCSI ou IDE. Cette fonctionnalit peut tre active sous forme de module ou non. La rponse recommande est Y. SCSI CD-ROM support Cette option permet dactiver la gestion des lecteurs de CD SCSI. Il faut lactiver, que lon dispose dun graveur SCSI ou IDE. Il est impratif dutiliser les modules si vous avez activ la gestion des lecteurs IDE. Vous pouvez intgrer cette fonctionnalit au noyau sans risque sinon. Cette dernire solution est la mthode recommande, aussi est-il conseill de rpondre Y cette question. Enable vendor-specific extensions (for SCSI CDROM) Cette option permet dautoriser lemploi dextensions au protocole SCSI dnies par les fabricants de matriels. Certains graveurs utilisent de telles extensions, cest en particulier le cas des graveurs de CD HP. Toutefois, si vous ne disposez pas dun tel graveur, il est peu probable que vous ayez activer cette fonctionnalit. La rponse recommande est donc N. SCSI generic support Cette option permet dutiliser le priphrique SCSI avec des commandes non standards, ce qui requiert lemploi de programmes capables de communiquer directement avec les priphriques SCSI. Cest le cas pour les graveurs, qui seront pilots directement par les logiciels de gravage.

193

Chapitre 8. Conguration du matriel et des priphriques Il faut donc activer cette fonctionnalit, que lon dispose dun graveur SCSI ou IDE. La rponse recommande est Y. Probe all LUNs on each SCSI device Cette option permet, lorsquon dispose de priphriques SCSI capables de grer plusieurs numros dunit logiques, de leur demander tous ces numros. Ce type de priphrique est assez rare, et en gnral chaque priphrique nutilise quun et un seul numro dunit logique. Il ne faut donc pas, en gnral, activer cette fonctionnalit. La rponse recommande pour cette question est donc N.

Enn, il faut choisir le pilote bas niveau permettant de grer son graveur de CD. Pour les graveurs IDE ATAPI, la couche dmulation sufra et il est inutile de slectionner un autre pilote. En revanche, pour les graveurs SCSI, il faut choisir le pilote appropri. Une fois cette conguration effectue, il ne reste plus qu compiler le noyau et les modules et les installer. La manire de procder a t dcrite dans la section traitant de la compilation du noyau.

8.2.3.3. Conguration des modules du noyau


Vous aurez sans doute modier le chier de conguration /etc/modules.conf si vous avez activ certaines fonctionnalits SCSI sous la forme de modules, an de charger les modules ncessaires lorsquune commande sera effectue sur lun des chiers spciaux de priphriques SCSI. Si toutes les fonctionnalits SCSI sont intgres au noyau, cette tape est bien entendue facultative. Les chiers spciaux utiles pour les priphriques blocs SCSI sont les chiers scdx et sgx, o x est le numro du priphrique. Les chiers spciaux du premier groupe sont de type bloc, et permettent daccder aux lecteurs de CD SCSI. Les chiers du deuxime groupe en revanche sont de type caractre, et permettent daccder aux priphriques SCSI de manire gnrique. Les codes majeurs pour ces deux groupes de chiers spciaux sont respectivement 11 et 21, il faut donc ajouter les entres du chier modules.conf pour les modules nomms block-major-11 et char-major-21. Normalement, ces entres sont dj prsentes dans le chier fourni par votre distribution. Cependant, vous aurez ajouter les lignes suivantes si vous utilisez un graveur de CD IDE ATAPI :
post-install sr_mod modprobe -k ide-scsi

aprs la ligne indiquant le module charger pour les priphriques blocs de code majeur 11, et :
post-install sg modprobe -k ide-scsi

pour les priphriques SCSI gnriques, de code majeur 21. Ces deux lignes permettent de demander au noyau de charger galement le module ide-scsi lorsque lun des modules SCSI est charg. Le module ide-scsi est le module qui se charge deffectuer lmulation SCSI pour les priphriques IDE ATAPI. Il va de soi que lorsque vous aurez utilis un des chiers de priphrique SCSI, le module ide-scsi sera charg. Vous ne pourrez donc plus utiliser le module ide-cd, qui permet daccder aux lecteurs IDE par leur interface ATAPI. De mme, si vous montez votre lecteur de CD par lintermdiaire du chier spcial de priphrique IDE correspondant, le module ide-cd sera charg. Vous ne pourrez donc plus utiliser le module dmulation SCSI. La solution est donc, dans ce cas, de dcharger les modules inutiliss laide de la commande rmmod. Il est vident que comme vous navez pas besoin dutiliser linterface IDE de vos lecteurs de CD dans la plupart des cas, le plus simple est simplement de toujours utiliser lmulation SCSI et ainsi dviter tout conit. Dans ce cas, vous pourrez rpondre

194

Chapitre 8. Conguration du matriel et des priphriques par N la question Include IDE/ATA-2 CDROM support de la conguration du noyau, surtout si vous ne matrisez pas Linux ou si navez pas bien assimil le fonctionnement des modules.

8.2.3.4. Installation des logiciels de gravage


Lorsque le noyau aura t correctement congur et install, il ne vous restera plus qu installer les logiciels de gravage. Les logiciels indispensables sont les suivants :

cdrecord, qui permet de piloter le graveur de CD et deffectuer les tches ncessaires pour le gravage ; mkisofs, qui permet de crer des images disques ISO 9660, ventuellement avec les extensions Joliet (CD Windows 95), Rock Ridge (CD Unix) ou HFS (CD Macintosh) ; cdda2wav, qui permet dextraire les donnes numriques des CD audio.

Vous pourrez vrier que votre conguration fonctionne correctement avec la commande suivante :
cdrecord -scanbus

Cette commande recherche tous les priphriques SCSI du systme. Vous devrez normalement y trouver, en plus de vos autres priphriques SCSI, votre graveur de CD.

8.2.3.5. Utilisation des logiciels de gravage


Nous allons prsent voir les commandes permettant de faire les principales oprations ayant trait au gravage des CDs. Bien que ce document soit consacr linstallation de Linux et non son utilisation, elles vous permettront de tester si tout fonctionne correctement. La copie directe dun CD peut se faire avec la commande suivante :
cdrecord -dummy -v dev=bus,ID,lun speed=n -isosize /dev/scdx

o bus reprsente le bus SCSI sur lequel le graveur est branch, ID le numro de priphrique du graveur sur ce bus SCSI et lun son numro dunit logique ( Logical Unit Number . Le numro du bus SCSI et le numro de priphrique peuvent tre obtenus avec la commande cdrecord -scanbus prsente ci-dessus. Le numro dunit logique est, dans la majorit des cas, 0. Le nombre n doit ici valoir le facteur multiplicateur de la vitesse de gravage. Vous pouvez essayer avec des valeurs faibles pour commencer, an dtre sr que tout se passe bien. Le chier de priphrique /dev/scdx indiqu dans la ligne de commande de cdrecord doit bien entendu tre le chier de priphrique SCSI du lecteur de CD utilis pour lire le CD-ROM. Loption -isosize permet de demander cdrecord de lire la taille de la piste graver dans le systme de chiers ISO9660 du CD source. Enn, loption -dummy permet de faire toutes les oprations en conservant le laser du graveur teint, ce qui revient faire un test. Si vous voulez rellement graver votre CD, il suft de supprimer cette option. Il va de soi que si vous ne disposez pas dun lecteur de CD en plus de votre graveur, vous ne pouvez pas utiliser la commande prcdente. Dans ce cas, vous devrez faire une image disque en extrayant toutes les donnes du CD source. Cela peut tre ralis avec la commande suivante :
dd if=/dev/scdx of=image

195

Chapitre 8. Conguration du matriel et des priphriques o /dev/scdx est le chier spcial de priphrique SCSI du lecteur utilis pour faire limage (donc, si vous ne disposez que dun graveur, cest le chier spcial de priphrique SCSI de votre graveur), et image est le chier image qui doit tre cr. Le gravage dune image disque peut tre ralis avec la commande suivante :
cdrecord -dummy -v dev=bus,ID,lun speed=n -data image

o les options sont les mmes que dans les commandes prcdentes. Si vous dsirez crer une image disque partir des chiers de votre disque dur, vous pouvez utiliser mkisofs. Ce programme permet de crer une image disque ISO9660, avec les extensions Rock Ridge pour activer les fonctionnalits des systmes de chiers Unix (noms de chiers plus longs, liens symboliques, droits daccs...), et ventuellement les extensions Joliet utilises par les systmes Windows 95, Windows NT, Windows 2000 et XP (noms de chiers longs Microsoft). Le prix payer pour cette amlioration est la perte de quelques centaines de kilo octets, ce qui est drisoire tant donn le gain en portabilit. La ligne de commande utiliser pour crer une image disque est la suivante :
mkisofs [-J][-r | -R][-hfs | -apple] [-C dbut,fin [-M disque]] \ [-V "nom"] -o image rpertoires

Les options -r ou -R, -J et -hfs ou -apple permettent respectivement dutiliser les extensions Rock Ridge, Joliet ou HFS (pour les disques devant tre lus sur les Macintosh). Il est possible de faire des images disque hybrides, qui pourront tre lues sur plusieurs systmes dexploitation diffrents. La seule contrepartie est la perte de quelques dizaines de kilo-octets, ce qui est drisoire. La distinction entre loption -r et loption -R est que -r modie les attributs des chiers Unix an que le CD puisse tre utilis sur un autre ordinateur que celui sur lequel le CD a t cr. En particulier, le propritaire et le groupe des chiers voient leurs valeurs xes 0. Loption -V permet de xer le nom du volume dans limage. Il est possible de placer ce nom entre guillemets. Cette fonctionnalit est intressante si ce nom comprend des espaces. Il est possible de crer des CD multisessions condition de spcier lemplacement de cette session lors de la cration de limage disque. Cela se fait avec loption -C de mkisofs. Cette option prend en paramtre le numro du secteur de dbut et le numro du secteur de n de la session la suite de laquelle la nouvelle session doit tre crite, spars par des virgules. Si lon veut galement importer la session prcdente (cest--dire permettre laccs aux donnes des sessions prcdentes comme si elles taient galement prsentes dans la session crire), il faut utiliser loption -M, laquelle il faut indiquer le chier spcial de priphrique du lecteur contenant le disque dont la session doit tre importe. La dtermination des secteurs de dbut et de n de la session prcdente peut tre difcile, mais cdrecord est capable dobtenir cette information avec la commande suivante :
cdrecord dev=bus,ID,lun -msinfo

Appel ainsi, cdrecord afche les secteurs de dbut et de n de la dernire session du disque du lecteur spci par son option dev, directement dans le format attendu par mkisofs. Loption -o de mkisofs permet de spcier le nom du chier image qui doit tre cr. Les paramtres suivant loption -o constituent la liste des rpertoires et des chiers qui doivent tre insrs dans le CD-ROM. Par dfaut, chaque rpertoire ou chier indiqu en paramtre est plac dans le rpertoire racine du CD-ROM, et larborescence des sous-rpertoires est respecte. Cependant, il est possible de placer un des rpertoires ou chiers indiqus en paramtre dans un autre rpertoire du CD-ROM, laide de la syntaxe suivante :

196

Chapitre 8. Conguration du matriel et des priphriques


destination=source

o destination est le rpertoire destination du CD-ROM, et source le rpertoire ou le chier source ajouter limage disque. De mme, il est possible dexclure certains sous-rpertoires de limage disque laide de loption -x :
-x rpertoire

Les sous-rpertoires du rpertoire indiqu seront galement supprims de limage disque. Vous pouvez tester votre image disque en la montant par lintermdiaire du priphrique loopback. Il faut pour cela que vous ayez activ la gestion de ce priphrique dans la conguration du noyau. La commande utiliser pour monter ce type de priphrique est lgrement plus complique que pour les systmes de chiers classiques :
mount -t iso9660 -o ro,loop=/dev/loop0 image /cdrom

o image est le nom de votre chier image tester. Cette commande monte le systme de chiers de cette image dans le rpertoire /cdrom. La commande umount peut tre utilise pour dmonter ce systme de chiers, et elle sutilise alors exactement comme pour les autres systmes de chiers. Lorsque votre image disque est satisfaisante, vous pouvez la graver avec la premire ligne de commande suivante :
cdrecord -v dev=bus,ID,lun speed=n -multi -data image

Vous noterez la prsence de loption -multi, qui permet de demander cdrecord de crer un disque multisession. Bien entendu, vous pouvez vous passer de cette option si votre disque nest pas multisession. La cration dune image disque ncessite davoir une place disque gale la taille de la session ajouter, ce qui peut tre contraignant. Sur les systmes sufsamment puissants, il est possible de crer limage disque et de la graver la vole en crant un tube entre mkisofs et cdrecord. Dans ce cas, il ne faut pas donner de nom limage disque dans la ligne de commande de mkisofs, et utiliser loption - dans la ligne de commande de cdrecord pour lui demander de prendre les donnes sur son entre standard. Malheureusement, cette technique nest pas utilisable facilement pour les disques multisessions, parce que la lecture des informations de la session prcdente peut se faire en mme temps que le dbut du gravage. Pour rsoudre ce problme, il faut utiliser loption -waiti de cdrecord, qui lui demande dattendre larrive des premires donnes dans le tube avant douvrir le chier spcial de priphrique du graveur. La ligne de commande complte devient alors assez complexe, comme vous pouvez en juger :
mkisofs -r -M priphrique -C cdrecord dev=bus,ID,lun -msinfo \ fichiers | cdrecord -v dev=bus,ID,lun speed=vitesse -multi -waiti -

Les commandes prsentes ci-dessus ne permettent pas de travailler avec des CD audio. Pour extraire les donnes audio dun CD, vous devrez utiliser le programme cdda2wav :
cdda2wav [-H] -B nom [-tdbut[+fin]] -O wav -D bus,ID,lun

Loption -H permet dviter la cration des chiers dinformation .inf sur les pistes extraites par cdda2wav. Loption -B permet dutiliser le nom nom complt dun numro pour les chiers son crs. Les pistes seront donc stockes dans des chiers portant les noms nom_01, nom_02, etc. Loption -t permet dindiquer la piste dbut et la piste fin an de slectionner les pistes dont les donnes

197

Chapitre 8. Conguration du matriel et des priphriques audio doivent tre extraites. Si la piste de n nest pas prcise, toutes les pistes depuis la piste de dbut jusqu la dernire piste du CD seront extraites. De mme, si la piste de dbut nest pas prcise, lextraction commencera partir de la premire piste. Loption -O permet dindiquer le type de chier de sortie, wav indique ici que les chiers crs seront au format WAV des chiers son de Windows. Il est galement possible dutiliser le type de chier raw, avec lequel les chiers seront prts tre gravs tels quels. Enn, loption -D permet de spcier le priphrique SCSI utiliser pour lire les donnes audio. Ce priphrique est slectionn par le numro du bus SCSI sur lequel il se trouve, son numro de priphrique dans ce bus et son numro dunit logique. Le gravage des pistes audio peut tre ralis avec la commande suivante :
cdrecord -dummy -v dev=bus,ID,lun speed=n -nofix -audio piste2.wav ... piste1.wav \

Loption -nofix permet ici dviter de fermer la session. Elle doit tre utilise si lon dsire rajouter des pistes audio sur le CD-ROM ultrieurement. Si, en revanche, elle est omise, cdrecord fermera automatiquement la session aprs lcriture de la dernire piste, et plus aucune donne ne pourra tre ajoute. La commande suivante vous permettra de xer le disque a posteriori :
cdrecord -dummy -v dev=bus,ID,lun speed=n -fix

Enn, si vous disposez dun graveur de CD rinscriptible, vous pourrez utiliser la commande suivante pour effacer un CDRW :
cdrecord -dummy -v dev=bus,ID,lun -blank=fast

o bus,ID,lun reprsente toujours le priphrique SCSI utiliser en tant que graveur. Il est peu probable que vous ayiez utiliser ces commandes directement, car il existe de nombreux programmes graphique capable de les piloter de manire conviviale (xcdroast, gcombust, cdbakeoven, kreatecd, koncd, etc.). Il est vivement recommand den installer un et de lutiliser. Ils sont relativement simples demploi et leur utilisation ne devrait pas poser de problme particulier.

8.3. Conguration des cartes lles


Il existe un grand nombre de cartes lles sur le march, dont les plus courantes sont sans doute les cartes graphique, les cartes son et les cartes rseau. Toutes ces cartes permettent dajouter des fonctionnalits de manire modulaire une machine, en les enchant dans les emplacements prvus cet effet sur la carte mre. Les cartes les plus vielles que lon peut encore rencontrer sont les cartes ISA. La conguration de ces cartes a toujours t extrmement difcile, en raison des nombreux conits matriels quelles provoquaient entre elles et avec les ressources de la carte mre. Le standard Plug and Play a t introduit pour limiter ces problmes par la suite, mais ce nest quavec larrive des cartes PCI que lon a enn pu commencer brancher nimporte quoi nimporte comment dans un ordinateur (cela dit, ce nest pas encore la panace parce que lon est toujours oblig dteindre lordinateur...). Enn, les cartes graphiques ne se connectent plus de nos jours ni sur les ports PCI, ni sur les ports ISA, pour des raisons de performances et de dbit de donnes. Elles utilisent un port spcial, le port AGP. Cela

198

Chapitre 8. Conguration du matriel et des priphriques ne pose cependant pas de problme de conguration spcial (du moins si lon se contente dune seule carte graphique). Ce chapitre traite de la manire de congurer les cartes ISA et PCI en gnral, et donne des informations plus dtailles pour chacun des types courants de cartes lles.

8.3.1. Gnralits sur les cartes ISA, Plug And Play et PCI
Larchitecture initiale des PC a trs mal vieilli et souffre actuellement de dfauts majeurs qui nuisent leur dveloppement. Sans parler des goulots dtranglement sur les diffrents bus systmes qui ne suivent plus les vitesses des processeurs actuels, la plupart des priphriques sont obligs de se restreindre des protocoles de communication obsoltes pour conserver une compatibilit ascendante. Lune des limitations majeurs de cette architecture est le nombre incroyablement restreint de lignes dinterruption permettant un priphrique de signaler au processeur quil a besoin de lintervention de son gestionnaire pour poursuivre son travail, et la quasi absence des possibilits daccs directs la mmoire, qui impose lutilisation du processeur pour raliser de simples transferts de donnes entre les priphriques et la mmoire. Ces ressources limites, en plus de pnaliser les performances, posent des problmes vidents dextensibilit. En effet, qui dit ressource limit dit quil est impossible de connecter plus de priphriques intelligents que ce que larchitecture matrielle autorise. Linstallation de plusieurs cartes ISA grant chacune une interruption ou un canal DMA tait rellement un casse-tte il y a encore peu de temps. Cest pour rsoudre ces problmes de conguration du matriel que le standard Plug and Play a t dvelopp. Ce standard tablit un protocole de communication matriel permettant au BIOS de congurer automatiquement les priphriques ISA en vitant les conits sur les ressources partages (le plus souvent, les lignes dinterruption). Ce protocole a soulag bien des gens, mais suppose un support spcique de la part du systme dexploitation, puisque les paramtres matriels de chaque carte Plug and Play ne sont pas xs dun dmarrage lautre de la machine. Il faut donc que le systme soit ou capable de rcuprer ces paramtres, ou de refaire la conguration du matriel. Cette deuxime solution est souvent impose par le fait que bon nombre de BIOS sont bogus et effectuent une mauvaise conguration des cartes Plug and Play. Le Plug and Play a t une amlioration sensible, mais na pas rsolu les problmes concernant les ressources limites des PC. Heureusement, depuis lavnement du bus PCI, ces limitations se sont estompes. En effet, le bus PCI permet non seulement aux priphriques de sautocongurer et de se dclarer dans le systme PCI, mais galement de partager une mme ligne dinterruption et de prendre le contrle du bus mmoire. Ainsi, il ny a virtuellement plus aucune difcult pour installer une carte PCI dans un ordinateur (si vous avez le choix, prenez systmatiquement des priphriques PCI). Ne croyez pas pour autant que le bus PCI soit idal, cest loin dtre le cas. En effet, il ne permet pas lajout et la suppression de cartes chaud (cest--dire lorsque le systme est allum), et fonctionne dsormais une vitesse bien trop faible compte tenu de la vitesse des processeurs, cartes graphiques et circuits mmoire. Il est donc appel disparatre sous peu lui-aussi. Les priphriques PCI sont les plus courants actuellement. Le sous-systme PCI de Linux permet de les utiliser directement, sans conguration particulire. Les priphriques ISA, en revanche, peuvent tre plus difciles congurer. Sils ne sont pas Plug and Play, il ny a pas dautre choix que de spcier leurs paramtres matriels directement, soit lors de la compilation du noyau, soit laide doptions de boot lorsque le systme dmarre, soit laide doptions dans le chier /etc/modules.conf si leur gestionnaire est compil sous forme de module. La premire solution est la plus technique, puisquelle ncessite de recongurer et de recompiler le noyau, les deux autres relvent de la conguration simple.

199

Chapitre 8. Conguration du matriel et des priphriques Les cartes ISA Plug and Play constituent un cas part car, comme il la t dit ci-dessus, la plupart des BIOS Plug and Play sont bogus et les initialisent mal. Il est donc ncessaire que le systme les initialise lui-mme, et dtermine par la mme occasion leur conguration matrielle. En pratique, il existe deux possibilits pour effectuer ces deux oprations. La premire possibilit est de laisser le noyau faire tout le travail de conguration des cartes et dallocation des ressources. La deuxime possibilit est deffectuer la conguration des cartes ISA Plug and Play au niveau applicatif dans les scripts de dmarrage du systme. Cette solution est relativement technique, et ne doit tre utilise que lorsquon dsire contrler nement les ressources alloues par les priphriques dans le systme. Si lon dsire utiliser les fonctionnalits Plug and Play du noyau, il ny a strictement rien faire. Linux se charge simplement dinitialiser automatiquement les cartes ISA Plug and Play lors du dmarrage du systme, de leur attribuer les paramtres matriels adquats, et de communiquer ces paramtres aux gestionnaires de priphriques. Il prendra galement en charge la gestion des conits avec les autres priphriques, quils soient ISA non Plug and Play ou PCI. Par consquent, vous naurez aucune conguration spcique effectuer. Mais Linux fournit galement la possibilit de contrler soi-mme les ressources alloues chaque priphrique, pour ceux qui veulent avoir la matrise totale de leur matriel ou ceux qui ont une conguration tellement spcique quelle ncessite un paramtrage manuel. Dans ce cas, linitialisation des cartes ISA Plug and Play ne se fera pas lors du dmarrage du noyau, mais plutt ultrieurement. En gnral, on effectue cette tche dans les scripts dinitialisation du systme, mais ce nest pas une obligation. Quoi quil en soit, comme lattribution des ressources aux cartes est diffre, les gestionnaires de priphriques ne peuvent pas tre inclus dans le noyau. Il est donc ncessaire dutiliser les modules du noyau pour ces gestionnaires. Les paramtres matriels pourront alors tre communiqus simplement ces gestionnaires lors du chargement des modules, laide doptions dans le chier de conguration /etc/modules.conf. La conguration manuelle des cartes ISA Plug and Play se fait classiquement laide des outils isapnp . Parmi ces outils se trouve le programme isapnp, que lon utilise pour initialiser les cartes ISA Plug and Play. Cet utilitaire utilise les informations qui se trouvent crite dans le chier de conguration /etc/isapnp.conf pour dterminer les plages dentre/sortie, les canaux DMA et les lignes dinterruption utiliser pour chaque carte. La rdaction manuelle du chier isapnp.conf nest pas une tche aise. Heureusement, cela peut tre ralis automatiquement, laide dun autre utilitaire nomm pnpdump. Celui-ci afche la liste des diffrentes possibilits de conguration pour chaque priphrique ISA Plug and Play. Cette liste est afche exactement sous une forme exploitable par isapnp, ce qui fait quil est trs simple de crer un chier de conguration correct en faisant une redirection de sa sortie standard dans un chier :
pnpdump > /etc/isapnp.conf

Le chier de conguration ainsi cr contient les diffrentes congurations possibles. Cependant, elles sont toutes commentes, et aucun priphrique ISA ne sera congur sans intervention supplmentaire. Il va donc falloir diter ce chier et retirer les commentaires devant les options de conguration qui vous intressent. Les lignes de commentaires commencent toutes par un caractre dise (#). Il suft donc deffacer ce caractre pour les dcommenter. Vous devez choisir les options dcommenter de telle manire quaucun conit dadresse, dinterruption ou de canal DMA nexiste dans votre systme. Pour chaque priphrique, plusieurs possibilits sont offertes, mais vous ne devez retirer les commentaires que devant les lignes dune seule de ces possibilits. Les zones dcommenter sont clairement identies dans le chier isapnp.conf gnr par pnpdump, il vous suft donc deffectuer le choix de la conguration utiliser. Enn, il ne faut pas oublier de retirer le commentaire devant la ligne suivante :

200

Chapitre 8. Conguration du matriel et des priphriques


(ACT Y)

la n des diffrentes options de conguration pour chaque carte correctement congure, faute de quoi elle ne sera pas active lors de lappel isapnp. En gnral, il est souhaitable dappeler la commande isapnp chaque dmarrage du systme, dans un des scripts de dmarrage. Vous devrez donc inclure une ligne telle que celle-ci :
/sbin/isapnp /etc/isapnp.conf

dans le chier de dmarrage principal de votre systme. Ce chier peut se trouver dans le rpertoire /etc/rc.d/ (ou dans /sbin/init.d/ selon la distribution que vous utilisez). La plupart des distributions permettent de paramtrer lappel cette commande laide dune option de conguration modiable laide de leur programme de conguration. Consultez la documentation de votre distribution pour plus de dtails ce sujet. Une fois que vous aurez dtermin la conguration correcte pour vos priphriques dans le chier /etc/isapnp.conf, vous pourrez charger les modules du noyau grant ces priphriques. Cela peut ncessiter la modication du chier /etc/modules.conf. An de limiter les risques derreur, vous devriez procder comme suit :

dterminer le chier spcial de priphrique utilis par les applications pour accder votre priphrique ; dterminer le nom du module que le noyau tentera de charger lorsquun programme tentera dutiliser ce chier spcial de priphrique ; rechercher la ligne dnissant lalias pour ce nom de module, an de savoir quel est le module qui sera effectivement charg par modprobe. Vous pouvez galement trouver ce nom dans la documentation de la conguration du noyau pour le gestionnaire du priphriques que vous congurez, ou en regardant directement dans le rpertoire dinstallation des modules /lib/modules/ ; ajouter ventuellement la ligne options module paramtres permettant de spcier les paramtres de chargement paramtres pour le module module ; ajouter ventuellement les lignes pre-install , post-install , pre-remove et post-remove permettant deffectuer des actions complmentaires avant et aprs le chargement du module, ainsi quavant et aprs son dchargement.

Comme il la t indiqu dans la Section 8.1.2, la dtermination des noms de modules utiliss par le noyau pour les requtes de chargement automatique nest pas facile. Si vous utilisez le systme de chiers virtuel /dev/, ce nom est exactement le chemin complet du chier spcial de priphrique. En revanche, si vous utilisez les chiers spciaux de priphriques classiques, vous aurez sans doute vous servir du type, du code majeur et du code mineur de ce chier spcial de priphrique. Vous pourrez obtenir ces informations laide de la commande ls -l chier, o fichier est le nom du chier spcial de priphrique. Le type de ce chier est indiqu dans le premier caractre des droits du chiers. Le caractre c indique que le priphrique est un priphrique de type caractre, et le caractre b indique quil sagit dun priphrique de type bloc. Les numros de codes majeur et mineur quant eux sont indiqus juste aprs les informations concernant le propritaire et le groupe du chier, gnralement gaux root ; Dans tous les cas, il est fortement recommand de lire la documentation du module grant votre priphrique Plug and Play. Cette documentation est en gnral situe dans le rpertoire /usr/src/linux/Documentation/.

201

Chapitre 8. Conguration du matriel et des priphriques Pour tester si les modications que vous avez effectues sont correctes, vous pouvez essayer de charger le module avec la commande suivante :
modprobe module

o module est le nom du module charger. Vous pouvez galement vrier que ce module se charge bien lorsquune requte sur le chier spcial de priphrique correspondant est effectue, avec par exemple la commande suivante :
echo Coucou > /dev/priphrique

o priphrique est le chier spcial de priphrique tester. Vous pouvez voir si le module sest correctement charg en demandant la liste des modules chargs laide de la commande lsmod. Cette commande vous indique galement ltat de chaque module, ainsi que le nombre de fois quil est utilis et par qui. Si un module est marqu uninitialized , vous avez de fortes chances de devoir redmarrer lordinateur et de revoir votre conguration, car un module qui se trouve dans cet tat est inutilisable et peut parfois mme refuser de se dcharger.

8.3.2. Conguration des cartes son


La plupart des cartes son vendues actuellement sont des cartes PCI, qui se congurent relativement aisment. Cependant, il existe encore un bon nombre de cartes son ISA, dont la conguration peut tre plus technique, surtout si elles ne sont pas Plug and Play. De plus, les fonctionnalits fournies par les gestionnaires de son de Linux varient dans de larges proportions, selon le matriel utilis. En particulier, toutes les cartes son ne sont pas capables de grer la restitution des chiers MIDI, et celles qui le grent ncessitent parfois une conguration particulire. Cependant, il est possible dutiliser un convertisseur logiciel de chiers MIDI en chiers son classiques an de jouer ce type de chier mme avec une carte son classique. La premire tape lors de la conguration de votre carte son sera la slection du gestionnaire de priphriques utiliser dans le programme de conguration du noyau. En ce qui concerne les cartes son, les options de conguration se trouvent dans le menu Sound . Ce menu permet de choisir les pilotes utiliser en fonction du matriel install. Ils sont classs en deux catgories : les pilotes classiques (premire partie des options du menu) et les pilotes OSS (options du sous-menu OSS sound modules ). OSS ( Open Sound System ) est une spcication dinterface de programmation permettant laccs aux cartes son. Cette interface est en passe de devenir le standard dans le monde Unix. Cest un produit commercial, mais linterface en soi est libre de droits et une implmentation libre en est fournie dans le noyau de Linux. Vous devez ici choisir le gestionnaire de priphriques qui convient le mieux votre matriel. Si vous avez le choix entre les pilotes classiques et les pilotes OSS, choisissez les pilotes OSS car ils sont plus courants et vous naurez aucun problme utiliser votre carte son avec la plupart des logiciels. Lerreur la plus classique que lon peut faire ici est de supposer que lon possde une carte compatible Sound Blaster alors que ce nen est pas une. Je tiens prciser que quasiment aucune carte dite compatible sous Windows ne lest sous Linux. La compatibilit sous Linux, cest le fait davoir quasiment la mme lectronique ou du moins les mmes interfaces au niveau matriel. Sous Windows, la compatibilit nexiste quau niveau des interfaces fournies par le pilote de la carte son. Par consquent, il vous faut savoir exactement de quel nature est votre carte son, et non ce que vous avez retenu des arguments commerciaux du fabricant. Notez en particulier que certaines cartes Sound Blaster ne sont pas compatibles Sound Blaster (Creative Labs est renomm en ce qui concerne les incompatibilits entre les diffrents modles de cartes son). Cest notamment le cas pour les cartes sons SB64 PCI et SB128 PCI, qui sont en ralit des cartes son ESS1370 ou ESS1371, et dont llectronique est

202

Chapitre 8. Conguration du matriel et des priphriques fabrique par la socit Ensoniq (cette socit a t rachete par Creative Labs, qui vend ces cartes en sappuyant sur son image de marque et qui sme ainsi la confusion sur le march). En conclusion, si vous ne voulez pas essayer plusieurs pilotes et recompiler le noyau jusqu ce que vous trouviez le bon, renseignez-vous bien sur la nature de votre carte son (si possible avant de lacheter, au moins an de savoir exactement ce que vous aurez). Vous pouvez galement taper la commande lspci an de voir les priphriques rellement prsents sur le bus PCI. La commande systme dmesg peut galement vous tre utile. Elle permet de rafcher la liste des messages gnrs par le noyau lors de son amorage. Lorsque vous aurez choisi le gestionnaire de priphriques adquat, vous aurez le choix entre le compiler lintrieur du noyau (en choisissant loption Y) ou le compiler sous forme de module (en choisissant loption M). En pratique, il est plus simple de compiler les gestionnaires de priphriques lintrieur du noyau pour les cartes PCI et les cartes ISA Plug and Play. En effet, Linux attribuera automatiquement les lignes dinterruptions, les ports dentre/sortie et les canaux daccs direct la mmoire pour ce type de matriel. Cette conguration nest donc pas faire, et votre carte son fonctionnera immdiatement. Cest gnralement galement le bon choix pour les vielles cartes son ISA qui ne sont pas Plug and Play. En effet, pour ces cartes sons, la conguration logicielle est trs simple, puisquon ne peut pas les congurer du tout. Bien entendu, il faut que vous ayez rsolu manuellement les conits possibles de matriel de votre ordinateur, mais cela ne concerne pas Linux. Pour ces cartes, il faut bien entendu indiquer au noyau les paramtres matriels (IRQ, DMA et ports dentre/sortie) lors de la conguration. Il se peut toutefois que vous ne puissiez pas spcier ces paramtres matriels dans les menus de conguration de Linux. Bien quen thorie il soit possible de modier les chiers sources de Linux directement pour indiquer ces paramtres, ce nest pas la porte du commun des mortels. Par consquent, on utilisera les modules du noyau, et les options matrielles seront indiques dans le chier de conguration /etc/modules.conf. Notez que cest galement de cette manire que vous devrez procder si vous dsirez congurer vous-mme lallocation des ressources pour les cartes son ISA Plug and Play, ou, autrement dit, si vous prfrez utiliser loutil isapnp au lieu des fonctionnalits Plug and Play du noyau. Ces oprations vous permettront de faire fonctionner votre carte son pour toutes les oprations de base, savoir la lecture et lenregistrement de chiers son, le rglage du volume sonore et ventuellement la lecture des CD audio par lintermdiaire de votre carte son (si, bien entendu, vous avez reli la sortie audio de votre lecteur de CD lentre auxiliaire de votre carte son). Vous ne pourrez cependant pas lire les chiers MIDI sans raliser les oprations dcrites ci-dessous. Les chiers MIDI sont des chiers ne contenant que les partitions des morceaux enregistrs. Ils ne contiennent pas les donnes audio numriques comme cest le cas pour les chiers son classiques ou les pistes de CD audio. Cela explique leur taille rduite, mais pose un problme pour leur restitution. En effet, la lecture dun chier MIDI suppose que votre carte son dispose dun jeu de sons numriss dans sa mmoire an de pouvoir reconstituer le signal sonore partir des informations du chier MIDI. Ces sons sont couramment appels des patches , et ils peuvent tre enregistrs soit en dur dans la mmoire de la carte son, soit chargs lors de son initialisation. Il va de soi que certaines cartes son ne disposent pas des fonctionnalits ncessaires la lecture des chiers MIDI. Dans ce cas, il faut utiliser un programme externe capable de synthtiser le son partir de patches enregistrs sur le disque dur et denvoyer les donnes audio ainsi cres la carte son pour la lecture. Pour les cartes son qui ne disposent pas des patches en mmoire morte, il est ncessaire dutiliser un programme an de les charger dans la mmoire de la carte. Il va de soi que ce programme est spcique la carte son et doit tre install. Par exemple, pour les cartes Sound Blaster AWE, ce programme se nomme sfxload. Ce programme peut tre trouv soit sur le site de Creative Labs (http://www.opensource.creative.com/), soit http://members.tripod.de/iwai/awedrv.html. Vous trou-

203

Chapitre 8. Conguration du matriel et des priphriques verez galement les chiers de patches utilisables avec les cartes son AWE sur ce site. Vous pouvez utiliser le chier de dnition des patches de Creative, que vous trouverez normalement soit sur une installation de Windows avec une carte son AWE, soit sur vos CD dinstallation, soit sur Internet. Le chier fourni par Creative se nomme synthgm.sbk. Pour charger les patches dans la mmoire de la carte, il suft dutiliser la commande suivante :
sfxload /usr/lib/synthgm.sbk

(en supposant que le chier de patches soit plac dans le rpertoire /usr/lib/). Vous pourrez placer cette commande dans les scripts de dmarrage de votre systme ou dans une option de chargement du module awe_wave qui gre la lecture des chiers midi. Vous trouverez ci-dessous un exemple doptions du chier /etc/conf.modules permettant le chargement correct des modules dune carte son Sound Blaster AWE :
# Chargement des modules de son : alias char-major-14 sb options sb io=0x220 irq=5 dma=1 dma16=5 mpu_io=0x330 options adlib_card io=0x388 # Chargement automatique du module de lecture des fichiers MIDI : post-install sb /sbin/modprobe -k midi alias midi awe_wave # Chargement des patches en mmoire : post-install awe_wave /usr/local/bin/sfxload /usr/lib/synthgm.sbk

Pour les cartes son ne disposant pas de la possibilit de lire les chiers MIDI, il ne reste que la solution de lmulation logicielle. Vous pourrez dans ce cas recourir au programme nomm Timidity . Timidity est un programme de lecture de chiers MIDI trs complet, paramtrable et capable dutiliser des banques de son externes varies. De plus, le moteur de Timidity est utilis par de nombreux autres programmes, en particulier par le lecteur KMidi de KDE. Lauteur originel de Timidity ne le maintient plus. Cependant, dautres programmeurs ont pris le relais et lont amlior pour en faire la version Timidity++. Cette dernire version peut tre trouve sur Internet sur le site de Timidity (http://www.goice.co.jp/member/mo/timidity/). Larchive que vous rcuprerez ne contient pas forcment le programme : il peut ne sagir que des chiers sources permettant de le gnrer. Les notions de chiers sources et de compilation de programmes excutables seront expliques en dtail dans le chapitre suivant. En attendant, si vous rcuprez les sources, vous pourrez suivre les indications donnes ci-dessous pour compiler et installer Timidity. Timidity peut utiliser diffrentes interfaces utilisateur, accessibles via diffrentes bibliothques. Il est recommand dutiliser linterface Tcl/Tk, car cette interface fonctionne aussi bien sous XWindow quen mode texte. Pour cela, il suft de congurer les sources avec la ligne de commande suivante :
./configure --enable-dynamic --enable-tcltk=dynamic

Une fois cela fait, vous pourrez gnrer lexcutable avec la commande suivante :
make

et linstaller avec la commande :

204

Chapitre 8. Conguration du matriel et des priphriques


make install

Cela installera Timidity dans le rpertoire /usr/local/bin/. La deuxime tape est bien entendu dinstaller les chiers de patches. Timidity utilise des patches pour les cartes son Gravis Ultrasound. Vous pourrez trouver des archives contenant de tels patches sur Internet trs facilement. En particulier, la collection de patches EAWPATS (http://www.stardate.bc.ca/eawpatches/html/default.htm) ralise par Eric A. Welsh est trs complte, quoiquun peu grosse pour un tlchargement. Cette collection a de plus lavantage dtre prcongure pour lemploi avec Timidity. Lorsque vous aurez install les chiers de patches, vous devrez indiquer Timidity leur emplacement dans le systme de chiers. Cette information doit tre stocke dans le chier de conguration timidity.cfg du rpertoire /usr/local/share/timidity/. Vous pourrez vous inspirer du chier fourni avec la collection de patches EAWPATS. Cependant, vous aurez modier les chemins indiqus dans ce chier, car il a t crit pour la version Windows de Timidity. Le premier rpertoire indiquer est celui des bibliothques. Il faut ici simplement remplacer la ligne dir c:\timidity par la ligne dir /usr/local/lib/timidity . Notez que cette ligne est facultative et peut tre commente si vous navez pas dplac ce rpertoire. Le deuxime rpertoire est plus important, puisque cest le rpertoire dinstallation des patches. Il sagit cette fois de remplacer la ligne dir c:\eawpats par la ligne dir rpertoire , o rpertoire est le rpertoire o vous avez extrait les chiers patches. Une fois que vous aurez termin ces modications, vous pourrez lire un chier MIDI simplement en utilisant la ligne de commande suivante :
timidity fichier

o fichier est le nom du chier MIDI lire. Si vous dsirez utiliser linterface graphique de Timidity, vous navez qu ajouter loption -ik la ligne de commande prcdente. Linstallation de KMidi ne pose pas de problme particulier, puisquil est fourni avec KDE et que KDE est normalement inclus dans toute bonne distribution. La seule opration que vous ayez faire est simplement de modier le chier de conguration de KMidi pour lui indiquer lemplacement des chiers de patches. Or comme KMidi est bas sur les sources de Timidity, il utilise le mme chier de conguration timidity.cfg que Timidity. Ce chier est normalement situ dans le rpertoire /base/kde/share/apps/kmidi/config/, o base reprsente le rpertoire de base dinstallation de KDE. Vous naurez donc qu rpter les oprations faites sur le chier de conguration de Timidity avec le chier de conguration de KMidi.

8.3.3. Installation dune carte graphique 3D


De nos jours, toutes les cartes graphiques disposent dune acclration matrielle non seulement pour les oprations graphiques en 2D, mais galement pour le calcul de scnes en 3D. Ce dveloppement des cartes 3D a t principalement pouss pour les jeux, mais ces fonctionnalits sont galement trs utiles pour les applications de modlisation et de conception. La manire dont les oprations graphiques en 3D sont ralises dpend videmment du modle de carte graphique utilise, car il nexiste pas de standard au niveau matriel. Comme il est impensable que les applications qui dsirent utiliser les fonctionnalits 3D des ordinateurs modernes aient prendre en compte le type de carte utilise, des interface logicielles standards ont t dnies.

205

Chapitre 8. Conguration du matriel et des priphriques De toutes ces interfaces, Linux nen gre quune seule : OpenGL. Cette interface a t dnie par Silicon Graphics pour ses stations de travail haut-de-gamme et sest impose comme tant la norme en la matire pour ce qui est de la 3D. Cette interface a lavantage dtre ouverte et disponible sur la plupart des systmes, quils soient de type Unix ou non. La prise en charge de linterface OpenGL est ralise en deux endroits sous Linux. La partie principale rside dans le serveur X qui, comme nous lavons dj signal, nest rien dautre que le programme fournissant les services graphiques aux autres applications sous Unix. Cette partie est implmente par une extension de linterface de programmation XWindow, que lon nomme tout simplement GLX . Cependant, le serveur X ne peut pas tout faire lui tout seul car, pour des raisons de performances, il lui faut accder directement au matriel lors du rendu de scnes 3D. Il sappuie donc pour cela sur un module du noyau, dont le but est de contrler les accs au ressources matrielles et de garantir ainsi la stabilit globale du systme. La conguration des fonctionnalits 3D des cartes graphiques sous Linux ncessite donc dintervenir la fois dans le noyau et au niveau du serveur X. Pour ce qui est du noyau, il faut tout dabord sassurer que les fonctionnalits daccs direct au matriel sont bien supportes. Ces fonctionnalits sont couramment appeles DRI , ce qui est labrviation de langlais Direct Rendering Infrastructure . Pour activer les fonctionnalits DRI, vous devrez, dans la conguration du noyau, valider loption Direct Rendering Manager du menu Character devices , ainsi que le type de carte graphique utilise (3Dfx, 3dlabs, ATI Rage 128 ou ATI Radeon, chipset i810 ou Matrox G200/G400).
Note : Les fonctionnalits 3D des cartes graphiques bases sur les puces NVidia ne sont pas supportes directement par XFree86 et par le noyau. En revanche, NVidia fournit un pilote pour Linux pour ces cartes, qui, bien quil nutilise pas DRI, dispose galement dun module du noyau et dun module pour XFree86.

Quelle que soit votre carte graphique, vous aurez galement sans doute intrt activer le support du bus AGP dans le noyau, si bien sr votre carte graphique est une carte AGP. Pour cela, il suft dactiver loption /dev/agpgart (AGP support) dans le menu Character devices de la conguration du noyau, ainsi que le type de chipset utilis par votre carte mre. Une fois la conguration du noyau faite, vous pourrez le recompiler et linstaller. La manire de procder a t dcrite en dtail dans la Section 7.3. Vous devrez galement vous assurer que le chier spcial de priphrique /dev/agpgart est bien prsent dans le rpertoire /dev/. Son code majeur est 10, et son code mineur est 175. De mme, si vous avez compil les options prcdentes sous la forme de modules du noyau, assurez-vous quils sont bien rfrencs dans le chier modules.conf. La suite des oprations se passe alors au niveau de la conguration du serveur X de XFree86. Lactivation du support de lAGP et dOpenGL se fait simplement en rajoutant deux options dans le chier de conguration /etc/X11/XF86Config. Vous devez trouver la section Modules et lui ajouter les deux lignes suivantes :
Section "Module" . . . Load "dri" Load "glx" . . . EndSection

Vous trouverez de plus amples renseignements sur la manire de procder dans le Chapitre 10.

206

Chapitre 8. Conguration du matriel et des priphriques


Note : Pour le pilote fourni par NVidia pour XFree86, il nest pas ncessaire de demander le chargement du module DRI, car il ne lutilise pas. Il est suppos ici que le serveur X utilis correspond bien la carte graphique et dispose des fonctionnalits 3D. Si ce nest pas le cas, vous devrez sans doute rinstaller XFree86. Les programmes utilisant OpenGL utilisent souvent une bibliothque complmentaire nomme GLUT. Cette bibliothque est fournie avec la couche dmulation logicielle dOpenGL MESA. Bien que MESA soit distribue en standard avec XFree86, la bibliothque GLUT nest disponible que dans les programmes dexemples de MESA. Vous devrez donc rinstaller MESA compltement si votre distribution ne fournit pas la bibliothque GLUT avec XFree86.

8.3.4. Installation dune carte dacquisition vido


Linux fournit toutes les fonctionnalits ncessaires la manipulation des ux de donnes vido par lintermdiaire dune interface de programmation nomme video4linux (ce qui se lit Video for Linux ). Linux est capable de grer la plupart des cartes dacquisition TV du march et quelquesunes des cartes dacquisition vido. Comme dhabitude, seuls les constructeurs de matriel qui ont accept de jouer le jeu de fournir les informations ncessaires la programmation de gestionnaires de priphriques libres voient leur matriel support sous Linux. Par consquent, il est encore une fois ncessaire de bien se renseigner sur la nature du produit et la politique du fabricant lorsquon achte une carte dacquisition TV. En pratique, quasiment toutes les cartes dacquisition TV utilisent le circuit intgr Bt848 ou un de ses drivs, et Linux sait les grer sans problmes. Les cartes dacquisition et de montage vido utilisent dautres circuits plus puissants, dont les spcications sont gnralement non disponibles. Seule la conguration des cartes TV sera donc dcrite ci-dessous. Les applications, pour accder aux priphriques vido, utilisent lun des chiers spciaux de priphrique /dev/video*. Ces chiers sont des chiers de type caractre, dont le code majeur vaut 81. Le code mineur est utilis pour diffrencier les diffrents priphriques installs sur votre systme. En gnral, il existe un lien symbolique /dev/video sur lun de ces chiers spciaux, qui sera utilis pour accder au priphrique vido par dfaut. Normalement, tous ces chiers sont installs dofce dans le rpertoire /dev/ par les distributions, et vous naurez pas les crer vous-mme. Le support de la vido sous Linux passe bien entendu par la conguration du noyau. Cette fois, il nest pas certain du tout que le noyau fourni avec votre distribution supporte les cartes dacquisition TV, aussi aurez-vous peut-tre recompiler vous-mme votre noyau. La manire de procder a t dcrite en dtail dans la Section 7.3. Sachez toutefois que les options valider dans la conguration du noyau se trouvent dans le menu Multimedia devices . Vous devrez activer loption Video For Linux sous la forme de module, car vous aurez sans doute communiquer des paramtres aux modules vido an de leur spcier le type de carte utilis et le type de tuner. Le module qui sera cr portera le nom videodev, cest celui qui se chargera de rpondre aux requtes du client sur les chiers spciaux de priphrique /dev/video*. Lorsque vous aurez activ la fonctionnalit de vido pour Linux, vous aurez le choix des pilotes de cartes vido dans le sous-menu Video adapters .
Note : La conguration des cartes bases sur la puce Bt848 (option de menu BT848 Video For Linux ) nest accessible que si vous avez galement activ loption I2C bit-banging interfaces du menu I2C support . De mme, le module prenant en charge les puces du type Bt848 ne prend pas en charge la gestion du son. En revanche, vous pourrez trouver le gestionnaire du son de ces cartes avec les autres gestionnaires de cartes son, dans le menu Sound . Loption que vous devez activer est loption TV card (bt848) mixer support .

207

Chapitre 8. Conguration du matriel et des priphriques

Une fois le noyau recompil et les nouveaux modules installs, il faut modier le chier de conguration /etc/modules.conf. Bien que Linux soit parfaitement capable de dterminer les ressources requises par les cartes vido, il est rare que le matriel soit correctement identi par les gestionnaires de priphriques vido. En effet, ces gestionnaires se basent plus sur les composants courants permettant de faire lacquisition vido que sur les modles de cartes de chaque fabricant. La palme revient sans doute au gestionnaire pour les cartes bases sur les puces Bt848 et ses drives, puisquil est capable de faire fonctionner toutes les cartes vido de tous les fabricants qui utilisent cette puce. Par consquent, il faut indiquer le modle de la carte au gestionnaire, laide des options des modules vido dans le chier modules.conf. En fait, le gestionnaire pour les cartes bases sur la puce Bt848 est constitu de deux modules. Le premier, nomm bttv, gre la puce Bt848 elle-mme et prend en charge les ux vido et lincrustation vido dans la mmoire de la carte graphique. Le deuxime module quant lui soccupe de la gestion de la puce du tuner, qui effectue la recherche des chanes et le dcodage des signaux vido. Pour ces deux modules, il est indispensable de prciser quelle type de carte TV est install et quel tuner cette carte utilise. Il existe de nombreuses variantes, selon les modles et les diffrents fabricants prsents sur le march. Le type de carte peut tre communiqu au module bttv laide de loption card. Cette option peut prendre comme valeur un numro identiant le modle de la carte. Les valeurs actuellement supportes sont indiques dans le chier CARDLIST du rpertoire /usr/src/linux/Documentation/video4linux/bttv/. Le module de gestion du tuner utilise loption type pour dterminer le type de tuner utilis. Cette option prend, elle aussi, une valeur numrique indiquant la nature du tuner utilis. Les valeurs supportes sont galement donnes dans le chier CARDLIST. En pratique, il est fort probable que vous utilisiez le type 3, qui correspond au tuner Philips SECAM, car la France utilise le standard SECAM pour les missions TV. Ainsi, si vous disposez dune carte MIRO PCTV (carte de type 1) base sur le tuner Philips SECAM, vous devriez avoir les lignes suivantes dans votre chier modules.conf :
# Lien entre les fichiers spciaux de priphriques et les modules du noyau : alias char-major-81 videodev alias char-major-81-0 bttv # Options du module de gestion du Bt848 : options bttv card=1 # Option du module de gestion du tuner : options tuner type=3

Vous devrez bien entendu adapter ces lignes selon votre propre conguration.
Note : Si vous avez compil les fonctionnalits de linterface I2C sous forme de module (option de menu I2C bit-banging interfaces ), vous aurez galement ajouter ces lignes dans votre chier de conguration modules.conf :
# Lien pour les fonctionnalits I2C : alias char-major-89 i2c-dev # Activation de lagorithme bit-banging : options i2c-algo-bit bit_test=1

208

Chapitre 8. Conguration du matriel et des priphriques


Pour information, I2C est un protocole de communication entre micro-contrleurs, que la plupart des cartes mres sont capables de grer. Cette fonctionnalit nest ncessaire que pour les cartes bases sur la puce Bt848.

Lorsque vous aurez ni vos modications dans le chier de conguration modules.conf, noubliez pas dappeler la commande depmod -a pour remettre jour les dpendances entre les modules du noyau. Si tout se passe bien, vous pourrez utiliser les programmes de lecture TV, comme KWinTV par exemple si vous utilisez lenvironnement de bureau KDE.
Note : Vous pouvez rencontrer quelques problmes lors de la conguration de votre carte TV. Gnralement, si vous nobtenez aucune image, cest que vous vous tes tromp de tuner. Revoyez dans ce cas loption type du module tuner. Si vous obtenez bien une image, mais pas de son, cest sans doute que vous vous tes tromp dans le type de carte, ou que vous avez oubli dinclure le support du son pour les cartes base de Bt848. On notera que, comme pour les cartes son, seule la compatibilit matrielle importe. Par exemple, les cartes Studio PCTV de Pinacle vendues en France sont en ralit des cartes Miro PCTV et ne sont pas reconnues comme des cartes Studio PCTV par Linux... Si vous avez des problmes de son, vous devrez donc revoir la conguration du noyau ou modier la valeur passe loption card du module bttv. Dans tous les cas, nhsitez pas utiliser la commande lspci, qui permet de visualiser les informations du bus PCI, et la commande dmesg, qui permet de voir la liste des messages du noyau. Vous pouvez galement avoir quelques problmes de droits sur les chiers spciaux de priphriques /dev/videoX. Le symptme classique est dans ce cas que tout fonctionne parfaitement sous le compte root, mais pas sous les comptes utilisateurs. Dans ce cas, on pourra rsoudre ces problmes en crant un groupe dutilisateurs video, auquel appartiendront tous les utilisateurs ayant le droit dutiliser la carte dacquisition TV, et de changer le groupe des chiers spciaux de priphriques /dev/videoX. Enn, lutilisation des cartes dacquisition TV ncessite dactiver les fonctionnalits DGA du serveur X. Ces fonctionnalits permettent aux programmes daccder directement la mmoire vido, et donc de faire lincrustation de limage dcode par la carte TV dans la surface dafchage dun cran. La manire dactiver les fonctionnalits DGA sera prcise dans le chapitre traitant de la conguration du serveur X.

8.3.5. Conguration des cartes rseau


Le support des cartes rseau est trs complet sous Linux et la prise en charge dune nouvelle carte revient souvent simplement ajouter le gestionnaire de priphriques de cette carte dans la conguration du noyau. La plupart des cartes rseau sont des cartes Ethernet compatibles soit avec les cartes NE2000, soit avec les cartes 3COM, aussi suft-il en gnral dactiver le gestionnaire de priphriques pour lune de ces cartes pour quelle soit utilisable. La conguration des gestionnaires de priphriques se fait dans le menu Network device support de la conguration du noyau. Il faut activer loption Network device support en premier lieu, puis slectionner le gestionnaire de priphriques appropri dans le sous-menu Ethernet (10 or 100Mbit) . Ce menu prsente en premier lieu les gestionnaires de priphriques pour les cartes ISA, et regroupe les gestionnaires de toutes les autres cartes dans les sous-options de loption EISA, VLB, PCI and on board controllers (NEW) . Vous aurez donc certainement activer cette option et la sous-option correspondante au gestionnaire de priphriques de votre carte rseau. Vous pouvez activer ces options sous la forme de module du noyau ou non, le plus simple

209

Chapitre 8. Conguration du matriel et des priphriques tant ici de ne pas utiliser les modules an davoir viter de complter le chier de conguration /etc/modules.conf. La compilation du noyau elle-mme a t dcrite en dtail dans la Section 7.3 et ne sera donc pas reprise plus en dtail ici. Remarquez galement que la prise en charge de la carte rseau par un gestionnaire de priphriques ne suft en aucun cas lutilisation de lordinateur en rseau. En effet, il faut galement congurer lensemble des paramtres rseau du systme, ce qui sera dcrit dans le Chapitre 9. Le nombre des fonctionnalits rseau de Linux interdit de les dcrire toutes ici, veuillez vous rfrer ce chapitre pour plus de dtails.

8.4. Conguration des ports de communication


Les ports de communication sont les seuls moyens de communication de lordinateur avec dautres appareils, et sont donc essentiels au mme titre que les rseaux. Historiquement, les plus vieux ports de communication utiliss sont sans doute les ports srie, qui permettent de connecter une multitude de priphriques en raison de sa grande simplicit. Les ports parallles sont galement courants, et sont encore souvent utiliss pour connecter les imprimantes. Cependant, ces ports souffrent de dfauts indniables, dont lun des principaux est sans doute le faible dbit de donnes quils autorisent. Ils ne peuvent donc pas tre utiliss pour les applications les plus exigeantes. Cest pour cela que les ports USB (abrviation de langlais Universal Serial Bus ) et IEEE1394 (alias FireWire ) ont t invents. Cette section prsente la manire de congurer les diffrents ports de communication actuellement utiliss, savoir le port parallle, les ports srie standards, et enn les ports USB et IEEE1394.

8.4.1. Conguration du port parallle


La conguration du port parallle sous Linux est relativement automatique. Il suft en effet, dans le programme de conguration du noyau, dactiver les options Parallel port support , PC-style hardware , Use FIFO/DMA if available (EXPERIMENTAL) et IEEE 1284 transfer modes du menu Parallel port support . Si vous dsirez connecter une imprimante sur votre port parallle, ce qui est gnralement le cas, il vous faudra galement activer loption Parallel printer support du menu Character devices . De mme, si vous dsirez connecter un disque dur, un lecteur de CD-ROM ou un lecteur de bande sur votre port parallle, vous devrez activer loption Parallel port IDE device support du menu Block devices , ainsi quau moins une des sous-options pour le type de priphrique utiliser et un des modules de prise en charge des protocole de communication sur port parallle.
Note : Le choix de ces options suppose que vous utilisiez un ordinateur de type PC ou dont la gestion du port parallle se fait de la mme manire que sur un PC.

Il est recommand dactiver ces fonctionnalits sous forme de module du noyau et non au sein du noyau lui-mme. En effet, le gestionnaire de ports parallles utilise, par dfaut, une interrogation priodique pour dterminer ltat des ports. Cela consomme inutilement des ressources de calcul, parce que lon peut le congurer pour utiliser une interruption matrielle et soulager ainsi le processeur de cette tche. De plus, cela permet de charger les modules de gestion du port parallle la demande, et de congurer celui-ci pour les diffrentes utilisations possibles : communication avec une imprimante parallle, avec un lecteur ZIP, ou encore avec un lecteur de CD IDE, etc.

210

Chapitre 8. Conguration du matriel et des priphriques An dutiliser une interruption matrielle pour le port parallle, il est ncessaire de spcier explicitement la ligne de cette interruption. Cela peut se faire avec loption irq du module prenant en charge le port parallle. Sur les ordinateurs de type PC, le nom de ce module est parport_pc , mais, comme on la vu dans la Section 8.1.2, le noyau demande toujours le chargement du module parport_lowlevel pour des raisons de portabilit. Il faut donc dnir un alias dans le chier de conguration /etc/modules.conf. Outre la ligne dinterruption utiliser, le module parport_pc peut prendre en paramtre une autre option permettant dindiquer le port dentre / sortie quil doit utiliser pour accder au port parallle. Cette option est loption io. En gnral, le port utilis est le port numro 378h et la ligne dinterruption est souvent la 7. Les options suivantes doivent donc tre dnies dans le cher module.conf pour obtenir un fonctionnement optimal du port parallle sous Linux :
alias parport_lowlevel parport_pc option parport_pc io=0x378 irq=7

Dautre options pourront tre dnies dans le chier de conguration modules.conf pour prendre en charge les priphriques de type bloc connects sur port parallle. Cela est inutile pour les imprimantes connectes sur le port parallle.

8.4.2. Conguration des ports srie


Les ports srie fournis en standard sur les cartes mres sont dtects et congurs automatiquement par le noyau lorsque lordinateur dmarre. Pour que cela fonctionne, il suft que loption Standard/generic (8250/16550 and compatible UARTs) serial support du menu Character devices soit active. Cela dit, il se peut que votre ordinateur contienne un port srie non standard, ou que vous ayez slectionner des options spciques pour votre matriel. Il vous faudra, dans ce cas, activer les options complmentaires relatives aux ports srie dans le menu Character devices . Le noyau nest, en gnral, capable dinitialiser que les ports srie standards intgrs dans les cartes mres (cest--dire les ports COM1 COM4), auxquels on accde, sous Linux, par lintermdiaire des chiers spciaux de priphriques /dev/ttyS0 /dev/ttyS3. Pour les autres ports srie, il peut tre ncessaire de les initialiser manuellement, par exemple dans un chier de conguration lanc au dmarrage du systme. Cette initialisation se fait laide de la commande setserial, dont la syntaxe simplie est la suivante :
setserial fichier [uart type] [port adresse] [irq ligne]

o fichier est le chier spcial de priphrique permettant daccder au port srie initialiser, type est le type de port srie utilis, adresse est son adresse dentre / sortie et ligne est la ligne dinterruption quil utilise. La commande setserial dispose de nombreuses autres options. Je vous invite en lire la page de manuel pour les dcouvrir. Une fois le port srie correctement initialis, il est possible de xer les paramtres de la ligne de communication avec la commande stty. Comme on la dj vu prcdemment, cette commande permet de xer tous les paramtres des lignes de communication des terminaux et non seulement les paramtres des lignes srie, et elle dispose donc dun grand nombre doptions. Nous nallons nous intresser ici quaux options utiliss pour les lignes srie. La page de manuel de stty pourra tre consulte pour plus de dtails. La syntaxe utiliser pour lire les paramtres de communication dune ligne srie est la suivante :

211

Chapitre 8. Conguration du matriel et des priphriques


stty -a -F priphrique

o priphrique est le chier spcial de priphrique de la ligne. Si vous excutez cette commande, vous constaterez quun grand nombre dinformation est donn. Les informations les plus utiles sont sans doute speed, qui donne la vitesse de la ligne srie, csN, qui donne le nombre N de bits de donnes par caractre, [-]parenb, qui indique si un bit de parit est utilis ou non (auquel cas le caractre - est prsent), [-]parodd, qui indique le type de parit utilise (paire ou impaire selon la prsence ou labsence du caractre -), et [-]cstopb, qui indique le nombre de bits de stop utiliss (un ou deux selon la prsence ou labsence du caractre -). Loption [-]crtscts indique si le contrle de ux matriel est utilis ou non. titre dexemple, voici une sortie typique de la commande stty sur le premier port srie :
speed 9600 baud; rows 0; columns 0; line = 0; intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <indfini>; eol2 = <indfini>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0; -parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke

Les mmes options peuvent tre utilses pour xer les paramtres de la ligne de communication. La ligne de commande utiliser est alors la suivante :
stty -F priphrique options

Il existe une diffrence cependant : le paramtre permettant de xer la vitesse de la ligne est dcompos en deux options ispeed pour le ux de donnes entrant et ospeed pour le ux de donnes sortant. On peut xer la vitesse de la ligne avec loption ispeed. Par exemple, pour faire passer la ligne de communication du deuxime port srie 115200 bauds, 7 bits de donnes, un bit de stop et une parit paire, il faut utiliser la ligne de commande suivante :
stty -F /dev/ttyS1 ispeed 115200 cs7 -cstopb parenb -parodd

Il est important de bien congurer les ports srie avec les mmes paramtres de ligne que ceux utiliss par les priphriques qui y sont connects pour que la communication se fasse correctement.

8.4.3. Installation des priphriques USB


Bien quayant eu quelques difcults ses dbuts, le port USB est dsormais en pleine expansion. Il sagit dune extension des ports srie classiques, qui offre les avantages suivants :

possibilit de connecter jusqu 127 priphriques sur un mme port, selon une structure arborescente ; bande passante accrue jusqu 12 Mbits/s thoriques ;

212

Chapitre 8. Conguration du matriel et des priphriques

capacit de connexion des priphriques chaud et dtection automatique par le systme dexploitation ; possibilit dalimentation des priphriques par le bus lui-mme, vitant ainsi davoir des cbles supplmentaires pour les priphriques consommant peu dlectricit.

Tous ces avantages font que le bus USB est appel remplacer les ports srie que lon connat, et que lon nutilise plus dsormais que pour les modems, les vieilles souris srie et quelques appareils extrieurs. Notez que la simplicit du port srie fera quil restera encore prsents sur bon nombre dappareils pour plusieurs annes encore, mais les priphriques informatiques risquent de sen dtourner de plus en plus. La gestion de lUSB sous Linux se fait au niveau du noyau en ce qui concerne les gestionnaires de priphriques, et au niveau applicatif pour la dtection et la conguration dynamique des priphriques branchs chaud. Linux est capable dutiliser la plupart des priphriques USB existant actuellement sur le march. La conguration chaud des priphriques nest en revanche pas encore tout fait nalise, bien que les mcanismes soient tous en place.

8.4.3.1. Conguration du noyau


La conguration des priphriques USB se fait, au niveau du noyau, dans le menu USB support . Il faut simplement activer loption Support for USB , slectionner un gestionnaire pour le port USB et choisir les gestionnaires des diffrents types de priphriques que lon voudra connecter sur la machine. Il peut tre utile dactiver loption Preliminary USB device filesystem an de pouvoir vrier, dans le rpertoire /proc/bus/usb/ du systme de chiers virtuel /proc/, que les priphriques USB connects apparaissent bien. Ce systme de chiers doit tre mont laide de la commande suivante :
mount -t usbdevfs none /proc/bus/usb

pour pouvoir tre utilis. Il est galement possible de le monter automatiquement dans le chier /dev/fstab. En fait, il existe deux types dinterfaces USB sur le march : linterface UHCI (abrviation de langlais Universal Host Controller Interface ), spcie par Intel, et que les contrleurs de la plupart des cartes mres utilisent (chipsets Intel et VIA), et linterface OHCI ( Open Host Controller Interface ), spcie par Compaq, et qui est utilise par les chipsets Compaq et ALi principalement. Ces deux interfaces sont incompatibles, vous devez donc slectionner lun des deux pilotes UHCI disponibles (options UHCI (Intel PIIX4, VIA, ...) support et UHCI Alternate Driver (JE) support (NEW) )) ou le pilote OHCI (option OHCI (Compaq, iMacs, OPTi, SiS, ALi, ...) support . Comme vous pouvez le constater dans le menu de conguration du noyau, un grand nombre de priphriques USB sont grs par Linux. Vous devez bien entendu activer les options permettant de prendre en charge votre matriel. Il est conseill dinclure ces fonctionnalits sous forme de modules an de permettre le chargement dynamique des gestionnaires de priphriques. Cela est ncessaire pour la conguration des priphriques connects chaud dans le systme. Il existe cependant une exception : les priphriques dentre tels que le clavier et la souris devront, si possible, tre inclus directement au sein du noyau an dviter de se retrouver sans clavier et sans souris en cas de problme dans la conguration du systme. Notez quil existe deux types de pilotes pour les priphriques dentre : un pilote gnral (option USB Human Interface Device (full HID) support ), qui fonctionne avec tous les priphriques dentre du menu Input

213

Chapitre 8. Conguration du matriel et des priphriques


core support , et des pilotes simplis (options USB HIDBP Keyboard (basic) support et USB HIDBP Mouse (basic) support ), que lon utilisera pour raliser des systmes embarqus ou des noyaux lgers. Il est videmment recommand dutiliser le premier pilote, si rellement le support du clavier USB est ncessaire (normalement, les claviers USB sont pris en charge par le BIOS de lordinateur et apparaissent exactement comme des claviers classiques pour le systme dexploitation).

8.4.3.2. Dtection automatique des priphriques USB


Nous avons signal ci-dessus que le bus USB permettait lajout et la suppression des priphriques USB chaud, cest--dire ordinateur allum. Cest une nette progression par rapport aux anciens bus, qui nont jamais rellement accept ce genre dopration, tant du point de vue lectrique (ils peuvent tre dtriors) que du point de vue logiciel (le nouveau priphrique nest pas dtect ou ne peut pas tre congur). Les pilotes USB de Linux sont capables de dtecter lapparition dun nouveau priphrique sur le bus USB et de rserver les ressources systmes ncessaires son utilisation, mais ils ne peuvent pas faire grand chose de plus. En effet, la conguration dun nouveau matriel requiert des oprations dpendantes de celui-ci, telles que :

dterminer le gestionnaire charger pour grer ce nouveau priphrique ; charger et congurer ce gestionnaire ; signaler aux applications clientes lapparition du priphrique.

Bien entendu, les oprations inverses doivent galement tre effectues lorsquun priphrique est dbranch. Sous Linux, toutes ces oprations sont donc ralises par un programme externe au noyau. La gestion des priphriques USB se fait donc comme suit :

un mcanisme de surveillance du bus USB dtecte les apparitions et disparitions des priphriques. Ce mcanisme est souvent implment sous la forme dun dmon USB ; ce dmon appelle des programmes clients capables de raliser la conguration des nouveaux priphriques. Ces programmes clients sont couramment appels des agents USB .

Il existe deux solutions pour implmenter le dmon USB. La premire solution consiste surveiller le systme de chiers virtuel /proc/bus/usb/ pour dtecter les apparitions et disparitions des priphriques USB. La deuxime solution est dimplmenter le dmon USB directement au sein du noyau. Cette solution est plus efcace, parce que le dmon fait dans ce cas partie intgrante du noyau et na donc pas surveiller le systme de chiers virtuel /proc/bus/usb/. La suite de ce document dcrit cette mthode, parce quelle est la plus aboutie et plus gnrale (elle fonctionne galement avec dautres priphriques que les priphriques USB). Pour activer le dmon USB du noyau (nomm khubd), il faut simplement valider loption Support for hot-pluggable devices du menu General setup dans la conguration du noyau. Cette option ajoute galement une entre hotplug dans le rpertoire /proc/sys/kernel/ du systme de chiers virtuels /proc/ du noyau. Ce chier contient le chemin sur le programme utilisateur qui sera appel par le dmon USB chaque fois quun priphrique sera ajout ou supprim pendant le fonctionnement du systme. Par dfaut, ce chemin rfrence lutilitaire /sbin/hotplug, mais il est possible den indiquer un autre en crivant une nouvelle valeur dans ce chier.

214

Chapitre 8. Conguration du matriel et des priphriques Le programme hotplug est gnralement un script, capable de charger les modules pour la gestion de la plupart des priphriques USB. Il joue donc le rle dun agent universel. Cependant, il peut aussi excuter des agents utilisateurs, sils existent, qui sont situs dans le rpertoire /etc/hotplug/. Pour les priphriques USB, le script appel se nomme usb.agent. En fait, le noyau appelle le script hotplug ds quun priphrique est ajout ou supprim, que ce soit un priphrique USB ou non. Ce mcanisme est donc absolument gnrique, et fonctionne galement pour les cartes PCMCIA, les priphriques PCI connectables chaud, et les interfaces rseau. Les scripts appels par hotplug se nomment alors respectivement usb.agent, pci.agent et net.agent. Le script hotplug fait la distinction entre ces trois classes de priphriques grce au premier paramtre que le noyau lui passe sur sa ligne de commande. Les valeurs de ce paramtres peuvent valoir respectivement usb, pci et net. Les agents ont besoin dinformations complmentaires pour dterminer quel est le priphrique qui vient dapparatre ou de disparatre. Ces informations sont passes hotplug sous la forme de variables denvironnement spciques chaque classe de priphrique. Pour les priphriques USB, les variables denvironnement dnies par le noyau sont les suivantes :

ACTION, qui contient la description de lvnement qui sest produit pour ce priphrique ; PRODUCT, qui contient les identicateurs du vendeur, du produit et du priphrique pour le priphrique considr ; TYPE, qui contient la classe et la sous-classe du priphrique, ainsi que son protocole de communication ; INTERFACE, qui contient les paramtres de classe, sous-classe et de protocole pour les interfaces, si le priphrique USB est de classe 0.

Si vous avez activ le support du systme de chiers virtuel USB, les variables suivantes seront galement dnies :

DEVFS, qui contient le chemin sur la liste des gestionnaires de priphriques USB. Il sagit normalement du chier /proc/bus/usb/drivers ; DEVICE, qui contient le chemin sur le chier spcial de priphrique pour le priphrique USB ;

Enn, la variable denvironnement PATH est initialise pour rfrencer les rpertoires /sbin/, /bin/, /usr/sbin/ et /usr/bin/, et la variable denvironnement HOME contient le chemin du rpertoire racine. Normalement, le script hotplug et les agents utilisateurs doivent tre fournis avec votre distribution. Cependant, toutes les distributions ne sont pas encore prtes pour le support de lUSB, et vous devrez installer ces scripts vous-mme. Leur rdaction peut tre extrmement technique, je vous recommande donc dutiliser les scripts disponibles sur le site de lUSB pour Linux (http://www.linuxusb.org/policy.html).

8.4.4. Installation des priphriques IEEE1394


Le bus IEEE1394 (initialement dnomm bus FireWire) est un bus srie grande vitesse, capable de transfrer des donnes avec un trs grand dbit (400 mgabits par secondes). Ce bus peut tre utilis pour connecter de nombreux priphriques (disques dur et lecteurs de CDROM externes par exemple), mais sa principale utilisation reste pour les transferts de donnes vido provenant des camscopes numriques. Certaines cartes mres disposent dun port IEEE1394 intgr, mais la plupart ncessitent

215

Chapitre 8. Conguration du matriel et des priphriques lajout dune carte lle PCI. La plupart de ces cartes sont vendues en tant que cartes de montage vido et disposent de deux ports IEEE1394 an de permettre une entre et une sortie du ux vido. Le bus IEEE1394 dispose davantages indniables, puisquil permet de brancher et de dbrancher un priphrique chaud (cest--dire sans redmarrer lordinateur), les donnes sont transfres en numrique (donc sans perte de qualit pour les squences vido), et de piloter les appareils qui y sont connects (ce qui permet de contrler par exemple un camscope partir dun logiciel de montage vido). Il est galement possible dutiliser le bus IEEE1394 pour connecter deux ordinateurs en rseau, bien que cette fonctionnalit soit encore exprimentale. Linux dispose des pilotes permettant dutiliser les ports IEEE1394 de manire gnrique. Cependant, il faut bien le reconnatre, les logiciels spciques aux diffrents types dappareils sont encore trs rares ou incomplets. Cet tat de fait est particulirement vrai en ce qui concerne les camscopes numriques, pour lesquels il nexiste quasiment aucun logiciel de montage vido dont la qualit sapproche de celle de ceux qui ont t dvelopps pour Windows. Cela dit, les autres priphriques tels que les disques durs et les lecteurs de CD-ROM externes sont mieux supports, et la conguration du port IEEE1394 peut tre ralise compltement en attendant que des logiciels plus volus ne voient le jour. Vous pouvez obtenir les dernires informations concernant le support des priphriques FireWire sous Linux sur le site de linux1394 (http://linux1394.sourceforge.net/).

8.4.4.1. Conguration du noyau


La prise en charge du bus IEEE1394 au niveau du noyau est ralisable par lintermdiaire des options du menu IEEE 1394 (FireWire) support (EXPERIMENTAL) . Comme le support des priphriques IEEE1394 sous Linux en est encore ses balbutiements, ce menu ne peut tre accd que si lon a activ loption Prompt for development and/or incomplete code/drivers du menu Code maturity level options . Les principales options utilisables sont les suivantes :

loption IEEE 1394 (FireWire) support (EXPERIMENTAL) , qui est loption principale qui active toutes les autres options. Il faut donc imprativement activer cette option et rpondre Y ; loption Texas Instruments PCILynx support , qui permet de prendre en charge les cartes IEEE1394 bases sur la puce PCILynx de Texas Instrument. Ce ne sont pas les cartes les plus couramment utilises, aussi la rponse recommande est-elle N. Si vous activez cette option, vous pourrez congurer des paramtres complmentaires du gestionnaire de priphriques avec les options Use PCILynx local RAM (utilisation de la mmoire embarque sur la carte PCI) et Support for non-IEEE1394 local ports (utilisation de fonctionnalits complmentaires non FireWire de ces cartes) ; loption OHCI-1394 support , qui active la prise en charge des priphriques IEEE1394 compatible OHCI (abrviation de langlais Open Host Controller Interface ), qui sont les priphriques les plus courants prsent. La rponse recommande est Y ; loption OHCI-1394 Video support , qui permet de prendre en charge les camras vido numriques. Cette option ajoute galement une fonctionnalit intressante qui permet aux programmes de partager les donnes avec le gestionnaire de priphriques directement. Cela permet dviter quune copie de ces donnes ne soit ralise entre la mmoire du noyau et la mmoire de lapplication et dobtenir ainsi de meilleures performances. La rponse recommande est bien videmment Y. Cette option nest toutefois disponible que pour les priphriques OHCI ; loption SBP-2 support (Harddisks, etc.) , qui permet de prendre en charge les disques durs et les lecteurs de DVD connects sur bus IEEE1394. Ces lecteurs apparaissent alors comme des priphriques SCSI standards et pourront tre monts via lun des priphriques /dev/sdx ;

216

Chapitre 8. Conguration du matriel et des priphriques

loption Raw IEEE1394 I/O support , qui permet aux applications de communiquer directement avec le bus IEEE1394 par lintermdiaire dun chier spcial de priphrique. Cette option est ncessaire au bon fonctionnement de la plupart des applications IEEE1394 et la rponse recommande est donc Y ; loption Excessive debugging output , qui active lmission de messages de traces pour toutes les donnes survenant sur le bus IEEE1394. Cette option saturera vos chiers de traces trs vite et nest rellement utile que pour les dveloppeurs, aussi faut-il rpondre N.

Comme pour tous les priphriques sous Linux, les fonctionnalits IEEE1394 du noyau seront accessibles par lintermdiaire de chiers spciaux de priphriques situs dans le rpertoire /dev/. Les fonctionnalits vido seront accdes par lintermdiaire dun chier spcial de priphrique de type caractre et de code majeur 172. De mme, linterface de donnes brute active par loption Raw IEEE1394 I/O support est expose par lintermdiaire dun chier spcial de priphrique de type caractre et de code majeur 171. Vous devrez donc crer ces chiers spciaux laide des deux commandes suivantes :
mknod /dev/raw1394 c 171 0 mknod -m 666 /dev/video1394 c 172 0

Le numro de code mineur est utilis pour distinguer les diffrents ports IEEE1394 prsents dans la machine. Les lignes de commandes prcdentes ne montrent que la manire de crer les chiers spciaux de priphriques que pour le premier port IEEE1394.

8.4.4.2. Installation des bibliothques complmentaires


Les fonctionnalits IEEE1394 peuvent tre utilises par les applications directement par lintermdiaire des chiers spciaux de priphriques /dev/raw1394 et /dev/video1394, mais quasiment aucune ne le fait. En effet, des bibliothques spciques ont t crites an de xer les interfaces de programmation de Linux avec ces applications. Il est donc ncessaire dinstaller ces bibliothques pour pouvoir utiliser les priphriques IEEE1394. Il est encore rare que ces bibliothques soient installes par les distributions, certainement parce quelles sont encore en cours de dveloppement. Leur installation ncessite donc de les compiler soi-mme, ce qui est une tche facile si on sait le faire, mais qui peut effrayer un dbutant. Rappelons une fois de plus que le support des priphriques IEEE1394 sous Linux est encore exprimental. La bibliothque de programme la plus importante est celle qui permet dutiliser la fonctionnalit daccs direct aux priphriques IEEE1394 par lintermdiaire du chier spcial de priphrique /dev/raw1394. Les chiers sources de cette bibliothque peuvent tre trouves sur le site du projet libraw1394 (http://sourceforge.net/projects/libraw1394/). Une autre bibliothque utilise par les programmes vido est la bibliothque libavc1394 (http://sourceforge.net/projects/libavc1394/). Cette bibliothque permet en effet aux programmes de piloter les camscopes numriques par lintermdiaire du bus IEEE1394. Enn, les programmes ddition vido peuvent avoir besoin de la bibliothque libdv (http://libdv.sourceforge.net), qui permet de manipuler les donnes au format DV (cest--dire le format de donnes utilis par la plupart des camscopes numriques). Cette bibliothque ne fait pas proprement parler partie des bibliothques permettant de communiquer avec les priphriques IEEE1394, mais elle est extrmement utile. La compilation de ces bibliothques se fait classiquement avec les commandes :
./configure --prefix=/usr make

217

Chapitre 8. Conguration du matriel et des priphriques partir du rpertoire des sources. Celui-ci pourra tre extrait des archives laide de la commande tar xvf archive, o archive est le nom de larchive en question. Une fois compiles, les bibliothques pourront tre installes avec la commande :
make install

Ces oprations ne devraient pas poser de problme particulier. Consultez le Chapitre 7 pour plus de dtails sur ces oprations. Une fois ces bibliothques installes, vous devriez pouvoir installer et utiliser des applications ddies aux priphriques IEEE1394, comme dvgrab (outil de capture vido), kino ou broadcast2000 (outils ddition de squences vido).

218

Chapitre 9. Conguration du rseau


Linux est un systme dexploitation fabriqu par lInternet et pour lInternet. Inutile de prciser que cest lun des meilleurs systmes pour grer et exploiter un rseau. Certains ne lutilisent dailleurs que pour cela, et protent de ses excellentes performances sur les petites machines an de rcuprer du matriel autrement vou la casse. En fait, les fonctionnalits rseau de Linux sont si nombreuses que jai t oblig dy consacrer un chapitre part entire. La conguration dun rseau est une opration qui ncessite quelques connaissances thoriques sur le fonctionnement des rseaux TCP/IP. Ces informations sont assez techniques, mais indispensables pour bien congurer les services rseau de toute machine connecte, et pas seulement les machines fonctionnant sous Linux. Il nest en effet pas rare de trouver des rseaux de machines fonctionnant sur des systmes dont la conguration est suppose tre plus simple, mais dont lorganisation est une hrsie absolue et qui risque de ncessiter une remise plat complte chaque interconnexion. Cette section va donc donner quelques explications sur les notions fondamentales des rseaux informatiques. Il traitera ensuite de la conguration des rseaux locaux, puis celle des connexions temporaires Internet. Les services rseau volus tels que le partage de connexion Internet et la cration dun serveur de chiers seront nalement traits en n de chapitre.

9.1. Notions de rseau TCP/IP


9.1.1. Gnralits sur les rseaux
Un rseau nest en gnral rien dautre quune interconnexion entre plusieurs machines qui leur permet dchanger des informations. Il existe de nombreux moyens de raliser cette interconnexion, qui utilisent parfois des supports physiques varis. Les techniques les plus utilises sont la liaison radio et la liaison par cble. Cette dernire technique comprend diverses variantes, dont les rseaux Ethernet, TokenRing et simplement la liaison tlphonique. Il est vident que la manire denvoyer et de recevoir des informations est diffrente pour ces diffrents supports physiques, parce quelle dpend tout simplement des possibilits techniques offertes par la technologie sous-jacente utilise. Cependant, il est trs courant de dcouper les informations changer en paquets, qui sont ensuite transmis sur le rseau. Ces paquets peuvent tre de tailles varies, et contenir des informations utiles la gestion du rseau. Linformation la plus importante est sans doute celle permettant de connatre la machine destinataire du paquet. On lappelle ladresse de la machine cible, il sagit gnralement dun numro permettant de lidentier de manire unique sur le rseau. En gnral, les paquets contiennent galement ladresse de la machine source, an quune rponse puisse lui tre envoye.

219

Chapitre 9. Conguration du rseau Figure 9-1. Notion de paquet et dadresse rseau

Du fait de la diversit des supports physiques de rseau, il nest pas simple dcrire une application rseau qui puisse travailler dans des environnements rseau htrognes. Cela supposerait de connatre les protocoles de communication pour chaque type de rseau, ce qui compliquerait linni le moindre programme et le rendrait inutilisable avec les nouveaux rseaux. Par consquent, cette tche ingrate a t relgue au plus profond des couches rseau spciques au support physique. Les applications quant elles utilisent un protocole de communication plus volu, dont le but est dassurer linteroprabilit des diffrents supports physiques. Ce protocole utilise toujours des paquets et une notion dadresse, mais cette fois ces informations sont standardises et utilisables par toutes les applications. Les paquets de ce protocole sont stocks dans les paquets des rseaux physiques et transmis tels quels. Ils peuvent ventuellement tre dcoups en sous-paquets dans le cas o la taille des paquets du rseau serait trop petite pour les contenir. Cette technique sappelle lencapsulation dun protocole dans un autre protocole. Figure 9-2. Encapsulation de protocoles

9.1.2. Le protocole IP
Les machines Unix utilisent toutes le protocole de communication de bas niveau IP ( Internet Protocol ). Ce protocole a t invent pour permettre linterconnexion dun grand nombre de rseaux physiques diffrents (le nom dInternet provient dailleurs de cette caractristique : INTERconnected NETworks ). Il permet de transmettre des informations de manire uniforme sur

220

Chapitre 9. Conguration du rseau tous ces rseaux physiques. Ainsi, les programmes qui utilisent IP ne voient pas les spcicits des diffrents rseaux physiques. Pour eux, il ne semble y avoir quun seul rseau physique, dont le protocole de communication de base est IP. Autrement dit, les applications qui utilisent le rseau se contentent dutiliser le protocole IP, et nont plus se soucier de la manire dont il faut formater et transmettre les informations sur chaque support physique du rseau. Ce genre de dtail est laiss aux couches rseau de chaque machine et aux passerelles reliant les divers rseaux physiques. Comme il la dj t dit ci-dessus, le protocole IP utilise des adresses pour identier les machines sur les rseaux. Les adresses IP sont codes sur quatre octets (nombres binaires huit chiffres, permettant de reprsenter des valeurs allant de 0 255), chacun dnissant une partie du rseau. Ces adresses sont utilises un peu comme les numros de tlphone : le premier octet dnit le numro dun superrseau dans lequel le correspondant se trouve (ces super-rseaux sont appels les rseaux de classe A), le deuxime octet dnit le numro du sous-rseau dans le super-rseau (ces sous-rseaux sont appels rseaux de classe B), le troisime octet dnit encore un sous-sous-rseau (rseaux dits de classe C) et le quatrime octet donne le numro de la machine dans ce sous-sous-rseau. Cette numrotation permet daffecter des adresses similaires pour les diffrentes machines dun rseau, et de simplier ainsi la gestion de ce dernier. Elle dispose en revanche dun inconvnient majeur : beaucoup dadresses sont gaspilles, car il ny a pas sufsamment de rseaux de classe A dune part, et quon ne peut pas mlanger les machines de deux sous-rseaux dans un mme rseau de classe A dautre part. Si lon reprend la comparaison avec les numros de tlphone, il y a normment dabonns dont le numro commence par 01, mais beaucoup moins dont le numro commence par 02, et quasiment aucun dont le numro commence par 08. Si lon venait manquer de place dans la liste des numros commenant par 01, on ne pourrait pas pour autant utiliser les numros commenant par 02 pour des raisons gographiques. Cest la mme chose pour les adresses IP, sauf que les zones gographiques sont remplaces par des sous-rseaux. Le problme est que, malheureusement, on commence manquer dadresses disponibles (alors quil y en a plein de libres mais inutilisables parce quelles se trouvent dans dautres sous-rseaux !). Il va donc falloir effectuer une renumrotation dici peu, exactement comme il y en a dj eu dans le monde de la tlphonie...
Note : Le protocole IPv6, qui remplacera le protocole IP classique (encore appel IPv4), a pour but de rsoudre les limitations du protocole IP utilis actuellement. Les adresses du protocole IPv6 sont codes sur 16 octets, ce qui rsoudra dnitivement le problme du manque dadresses. De plus, les services modernes que sont lauthentication de lmetteur, ainsi que la qualit de service (cest--dire la garantie du dlai de transmission des donnes, garantie ncessaire pour transmettre de faon correcte les ux multimdia tels que le son et la vido en temps rel) sont fournis par IPv6. Bien entendu, Linux est dj capable dutiliser IPv6 (combien de systmes peuvent aujourdhui lafrmer ?) ! Notez toutefois que pour cela, il faut recompiler le noyau et toutes les applications rseau du systme, ce qui est tout de mme trs lourd. Par consquent, il vaut mieux se contenter du protocole IP actuel. Malgr ses limitations, ce protocole reste sans doute le meilleur protocole rseau du monde, car il allie souplesse et fonctionnalit. Il est difcilement concevable de crer un rseau aussi grand quInternet avec les autres protocoles existant sur le march...

Les adresses IP sont donc parfaitement dnies laide de leurs quatre nombres, que lon note les uns la suite des autres et en les sparant dun point. Comme on la vu, les adresses IP sont classes en sous-rseaux, de classe A, B et C. Les adresses des rseaux de classe C ont leurs trois premiers nombres xs, et seul le quatrime nombre change pour chaque machine du rseau. De la mme manire, les rseaux de classe B ont leurs deux premiers nombres xs, et seuls les deux derniers nombres permettent de distinguer les diffrentes machines du rseau. Enn, les rseaux de classe A nont de x que leur premire composante, les autres sont libres. Il est donc clair quil existe peu de rseaux de classe A, mais que ce sont de trs gros rseaux (ils peuvent contenir jusqu 16 millions

221

Chapitre 9. Conguration du rseau de machines !). En revanche, il existe beaucoup plus de rseaux de classe C, dont la taille est plus modeste (seulement 256 machines). Pour un rseau donn, les adresses ont donc toutes la mme forme. Les premiers octets des adresses du rseau sont toujours les mmes (ce peut tre le premier octet pour les rseaux de classe A, les deux premiers pour les rseaux de classe B ou les trois premiers pour les rseaux de classe C). On peut donc dnir la notion dadresse de rseau, qui est ladresse IP dune machine du rseau dont les parties variables ont pour valeur 0. Par exemple, si une machine dun rseau de classe C a pour adresse 192.168.1.15, alors ladresse de son sous-rseau est 192.168.1.0. Cela signie que toutes les machines de ce rseau auront une adresse de la forme 192.168.1.xxx . Un rseau nappartient qu une et une seule classe. Les adresses IP sont rparties sur les diffrentes classes de rseaux, selon la valeur des bits de poids fort de leur premier octet. Par exemple, les rseaux de classe A sont identiables au fait que le bit de poids fort de leur adresse est nul. Les adresses de rseau valides pour les rseaux de ce type sont donc les adresses comprises entre 0.0.0.0 et 127.0.0.0. Il nexiste donc que 128 rseaux de classes A en tout et pour tout. Les autres rseaux ont donc le bit de poids fort de leur adresse x 1, et cest le deuxime bit de poids fort qui est utilis pour distinguer les rseaux de classe B des autres. Les rseaux de classe B utilisent toujours la valeur 0 pour ce bit, leurs adresses varient donc entre 128.0.0.0 et 191.255.0.0. De mme, les rseaux de classe C utilisent la valeur 1 pour le deuxime bit de leur adresse, et ont ncessairement un troisime bit nul. Leurs adresses vont donc de 192.0.0.0 223.255.255.0. Les adresses pour lesquelles le troisime bit (en plus des deux premiers) est 1 sont rserves (soit pour une utilisation ultrieure, soit pour sadresser des groupes dordinateurs en multicast) et ne doivent pas tre utilises. Il sagit des adresses 224.0.0.0 255.255.255.255. Cette dernire adresse a une signication spciale et permet de sadresser tous les ordinateurs dun rseau. Il est possible de dterminer ladresse du rseau auquel une machine appartient en utilisant ce quon appelle le masque de sous-rseau. Le masque de sous-rseau est une srie de quatre nombres ayant le mme format que les autres adresses IP, mais dont les composantes ne peuvent prendre que la valeur 0 ou la valeur 255, les 255 devant ncessairement apparatre en premier. Les composantes des adresses IP qui correspondent la valeur 255 dans le masque de sous-rseau font partie de ladresse dudit sousrseau. Les composantes qui correspondent la valeur 0 dans le masque de sous-rseau nen font pas partie, et varient pour chaque machine du rseau. Pour reprendre lexemple prcdent, si une machine a pour adresse IP 189.113.1.15 et que son masque de sous-rseau est 255.255.255.0, alors ladresse de son rseau est 189.113.1.0. Si le masque de sous-rseau avait t 255.255.0.0 (typiquement le masque dun rseau de classe B), ladresse du rseau aurait t 189.113.0.0. Comme on le voit, le masque de sous-rseau est utilis par le systme pour dterminer rapidement ladresse de sous-rseau dune machine partir de son adresse IP. On notera que certaines combinaisons dadresses IP et de masques de sous-rseau sont invalides. Par exemple, les adresses affectes aux rseaux de classe C (comme 192.168.0.1 par exemple) ne peuvent pas avoir de masque de sous-rseau en 255.255.0.0, car cela impliquerait que cette adresse serait une adresse de rseau de classe B.

222

Chapitre 9. Conguration du rseau Figure 9-3. Addresse IP et adresse de rseau

Les adresses IP ne sont pas attribues aux machines au hasard. Il est vident que chaque machine doit avoir une adresse unique, et que son adresse doit appartenir la plage dadresses utilise pour le sous-rseau dont elle fait partie. Pour cela, les classes de rseau, ainsi que les adresses quils utilisent, sont attribues par lIANA, un organisme de gestion de lInternet. Le rle de lIANA (abrviation de langlais Internet Assigned Numbers Authority ) est essentiellement dassurer lunicit des adresses IP sur lInternet. Cependant, certaines adresses sont librement utilisables pour les rseaux locaux qui ne sont pas connects directement lInternet. Les paquets utilisant ces adresses sont assurs de ne pas tre transmis sur Internet. Ces adresses peuvent donc tre utilises par quiconque. Les plages dadresse rserves sont les suivantes : Tableau 9-1. Plages dadresses IP rserves pour un usage personnel Classe de rseau A B C Adresses de rseau rserves 10.0.0.0 172.16.0.0 172.31.0.0 192.168.0.0 192.168.255.0

Ainsi, un rseau de classe A (dadresse 10.0.0.0), 16 rseaux de classe B (les rseaux 172.16.0.0 172.31.0.0) et 255 rseaux de classe C (dadresses 192.168.0.0 192.168.255.0) sont disponibles. Vous pouvez donc les utiliser librement. Il est galement possible de congurer les machines pour quelles rcuprent leurs adresses IP auprs dun serveur laide du protocole DHCP (abrviation de langlais Dynamic Host Conguration Protocol ). Cette technique est trs intressante quand on dispose dun grand nombre de machines qui ne sont pas toujours toutes connectes un rseau. Il est donc possible de redistribuer les adresses IP dun stock dadresses en fonction des machines qui se connectent, et dconomiser ainsi les prcieuses adresses. En revanche, elle nest pas approprie pour les serveurs qui sont couramment accds par des postes clients, et qui doivent donc avoir une adresse IP xe. Certaines adresses IP ont une signication particulire et ne peuvent pas tre attribues une machine. Par exemple ladresse 127.0.0.1 reprsente, pour une machine, elle-mme. Cette adresse est souvent utilise pour accder un programme rseau sur la machine locale. Elle fait partie du sous-rseau de classe A 127.0.0.0, qui ne comprend pas dautres adresses. De plus, les adresses dont les derniers nombres (cest--dire les nombres qui ne font pas partie de ladresse du rseau) se terminent par 0 ou

223

Chapitre 9. Conguration du rseau 255 sont rserves pour lenvoi des paquets destination de tout le monde sur le rseau (mission dite broadcast ). Par exemple, les adresses 192.168.1.0 et 192.168.1.255 ne peuvent pas tre affectes une machine. Ce sont typiquement ces adresses qui sont utilises par le protocole DHCP pour mettre des requtes sur le rseau alors que la machine na pas encore dadresse xe. Il est important de savoir que, par dfaut, une machine ne communiquera quavec les machines de son propre rseau. Cest dire que si une machine utilise ladresse IP 192.168.1.15 et que son masque de sous-rseau est 255.255.255.0, elle ne pourra contacter que des machines dont ladresse est de la forme 192.168.1.xxx. Elle ne pourra donc pas voir par exemple une machine dont ladresse IP est 192.168.0.2. Cela ne signie pas que lon doive toujours utiliser le masque 0.0.0.0 pour voir toutes les machines du monde, mais plutt que la machine 192.168.0.2 ne fait pas partie, a priori, du mme rseau physique que la machine 192.168.1.15. Il est donc inutile de chercher la contacter (et mettre le masque de sous-rseau 0.0.0.0 ne rsoudrait videmment pas le problme). Cependant, si deux rseaux physiques ont ncessairement deux adresses de rseau diffrentes, rien nempche de dnir, sur un mme rseau, plusieurs rseaux logiques. Ainsi, une mme carte rseau peut avoir plusieurs adresses IP. La communication avec les machines des diffrents rseaux logiques se fait alors par lintermdiaire de la mme interface rseau. Arriv ce stade des explications, je sens venir la question suivante : ?! Euhhh... Mais alors, comment peut-on voir les machines sur Internet ? Je nai pas de rseau, et quand je me connecte Internet, je peux y accder ! Et mme si javais un rseau, elles ne feraient certainement pas partie de mon rseau... . Explications :

premirement, vous avez un rseau, mme si vous ne le savez pas. Toute machine appartient gnralement au moins son propre rseau virtuel, sur laquelle elle est la seule machine, et o elle a ladresse 127.0.0.1 ; deuximement, effectivement, les machines qui se trouvent sur Internet nappartiennent pas votre rseau, que celui-ci existe effectivement ou soit virtuel ; troisimement, toutes les informations que vous envoyez et recevez transitent par un seul ordinateur, celui de votre fournisseur daccs Internet. Cest cet ordinateur qui se charge de faire le transfert de ces informations vers les machines situes sur Internet.

Cest donc ici quintervient la notion de passerelle ( Gateway en anglais). Une passerelle est une machine qui appartient deux rseaux physiques distincts, et qui fait le lien entre les machines de ces deux rseaux. Les ordinateurs des deux rseaux peuvent communiquer avec la passerelle de part et dautre, puisquelle appartient aux deux rseaux. Les ordinateurs de chaque rseau transmettent cette passerelle tous les paquets qui ne sont pas destins une machine de leur propre rseau. Celle-ci se charge simplement de transfrer ces paquets aux machines de lautre rseau.

224

Chapitre 9. Conguration du rseau Figure 9-4. Notion de passerelle

Lorsque vous vous connectez Internet, vous ne faites rien dautre que de crer un rseau (dont le support physique est la ligne tlphonique), et vous utilisez lordinateur que vous avez appel comme passerelle par dfaut. Tous les paquets destins un autre rseau que le vtre (donc, en pratique, tous les paquets si vous navez pas de rseau local) sont donc envoys sur le rseau constitu de votre connexion Internet et arrivent donc chez votre fournisseur daccs, qui se charge ensuite de les transmettre aux autres ordinateurs. Notez que celui-ci peut transmettre ces paquets une autre passerelle laquelle il a accs et ainsi de suite, jusqu ce que la destination soit atteinte. Dans le cas dun particulier, le choix du rseau sur lequel les paquets doivent tre transmis est trs facile faire puisquen gnral un paquet est soit destination de la machine locale, soit destination dune machine sur Internet. Pour un paquet destin la machine locale, le rseau virtuel local est utilis. Tous les autres paquets sont envoys sur la connexion Internet. Cependant, il peut arriver quune machine ait le choix entre plusieurs passerelles diffrentes pour envoyer un paquet dont la destination nest pas sur son propre rseau. Par exemple, les passerelles dInternet peuvent tre ellesmmes connectes diffrents autres rseaux, qui sont eux-mmes connect s dautres rseaux. Un paquet peut donc tre achemin de plusieurs manires sa destination, selon la topologie du rseau. Lensemble des rseaux emprunts par un paquet dans son voyage constitue ce quon appelle sa route. Chaque passerelle contribue donc dterminer la route des paquets en choisissant, pour chaque paquet, linterface rseau utiliser pour transmettre ce paquet. Ce choix est fait en suivant un certain nombre de rgles bases sur ladresse destination des paquets. Par exemple, si une passerelle reoit un paquet dont ladresse destination est 129.46.10.15, et quelle est elle-mme connecte un rseau possdant cette machine, elle transmettra bien videmment ce paquet sur ce rseau. Si en revanche elle ne peut localiser la machine cible sur lun de ses rseaux, elle lenverra une autre passerelle laquelle elle a accs. Le choix de cette passerelle est en gnral dtermin par des rgles de la forme suivante : Tous les paquets destins au sous-rseau 129.46.0.0 doivent tre envoys vers la passerelle 193.49.20.1 du rseau 193.49.20.0 . Notez qu chaque tape de la route, seules les passrelles de ltape suivante peuvent tre choisies comme relai. Ainsi, si la passerelle est connecte trois rseaux dadresses respectives 192.168.1.0, 193.49.20.0 et 209.70.105.10, elle transfrera le paquet destination de 129.46.10.15 la passerelle 193.49.20.1. La transmission effective du paquet cette passerelle se fera ensuite selon le protocole rseau bas niveau

225

Chapitre 9. Conguration du rseau utilis sur le rseau 193.49.20.0. Autrement dit, une passerelle est une machine qui, contrairement aux machines classiques, accepte de recevoir des paquets qui ne lui sont pas directement adresss, et de les traiter en les rmettant vers leur destination ou vers une autre passerelle, selon les rgles de routage quelle utilise. Les rgles utilises par les passerelles sont stockes dans ce quon appelle des tables de routage. Les tables de routage peuvent tre congures statiquement dans la conguration des passerelles, cest-dire initialises dans les chiers de conguration et ne jamais tre modies. Cette technique convient parfaitement pour les petits rseaux. Elle se rvle cependant insufsante sur les passerelles dInternet. En effet, si les rseaux emprunts par une route sont saturs, voire hors service, il peut tre intressant dutiliser une autre route. Ces passerelles utilisent donc des tables de routage dynamiques, qui sont automatiquement mises jour en fonction de ltat du rseau. Bien que Linux puisse parfaitement effectuer ce type de routage, cest une conguration rserve un usage spcique de Linux. Ce document ne traitera donc pas du routage dynamique. Figure 9-5. Notion de route

Le problme des adresses IP est quelles ne sont pas trs parlantes pour les tres humains : que peut donc signier 192.147.23.2 ? Pas grand chose... Cest pour cela quon affecte des noms de machines plus humains, comme par exemple krypton.andromede.galaxie. Ces noms suivent une convention de nommage bien prcise. En gnral, le premier nom est le nom de la machine elle-mme, et la suite du nom constitue ce quon appelle le domaine dans laquelle la machine se trouve. Ainsi, dans lexemple prcdent, krypton est le nom dune machine, et andromede.galaxie est le nom de son domaine. En gnral, il existe plusieurs machines dans un mme domaine, on pourrait donc galement avoir altair.andromede.galaxie par exemple (malheureusement pour mon exemple, ltoile Altar ne se trouve pas dans la galaxie dAndromde, mais bon...). Souvent, les noms de domaines sont des noms de socits. La dernire partie du nom de domaine permet galement de d-

226

Chapitre 9. Conguration du rseau terminer la nature du domaine, ou sa localisation. Par exemple, lextension .com indique clairement que le domaine est de nature commerciale (de surcrot, il sagit sans doute dune socit amricaine, lextension .com tant rserve aux tats-Unis). De mme, lextension .gov est utilise pour les organismes gouvernementaux amricains, et lextension .edu pour les universits ou les coles amricaines. Lextension .org est utilise pour les organisations non commerciales. Enn, les noms de domaines des autres pays que les tats-Unis utilisent quasiment systmatiquement une extension indiquant leurs pays dorigine. Ainsi, .fr reprsente la France, .uk les Royaumes-Unis, etc. Notez que la notion de domaine est a priori distincte de la notion de rseau. La question technique qui se pose avec ces conventions de nommage humaines est de savoir comment dterminer, partir dun nom littral, ladresse IP de la machine correspondante. Cette opration nest pas simple, et en fait elle est effectue de deux manires :

soit la machine locale demande une autre machine quelle connat deffectuer la recherche de ladresse du correspondant ; soit elle dispose dune liste de noms et dadresses lui permettant de dterminer directement les adresses de ses interlocuteurs.

La premire solution utilise ce quon appelle un serveur de noms ( DNS en anglais, abrviation de Domain Name Service ), qui connat toutes les machines du rseau soit directement, soit indirectement (donc via un autre DNS). Lopration qui consiste retrouver ladresse IP dune machine partir de son nom sappelle la rsolution de nom de domaine. Il est vident que si le serveur de noms ne peut tre contact, il sera impossible dutiliser les noms de machines. En revanche, il sera toujours possible dutiliser leurs adresses IP directement, si on les connat. La deuxime solution ne souffre pas de ce dfaut, elle ncessite cependant de mettre jour la liste des noms sur tous les postes rgulirement, ce qui est beaucoup plus complexe que la gestion centralise dun DNS. On ne lutilisera donc que pour les petits rseaux.

9.1.3. Le protocole TCP


Nous avons vu que le protocole IP fournit les briques de bases de toute la communication rseau sous Unix (et Internet). Ses principales fonctionnalits sont le dcoupage des informations en paquets de taille sufsamment petite pour pouvoir transiter sur tous les types de rseaux physiques, la gestion des destinations des paquets laide des adresses IP, et le choix de la route permettant dacheminer les paquets destination. En revanche, il est incapable dassurer les services plus volus comme la gestion de lordre darrive des paquets et la gestion de la abilit du transfert des informations. Cest donc des protocoles plus volus, eux-mmes encapsuls dans IP, deffectuer ces tches. Lun des protocoles les plus importants est le protocole TCP (abrviation de langlais Transfer Control Protocol ). Ce protocole se charge dtablir les connexions entre deux ordinateurs, et assure la abilit des informations transmises et larrive des informations dans leur ordre denvoi. Il existe dautres protocoles, moins connus que TCP mais tout aussi importants. On retiendra en particulier les deux protocoles suivants :

UDP (abrviation de langlais User Datagram Protocol ), qui permet dmettre des datagrammes sur le rseau, qui sont de simples paquets de donnes (cest un protocole semblable IP, destin aux applications) ; ICMP (abrviation de Internet Control Message Protocol ), qui est utilis essentiellement pour transmettre des messages de contrle du fonctionnement des autres protocoles (il est donc vital).

227

Chapitre 9. Conguration du rseau Les services rseau des machines sont organiss en couches logicielles, qui sappuient chacune sur la couche infrieure. Ainsi, TCP utilise IP, qui lui-mme utilise le pilote qui gre linterface rseau. Du fait que ces couches sappuient les unes sur les autres, on appelle souvent lensemble de ces couches une pile ( stack en anglais). Vous avez peut-tre dj entendu parler de la pile TCP/IP. Lorsquun service rseau dune machine nest plus accessible, il se peut que ce service rseau ait plant. Si tout un ensemble de services rseau ne fonctionne plus, cest certainement une des couches logicielles qui est plante. Par exemple, une machine peut rpondre la commande ping (classiquement utilise pour tester les connexions rseau) et ne plus accepter la plupart des connexions rseau. Cela signie simplement que la couche TCP ne fonctionne plus, et que la couche ICMP (utilise par ping) est toujours valide. videmment, si la couche IP tombe en panne, la machine ne sera plus accessible du tout, sauf ventuellement avec dautres protocoles rseau compltement diffrents (IPX, Appletalk, etc.). Seuls les mcanismes du protocole TCP seront dtaills dans la suite de ce document. Le protocole TCP est en effet utilis par un grand nombre de services, ce qui en fait certainement le plus connu. Le protocole TCP utilise la notion de connexion. Une connexion est un canal de communication tabli entre deux processus par TCP. Comme les processus sont susceptibles dutiliser plusieurs connexions simultanment, TCP fournit la possibilit de les identier par un numro unique sur la machine, compris entre 0 et 65535. Chaque numro identie ce quon appelle un port TCP. Quand un processus dsire tablir une connexion avec un autre, il utilise un de ses ports et essaie de se connecter sur le port du deuxime processus. Il faut bien comprendre que les deux numros de ports utiliss ne sont a priori pas les mmes pour les deux processus. videmment, il est ncessaire que les processus clients connaissent les numros de port des processus serveurs auxquels ils se connectent. Les numros de ports sont donc affects des services bien dnis, et les serveurs qui fournissent ces services doivent bien entendu utiliser ces numros de ports. Ainsi, il est possible de dterminer de manire unique un programme serveur sur un rseau avec ladresse IP de la machine sur laquelle il fonctionne et le numro de port quil coute pour les connexions extrieures. Les clients qui se connectent savent donc parfaitement quel service ils accdent lorsquils choisissent le numro de port destination. Leur propre numro de port est en gnral choisi par le systme, an dviter tout conit avec un autre processus de la mme machine. Figure 9-6. Connexions TCP

Une fois tablie, une connexion TCP permet deffectuer des communications bidirectionnelles. Cela signie que le client et le serveur peuvent tous deux utiliser cette connexion pour envoyer des donnes lautre. Le client envoie ses donnes sur le port destination du serveur, et le serveur peut renvoyer les rsultats au client en utilisant le port de celui-ci. Les paquets TCP disposent donc toujours dun port source (cest--dire le port TCP de lmetteur), et dun port destination (le port du rcepteur). Ainsi, le rcepteur peut renvoyer sa rponse en utilisant le port source comme port de destination du paquet renvoy, et inversement. Comme il la dj t dit, le protocole TCP sassure que les informations transmises arrivent bon port (cest le cas de le dire !). Pour cela, il utilise un mcanisme daccuss rception, qui indiquent

228

Chapitre 9. Conguration du rseau lmetteur si le destinataire a bien reu chaque paquet envoy. Si laccus rception nest pas reu dans un temps x, le paquet est r-mis. Un paquet reu en double cause dun retard dans la communication de laccus rception est tout simplement ignor. La abilit des informations est galement assure. Cette abilit est ralise par un mcanisme de sommes de contrle. Si le rcepteur constate que la somme de contrle des donnes reues nest pas celle que lmetteur a calcul, il rejette le paquet parce quil sait que les informations ont t corrompues pendant la transmission. Enn, TCP sassure que les informations mises en plusieurs passes sont bien reues dans leur ordre dmission. Cette rorganisation se fait grce une numrotation des paquets (cette numrotation sert galement dtecter les paquets reus en double). Elle peut paratre inutile, mais la vitesse darrive des paquets est hautement dpendante de la route IP quils prennent pour parvenir destination. Les paquets qui arrivent en avance sont donc mmoriss jusqu ce que tous les paquets qui les prcdent soient reus.

9.1.4. Les protocoles de haut niveau


TCP fournit donc les fonctionnalits requises pour la plupart des services rseau existant. Il est logique que ceux-ci sappuient sur lui pour effectuer leur travail. Cependant, il ne se charge que de communiquer les informations, rien de plus. Des protocoles de plus haut niveau ont donc t crs. Leur valeur ajoute provient souvent du formatage et de la structuration des ux de donnes changs. La plupart des services rseau dnissent donc un protocole qui leur est propre. Il est dailleurs assez courant de confondre le service et le protocole, tellement ils sont intrinsquement lis. Ainsi, le service FTP utilise le protocole FTP ( File Transfer Protocol , protocole de transfert de chiers), les serveurs Internet utilisent essentiellement le protocole HTTP ( Hyper Text Transfer Protocol , protocole de transfert dhypertexte), le service de courrier lectronique utilise les protocoles POP ( Post Ofce Protocol ) pour la rception des courriers et SMTP ( Simple Mail Transfer Protocol ) pour leur envoi. Cette liste de protocoles nest pas exhaustive, et de nouveaux services apparaissent rgulirement. Les protocoles de haut niveau ne seront donc pas dcrits dans ce document. Les protocoles de haut niveau transmettent, en gnral, toutes leurs donnes en clair sur le rseau. Cela comprend non seulement les donnes applicatives, mais galement les noms dutilisateurs et les mots de passe. Toute personne ayant physiquement accs au rseau ou une machine par laquelle les paquets passent peut donc, sil le dsire, rcuprer tous les mots de passe avec une simplicit extrme (il existe mme des programmes spcialiss pour cela). Il est donc inconcevable dutiliser tous ces protocoles sans prendre de prcautions particulires. Heureusement, il est possible dencapsuler les protocoles dans un rseau virtuel qui, lui, transmet les donnes sous forme crypte. Loutil le plus utilis de nos jours est ssh (abrviation de langlais Secure SHell ), qui permet de se connecter sur une machine et de travailler distance en toute scurit. Il en existe plusieurs implmentations, dont au moins une libre : OpenSSH. Nous verrons comment congurer et utiliser OpenSSH pour amliorer la scurit du rseau dans la Section 9.2.8.4.

9.2. Conguration du rseau sous Linux


La conguration du rseau ncessite donc la conguration du protocole IP et des services TCP, UDP et ICMP (entre autres). Cette opration se fait en dnissant ladresse IP le masque de sous-rseau et les routes utiliser. Vient ensuite la conguration du nom de la machine locale, de son domaine, des noms de machines quelle peut rsoudre elle-mme et des serveurs de DNS quelle doit utiliser pour les autres noms. Il est quasiment certain que votre distribution dispose dun outil permettant deffectuer la conguration du rseau simplement. Connaissant prsent la signication des termes utiliss dans les r-

229

Chapitre 9. Conguration du rseau seaux TCP/IP, vous devriez pouvoir parvenir une conguration valide relativement simplement. Il est fortement recommand de consulter la documentation de votre distribution. Les commandes de conguration du rseau sont souvent appeles dans les scripts de dmarrage de la machine, ou dans les scripts de changement de niveau dexcution. Toutefois, il peut tre utile de connatre ces commandes, ne serait-ce que pour comprendre comment votre systme fonctionne. Cette section a donc pour but de vous prsenter ces commandes, ainsi que les principaux chiers de conguration du rseau utiliss sous Linux.

9.2.1. Conguration statique des interfaces rseau


La principale commande permettant de congurer le rseau est la commande ifcong. Comme son nom lindique ( InterFace CONFiguration ), elle permet de congurer les interfaces rseau de la machine. Il faut savoir quil existe plusieurs types dinterfaces rseau. Les plus courants sont les trois types dinterfaces suivants :

linterface loopback, qui reprsente le rseau virtuel de la machine, et qui permet aux applications rseau dune mme machine de communiquer entre elles mme si lon ne dispose pas de carte rseau ; les interfaces des cartes rseau (que ce soient des cartes Ethernet, TokenRing ou autres) ; les interfaces ppp, plip ou slip, qui sont des interfaces permettant dutiliser les connexions srielles, parallles ou tlphoniques comme des rseaux.

La conguration dune interface comprend linitialisation des pilotes ncessaires son fonctionnement et laffectation dune adresse IP cette interface. La syntaxe gnrale que vous devrez utiliser est la suivante :
ifconfig interface adresse netmask masque up

o interface est le nom de linterface rseau que vous voulez congurer, adresse est ladresse IP que cette interface grera, et masque est le masque de sous-rseau que vous utilisez. Les interfaces que vous aurez congurer seront certainement des interfaces Ethernet, auquel cas vous devrez utiliser les noms eth0, eth1, etc. dans la commande ifcong. Si vous dsirez congurer linterface loopback, vous devrez utiliser le nom dinterface lo. Le paramtre up donn ifcong lui indique que linterface doit tre active. Cela signie que ds que la commande ifcong sachvera, votre interface rseau sera active et fonctionnelle. On ne peut faire plus simple... Bien entendu, il existe le paramtre inverse : down. Ce paramtre sutilise tout simplement dans la commande ifcong avec la syntaxe suivante :
ifconfig interface down

o interface est toujours le nom de linterface. Un exemple de conguration trs classique est le suivant :
ifconfig eth0 192.168.0.1 netmask 255.255.255.0 up

Note : Prenez bien garde, lorsque vous crivez vos adresses IP, ne pas rajouter de 0 supplmentaire devant les nombres qui la constituent. En effet, il existe une convention en informatique qui dit que les nombres prxs dun 0 sont cods en octal, cest--dire en base 8. Il va de soi

230

Chapitre 9. Conguration du rseau


quune adresse IP code en octal nutilise pas les mmes nombres que lorsquelle est exprime en dcimal, aussi prouveriez-vous quelques difcults pour diagnostiquer le non fonctionnement de votre rseau si vous faisiez cette erreur !

Le noyau utilisera par dfaut le nombre 255 pour les adresses de broadcast dans les composantes de ladresse IP qui ne fait pas partie de ladresse de sous-rseau. Si vous dsirez utiliser une autre adresse (en gnral, lalternative est de prendre ladresse du sous-rseau), vous devrez utiliser loption broadcast adresse dans la commande ifcong. Cependant, le comportement par dfaut convient la plupart des rseaux. La commande de conguration donne en exemple ci-dessus sera alors :
ifconfig eth0 192.168.0.1 netmask 255.255.255.0 broadcast 192.168.0.0 up

Enn, il est possible daffecter plusieurs adresses IP certaines interfaces rseau. Cest en particulier le cas pour toutes les interfaces rseau classiques, mais bien entendu cela nest pas ralisable avec les interfaces de type point point comme les interfaces des connexions ppp. Lorsquune interface dispose de plusieurs adresses, la premire est considre comme ladresse principale de linterface, et les suivantes comme des alias. Ces alias utilisent comme nom le nom de linterface rseau principale et le numro de lalias, spars par deux points (caractre :). Par exemple, si linterface eth0 dispose dun alias, celui-ci sera nomm eth0:0. Ainsi, pour xer ladresse dun alias dune interface rseau, on utilisera la syntaxe suivante :
ifconfig interface:numro add adresse netmask masque

o interface est toujours le nom de linterface, numro est le numro de lalias, adresse est ladresse IP attribuer cet alias, et masque est le masque de sous-rseau de cette adresse. La commande ifcong est en gnral appele dans les scripts dinitialisation du systme, qui ont t gnrs par lutilitaire de conguration rseau de votre distribution. Si vous effectuez un grep sur ifcong dans le rpertoire /etc/rc.d/ (ou /sbin/init.d/, selon votre distribution), vous trouverez la commande de dmarrage du rseau. Il se peut quune variable denvironnement soit utilise la place de ladresse IP que vous avez choisie. Quoi quil en soit, vous devez sans aucun doute avoir les lignes suivantes, qui permettent linitialisation de linterface loopback :
ifconfig lo 127.0.0.1 netmask 255.0.0.0 up

9.2.2. Dnition des rgles de routage


La deuxime tape dans la conguration du rseau est la dnition des rgles de routage. Il est possible de dnir plusieurs rgles de routage actives simultanment. Lensemble de ces rgles constitue ce quon appelle la table de routage. La rgle utilise est slectionne par le noyau en fonction de ladresse destination du paquet router. Chaque rgle indique donc un critre de slection sur les adresses, et linterface vers laquelle doivent tre transfrs les paquets dont ladresse destination vrie cette rgle. La commande utilise pour dnir une route est, chose surprenante, la commande systme route. Sa syntaxe est donne ci-dessous :
route opration [-net | -host] adresse netmask masque interface

231

Chapitre 9. Conguration du rseau o opration est lopration effectuer sur la table de routage. Lopration la plus courante est simplement lajout dune rgle de routage, auquel cas add doit tre utilis. Loption suivante permet dindiquer si le critre de slection des paquets se fait sur ladresse du rseau destination ou plus restrictivement sur ladresse de la machine destination. En gnral, il est courant dutiliser la slection de toutes les adresses dun mme rseau et de les router vers une mme interface. Dans tous les cas, adresse est ladresse IP de la destination, que celle-ci soit un rseau ou une machine. Si la destination est un rseau, il faut indiquer le masque de sous-rseau masque laide de loption netmask. Enn, interface est linterface rseau vers laquelle doivent tre envoys les paquets qui vrient les critres de slection de cette rgle. Par exemple, la rgle de routage utiliser pour linterface loopback est la suivante :
route add -net 127.0.0.0 netmask 255.0.0.0 lo

Cette rgle signie que tous les paquets dont ladresse de destination appartient au sous-rseau de classe A 127.0.0.0 doivent tre transfrs vers linterface loopback. Cela implique en particulier que les paquets destination de la machine dadresse IP 127.0.0.1 (cest--dire la machine locale) seront envoys vers linterface loopback (ils reviendront donc sur la machine locale). Une autre rgle de routage classique est la suivante :
route add -net 192.168.0.0 netmask 255.255.255.0 eth0

Elle permet denvoyer tous les paquets destination du rseau de classe C 192.168.0.0 vers la premire interface Ethernet. Cest typiquement ce genre de rgle quil faut utiliser pour faire fonctionner un rseau local. Il nest normalement pas ncessaire dajouter les rgles de routage pour les rseaux auxquel la machine est connecte. En effet, la conguration dune carte rseau laide de la commande ifcong ajoute automatiquement la table de routage une rgle pour envoyer les paquets destination de ce rseau par linterface rseau qui y est connecte. Cependant, la commande route devient rellement ncessaire lorsquil faut dnir les passerelles utiliser pour lenvoi des paquets destins une machine laquelle la machine locale ne peut accder directement. Les rgles de routage faisant intervenir une passerelle sont semblables aux rgles de routage vues ci-dessus, ceci prs que ladresse IP de la passerelle utiliser doit tre fournie. Pour cela, on utilise loption gw (abrviation de langlais Gateway ). La syntaxe utilise est donc la suivante :
route add [-net | -host] adresse netmask masque gw passerelle interface

o passerelle est ladresse IP de la passerelle utiliser pour router les paquets qui vrient les critres de cette rgle. Les autres paramtres sont les mmes que pour les rgles de routage classique. Par exemple, supposons quune machine soit connecte un rseau dadresse 192.168.0.0, et que sur ce rseau se trouve une passerelle dadresse 192.168.0.1 permettant datteindre un autre rseau, dont ladresse est 192.168.1.0. Une machine du rseau 192.168.0.0 aura typiquement les rgles de routage suivantes :
route add -net 192.168.0.0 netmask 255.255.255.0 eth0 route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.0.1 eth0

232

Chapitre 9. Conguration du rseau La premire rgle permet, comme on la dj vu, de communiquer avec toutes les machines du rseau local. La deuxime rgle permet denvoyer la passerelle 192.168.0.1 tous les paquets destination du rseau 192.168.1.0. Inversement, si la passerelle utilise ladresse 192.168.1.15 sur le rseau 192.168.1.0, les machines de ce rseau qui voudront accder au rseau 192.168.0.0 devront spcier la rgle de routage suivante :
route add -net 192.168.0.0 netmask 255.255.255.0 gw 192.168.1.15 eth0

Bien entendu, il est ncessaire que toutes les machines des deux rseaux utilisent ces rgles de routage pour que la communication entre les deux rseaux se fasse dans les deux sens. Le problme de ces rgles de routage est quelles spcient ladresse du rseau destination. Il est videment hors de question dutiliser une rgle de routage diffrente pour toutes les adresses de rseaux possibles. Il est donc possible de dnir ce quon appelle une passerelle par dfaut, qui nest rien dautre que la passerelle vers laquelle doivent tre envoys tous les paquets qui nont pas vri les critres des autres rgle de routage. La syntaxe utiliser pour dnir la passerelle par dfaut est plus simple, puisquil nest plus ncessaire de prciser les critres de slection :
route add default gw passerelle interface

o la signication des paramtres passerelle et interface est inchange. Ainsi, pour reprendre lexemple prcdent, supposons que la machine 192.168.0.47 dispose dune connexion Internet et soit congure pour partager cette connexion avec les machines du rseau local. Pour que toutes les machines du rseau local puisse proter de cette connexion, il suft de demander ce que tous les paquets qui ne vrient aucune autre rgle de routage soient envoys la passerelle 192.168.0.47. Cela se fait avec la rgle de routage suivante :
route add default gw 192.168.0.47 eth0

9.2.3. Dnition du nom de la machine


La conguration du nom dun ordinateur nest pas proprement parler une opration indispensable, mais elle permet de le nommer de manire plus conviviale quen utilisant son adresse IP. La commande de base permettant de manipuler le nom de la machine locale est la commande hostname. Appele telle quelle, elle renvoie le nom actuel de la machine :
hostname

Cette commande permet galement de modier ce nom, simplement avec la syntaxe suivante :
hostname nom

o nom est le nom utiliser. Il est dusage de nutiliser que le nom de la machine, sans son domaine. Le nom de domaine est dtermin automatiquement par le systme partir des informations issues de la conguration de la rsolution des noms de domaine. Nous verrons cela dans le paragraphe suivant. Cette commande est donc trs simple utiliser, et elle est en gnral appele dans les scripts de dmarrage du systme. La plupart des distributions utilisent le chier /etc/HOSTNAME pour stocker

233

Chapitre 9. Conguration du rseau le nom de la machine. Vous tes bien entendu libre de choisir le nom que vous voulez pour votre ordinateur, mais vous devez vous assurer que ce nom est unique dans votre domaine !

9.2.4. Rsolution des noms de domaine


La commande hostname ne permet de xer que le nom de la machine locale. Pour les autres machines du rseau, il faut mettre en place les mcanismes de rsolution de noms de domaine. Comme il la dj t indiqu au dbut de ce chapitre, il existe deux solutions pour trouver ladresse IP dune machine partir de son nom : la consultation dune liste de noms stocke en local, soit linterrogation dun serveur de noms de domaine. Le chier /etc/host.conf permet de dnir le comportement du systme lors de la rsolution dun nom. Sa structure est trs simple, puisquil y a une option de recherche par ligne. Dans la plupart des cas, les lignes suivantes sont sufsantes :
order hosts,bind multi on

Elles permettent dindiquer que la recherche des noms pour leur rsolution doit se faire dabord localement, puis par appel aux DNS si la recherche prcdente a chou. Cest en gnral le comportement dsir. La deuxime ligne permet de faire en sorte que toutes les adresses correspondant une machine soient renvoyes. Si lon avait utilis loption multi off, seule la premire adresse IP trouve aurait t renvoye. La liste de noms locale est stocke dans le chier /etc/hosts (cela explique le nom hosts utilis pour loption order dans le chier /etc/host.conf). Votre ordinateur connatra directement ladresse IP de toutes les machines rfrences dans ce chier. Il est bon de placer ici une entre pour les ordinateurs les plus couramment utiliss sur le rseau. Chaque entre commence par une adresse IP, et est suivie de la liste des noms de la machine possdant cette adresse, spars par des espaces. Pour ceux qui ne disposent pas de rseau local, ce chier doit tre relativement simple : seule la ligne affectant ladresse 127.0.0.1 la machine locale (appele localhost ) doit sy trouver.
127.0.0.1 localhost

De la mme manire, le chier /etc/networks contient les adresses des rseaux. Ce chier est utilis par la commande route pour donner un nom aux diffrents rseaux. Chaque entre est constitue du nom du rseau, suivi de son adresse IP. Encore une fois, ce chier se rduit sa plus simple expression pour ceux qui nont pas de rseau local, puisquil ne contiendra tout au plus quune entre pour le rseau loopback , sur lequel se trouve ladresse de retour 127.0.0.1. Cette entre aura donc la forme suivante :
loopback 127.0.0.0

La conguration des serveurs de noms est en revanche une opration ncessaire si lon dsire accder des machines dont on ne connat que le nom. Le chier de conguration utilis est cette fois le chier /etc/resolv.conf. Sa structure est encore une fois trs simple, avec une option par ligne, chaque option tant introduite par un mot cl.

234

Chapitre 9. Conguration du rseau Le mot cl domain permet dindiquer le nom du domaine dont fait partie votre machine. Par exemple, si votre nom de domaine est andromede.galaxie , vous devrez utiliser la ligne suivante :
domain andromede.galaxie

Le mot cl search permet quant lui de spcier une liste de noms de domaines ajouter par dfaut aux noms de machines non compltement qualis. Les lments de cette liste doivent tre spars par des espaces. La recherche dune machine dont le nom ne comprend pas la partie de nom de domaine seffectue en ajoutant au nom de la machine les noms des domaines indiqus ici, jusqu ce que la rsolution du nom en adresse IP russisse. Cette recherche commence bien entendu par le nom de domaine local, sil a t dni. Il est donc recommand dindiquer votre nom de domaine dans cette liste de noms de domaines. Par exemple, si votre machine fait partie du domaine andromede.galaxie , vous devrez utiliser la ligne suivante :
search andromede.galaxie

Ainsi, si vous recherchez ladresse de la machine krypton , la requte au DNS se fera avec le nom compltement quali krypton.andromede.galaxie . Vous tes bien entendu libre dajouter dautres noms de domaines pour le cas o la rsolution de nom chouerait sur ce domaine. Enn, loption nameserver est essentielle, puisquelle permet de donner les adresses IP des serveurs de DNS auxquels doivent tre adresses les requtes de rsolution de noms. Par exemple, si vous disposez de deux serveurs DNS, un primaire, dadresse 192.168.0.10, et un secondaire, dadresse 192.168.0.15, vous utiliserez la ligne suivante :
nameserver 192.168.0.10 192.168.0.15

Cette ligne est videmment obligatoire, faute de quoi la rsolution des noms de machines en adresse IP chouera pour toute machine qui ne se trouve pas dans votre chier /etc/hosts.

9.2.5. Utilisation des protocoles DHCP et BOOTP


Gnralement, la gestion des adresses IP des machines devient rapidement une tche difcile sur les grands rseaux, pour trois raisons. Premirement, il faut toujours sassurer que chaque machine dispose bien dune adresse qui lui est propre, ce qui peut tre difcile si lon ne sorganise pas en consquence. Deuximement, il faut que les chiers /etc/hosts de toutes les machines soient jour, ce qui ncessite un travail proportionnel au nombre de machines administres. Enn, le nombre dadresses IP disponibles peut se rduire, ce qui peut devenir gnant terme. An de rsoudre ces problmes de conguration rseau, le protocole DHCP (abrviation de langlais Dynamic Host Conguration Protocol ) a t dni. Il sagit dun protocole qui permet aux machines connectes sur un rseau dinterroger un serveur dadresses du rseau capable de grer une liste dadresses et de les affecter dynamiquement aux machines du rseau. En fait, ce protocole permet de fournir plus dinformations que les simples adresses IP, comme par exemple la route par dfaut que les machines doivent utiliser, ainsi que les adresses des serveurs de noms du rseau. Un autre protocole semblable DHCP a galement t dvelopp dans le but de permettre la conguration rseau des machines ds leur dmarrage : le protocole BOOTP (abrviation de langlais

235

Chapitre 9. Conguration du rseau BOOTstrap Protocol ). Ce protocole est videmment plus lger que DHCP, mais permet aux machines dobtenir dynamiquement leur conguration rseau ds leur dmarrage, avant mme que ne soient monts les systmes de chiers. Ce protocole est donc particulirement utile pour faire dmarrer des machines sans disque, pour lesquelles le systme de chiers racine est mont en NFS. La manire la plus simple de congurer les protocoles DHCP et BOOTP sur un poste client est dutiliser les fonctionnalits dauto-conguration du noyau. Cependant, il est galement possible deffectuer cette conguration au niveau utilisateur laide de programmes complmentaires. Les deux sections suivantes dcrivent ces deux techniques.

9.2.5.1. Autoconguration des clients DHCP et BOOTP


La conguration des protocoles DHCP et BOOTP ne comporte aucune difcult particulire lorsque lon utilise les fonctionnalits dautoconguration du noyau. Ces fonctionnalits tant prises en charge au niveau du noyau, il va vous falloir recompiler un nouveau noyau pour en bncier. Cette opration en revanche est relativement technique, et doit tre faite avec soin. La manire de procder a t dcrite en dtail dans la Section 7.3. Loption activer pour permettre lutilisation du protocole BOOTP est loption IP: kernel level autoconfiguration du menu Networking options . Cette option vous permettra de slectionner le protocole dauto-conguration rseau que le noyau devra utiliser lors de son amorage. Vous devrez alors choisir loption IP: DHCP support (NEW) ou loption IP: BOOTP support (NEW) pour activer respectivement les protocoles DHCP et BOOTP.
Note : Vous remarquerez quil existe galement un autre protocole dauto-conguration du rseau au dmarrage : le protocole RARP . Ce protocole fournit les mmes services que le protocole BOOTP, mais est plus ancien. Il nest donc plus conseill de lutiliser, sauf vous vous trouvez sur un rseau pour lequel seul le protocole RARP est disponible.

Une fois ces options slectionnes, vous pourrez recompiler votre noyau, linstaller et redmarrer la machine. Lors du dmarrage, le noyau doit chercher un serveur DHCP ou un serveur BOOTP sur le rseau local pour effectuer la conguration rseau de votre carte rseau.
Note : Vous devrez peut-tre galement activer les options NFS file system support et Root file system on NFS du menu Network File Systems si vous dsirez faire dmarrer votre machine sur un systme de chiers racine mont en NFS lors du dmarrage.

9.2.5.2. Conguration dun client DHCP au niveau utilisateur


Il est galement possible de congurer les clients DHCP au niveau utilisateur, laide de programmes complmentaires. Comme sur la plupart des machines Unix, le programme utiliser est le programme dhclient. Ce programme est gnralement lanc dans les scripts de dmarrage des machines, et envoie des paquets de demande de conguration sur le rseau ladresse de diffusion gnrale 255.255.255.255. Ces paquets sont donc susceptibles dtre captes par toutes les machines du rseau, mais seuls les serveurs DHCP y rpondent. Les rponses obtenues sont alors analyss par dhclient, qui congure en consquence linterface rseau et passe ensuite en arrire-plan. Les informations envoyes par les serveurs DHCP peuvent tre plus ou moins compltes, la base tant bien sr ladresse IP de la machine et son masque de sous-rseau. Il est toutefois possible de donner

236

Chapitre 9. Conguration du rseau plus dinformations, comme par exemple les adresses des serveurs de noms, des routes par dfaut et des passerelles utiliser. Les adresses IP attribues aux clients ne sont pas permanentes, car le protocole DHCP est avant tout destin la conguration automatique des postes itinrants ou susceptibles de redmarrer souvent. Par consquent, ces adresses sont fournies dans le cadre dun bail, dont la dure maximum est xe par le serveur. Ds que le bail obtenu par un client expire, celui-ci doit chercher le renouveler. Cest encore le programme dhclient qui sen charge. Cest la raison pour laquelle celui-ci passe en arrire-plan aprs avoir congur linterface pour la premire fois : il attend la n des baux de la machine sur laquelle il tourne et cherche les renouveler. Si un client ne renouvelle pas ce bail (parce quil est arrt par exemple), le serveur DHCP peut rutiliser son adresse IP et laffecter une autre machine. Bien que les serveurs DHCP sefforcent gnralement de conserver les adresses IP des clients chaque bail, un client congur par DHCP ne peut donc pas considrer que son adresse IP restera toujours la mme. Cest la contrepartie de la exibilit. Si aucun serveur DHCP ne peut tre contact lors du dmarrage, dhclient abandonne temporairement et ressaie au bout dun temps alatoire. Au bout dun certain nombre dessais non fructueux, il peut dcider de congurer les interfaces rseau avec les adresses IP des anciens baux obtenus par la machine. Pour cela, il mmorise dans le chier de conguration /var/db/dhclient.lease les adresses IP de ces anciens baux. Ce chier est priodiquement rcrit avec la liste des adresses des baux valides an dviter quil ne se remplisse ad vitam eternam. Bien entendu, les postes clients ne peuvent pas choisir leurs adresses IP sans vrication dunicit. Dans le cas de labsence de serveur DHCP (et donc dautorit centrale), les clients qui dmarrent interrogent les machines dj prsentes sur le rseau pour dterminer si ladresse quils envisagent de prendre est bien libre. Dans le cas contraire, une autre adresse est essaye, et ainsi de suite. Ainsi, mme en cas de panne de tous les serveurs DHCP dun rseau, les postes clients peuvent toujours travailler ensemble sans conit dadresses IP. Comme vous pouvez le constater, le comportement de dhclient est relativement complexe et dpend de nombre de paramtres. Tous ces paramtres peuvent tre dnis dans le chier de conguration /etc/dhclient.conf. Ce chier contient en particulier les diffrentes dures intervenant dans le choix des adresses IP, comme par exemple la dure minimale dun bail, les dures entre chaque tentatives de conguration, les informations qui doivent tre rcupres des serveurs DHCP, ainsi que les valeurs par dfaut pour ces informations lorsque les serveurs ne les fournissent pas. Le chier de conguration dhclient.conf est donc relativement complexe. Heureusement, dhclient utilise des options par dfaut qui conviennent dans la plupart des cas, aussi est-il fortement probable que votre chier dhclient.conf soit vide. Si toutefois vous dsirez en savoir plus, vous pouvez consulter la page de manuel dhclient.conf. La conguration DHCP pour les postes clients se rduit donc lessentiel : le lancement de dhclient. Celui-ci sutilise avec la syntaxe suivante :
dhclient interface0 [interface1 [...]]

o interface0, interface1, etc., sont les interfaces rseau qui doivent tre congures par DHCP. On ne peut donc pas faire plus simple...
Note : Sous Linux, le programme dhclient utilise les fonctionnalit daccs direct aux cartes rseau et de ltrage des paquets. Ces deux fonctionnalits peuvent tre actives dans la conguration du noyau laide des options Packet socket , Packet socket: mmapped IO et Socket Filtering du menu Networking options . Loption IP: multicasting de la liste des options du protocole IP devra galement tre active. Le dtail de la conguration et de la compilation du noyau a t vu dans la Section 7.3.

237

Chapitre 9. Conguration du rseau

9.2.6. Dnition des protocoles de haut niveau


Comme nous lavons vu plus haut, le protocole IP fournit les mcanismes de base pour la transmission des paquets. Plusieurs protocoles de plus haut niveau ont t dnis pour fournir des services valeur ajoute, qui satisfont donc plus aux besoins des applications. Tous ces protocoles sont encapsuls dans le protocole IP, ce qui signie que leurs informations sont transmises en tant que donnes dans les paquets IP. En ralit, les paquets du protocole IP contiennent un champ permettant de signaler le type de protocole de haut niveau dont ils transportent les informations. chaque protocole est donc attribu un identicateur numrique qui lui est propre, et qui permet aux services rseau dinterprter les donnes des paquets. Tout comme les adresses IP, ces numros identiant les protocoles ne sont pas trs intressants pour les humains, qui leur prfre videmment le nom du protocole. Certains programmes rseau utilisent donc ces noms pour identier les protocoles. Pour leur permettre de faire lassociation entre ces noms et les identicateurs numriques, le chier /etc/protocols est utilis. Le format de ce chier est trs simple. Il contient une ligne pour chaque protocole, constitue du nom du protocole, de la valeur de son identicateur, et des autres noms que ce protocole peut avoir (cest--dire ses alias). Parmi ces protocoles, les plus importants sont les suivants : Nom ip icmp tcp udp 0 1 6 17 Numro IP ICMP TCP UDP Alias

Comme on le voit, le protocole IP dispose lui-mme dun identicateur de protocole (qui vaut 0 en loccurrence). Cet identicateur est un identicateur de pseudo protocole , parce quIP est en fait le protocole de base. ICMP est identi par le numro 1, TCP par le numro 6 et UDP par le numro 27. Il existe beaucoup dautres protocoles, qui ne seront pas dcrits ici. Bien entendu, le chier /etc/protocols fourni avec votre distribution doit dj contenir la dnition de la plupart des protocoles. De la mme manire, la plupart des ports TCP et UDP sont affects des services bien dnis, et certains programmes rseau peuvent chercher faire la correspondance entre les noms de ces services et les numros de ports. Cette correspondance est stocke dans le chier de conguration /etc/services. Les informations concernant les services sont donnes raison dune ligne par service. Chaque ligne suit la syntaxe suivante :
nom port/protocole alias

o nom est le nom du service dcrit par cette ligne, port est le numro du port utilis par ce service, protocole est le nom du protocole utilis par ce service (ce peut tre tcp ou udp ), et alias la liste des autres noms sous lesquels ce service est galement connu. Vous trouverez les principaux services dans lextrait donn ci-dessous : Service ftp Port/Protocole 21/tcp

238

Chapitre 9. Conguration du rseau Service telnet smtp pop3 irc irc Port/Protocole 23/tcp 25/tcp 110/tcp 194/tcp 194/udp

Comme vous pouvez le constater, ces services nont pas dalias. Ces informations sont donnes uniquement titre dexemple. Il va de soi que le chier /etc/services fourni avec votre distribution contient la dnition dun grand nombre de services, et vous naurez en gnral pas y toucher.

9.2.7. Les super-dmons inetd et xinetd


La plupart des services rseau sont grs par des programmes qui sexcutent en permanence et qui attendent des connexions sur un port TCP ou UDP. Ces programmes consomment relativement peu de ressources car ils passent la plupart de leur temps attendre ces connexions. Ils ne se rveillent que lorsquun client se connecte effectivement et leur envoie une requte. Cependant, ils peuvent tre relativement nombreux, et si tous les services sont lancs simultanment, ils peuvent nir par consommer une part non ngligeable des ressources systme. Cest pour cette raison que les super-dmons inetd (de langlais InterNET Daemon ) et xinetd (de langlais eXtended INETD ) ont t crs. Ces dmons sont lcoute des demandes de connexion des clients pour les autres services rseau, et ne lancent ceux-ci que lorsquun client se connecte sur leurs ports. Une fois lancs, les vritables dmons reprennent la main et communiquent directement avec leurs clients. Ainsi, inetd et xinetd coutent les ports pour tout le monde, et sont la plupart du temps les seuls fonctionner. Les ressources systme sont donc conomises et les services rseau sont dmarrs et arrts la demande. Le super-dmon xinetd est appel remplacer inetd, qui lui est beaucoup plus ancien et nettement moins souple. En pratique, un seul de ces super-dmons doit tre dmarr sur une machine (il est inutile de les lancer tous les deux, car les clients ne peuvent se connecter qu un seul dentre-eux de toutes manires). Les deux sections suivantes dcrivent la conguration de ces super-dmons.

9.2.7.1. Le super-dmon inetd


Le super-dmon inetd laisse de plus en plus la main au nouveau super-dmon xinetd qui est beaucoup plus puissant, mais reste toutefois trs utilis sur de nombreuses machines. Sa description nest donc pas inutile, car toutes les distributions nutilisent pas encore xinetd. Le super-dmon inetd utilise le chier de conguration /etc/inetd.conf pour dterminer les ports sur lesquels il doit attendre des connexions de la part des clients, et pour trouver le service rseau quil doit lancer lorsquune telle connexion arrive. Ce chier est structur en lignes, dont chacune dcrit un des services que le dmon inetd prend en charge. Les informations donnes sur ces lignes sont les suivantes :

le nom du service (tel quil est dni dans la premire colonne du chier /etc/services) dont inetd doit surveiller les requtes ; le type de canal de communication rseau utilis, en gnral stream (pour les communications en mode connect, donc en gnral celles qui utilisent le protocole TCP) ou dgram (pour les

239

Chapitre 9. Conguration du rseau communications bases sur les datagrammes, donc typiquement les communications utilisant le protocole UDP) ;

le protocole rseau utilis ( tcp ou udp ) par ce service ; lun des mots cls wait ou nowait, qui permettent dindiquer si inetd doit attendre la n de lexcution du dmon grant le service ou sil peut attendre de nouvelles requtes de la part des clients ; le nom de lutilisateur au nom duquel le dmon grant ce service doit fonctionner (en gnral, cest lutilisateur root) ; le chemin sur le chier excutable de ce dmon ; les ventuels paramtres en ligne de commande pour ce dmon, en commenant par largument 0, qui doit toujours tre le nom du chier excutable du programme lui-mme.

Par exemple, la ligne suivante permet de lancer le dmon telnetd sur toute requte via le protocole TCP pour le service telnet :
telnet stream tcp nowait root /usr/sbin/in.telnetd in.telnetd

Il est suppos ici que le dmon en charge de ce service peut tre lanc avec le programme /usr/sbin/in.telnetd. Le dmon inetd est capable de fournir lui-mme un certain nombre de services de base, et il nest pas ncessaire de fournir un dmon pour ces services. Dans ce cas, il faut utiliser le mot cl internal la place du nom du chier excutable du dmon de ce service. Les paramtres doivent galement tre remplacs par le mot cl internal. En fait, il est fort peu probable que votre chier de conguration /etc/inetd.conf dnisse les services comme indiqu dans cette section. En effet, un programme intermdiaire en charge dassurer des contrles de scurit est souvent intercal entre inetd et les dmons grant les services. Nous verrons ce que fait exactement ce programme dans une prochaine section.

9.2.7.2. Le super-dmon xinetd


Le super-dmon xinetd utilise un autre chier de conguration que celui du super-dmon inetd. Pour xinetd, la dnition des services mis disposition des clients se fait dans le chier de conguration /etc/xinetd.conf. Toutefois, contrairement au chier inetd.conf, le chier xinetd.conf peut inclure dautres chiers de conguration et rfrencer des rpertoires contenant les chiers de conguration spciques aux services. Ainsi, la conguration des services est beaucoup plus modulaire et se fait plus facilement. En pratique, il est dusage de dnir les options par dfaut pour tous les services dans le chier de conguration /etc/xinetd.conf, et de dcrire les diffrents services dans des chiers complmentaires stocks dans le rpertoire /etc/xinetd.d/. Ce rpertoire est alors inclus directement dans le chier xinetd.conf laide de la directive includedir ddie cet usage. Les chiers de conguration de xinetd sont constitus de sections permettant de dcrire les services pris en charge, ou tout simplement les options par dfaut applicables tous les services. La forme gnrale de ces sections est la suivante :
service {

240

Chapitre 9. Conguration du rseau


option oprateur valeur [valeur [...]] option oprateur valeur [valeur [...]] ... }

o service est le nom du service (ou defaults pour les options par dfaut), option est un mot-cl identiant une des options de ce service, et oprateur est lun des oprateurs = (pour la dnition de la valeur dune option ou lcrasement de sa valeur prcdente), += (pour complter la liste de valeurs dune option) ou -= (pour supprimer une valeur de la liste de valeurs dune option). Les valeurs des options peuvent tre multiples, et leur nature dpend des options utilises. Les principales options utilisables dans ces sections sont les suivantes : Option
id

Signication Identicateur du service, pour le cas o plusieurs sections devraient tre dnies pour un mme service. Cette possibilit est utilise lorsque lon dsire fournir des options diffrentes pour un mme service. Lentre choisie (et donc le jeu doptions choisi) dpend dans ce cas de critres dnis par exemple sur linterface rseau ou sur les adresses des clients. Permet dindiquer la nature du service dcrit par cette section. Gnralement, cette option na pas tre donne, sauf lorsque lon veut forcer la mthode dimplmentation dun service. Par exemple, il est possible de donner la valeur INTERNAL cette option pour utiliser lun des services implments par xinetd en interne. Permet de donner le chemin sur lexcutable du dmon prenant en charge le service dcrit. Permet de donner les paramtres en ligne de commande du dmon prenant en charge le service. Notez que, contrairement ce qui se fait avec inetd, il ne faut gnralement pas donner le nom de lexcutable en premier argument dans cette option. Cette rgle peut toutefois tre rendue fausse en ajoutant la valeur NAMEINARGS dans loption flags dcrite ci-dessous. Le type de canal de communication utilis ( stream ou dgram , comme pour inetd). Le protocole rseau utilis par le service ( tcp ou udp , comme pour inetd). Le port sur lequel le service peut tre trouv. Cette option est facultative. Si elle nest pas indique, le numro de port utilis sera celui indiqu dans le chier de conguration /etc/services pour le service en cours de conguration. Lindicateur de capacit du dmon grer plusieurs connexions simultanment. Les valeurs que lon peut donner cette option sont yes et no , respectivement pour indiquer que le dmon peut grer plusieurs connexions simultanment ou non. Dans ce dernier cas, le dmon xinetd lancera plusieurs instances du dmon grant le service si plusieurs clients cherchent se connecter simultanment. Le nombre maximum dinstance peut toutefois tre contrl laide des options instances et per_source dcrites ci-dessous.

type

server server_args

socket_type protocol port

wait

241

Chapitre 9. Conguration du rseau Option


flags

Signication Les paramtres permettant de contrler diffrents aspects du service. Les options les plus courantes sont IDONLY , qui permet de nautoriser que les connexions provenant de machines disposant dun serveur didentication des clients, NORETRY , qui permet dviter de ressayer de lancer le dmon du service si le lancement prcdent a chou, et NAMEINARGS, qui permet dindiquer que le nom de lexcutable doit tre spci en premier paramtre dans loption server_args. Le compte utilisateur dans lequel le dmon prenant en charge le service doit tre lanc. Cette option ne peut bien entendu pas tre utilise pour les services grs en interne par xinetd. Linterface laquelle le service est attach. Cette option permet de dnir plusieurs congurations pour un mme service et daffecter ces diffrentes congurations des interfaces rseau distinctes. Pour lheure, seul ladresse IP de linterface rseau peut tre spcie grce cette option, ce qui impose davoir des adresses IP xes. La liste des adresses des machines autorises se connecter. Il est possible de spcier les adresses IP explicitement ou laide dune adresse et dun masque de sous-rseau. Les noms de domaines peuvent galement tre utiliss. Dans ce cas, le nom nest pas transform en adresse IP. Au contraire, cest ladresse du client qui est retransforme en nom de machine pour vrier sil a le droit de se connecter. Notez que labsence de ce champ indique que, par dfaut, laccs est accord toutes les machines (sauf celles explicitement interdites de connexion par loption no_access dcrite ci-dessous). En revanche, la prsence de ce champ mais sans valeur permet dinterdire laccs toutes les machines. La liste des adresses des machines qui nont pas le droit de se connecter. Les adresses peuvent tre spcies de la mme manire que pour loption only_from. Si une adresse vrie les critres des deux options only_from et no_access, cest loption dont le critre est le plus prcis qui est choisie. La priode pendant laquelle le service est accessible. Cette priode peut tre exprime sous la forme dune liste dintervalles heure:minute-heure:minute . Permet dindiquer le nombre maximum dinstances dun mme dmon que xinetd peut lancer. Cette option permet donc de spcier un nombre de connexions maximum pour chaque service. Permet dindiquer le nombre maximum dinstances dun mme dmon que xinetd peut lancer pour un mme client (identi par son adresse IP). Cette option permet donc de limiter le nombre de connexions dun client, de manire indpendante du nombre de connexions total donn par loption instances.

user

interface

only_from

no_access

access_times

instances

per_source

242

Chapitre 9. Conguration du rseau Option


cps

Signication Permet de limiter dans le temps le nombre de connexions entrantes pour un service, an dviter les attaques par dni de service. Cette option prend deux paramtres, le premier tant le nombre maximum de demandes de connexion par seconde que xinetd peut accepter. Si ce nombre est dpass le service est dsactiv pendant le nombre de secondes indiqu par le deuxime paramtre. Permet de dsactiver globalement des services, en indiquant leurs noms en paramtre. Par dfaut, aucun service nest dsactiv. Cette option ne peut tre utilise que dans la section defaults, car elle permet de dsactiver globalement et rapidement un ensemble de services. Permet de donner la liste des services pris en charge. Cette option fonctionne de manire similaire loption disabled, ceci prs quelle fonctionne en logique inverse. Labsence de cette option implique lactivation de tous les services, sauf ceux qui sont lists dans loption disabled. En revanche, ds que cette option est dnie, seuls les services lists sont dmarrs. Tout comme loption disabled, cette option ne peut tre utilise que dans la section globale defaults. Permet de dsactiver les services de manire unitaire. Cette option est utilise dans les sections des services, an dindiquer de manire plus ne quavec les options enabled et disabled sils doivent tre activs ou non. Cette option peut prendre deux valeurs : yes ou no . La premire permet de dsactiver le service et la deuxime de le garder fonctionnel. Notez que les options enabled et disabled ont priorit loption disable. Ainsi, un service dsactiv par lune de ces options ne peut pas tre ractiv en attribuant la valeur no loption disable. Mthode denregistrement des vnements du dmon xinetd. Il est possible dutiliser le dmon syslog pour enregistrer les vnements de connexion et de dconnexion des utilisateurs, ou directement un chier texte. Dans le premier cas, il faut utiliser la valeur SYSLOG suivie de la classe denregistrement (gnralement daemon) et du niveau de trace (gnralement info). Dans le deuxime cas, il faut spcier la valeur FILE et indiquer les limites basse et haute de la taille du chier au del desquelles un avertissement est gnr, puis les traces sont arrtes. Informations enregistres lors de lacceptation dune connexion. xinetd peut enregistrer diffrentes informations lorsquune nouvelle connexion est accepte. Ces informations sont indiques grce la liste des mots-cls spcis par cette option. Les mots-cls utilisables sont PID , pour enregistrer lidentiant de processus du dmon qui traitera la requte, HOST , pour enregistrer le nom de la machine cliente, USERID , pour enregistrer le nom de lutilisateur (si celui-ci peut tre obtenu par le service didentication de sa machine), EXIT , pour enregistrer la terminaison du dmon qui traite la requte, et DURATION , pour enregistrer la dure de la connexion.

disabled

enabled

disable

log_type

log_on_success

243

Chapitre 9. Conguration du rseau Option


log_on_failure

Signication Informations enregistres lors dun refus de connexion. Les informations enregistres lors dun refus de connexion peuvent tre spcies laide de cette option, de la mme manire que les informations de connexion peuvent tre enregistres laide de loption log_on_success. Les mots-cls utilisables avec cette option sont ATTEMPT , pour signaler simplement que la tentative a chou, HOST , pour enregistrer le nom de la machine depuis laquelle la tentative a t effectue, et USERID , pour enregistrer le nom de lutilisateur tel quindiqu par le service didentication de sa machine.

Toutes les options disponibles ne sont pas dcrites dans le tableau prcdent. Vous pourrez obtenir de plus amples renseignements en consultant la page de manuel xinetd.conf. La section defaults permet de dnir les options par dfaut applicables tous les services. Les options qui y sont dnies peuvent toutefois tre rednies ou prcises laide des oprateurs =, += et -= dans les sections des diffrents services. Les options utilisables dans la section defaults et que lon a vu ci-dessus sont les options bind, log_type, log_on_success, log_on_failure, instances, per_source, only_from, no_access, disabled et enabled. Gnralement, le chier /etc/xinetd.conf ne contient que la section default et une ligne dinclusion du rpertoire /etc/xinetd.d/, dans lequel se trouvent les chiers de conguration des diffrents services. Lexemple suivant prsente donc un chier xinetd.conf typique :
# Dfinition des options par dfaut : defaults { # On interdit la connexion tout le monde par dfaut : only_from = # On dsactive les services internes : disabled = echo time daytime chargen discard # On dsactive les services dadministration de xinetd : disabled += servers services xadmin # On limite le nombre dinstances total des services : instances = 15 # On dfinit les rgles de suivi des connexions : log_type = FILE /var/log/servicelog log_on_success = HOST PID USERID DURATION EXIT log_on_failure = HOST USERID RECORD } # Inclusion des fichiers de configuration des services : includedir /etc/xinetd.d

Lexemple suivant prsente la dnition du service telnet situe dans le chier de conguration /etc/xinetd.d/telnet :
service telnet

244

Chapitre 9. Conguration du rseau


{ socket_type = stream # Le numro de port et le protocole utiliss peuvent tre omis # car ils sont dj dfinis dans /etc/services. server = /usr/sbin/in.telnetd user = root wait = no only_from = localhost disable = no }

Note : xinetd ninclue pas les chiers contenant un point (caractre .) ni ceux nissant par un tilde (caractre ~). En particulier, on vitera de mettre une extension aux chiers de conguration des services, puisque dans ce cas ils contiendraient un point et ne seraient pas lus.

9.2.8. Conguration de la scurit du rseau


La scurit dun rseau nest pas quelque chose prendre la lgre, surtout lorsquon commence transmettre des donnes personnelles sur le rseau. Internet nest absolument pas sr, car nombre de personnes curieuses, peu discrtes ou franchement mal intentionnes ont un accs privilgi aux machines qui sy trouvent. Bien quil soit impossible de raliser un systme sr 100%, la situation actuelle est franchement catastrophique et si cela continue comme cela, la seule chose de sre, cest quon va aller droit dans le mur. Entre ne rien faire du tout et se xer un niveau de scurit raisonnable permettant de limiter les dgts, il y a un grand pas. Cette section na donc pas pour but de vous transformer en expert en scurit (nen tant pas un moi-mme, je serais bien incapable den crire une ayant cet objectif), mais de vous prsenter les principes de base et le minimum requis pour laisser les mauvaises surprises aux autres. Le principe de base de la scurit est de ne faire conance quau minimum possible de gens. Ce nest pas un comportement paranoaque, mais simplement du bon sens : puisquon ne peut garantir la abilit dun systme 100%, il faut en restreindre les accs aux personnes habilites. Dune manire gnrale, la plupart des surprises dsagrables dans le monde environnant proviennent du mauvais jugement des personnes. Il est est de mme dans le domaine de la scurit informatique, il ne faut donner un accs quaux personnes que lon connat rellement bien, et ne fournir des services rseau quaux personnes et machines qualies de sres . Il va de soi que lorsquil y a un loup dans la bergerie, tout peut aller trs mal trs vite. Cela est dautant plus important que la plupart des dmons ont besoin davoir les privilges du compte root pour sexcuter. Cela peut gnrer des problmes de scurit si daventure une personne mal intentionne dcouvrait le moyen de les dtourner de leur fonction initiale et de leur faire accomplir des tches au nom de ladministrateur. Bien entendu, les dmons sont des programmes trs bien crits, qui vrient gnralement toutes les requtes demandes par les clients avant de les satisfaire. Cependant, tout programme peut comporter des failles et laisser ainsi un accs indsir au sein du systme. Autant liminer directement le problme en ne lanant que les services rellement ncessaires sur votre machine.

245

Chapitre 9. Conguration du rseau La premire des rgles est donc de rduire au maximum les services offerts par votre machine sur le rseau. Mais cela ne suft pas pour dormir tranquille : le fait de ne laisser aucune connexion entrante se faire nempche pas un cracker potentiel de prendre votre identit sur les autres machines du rseau... Il faut donc galement sassurer que vos communications sortantes se ralisent dans des conditions de scurit sufsantes. Or, et cest sans doute l le plus gros problme, la plupart des protocoles rseau ne cryptent pas leur donnes et laissent passer toutes les informations en clair sur le rseau, y compris les mots de passe ! Il est donc impratif, lorsque lon dsire transmettre des informations sensibles, de recourir des techniques de cryptage ables. Les sections suivantes vous prsenteront donc la manire de procder pour limiter au maximum les services disponibles sur votre machine, contrler laccs aux diffrents services de votre machine, raliser des connexions ables entre deux machines, et pour crer un rseau priv virtuel crypt, mme via un canal peu sr comme peu ltre Internet.

9.2.8.1. Limitation des services au strict minimum


Les services rseau dun systme Linux sont nombreux, mais la plupart du temps inutiles pour lemploi que lon veut faire de son ordinateur. Par consquent, il vaut mieux tout simplement ne pas les proposer au monde extrieur, simplement en ne lanant pas les dmons correspondants. Pour cela, il suft de commentant les lignes des services inutiles dans le chier /etc/inetd.conf ou dajouter une ligne disable = true dans les chiers de conguration des services inutiles du rpertoire /etc/xinetd.d/ si votre distribution utilise le super-dmon xinetd. Faire le mnage dans ces chiers et dans les chiers dinitialisation du rseau rduit donc de 90% les risques dune intrusion dans votre systme.

9.2.8.2. Dnition de rgles de contrle daccs


Restreindre le nombre de services accessibles nest toutefois pas sufsant, il faut galement restreindre le nombre des personnes et des machines auxquels les services rseau restants sont proposs. Sur une machine de particulier, lquation est souvent simple : personne ne doit pouvoir sy connecter par le rseau, pour quelque service que ce soit ! Bien entendu, certains particuliers possdent un rseau priv et devront donc afner cette rgle pour ne permettre les connexions que sur le rseau local. Il faut donc tre capable dempcher les accs provenant de certaines machines, considres comme peu ables. La rgle est encore une fois trs simple : doit tre considre comme dangereuse tout machine trangre au rseau local. La manire de procder dpend du super-dmon utilis. En effet, alors que xinetd permet de dnir les adresses des machines autorises se connecter de manire prcise, inetd ne permet pas de le faire lui-mme et requiert laide dun autre dmon, le dmon tcpd. 9.2.8.2.1. Restrictions daccs avec tcpd Le principe de fonctionnement du dmon tcpd est le suivant : il sintercale entre le super-dmon inetd et les dmons que celui-ci est suppos lancer lorsquun client le demande. Ainsi, il lui est possible deffectuer des vrications de scurit primaires, principalement bases sur les adresses IP des clients. Comme vous pouvez sans doute le constater dans le chier /etc/inetd.conf de votre systme, tcpd est lanc par inetd pour quasiment tous les services, et reoit en paramtres de la ligne de commande le nom du dmon lancer si la machine cliente en a lautorisation, ainsi que les paramtres communiquer ce dmon. Laccs quasiment tous les services est donc contrl par tcpd. tcpd utilise les deux chiers de conguration /etc/hosts.allow et /etc/hosts.deny pour dterminer si une machine a le droit daccder un service donn. Le premier de ces chiers indique

246

Chapitre 9. Conguration du rseau quelles sont les machines autorises utiliser certains services locaux. Le deuxime chier indique au contraire les machines qui ne sont pas considres comme sres et qui doivent se voir refuser toute demande de connexion sur les services locaux. Le format de ces deux chiers est identique. Il est constitu de lignes permettant de dnir les rgles daccs pour certains dmons. Chaque ligne utilise la syntaxe suivante :
dmons : machines [: commande]

o dmons est une liste de noms de dmons, spars par des virgules, et machines est une liste de noms de machines ou dadresses IP, galement spars par des virgules. commande est un paramtre optionnel permettant de faire excuter une action tcpd lorsque la rgle indique par cette ligne est prise en compte. Une rgle dnie par une de ces lignes est utilise ds quune des machines indiques dans la liste des machines tente une connexion lun des services de la liste des services. Si la rgle se trouve dans le chier /etc/hosts.allow, la connexion est autorise et le service est lanc par tcpd. Si elle se trouve dans le chier /etc/hosts.deny, la connexion est systmatiquement refuse. Si aucune rgle nest utilise, la connexion est accepte par dfaut. Les listes de machines peuvent contenir des noms de machines partiels, et utiliser des caractres gnriques. Il est galement possible dinterdire la connexion toutes les machines dun domaine en ne donnant que le nom de domaine (prcd dun point). Enn, des mots cls spciaux permettent de reprsenter des ensembles de machines. Par exemple, le mot cl ALL reprsente toutes les machines et LOCAL reprsente toutes les machines du rseau local. Le mot cl ALL permet galement de reprsenter lensemble des dmons dans la liste des dmons. Par exemple, le chier /etc/hosts.deny devrait contenir la ligne suivante :
# Exemple de fichier /etc/hosts.deny : ALL : ALL

Cela permet de garantir que, par dfaut, aucune demande de connexion nest accepte, ce qui est un comportement sain. Les machines ayant le droit de se connecter doivent tre spcies au cas par cas dans le chier /etc/hosts.allow, comme dans lexemple suivant :
# Exemple de fichier /etc/hosts.allow : telnetd, ftpd : LOCAL

Cela permet dautoriser les connexions telnet et ftp pour toutes les machines du rseau local uniquement. Vous trouverez de plus amples renseignements sur le fonctionnement de tcpd dans la page de manuel
hosts_access(5). Note : Comme vous pouvez le constater si vous comparez les lignes du chier de conguration /etc/inetd.conf utilisant tcpd et celles qui ne lutilisent pas, la liste des paramtres passs tcpd par inetd est diffrente de celle utilise pour les dmons lancs directement. En effet, elle ne comprend pas le nom de tcpd lui-mme, alors que pour les dmons, elle contient le nom du dmon en premier paramtre. Cette diffrence provient du fait que le premier argument pass en ligne de commande est le nom du programme lui-mme, sauf pour tcpd. En effet, tcpd suppose que ce paramtre contient le nom du dmon dont il contrle laccs, et non son propre nom.

247

Chapitre 9. Conguration du rseau


La scurit base sur tcpd suppose que les adresses IP source des paquets reus sont effectivement les adresses IP des machines qui les ont envoyes. Malheureusement, cette hypothse ne peut pas tre vrie pour les adresses autres que les adresses des rseaux considrs comme srs (par exemple le rseau local), car le protocole IP ninclut aucun mcanisme dauthentication. Par consquent, nimporte qui peut tenter de communiquer avec votre machine au nom dune autre machine (technique nomme IP spoong en anglais), quil aura au pralable mis hors dtat de se manifester (par exemple par une attaque de type DoS, Denial of Service en anglais). tcpd tente par dfaut de contrler ce genre de pratique en vriant que le nom indiqu par la machine qui se connecte correspond bien ladresse IP quelle utilise. Ainsi, pour passer cette protection, il faut dabord infecter un DNS. Cependant, ce genre dattaque (dite dinterposition) reste courant, surtout sur les rseaux dont les DNS sont insufsamment protgs (une tude rcente a montr que ctait le cas de trois DNS sur quatre en France). Par consquent, vous ne devez pas vous reposer uniquement sur tcpd et les techniques de rewalling si vous devez crer un site rellement sr. En particulier, vous devriez vous intresser aux rseaux virtuels et au cryptage des donnes, choses que lon dcrira dans la Section 9.2.8.4. Le protocole Ipv6 intgrera des mcanismes dauthentication et sera donc nettement plus sr. Bien entendu, cela dpasse le cadre de ce document. Le dmon tcpd peut galement tre utilis avec le dmon xinetd. Toutefois, une telle utilisation est superue, tant donn que xinetd permet de dnir ses propres rgles de contrle daccs.

9.2.8.2.2. Restrictions daccs avec xinetd Le super-dmon xinetd intgre dofce un mcanisme de contrle daccs similaire celui utilis par tcpd. Grce aux options only_from et no_access, il est possible de spcier pour chaque service les machines qui sont autorises lutiliser, ou inversement les machines qui doivent tre explicitement rejetes. Il faut toutefois prendre garde au fait que, comme pour tcpd, ne rien dire signie accepter les connexions provenant de toutes les machines. La rgle dor est donc, encore une fois, de tout interdire par dfaut et dautoriser au compte-gouttes les accs aux services ouverts. Pour cela, il suft dajouter la ligne suivante :
only_from =

dans la section de dnition des options par dfaut de xinetd. Avec cette ligne, contrairement ce qui se passe si rien nest spci, les accs ne sont autoriss qu partir daucune machine. Autrement dit, ils sont toujours interdits. Il faut ensuite redonner les droits sur les machines autorises service par service. Ainsi, les connexions par telnet peuvent tre autorises sur le rseau local (suppos sr) grce la ligne suivante :
only_from += 192.168.0.0/24 127.0.0.1

dans la section dcrivant le service telnet de la conguration de xinetd. On prendra garde galement au fait que xinetd implmente quelques services internes permettant de ladministrer par le rseau. Il est vident que ces services doivent tre dsactivs. Ces services sont respectivement les services servers, sercices et xadmin. Leur dsactivation se fait classiquement en ajoutant la ligne suivante :
disabled = servers services xadmin

dans la section defaults du chier de conguration /etc/xinetd.conf.

248

Chapitre 9. Conguration du rseau

9.2.8.3. Contrle des utilisateurs au niveau des services


Certains services ne peuvent pas tre supprims compltement, tout simplement parce que lon peut en avoir besoin. Dans ce cas, il faut au moins sassurer que laccs ces services nest autoris que pour les utilisateurs qui en ont rellement besoin. La rgle est cette fois que lutilisateur root ne doit pas avoir accs aux services rseau par une connexion non locale. En effet, un pirate attaque toujours par le rseau et, mme sil arrive trouver le mot de passe dun utilisateur normal, il lui restera encore pas mal de boulot pour trouver le mot de passe de lutilisateur root (attention cependant, si vous tes dans cette situation, il vaut mieux ragir trs trs vite). Le service le plus sensible est bien entendu le service de login. Il est possible de fournir le service de login aux connexions extrieures, et il est vident que cela constitue dj un point dentre pour qui peut trouver un mot de passe valide. Il est impratif ici dinterdire une telle connexion lutilisateur root. Il reste toutefois concevable que cet utilisateur puisse se connecter sur la console locale (cest-dire, avec votre clavier et votre cran...). Il est donc ncessaire de choisir les terminaux partir desquels lutilisateur root pourra se connecter. Ces informations sont stockes dans le chier de conguration /etc/securetty. Le format de ce chier est trs simple, puisquil est constitu de la liste des terminaux partir desquels lutilisateur root peut se connecter, raison dun terminal par ligne. Un chier de conguration /etc/securetty typique contient donc la liste des terminaux virtuels de la machine :
# Exemple de fichier /etc/securetty tty1 tty2 tty3 tty4 tty5 tty6

Il est fortement dconseill de placer dans ce chier les autres terminaux (en particulier, les terminaux srie ttyS0 et suivants). Un autre service sensible est le service de tlchargement de chiers. Il est recommand dinterdire aux utilisateurs privilgis les transferts de chiers par FTP. En effet, si une personne parvient accder au systme de chiers, il peut supprimer tous les mcanismes de scurit. De la mme manire que lon a interdit lutilisateur root de se connecter sur les terminaux distants, il faut lui interdire (ainsi quaux autres comptes sensibles) les connexions par FTP. Cette opration peut tre ralise en ajoutant le nom de chaque utilisateur sensible dans le chier de conguration /etc/ftpusers. Ce chier a la mme structure que le chier securetty, puisquil faut donner un nom dutilisateur par ligne :
# Exemple de fichier /etc/ftpusers root uucp mail

Bien entendu, la liste des utilisateurs privilgis de votre systme dpend de la distribution que vous avez install. Le chier /etc/ftpusers fourni avec cette distribution est donc, en gnral, appropri.

249

Chapitre 9. Conguration du rseau

9.2.8.4. Cryptage des connexions


Loutil le plus utilis pour permettre des connexions scurises au travers dun rseau non sr est sans aucun doute SSH (abrviation de langlais Secure SHell ). Il sagit dun protocole de communication rseau crypt et dune suite doutils permettant de lutiliser, initialement dvelopps par une socit commerciale. Ces outils sont diffuss en Open Source et leur usage est gratuit pour les particuliers, mais ils ne sont absolument pas libres. Une implmentation libre a donc t dveloppe pour le systme FreeBSD, puis porte pour les autres systmes dexploitation, dont Linux. Cette implmentation est celle qui est utilise par la plupart des distributions actuellement, il sagit de OpenSSH . Nous ne dcrirons ici que lutilisation dOpenSSH. Pour garantir la condentialit des donnes, SSH utilise des techniques de cryptographie avances. Ces techniques permettent de sassurer que personne ne peut lire les informations qui circulent sur le rseau dune part, et de garantir lauthentication des machines auxquelles on se connecte dautre part. De plus, SSH permet de rediriger les protocoles rseau non crypts dans son propre canal de communication, et rsout donc la plupart des problmes de scurit. SSH a donc pour but premier de remplacer les applications non sres permettant de se connecter distance sur une machine ou dy excuter des commandes. Les applications ainsi rendues obsoltes sont, entre autres, telnet, rlogin et rsh. Enn, SSH est galement utilisable pour chiffrer automatiquement les connexions X11, ce qui permet dutiliser lenvironnement graphique X Window distance en toute scurit.
Note : Ofciellement, il est interdit dutiliser en France des techniques de cryptage aussi pousses que celles mises en uvre par SSH, sauf demander une drogation. Il y a de fortes pressions pour permettre la lgalisation de ces techniques, mais elles nont pas encore abouti. Plus prcisment, le gouvernement a pris position pour une libralisation de lusage de la cryptographie, mais la loi na pas encore t vote. Les sinistres vnements du 11 novembre 2001 risquent fort de retarder encore, si ce nest de compromettre, cette libralisation. En effet, largument principal des opposants cette lgalisation est quelle permettrait aux truands de crypter leurs communications. Largument est bien entendu fallacieux : comme sils attendaient den avoir le droit pour le faire... En fait, il existe une implmentation gratuite (mais non libre) de SSH qui a t dclare et qui peut donc tre utilise en France. Il sagit de la version de Bernard Perrot, nomme SSF , que lon pourra trouver ladresse http://perso.univ-rennes1.fr/bernard.perrot/SSF/index.html. Si vous dsirez absolument tre sans reproches vis vis de la loi actuellement en vigueur en France, vous devriez remplacer la version dOpenSSH fournie avec votre distribution (dont lusage est donc illgal) par SSF. Sachez cependant que SSF restreint la taille des clefs de sessions 128 bits seulement dune part (condition sine qua non pour quon puisse lutiliser), quil nest pas utilisable commercialement, et quil est susceptible de ne pas tre jour en ce qui concerne les correctifs de bogues et les failles de scurit que lon a pu trouver rcemment dans SSH ou OpenSSH. La scurit apporte par SSF est donc trs relative, mais cest mieux que rien du tout.

Il existe deux versions du protocole rseau SSH, qui ont tous deux t adopts en tant que standards. La premire version souffrait dun trou de scurit majeur, qui depuis a largement pu tre utilis. Il ne faut donc surtout pas utiliser cette version et se rabattre systmatiquement sur le protocole SSHv2. Ce protocole permet de garantir lauthentication des machines et des utilisateurs et est nettement plus able. Aucune attaque na permis de le casser ce jour, sachez toutefois quil existe encore des points douteux dans ce protocole qui permettraient, en thorie, de parvenir simmiscer dans une communication ou den dcrypter une partie. Sachez galement que les diffrentes implmentations de SSH, aussi bien libres que commerciales, sont soumises au mme rgime que les autres programmes : elles peuvent avoir des bogues et des trous de scurit quun attaquant peut utiliser. De nombreuses attaques ont t dcouvertes ces derniers temps, aussi est-il recommand de sassurer que lon dispose de la dernire version dOpenSSH. La dernire version stable est la 3.6.1p1 (les versions antrieures doivent tre vites tout prix). Cela

250

Chapitre 9. Conguration du rseau dit, mener une attaque contre SSH relve le niveau de difcult nettement au dessus de ce qui est ncessaire pour pntrer un systme qui ne lutilise pas. 9.2.8.4.1. Principes de base de cryptographie Commenons par quelques dnitions. Le cryptage, encore appel chiffrement, est lopration qui consiste transformer une information en clair en une information code an dviter quelle ne puisse tre utilise par une personne non autorise. Le dchiffrement est lopration inverse du chiffrement, qui permet donc de retrouver linformation initiale partir de linformation code. Le dcryptage est lopration qui consiste dchiffrer une information sans y tre autoris. La cryptographie est la science qui se charge dtudier la manire de crypter les informations. La cryptoanalyse est ltude des moyens de dcryptage. Cette science va de paire avec la cryptographie, puisquelle permet de dterminer la abilit des techniques mises en uvre pour le cryptage. Enn, un cracker est une personne dsirant sintroduire de manire illicite dans un systme, ou dsirant dtourner une application de son contexte dutilisation normal. Il ne faut pas confondre les crackers avec les hackers, qui sont des personnes extrmement comptentes en informatique et qui ne font rien de mal (par exemple, les dveloppeurs du noyau Linux sont souvent appels des hackers). Il existe un grand nombre de techniques de cryptographie, qui sont plus ou moins efcaces. La premire technique, qui est aussi la plus simple et la moins sre, est celle qui consiste utiliser un algorithme de chiffrement rversible (ou une une paire dalgorithmes ayant un effet inverse lun de lautre) pour crypter une information. Dans ce cas, la scurit des donnes est assujettie au maintien au secret de lalgorithme utilis. Il est vident que ce type de technique nest pas utilisable avec les logiciels dont les sources sont diffuses (comme Linux), puisque lalgorithme est alors connu de tout le monde. Cest galement la technique la moins sre, parce quil est en gnral trs facile de dterminer cet algorithme. Un exemple dun tel algorithme est le codage classique qui consiste dcaler toutes les lettres de lalphabet (A devient B, B devient C, etc.). Une autre technique se base sur un algorithme connu de tout le monde, mais dont leffet est paramtr par une clef tenue secrte. Le dchiffrement des informations ne peut se faire que si lon connat cette clef. Les algorithmes de ce type sont souvent qualis de symtriques , en raison du fait que la clef utilise pour le dchiffrement est la mme que celle utilise pour le chiffrement. Cette technique nest satisfaisante que dans la mesure o les personnes qui communiquent peuvent schanger cette clef de manire sre. La clef utilise ne devant tre connue que des personnes autorises participer la communication, cet change doit se faire soit de visu, soit dans un canal dj crypt (mais dans ce cas, il faut changer la clef de dchiffrement du canal, et on se retrouve devant le problme de luf et de la poule), soit laide dun protocole dchange de clef sr. Les algorithmes de ce type sont galement connus sous le nom dalgorithmes clef secrte en raison de cette particularit. Il existe un grand nombre dalgorithmes clef secrte, les plus connus tant DES, AES et IDEA.

251

Chapitre 9. Conguration du rseau Figure 9-7. Algorithme de cryptage symtrique

La technique la plus sre actuellement, et aussi la plus ruse, est dutiliser un algorithme de chiffrement asymtrique. la diffrence des algorithmes symtriques, les algorithmes asymtriques utilisent deux clefs diffrentes pour le chiffrement et pour le dchiffrement. Ces algorithmes se basent sur des fonctions mathmatiques dont la fonction inverse est extrmement difcile dterminer sans une information galement difcile calculer. Cette information fait ofce de trappe permettant de retrouver linformation en clair. Toute la ruse ici est que la clef servant au dchiffrement peut ne plus tre change du tout, ce qui supprime la ncessit de raliser un change de clefs gnralement risqu. En fait, seule la clef de chiffrement doit (et peut sans crainte) tre publie. Cest en raison de cette proprit que les algorithmes asymtriques sont galement appels algorithmes clef publique. Le principe est donc le suivant : une clef publique, utilise pour chiffrer les informations, est fournie tout le monde, et seul celui qui dispose de la clef prive associe cette clef publique peut dchiffrer le texte. Ainsi, il est possible dchanger des informations de manire sre avec tous les intervenants en utilisant simplement leur clefs publiques respectives. Aucun change dinformation sensible nest effectu en clair. Les algorithmes clef publique les plus connus sont RSA et DSA.

252

Chapitre 9. Conguration du rseau Figure 9-8. Algorithme de cryptage asymtriques

La gestion des clefs des algorithmes clef publique est techniquement laborieuse, de mme que les calculs mis en uvre par les algorithmes utiliss. Il est donc courant damorcer une communication avec un algorithme clef publique, comme RSA par exemple, puis de lutiliser pour changer une clef secrte permettant de poursuivre la communication avec un algorithme symtrique. Il existe galement des algorithmes spcialiss dans les changes de clefs dans un canal non sr, comme par exemple lalgorithme Dife Hellman. Enn, sachez galement quil existe des algorithmes de chiffrement sens unique qui ne permettre pas de retrouver linformation initiale. Ces algorithmes sont souvent utiliss pour calculer une emprunte digitale de linformation, qui permet didentier linformation de manire unique. Cette emprunte digitale, galement appele un condens ( hash en anglais), est souvent utilise pour authentier lintgrit des donnes diffuses dans un environnement peu sr. Pour cela, celui qui ralise la diffusion crypte un condens des informations diffuses avec sa clef prive. Tout le monde peut donc dcrypter ce condens avec la clef publique de cette personne, et avoir la certitude quil provient bien de son auteur. Il est alors facile de vrier lintgrit de linformation rendue publique. Les algorithmes de calcul demprunte les plus connus sont MD5 et SHA.
Note : Notez que les algorithmes de cryptage clef publique ncessitent malgr tout que lon soit sr que lon utilise la bonne clef publique pour sadresser une personne. Or, rien ne nous garantit que la clef publique dune personne diffuse sur le rseau provienne bien de cette personne ! Il est donc toujours ncessaire dchanger les clefs publiques de main main, ou de trouver une tierce personne digne de conance et dont on connat dj la clef publique pour garantir que la clef que lon reoit est bien celle de la personne qui prtend en tre le propritaire. Tout cela est contraignant. Mais, contrairement aux algorithmes de chiffrement clef secrte, il nest pas grave de perdre les clefs changes, puiquelles sont destines tre publiques...

9.2.8.4.2. Principes de base de lauthentication SSH La grande difcult dans les mcanismes dauthentication est dtre capable de prouver son identit sans fournir sufsamment dinformation pour que quelquun dautre puisse se faire passer pour soi par la suite. La technique du mot de passe utilis par les systmes Unix est absolument insufsante,

253

Chapitre 9. Conguration du rseau car elle requiert justement de fournir ce mot de passe. Mme si les mots de passe ne sont pas stocks en clair sur la machine (ce qui est la moindre des choses), il est possible de se faire passer pour une tierce personne. Les mcanismes dauthentication comparent souvent une emprunte du mot de passe avec lemprunte stocke dans les chiers de dnition des mots de passe, mais rien nempche un intrus de capter cette emprunte et de lutiliser directement pour sauthentier, mme sans connatre le mot de passe en clair. En ralit, lauthentication Unix nest valide que sur une machine donne, et que si les programmes qui ralisent lauthentication sont excuts dans un contexte sr. Cest heureusement le cas lorsquon se connecte partir dune console locale, mais ne lest pas ds que lon passe par un mdia de communication quelconque. En particulier, une connexion par X11 nest absolument pas sre, mme sur la machine locale, puisque les informations de connexion passent par un canal de communication rseau. SSH ne transmet donc ni les mots de passe ni leurs condenss en clair sur le rseau. Il tablit dabord un canal de communication crypt laide dun des algorithmes dchange de clef (la technique utilise dpend de la version utilise du protocole SSH). Une fois le canal crypt tabli, la machine serveur est authentie laide de sa clef publique. Pour que cela fonctionne, il faut bien entendu que la clef publique de la machine serveur soit connue du client et ait t authentie comme tant bien celle de ce serveur. Inversement, le client peut tre authenti par le serveur. SSH fournit plusieurs possibilits pour cela, les deux plus courantes tant lauthentication par mot de passe et lauthentication par un algorithme clef publique. Lauthentication par mot de passe est strictement la mme que celle utilise pour le login Unix classique, la diffrence prs que les informations du mot de passe sont transmises dans le canal crypt, vers un serveur authenti. La scurit de ce mot de passe est donc garantie, du moins tant que le serveur nest pas compromis. Ce type dauthentication permet dutiliser SSH exactement comme les commandes classiques rsh ou telnet. Lutilisation de SSH est donc compltement transparente pour les utilisateurs. Cela dit, il est possible de faciliter encore plus lauthentication des clients tout en augmentant le niveau de scurit, en utilisant lauthentication par clef publique. Dans ce mode dauthentication, chaque client dispose galement dun couple de clefs prive et publique. Les clefs publiques de ces clients sont diffuses dans les comptes utilisateurs auxquels ils ont accs au niveau du serveur. Ainsi, il nest plus ncessaire de fournir un mot de passe, car le serveur peut authentier le client du seul fait quil est le seul connatre sa clef prive. La connexion est donc automatique (une fois le serveur correctement congur, bien entendu) et aucun change dinformation sensible comme le mot de passe nest ralis (mme si le fait que cet change tait ralis dans un canal crypt par SSH tait dj une bonne garantie). Les clefs prives et publiques sont bien entendu stockes sur disque, dans les chiers de conguration des serveurs et des clients. Il va de soi que si les clefs publiques peuvent tre lues, il est impratif que les clefs prives ne soient lisibles que par leurs propritaires. Les droits daccs sur les chiers de conguration doivent donc tre xes de manire correcte pour garantir la scurit du systme. En fait, le point faible du mcanisme dauthentication des clients est toujours au niveau des utilisateurs, qui peuvent perdre leur clef prive ou la communiquer dautres sans mme savoir quils font une erreur fondamentale (de la mme manire quils peuvent choisir un mot de passe trop facile trouver ou simplement le communiquer une tierce personne). Cest pour cela quil est possible dencrypter les clefs prives avec un algorithme de cryptage symtrique. Lutilisateur doit, dans ce cas, fournir une phrase clef chaque fois quil dsire raliser une connexion SSH.

9.2.8.4.3. Compilation et installation dOpentSSH Comme nous lavons dit plus haut, il est recommand dutiliser la dernire version dOpenSSH, savoir la version 3.5.p1. Il est probable que votre distribution fournisse une mise jour sur son site, et il est recommand dutiliser ces mises jours.

254

Chapitre 9. Conguration du rseau Si, toutefois, vous dsirez effectuer linstallation partir des chiers sources, vous pourrez procder comme suit. Il vous faudra rcuprer larchive des chiers sources en premier lieu sur le site OpenSSH (http://www.openssh.org). Pour Linux, il faut prendre larchive 3.5p1, le p signiant ici quil sagit dun portage des sources pour Linux. Une fois cela fait, vous pourrez excuter la commande suivante dans le rpertoire des sources :
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-tcp-wrappers --with-pam

Cette commande permet de congurer OpenSSH pour quil remplace la version existante dans votre systme. Elle indique galement que le support du dmon tcpd doit tre activ, ainsi que celui des modules dauthentication PAM (options --with-tcp-wrapppers et --with-pam ). Bien entendu, si votre distribution nutilise pas ces fonctionnalits, vous devez supprimer ces options. La compilation et linstallation en soi ne posent pas de problme particulier. Pour les raliser, il vous sufra dexcuter les deux commandes suivantes :
make make install

Vous constaterez que le programme dinstallation gnre automatiquement des chiers de clefs publiques et prives pour votre machine. Nous verrons dans les sections suivantes comment ces clefs peuvent tre utilises.
Note : Vous devrez crer un compte utilisateur sshd non privilgi avant dinstaller SSH. Ce compte est en effet utilis par le dmon sshd pour raliser les communications rseau une fois la phase dauthentication ralise. Cela permet de garantir que, mme en cas dexploitation dune ventuelle faille de scurit du dmon sshd, laccs la machine sera extrmement limit.

9.2.8.4.4. Conguration dOpenSSH ct serveur OpenSSH utilise un dmon nomm sshd pour prendre en charge les requtes de connexion de la part des clients. Ce dmon est lcoute des demandes de connexion et effectue les oprations dauthentication du serveur auprs des clients. Il vrie galement les droits du client avant de le laisser utiliser la connexion crypte. Le dmon sshd utilise un chier de conguration gnral /etc/sshd_config et plusieurs chiers contenant les clefs publiques et prives de la machine pour les diffrents protocoles cryptographiques utiliss par les clients. Les protocoles disponibles sont le protocole RSA pour la version 1 du protocole SSH, et les protocoles RSA et DSA pour la version 2. Comme il existe deux chiers pour les clefs du serveur (un premier chier lisible par tous les utilisateurs, pour la clef publique, et un chier lisible uniquement par lutilisateur root, pour la clef prive), il peut exister au total six chiers de clefs. Ces chiers sont nomms respectivement /etc/ssh_host_key et /etc/ssh_host_key.pub pour les clefs prives et publiques du protocole de version 1, et /etc/ssh_host_rsa_key, /etc/ssh_host_rsa_key.pub, /etc/ssh_host_dsa_key et /etc/ssh_host_dsa_key.pub respectivement pour les algorithmes RSA et DSA du protocole SSH de version 2. Normalement, les chiers de clefs du serveur ont t crs automatiquement lors de linstallation de SSH. Cependant, si vous installez SSH partir dune archive de distribution, ils peuvent ne pas tre prsents, et vous devrez gnrer ces clefs vous-mme. Pour cela, il faut utiliser la commande ssh-keygen, dont la syntaxe est la suivante :
ssh-keygen [-t type]

255

Chapitre 9. Conguration du rseau o type est le type de clef gnrer pour le protocole de version 2. Les types disponibles sont rsa et dsa. Pour le protocole de version 1, il ne faut pas utiliser loption -t, les clefs gnres tant forcment des clefs RSA. Lorsque lon invoque la commande ssh-keygen, celui-ci demande le chemin du chier dans lequel la clef prive doit tre crite. Le chier contenant la clef publique aura le mme nom, mais portera lextension .pub. Vous devez donc saisir le chemin du chier correspondant au type de clef gnr. ssh-keygen demande ensuite le mot de passe utiliser pour le cryptage de la clef prive. Dans le cas dun serveur, il ne faut pas utiliser de mot de passe, car dans ce cas le dmon sshd ne pourrait pas accder la clef prive de la machine. Il faut donc, dans ce cas, valider simplement sans rien taper. Une fois les chiers de clefs du serveur gnrs, vous pouvez vous intresser au chier de conguration sshd_config. Ce chier de conguration contient un certain nombre doptions qui indiquent les paramtres que le dmon doit utiliser. Vous trouverez ci-dessous un exemple de chier de conguration :
# Paramtres de connexion : Port 22 ListenAddress 0.0.0.0 KeepAlive yes # Protocoles utilisables : Protocol 2 # Chemin sur les fichiers de clefs : HostKey /etc/ssh_host_rsa_key HostKey /etc/ssh_host_dsa_key # Paramtres des messages de traces : SyslogFacility AUTH LogLevel INFO # On dfinit les modes dauthentification utilisables : # Authentification par clef publique : RSAAuthentication no PubkeyAuthentication yes # Authentification par type de machine : RhostsAuthentication no IgnoreRhosts yes RhostsRSAAuthentication no HostbasedAuthentication no # Authentification par mot de passe : PasswordAuthentication no PermitEmptyPasswords no # Options gnrales : # Lutilisateur root ne doit pouvoir se loguer quen local : PermitRootLogin no # Utilise le compte non privilgi sshd # pour les communications rseau : UsePrivilegeSeparation yes

256

Chapitre 9. Conguration du rseau


# On nautorise la connexion que pour les utilisateurs dont # les fichiers de configuration sont correctement protgs : StrictModes yes # Encapsulation automatique du protocole X : X11Forwarding yes X11DisplayOffset 10 # Affichage des informations habituelles au login : PrintMotd no PrintLastLog yes

Comme vous pouvez le constater, un grand nombre doptions sont disponibles. Les options Port et ListenAddress permettent de dnir ladresse IP sur laquelle le dmon sshd se mettra en attente de demandes de connexion, ainsi que le port TCP utilis pour cela. Ladresse 0.0.0.0 signie ici quil doit se mettre en attente sur toutes les adresses de la machine. Loption KeepAlive permet de demander au dmon de vrier rgulirement que la liaison est toujours valide, an de fermer les connexions automatiquement en cas darrt du client. Loption Protocol permet de spcier les versions utilisables du protocole SSH. La version 1 tant obsolte, on spciera systmatiquement la valeur 2 ici. Loption HostKey permet, comme son nom lindique, de donner les noms des chiers contenant les clefs pour les diffrents protocoles dauthentication. Les options SyslogFacility et LogLevel permettent dindiquer le type et le niveau des messages de traces gnrs par le dmon sshd dans le chier de traces du systme. Viennent ensuite les options spciques aux diffrents modes dauthentication. Les options RSAAuthentication et PubkeyAuthentication permettent dactiver et de dsactiver lauthentication par clef publique des clients, respectivement pour les protocoles SSH de version 1 et 2. Les options RhostsAuthentication, IgnoreRhosts, RhostsRSAAuthentication et HostbasedAuthentication permettent de contrler un protocole dauthentication bas sur lidentit des machines. Ce type dauthentication na pas t prsent car il est extrmement peu sr, et il faut imprativement dsactiver ces fonctionnalits. Enn, les options PasswordAuthentication et PermitEmptyPasswords permettent dactiver ou de dsactiver lauthentication par mot de passe. Vous tes libre dutiliser ou non ces fonctionnalits. Le chier de conguration peut galement contenir des options complmentaires. Les plus importantes pour la scurit sont sans doute PermitRootLogin et StrictModes, qui permettent dinterdire la connexion par le rseau lutilisateur root dune part, et dinterdire la connexion aux utilisateurs qui nont pas bien x les droits daccs sur leurs chiers de conguration personnels dans leur compte local (il est donc impossible de garantir que ces chiers nont pas t traqus par dautres utilisateurs pour accder leur compte). Loption UsePrivilegeSeparation permet de demander au dmon sshd de neffectuer les communications rseau que dans le compte spcial sshd, compte auquel on naffectera que le minimum de droits. Cette technique permet de protger le systme contre lexploitation dune ventuelle faille de scurit dans le dmon sshd. Loption X11Forwarding permet dactiver lencapsulation automatique du protocole X et peut tre relativement pratique. Le numro de display auquel les utilisateurs devront connecter leurs applications sera alors dcal du nombre indiqu par loption X11DisplayOffset. Cette option est utile pour viter les conits avec les serveurs X locaux. Vous trouverez de plus amples informations sur le protocole X11 et lenvironnement graphique dans le Chapitre 10. Enn, les options PrintMotd et PrintLastLog permettent de spcier les informations afches par le dmon sshd lorsque la connexion des clients est accepte. Il existe bien dautres options, vous pourrez obtenir de plus amples renseignements dans la page de manuel du dmon sshd.

257

Chapitre 9. Conguration du rseau 9.2.8.4.5. Utilisation dOpenSSH ct client Les clients peuvent se connecter un serveur SSH laide de la commande ssh. Cette commande sutilise exactement de la mme manire que les commandes rsh ou rlogin. La syntaxe de la commande ssh est la suivante :
ssh [-l nom] machine [commande]

ou :
ssh nom@machine [commande]

o nom est ici le nom dutilisateur utiliser pour la connexion, et machine la machine distante. Si aucun nom dutilisateur nest spci, le nom de lutilisateur sur la machine local est pris par dfaut. Il est possible dexcuter une commande sur la machine distante en la spciant aprs le nom de la machine. Si aucune commande nest spcie, un shell interactif est lanc. Selon le mode dauthentication du client choisi par le serveur, il peut tre ncessaire ou non de dnir des clefs pour le client. Tout comme pour les clefs publiques et prives dun serveur, la gnration de ces clefs se fait laide de la commande ssh-keygen. Cependant, contrairement ce qui se passait pour le serveur, les chemins par dfaut proposs pour stocker les clefs sont ici corrects, et il est vivement recommand de saisir un mot de passe pour crypter la clef prive. Les chiers de clefs gnrs par ssh-keygen sont les chiers identity et identity.pub pour le protocole dauthentication RSA de la version 1 du protocole SSH, et les chiers id_rsa, id_rsa.pub, id_dsa et id_dsa.pub respectivement pour les protocoles RSA et DSA de la version 2 du protocole SSH. Tous ces chiers sont stocks dans le rpertoire .ssh/ du rpertoire personnel de lutilisateur qui les gnre. Il va de soi que les chiers des clefs prives doivent ne doivent pas tre lisibles pour les autres utilisateurs, et que les chiers des clefs publiques ne doivent pas pouvoir tre crits si lon veut viter quun usurpateur prenne notre place sur notre propre machine. An de bncier de lauthentication des serveurs auxquels on se connecte, il faut placer les clefs publiqes de ces derniers dans le chier .ssh/known_hosts. Si, lors dune connexion un serveur, la clef publique de celui-ci nest pas connue, ssh vous le signalera. Il indiquera un message derreur indiquant que le serveur auquel on se connecte nest pas forcment celui quil prtend tre, et afche un condens de sa clef publique. Vous devrez vous assurer que ce condens est bien celui de la clef publique du serveur auquel vous vous connectez, et ce par un moyen sr (dplacement physique et connection en local par exemple). Si vous acceptez cette clef, ssh la placera pour vous dans votre chier known_hosts, ce qui vous permettra de vous connecter par la suite en toute quitude. Attention, le chier known_hosts ne doit pas tre accessible en criture aux autres utilisateurs, car dans ce cas un pirate pourrait capter toutes vos communications ! Si le mode dauthentication utilis est le mot de passe, ssh vous demandera de saisir le mot de passe du compte distant. Dans ce cas, ssh se comporte exactement comme rsh, ceci prs que votre mot de passe ne circulera pas en clair sur le rseau (quel progrs !). Si, en revanche, le mode dauthentication utilis est une authentication par clef publique, alors vous devrez avoir dni vos clefs prives et publiques. Pour que le dmon sshd de la machine distante accepte la connexion, vous devrez placer vos clefs publiques dans le chier authorized_keys du rpertoire ./ssh/ du rpertoire du compte distant. Cela permettra au dmon sshd de sassurer que cest bien vous qui vous connectez. Attention, le chier authorized_keys ne doit pas tre accessible en criture, faute de quoi un autre utilisateur de la machine distante pourrait se connecter en votre nom. Il est galement impratif de raliser lcriture soi-mme dans ce chier par un moyen sr (dplacement physique). En aucun cas la communication de votre clef publique ladministrateur distant ne pourra tre considre comme un moyen sr pour crire cette clef : en effet, un pirate pourrait tout aussi bien lui demander dcrire sa propre clef dans votre chier !

258

Chapitre 9. Conguration du rseau Vous constaterez quun certain nombre de prcautions doivent tre prises pour les manipulations de clefs. Comme il la dj t indiqu plus haut, le point faible est bel et bien lauthentication des clients. Cela concerne en premier lieu le client bien entendu, dont le compte peut tre pirat, mais cest aussi un trou de scurit norme pour le serveur, car une fois le loup dans la bergerie, il peut faire beaucoup de dgts et chercher accrotre ses droits (jusqu devenir root) par dautres techniques.

9.2.8.4.6. Cration dun tunnel SSH Lun des principaux avantages de SSH est quil est possible de lutiliser pour encapsuler nimporte quel protocole rseau TCP dans le canal de communication dune connexion scurise. Un tel canal est communment appel un tunnel , en raison du fait quil est utilis par les informations sensibles pour traverser un rseau non sr. Grce aux tunnels SSH, il est possible dutiliser tous les protocoles classiques sans avoir sinquiter de la condentialit des informations transmises. SSH permet mme de raliser cette opration automatiquement pour le protocole X du systme de fentrage X Window, ce qui est trs commode si lon dsire afcher localement les fentres graphiques des programmes lancs sur le serveur. Encapsuler le protocole X dans SSH est donc extrmement ais. En effet, il suft simplement de donner la valeur yes loption X11Forwarding dans le chier de conguration du serveur /etc/sshd_config et dans le chier de conguration des clients (les valeurs par dfaut pour tous les utilisateurs peuvent tre dnies dans le chier de conguration /etc/ssh_config et tre rednies par chaque utilisateur dans le chier config de leur rpertoire .ssh/). Si ces options sont actives, SSH se charge de xer la variable denvironnement DISPLAY de la machine distante un serveur X virtuel de cette machine. Les programmes X se connectent alors ce serveur, et celui-ci effectue automatiquement le transfert des communications vers le serveur X du client. Il ne faut donc pas, quand on utilise SSH, modier manuellement la variable denvironnement DISPLAY. Vous trouverez plus dinformation sur X Window dans le Chapitre 10. Pour les autres protocoles, les oprations ne sont pas ralises automatiquement par SSH. Il faut donc tablir un rseau priv virtuel manuellement. Le principe est le suivant : les programmes clients sont paramtrs pour se connecter sur un port local diffrent de celui utilis habituellement pour leur protocole. Ainsi, ils ne sadressent pas directement au serveur distant, mais plutt un proxy local tabli par SSH pour loccasion. Ce proxy tablit un canal de communication crypt avec le dmon sshd de la machine distante. Toutes les informations du protocole encapsul passent alors par le canal crypt, et le dmon sshd de la machine distante retransmet ces informations au service distant auquel le client devait se connecter. Tout ce mcanisme ne fonctionne que parce quil est possible de rediriger les clients sur un port rserv par SSH sur leur machine locale. Cette redirection peut tre initie aussi bien du ct serveur que du ct client, lors de la connexion. Du ct du client, la redirection de port peut tre ralise avec la commande suivante :
ssh -Llocal:serveur:port machine [commande]

o local est le port de la machine locale auquel il faudra se connecter pour accder au service distant, fonctionnant sur le port port de la machine serveur. Cette commande ouvre une session SSH sur la machine machine (qui, normalement, est la mme que serveur), et ralise la redirection du ux destin au port local dans le canal de cette session. Il faut bien comprendre que cette redirection se fait en plus de la connexion SSH, et que la syntaxe donne ci-dessus ouvre une connexion sur la machine distante (ou excute la commande spcie en paramtre, sil en est spcie une). Si lon dsire simplement tablir un tunnel, on peut refermer la session juste aprs avoir lanc le programme qui doit utiliser ce tunnel. En effet, SSH maintient le tunnel ouvert tant quun programme dtient une connexion sur le port redirig. On peut aussi excuter

259

Chapitre 9. Conguration du rseau une commande sleep sur un dlai arbitraire, qui permettra de se connecter sur le port redirig et qui se terminera automatiquement. Du ct serveur, la syntaxe est similaire. Cette fois, la commande permet dindiquer le port que le client devra utiliser pour accder un service non scuris du serveur. La syntaxe utiliser est la suivante :
ssh -Rport:client:local machine [commande]

o port est le port que le client devra utiliser, client est la machine cliente, et local est le port local utilis par le service que lon veut exposer de manire scurise au client. Encore une fois, cette commande ouvre une connexion SSH, il faut donc spcier la machine laquelle on se connecte (en loccurrence, le client). Une commande peut tre spcie de manire optionnelle, sil ny en a pas, un shell sera lanc sur la machine distante.
Note : Prenez bien conscience que SSH ne sassure du chiffrement que des donnes transmises sur le rseau. Si la machine cliente ou la machine serveur ne sont pas correctement congures, un pirate peut espionner les communications rseau internes cette machine. Pour viter ce type de risque, il faut utiliser des protocoles rseau eux-mmes crypts. Autrement dit, une fois sorti du tunnel SSH, vous vous exposez nouveau aux risques dintrusion. Il existe dautres mthodes de tunneling sous Linux, qui sont sans aucun doute plus ergonomiques que SSH. En effet, non seulement les tunnels SSH ne peuvent pas tre crs automatiquement (ils ncessitent une connexion), mais en plus les connexions SSH se terminent ds que le dernier client disparat. En fait, les fonctionnalits de SSH sont un plus, mais elles ne sont pas destines remplacer des solutions plus adaptes pour raliser des tunnels. Vous trouverez plus dinformations sur les rseaux privs virtuels ci-dessous. Pour information, une volution du protocole IP a t dnie pour permettre les communications cryptes et garantissant lauthenticit des machines. Il sagit du protocole IPSec, dont vous trouverez une implmentation libre pour Linux sur le site de FreeSwan (http://www.freeswan.org).

9.3. Conguration de la connexion Internet


Les connexions Internet font partie des connexions rseau temporaires permettant de relier deux machines. La machine locale se connecte en effet au serveur du fournisseur daccs Internet via la ligne tlphonique. Bien entendu, ce serveur est considr comme la passerelle par dfaut pour tous les paquets destination dInternet. Ce type de connexion a de particulier que les adresses IP des deux machines sont, en gnral, dtermines dynamiquement, lors de ltablissement de la connexion. La conguration rseau des connexions Internet se fait donc lgrement diffremment de la conguration dun rseau local normal. Heureusement, tous les dtails de la conguration rseau sont pris en charge automatiquement.

9.3.1. Le protocole PPP


Les connexions Internet utilisent le protocole PPP (abrviation de langlais Point to Point Protocol ), qui permet deux ordinateurs dchanger des paquets TCP/IP au travers dun canal de communication simple (donc, en particulier, au travers dune ligne tlphonique en utilisant un modem). Ce protocole est gr par le noyau et par le dmon pppd. Il permet deffectuer

260

Chapitre 9. Conguration du rseau la ngociation initiale entre les deux machines, ce qui comprend notamment lidentication, lauthentication et lattribution des adresses IP. Le dmon pppd ne gre pas le modem directement, car il est suppos tre utilisable sur dautres types de lignes que les lignes tlphoniques. La gestion du modem est donc relaye un autre programme, qui se nomme chat (il tient son nom du fait quil permet de dialoguer directement avec le modem). Le programme chat ne connat pas les diffrents types de modems qui existent sur le march, il se contente dexcuter des scripts qui dcrivent les informations envoyer au modem et les rponses attendues en retour. Cela permet de reporter la conguration spcique aux modems dans des scripts de connexion. Lcriture de ces scripts ncessite bien entendu de connatre les commandes que votre modem est capable de comprendre. Notez galement quil est indispensable ici que votre modem soit un vrai modem (quil soit interne ou externe), et non pas un modem logiciel (ces modems sont des modles bas de gamme qui ncessitent un support logiciel pour interprter les informations analogiques reues sur la ligne tlphonique). Renseignez-vous donc bien sur la nature du modem que vous achetez, si vous voulez ne pas avoir de problmes sous Linux... La squence des oprations lors dune connexion est donc linitialisation du modem et ltablissement de lappel tlphonique par le programme chat, puis le dmarrage du dmon pppd. Celui-ci effectue la connexion sur le serveur du fournisseur daccs et dtermine ladresse IP, les adresses des DNS, la passerelle et la route utiliser pour cette connexion. Une fois cela ralis, toutes les fonctionnalits rseau peuvent tre utilises via Internet, et votre ordinateur fait alors partie du rseau mondial. Lidentication et lauthentication peuvent se faire de diffrentes manires selon le fournisseur daccs Internet utilis. Un certain nombre de fournisseurs exige lauthentication lors de lappel tlphonique, avec un mcanisme de login classique. Pour ces fournisseurs, lauthentication est faite par le programme chat, auquel il faut communiquer le nom dutilisateur et le mot de passe. Dautres fournisseurs utilisent un protocole dauthentication spcique. Pour ceux-ci, lauthentication est ralise directement par le dmon pppd, une fois que la ligne a t tablie. Les deux principaux protocoles dauthentication sont PAP (abrviation de langlais Password Authentication Protocol ) et CHAP (abrviation de Challenge Handshake Authentication Protocol ). PAP ralise lauthentication comme le mcanisme de login classique : le client envoie son nom et le mot de passe correspondant en clair au serveur. CHAP utilise en revanche la notion de d. Le serveur envoie une requte contenant son nom, et le client doit sidentier et authentier son identit en lui renvoyant une rponse contenant son propre nom et une valeur calcule partir du mot de passe correspondant. Les deux mthodes seront prsentes ci-dessous. Si vous ne parvenez pas vous connecter Internet avec la premire de ces mthodes, tentez votre chance avec PAP ou CHAP. Sachez que pour utiliser ces protocoles il est ncessaire de connatre, en plus de votre login et de votre mot de passe, le nom du serveur utilis. Cette information doit vous tre communique par votre fournisseur daccs Internet. Si vous avez le choix, utilisez de prfrence le protocole CHAP, car il nenvoie jamais de mot de passe en clair sur la ligne tlphonique. La conguration de laccs Internet pour un fournisseur daccs requiert donc la conguration du rseau, la conguration de ppp, la conguration de chat et lcriture des scripts de connexion. Ces tapes seront dtailles ci-dessous. Nous supposerons dans la suite que vos paramtres de connexion sont les suivants : Paramtre Fournisseur daccs Internet Nom de domaine Adresse du DNS Numro de tlphone Nom de login Mot de passe monfai.fr 192.205.43.1 08 36 76 30 18 jdupont gh25k;f Valeur www.monfai.fr

261

Chapitre 9. Conguration du rseau Paramtre Nom de serveur (pour PAP et CHAP) Valeur serveurfai

Note : Les informations donnes dans le tableau ci-dessus sont ctives et ne servent qu donner un exemple. Vous devez bien entendu les remplacer par les valeurs vous concernant en chaque endroit o elles apparaissent dans la suite de ce document. Si par hasard une de ces informations correspondait un numro de tlphone, un nom ou une adresse IP valide, ce serait une pure concidence. Certains fournisseurs daccs refuseront de vous donner toutes ces informations, sous prtexte quils vous fournissent un kit de connexion pour Windows. Ce nest pas trop grave, car il est possible de leur extorquer ces informations malgr eux. Les seules informations rellement indispensables sont le numro de tlphone, le nom de login, le mot de passe et le nom de domaine. Les adresses de DNS peuvent tre dtermines automatiquement dans le cadre du protocole PPP, et le nom de serveur est arbitraire et ne sert qu identier la connexion.

9.3.2. Cration dune connexion Internet


La premire tape dans la cration dune connexion Internet est avant tout lajout des serveurs DNS du fournisseur daccs votre conguration rseau. Cela nest pas toujours ncessaire, car il est possible de congurer le dmon pppd pour quil demande au fournisseur daccs les adresses IP des DNS de celui-ci lors de ltablissement de la connexion. Cependant, il est plus facile dutiliser le mcanisme de connexion la demande si lon indique les adresses des DNS du fournisseur daccs dans la conguration rseau. Pour lexemple de connexion utilis ici, vous devez simplement ajouter les lignes suivantes dans le chier /etc/resolv.conf :
search monfai.fr nameserver 192.205.43.1

Si vous ne connaissez pas les adresses de DNS de votre fournisseur daccs, vous pourrez lobtenir en regardant dans les traces du noyau lors de ltablissement dune connexion. Nous verrons cela en dtail plus loin. La deuxime tape est dcrire un script de numrotation pour le programme chat. Ce script pourra tre plac dans le rpertoire /etc/ppp/peers/, et pourra tre nomm monfai.chat par exemple. Son contenu sera le suivant :
REPORT CONNECT ABORT ERROR ABORT BUSY ABORT VOICE ABORT "NO CARRIER" ABORT "NO DIALTONE" "" ATZ OK AT&F1 OK ATM0L0DT0836763018 CONNECT ""

262

Chapitre 9. Conguration du rseau

Ce script contient le programme que chat doit excuter pour appeler le fournisseur daccs Internet. Il indique toutes les erreurs possibles susceptibles de faire chouer lopration, puis il envoie les commandes dinitialisation et de numrotation au modem. Vous devrez remplacer le numro de tlphone utilis dans la commande DT<numro> par le numro de tlphone de votre fournisseur daccs Internet.
Note : Dans les scripts pour chat, il est possible dutiliser indiffremment lapostrophe simple, lapostrophe double ou aucune apostrophe si la chane attendue de la part du modem ou lui envoyer ne contient aucun espace. Si daventure ce script ne fonctionne pas, vous serez sans doute oblig de demander au programme chat dafcher tous les messages envoys et reus par le modem. Cela se fait normalement avec les options -v et -s. Vous verrez alors les messages en provenance du modem, ce qui vous permettra de dterminer comment modier ce script.

Si votre fournisseur daccs Internet utilise un mcanisme de login classique, vous devez faire lidentication directement dans le script chat. En gnral, serveur du fournisseur daccs envoie la demande de login ds que la connexion a t tablie. Pour cela, il utilise une chane de caractres telle que login: , laquelle le script chat doit rpondre par votre nom dutilisateur. Le serveur demande alors le mot de passe avec une chane telle que password: , demande suite de laquelle le script chat doit envoyer votre mot de passe. Ce nest que lorsque ces deux informations auront t fournies que la connexion sera rellement tablie. Vous pouvez complter le script chat pour rpondre ces deux questions avec les deux lignes suivantes :
ogin: jdupont ssword: gh25k;f

Vous devrez bien entendu remplacer le nom du login et le mot de passe par vos propres donnes dans ce script. Notez quil nest pas ncessaire (ni recommand) de demander la rception de la chane complte login: , car une erreur de transmission sur la ligne peut encore arriver ce stade et provoquer la perte des premiers caractres envoys par lordinateur distant. De plus, il se peut que la premire lettre soit en majuscule ou en minuscule, selon le fournisseur daccs Internet que vous utilisez. Il en va de mme pour la demande de mot de passe ( password: ). Si, en revanche, votre fournisseur daccs utilise le mcanisme dauthentication PAP ou CHAP, vous ne devez pas ajouter ces lignes, car le serveur nenverra pas la chane de caractres login: . Il tentera de communiquer directement avec votre dmon pppd pour raliser lauthentication. Bien entendu, les ds lancs par le serveur sont simplement constitus de la demande du login et de la demande du mot de passe correspondant ce login. Le dmon pppd utilisera alors les secrets stocks dans le chier /etc/ppp/pap-secrets ou le chier /etc/ppp/chap-secrets pour rpondre ces ds, selon que le protocole utilis par le serveur du fournisseur daccs est PAP ou CHAP. Cest donc dans ces chiers que vous devrez enregistrer votre login et votre mot de passe. Le format de ces chiers est trs simple. Les deux chiers utilisent la mme syntaxe pour les secrets. Vous devez simplement y ajouter une ligne telle que celle-ci :
# Secrets for authentification using PAP/CHAP # client server secret IP addresses jdupont serveurfai gh25k;f

263

Chapitre 9. Conguration du rseau pour que lidentication et lauthentication se fasse correctement. Comme on le voit, le nom du serveur est indiqu dans ce chier : il permet de dterminer quel login et quel mot de passe doivent tre utiliss pour les protocoles PAP et CHAP.
Note : En fait, le protocole PPP ne permet pas didentier des utilisateurs, mais des machines. Cependant, pour votre fournisseur, votre machine est identie par votre login, et il faut donc indiquer ce nom comme nom de machine cliente dans les chiers pap-secrets et chap-secrets. Le nom de serveur nest pas utilis pour la connexion. Il ne sert qu dterminer quel secret doit tre utilis pour une connexion donne. Comme la plupart des gens nont quun seul fournisseur daccs Internet, ce nom est purement et simplement facultatif. Dans ce cas, on peut parfaitement remplacer le nom du serveur par une toile. Ce caractre gnrique indique simplement que le mme secret doit tre utilis pour toutes les connexions. Pour les connexions Internet, il est souvent impossible de connatre a priori ladresse IP que le serveur donnera au client. On peut donc laisser vide la colonne contenant les adresses IP utilisables par les clients.

Lorsque vous aurez crit le script chat et ventuellement complt les chiers de secrets de PAP ou de CHAP, vous pourrez crire le script de connexion Internet. Ce script est trs simple :
#!/bin/sh # Script de connexion Internet # Effectue le mnage : rm -f /var/spool/uucp/LCK* /var/lock/LCK* /var/run/ppp*.pid # tablit la connexion : /usr/sbin/pppd /dev/modem 115200 connect "/usr/sbin/chat -v \ -f /etc/ppp/peers/monfai.chat" defaultroute usepeerdns \ ipcp-accept-remote ipcp-accept-local

Prenez garde crire la ligne excutant pppd et la ligne des options en une seule ligne, sans saut de ligne. Notez que le caractre \ plac en n de ligne permet dindiquer que la commande se poursuit sur la ligne suivante. Ce script commence par faire le mnage sur les chiers ventuellement laisss par les anciennes connexions, et appelle pppd en lui demandant dutiliser la connexion tablie par le programme chat avec la vitesse maximale de connexion indique. Lorsque la connexion est tablie, le serveur du fournisseur daccs est enregistr comme passerelle par dfaut dans la table de routage du noyau. Lenvoi et la rception des paquets IP en direction de lInternet se fera donc en passant par cette passerelle. Les adresses de DNS du fournisseur daccs sont galement rcupres et ajoutes dans le chier /etc/resolv.conf. Vous pourrez les dterminer simplement en consultant les chiers de log de votre distribution dans le rpertoire /var/log/. Les deux dernires options permettent dautoriser le serveur du fournisseur daccs xer les adresses IP locales et distantes. Dans ce script de connexion, le programme chat est appel avec le script de numrotation pour chat que lon a dj crit. Si lon dsire voir exactement ce qui se passe, on peut ajouter loption -s la commande dexcution de chat :
/usr/sbin/chat -v -s -f /etc/ppp/peers/monfai.chat

dans le script de connexion vu ci-dessus. Cela vous permettra de dboguer votre script de numrotation.

264

Chapitre 9. Conguration du rseau Vous remarquerez que le programme pppd utilise le chier spcial de priphrique /dev/modem pour la communication. Il va de soi que si ce chier spcial nexiste pas, vous devrez le crer. La solution la plus simple est de faire un lien symbolique vers /dev/ttS0 ou /dev/ttS1, selon que votre modem est connect sur le premier ou le deuxime port srie de votre ordinateur. La commande de lancement donne ci-dessus suppose que le script de connexion /etc/ppp/peers/monfai.chat ralise lidentication et lauthentication. Si vous utilisez lun des protocoles PAP ou CHAP, il faut demander pppd deffectuer ces deux oprations lui-mme. Pour cela, il faut ajouter des options dans la ligne de commande utilise pour le lancer dans le script de connexion, an de prciser le nom du serveur et le nom dutilisateur pour lidentication. La ligne complte utiliser pour PAP ou CHAP doit donc tre celle-ci :
# tablit la connexion : /usr/sbin/pppd /dev/modem 115200 connect "/usr/sbin/chat -v \ -f /etc/ppp/peers/monfai.chat" defaultroute usepeerdns \ ipcp-accept-remote ipcp-accept-local noauth \ remotename serveurfai user jdupont

Encore une fois, cette commande doit tre crite sur une seule ligne, ou sur plusieurs lignes spares par le caractre \. Loption noauth signale quil nest pas ncessaire que le serveur du fournisseur daccs sauthentie en tant que tel (ce nest pas ncessaire, car les fournisseurs daccs ne jouent pas vraiment aux pirates du web), et les deux options suivantes permettent respectivement dindiquer le nom de ce serveur ainsi que le nom dutilisateur utiliser pour le login. Lors de lauthentication, le dmon pppd lira le chier de secret du protocole choisi par le fournisseur daccs pour trouver le mot de passe utiliser. Notez encore une fois quil est facultatif de prciser le nom du serveur du fournisseur daccs si vous avez utilis le caractre gnrique * dans les chiers de secrets pour PAP et CHAP. Il est possible de faire en sorte que la connexion Internet stablisse automatiquement ds quun programme cherche utiliser une adresse devant passer par la route par dfaut. Toute demande destination dune machine dont ladresse est inconnue localement provoque dans ce cas ltablissement de la connexion Internet. Pour cela, il suft simplement :

dajouter loption demand la ligne de commande de pppd dans le script de connexion ; de lancer ce script en arrire plan dans un des scripts de dmarrage du systme.

Si vous dsirez utiliser cette fonctionnalit, il est recommand dactiver galement la dconnexion automatique, faute de quoi vous risqueriez de rester connect involontairement. Cela se fait simplement en ajoutant loption idle n dans la ligne de commande de pppd, o n est le nombre de secondes pendant lequel le lien PPP doit rester inactif avant que la connexion ne se coupe automatiquement. Un choix judicieux est par exemple 600 (ce qui correspond dix minutes).
Note : Linterface rseau est automatiquement cre lorsquon lance le dmon pppd avec loption demand. Par consquent, le dmon pppd dnira automatiquement une adresse IP locale pour cette interface et une adresse IP distante pour la passerelle par dfaut. Malheureusement, ces adresses peuvent changer dune connexion une autre. En effet, la plupart des fournisseurs attribuent les adresses IP en fonction du modem qui rpond au client qui appelle et, en gnral, la connexion ne se fait pas toujours sur le mme modem (il peut y avoir plusieurs modems pour un mme numro de tlphone). Cest pour cela quil faut ajouter les options ipcp-accept-remote et ipcp-accept-local pour indiquer pppd de modier ces adresses lorsquil tablira la connexion. Le problme, cest que les connexions TCP/IP utilisant ces adresses seront systmatiquement casses la suite de ce changement. Cest en particulier le cas pour le programme qui a

265

Chapitre 9. Conguration du rseau


initi ltablissement de la liaison PPP. Cest pour cette raison quil est recommand de demander une adresse IP xe son fournisseur daccs lorsquon veut utiliser la connexion la demande. Hlas, ce service peut faire lofce dune facturation supplmentaire. Mme si lon utilise loption usepeerdns dans la ligne de commande de PPP, il est recommand de rajouter les adresses des DNS dans le chier /etc/resolv.conf. En effet, en labsence de DNS, les noms de domaine ne seront pas rsolus et aucune requte vers lextrieur ne se fera. Par consquent, la route par dfaut ne sera pas utilise, et pppd ntablira donc pas la connexion automatiquement. Notez que si vous dnissez les DNS dans le chier /etc/resolv.conf, vous pouvez vous passer de loption usepeerdns dans la ligne de commande de pppd. Si vous dsirez procder de cette manire, vous devrez vous assurer que lordre spci pour la rsolution des noms dans le chier /etc/host.conf est bien le chier /etc/hosts (option hosts) avant le DNS (option bind), faute de quoi votre ordinateur se connectera systmatiquement Internet ds que vous utiliserez un nom de machine local. La plupart des options passes en ligne de commande peuvent tre spcies dans le chier doptions /etc/ppp/options du dmon pppd. Cela peut permettre de simplier les scripts de connexion.

Si lon nutilise pas les mcanismes de connexion / dconnexion automatiques, on devra se dconnecter manuellement. Pour cela, rien de plus simple : il suft de dtruire le dmon pppd. Cela peut tre ralis automatiquement avec le script suivant :
#!/bin/sh # Script de terminaison de la connexion PPP # # Dtermine la connexion fermer (fournie sur la ligne de commande, # ppp0 par dfaut) : if [ "$1" = "" ]; then DEVICE=ppp0 else DEVICE=$1 fi # Teste si la connexion indique est active : if [ -r /var/run/$DEVICE.pid ]; then # Dtruit le processus ppp correspondant (son PID est stock # dans /var/run/) : kill -INT cat /var/run/$DEVICE.pid # Effectue le mnage : if [ ! "$?" = "0" ]; then rm -f /var/run/$DEVICE.pid echo "ERREUR: Un fichier de PID rsiduel \ a d tre effac manuellement" exit 1 fi rm -f /var/spool/uucp/LCK* /var/lock/LCK* echo "La connexion PPP sur $DEVICE a t ferme correctement..." echo # Termine le script : exit 0 fi

266

Chapitre 9. Conguration du rseau

# La connexion indique nest pas active : echo "ERREUR: Il ny a pas de connexion PPP sur $DEVICE" exit 1

9.3.3. Utilisation du mail


prsent, vous pouvez vous connecter Internet simplement en excutant le script de connexion. Pour vous dconnecter, il suft dappeler le script de dconnexion. Ds que vous tes connect Internet, vous pouvez utiliser toutes les fonctionnalits rseau de Linux, qui sont sans limites. Parmi ces fonctionnalits, on trouve lenvoi de courriers lectroniques. Cette opration peut tre ralise laide du programme mail, qui se manipule laide de commandes simples. Les commandes disponibles chaque instant sont afches dans le bas de lcran de mail. Le programme mail nest quun client, qui ne fait rien dautre que denvoyer et recevoir des mails au serveur de mails local. Sur la plupart des distributions, le serveur de mails utilis se nomme sendmail . Si vous dsirez utiliser le courrier lectronique, vous devrez donc congurer sendmail. Hlas, cette opration est technique et difcile. Il est recommand dutiliser loutil de conguration de votre distribution, qui fera tout le sale boulot pour vous. Toutefois, si vous dsirez congurer sendmail vous-mme, sachez que la plupart des options sont stockes dans le chier /etc/sendmail.cf. Vous devriez vous documenter avant de vous lancer dans cette opration. Le chier /etc/sendmail.cf ne sera pas dcrit ici, il peut faire lui seul lobjet de plusieurs livres... Classiquement, lorsque vous envoyez un mail, ce mail est envoy sendmail. Si vous tes connect Internet, celui-ci le transmet immdiatement votre fournisseur daccs Internet, qui le rediffuse. En revanche, si vous ntes pas connect, sendmail stockera votre message dans le rpertoire /var/spool/mqueue/. Les courriers ne seront envoys que lorsque vous vous connecterez Internet. sendmail vrie priodiquement sil peut envoyer les mails en attente. Cependant, si vous ne restez pas connect sufsamment longtemps, il peut ne pas sen apercevoir. Pour viter cela, vous pouvez utiliser la commande suivante :
sendmail -q

Cette commande demande sendmail denvoyer les courriers en attente immdiatement. De la mme manire, le programme mail ne rcupre pas lui-mme les mails depuis le serveur de mail de votre fournisseur daccs Internet. En gnral, le programme utilis pour rcuprer les mails se nomme fetchmail . Si vous voulez rcuprer immdiatement vos mails, vous devrez donc appeler fetchmail manuellement :
fetchmail

Bien entendu, ces oprations sont ennuyeuses. Si vous voulez tre tranquille, vous pouvez placer ces deux commandes la n du script de connexion Internet. De la sorte, vous recevrez et enverrez votre courrier chaque fois que vous vous connecterez...

267

Chapitre 9. Conguration du rseau

9.3.4. Les autres outils de connexion


Vous en savez sufsamment prsent pour vous connecter Internet avec Linux. Les oprations qui ont t dcrites ici sont lgrement compliques, et vous les trouvez sans doute un peu lourdes. Cela est naturel, car elles le sont effectivement. En fait, les oprations dcrites ici vous montrent comment vous connecter manuellement, mais elles ne constituent pas la manire de faire la plus facile. En effet, si vous installez XWindow, vous pourrez utiliser des programmes graphiques permettant de vous connecter Internet, denvoyer et recevoir des courriers lectroniques ( mails ), de naviguer ( surfer ) et de lire les groupes de discussions ( news ). Cependant, lutilisation de ces outils ne sera pas dcrite ici, car il en existe trop pour que lon puisse tous les prsenter. Heureusement, ces outils sont prvus pour tre trs simples demploi et leur conguration ne pose rellement aucun problme.

9.4. Firewalls et partages de connexion Internet


Supposons quune machine situe sur un rseau local a accs Internet. Il peut tre intressant de faire en sorte que les autres machines du rseau puissent galement y accder, en utilisant cette machine comme passerelle. Cela est parfaitement ralisable et ne pose aucun autre problme que la dnition des rgles de routage si toutes les machines ont une adresse IP attribue par lIANA. Cependant, cela est rarement le cas, car les rseaux locaux utilisent normalement les adresses rserves cet usage, qui ne sont pas routables sur Internet. Dans ce cas, il est vident que les machines du rseau local ne pourront pas envoyer de paquets sur Internet, et qua fortiori elles ne recevront jamais de paquets provenant dInternet. Heureusement, il existe une technique nomme masquerading, base sur un mcanisme de translation dadresse ( NAT en anglais, abrviation de Network Address Translation ), qui permet de modier les paquets mis destination dInternet la vole an de pouvoir partager une connexion Internet mme avec des ordinateurs qui utilisent des adresses locales. Comme nous allons le voir, partager une connexion Internet avec dautre ordinateurs dun rseau local est un jeu denfant sous Linux grce cette technique. Il faut toutefois bien se rendre compte que le fait que fournir un accs Internet un rseau local pose des problmes de scurit majeurs. Pour des rseaux locaux familiaux, les risques de piratages sont bien entendu mineurs, mais lorsque la connexion Internet est permanente ou lorsque les donnes circulant sur le rseau local sont sensibles, il faut tenir compte des risques dintrusion. Lorsquon utilise des adresses IP dynamiques, il est relativement difcile daccder des machines du rseau local, sauf si la passerelle expose des services internes au reste du rseau. En revanche, si les adresses utilises sont xes et valides sur Internet, le risque devient trs important. La conguration de la passerelle doit donc se faire avec soin dans tous les cas, et linstallation dun Firewall est plus que recommande (un rewall , ou pare-feu en franais, est un dispositif qui consiste protger un rseau local du feu de lenfer dInternet, sur lequel tous les crackers sont supposs grouiller). Les paragraphes suivants exposent les mcanismes de ltrage de paquets rseau de Linux, qui sont utilises tant pour dnir les rgles de protection contre les intrusions indsirables sur un rseau par lintermdiaire dune passerelle que pour effectuer des traitements sur les paquets. Cependant, de tous ces traitements, nous ne verrons que la translation dadresse, car cest sans doute celui que la plupart des gens cherchent utiliser.

9.4.1. Mcanismes de ltrage du noyau


Linux est capable de ltrer les paquets circulant sur le rseau et deffectuer des translations dadresses depuis la version 2.0. Cependant, les techniques utilises ont t profondment remanies chaque

268

Chapitre 9. Conguration du rseau version. partir de la version 2.4.0, une architecture extensible a t mise en place et semble rpondre tous les besoins de manire simple : Netlter. Netlter est simplement une srie de points dentres dans les couches rseau du noyau au niveau desquels des modules peuvent senregistrer an deffectuer des contrles ou des traitements particuliers sur les paquets. Il existe une entre en chaque point cl du trajet suivi par les paquets dans les couches rseau du noyau, ce qui permet dintervenir de manire souple et nimporte quel niveau. Un certain nombre de modules permettant deffectuer les traitements les plus courants sont fournis directement dans le noyau, mais larchitecture Netlter est sufsamment souple pour permettre le dveloppement et lajout des modules complmentaires qui pourraient tre dvelopps par la suite. Les fonctionnalits fournies par ces modules sont regroupes par domaines fonctionnels. Ainsi, les modules permettant de raliser des Firewalls se chargent spciquement de donner les moyens de ltrer les paquets selon des critres bien dnis, et les modules permettant deffectuer des translations dadresses ne prennent en charge que la modication des adresses source et destination des paquets la vole. An de bien les identier, ces fonctionnalits sont regroupes dans ce que lon appelle des tables. Une table nest en fait rien dautre quun ensemble cohrent de rgles permettant de manipuler les paquets circulant dans les couches rseau du noyau. Les tables les plus couramment utilises sont les tables lter et nat , qui permettent respectivement de raliser des Firewall et deffectuer des translations dadresses. Chaque table utilise ses propres points dentre de Netlter. Pour chacun de ces points dentre, des listes de rgles de gestion des paquets peuvent tre dnies. Ces listes sont communment appeles des chanes. Il y a donc toujours une chane de rgles prdnie pour chaque point dentre. Lutilisateur peut bien entendu dnir de nouvelles chanes et les utiliser dans les chanes prdnies. Les rgles permettent de spcier les paquets qui les vrient, selon des critres prcis, comme par exemple leur adresse source ou le type de protocole quils transportent. Les rgles indiquent galement les traitements qui seront appliqus ces paquets. Par exemple, il est possible de dtruire purement et simplement tous les paquets provenant dune machine considre comme non sure si lon veut faire un Firewall. On pourra aussi envoyer ces paquets dans une autre chane, qui peuvent indiquer dautres rgles et dautres traitements. Les critres de slection de paquets des rgles de ltrage se basent sur les informations de len-tte de ces paquets. Rappelez-vous que chaque paquet de donnes mis sur le rseau transporte avec lui des informations ncessaires au fonctionnement dudit rseau, entre autres les adresses source et destination du paquet. Ce sont sur ces informations que la slection des paquets est effectue dans Netlter. Dans le cas dun protocole encapsul dans un autre protocole, comme par exemple un paquet TCP dans un paquet IP, les informations du protocole encapsul peuvent galement tre utilises, si lon a charg des modules complmentaires dans NetFilter. Par exemple, le numro de port TCP peut faire partie des critres de slection dune rgle. Les traitements que lon peut appliquer un paquet sont galement fournis par des modules de Netlter. Les traitements les plus simples sont bien entendus fournis en standard avec le noyau. En gnral, on peut chercher raliser les oprations suivantes sur un paquet :

lenregistrer, pour analyse ultrieure ; le rediriger vers un port local, pour traitement par un programme ddi (par exemple, par un serveur proxy) ; laccepter, labandonner ou le rejeter directement (le rejet se distingue de labandon par lmission dune notication hte inaccessible la machine ayant mis le paquet) ; le modier et, en particulier, effectuer une translation dadresse ou le marquer pour le reconnatre dans un traitement ultrieur ; lenvoyer dans une autre chane pour effectuer des vrications complmentaires ;

269

Chapitre 9. Conguration du rseau

le faire sortir immdiatement de la chane courante.

De plus, les statistiques tenues par le noyau pour la rgle ainsi vrie sont mises jour. Ces statistiques comprennent le nombre de paquets qui ont vri cette rgle ainsi que le nombre doctets que ces paquets contenaient. Lorsquun paquet arrive la n dune chane (soit parce quil na pas t rejet ou dtruit par une rgle de Firewalling, soit parce quil ne correspond aux critres daucune rgle, ou soit parce quil est arriv ce stade aprs avoir subi des modications), le noyau revient dans la chane appelante et poursuit le traitement du paquet. Si la chane au bout de laquelle le paquet arrive est une chane prdnie, il ny a plus de chane appelante, et le sort du paquet est dtermin par ce quon appelle la politique de la chane prdnie. La politique ( policy en anglais) des chanes prdnies indique donc ce que lon doit faire avec les paquets qui arrivent en n de chane. En gnral, on utilise une politique relativement stricte lorsquon ralise un Firewall, qui rejette par dfaut tous les paquets qui nont pas t accepts explicitement par une rgle de la chane.
Note : Certains paquets peuvent tre dcoups en plusieurs paquets plus petits lors de la traverse dun rseau. Par exemple, un paquet TCP un peu trop gros et initialement encapsul dans un seul paquet IP peut se voir rpartir sur plusieurs paquets IP. Cela peut poser quelques problmes aux rgles de ltrage, puisque dans ce cas les donnes spciques TCP (par exemple les numros de ports) ne sont disponibles que sur le premier paquet IP reu, pas sur les suivants. Cest pour cette raison que le noyau peut effectuer une dfragmentation des paquets lorsque cela est ncessaire, et que les paquets transmis par la passerelle ne sont pas toujours strictement identitiques aux paquets quelle reoit.

9.4.2. Translations dadresses et masquerading


Nous avons vu que grce aux mcanismes de ltrage du noyau, il est possible de modier les paquets la vole. Il peut tre intressant de modier un paquet pour diverses raisons, les trois plus intressantes tant sans doute de le marquer laide dun champ spcial dans son en-tte an de le reconnatre ultrieurement, de modier sa priorit pour permettre un traitement privilgi ou au contraire en arrire plan de ce type de paquet (librant ainsi les ressources rseau pour dautres types de connexion), et de modier ses adresses source et destination, pour effectuer une translation dadresse. Nous allons nous intresser plus particulirement aux diffrentes formes de translations dadresses dans la suite de cette section. Une translation dadresse nest en fait rien dautre quun remplacement contrl des adresses source ou destination de tous les paquets dune connexion. En gnral, cela permet de dtourner les connexions rseau ou de simuler une provenance unique pour plusieurs connexions. Par exemple, les connexions Internet peuvent tre dtournes vers un proxy fonctionnant sur la passerelle de manire transparente, en modiant les adresses destination des paquets mis par les clients. De mme, il est possible de simuler un seul serveur en remplaant la vole les adresses source des paquets que la passerelle envoie sur Internet. On distingue donc deux principaux types de translations dadresses : les translations dadresse source et les translations dadresse destination. Parmi les translations dadresse source se trouve un cas particulier particulirement intressant : le masquerading . Cette technique permet de remplacer toutes les adresses source des paquets provenant des machines dun rseau local par ladresse de linterface de la passerelle connecte Internet, tout en conservant une trace des connexions rseau an dacheminer vers leur vritable destinataire les paquets de rponse. Ainsi, une seule connexion Internet peut tre utilise par plusieurs machines distinctes, mme si elles ne disposent pas dadresses IP fournies par lIANA.

270

Chapitre 9. Conguration du rseau Lorsquune machine du rseau local envoie un paquet destination dInternet, ce paquet est achemin vers la passerelle, qui est la route par dfaut. Celle-ci commence par modier ladresse source de ce paquet et mettre sa propre adresse la place, puis le transfre vers la machine du fournisseur daccs. Tous les paquets mis par les machines du rseau local semblent donc provenir de cette passerelle, et seront achemins normalement destination. En fait, la complication provient des paquets de rponse, puisque les machines situes sur Internet croient que la machine avec laquelle elles communiquent est la passerelle. Ces paquets sont donc tous envoys la passerelle directement, et celle-ci doit retrouver la machine du rseau local laquelle ils sont destins. Cette opration est ralise de diffrentes manires selon les protocoles utiliss, et elle suppose que la passerelle conserve en permanence une trace des connexions rseau effectues par les machines du rseau local. Pour TCP, ce suivi de connexion est ralis en modiant galement le port source des paquets provenant des machines locales. La passerelle utilise un port unique pour chaque connexion, qui va lui permettre de retrouver la machine laquelle un paquet est destin lorsquelle en reoit un provenant dInternet. Par exemple, si une machine locale fait une connexion Internet, la passerelle alloue un nouveau numro de port pour cette connexion et modie tous les paquets sortants comme ayant t mis par la passerelle elle-mme, sur ce port. Lorsque lautre machine prenant part la connexion, situe sur Internet, envoie un paquet de rponse, celui-ci sera destination de la passerelle, avec comme port destination le port allou cette connexion. La passerelle peut donc retrouver, partir de ce port, ladresse de la machine destination relle, ainsi que le port source que cette machine utilisait initialement. La passerelle modie donc ces deux champs du paquet, et le renvoie sur le rseau local. Finalement, la machine destination reoit le paquet sur son port, et ce paquet semble provenir directement dInternet, comme si la connexion avait t directe. Notez bien que la passerelle ne modie pas les adresses source des paquets provenant dInternet, elle ne fait que les racheminer vers la bonne destination. Figure 9-9. Translation dadresses avec suivi de port TCP

Ainsi, le masquerading est un mcanisme compltement transparent pour les machines du rseau local. En revanche, pour les machines de lInternet, il ne semble y avoir quun seul interlocuteur : la passerelle. Celle-ci utilise des numros de ports varis, mais cela ne les regarde pas. Les machines du rseau local sont donc compltement masques par la passerelle, do le nom de masquerading.

271

Chapitre 9. Conguration du rseau Tout ce travail effectu par la passerelle ncessite un traitement spcique sur chaque paquet quelle achemine, et consomme bien entendu des ressources systme. Cependant, les dbits utiliss pour les connexions Internet, mme les plus rapides, sont trs loin de mettre genoux une passerelle sous Linux, mme sur les plus petites machines (386 et 486). Vous voil rassurs, et peut-tre aurez-vous trouv dici peu une utilit lun de ces dinosaures qui tranent encore dans votre garage...

9.4.3. Trajet des paquets


Il existe cinq points dentre au total pour les modules de Netlter dans le code des couches rseau IP de Linux. ces cinq points dentre correspondent cinq chanes prdnies, qui peuvent tre accdes par lintermdiaire des diverses tables de Netlter. Les paragraphes suivants dcrivent ces cinq chanes, ainsi que lordre dans lequel les paquets les traversent. Les paquets rseau provenant de lextrieur sont dabord contrls par le noyau an de dtecter les erreurs les plus simples. Les paquets mal forms ou corrompus sont systmatiquement limins ce niveau, avant mme datteindre le code de Netlter. Les autres paquets commencent alors leur trajet dans les couches de plus haut niveau. Cest ce moment l quils rencontrent la chane PREROUTING, qui est la premire chane prise en compte. Cette chane prcde le code de routage, qui est en charge de dterminer le trajet que le paquet devra suivre par la suite partir de ladresse destination des paquets. Cest donc dans cette chane que lon pourra modier ladresse destination des paquets, si lon veut faire une translation dadresse destination. Cette chane est donc utilisable dans la table nat. Les paquets qui traversent la chane PREROUTING sont ensuite orients par le code de routage de Linux. Sils sont destination de la machine locale, ils rencontrent une autre chane prdnie : la chane INPUT. Cest ce niveau que lon peut empcher un paquet dentrer dans le systme, aussi cette chane est-elle naturellement disponible dans la table filter. Les autres paquets doivent tre transfrs vers une autre machine, souvent par une autre interface rseau. Ils traversent alors la chane FORWARD. Cette chane permet de contrler les paquets qui transitent au travers dune passerelle, et fait donc partie de la table filter. Les paquets qui sont accepts par la chane FORWARD retournent ensuite dans le code de routage du noyau, an de dterminer linterface rseau par laquelle ils doivent tre rmis. Une fois cela ralis, ils sont prts tre rmis, mais ils doivent auparavant traverser la chane POSTROUTING. Cest dans cette dernire chane que se font les translations dadresse source, aussi est-elle accessible dans la table nat. Enn, les paquets mis par la machine locale destination de lextrieur doivent imprativement traverser la chane OUTPUT, dans laquelle on pourra ltrer les informations sortantes. Cette chane est donc accessible dans la table filter. Les paquets qui se rvlent avoir le droit de sortir traversent alors de code de routing, puis, tout comme les paquets qui ont t transfrs, entrent dans la chane POSTROUTING. La chane OUTPUT est galement accessible au travers de la table nat, an de permettre la modication des adresses destination des paquets avant leur routage.

272

Chapitre 9. Conguration du rseau Figure 9-10. Trajet des paquets dans le code de ltrage

Note : Pour des raisons de clart, les chanes prdnies et les points dentre de Netlter ont t volontairement confondus dans ce paragraphe. En fait, il faut bien comprendre que les chanes appartiennent aux tables, et quil peut exister plusieurs chanes du mme nom dans plusieurs tables diffrentes. Lajout dune rgle dans une chane ne se fait donc que pour une table donne, les autres tables ne contiendront donc pas cette rgle. En revanche, les paquets qui arrivent sur un des points dentre de netlter dans les couches rseau de Linux traversent bien les diffrentes chanes de toutes les tables qui utilisent ce point dentre.

9.4.4. Conguration du noyau et installation des outils


Les fonctionnalits de Netlter sont toutes fournies par le noyau lui-mme, aussi leur conguration doit-elle se faire au niveau du noyau. La manire de procder pour congurer le noyau a t indique dans le paragraphe traitant de la compilation du noyau. Les options activer pour mettre en place les fonctionnalits de ltrage des paquets et de translation dadresse sont les suivantes :

Network packet filtering (replace ipchains) , pour activer les fonctionnalits de ltrage des paquets en gnral ; Network packet filtering debugging , pour obtenir les messages de dbogage du noyau. Ces messages peuvent tre trs utiles pour mettre au point les rgles de ltrage ; Connection tracking (required for masq/NAT) (menu IP: Netlter Conguration ), pour permettre le suivi des connexions auxquelles appartiennent les paquets IP reus par la passerelle. Cette option est ncessaire pour raliser un partage de connexion Internet ; FTP protocol support , pour permettre la gestion des connexions FTP, qui exigent un traitement particulier pour les translations dadresses ; IP tables support (required for filtering/masq/NAT) , pour permettre la gestion des tables de Netlter ; Packet filtering , pour inclure le support de la table lter . Cette option est ncessaire pour raliser un Firewall ; REJECT target support , pour permettre le rejet des paquets (par dfaut, seul labandon des paquets est fourni dans le code de ltrage) ;

273

Chapitre 9. Conguration du rseau

Full NAT , pour inclure la table nat de Netlter. Cette option est ncessaire pour raliser un partage de connexion Internet ; MASQUERADE target support , pour permettre le masquerading an de raliser un partage de connexion Internet.

Vous devrez ensuite compiler le noyau et les modules, et les installer comme indiqu dans la partie traitant de la compilation du noyau.
Note : Le noyau de Linux dispose dun paramtre global permettant de contrler le routage des paquets IP dune interface rseau une autre. Par dfaut, ce paramtre est 0, ce qui implique que la transmission des paquets ne sera pas autorise. Il faut donc activer ce paramtre chaque dmarrage an de pouvoir utiliser votre passerelle Linux. Cela peut tre ralis en crivant la valeur 1 dans le chier /proc/sys/net/ipv4/ip_forward du systme de chiers virtuel /proc/ :

echo "1" > /proc/sys/net/ipv4/ip_forward

La manipulation des chanes et la manipulation des rgles de Netlter se fait grce loutil iptables. Cette commande doit normalement avoir t installe par votre distribution. Toutefois, si ce nest pas le cas, vous pouvez la compiler manuellement. Pour cela, il vous faudra rcuprer larchive des sources diptables. Cette archive peut tre trouve sur Internet (http://www.netlter.org/les/iptables-1.2.6a.tar.bz2). La version courante est la 1.2.6a, aussi larchive se nomme-t-elle iptables-1.2.6a.tar.bz2. Linstallation diptables ne pose pas de problme particulier en soi. Vous devrez dabord dcomprimer larchive avec les deux commandes suivantes :
bunzip2 iptables-1.2.6a.tar.bz2 tar xf iptables-1.2.6a.tar

puis modier le chier Makefile pour dnir les rpertoires dinstallation dans les variables LIBDIR, BINDIR et MANDIR. En gnral, les rpertoires utiliss seront respectivement les rpertoires /usr/lib/, /usr/bin/ et /usr/man/. Une fois cela fait, il ne restera plus qu compiler le tout avec la commande make et faire linstallation avec la commande make install.

9.4.5. Utilisation diptables


Il est possible, grce iptables, deffectuer toutes les oprations dadministration dsires sur les tables de Netlter. Vous pourrez donc crer des nouvelles chanes, les dtruire, dnir les politiques par dfaut, ainsi que manipuler les rgles de ces chanes (en ajouter, en supprimer ou en remplacer une). En fait, iptables dispose dun grand nombre doptions, et seules les options les plus importantes seront prsentes ici. Vous pouvez lire la page de manuel iptables si vous dsirez plus de renseignements sur la manipulation des chanes et des rgles de ltrage du noyau.

9.4.5.1. Manipulation des chanes


Toutes les options peuvent tre utilises avec toutes les tables gres par le noyau. La table sur laquelle une commande sapplique peut tre prcise laide de loption -t. Si cette option nest pas fournie,

274

Chapitre 9. Conguration du rseau la table utilise par dfaut sera la table filter, qui est celle qui est normalement utilise pour dnir des rgles de ltrage des paquets dans un Firewall. La cration dune nouvelle chane se fait simplement avec loption -N :
iptables [-t table] -N chane

o chane est le nom de la chane crer. Il est interdit dutiliser un des mots cls rservs par iptables. En pratique, il est recommand dutiliser des noms de chanes en minuscules, car les chanes prdnies sont en majuscules. Une chane peut tre dtruite avec loption -X :
iptables [-t table] -X chane

Une chane ne peut tre dtruite que lorsquelle ne contient plus de rgle. De plus, il est impossible de dtruire les chanes prdnies dune table. Vous pouvez lister lensemble des rgles dune chane avec loption -L :
iptables [-t table] -L chane

Enn, il est possible de supprimer toutes les rgles dune chane avec loption -F :
iptables [-t table] -F chane

o chane est le nom de la chane dont on veut supprimer les rgles.

9.4.5.2. Manipulation des rgles


La syntaxe gnrale pour ajouter une rgle dans une chane est la suivante :
iptables [-t table] -A chane [-s source] [-d destination] [-p protocole] [-i itfsource] [-o itfdest] [-j cible]

o :

table

est la table dans laquelle se trouve la chane manipule (par dfaut, il sagit de la table est le nom de la chane laquelle la rgle doit tre ajoute ; est ladresse source du paquet ; est ladresse destination du paquet ;

filter) ;
chane source

destination

protocole est le protocole du paquet (spci avec son numro de port ou par le nom du protocole

tel quil est dclar dans le chier /etc/services) ;


itfsource itfdest

est le nom de linterface rseau source par laquelle le paquet doit arriver ;

est le nom de linterface destination par laquelle le paquet doit sortir ;

et cible est la cible des paquets qui vrient les critres de slection de la rgle.

Chacun des paramtres plac entre crochets dans la syntaxe est facultatif, mais il faut au moins quun critre de slection soit donn (sur les adresses source ou destination, ou sur le port ou linterface).

275

Chapitre 9. Conguration du rseau Les adresses source et destination peuvent tre indiques directement par le nom des machines (comme par exemple www.monrezo.com ) ou par leurs adresses IP. Vous pouvez spcier directement toutes les adresses dun rseau avec la syntaxe rseau/masque . Il est galement possible dutiliser la syntaxe rseau/n , o n est le nombre de bits mis 1 dans le masque de sous-rseau. Ainsi, rseau/24 est quivalent rseau/255.255.255.0, rseau/16 rseau/255.255.0.0, etc. Par extension, rseau/0 peut tre utilis pour spcier toutes les adresses possibles (dans ce cas, ladresse donne pour le rseau nest pas prise en compte). La cible dtermine les oprations qui seront appliques ces paquets. Les cibles autorises dpendent de la chane dans laquelle la rgle est ajoute, ainsi que des modules de Netlter qui ont t compils. Les principales cibles sont les suivantes :
ACCEPT, DROP,

pour accepter le paquet qui vrie le critre de slection de la rgle ;

pour liminer purement et simplement le paquet ;

REJECT,

pour rejeter le paquet (en signalant lerreur la machine mettrice). Cette cible nest utilisable que dans les chanes INPUT, FORWARD et OUTPUT, ainsi que dans les chanes utilisateurs appeles partir de ces chanes ;

QUEUE, pour envoyer le paquet un programme utilisateur capable de communiquer avec NetFilter ; RETURN,

pour sortir de la chane immdiatement, ou appliquer la rgle de la politique par dfaut pour les chanes prdnies ;

REDIRECT,

pour rediriger le paquet sur une autre machine, souvent la machine locale. Cette cible nest utilisable quavec la table nat, car il sagit dune translation dadresse. On ne peut lutiliser que dans les chanes PREROUTING et OUTPUT et les chanes utilisateur appeles partir de ces chanes ; pour permettre la modication de ladresse source du paquet. Cette cible nest bien entendu accessible quau niveau de la table nat. Comme la modication de ladresse source na de signication que pour les paquets devant sortir de la passerelle, cette cible ne peut tre utilise que dans la chane POSTROUTING et les chanes utilisateur appeles partir de cette chane ; pour effectuer la modication de ladresse destination du paquet, an par exemple de le dtourner vers une autre machine que celle vers laquelle il devait aller. Cette cible nest accessible que dans la table nat, et nest utilisable que dans les chanes PREROUTING et OUTPUT ainsi que dans les chanes utilisateur appeles partir de ces chanes ; pour effectuer une translation dadresse sur ce paquet, dans le but de raliser un partage de connexion Internet. Cette cible nest accessible que dans la chane POSTROUTING de la table nat, ainsi que dans les chanes utilisateur appeles partir de cette chane.

SNAT,

DNAT,

MASQUERADE,

Toute autre spcication de destination doit tre le nom dune chane utilisateur, avec les rgles de laquelle le paquet devra tre test. Si aucune cible nest spcie, aucune action nest prise et la rgle suivante est traite. Cependant, les statistiques de la rgle sont toujours mises jour. La suppression dune rgle dune chane se fait avec la commande suivante :
iptables -D chane numro

o chane est la chane dont on veut supprimer la rgle, et numro est le numro de la rgle supprimer dans cette chane. Il est galement possible dutiliser loption -D avec les mmes options que celles qui ont t utilises lors de lajout de la rgle, si lon trouve cela plus pratique. Enn, la politique dune chane, cest--dire la cible par dfaut, peut tre xe avec loption -P :
iptables -P chane cible

276

Chapitre 9. Conguration du rseau o chane est lune des chanes prdnie, et cible est lune des cibles ACCEPT ou DROP. Remarquez que lon ne peut pas dnir de politique pour les chanes cres par lutilisateur, puisque les paquets sont vris avec les rgles restantes de la chane appelante lorsquils sortent de la chane appele.

9.4.6. Exemple de rgles


Ce paragraphe a pour but de prsenter quelques-unes des rgles les plus classiques. Le but est ici de prsenter les principales fonctionnalits diptables et non de raliser un Firewall able. Reportez-vous des documents plus spcialiss pour cela.

9.4.6.1. Exemple de rgles de ltrage


Les rgles de ltrage peuvent tre utilises pour mettre en place un Firewall an de protger votre rseau. La dnition des rgles de ltrage constitue bien souvent lessentiel du problme, et ncessite bien entendu de parfaitement savoir ce que lon veut faire. De manire gnrale, la rgle dor en matire de scurit informatique est de tout interdire par dfaut, puis de donner les droits au comptegouttes. Cest exactement ce que permet de faire la politique des chanes. On dnira donc toujours la politique par dfaut des chanes pour utiliser la cible DROP. Cela peut tre ralis simplement avec les trois commandes suivantes :
iptables -P INPUT -j DROP iptables -P FORWARD -j DROP iptables -P OUTPUT -j DROP

Ces rgles commencent par blinder la passerelle pour ne rien laisser entrer, ne rien laisser passer et ne rien laisser sortir. Dans ce cas, on ne craint plus rien, mais on ne peut plus rien faire non plus (pas mme en local). Aussi faut-il redonner les droits ncessaires pour permettre lutilisation normale de votre systme. Par exemple, on peut autoriser larrive et lmission de tous les paquets du rseau local avec les rgles suivantes :
iptables -A INPUT -s 192.168.0.0/24 -i eth0 -j ACCEPT iptables -A OUTPUT -s 127.0.0.0/8 -o eth0 -j ACCEPT

et autoriser la communication des paquets de la machine locale vers la machine locale (ces paquets sont vitaux !) :
iptables -A OUTPUT -s 127.0.0.0/8 -o lo -j ACCEPT iptables -A INPUT -d 127.0.0.0/8 -i lo -j ACCEPT

Comme vous pouvez le constater, ces rgles ne permettent lentre des paquets prtendant provenir du rseau local (cest--dire les paquets ayant comme adresse source une adresse de la forme 192.168.0.0/24) que par linterface rseau connecte au rseau local (dans notre exemple, il sagit de linterface rseau eth0). De mme, seule la machine locale peut mettre des paquets sur le rseau local. Il va de soi que ces paramtres sont trop restrictifs pour raliser une passerelle. Dans ce cas, on devra relcher un peu plus les contraintes, et utiliser des rgles de ltrage plus nes. On devra

277

Chapitre 9. Conguration du rseau autoriser le routage des paquets (chane FORWARD), par exemple en nautorisant que les paquets provenant dun ensemble de machines considres comme ables. Notez que ces rgles sont beaucoup trop restrictives pour permettre un accs Internet (et, a fortiori une intrusion provenant dInternet...). Les rgles prsentes ici se basent uniquement sur les adresses source et destination des paquets, ainsi que sur les interfaces rseau par lesquelles ils entrent et ressortent. Sachez cependant que lon peut raliser des rgles beaucoup plus nes, qui se basent galement sur les protocoles rseau utiliss et, pour chaque protocole, sur des critres spciques ces protocoles. Vous pouvez consulter la page de manuel diptables pour plus de dtails ce sujet.

9.4.6.2. Exemple de partage de connexion Internet


Le masquerading est un cas particulier de translation dadresse source. En effet, celle-ci est couple un suivi des connexions an deffectuer la translation dadresse destination des paquets de rponse renvoys par les serveurs sur Internet pour les acheminer vers la machine du rseau local qui a initi la connexion. En pratique, seule la chane POSTROUTING sera utilise pour le masquerading, parce que cest ce niveau que la translation dadresse est effectue. La mise en uvre du masquerading se fait extrmement simplement, puisquil suft de spcier que tous les paquets du rseau local sortant de linterface rseau connecte sur Internet doivent subir le masquerading. En gnral, linterface de la connexion Internet est une interface PPP, aussi la commande utiliser est-elle simplement la suivante :
iptables -t nat -A POSTROUTING -s rseau/24 -o ppp0 -j MASQUERADE

o rseau est ladresse de votre rseau (par exemple, 192.168.0.0). Notez que la commande donne ci-dessus suppose que votre rseau soit de classe C, car le masque de sous-rseau utilis est 255.255.255.0. La cible spcie pour tous les paquets provenant de votre rseau local sortant par linterface ppp0 est donc MASQUERADE, ce qui active la translation dadresse. Remarquez que les paquets provenant de la machine locale ne subissent pas le masquerading, car cest compltement inutile.
Note : Les chanes et leurs rgles ne sont pas enregistres de manire permanente dans le systme. Elles sont perdues chaque redmarrage de la machine, aussi faut-il les rednir systmatiquement. Cela peut tre ralis dans les scripts de dmarrage de votre systme. Noubliez pas que votre passerelle doit dnir une route par dfaut pour que tous les paquets qui ne sont pas destins au rseau local soient envoys par linterface rseau connecte Internet. Cette route par dfaut est tablie automatiquement lorsque vous vous connectez Internet laide de PPP. Dans les autres cas, vous aurez la dnir manuellement. Le routage des paquets est, par dfaut, dsactiv sous Linux. Si votre distribution ne le fait pas, vous aurez galement ajouter une ligne telle que celle-ci :
# Activation du routage : echo "1" > /proc/sys/net/ipv4/ip_forward

dans vos scripts de dmarrage de votre systme. Assurez-vous que les rgles de ltrage que vous utilisez permettent bien aux machines du rseau local daccder Internet et, rciproquement, que les machines dInternet peuvent leur rpondre. Sans cela, toute tentative de masquerading sera voue lchec, avant mme datteindre la chane POSTROUTING.

278

Chapitre 9. Conguration du rseau

9.4.7. Conguration des clients


La conguration des autres machines du rseau est trs simple. Vous devrez tout dabord dnir la machine possdant la connexion Internet comme passerelle par dfaut de tous vos postes clients. Cette opration peut se raliser de diffrentes manire selon le systme dexploitation utilis par ces machines. Sous Linux, il suft dutiliser la commande suivante :
route add default gw passerelle eth0

o passerelle est ladresse de votre passerelle vers Internet sur le rseau local. Cette commande suppose que ladaptateur rseau utilis est eth0 La deuxime tape est ensuite de donner accs aux postes clients au DNS de votre fournisseur daccs. Cela permettra en effet dutiliser les noms de machines autres que ceux de votre rseau local. Encore une fois, la manire de procder dpend du systme utilis. Sous Linux, il suft dajouter les adresses IP des serveurs de noms de domaine de votre fournisseur daccs dans le chier de conguration /etc/resolv.conf.

9.5. Conguration des fonctions serveur


En gnral, les gens ne voient Internet que du point de vue client en terme darchitecture client / serveur. Cela signie quils se contentent de se connecter Internet, et nutilisent que des logiciels clients qui communiquent avec des serveurs situs sur Internet. Ce mode dutilisation est de loin le plus courant et celui qui convient la majorit des gens, qui nont en gnral mme pas conscience de lexistence du monde des serveurs. Cependant, il est parfois ncessaire de mettre en place des petits serveurs, sans forcment tre un fournisseur daccs Internet ou un hbergeur de site Web. Par exemple, il peut tre intressant de fournir la possibilit de raliser une connexion par tlphone un ordinateur distant que lon doit laisser allum pour une raison ou une autre, an de raliser une opration de maintenance. Il est galement possible de faire une liaison PPP entre deux ordinateurs par un cble srie pour changer des donnes, ou pour relier par lintermdiaire du rseau tlphonique deux rseaux spars physiquement. Cette section prsente donc les techniques de base permettant de paramtrer Linux pour accepter les communications entrantes, tant pour satisfaire aux demandes de connexion distantes que pour tablir une liaison PPP.

9.5.1. Paramtrage des connexions extrieures


Nous avons vu dans la Section 6.6 que le programme en charge de demander lidentication des utilisateurs sur les terminaux de login tait le programme getty. Ce programme ne permet aux utilisateurs que de sidentier. Lorsque quelquun saisit son nom, getty se contente de lancer le processus login pour que celui-ci ralise lauthentication de lutilisateur en lui demandant son mot de passe. En fait, getty peut trs bien lancer un autre programme que login si lidentication nest pas ncessaire sur le terminal quil gre, mais, en gnral, il faut identier les utilisateurs. Le programme getty est donc le point dentre par lequel il faut ncessairement passer pour utiliser le systme. Dans le cas des terminaux virtuels, getty utilise une ligne de communication virtuelle, mais il peut parfaitement utiliser une ligne de communication relle (cest dailleurs ce pour quoi il a t conu lorigine). En particulier, il est possible de lancer un processus getty sur une ligne srie, an de permettre lutilisation de terminaux rels connects sur le port srie correspondant.

279

Chapitre 9. Conguration du rseau La ligne srie sur laquelle le processus getty fonctionne nest pas forcment connecte un terminal physique. Elle peut parfaitement tre connecte un modem. Dans ce cas, les utilisateurs devront appeler le serveur pour se connecter laide dun logiciel dmulation de terminal. Il existe plusieurs logiciels permettant dappeler un ordinateur distant et dmuler un terminal. On citera par exemple le logiciel HyperTerminal de Windows, et les programmes Telix et Minicom. Ce dernier est couramment fourni avec les distributions de Linux, car cest un logiciel libre. En fait, il existe plusieurs variantes de getty, spcialises pour des usages spciques, et permettant de faciliter le paramtrage du chier de conguration /etc/inittab, dans lequel sont dnis les terminaux disponibles. Les distributions de Linux sont souvent fournies avec les versions suivantes :

mingetty, qui est un getty simpli, couramment utilis pour les terminaux virtuels ; mgetty, qui est une version spcialement conue pour tre utilise sur les lignes srie connectes un modem. mgetty est en particulier capable dinitialiser les modems, de dcrocher automatiquement la ligne lorsquil y a un appel, et de grer les principales commandes des modems compatibles Hayes ; agetty, qui est une version complte de getty, utilisable aussi bien sur les lignes srie (avec ou sans modem) que pour les terminaux virtuels. On utilisera de prfrence cette version si lon dsire proposer une connexion par lintermdiaire dun cble null-modem.

Note : Les cbles null-modem sont des cbles srie symtriques, qui permettent de relier deux ordinateurs par lintermdiaire de leurs ports srie. Ces cbles peuvent tre trouvs chez la plupart des revendeurs de matriel informatique (vous pouvez galement en fabriquer un vousmme si vous avez du temps perdre).

Connaissant les diverses possibilits de ces programmes, proposer un service de connexion extrieur est relativement simple. Il suft en effet de rajouter dans le chier de conguration /etc/inittab les lignes permettant de lancer les programmes getty sur les bonnes lignes. Par exemple, pour offrir une connexion modem sur le deuxime port srie (couramment appel COM2), on ajoutera la ligne suivante :
S1:23:respawn:/usr/sbin/mgetty -n 3 -s 38400 ttyS1

Cette commande indique init que mgetty doit tre relanc chaque fois quil se termine dans les niveaux dexcution 2 et 3. Il doit prendre le contrle de la ligne srie utilise par le chier spcial de priphrique /dev/ttyS1, utiliser la vitesse de communication de 38400 bauds sur cette ligne (option -s) et ne dcrocher quau bout de la troisime sonnerie (option -n). Vous pouvez bien entendu ajuster ces options en fonction de vos besoins. En revanche, si lon dsire offrir une possibilit de connexion sur un port srie par lintermdiaire dun cble null-modem, on utilisera plutt le programme agetty. La ligne ajouter dans le chier /etc/inittab sera alors :
S1:123:respawn:/sbin/agetty -L 38400 ttyS1

Notez que les options sont quelque peu diffrentes. La vitesse de la ligne est donne directement, et loption -L indique que la ligne srie utilise est locale et ne gre pas le signal de porteuse CD (abrviation de langlais Carrier Detect ) habituellement utilise pour dtecter les coupures tl-

280

Chapitre 9. Conguration du rseau phoniques. Encore une fois, vous pouvez adapter ces commandes selon vos besoins. Nhsitez pas consulter les pages de manuel des programmes mgetty et agetty pour obtenir plus de renseignements.
Note : Vous pouvez tester vos connexions srie laide de lmulateur de terminal minicom. Sil est install sur votre distribution, vous pourrez le lancer simplement en tapant la commande minicom. Si vous lutilisez sur une connexion directe (cest--dire par un cble null-modem), vous devrez utiliser loption -o, an dviter que minicom nenvoie les codes dinitialisation du modem sur la ligne srie. Il se peut que vous ne parveniez pas vous connecter sur vos ports srie. Dans ce cas, la premire des choses faire est de regarder les paramtres de la ligne srie laide de la commande stty. Vous devriez vous intresser tout particulirement la vitesse utilise, et ventuellement vous assurer que les deux ports srie des deux ordinateurs utilisent la mme vitesse, ou que le modem est capable de grer la vitesse utilise par le port srie. Si besoin est, vous pouvez modier la vitesse dun port srie laide de la commande stty. Par exemple, pour congurer le port srie COM2 la vitesse de 115200 bauds, vous devez taper la commande suivante :
stty -F /dev/ttyS1 ispeed 115200

9.5.2. Conguration des liaisons PPP


Le protocole PPP utilis par les fournisseurs daccs Internet est, comme son nom lindique ( Point to Point Protocol , ou protocole de liaison point point ), un protocole permettant de relier deux ordinateurs uniquement. Ce protocole est compltement symtrique, et la mise en place dun serveur PPP nest pas plus complique que celle dun client. Les liaisons PPP sont donc couramment utilises pour relier deux rseaux distants par lintermdiaire des lignes tlphoniques. Lorsque nous avons prsent la conguration des accs Internet, nous avons utilis des options spciques ce cas de gure an de grer le fait que les paramtres rseau sont imposs par le fournisseur daccs. Dans le cas dun serveur, ces paramtres ne sont pas ncessaire, puisque nous sommes cette fois la place du fournisseur daccs. En revanche, certains paramtres supplmentaires devront tre spcis, notamment pour congurer le modem an daccepter les connexions externes. En gnral, il faut lancer une instance du dmon pppd pour chaque ligne srie utilise pour les connexions entrantes, car pppd ne peut grer quune seule connexion la fois. Cette technique peut paratre lourde, mais en fait elle est relativement pratique, car elle permet de spcier des options spciques chaque ligne srie. Comme dhabitude, ces options peuvent tre spcies sur la ligne de commande de pppd, mais elle peuvent galement tre enregistres dans un chier de conguration. Le chier de conguration global /etc/ppp/options est gnralement utilis pour stocker les options communes toutes les lignes srie. Les options spciques chaque ligne sont enregistres quant elles dans les chiers options.ttySx, o ttySx est le nom du chier spcial de priphrique utilis pour accder cette ligne. Lusage de ces chiers de conguration permettent de simplier notablement les lignes de commandes utilises pour lancer pppd. La ligne de commande utiliser pour lancer pppd en mode serveur diffre peu de celle utilise pour tablir une connexion PPP en tant que client. Les deux principales diffrences proviennent du fait que :

le serveur doit spcier ladresse IP quil utilisera pour linterface PPP et ladresse IP quil donnera au client lors de ltablissement de la liaison ;

281

Chapitre 9. Conguration du rseau

le script chat utilis ne doit pas composer un numro, mais initialiser le modem pour quil rponde aux appels entrants.

Les adresses IP sont spcies en ligne de commande laide de la syntaxe suivante :


locale:distante

o locale est ladresse IP de linterface PPP du serveur, et distante est ladresse IP que le client recevra lorsquil se connectera. Ces deux adresses peuvent appartenir au mme rseau (auquel cas le lien PPP constitue un rseau en soi) ou non (le lien PPP constitue alors pas un pont entre deux rseaux distincts). Ainsi, loption suivante :
192.168.30.1:192.168.31.1

indiquera pppd que ladresse IP de linterface PPP locale sera 192.168.30.1, et que les clients qui se connecteront sur la ligne correspondante devront recevoir ladresse 192.168.31.1. Notez que les adresses utilises ici font partie des adresses IP rserves pour les rseaux locaux. Ce nest pas ce que font les fournisseurs daccs Internet en gnral, car ils disposent dun ensemble dadresses IP relles redistribuables, mais les adresses rserves sont parfaitement utilisables. Le seul cas o cela pourrait tre gnant serait si lon voulait faire passer les adresses des deux passerelles de la liaison PPP sur Internet, mais les paquets utilisant ces adresses ne circulent justement que sur cette liaison ( moins que les passerelles ne se trouvent sur des rseaux locaux et utilisent des adresses de ces rseaux pour la liaison PPP, auquel cas, de toutes manires, il faudrait utiliser la technique du masquerading pour connecter ces rseaux sur Internet). Le script dinitialisation du modem, quant lui, peut tre spci laide de loption init de pppd. Cette option fonctionne exactement comme loption connect que lon a utilise pour tablir la liaison tlphonique dans la Section 9.3.2. La diffrence est ici que lon ne cherche pas composer un numro de tlphone, mais plutt initialiser le modem pour quil dcroche automatiquement la ligne lorsquil reoit un appel. Il existe malheureusement plusieurs dialectes de langages de commandes utiliss par les modems. En gnral, chaque modem dispose donc de ses propres commandes, et il faut consulter sa documentation pour savoir leurs syntaxes. Malgr cela, ce nest pas trop gnant, car la plupart des modems sont compatibles avec le standard Hayes, dont les commandes sont bien connues. Pour linitialisation dun modem pour un serveur, les commandes dinitialisation suivantes seront trs utiles : Commande ATS0=n AT&C1 Signication Dcrochage automatique si n vaut 1, manuel si n vaut 0. Activation du contrle de la ligne CD ( Carrier Detect ) pour signaler les raccrochages des clients. Cette commande nest utile que si loption modem est passe en paramtre pppd sur sa ligne de commande. Activation du contrle de ux matriel (pour optimiser les changes de donnes entre le modem et lordinateur). Cette option ncessite dutiliser loption crtscts dans la ligne de commande de pppd.

AT&K3

Au nal, la ligne de commande utiliser est donc la suivante :


pppd port vitesse detach modem crtscts init "/usr/sbin/chat -v \ -f /etc/ppp/script" &

282

Chapitre 9. Conguration du rseau o port est le nom du chier spcial de priphrique utiliser pour cette connexion, par exemple /dev/ttyS0, vitesse est la vitesse de la ligne, par exemple 115200, et /etc/ppp/script est le nom du chier du script chat devant servir linitialisation du modem. Loption detach permet de demander pppd de se dtacher du terminal courant, an que lon puisse le lancer en arrire plan. Vous trouverez ci-dessous un script chat dexemple, permettant de spcier les options vues cidessus :
"" OK OK OK OK ATZ ATS0=1 AT&C1 AT&K3 ""

Note : Vous remarquerez quil nest pas ncessaire, contrairement ce que lon a vu lors de la conguration dun client PPP, de spcier le nom de lutilisateur et le protocole didentication et dauthentication utilis. Cela est normal, car le serveur na pas sidentier auprs de la machine cliente en gnral (il peut bien entendu le faire sil le dsire, mais dans ce cas seuls les clients capables de grer ce type de connexion pourront se connecter). En revanche, il peut tre ncessaire dexiger que les clients sidentient et sauthentient laide de lun des protocoles PAP ou CHAP. Pour cela, il suft simplement dajouter les noms des clients et leurs secrets respectifs dans les chiers de secrets /etc/ppp/pap-secrets et /etc/ppp/chap-secrets, et dajouter lune des options require-pap ou require-chap sur la ligne de commande du dmon pppd. Remarquez que le format des chiers pap-secrets et chap-secrets est le mme aussi bien pour les connexions entrantes que pour les appels vers lextrieur. Cela signie que lon doit donner dabord le nom du client, ensuite le nom du serveur, et ensuite son secret et enn la liste des adresses IP que les clients peuvent utiliser. Remarquez galement que la colonne spciant la liste des adresses IP ne doit pas rester vide lorsquon dsire crer un secret pour le serveur. En effet, pppd se base sur ladresse IP de la machine distante et sur le nom du client pour dterminer le secret utiliser lors de lauthentication. Cependant, si lon dsire utiliser les mmes secrets pour toutes les lignes (et donc pour toutes les adresses que le client peut se voir imposer), on pourra utiliser une toile. Cela signie que toutes les adresses correspondront la ligne, et seul le nom du client sera utilis pour dterminer le secret utiliser. Par exemple, si le serveur se nomme monserveur et le poste client sappelle jdupont, on utilisera la ligne suivante :
#Client jdupont Serveur monserveur Secret gh25k;f Adresses *

Lorsque la liaison PPP est tablie, le dmon pppd congure linterface rseau correspondante. Le protocole utilis par dfaut est bien entendu le protocole IP. En gnral, il est ncessaire de congurer cette interface an de spcier les rgles de routage permettant au client denvoyer et de recevoir des paquets. Lors de ltablissement de la liaison, le dmon pppd ajoute donc automatiquement une rgle de routage pour indiquer que tous les paquets destination de ladresse du client doivent passer par linterface ppp de la liaison courante. Cette rgle convient dans la majorit des cas, et en tout cas pour les fournisseurs daccs Internet, car le client ne dispose que dune seule machine. En revanche, si la liaison PPP est utilise pour relier deux rseaux, les rgles de routages par dfaut ne sufront plus, car des paquets destination de toutes les machines du rseau distant doivent tre envoys via linterface ppp (et inversement). Pour rsoudre ces petits problmes, on devra complter

283

Chapitre 9. Conguration du rseau ou modier les scripts /etc/ppp/ip-up et /etc/ppp/ip-down. Ces deux scripts sont appels par le dmon pppd respectivement lors de ltablissement de la liaison PPP et lors de sa terminaison. On placera donc les commandes de routage complmentaires dans le script ip-up, et on fera le mnage correspondant dans le script ip-down. Remarquez que ces deux scripts sont communs toutes les interfaces ppp que les diffrents dmons pppd peuvent utiliser. Ils sont galement utiliss lors de ltablissement dune connexion en tant que client. Leur modication devra donc tre entoure dun soin extrme. An de distinguer les diffrents cas dutilisation, ces scripts sont appels avec les paramtres suivants : Paramtre $1 $2 $3 $4 $5 $6 Signication Nom de linterface rseau (par exemple, ppp0 . Nom du chier spcial de priphrique de la ligne srie utilise (par exemple, ttyS0 ). Vitesse de la ligne srie. Adresse IP locale de linterface rseau. Adresse IP du client. Paramtre complmentaire, que lon peut passer au script laide de loption ipparam de pppd.

Un script classique fait un test sur le nom de linterface rseau et ajuste les rgles de routage en fonction de cette interface, en se basant sur les adresses IP locales et distantes reues en paramtre. La plupart des distributions fournissent un script dexemple que vous pouvez bien entendu modier soit directement, soit laide de leur outil de conguration. Le dmon pppd se termine chaque fois que la liaison PPP se termine. Ce comportement est normal pour un client, mais ce nest pas gnralement ce que lon cherche faire pour un serveur. Il faut donc relancer pppd rgulirement chaque fois quil se termine. Cela peut tre ralis en ajoutant sa ligne de commande dans le chier de conguration /etc/inittab dans les niveaux dexcution adquats. Comme init impose une taille rduite sur les lignes de commandes des programmes quil peut lancer, il est ncessaire dutiliser les chiers doptions de pppd. Par exemple, si lon veut assurer le service PPP pour une ligne entrante sur le deuxime port srie dans les niveaux dexcution 2 et 3, on utilisera la ligne suivante :
ppp1:23:respawn:/usr/sbin/pppd /dev/ttyS1 115200 \ 192.168.30.1:192.168.31.1"

avec les options suivantes actives dans le chier doptions /etc/ppp/options.ttyS1 :


# Initialisation du modem : init "/usr/sbin/chat -v -f /etc/ppp/client.ttyS1 # Protocole dauthentification : require-pap # Contrle de la ligne tlphonique : modem # Contrle de flux matriel : crtscts

284

Chapitre 9. Conguration du rseau

9.5.3. Liaison de deux ordinateurs par un cble srie


La connexion entre deux ordinateurs par lintermdiaire dun cble srie est un cas particulier des liaisons PPP. Les techniques utilises sont les mmes, mais plusieurs simplications importantes peuvent tre faites :

les deux ordinateurs sont relis directement par un cble null-modem, et aucun modem ne sintercale pour compliquer les choses. Par consquent, on peut supprimer les scripts chat dinitialisation et de connexion ; on a le contrle physique sur les deux ordinateurs, ce qui implique que les mcanismes didentication et dauthentication sont superus. Il est donc inutile de prciser les secrets PAP ou CHAP sur chaque machine ; il ny a que deux ordinateurs relier, donc les rgles de routages sont lmentaires ; enn, les adresses choisies sont connues davance et peuvent tre spcies de manire symtrique sur le client et le serveur.

Il dcoule de ces simplications que ltablissement dune liaison PPP au travers dun cble nullmodem est une opration trs facile. Comme vous allez le constater, le protocole PPP est effectivement symtrique. Sur le serveur , il suft de lancer par exemple la commande suivante :
pppd /dev/ttyS0 115200 192.168.30.1:192.168.31.1 detach crtscts &

Cette commande permet de lancer le dmon pppd sur le port srie COM1 (chier spcial de priphrique /dev/ttyS0) en utilisant la vitesse de 115200 bauds (vitesse maximale gnralement supporte par les ports srie des ordinateurs), en utilisant ladresse IP locale 192.168.30.1 et ladresse IP distante 192.168.31.1. Le dmon pppd doit se dtacher du terminal, car il est lanc en arrire plan. Enn, le contrle de ux matriel est utilis (option crtscts). La commande sur le client est absolument symtrique, puisque seules les adresses locales et distantes sont interverties :
pppd /dev/ttyS0 115200 192.168.31.1:192.168.30.1 detach crtscts &

Bien entendu, le port srie utilis peut tre diffrent de celui du serveur, mais il est impratif que les deux ports srie soient congurs pour utiliser les mmes paramtres de communication (vitesse, nombre de bits de donnes, bit de parit, bit darrt). Vous aurez donc peut-tre utiliser la commande stty pour xer ces paramtres sur le serveur et sur le client. Une fois ces deux commandes lances, la connexion PPP est tablie. Le dmon pppd ajoute alors automatiquement une rgle de routage pour acheminer les paquets dun ordinateur lautre. Vous naurez donc pas modier les scripts /etc/ppp/ip-up et /etc/ppp/ip-down. Comme vous pouvez le constater, lutilisation de PPP pour relier simplement deux ordinateurs nest pas une opration trs complique...

9.5.4. Installation dun proxy


Lors dune connexion Internet, bon nombre dinformations sont changes entre le serveur et le client. En particulier, lorsquon navigue, un certain nombre dimages et dinformations plus ou moins lentes tlcharger transitent systmatiquement. Or la plupart des gens visitent rgulirement les

285

Chapitre 9. Conguration du rseau mmes sites, dont seulement quelques pages sont modies entre deux visites successives. Par consquent, on peut se demander pourquoi les pages compltes devraient tre recharges chaque visite, si seulement quelques informations ont t modies. Cette question prend encore plus de sens lorsquon ralise un partage de connexion Internet. Il est tout fait concevable que plusieurs clients du mme rseau demandent plusieurs fois les mmes informations, ce qui provoque lengorgement du lien partag inutilement. Cest pour rsoudre ce genre de problme que les programmes que lon nomme proxies ont t dvelopps. Un proxy nest rien dautre quun programme qui sintercale entre des clients et un serveur. Il a pour principale fonction de mmoriser les rponses les plus courantes renvoyes par le serveur, an de rpondre la fois plus rapidement aux clients et dviter de surcharger le serveur. Il existe diffrents types de proxy, mais nous allons nous intresser uniquement aux proxies Web, qui permettent donc de stocker des pages Web en local an de soulager une liaison trop faible. Le principe de fonctionnement dun proxy est le suivant. Les navigateurs utiliss par les clients se connectent, en temps normal, directement sur le port 80 des serveurs Web. Leur conguration doit tre modie pour utiliser le proxy la place. De leur point de vue, le proxy se comporte comme un serveur Web capable de rpondre aux requtes des clients. Lorsquil peut le faire, il renvoie les donnes quil a stockes dans son cache. Sinon, il va les chercher directement sur Internet la place du client. Le cache est maintenu de telle manire que les donnes obsoltes ou les donnes les moins utilises sont supprimes, an de laisser la place aux donnes qui sont le plus souvent demandes et qui changent le moins. Pour utiliser un proxy, il faut donc modier la conguration des navigateurs des clients, an de donner ladresse de la machine sur laquelle le proxy fonctionne, ainsi que le port sur lequel il peut tre contact (gnralement, cest le port 8080).
Note : Il est galement possible dutiliser les mcanismes de translation dadresse du noyau pour rendre lutilisation du proxy transparente aux clients.

Il existe plusieurs proxies sur le march, mais le plus utilis sous Linux est sans doute squid. Cest un logiciel performant, puissant et libre, fourni avec la plupart des distributions modernes. Sa conguration peut tre relativement technique, mais nous nallons pas entrer dans tous les dtails. Il sagit simplement ici de donner un aperu des fonctionnalits disponibles. squid utilise le chier de conguration /etc/squid.conf pour lire ses options de fonctionnement. Ce chier contient en particulier les informations concernant le rseau, une liste de rgles indiquant qui a le droit de lui demander des pages Web, et lemplacement du cache dans lequel les donnes du cache seront enregistres. Loption la plus importante dans ce chier de conguration est sans doute cache_dir, qui indique lemplacement du cache ainsi que sa taille et sa structure. La syntaxe de cette option est la suivante :
cache_dir rpertoire taille n m

rpertoire est le rpertoire dans lequel le cache sera stock (usuellement /var/squid/cache/), taille est la taille de ce cache en mga-octets, et n et m deux nombres

donnant la structure de larborescence du cache. La signication de ces deux nombres doit tre explique un peu plus en dtail. Par dfaut, squid essaie de rpartir tous les objets quil place dans le cache de manire uniforme dans plusieurs rpertoires, an dacclrer les temps de recherche sur ces objets lorsquun client les demande. Il utilise cette n une fonction de rpartition (les programmeurs disent souvent une fonction de hash) qui indique dans quel rpertoire se trouve un objet. La recherche dans ce rpertoire se fait donc plus rapidement car, si la fonction de rpartition est bien faite (et cest le cas), les objets sont rpartis de manire quilibre dans tous les rpertoires du cache, qui sont donc tous relativement

286

Chapitre 9. Conguration du rseau peu peupls. En fait, squid peut stocker tellement dobjets que le nombre de rpertoires peut luimme devenir trs grand. Il utilise donc un dcoupage deux niveaux, les rpertoires du deuxime niveau tant rpartis dans les rpertoires du premier niveau. Le premier nombre spci dans loption cache_dir indique le nombre de rpertoires du premier niveau, et le deuxime nombre indique le nombre de sous-rpertoires dans chacun de ces rpertoires. En gnral, on utilise respectivement les valeurs 16 et 256 :
cache_dir /var/squid/cache 100 16 256

Cette ligne permet de cacher 100 Mo, en rpartissant les objets dans 4096 rpertoires rpartis en 16 groupes de 256 rpertoires. Les options suivantes spcient les paramtres rseau du cache :

loption http_port indique le port TCP que les clients doivent utiliser pour accder au proxy ; loption ftp_user permet de donner ladresse email utiliser comme mot de passe dans les connexion FTP anonymes ; loption cache_peer permet dintgrer le proxy local dans une hirarchie de proxies. Les proxies peuvent en effet tre organiss dans une structure arborescente. Lorsquun proxy dun niveau ne dispose pas dune donne demande par un client, il peut contacter ses frres pour le cas o ceux-ci auraient cette donne dans leurs caches, ou demander son proxy pre de rcuprer cette donne pour lui. Les proxies communiquent entre eux en utilisant un protocole ddi, le protocole ICP (abrviation de langlais Inter Cache Protocol ). En gnral, les petits rseaux ne disposent que dun seul proxy, loption cache_peer est donc souvent utilise de la manire suivante :
cache_peer pre parent port port_icp options

o pre est le nom du cache pre, port est son port, port_icp est le port utiliser pour les communications ICP, et options sont des options complmentaires. Parmi toutes les options possibles, on utilisera le plus souvent loption default, qui spcie les valeurs par dfaut des options, et no-query, qui permet de dire au cache de ne pas utiliser le protocole ICP (dans ce cas, le paramtre port_icp sera inutilis) ;

Loption prefer_direct permet dindiquer au proxy sil doit chercher avant tout rcuprer lui-mme les donnes qui lui manquent (valeur on) ou sil doit contacter dabord son proxy pre (valeur off). Si lon a spci un proxy pre laide de loption cache_peer, on aura intrt utiliser la valeur off ; Loption dns_children permet de donner le nombre de processus en charge de cacher les requtes sur les DNS. Les requtes de DNS font partie des requtes les plus courantes lorsquon navigue sur Internet. En effet, la moindre adresse, le moindre lien suivi ncessite une requte DNS. On pourrait limiter ce trac en installant un serveur DNS local, mais cest un peu compliqu et peut poser des problmes de scurit. squid propose donc une autre solution, qui consiste cacher les requtes DNS et fournir des processus locaux prenant en charge la rsolution de noms. Plus le rseau local est important, plus il faudra de tels processus, an que tous les clients puissent obtenir les adresses IP des machines partir de leur noms. La valeur par dfaut est de 5 processus, ce qui devrait convenir dans la plupart des cas.

287

Chapitre 9. Conguration du rseau Les valeurs donnes par dfaut toutes ces options conviennent dans la plupart des cas. Elles sont parfaitement documentes dans le chier de conguration squid.conf. Par dfaut, squid nautorise personne accder au cache. Il est donc ncessaire de donner les droits ncessaires pour permettre aux machines de votre rseau daccder au cache. La gestion de la scurit se fait par lintermdiaire de ce que lon appelle des ACL (abrviation de langlais Access Control List ). Une ACL est simplement un critre permettant de classier les requtes que le proxy reoit. Ces critres sont dnis laide du mot cl acl, suivi du nom de la liste, suivi lui-mme dun critre que toutes les requtes concernes par cette ACL devront vrier. Les critres sont eux-mmes exprims laide dun mot cl qui indique sur quoi porte le critre et des options de ce critre. Les principaux mots cls que vous pourrez utiliser sont les suivants :
src, qui permet de ltrer les requtes par les adresses des machines qui les ont mises, en indiquant

ladresse de leur rseau, donne sous la forme adresse/masque ;


dst,

qui permet de ltrer les requtes par leurs adresses destination ; qui permet de slectionner les requtes sadressant sur les ports fournis en paramtres ; qui permet de spcier la liste des protocoles utiliss par les requtes ; qui permet de slectionner les requtes HTTP par la mthode utilise dans la requte.

port,

proto,

method,

Ce tableau nest pas exhaustif, mais il permet davoir une ide des capacits de ltrage des requtes dont dispose squid. Vous trouverez ci-dessous quelques exemples pratiques de dnitions dACL :
# ACL caractrisant toutes les machines : acl all src 0.0.0.0/0.0.0.0 # ACL dfinissant la machine locale : acl localhost src 127.0.0.1/255.255.255.255 # ACL dfinissant les machines dun rseau priv local : acl localnet src 192.168.0.0/255.255.255.0 # ACL caractrisant le proxy lui-mme : acl manager proto cache_object # ACL spcifiant les ports accepts par le proxy : acl safe_ports port 80 21 443 563 70 210 1025-65535 # ACL dfinissant les requtes de connexion : acl connect method CONNECT

La dnition des rgles de scurit utilise les ACL de manire squentielle. Les rgles doivent tre donnes les unes aprs les autres, suivant le format suivant :
ressource politique ACL

o ressource est un mot cl indiquant la ressource sur laquelle la rgle de scurit porte, politique est laction prise pour les requtes vriant cette rgle, et ACL une liste dACL permettant de spcier les requtes concernes par cette rgle. La ressource la plus utilise est sans doute le protocole HTTP, que lon peut spcier laide du mot cl http_access. Les actions

288

Chapitre 9. Conguration du rseau peuvent tre lacceptation (mot cl allow) ou le refus (mot cl deny) de la requte. Enn, les requtes concernes par une rgle sont celles qui appartiennent toutes les ACL de la liste dACL indique. Vous trouverez ci-dessous quelques exemples de rgles de scurit courantes :
# Autorise les accs au gestionnaire de cache local : http_access allow manager localhost # Interdit les accs aux gestionnaires de cache trangers : http_access deny manager # Interdit les accs pour toutes les requtes provenant de port non autoriss : http_access deny !safe_ports http_access deny connect !safe_ports # Autorise les accs aux clients de la machine locale : http_access allow localhost # Autorise les accs aux machines du rseau local : http_access allow localnet # Politique par dfaut : http_access deny all

Notez que si une requte ne correspond aucune rgle, la politique par dfaut utilise par squid est de prendre laction oppose la dernire rgle spcie. En pratique, il est plus sage de toujours indiquer une politique par dfaut pour toutes les requtes restantes, par exemple en utilisant lACL all dnie ci-dessus. Lexemple de jeu de rgles de scurit donn ci-dessous convient pour un rseau local dadresses 192.168.0.0. Vous pouvez bien entendu modier les options de scurit comme bon vous semble. Encore une fois, rappelons que le chier de conguration de squid est trs bien documente et que sa lecture est relativement facile. Je ne saurais que trop vous recommander de le consulter si vous dsirez en savoir plus.

9.5.5. Conguration dun serveur DHCP


Le protocole DHCP est gr, au niveau serveur, par le dmon dhcpd. Ce dmon se congure par lintermdiaire du chier de conguration /etc/dhcpd.conf, dans lequel se trouvent les dnitions des rseaux congurer, ainsi que les diffrentes informations qui doivent tre communiques aux clients. Ce chier de conguration peut contenir plusieurs dclarations de rseau diffrentes, chacune tant introduite par le mot cl subnet. Ces dclarations permettent de dnir les options pour les clients de diffrents rseaux de manire indpendante, mais si certaines de ces options sont communes tous vos sous-rseaux, vous pouvez les factoriser en tte du chier dhcpd.conf. Par exemple, le chier de conguration suivant :
# Exemple de fichier de configuration dhcpd.conf : default-lease-time 600; max-lease-time 86400; option subnet mask 255.255.255.0; subnet 192.168.1.0 netmask 255.255.255.0 {

289

Chapitre 9. Conguration du rseau


range 192.168.1.10 192.168.1.100; range 192.168.1.150 192.168.1.200; option broadcast-address 192.168.1.255; option routers 192.168.1.1; option domain-name "monrezo.perso"; } subnet 192.168.53.0 netmask 255.255.255.0 { range 192.168.53.10 192.168.53.254; option broadcast-address 192.168.53.255; option routers 192.168.53.2; option domain-name "autrerezo.org"; }

permet de congurer les deux rseaux 192.168.1.0 et 192.168.53.0 en spciant un masque de sous-rseau gal 255.255.255.0 et une dure de bail dadresse IP par dfaut de 10 minutes (option default-lease-time) et maximale dun jour (option max-lease-time). Vous remarquerez que ces dernires options utilisent la seconde comme unit de temps. Comme vous pouvez le constater, la syntaxe du chier de conguration dhcpd.conf nest pas bien complique. Le mot cl subnet doit tre suivi de ladresse du rseau sur lesquels les clients congurer par DHCP se trouvent. Le mot cl netmask doit tre suivi quant lui par le masque de ce sous-rseau. Les adresses IP attribues aux clients peuvent tre choisies dans diffrentes plages de valeurs, chacune tant spcie par le mot cl range suivi de ladresse de dbut et de ladresse de n de la plage. Il est galement possible dattribuer des adresses xes certaines machines, avec la syntaxe suivante :
hardware ethernet 08:00:2b:4c:59:23; fixed-address 192.168.1.101;

o les mots cls hardware ethernet introduisent ladresse Ethernet de linterface rseau de la machine cliente, et o fixed-address spcie ladresse IP que cette machine doit utiliser pour cette interface. Enn, un grand nombre doptions peuvent galement tre spcies, par exemple pour dnir les adresses de diffusion (mot cl broadcast-address), les adresses des passerelles (mot cl routers), les noms de domaines (mot cl domain-name) ou encore les dures des bails accords aux machines clientes (mots cls default-lease-time et max-lease-time). La liste complte des options utilisables est donne dans la page de manuel dhcpd.conf et je vous invite la consulter si vous dsirez en savoir plus. Lorsque vous aurez rdig le chier de conguration adapt votre installation, il ne vous restera plus qu lancer le dmon dhcpd. Celui-ci utilise la syntaxe suivante :
dhcpd interface0 [interface1 [...]]

o interface0, interface1, etc., sont les interfaces rseau utilises pour accder aux rseaux congurer en DHCP. Ces interfaces doivent tre congures avec des adresses de rseau pour lesquelles il est possible de trouver une section subnet correspondante dans le chier de conguration /etc/dhcpd.conf. Enn, la commande de dmarrage du dmon dhcpd pourra tre place dans les chiers dinitialisation du serveur DHCP.
Note : Le dmon dhcpd utilise les fonctionnalits daccs direct aux cartes rseau et de ltrage des paquets du noyau Linux pour couter sur le rseau les demandes de conguration par DHCP des clients. Par consquent, vous devrez activer ces options dans la conguration du noyau si ce nest dj fait. Pour cela, il vous faudra cocher les options Packet socket , Packet

290

Chapitre 9. Conguration du rseau


socket: mmapped IO et Socket Filtering du menu Networking options . Vous devrez galement activer loption IP: multicasting dans la liste des options pour le protocole IP

an de permettre au dmon deffectuer des missions de paquets en mode broadcast. Le dtail de la conguration et de la compilation du noyau a t vu dans la Section 7.3.

9.6. Systmes de chiers en rseau


Lune des utilits principales dun rseau est de permettre le partage des chiers entre plusieurs ordinateurs. Cela ncessite de disposer dun systme de chiers rseau sur les machines qui dsirent accder des chiers dune autre machine, et dun programme serveur sur les machines ainsi accdes par les clients. Il existe deux grands standards de protocole pour les systmes de chiers en rseau. Le premier standard fonctionne quasiment exclusivement sous Unix, il sagit du protocole NFS (abrviation de langlais Network File System ), introduit originellement par Sun Microsystems et repris par la suite par les autres diteurs de systmes Unix. Le deuxime protocole est le protocole SMB (abrviation de langlais Server Message Block ), qui a t introduit par Microsoft pour les systmes DOS et Windows. Les deux protocoles sont incompatibles, et si les deux solutions fonctionnent parfaitement en environnements homognes, il est assez difcile de faire communiquer les deux types de systmes. Les principaux problmes proviennent de limpossibilit dutiliser le protocole rseau NetBIOS dIBM sur les machines Unix, et des limitations des systmes Microsoft en ce qui concerne la gestion des utilisateurs, les droits daccs et les liens symboliques. De plus, la diffrence de gestion des ns de lignes dans les chiers textes entre Unix et les systmes Microsoft pose des problmes qui peuvent difcilement tre rsolus de manire systmatique. Malgr ces limitations, les machines fonctionnant sous DOS ou Windows peuvent accder aux systmes de chiers NFS des machines Unix grce des programmes spciaux. Ces programmes sont souvent des extensions propritaires aux systmes Microsoft, et peuvent tre relativement coteux sans pour autant garantir une grande abilit et des performances honntes. Lutilisation de NFS sur les machines Windows ne sera donc pas traite ici. Inversement, les machines Unix peuvent accder aux partages Microsoft, mais l encore, il peut se prsenter des difcults. La principale difcult est ici la ncessit dencapsuler NetBIOS dans le protocole TCP/IP. En effet, le protocole SMB utilise les messages NetBIOS, protocole qui nest pas gr nativement par les machines Unix. Dans tous les cas, des logiciels complmentaires sont ncessaires.

9.6.1. Installation dun serveur de chiers NFS


Linstallation dun serveur NFS est la solution de prdilection pour le partage des chiers sous Unix. Il faut savoir cependant que NFS noffre pas des performances remarquables dune part, et quil ouvre des brches dans la scurit du systme dautre part. Comme il la t dit ci-dessus, linstallation dun serveur NFS requiert lutilisation de programmes spciques. Plus prcisment, NFS utilise deux dmons pour fournir les services NFS aux machines clientes. Ces deux dmons se nomment respectivement mountd et nfsd . Le premier dmon prend en charge les requtes de montage des systmes de chiers NFS, et nfsd effectue les requtes daccs aux chiers pour les clients. Par ailleurs, ces deux dmons utilisent les mcanismes dappels de procdure distance RPC (abrviation de langlais Remote Procedure Call de Sun Microsystems. Ces services sont dsormais disponibles sur toutes les machines Unix et constitue la norme

291

Chapitre 9. Conguration du rseau en la matire. Il est donc galement ncessaire de mettre en place les services RPC avant de lancer les dmons NFS. Le principe de fonctionnement des appels de procdures distance est le suivant. Chaque programme dsirant fournir des services RPC coute sur un port TCP ou UDP pour des requtes ventuelles. Les clients qui veulent utiliser ces services doivent envoyer leurs requtes sur ce port, en prcisant toutes les informations ncessaires lexcution de cette requte : numro de la requte et paramtres de la requte. Le serveur excute cette requte et renvoie le rsultat. Les bibliothques RPC fournissent les fonctions ncessaires pour effectuer le transfert des paramtres et les appels distance eux-mmes. En pratique cependant, les clients ne savent pas sur quel port le serveur RPC attend leurs requtes. Un mcanisme a donc t mis en place pour leur permettre de rcuprer ce port et communiquer ensuite avec le serveur. Chaque serveur RPC est identi par un numro de programme unique, ainsi quun numro de version. Lorsquils dmarrent, les serveurs senregistrent dans le systme en prcisant le port sur lequel ils couteront les requtes. Les clients peuvent alors interroger le systme distant pour demander le port sur lequel ils trouveront un serveur donn, partir du numro de programme et du numro de version de celui-ci. Il existe donc un service RPC particulier, nomm portmapper , qui fournit aux clients qui le demandent les numros de port des autres serveurs. Bien entendu, le portmapper doit tre toujours contactable, ce qui implique quil utilise systmatiquement le mme numro de port. Par convention, le portmapper est identi par le numro de programme 100000, et il coute les requtes des clients sur les ports 111 des protocoles TCP et UDP. La mise en place des serveurs de chiers passent donc par le lancement de ces trois dmons : le dmon portmapper, le dmon mountd et le dmon nfsd. Les chiers excutables de ces dmons sont respectivement portmap, rpc.mountd et rpc.nfsd. Ils sont normalement placs dans le rpertoire /sbin/ ou /usr/sbin/. Vous devrez donc lancer ces trois dmons sur la machine serveur de chiers, il est probable que votre distribution fasse le ncessaire dans ses scripts de dmarrage.
Note : Il est prvu dintgrer les fonctionnalits de serveur NFS dans le noyau de Linux. Cependant, le serveur de chiers du noyau nest pas encore nalis, et ne sera donc pas dcrit ici.

Une fois les dmons lancs, vous pourrez congurer les systmes de chiers exports par votre serveur. Ces systmes de chiers sont en fait de simples rpertoires que vous mettez disposition de certaines machines. La liste de ces rpertoires est place dans le chier de conguration /etc/exports. Chaque ligne de ce chier caractrise un rpertoire accessible par les autres machines du rseau. Ces lignes utilisent le format suivant :
rpertoire machines

o rpertoire est le chemin sur le rpertoire exporter, et machines est une liste de machines pouvant accder ce rpertoire. Cette liste contient des noms de machines, des adresses IP ou des noms de rseaux, spars par des espaces. Il est galement possible dutiliser les caractres gnriques ? et * an de spcier des groupes de machines. Des options peuvent tre utilises pour chaque machine, laide de la syntaxe suivante :
machine(options)

o machine est lune des entres de la liste de machines dune ligne du chier exports, et options est la liste des options pour cette entre, spares par des virgules. Les options les plus utilises sont bien entendu ro et rw, qui permettent de fournir cette machine ou ce groupe de machine respectivement un accs en lecture seule et en lecture et criture sur le rpertoire.

292

Chapitre 9. Conguration du rseau Le problme fondamental de NFS est la scurit. En effet, les chiers sont exports par dfaut avec un identicateur dutilisateur qui est celui qui possde le chier sur la machine serveur. Or il est tout fait possible que cet identicateur ne correspondent pas au mme utilisateur sur tous les clients. Cela signie que les utilisateurs des machines clientes peuvent parfaitement avoir accs des chiers qui ne leur appartient pas sur le serveur. Ce problme est fondamental, aussi faut-il le prendre en considration srieusement. NFS fourni plusieurs solutions pour assurer la scurit sur les systmes de chiers exports. La premire, qui est aussi la plus restrictive, est dattribuer les chiers exports un utilisateur ne disposant de quasiment aucun droit (opration que lon nomme souvent squashing de lutilisateur ). Cet utilisateur spcial est lutilisateur nobody , dont lidenticateur est 65534 par dfaut. Ainsi, tous les clients accdent ces chiers au nom de lutilisateur nobody, et ne peuvent donc pas modier les chiers du serveur. Le squashing de lutilisateur root est toujours ralis par dfaut, pour des raisons de scurit videntes. La deuxime solution est nettement moins sre. Elle ncessite de lancer le dmon ugidd sur chaque machine client. Ce dmon est appel par le serveur NFS pour dterminer lidenticateur des utilisateurs du client partir de leur nom. Ainsi, chaque chier est export avec lidenticateur de lutilisateur qui porte le mme nom que celui qui possde le chier accd sur le serveur. Les problmes de scurit poss par cette solution sont normes : rien ne garantit que deux utilisateurs distincts sur deux machines diffrentes ne puissent pas avoir le mme nom dune part, et un attaquant potentiel peut utiliser le dmon ugidd pour obtenir la liste des utilisateurs de la machine cliente dautre part (ce qui constitue dj la moiti du travail pour sintroduire dans le systme de la machine cliente). Cependant, cette solution est trs pratique pour les rseaux dont on contrle chaque machine, condition de restreindre laccs au dmon ugidd au serveur uniquement, par exemple en ayant recours tcpd. La troisime solution est de dnir sur le serveur lassociation entre les identicateurs des utilisateurs du serveur et les identicateurs du client, ce pour chaque machine cliente. Cette technique est sre, mais nettement plus complique mettre en uvre. Enn, la dernire solution est dutiliser les services dinformation du rseau NIS (abrviation de langlais Network Information Service ), qui permettent de dnir un certain nombre dinformations de manire globale sur un rseau. En particulier, il est possible de centraliser la dnition des utilisateurs et des mots de passe. Cette solution est trs lourde mettre en uvre, puisquelle ncessite de congurer NIS au pralable. Elle nest donc mise en place que sur les grands rseaux, et un particulier na pas de raisons dy recourir ( moins de vouloir explorer ces mcanismes bien entendu). Nous nen parlerons donc pas. Toutes ces techniques peuvent tre actives laide doptions fournies dans la liste des options pour chaque machine dclares dans le chier de conguration /etc/exports. Les options utilises sont dcrites ci-dessous :

loption all_squash permet dexporter tous les chiers comme appartenant lutilisateur nobody. Cest loption la plus sre, mais aussi la plus restrictive ; loption map_daemon permet dutiliser le dmon ugidd, qui doit tre lanc sur les machines clientes et accessibles du serveur. Laccs aux rpertoires exports sera refus si ce dmon ne peut tre contact par le serveur NFS. Cest certainement la solution la plus pratique pour un particulier ; loption map_static=fichier permet dutiliser un chier de correspondance des identicateurs des utilisateurs du serveur NFS sur les identicateurs des utilisateurs de la machine cliente.

Comme on peut le voir, cette dernire option permet de dnir spciquement, pour chaque machine, la correspondance des identicateurs dutilisateurs. Le chier fourni en paramtre loption

293

Chapitre 9. Conguration du rseau


map_static contient un certain nombre de lignes, chacune dnissant lassociation entre les iden-

ticateurs dutilisateurs de la machine distante et les identicateurs de ces utilisateurs sur le serveur. Ces lignes sont introduites laide du mot cl uid. Il est galement possible de donner les correspondances sur les groupes des utilisateurs avec le mot cl gid :
# Exemple de fichier de correspondance didentificateurs : # client serveur uid 0-99 uid 500-1000 1000 gid 0-49 gid 50-100 1000

Dans lexemple donn ci-dessus, les utilisateurs ayant un identicateur compris entre 0 et 99 inclus seront associs lutilisateur nobody (ils subissent le squashing ). Il en est de mme pour les groupes allant de 0 49. En revanche, les utilisateurs dont les identicateurs vont de 500 1000 sur la machine cliente se voient respectivement considrs comme les utilisateurs didenticateur 1000 1500 par le serveur NFS. De mme, les groupes didenticateurs 50 100 sont considrs comme les groupes didenticateurs 1000 1050. Lexemple qui suit va permettre dclaircir un peu ces notions. Il montre comment les trois types de contrle des identicateurs peuvent tre mis en place, pour trois types de clients diffrents :
# Exemple de fichier /etc/exports : # Rpertoire /pub : accessible de tout le monde, avec les droits # de lutilisateur nobody : /pub (ro,all_squash) # Rpertoire /home : accessible de toutes les machines du rseau local, # avec contrle des utilisateurs effectue par le dmon rpc.ugidd : /home *.monrezo.org(map_daemon) # Rpertoire /usr : accessible par la machine 192.168.5.2, avec mapping # des utilisateurs : /usr 192.168.5.2(map_static=/etc/nfs/192.168.5.2.map)

Le chier /etc/nfs/192.168.5.2.map utilis dans la troisime ligne dnit la correspondance entre les utilisateurs de la machine 192.168.5.2 et le serveur NFS :
# Fichier de correspondance pour 192.168.5.2 : # client serveur uid 0-99 uid 500 507 gid 0-49 gid 50 50

Notez que toute modication du chier /etc/exports doit tre signale aux dmons mountd et nfsd, pour quils puissent le relire. Cette notication peut tre effectue en envoyant le signal SIGHUP ces deux dmons. Les deux commandes suivantes sufront effectuer cette tche :
killall -HUP rpc.mountd

294

Chapitre 9. Conguration du rseau


killall -HUP rpc.nfsd

9.6.2. Conguration dun client NFS


Une fois la conguration du serveur NFS effectue, il ne reste plus qu congurer les postes clients. Bien entendu, la manire de raliser cela dpend du systme utilis. Nous allons voir ici comment accder un rpertoire export par un serveur partir dune machine fonctionnant sous Linux. Du point de vue du client, les chiers accds par NFS sont considrs comme des chiers normaux dun systme de chiers classique. Ils sont donc grs directement par le noyau, en tant que systme de chiers part entire. Lutilisation de NFS est donc directe, pour peu que lon ait activ les fonctionnalits NFS dans le noyau. Encore une fois, vous devrez modier la conguration du noyau si celui fourni avec votre distribution ne gre pas les systmes de chiers NFS (ce qui est fort peu probable). La seule fonctionnalit activer, en plus de la gestion du rseau bien entendu, est loption NFS filesystem support du menu Network File Systems (ce menu est un sous-menu du menu Filesystems si vous utilisez la conguration en mode texte). Lorsque le noyau sera compil et install, il sera capable dutiliser les systmes de chiers NFS nativement. Vous naurez donc pas besoin des dmons nfsd et mountd, tout sera pris en charge par le noyau. Cependant, si le serveur exporte ses rpertoires avec loption map_daemon, il sera ncessaire de lancer le dmon ugidd sur la machine cliente (le chier excutable se nomme rpc.ugidd et se trouve dans le rpertoire /usr/sbin/). Il est conseill de lancer ce dmon partir dinetd, en lencapsulant laide du dmon tcpd. Le montage dun systme de chiers NFS se fait classiquement, avec la commande mount. Il suft simplement ici de prciser le type de systme de chiers nfs avec loption -t, et dutiliser la syntaxe suivante pour le chier spcial de priphrique utiliser :
machine:rpertoire

o machine est le nom du serveur NFS, et rpertoire est le chemin absolu sur le rpertoire export par cette machine et auquel on dsire accder. Ainsi, si la machine mon.serveur.nfs exporte le rpertoire /mon/rpertoire/export , la commande suivante permettra de monter ce systme de chiers NFS dans le rpertoire /mnt :
mount -t nfs \ mon.serveur.nfs:/mon/rpertoire/export /mnt

Le systme de chiers NFS accepte des options permettant doptimiser les transferts dinformations. Ces options peuvent tre fournies en ligne de commande mount laide de loption -o. Les plus utiles sont sans doute rsize, qui permet de xer la taille des blocs de donnes transfrs pour la lecture des chiers, et wsize, qui permet de xer cette taille pour lcriture des chiers. Il est recommand dutiliser des paramtres raisonnables an dviter des erreurs de transfert et des pertes de donnes. La valeur par dfaut est 1024, mais il est recommand dutiliser des blocs de taille 8192 pour obtenir de meilleures performances. Ainsi, la commande suivante pourra tre optimise comme suit :
mount -t nfs -o rsize=8192,wsize=8192 \ mon.serveur.nfs:/mon/rpertoire/export /mnt

295

Chapitre 9. Conguration du rseau

Bien entendu, ces valeurs dpendent de la bande passante de votre rseau, et vous aurez sans doute effectuer des tests de transferts de chiers pour trouver les valeurs optimales.

9.6.3. Installation dun serveur de chiers SMB


Bien que les protocoles SMB et NFS soient profondment diffrents, les principes utiliss pour mettre en place un serveur SMB sont quasiment les mmes que ceux utiliss pour un serveur NFS. Linstallation dun serveur SMB requiert en effet lutilisation de deux dmons qui prennent en charge les services fournis par les serveurs de chiers SMB. Ces dmons utilisent tous deux le chier de conguration smb.conf, plac le plus souvent dans le rpertoire /etc/. Seuls les serveurs doivent faire fonctionner ces dmons, les clients Linux quant eux se contentent dutiliser le systme de chiers SMB du noyau. Ces dmons, ainsi que tous les outils ncessaires lutilisation du protocole SMB, sont fournis dans la suite logicielle Samba , dont le nom est videmment inspir de SMB . Cette suite logicielle est distribue sous la licence GNU et est donc compltement libre dutilisation. Elle est normalement fournie avec toutes les distributions. La version actuelle est la 2.2.4. Si ce nest pas celle fournie avec votre distribution, il est fortement recommand deffectuer une mise jour. Linstallation de Samba ne pose pas de problme particulier. Nous ne la dcrirons donc pas ici. Sachez cependant quelle est recommande mme sur les postes clients, car bien que les dmons ne soient pas lancs sur ceux-ci, les outils permettant de se connecter un serveur de chiers sont fournis avec Samba et restent ncessaires. Comme on la vu ci-dessus, le protocole SMB se base sur le protocole de bas niveau NetBIOS. NetBIOS est un protocole trs primitif, qui nutilise pas un mcanisme dadressage semblable celui de la plupart des protocoles modernes. Chaque machine est identie sur le rseau par un nom unique, quelle doit dclarer avant de pouvoir utiliser les ressources du rseau. Tout nouvel arrivant sur le rseau signale donc aux autres quil dsire utiliser son nom, an de dterminer si ce nom est dj pris ou non par une autre machine. Lun des plus gros dfaut de NetBIOS est tout simplement quil nest pas routable tel quel, et quil est impossible de structurer un rseau en se basant seulement sur les noms NetBIOS. Cest pour cette raison que lon encapsule souvent NetBIOS dans un protocole plus volu capable de traverser les routeurs, comme TCP/IP par exemple. Cest exactement ce que fait Samba, qui apparat donc comme un service rseau Unix classique permettant de comprendre les paquets NetBIOS encapsuls dans les paquets TCP/IP. Cette technique suppose videmment que tous les clients du rseau, y compris les postes Windows, soient congurs pour encapsuler NetBIOS dans TCP/IP. Lutilisation de TCP/IP est de toutes manires fortement recommande si lon veut raliser un rseau un tant soit peu srieux. Outre les noms dordinateurs, le protocole NetBIOS permet de dnir des groupes dordinateurs, qui contiennent tous les ordinateurs supposs changer des informations couramment. Un ordinateur ne peut faire partie que dun seul groupe, mais il peut galement ne faire partie daucun groupe sil le dsire. Ces groupes dordinateurs sont crs uniquement en fonction du travail quils ont effectuer, et ne sont a priori absolument pas lis leur emplacement gographique ni leur emplacement sur le rseau. Ainsi, il est possible de communiquer avec tous les ordinateurs dun groupe, un peu comme le protocole TCP/IP permet dutiliser des adresses de diffusion. Dans le monde Windows, ces groupes de machines sont plus couramment dnomms des workgroup , et il ny a en fait aucune diffrence technique. Pour le protocole SMB, chaque ordinateur du rseau doit faire partie dun groupe bien dni, bien que ce ne soit pas une ncessit au niveau de NetBIOS. Lorsquun groupe de travail possde une base de donnes centrale permettant de raliser lauthentication des utilisateurs lors des accs aux machines par le rseau, on dit quil sagit dun

296

Chapitre 9. Conguration du rseau domaine. En pratique, un domaine nest donc rien dautre quun groupe de travail dont fait partie un ou plusieurs serveurs dauthentication. Il existe plusieurs types de serveurs de domaine. Un serveur primaire est un serveur central, sur lequel se fait la gestion globale des utilisateurs. Outre un serveur primaire, un domaine peut galement contenir un ou plusieurs serveurs de sauvegarde si ncessaire. Comme leur appelation lindique, ces serveurs sont capables de remplacer le serveur primaire en cas de dfaillance de celui-ci. Ils maintiennent donc une copie des tables dutilisateurs, et la synchronisent rgulirement avec celle du serveur primaire. Enn, un domaine peut contenir des serveurs membres, qui sont comme des serveurs de sauvegarde, ceci prs quils ne peuvent pas remplacer le serveur de domaine primaire. Bien entendu, le domaine contient galement les stations de travail classiques, qui effectuent des requtes sur le serveur primaire. An de grer la liste des noms NetBIOS du rseau, Samba fournit le dmon nmbd . Ce dmon est essentiel au fonctionnement correct de Samba et doit donc toujours tre lanc. Il peut galement tre congur en tant que serveur WINS (abrviation de langlais Windows Internet Name Server ), an de pouvoir fournir les noms NetBIOS sur Internet. WINS est une technique dveloppe par Microsoft pour rsoudre le problme du nommage des postes de travail sur Internet. Un serveur WINS est donc NetBIOS un peu ce quun serveur DNS est TCP/IP. Le dmon nmbd est install classiquement dans le rpertoire /usr/bin/ ou dans le rpertoire /usr/sbin/. Vous devrez le lancer avec loption -D, faute de quoi il ne dmarrera pas en tant que dmon :
/usr/sbin/nmbd -D

Le deuxime dmon fourni par Samba est smbd . Celui-ci gre effectivement le protocole SMB, et est donc en charge deffectuer la gestion des utilisateurs et des partages. Il doit tre lanc galement avec loption -D si lon veut quil dmarre en tant que dmon. Ce dmon est normalement install au mme endroit que nmbd :
/usr/sbin/smbd -D

Vous pourrez ventuellement faire en sorte que ces dmons soient lancs automatiquement en modiant les scripts de dmarrage de votre systme. Une fois ces deux dmons lancs, votre machine Linux se comportera exactement comme une machine Windows serveur classique. Ainsi, les ressources partages par ce serveur seront accessibles par les clients SMB, comme les postes Windows par exemple. Malheureusement, la plupart des clients SMB ne grent pas les notions avances des systmes de chiers Unix. Le protocole SMB ne supporte dailleurs quune partie inme de ces fonctionnalits. Samba utilise donc une politique bien prcise pour effectuer la correspondance entre les chiers Unix et les chiers au sens des clients SMB. La premire difcult rsoudre concerne la gestion des droits daccs aux chiers des partages. Sous Unix, chaque chier et chaque rpertoire dispose de droits daccs, et seuls les utilisateurs autoriss peuvent les manipuler. Dans le monde Windows, il ny a quasiment pas de notion dutilisateur, et en gnral pas de gestion de la scurit. Seul Windows NT/2000/XP disposent de ces fonctionnalits, condition quils utilisent des systmes de chiers NTFS et que le type de partage utilis le permette. En fait, la gestion de la scurit se fait de manire globale, pour tous les chiers dun partage. Il existe principalement deux modes de contrle daccs aux partages SMB :

le contrle daccs au niveau ressource, qui se fait partir dun mot de passe unique pour la ressource, sans tenir compte de lutilisateur qui cherche y accder ;

297

Chapitre 9. Conguration du rseau

le contrle daccs au niveau utilisateur, qui ncessite de fournir un nom dutilisateur et un mot de passe.

Le contrle daccs au niveau utilisateur ncessite de se trouver dans un domaine, et non dans un simple Workgroup. Il faut donc disposer dun serveur de domaine an de raliser lauthentication des utilisateurs qui cherchent accder ces ressources. Pour des raisons commerciales, Microsoft sest arrang pour que seuls Windows NT, Windows 2000 et Windows XP serveur puissent servir de contrleurs de domaine, ce qui fait quil est impossible dutiliser le contrle daccs au niveau utilisateur sur un rseau ne disposant que de machines sous Windows 95, 98, ou NT/2000/XP client (heureusement, Samba est capable de servir de contrleur de domaine, cependant, nous ne verrons pas ce type de conguration). Il va de soi que le contrle daccs au niveau utilisateur est la seule solution rellement sre du point de vue de la scurit. Pour couronner le tout, les partages ne permettent que de xer les droits de lecture et dcriture pour celui qui accde aux chiers du partage. Les droits dexcution nont pas de signication sous Windows puisque, contrairement aux chiers Unix, le type des chiers est dtermin par leur extension. Les notions de scurit des partages sont donc profondment diffrentes de celles utilises par Unix, surtout pour le contrle daccs au niveau ressource, puisquaucun nom dutilisateur nest requis lors de lauthentication ! Mais ce nest pas tout. Les chiers Unix appartiennent tous un utilisateur et un groupe dutilisateurs, chose qui na pas de signication pour Windows. De plus, les systmes de chiers Unix font la distinction entre les majuscules et les minuscules dans les noms de chiers, ce que ne fait pas Windows. Et ils disposent de la notion de liens physiques et symboliques. Autant de problmes qui doivent tre grs par Samba.
Note : Le fait de ne pas disposer des informations concernant les droits des utilisateurs sur les chiers accds par SMB nempche pas le serveur de chiers de contrler les accs effectus par le client. Si par exemple, un chier est marqu comme tant en lecture seule, aucun client ne peut y crire, mme par lintermdiaire dun partage accd en lecture et criture.

Pour rsoudre tous ces problmes, Samba dispose dun grand nombre doptions, qui peuvent tre utilises dans le chier de conguration smb.conf. Ces options permettent dindiquer la manire dont lauthentication doit tre faite, les droits avec lesquels les chiers sont accds ou crs, les utilisateurs au nom desquels les chiers sont crs, et le comportement suivre lorsquun client essaie de suivre un lien symbolique. Seules les principales options gres par Samba seront dcrites ici. Les options avances seront laisses de ct, car Samba propose un nombre incroyable de fonctionnalits et les traiter toutes dpasserait le cadre de ce document. Vous pourrez trouver des informations complmentaires en cas de ncessit dans la documentation de Samba, ou bien dans lexcellent livre Using Samba de Robert Eckstein, publi aux ditions OReilly. Une version en ligne de ce livre est fournie avec les sources de Samba et complte ainsi la documentation ofcielle de ce programme. La plupart des distributions fournissent un chier de conguration /etc/smb.conf contenant la plupart des options par dfaut, plus quelques exemples de conguration. Par exemple, les rpertoires des utilisateurs sont souvent exports par dfaut. Vous pourrez bien entendu modier ce chier de conguration. Il est donc peut-tre ncessaire de donner quelques prcisions. Le chier smb.conf est structur en sections permettant de xer les paramtres de diffrentes fonctionnalits du logiciel. Chaque section est introduite par son nom, donn entre crochets. Certaines sections sont spciques Samba et dautres permettent de dnir les partages que vous dsirez crer. Les paramtres dnis dans les sections se prsentent sous la forme de couple paramtre = valeur , o paramtre est le nom dun des paramtres possibles dans cette section, et valeur est la valeur que ce paramtre peut prendre. Parmi les sections propres Samba, on compte la section [global] . Cette section est particulirement importante, car elle xe les paramtres globaux de Samba, ainsi que les valeurs par dfaut des

298

Chapitre 9. Conguration du rseau paramtres des autres sections. La section [global] suivante peut servir dexemple :
[global] # Dfinit le nom NetBIOS du serveur : netbios name = Linux server string = Linux fait la Samba (version %v) # Dfinit le nom du groupe de travail : workgroup = monrezo # Fixe les rgles de gestion de la scurit : security = user encrypt passwords = yes smb passwd file = /etc/samba/passwd # Dfinit la correspondance entre les noms dutilisateurs Windows # et les noms Unix : username map = /etc/samba/usermap # Dfinit le compte Unix utiliser pour invit : guest ok = no guest account = nobody # Dfinit les paramtres rseau : socket options = TCP_NODELAY interfaces = eth0 bind interfaces only = yes

Cette section commence par dnir le nom NetBIOS du serveur et sa description. Par dfaut, le nom utilis par Samba est le nom de domaine Unix de la machine, mais vous pouvez changer ce nom comme bon vous semble. Vous avez d remarquer que dans la description de la machine (mot cl server string), la version de Samba est rcupre avec %v. En fait, Samba dni un certain nombre de variables qui sont remplaces dynamiquement lors de la connexion un partage. Ainsi, %v reprsente la version de Samba utilise, %u reprsente le nom de lutilisateur qui se connecte, etc. Toutes ces variables sont dcrites dans la page de man du chier smb.conf. Le nom du groupe de travail dont fait partie la machine est ensuite introduit avec le mot cl workgroup. Dans le cas prsent, il sagit du groupe de travail monrezo . Viennent ensuite les options de scurit. Le mot cl security permet de dnir le mode de contrle daccs aux partages mis disposition des clients par le serveur Samba. La valeur user indique que ce contrle daccs se fait au niveau utilisateur, ce qui est le plus cohrent sous Unix. Chaque utilisateur doit donc fournir son nom et son mot de passe pour accder ces partages. Samba peut galement grer le contrle daccs au niveau ressource, si lon utilise la valeur share. Dans ce cas, Samba essaiera de retrouver lutilisateur qui cherche se connecter partir de son mot de passe. Il faut donc ajouter dans ce cas une ligne telle que celle-ci dans la section globale ou dans lune des sections dnissant un partage :
username = utilisateurs

o utilisateurs reprsente la liste des utilisateurs que Samba utilisera pour tester le mot de passe fourni. Bien entendu, si un nom dutilisateur est fourni par le client pour accder cette ressource, ce nom est utilis directement. Samba mmorisera galement ce nom pour les demandes daccs ultrieures la ressource partage. Cet algorithme nest pas trs sr, car un utilisateur peut se connecter

299

Chapitre 9. Conguration du rseau par hasard au nom dun autre. Aussi nest-il pas recommand dutiliser le contrle daccs au niveau ressources. Jusqu Windows 95 et Windows NT4 Service Pack 2 compris, les mots de passe fournis par les clients taient transfrs en clair sur le rseau. Cela ntant pas sr, Microsoft a dcid dadopter une nouvelle technique, dans laquelle les mots de passe transfrer sont encrypts par une clef fournie par le serveur. Ainsi, une personne mal intentionne coutant les paquets transfrs sur le rseau ne pourrait pas capter ces mots de passe. Samba est capable de grer les deux cas de conguration, laide de loption encrypt password. Cependant, si vous dcidez dactiver le cryptage des mots de passe, vous devrez galement crer un chier de mots de passe pour les clients SMB. Lemplacement de ce chier est indiqu avec loption smb passwd file. Le format du chier de mot de passe de Samba ressemble fortement celui du chier de mot de passe Unix /etc/passwd. Vous pourrez trouver dans la documentation de Samba une description dtaille de ce chier. Cependant, la chose la plus importante, cest bien sr de pouvoir ajouter des entres pour chaque utilisateur dans ce chier. Cette opration se fait avec lutilitaire smbpasswd. Excute sous le compte root, la commande suivante permet dajouter un utilisateur et de dnir son mot de passe :
smbpasswd -a utilisateur

o utilisateur est le nom de lutilisateur dont on veut crer un nouveau mot de passe. Lutilisateur peut bien entendu changer son mot de passe avec smbpasswd. Il est possible que les noms des utilisateurs Windows ne soient pas identiques leurs logins sur la machine serveur de chiers. En fait, il est mme possible que plusieurs utilisateurs utilisent un mme compte, cr uniquement pour les partages SMB. Samba fournit donc la possibilit dutiliser un chier de correspondance entre les noms des utilisateurs avec loption username map. Le format du chier de correspondance est trs simple, puisquil est constitu de lignes dnissant chacune une association entre un nom de login Unix et un nom dutilisateur Windows. Ces lignes utilisent la syntaxe suivante :
login = utilisateur

o login est le nom de login de lutilisateur sur la machine Unix, et utilisateur est le nom quil utilisera pour accder aux partages. Loption guest ok permet dautoriser les connexions sans mot de passe sous un compte spcial, que lon nomme le compte invit. Pour cela, il suft de lui affecter la valeur yes. Cette option peut tre xe no dans la section de conguration globale, et rednie dans les sections spciques de certains partages. Dans tous les cas, les connexions qui seffectuent en tant quinvit doivent utiliser un compte utilisateur Unix classique. Ce compte peut tre dni laide de loption guest account, en gnral, lutilisateur nobody utilis par NFS est le plus appropri. Enn, il est possible de dnir des paramtres rseau dans la section de conguration globale. Ces paramtres rseau permettent de xer des options de scurit complmentaires et des options doptimisation. Loption interfaces donne la liste des interfaces partir desquelles les demandes de connexion des clients seront acceptes. Ce type de contrle est activ lorsque le paramtre bind interfaces only prend la valeur yes. Ces options conviennent parfaitement pour un rseau local de particulier. Loption socket options quant elle permet de dnir les paramtres de fonctionnement des communications TCP. Loption TCP_NODELAY indique au systme denvoyer les paquets TCP ds que Samba le demande, sans chercher en regrouper plusieurs pour optimiser la taille des paquets. Cette option acclre signicativement le fonctionnement des programmes tels que Samba, qui utilisent beaucoup de petits paquets pour envoyer des requtes ou des rponses. Sans cette option, le systme chercherait regrouper ces paquets, mme si Samba nen a pas dautres envoyer, et ralentirait ainsi inutilement les transferts de donnes.

300

Chapitre 9. Conguration du rseau Chaque partage fourni par le serveur SMB dispose galement dune section, dont le nom est le nom utilis pour ce partage. Ces sections sont beaucoup plus simples que la section global, comme le montre lexemple suivant :
[Donnes] # Donne le chemin sur le rpertoire utilis par ce partage : path = /usr/share/samba/donnes # Description du partage : comment = Disque de donnes # Nom de volume Windows : volume = SMB-LNX # Options daccs : writeable = yes guest ok = yes

Comme vous pouvez le constater, loption path permet de dnir le rpertoire utilis pour stocker les chiers du partage. Ce rpertoire est un rpertoire du serveur, et le chemin doit donc obligatoirement tre un chemin Unix valide. En particulier, il faut tenir compte ici de la casse des noms de chiers. Loption comment donne la description du partage, telle quelle apparatrait dans le voisinage rseau de Windows. Le nom de volume quant lui est celui qui sera donn si un client Windows attache une lettre de lecteur ce partage. Il est spci laide de loption volume. Enn, les options daccs utilises dans cet exemple permettent dautoriser lcriture dans les chiers de ce partage, et dautoriser les accs en tant quinvit (cest--dire sans mot de passe). Samba dispose dune fonctionnalit intressante an de dnir automatiquement un partage pour chacun des rpertoires personnels des utilisateurs dclars dans le serveur. Lorsquun client cherche accder un partage qui nest pas dni par une section qui lui est propre, Samba tente de le localiser un rpertoire personnel dutilisateur portant ce nom. Sil le trouve, il utilisera ce rpertoire pour effectuer le partage automatiquement. Les paramtres de ce partage automatique sont dnis dans la section [homes], dont vous trouverez un exemple ci-dessous :
[homes] comment = Rpertoires personnels browsable = no writable = yes

Lutilisation de loption browsable = no ici sert simplement indiquer quil ne doit pas apparatre de partage nomm homes. En effet, ce qui est dsir ici, cest dexposer les noms des rpertoires personnels des utilisateurs, pas le partage homes lui-mme. Les autres options sont les mmes que pour les partages normaux. La section [homes] peut poser quelques problmes, puisquelle partage galement le compte root. Cela nest certainement pas le comportement dsir. Il est mme fortement recommand dinterdire les connexions pour les utilisateurs privilgis du systme. Cela peut tre ralis en utilisant loption invalid users :
invalid users = root bin daemon adm sync shutdown \ halt mail news uucp operator gopher

301

Chapitre 9. Conguration du rseau

En fait, il est conseill de placer cette option dans la section [global], an dinterdire les connexions de ces utilisateurs sur tous les partages. Enn, Samba fournit une fonctionnalit comparable la section [homes] pour les imprimantes partages. Il est en effet capable danalyser le chier de conguration /etc/printcap pour dterminer la liste des imprimantes installes, et les partager pour les clients Windows. Ces imprimantes apparatront donc comme des imprimantes partages classiques. Pour cela, il suft dajouter les lignes suivantes dans la section [global] du chier smb.conf :
[global] # Dfinit le type dimpression utilis (BSD sous Linux) : printing = bsd # Lit la dfinition # (type de commande printcap name = load printers = des imprimantes installes dans /etc/printcap BSD uniquement) : /etc/printcap yes

La premire ligne indique Samba le type de commande utiliser pour raliser une impression. Sous Linux, les commandes BSD sont utilises, aussi xe-t-on bsd loption printing. Les options concernant toutes les imprimantes que Samba trouvera peuvent tre prcises dans la section [printers]. Cette section joue donc le mme rle pour les imprimantes partages que la section [homes] joue pour les rpertoires personnels des utilisateurs. La section donne ci-dessous pourra vous servir dexemple :
[printers] comment = Imprimantes browseable = no printable = yes writeable = no guest ok = no path = /tmp create mode = 0700

Loption browseable a ici la mme signication que dans la section [homes]. On ne dsire en effet pas quun partage portant le nom printers apparaisse dans les voisinages rseau des machines Windows ! En revanche, loption printable permet dindiquer clairement que ces partages sont des imprimantes. Il est vident que lon ne peut pas crire sur une imprimante, loption writeable est donc xe no. Enn, les impressions ne sont autorises que pour les utilisateurs identis, et lutilisateur invit na pas le droit de soumettre un travail dimpression. Le mcanisme utilis par Samba pour imprimer un document est le suivant. Lorsquun client demande une impression sur une des imprimantes partages, Samba copie le chier que le client lui envoie en local. Ce chier est ensuite communiqu au gestionnaire dimpression Unix, en loccurrence lpr sous Linux. Celui-ci imprime le chier et le supprime du disque. Dans la section [printers], loption path permet dindiquer dans quel rpertoire les chiers temporaires envoys par les clients doivent tre stocks. Il est tout fait cohrent de les placer dans le rpertoire /tmp comme dans lexemple donn ci-dessus. Enn, il est logique de protger ces chiers contre les autres utilisateurs. Cela est ralis laide de loption create mode, qui xe les droits de ces chiers 0 pour tout le monde,

302

Chapitre 9. Conguration du rseau sauf pour le compte root, leur cration. Ainsi, seul les programmes fonctionnant sous le compte root (donc Samba et la commande lpr) peuvent lire, crire et effacer ces chiers. Il est bien entendu possible de dnir les imprimantes manuellement, raison dune section par imprimante. Ce type de conguration ne sera toutefois pas dcrit ici. Toute modication du chier de conguration de Samba implique de la signaler aux dmons smbd et nmbd. Cela peut tre ralis en leur envoyant un signal SIGHUP. Vous devrez donc taper les commande suivantes :
killall -HUP smbd killall -HUP nmbd

Comme on peut le voir, le chier de conguration smb.conf nest pas trs compliqu, mais utilise un grand nombre doptions. Heureusement Samba fournit loutil de conguration SWAT (abrviation de langlais Samba Web Administration Tool ), qui permet deffectuer la conguration de Samba graphiquement. Comme son nom lindique, SWAT joue le rle de serveur Web, et peut tre utilis avec nimporte quel navigateur en se connectant sur le port 901 de la machine sur laquelle il tourne. Pour que cela puisse fonctionner, il faut ajouter le service rseau swat dans votre chier de conguration /etc/services :
swat 901/tcp

Vous devrez galement ajouter une ligne dans votre chier /etc/inetd.conf, an que le dmon inetd puisse lancer SWAT automatiquement lorsquun client cherche lutiliser sur le rseau. Vous devrez donc ajouter la ligne suivante :
swat stream tcp nowait.400 root /usr/local/samba/bin/swat swat

et signaler inetd la modication de inetd.conf laide de la commande :


killall -HUP inetd

Vous pourrez alors accder la conguration graphique de SWAT laide dun navigateur Web, en utilisant simplement lURL suivante :
http://localhost:901

SWAT demandera bien entendu le nom de lutilisateur root et son mot de passe pour permettre la modication du chier smb.conf. Notez quil est fortement dconseill de laisser la possibilit de raliser un connexion Web sur le compte root, et que vous ne devriez pas autoriser les connexions non locales sur le port TCP 901. Lutilisation de SWAT ne pose pas vraiment de problmes et ne sera donc pas dcrite plus en dtail ici.

303

Chapitre 9. Conguration du rseau

9.6.4. Conguration dun client SMB


Lutilisation des volumes partags par lintermdiaire du protocole SMB sous Linux est trs simple. Elle se fait exactement comme pour NFS : il suft simplement de monter le volume dans un rpertoire vide de larborescence de votre systme de chiers. Pour que cela puisse tre ralisable, il faut bien entendu que le noyau supporte le systme de chiers SMB. Ce systme de chiers est considr par le noyau exactement comme le systme de chiers NFS : il sagit dun systme de chiers rseau. Vous pourrez donc activer le support de ce systme de chiers laide de loption de conguration SMB filesystem support (to mount WfW shares etc.) , que vous trouverez normalement dans le menu Network File Systems (ce menu est un sous-menu du menu Filesystems si vous utilisez le programme de conguration en mode texte). La compilation du noyau et son installation ont t dcrites en dtail dans la Section 7.3. Lorsque vous aurez congur et install ce noyau, vous pourrez monter les volumes partags par des serveurs de chiers SMB (quil sagisse de serveurs Linux ou Windows) exactement comme nimporte quel systme de chiers, et accder leurs ressources. Malheureusement, la commande mount du systme ne supporte pas encore compltement le systme de chiers SMB. Elle utilise donc un programme complmentaire nomm smbmount, fourni avec la distribution de Samba. Notez bien que ce programme ne fait pas ofciellement partie de Samba, il est seulement fourni en tant quutilitaire complmentaire pour Linux. Bien quil fasse galement partie dun paquetage indpendant, il est recommand dutiliser la version fournie avec Samba. Cela signie que vous devrez installer Samba sur les postes clients, mme si vous ne lancez pas les dmons smbd et nmbd. La commande standard mount du systme sera peut-tre modie un jour pour intgrer toutes les fonctionnalits de la commande smbmount, ce qui rendra inutile linstallation de Samba sur les postes clients. Quoi quil en soit, la syntaxe de la commande smbmount est trs simple :
smbmount partage rpertoire

o partage est le nom de partage du volume monter, et rpertoire est son point de montage (par exemple, /mnt/). Le nom de partage utilis est exactement le mme nom que celui utilis par Windows, ceci prs que les antislashs (\) sont remplacs par des slashs (/). Ainsi, pour monter dans /mnt/ le partage Donnes du serveur de chiers SMBSERVER, vous devrez utiliser la commande suivante :
smbmount //smbserver/donnes /mnt

Remarquez que le protocole SMB ne fait pas la distinction entre les majuscules et les minuscules (tout comme Windows dune manire gnrale), et que vous pouvez utiliser indiffremment les majuscules ou les minuscules. Lutilisation des slashs la place des antislashs dans le nom du partage est due au fait que lantislash est un caractre spcial que shell interprte comme tant la poursuite de la commande courante sur la ligne suivante. Vous pouvez utiliser des antislashs si vous le dsirez, mais dans ce cas, vous devrez mettre le nom de partage entre guillemets, pour empcher le shell de les interprter. Malheureusement, lantislash est galement un caractre dchappement dans les chanes de caractres, et est utilis pour introduire des caractres spciaux. tant lui-mme un caractre spcial, il doit lui aussi tre prcd dun antislash dchappement ! Il faut donc doubler tous les antislashs, et la commande prcdente devient particulirement longue et peu pratique avec cette syntaxe :

304

Chapitre 9. Conguration du rseau


smbmount "\\\\smbserver\\donnes" /mnt

Il est trs facile de faire des erreurs avec de telles commandes, aussi je ne vous la conseille pas. En fait, il est possible de faire en sorte que la commande mount classique du systme puisse tre utilise pour raliser les montages de partages SMB partir de la version 2.0.6. ou plus de Samba. Pour cela, il suft de crer dans le rpertoire /sbin/ un lien symbolique mount.smbfs vers la commande smbmount. Lorsquon utilisera la commande mount avec le type de systme de chiers smbfs, celleci utilisera ce lien et appellera ainsi automatiquement smbmount. Les paramtres fournis mount seront transmis tels quels smbmount. En particulier, vous pourrez utiliser une commande de ce type :

mount -t smbfs partage rpertoire

o partage et rpertoire sont toujours les noms de partage et de rpertoire devant servir de point de montage. Une fois le partage mont, vous pouvez lutiliser comme un systme de chiers classique. Lorsque vous aurez ni de lutiliser, vous pourrez simplement le dmonter, avec la commande smbumount :
smbumount /mnt

Il est galement possible dutiliser la commande systme classique umount, mais cela ncessite de repasser sous le compte root, ou de xer le bit setuid sur lexcutable de umount, ce qui est un norme trou de scurit. La commande smbumount en revanche peut tre setuid, car elle vrie que lutilisateur ne cherche dmonter que les partages quil a lui-mme mont. Le protocole SMB ne prend pas en charge la notion dutilisateur et de groupe dutilisateurs des systmes de chiers Unix classiques. Par consquent, le propritaire et le groupe des chiers accds par un partage SMB sont xs par dfaut lutilisateur qui a effectu le montage et son groupe. Cela est naturel et ne pose pas de problmes pour la plupart des utilisateurs, mais peut tre gnant lorsquon monte un partage en tant que root pour le compte dun autre utilisateur. En effet, celui-ci naura pas les droits dcriture sur les chiers du partage. Pour rsoudre ce problme, il est possible de prciser le nom de lutilisateur et son groupe laide des options uid et gid de la commande smbmount :
smbmount partage rpertoire -o uid=utilisateur,gid=groupe

o utilisateur et groupe sont respectivement les noms ou les numros de lutilisateur et du groupe auquel les chiers devront tre attribus. Les paramtres uid et gid peuvent galement tre utiliss avec la commande mount. Dans ce cas, ils sont passs tels quels smbmount. Vous laurez sans doute remarqu, la commande smbmount vous demande de taper un mot de passe pour accder au partage. Ce mot de passe est le mot de passe attendu par le serveur de chiers SMB. Pour Windows, il sagit du mot de passe attribu au partage. Pour les serveurs de chiers Samba, il sagit du mot de passe de lutilisateur au nom duquel se fait le partage, ou du mot de passe SMB enregistr dans le chier de mots de passe smbpasswd de Samba. Dans tous les cas, ce mot de passe est demand, mme sil est vide. La commande smbmount peut accepter une option password, qui permet de prciser ce mot de passe. Cependant, il est fortement dconseill de lutiliser, et ce pour deux raisons. Premirement, le mot de passe apparat en clair lorsquil est saisi, et la ligne de commande peut tre vue par nimporte quel utilisateur avec la commande ps. Cela pose donc un problme de scurit vident. Deuximement, loption password nest pas reconnue par la commande mount, et ne peut donc tre utilise quavec smbmount. Cest pour cela quune autre solution a t propose, bien

305

Chapitre 9. Conguration du rseau quencore imparfaite : dnir le nom dutilisateur et le mot de passe dans la variable denvironnement USER. Pour cela, il suft dutiliser la commande suivante :
export USER=utilisateur%secret

o utilisateur est le nom dutilisateur classique, et secret son mot de passe sur le partage monter. Cette technique nest pas non plus trs sre, et nest en aucun cas pratique. Aussi est-il recommand de toujours utiliser la commande smbmount directement, et de ne taper le mot de passe que lorsque celle-ci le demande.

306

Chapitre 10. Installation de XWindow


Linstallation de XWindow a t pendant longtemps une tche ardue et risque. prsent, il est possible dinstaller cet environnement relativement facilement, et en prenant beaucoup moins de risques que par le pass. En fait, les seules difcults dans linstallation de XWindow rsident en deux points stratgiques :

il faut imprativement connatre les caractristiques de son matriel (carte graphique et surtout moniteur) ; il faut disposer dun pilote adapt sa carte graphique pour le serveur X.

Le premier point nest pas rellement trop difcile rsoudre, puisquil suft souvent de regarder les ches techniques du matriel install. Bien entendu, cela suppose de les avoir conserves. Si ce nest pas le cas, il faut esprer que les programmes dinstallation connaissent la marque et le modle du matriel. Il reste toujours la possibilit de demander des renseignements des personnes qui ont galement ce type de matriel (cest l quInternet peut tre utile). Les informations les plus importantes sont les plages de frquences horizontales et verticales du moniteur, ainsi que les dures des signaux de synchronisation horizontale et verticale. Sans ces informations, vous ne parviendrez pas installer XWindow. Rassurez-vous cependant, les programmes de conguration de XWindow connaissent la plupart des moniteurs prsent, ce qui fait quils sont capables dcrire les chiers de conguration correctement sans que vous ayez spcier les paramtres du moniteur. Le deuxime point en revanche est plus dlicat. Bon nombre de fabricants de matriel tiennent secrtes les informations techniques permettant de programmer un pilote, parce quils considrent que ce sont des informations stratgiques. Il est vident que dans ce cas, aucun pilote libre ne peut tre crit. Depuis quelques temps, ce problme ne se pose plus rellement en ce qui concerne lafchage 2D, car le champ de bataille des constructeurs de cartes graphiques sest dplac vers le monde de la 3D. Dans le pire des cas, la carte graphique ne sera reconnue que par le pilote gnrique VESA, et lafchage se fera correctement mais avec des performances bien en de de ce quelles auraient t si un pilote appropri avait exist. Il est donc recommand de se renseigner dans les groupes de discussion sur Internet avant dacheter une carte graphique, ou dacheter une bonne carte graphique mais un peu obsolte. Il faut savoir que de toutes faons, les dernires fonctionnalits sont toujours intgres avec un train de retard sous Linux, car il faut au moins le temps dcrire les pilotes et de les tester. Dans peu de temps, Linux sera sans aucun doute reconnu comme un systme part entire par les fabricants, et il est probable quils fourniront des pilotes comme pour les autres systmes. En attendant, assurez-vous bien que ce que vous achetez fonctionne sous Linux. Il ny a que trois solutions si aucun serveur X adapt votre matriel nest fourni avec votre distribution :

soit le fabricant de la carte graphique fournit un serveur X pour Linux (ce qui est trs rare, mais commence arriver) ; soit on utilise le pilote VESA fourni avec XFree86, qui fonctionne avec toutes les cartes graphiques compatibles avec le standard VESA soit une socit tierce vend un serveur X pour ce type de matriel (ce qui est moins rare, mais a limmense inconvnient quil faut acheter ses pilotes) ;

307

Chapitre 10. Installation de XWindow Ce chapitre dcrit la manire de procder pour installer et congurer XFree86, une implmentation libre de XWindow. Il indique galement comment installer le serveur X pour le pilote de frame buffer du noyau. Linstallation des polices Truetype, qui sont si chres aux utilisateurs de Windows et des Macintosh, est galement traite. En revanche, il ne dcrira pas comment congurer les gestionnaires de fentres ni les gestionnaires de bureau, car ces oprations sont spciques celui que vous choisirez dune part, et spciques vos desiderata dautre part. Pour cela, vous devrez commencer vous dbrouiller tout seul, lire les pages de manuel et poser les questions quil faut aux personnes quil faut. Mais ne paniquez pas, si vous tes arriv jusquici, cest que vous commencez savoir vous dbrouiller. Vous ne devriez plus trop avoir de problmes pour tirer de Linux tout ce dont vous avez besoin...

10.1. Gnralits sur XWindow


Il est ncessaire de bien comprendre ce quest XWindow pour pouvoir le congurer et lutiliser. Son architecture se distingue en effet fortement de celle des environnements graphiques des systmes classiques comme Windows, OS/2 ou Macintosh, et ces diffrences se traduisent dans la manire de lutiliser. La principale diffrence entre XWindow et les autres environnement graphiques est quil sagit dun environnement graphique distribu sur un rseau. La notion de base de XWindow est que lapplication qui effectue le traitement ne ralise pas elle-mme la gestion de lenvironnement graphique. Comme on la dj vu, cette tche est prise en charge par le serveur X, qui est un processus indpendant. Lapplication est donc cliente du serveur X, qui lui fournit les services graphiques dont elle a besoin. Cette sparation a plusieurs consquences :

premirement, lenvironnement graphique est isol des fautes des applications qui lutilisent. Ainsi, ce nest pas parce quune application a plant en plein cran quon ne peut pas rduire sa fentre et accder nouveau au bureau sous-jacent. Inversement, une application est isole des erreurs potentielles du serveur X, et peut poursuivre son traitement mme si celui-ci sest termin. Par exemple, un processus de gravage de CD peut terminer le CD en cours mme sil a perdu son interface graphique ; deuximement, les clients doivent tablir une connexion avec le serveur. Cette connexion est ralise par lintermdiaire du rseau. Cela implique naturellement que les mcanismes de scurit lis au rseau sont applicables pour toutes les applications dsirant se connecter au serveur X. XWindow fournit par ailleurs des mcanismes de scurit complmentaires, et les ressources graphiques ne peuvent tre utilises que par les processus qui y sont autorises ; enn, comme le client et le serveur X sont deux processus distincts et quils communiquent par lintermdiaire dune connexion rseau, rien ninterdit de lancer le client et le serveur X sur deux machines distinctes. Ainsi, tout processus dport peut afcher ses donnes en local (et inversement).

Chaque client doit donc se connecter au serveur X avec lequel il dsire travailler. En pratique, il nexiste souvent quun seul serveur X sur une machine, mais cela nest pas une obligation. Par exemple, une mme machine peut disposer de deux cartes graphiques et de deux crans, et faire tourner deux serveurs X distincts. Une autre possibilit est dutiliser les deux crans avec un seul serveur X pour faire un cran virtuel beaucoup plus grand. Enn, il est tout fait concevable de lancer plusieurs fois un mme serveur X, mme si lon ne dispose que dune seule carte graphique et dun seul cran, an de pouvoir utiliser plusieurs terminaux X virtuels. Comme on le voit, larchitecture client/serveur de XWindow lui apporte une trs grande exibilit.

308

Chapitre 10. Installation de XWindow Les serveurs X utilisent la notion de display pour grer lafchage. En fait, un display est constitu dun clavier, dune souris et dun ou plusieurs crans. Le display est donc lextension de la notion de terminal pour XWindow. Notez bien quil est possible dutiliser plusieurs crans sur le mme terminal X. Cependant, un serveur X ne peut prendre en charge quun seul terminal X sur une machine, et chaque display est gr par un serveur X qui lui est propre. Si lon veut utiliser plusieurs terminaux X sur une mme machine, il est ncessaire de lancer plusieurs serveurs X, raison dun par terminal. Les clients qui dsirent se connecter un serveur X doivent donc indiquer le display avec lequel ils dsirent travailler. Le systme XWindow se chargera dtablir la connexion avec le serveur X en charge de ce display. Les displays sont spcis avec la syntaxe suivante :
machine:display

Comme on le voit, la prsence du champ machine conrme que XWindow est bien un systme graphique rseau. Il peut contenir directement le nom de la machine ou son adresse IP. Si ce champ est absent, le serveur contact sera lun des serveurs X de la machine locale, avec un protocole de communication optimis. Le champ display quant lui est un numro permettant didentier le display de la machine en question qui doit tre utilis. Cest ce champ qui dterminera le serveur X qui sera utilis, dans le cas o plusieurs serveurs X fonctionnent sur la mme machine. Un display pouvant avoir plusieurs crans, il est possible de spcier lcran sur lequel lafchage doit tre ralis. Pour cela, il suft de sufxer le nom du display par un point suivi du numro de lcran :
machine:display.cran

o le champ cran spcie le numro de lcran de ce display sur lequel lafchage doit avoir lieu. Ce champ sera rarement utilis en pratique, car il est assez rare de disposer de plusieurs crans. Il peut donc tre omis, la valeur par dfaut utilise est dans ce cas 0 (pour le premier et unique cran du display). Figure 10-1. Notion de display

Une fois la connexion tablie, les programmes clients continuent dindiquer XWindow le display qui doit tre utilis pour chaque opration graphique effectuer. Il est donc possible pour un programme

309

Chapitre 10. Installation de XWindow de rpartir son afchage sur plusieurs crans, voire de communiquer avec plusieurs serveurs X et donc de grer plusieurs displays simultanment, ventuellement sur des machines diffrentes. Ce genre de programme est cependant assez rare, et ne se trouve en pratique que dans le monde de la conception assiste par ordinateur, la visualisation dimages mdicales et larchitecture. Les programmes classiques se contentent dun seul display et effectuent toutes leurs oprations sur un mme cran. En revanche, il est possible de congurer les serveurs X pour utiliser automatiquement plusieurs crans pour un mme display, an de raliser un cran virtuel gigantesque. Le display utilis pour un programme doit donc souvent tre x par un paramtre de sa ligne de commande. Loption utilise est -display, avec la syntaxe suivante :
programme -display nom

o programme est le programme excuter, et nom est le nom du display tel quil a t dcrit cidessus. Par exemple, la commande suivante :
xterm -display :0

permet de lancer le programme xterm et de raliser lafchage sur le display :0 (sur lcran par dfaut) de la machine locale. Vous pouvez cependant vous passer de loption -display, condition de dnir la variable denvironnement DISPLAY pour xer le display par dfaut. Vous pouvez xer la valeur de cette variable laide dune commande telle que celle-ci :
export DISPLAY=:0.0

(si vous utilisez bash). Dans cet exemple, le serveur X utiliser se trouve sur la machine locale, le display porte le numro 0, et lcran utiliser est le numro 0. En gnral, cette variable denvironnement est xe la valeur du display courant lorsquon est connect sous XWindow. Par consquent, vous pouvez lancer vos programmes sans avoir vous proccuper du display quils doivent utiliser. En revanche, vous serez oblig de prciser le display utiliser lorsque vous lancerez une application distance en voulant avoir lafchage en local. Bien entendu, vous devrez au pralable donner les droits lutilisateur distant sur votre display local, faute de quoi les mcanismes de scurit de XWindow lui interdiront de se connecter (message derreur Cant open display ). Nous verrons plus loin la manire dont XWindow gre la scurit.

10.2. Conguration de XFree86


La conguration de XFree86 commence avant tout par linstallation du serveur X. Un mme serveur X peut prendre en charge plusieurs cartes graphiques sur une mme machine, pourvu quil dispose des pilotes adquats. Inversement, il est possible de lancer plusieurs serveurs X, chacun utilisant sa propre carte graphique, ou partageant la mme carte si la machine na quun seul terminal X. XFree86 fournit un unique serveur X, qui prend en charge tous les types de cartes graphiques laide de pilotes spciques. Dans une installation normale, ces pilotes sont fournis sous forme de modules de ce serveur. Les pilotes peuvent ainsi tre chargs dynamiquement par le serveur X, selon la conguration du systme. Cette architecture permet un mme serveur X de charger plusieurs pilotes pour plusieurs cartes graphiques, an de grer les congurations disposant de plusieurs crans connects des cartes graphiques de diffrents types. Il est donc ncessaire que les modules prenant en charge vos cartes graphiques soient installs, ce qui est normalement toujours le cas.

310

Chapitre 10. Installation de XWindow Par convention, le nom du serveur X est toujours X. Comme le nom du chier programme du serveur X de XFree86 est XFree86 (on sen serait dout...), il doit exister un lien symbolique /usr/X11/bin/X qui pointe vers le chier /usr/X11R6/bin/XFree86. Ce lien est, encore une fois, normalement toujours prsent sur les systmes correctement congurs. Une fois XWindow install, la suite de la conguration de XFree86 se fait uniquement dans le chier de conguration XF86Config. Ce chier est classiquement stock dans le rpertoire /etc/X11/. Normalement, vous ne devez pas crer ce chier vous-mme. Votre distribution doit au moins vous en fournir un par dfaut et, souvent, elle dispose dun outil de conguration de XFree86 convivial qui fera quasiment tout le travail pour vous. Ce genre doutil est de plus capable de congurer XFree86 pour les pilotes spciques fournis avec les distributions (il nest pas rare que les socits ditrices de distributions dveloppent des serveurs X pour les nouvelles cartes graphiques). Lisez donc votre documentation pour plus de dtails ce sujet. Vous pouvez galement utiliser les programmes de conguration fournis avec XFree86, qui vous permettront de gnrer ce chier. Il existe trois possibilits pour gnrer un chier de conguration XF86Config. La premire mthode est de demander directement au serveur X de dtecter le matriel prsent sur votre machine et de gnrer le chier XF86Config correspondant. La deuxime mthode, qui est aussi la plus sre, est dutiliser le programme xf86cong. Il sagit dun outil fonctionnant en mode texte, qui est effroyablement peu pratique utiliser. Enn, un autre outil, beaucoup plus convivial, est en cours de dveloppement. Il sagit de xf86cfg. Cet outil permet de gnrer et de modier les chiers xf86cfg de manire conviviale, soit en mode texte avec des menus, soit en mode graphique. Lorsque cet outil sera termin, la conguration de XFree86 sera beaucoup plus aise. Encore une fois, je ne saurai que vous recommander dutiliser loutil de conguration fourni avec votre distribution.

10.2.1. Gnration automatique du chier XF86Cong


Le serveur X de XFree86 est capable de dtecter le matriel install sur une machine et de gnrer un chier de conguration XF86Config adapt ce matriel. Pour cela, il suft simplement de le lancer avec loption -configure sous le compte root, comme dans lexemple suivant :
XFree86 -configure

lissue de cette commande, le serveur X crira un chier XF86Config.new dans le rpertoire personnel de lutilisateur root. Cependant, le chier de conguration ainsi gnr nutilisera que les options de conguration les plus sres et devra souvent tre rvis compltement. En pratique, seuls les paramtres de la carte graphique et de la souris seront correctement dtects. Il ne faut donc utiliser cette fonctionnalit que dans le but dobtenir un squelette de chier XF86Config, que lon personnalisera ensuite. Ce chier pourra tre copi dans le rpertoire /etc/X11/ sous le nom XF86Config une fois quil aura t corrig.

10.2.2. Utilisation de xf86cong


Comme il la t indiqu plus haut, xf86cong est un programme fonctionnant en mode texte exclusivement. Son principe de fonctionnement est trs simple : il pose une srie de questions sur votre matriel, puis il gnre un chier XF86Config gnrique pour votre matriel. Vous pourrez ensuite partir de ce modle pour personnaliser votre conguration et pour prciser les paramtres que xf86cong ne prend pas en charge.

311

Chapitre 10. Installation de XWindow Le principal problme de xf86cong est quil ne laisse pas droit lerreur. La moindre faute de frappe ou la moindre hsitation est prise comme une rponse valide, et il est impossible de revenir en arrire. Cela est dautant plus nervant que dans ce cas, il ne reste plus quune solution, qui est de tout recommencer partir du dbut. Aprs trois ou quatre erreurs, on nit par faire extrmement attention ce que lon tape. Lorsquon lance xf86cong, il commence par afcher un message indiquant quil va crer un nouveau chier de conguration XF86Config que lon pourra utiliser par la suite comme point de dpart pour paramtrer son systme XWindow. Il faut valider pour passer ce message et commencer la conguration proprement dite. La premire question que xf86cong pose est le type de la souris que vous voulez utiliser. Il existe un grand nombre de types de souris sur le march, cependant seuls deux types sont rellement courants. Initialement, les souris se connectaient sur le port srie des ordinateurs. Ces souris, dites souris srielles, taient relativement rpandues et sont gnralement rfrences sous le terme de compatible Microsoft . Il faut donc utiliser loption Microsoft compatible (2-button protocol) pour ces souris. Notez que certaines souris srielles utilisent un protocole diffrent pour grer un troisime bouton. Si vous disposez dune telle souris, il faut choisir loption Mouse Systems (3-button protocol) . Plus rcemment, le port PS/2 est apparu pour les claviers et les souris. Ce port permet de grer directement la plupart des souris actuelles, et il est probable que votre souris soit une souris PS/2. Loption utiliser est cette fois loption PS/2 Mouse . Il faut surtout ne pas confondre les souris PS/2 avec les souris bus (que lon peut utiliser avec loption Bus Mouse ), qui sont des souris relativement peu rpandues et qui utilisaient des bus spciaux. Les autres options sont rserves des souris peu rpandues. Si vous en utiliser une, vous devez choisir loption correspondante. Notez que les souris molette connectes sur le port PS/2 utilisent un protocole de communication lgrement diffrent de celui que les autres souris PS/2 utilisent. Malheureusement, xf86cong ne propose pas doption pour ces souris, et une intervention manuelle dans le chier de conguration XF86Config est ncessaire pour les congurer. La manire de procder sera dtaille dans la Section 10.2.4. La question suivante demande si vous dsirez activer la fonctionnalit dmulation dun troisime bouton pour les souris deux boutons. Cette mulation permet dutiliser les nombreux programmes pour XWindow qui ncessitent dutiliser une souris trois boutons. Le clic sur le troisime bouton est alors simul en appuyant sur les deux boutons de la souris simultanment. Il est trs vivement recommand de rpondre par y cette question si votre souris ne dispose que de deux boutons. En revanche, si elle dispose de plus de trois boutons, ou si elle dispose dune roulette, il faut rpondre par la ngative. xf86cong demande ensuite le port sur lequel votre souris est connecte. Ce port est gnralement le port /dev/ttyS0 pour les souris srielles et /dev/psaux pour les souris PS/2. Les distributions crent souvent un lien symbolique /dev/mouse sur le port effectivement utilis par la souris, si bien que la rponse par dfaut utilise ce port. Cest la rponse recommande, validez donc pour passer la question suivante. Vient ensuite la slection du type de clavier. Encore une fois, un certain nombre de modles de claviers ont t vendus sur le march. Cependant, seuls quelques-uns sont rellement rpandus. En France, on trouve essentiellement les claviers internationaux 102 touches et 105 touches, auxquels correspondent les rponses Generic 102-key (Intl) PC et Generic 105-key (Intl) PC . Si vous utilisez un clavier Microsoft Natural Keyboard, choisissez loption Microsoft Natural . Vous devrez ensuite indiquer la disposition de ce clavier. Il faut videmment choisir loption French . xf86cong demande alors de saisir un nom de variante pour le clavier choisi. Comme le

312

Chapitre 10. Installation de XWindow clavier franais nest dclin que sous une seule variante, vous pouvez simplement valider pour passer la suite de la conguration du clavier. xf86cong vous propose alors de modier des paramtres additionnels du clavier (emplacement des touches modicatrices telles que les touches de majuscule, de contrle et de jeu de caractres alternatif, tat des diodes, etc.). En gnral, cela nest pas ncessaire et vous pouvez rpondre n cette question. La partie difcile vient ensuite. xf86cong vous le signale avec un message indiquant que les informations de synchronisation horizontale et verticale sont extrmement importantes pour congurer correctement les modes vido. La signication de ces valeurs vous sera dcrite plus loin en dtail, pour linstant, contentez-vous de rcuprer le manuel de votre moniteur et recherchez ses caractristiques prcises. Validez ensuite pour passer la question suivante. xf86cong vous demande alors la plage de frquences horizontales que votre moniteur est en mesure daccepter. Il propose un certain nombre de choix standards, qui correspondent aux diffrents types de moniteurs existant sur le march. Cependant, ces valeurs sont les plus mauvaises, car il est fort probable que votre moniteur sache faire mieux que ce que les standards imposent. Vous devez donc soit accepter une des plages de valeurs proposes, soit saisir la plage correspondant exactement votre moniteur laide de loption Enter your own horizontal sync range . Si vous choisissez cette dernire option, vous devrez ensuite saisir la plage de valeurs des frquences horizontales de votre moniteur. Ne les inventez pas, cela ne marchera pas. Saisissez les vraies valeurs. La mme question est alors pose pour la plage de frquences verticales. Encore une fois, vous pouvez choisir lune des plages proposes selon le type de votre moniteur, ou saisir vous-mme la plage de frquences cite dans ses caractristiques techniques laide de loption Enter your own vertical sync range . lissue de cette question, xf86cong vous demande de saisir le nom du moniteur que vous venez ainsi de congurer. Ce nom est arbitraire, il ne sert que pour lidentier de manire lisible par la suite. Entrez, par exemple, le nom du modle de lcran dont vous disposez. La question suivante vous demande simplement si vous dsirez choisir votre carte graphique dans la liste des cartes graphiques supportes par XFree86. Il est recommand de rpondre par lafrmative en tapant y. xf86cong afche alors la liste des cartes gres, qui est assez longue. En fait, elle se prsente sur plusieurs pages, et il faut appuyer sur la touche Entre pour passer dune page la suivante. Si vous avez pass une page de trop, vous tes bon pour passer toutes les pages pour revenir la premire, avant daller sur la page contenant votre carte graphique. Lorsque vous aurez trouv votre carte, choisissez loption correspondante et validez. Si votre carte nest pas prsente dans la liste, cela ne signie pas quelle nest pas supporte par XFree86. En effet, chaque pilote est capable de prendre en charge un type de puce lectronique, et il arrive que plusieurs cartes graphiques soient bases sur une lectronique provenant dun mme fabricant. Cest la raison pour laquelle les pilotes de XFree86 portent gnralement le nom des puces utilises par les cartes. Par consquent, si vous ne trouvez pas votre carte dans la liste, vous pouvez essayer de spcier le pilote correspondant llectronique de votre carte. Dans le pire des cas, vous pourrez quasiment toujours utiliser le pilote gnrique VESA, qui permet de piloter toutes les cartes graphiques compatibles avec les standards VESA 2.0. Cependant, vous ne bncierez daucune acclration matrielle avec ce pilote. Les questions qui suivent dpendent fortement de la carte slectionne. En effet, chaque carte peut avoir besoin dun certain nombre de paramtres complmentaires pour fonctionner. Encore une fois, ces paramtres sont, normalement, indiqus dans le mode demploi de votre carte graphique ou, au pire, sur les composants de la carte eux-mmes. Une des questions courantes concerne la quantit de mmoire vido dont cette carte dispose. Pour cette question, les choix les plus courants sont proposs, mais vous pouvez galement spcier vous-mme cette quantit laide de loption Other . Lunit est ici le kilo-octet, pensez donc bien multiplier par 1024 le nombre de mga-octet de mmoire vido de votre carte graphique avant de saisir la valeur. Lorque la conguration de la carte

313

Chapitre 10. Installation de XWindow graphique sera termine, xf86cong vous demandera de saisir le nom de cette carte. Encore une fois, ce nom est arbitraire, mais vous devriez saisir un nom cohrent avec votre modle. xf86cong vous propose alors de modier lordre dutilisation des modes graphiques pour chaque profondeur de couleur. Cet ordre doit tre spci en donnant les numros des diffrents modes, les uns aprs les autres, et en ne les sparant pas par des espaces. Par exemple, le nombre 432 slectionnera les modes 4, 3 et 2, soit les modes 1024x768, 800x600 et 640x480. Notez que lordre des numros est important, cest lordre dans lequel ces modes seront choisi lorsquon basculera de lun lautre. Lorsque vous aurez saisi les modes graphiques utiliser et leur ordre dapparition, xf86cong vous proposera dutiliser un cran virtuel de taille suprieure la rsolution physique du plus grand des modes graphiques choisi. Cela signie que la rsolution de lafchage sera suprieure celle de votre cran, et que XWindow fera dler automatiquement limage afche lorsque la souris sortira de la portion dimage visible. Il est en gnral conseill de rpondre par la ngative cette question, car cela peut tre facilement droutant. Cependant, cest une affaire de got, et vous tes libre daccepter ce comportement. Notez que quelle que soit la rponse que vous donnerez, XWindow utilisera comme rsolution logique la rsolution du plus grand mode que vous avez slectionn. Par consquent, ce mcanisme de dlement sera encore utilis pour les modes graphiques de rsolution infrieure, avec comme taille dcran virtuel la taille du mode ayant la rsolution la plus grande. Lorsque vous aurez congur tous vos modes graphiques, vous pourrez passer la suite en choisissant loption The modes are OK, continue. . xf86cong vous demande alors le nombre de couleurs utiliser par dfaut lorsque vous dmarrez en mode graphique. Choisissez bien, car il ne sera pas possible de changer cette valeur une fois que lenvironnement graphique sera lanc. Vous pourrez bien entendu la modier manuellement, mais il vous faudra relancer le serveur X aprs cela. La plupart des cartes graphiques modernes supportent les modes graphiques 16 millions de couleurs, la rponse recommande est donc 24 bits (16 million colors) . Enn, la dernire question est tout simplement si vous dsirez enregistrer le chier XF86Config correspondant aux options que vous avez choisies. Il faut bien entendu rpondre par y, ou sinon vous devriez vous demander pourquoi vous tes en train de lire ceci... Le chier XF86Config gnr est gnralement fonctionnel, mais parfaitement amliorable. Le format de ce chier sera dcrit en dtail dans la Section 10.2.4. Si vous louvrez, vous constaterez que xf86cong a ajout un nombre impressionnant de commentaires pour vous aider dans vos exprimentations. Bien entendu, vous trouverez galement des informations complmentaires dans la page de manuel XF86Config.

10.2.3. Utilisation de xf86cfg


La manire la plus agrable deffectuer la conguration de XFree86 est sans nul doute dutiliser lutilitaire xf86cfg. Ce programme permet aussi bien de crer un chier de conguration XF86Config initial que de modier une conguration existante de manire graphique. Il dispose galement dun mode texte, qui reprend les mmes questions que xf86cong, mais dune manire plus conviviale, laide dun systme de menus.

10.2.3.1. Conguration en mode graphique


Lorsquon lance xf86cfg, celui-ci commence par regarder si la variable denvironnement DISPLAY est dnie ou non. Si elle est dnie, il tente de se connecter au serveur X grant ce display an de permettre ldition du chier de conguration XF86Config du systme. Notez quil ne permet pas de modier le chier XF86Config utilis par le serveur X auquel il se connecte si celui-ci utilise un autre chier que le chier du systme : le serveur X nest utilis par xf86cfg que pour son afchage.

314

Chapitre 10. Installation de XWindow Si, en revanche, la variable denvironnement DISPLAY nest pas dnie, xf86cfg considre que XWindow nest pas install sur la machine locale et appelle le serveur X avec loption -configure an de gnrer un nouveau chier XF86Config. Il lance ensuite le serveur X dtect et utilise ce serveur pour permettre la modication du chier XF86Config ainsi cr. son dmarrage, il vrie que la souris est correctement congure. Si tel nest pas le cas, il propose dutiliser les touches du curseur du pav numrique pour dplacer le pointeur de la souris, ainsi que les touches /, * et - respectivement pour le premier, le deuxime et le troisime bouton de la souris. Je dconseille fortement dessayer deffectuer la conguration dans ces conditions, car ce nest rellement pas utilisable. Dans ce cas de gure, on cherchera plutt utiliser linterface en mode texte de xf86cfg, que nous prsenterons dans la section suivante. Linterface de xf86cfg en mode graphique est trs simple. La partie suprieure de la fentre comprend un menu avec deux entres. La premire entre permet de choisir les diffrentes parties intervenant dans la conguration. La deuxime entre (intitule Expert Mode ) donne accs quant elle un mode de paramtrage permettant dditer directement les proprits du chier XF86Config. Ce mode de fonctionnement est rserv aux utilisateurs avertis et ne sera pas dcrit ici.

La premire entre de menu comprend plusieurs options. Loption Configure Layout permet deffectuer la conguration gnrale du display. Loption Configure Screen permet de congurer la disposition des diffrents crans dun mme display les uns par rapport aux autres. Elle nest rellement utile que dans le cas des congurations plusieurs crans. Loption Configure Modeline donne la possibilit de congurer les diffrents modes graphiques de chaque conguration. Enn, loption Configure AccessX permet de spcier les options des diffrents priphriques dentre. Ces deux options de menus sont rserves aux utilisateurs expriments et ne seront pas dcrites dans ce document. Lessentiel de la conguration se fait dans lcran afch lorsque loption Configure Layout est choisie. Cet cran est constitu dune barre dicnes permettant dajouter les diffrents priphriques la conguration courante : souris, claviers, cartes graphiques et moniteurs. Il nest possible dditer quune seule conguration la fois, la conguration courante peut tre slectionne laide du bouton situ dans la partie infrieure gauche de la fentre. Le corps de la fentre elle-mme contient une reprsentation de cette conguration, avec les diffrents priphriques utiliss et les relations qui existent entre eux. En cliquant avec le bouton droit de la souris sur ces lments, vous pouvez faire apparatre un menu contextuel concernant cet lment. Ce menu peut contenir loption configure , qui donne accs

315

Chapitre 10. Installation de XWindow une bote de dialogue permettant dditer les proprits de llment, loption option , qui permet dajouter des options gnrales cet lment, les options enable et disable , qui permettent dactiver ou de dsactiver llment en question dans la conguration, et loption remove , dont le but est de supprimer llment concern. Une conguration typique comprend au moins une souris, un clavier, une carte graphique et un moniteur. Il est recommand dajouter les lments de la conguration dans cet ordre, an dviter davoir revenir plusieurs fois sur certains de ces lments. La bote de dialogue ouverte par loption configure sur une souris comprend un champ contenant lidenticateur de cette souris, la liste des chiers spciaux de priphriques pour la slection du chier spcial de priphrique auquel la souris est connecte, la liste des protocoles grs par XFree86 et un bouton permettant dactiver lmulation du troisime bouton pour les souris deux boutons. Gnralement, les souris sont connectes soit sur le port srie (chier spcial de priphrique /dev/ttyS0 ou /dev/ttyS1), soit sur le port PS/2 (chier spcial de priphrique /dev/psaux). Les principaux protocoles grs par XFree86 sont les suivants : Microsoft Cest le protocole utilis par la plupart des souris connectes sur le port srie. Ce type de souris est de plus en plus rare actuellement, ne choisissez cette option que si vous disposez de ce type de souris ; IntelliMouse Cest le protocole utilis par les souris molette connectes sur le port srie. Nutilisez pas ce protocole pour les souris molette connectes sur le port PS/2, la souris ne fonctionnerait pas. PS/2 Cest le protocole qui convient pour la majorit des souris connectes sur un port PS/2. Notez toutefois que ce nest pas le cas des souris molette Logitech et Microsoft ; IMPS/2 Cest le protocole des souris molette connectes sur port PS/2. Malheureusement, ce protocole nest pas propos par xf86cfg. Il est donc impossible de congurer une souris de ce type avec cet utilitaire, sauf passer dans le mode expert. La conguration utiliser pour ce type de souris sera dcrite dans la Section 10.2.4.

Lorsque vous aurez congur votre souris, vous pourrez utiliser le bouton Apply changes pour prendre en compte les changements si vous avez modi les paramtres de la souris courante. Ds lors, vous devriez avoir une souris fonctionnelle, et vous pouvez lactiver avec loption enable du menu contextuel. Lorsque la souris est active, un lien apparat entre lunit centrale de lordinateur et cette souris dans la fentre de xf86cfg. La bote de dialogue ouverte par loption configure du menu contextuel des claviers comprend, comme la bote de dialogue des proprits des souris, un champ permettant de saisir le nom de ce clavier dans la conguration. Vous pouvez galement choisir le modle de clavier et sa disposition en fonction de sa langue. Pour les claviers franais, le modle utiliser est gnralement celui des claviers internationaux 102 ou 105 touches, et la disposition utiliser est la disposition French . Lorsque vous aurez congur le clavier correctement, vous pourrez appliquer les changements avec le bouton Apply changes . Vous pourrez galement activer le clavier dans la conguration courante laide de loption enable du menu contextuel du clavier. Un lien entre ce clavier et lunit centrale doit alors apparatre dans la fentre principale de xf86cfg.

316

Chapitre 10. Installation de XWindow La bote de conguration des cartes graphiques contient le champ habituel pour donner un nom la carte et la liste des cartes graphiques reconnues automatiquement par XFree86. Si votre carte ne se trouve pas dans cette liste, vous devrez choisir le pilote utiliser. En gnral, les pilotes portent le nom de la puce lectronique sur laquelle la carte graphique est base. Si aucun pilote nest adapt pour votre carte, vous pourrez malgr tout utiliser un des pilotes gnriques vga ou vesa. Enn, dans le cas o plusieurs cartes graphiques sont installes dans lordinateur, vous devrez spcier ladresse de la carte sur le bus PCI/AGP. Noubliez pas dactiver la carte graphique laide de loption enable du menu contextuel lorsque vous aurez ni la conguration. La bote de dialogue des moniteurs permet de spcier un nom pour le moniteur ainsi que ses plages de frquences horizontales et verticales. Vous pouvez aussi slectionner la carte graphique laquelle ce moniteur est connecte. La liste ne propose que les cartes graphiques que vous avez congur prcdemment. Les moniteurs nont pas besoin dtre activs, car il sont lis aux cartes graphiques. Une fois la conguration gnrale dnie, vous pouvez, si elle contient plusieurs crans, spcier la disposition relative de ces crans laide de loption Configure Screen du menu principal de xf86cfg. Cette option afche les diffrents crans dans la fentre de xf86cfg, et vous pouvez les faire glisser pour les disposer comme vous le dsirez. Enn, loption de menu principal Configure Modeline vous permettra de dnir de nouveaux modes graphiques et de les ajuster. Cet cran fournit les mmes fonctionnalits que lutilitaire xvidtune, que lon dcrira en dtail dans la Section 10.2.6. Cet cran ne sera donc pas trait plus en dtail ici. Lorsque vous quittez xf86cfg, il vous propose denregistrer le chier de conguration /etc/X11/XF86Config correspondant la conguration que vous venez de dnir. Vous pouvez spcier un autre nom si vous le dsirer, an denregistrer ces paramtres dans un autre chier. xf86cfg demande galement si vous dsirez sauvegarder la conguration du clavier, pour le cas o vous auriez modi les paramtres des priphriques dentre.

10.2.3.2. Conguration en mode texte


xf86cfg permet galement deffectuer la conguration de XFree86 en mode texte, laide dune interface base sur un systme de menus. Bien que ce mode de fonctionnement soit en mode texte, il permet deffectuer les mmes tches que xf86cong dune manire beaucoup plus conviviale. Pour lancer xf86cfg en mode texte, il suft simplement de lui passer loption -textmode en ligne de commande :
xf86cfg -textmode

Lors de son dmarrage, xf86cfg afche un cran daccueil que vous pouvez passer en validant loption Ok . xf86cfg afche ensuite son menu principal, qui comprend des entres pour ajouter des souris, claviers, moniteurs et cartes graphiques. Ce menu contient galement une entre Configure screen , qui permet dassocier les cartes graphiques aux moniteurs, et une entre Configure layout , qui permet de congurer le display en spciant le clavier, la souris et les diffrents crans utiliser.

317

Chapitre 10. Installation de XWindow

Le menu de conguration de la souris permet dajouter, de supprimer et de modier des souris. Lajout dune souris ncessite de saisir un identicateur pour la souris, le protocole que cette souris utilise et si le troisime bouton doit tre simul ou non. xf86cfg demande galement le chier spcial de priphrique utiliser pour accder cette souris. Notez que xf86cfg ne permet pas de choisir le protocole IMPS/2 utilis par les souris molette connectes sur le port PS/2, ce type de souris ne peut donc pas tre congur avec cet outil. De la mme manire, le menu de conguration du clavier demande de saisir un identicateur lorsquon ajoute un nouveau clavier. Le type de clavier est galement demand, ainsi que sa disposition. Pour les claviers franais, il faut utiliser les claviers internationaux 102 ou 105 touches. La conguration des moniteurs permet de spcier un identicateur pour le moniteur, ainsi que les plages de frquences horizontales et verticales. La conguration des cartes graphiques quant elle permet galement de spcier un identicateur pour la carte, et de choisir le type de carte dans la liste des cartes prises en charge par XFree86. Si votre carte nest pas liste, vous devrez choisir loption ** Unlisted card ** et indiquer le pilote utiliser pour cette carte. Ce pilote porte gnralement le nom de la puce lectronique sur laquelle cette carte est conue, mais vous pouvez galement utiliser les pilotes gnriques vga et vesa pour les cartes graphiques compatibles avec ces standards. Enn, xf86cfg vous propose de spcier ladresse de la carte sur le bus PCI/AGP, pour le cas o vous auriez plusieurs cartes installes sur la mme machine. Les identiants donns aux moniteurs et aux cartes sont utiliss dans le menu de conguration des crans, qui demande quelle carte et quel moniteur sont utiliss pour chaque cran. La profondeur de couleur par dfaut est galement demande, ainsi que la liste des modes graphiques grs par cet cran. Notez que linterface en mode texte de xf86cfg ne permet pas de dnir de nouveaux modes graphiques, pour cela, il faut recourir linterface en mode graphique ou diter manuellement le chier de conguration XF86Config. Enn, le menu de conguration gnral permet de dnir, de modier et de supprimer les displays. Chaque display doit contenir une rfrence une souris, un clavier et un ou plusieurs crans. Remarquez encore une fois que linterface en mode texte de xf86cfg ne permet pas de prciser la disposition relative des crans les uns par rapport aux autres. Pour cela, vous devrez utiliser linterface en mode graphique ou diter manuellement le chier de conguration de XFree86. Lorsque vous aurez ni la conguration de XFree86, vous pourrez lenregistrer laide du menu Write XF86Config and quit . Ce menu vous demande le chemin complet sur le chier de conguration crire. Vous pouvez spcier un autre chier que le chier de conguration du systme si vous dsirez lditer et le modier manuellement de manire indpendante.

318

Chapitre 10. Installation de XWindow

10.2.4. Description du chier XF86Cong


Les chiers gnrs par les outils de conguration de XFree86 sont, comme nous lavons dj prcis, des chiers devant servir de point de dpart pour raliser votre conguration. Normalement, ils permettent de dmarrer le serveur X et de travailler dans de bonnes conditions, toutefois, il est possible damliorer sensiblement la qualit de lafchage et lergonomie du systme en mettant un peu la main la pte. Cette section entreprend donc de dcrire la structure du chier de conguration XF86Config et les principales options que lon peut utiliser. Dautre part, il peut tre instructif de connatre la nature des informations que ce chier contient, et quelles sont les consquences des choix effectus dans les utilitaires de conguration.

10.2.4.1. Structure gnrale du chier XF86Cong


Le chier XF86Config est constitu dun certain nombre de sections contenant chacune les options pour une partie de larchitecture de XFree86. La conguration de XFree86 est un sujet ardu, aussi seules les principales sections du chier XF86Config seront dcrites dans ce document. Vous pouvez vous rfrer la page de manuel XF86Config et la documentation de XFree86 pour plus de dtails ce sujet. Certaines sections peuvent tre dnies plusieurs fois, avec diffrents jeux doptions chaque fois, an de permettre la dnition de plusieurs congurations. Bien entendu, lorsquun serveur X tourne, une seule conguration seulement est utilise. Cette conguration est spcie soit directement en ligne de commande lors du lancement du serveur X, soit en indiquant une conguration par dfaut dans le chier de conguration. Dautres sections sont globales, et contiennent les options de conguration gnrales du serveur X. Ces options concernent typiquement lenvironnement dans lequel il est suppos fonctionner, et les options qui ne dpendent pas de la conguration utilise. La premire section globale est la section Files , qui porte relativement mal son nom, car au lieu de chiers, elle indique les chemins vers les diffrentes ressources que le serveur X peut utiliser. Ces ressources comprennent les polices de caractres, lemplacement des modules complmentaires et lemplacement des chiers de dnitions de couleurs. La deuxime section globale est la section ServerFlags . Cette section contient les options gnrales utiliser par dfaut pour tous les serveurs X. Elles permettent dactiver ou de dsactiver certaines fonctionnalits ou extensions non standards. Ces options fournissent des valeurs par dfaut, elles peuvent tre modies pour chaque serveur X de manire indpendante si ncessaire. La troisime section globale est la section Module . Cette section contient les commandes de chargement des diffrents modules du serveur X, lorsque ce serveur est compil sous forme modulaire. Chaque module gre une certaine partie des fonctionnalits, et celles-ci peuvent donc tre actives ou dsactives au niveau de cette section. Viennent ensuite les sections de conguration des displays. Ces sections dcrivent chacune un des aspects du display, et peuvent apparatre en de multiples exemplaires. Le premier type de section de conguration des displays regroupe toutes les sections qui dnissent les priphriques dentre de donnes (clavier, souris, table de digitalisation, etc.). Ces sections sont toutes nommes InputDevice . Le deuxime type de section de conguration contient la dnition des adaptateurs graphiques. Ces sections permettent de donner les renseignements ncessaires pour la conguration des diffrentes cartes graphiques installes sur le systme. Elles sont toutes nommes Device . Viennent ensuite les sections Monitor qui, comme leur nom lindique, permettent de dnir les caractristiques physiques des diffrents moniteurs utilisables. Encore une fois, il peut exister

319

Chapitre 10. Installation de XWindow plusieurs sections de ce type, pour dnir plusieurs moniteurs dans les congurations multi-ttes. Normalement, chaque moniteur est, en fonction de ses capacits, capable de grer diffrents modes graphiques. Les sections Monitor peuvent donc contenir des dnition de modes graphiques, mais ce nest pas la technique recommande. En effet, il est possible dutiliser plusieurs moniteurs avec des modes graphiques identiques, aussi XFree86 donne-t-il la possibilit de dnir les modes graphiques en dehors des sections Monitor (ce nest toutefois pas une obligation). Dans ce cas, les modes graphiques seront dnis dans des sections nommes Modes , et celles-ci seront rfrences par les sections des moniteurs qui les utilisent. Les moniteurs sont faits pour tre branchs sur des cartes graphiques. Comme on la vu ci-dessus, il est possible de dnir plusieurs sections Device et plusieurs sections Monitor , an de dcrire plusieurs cartes graphiques et plusieurs moniteurs. Il faut donc spcier quels moniteurs sont connects quelles cartes graphiques. Cest exactement le rle des sections Screen . Pour XFree86, un cran nest donc rien dautre quun couple fonctionnel moniteur / carte graphique. Notez que certaines cartes graphiques haut de gamme peuvent prendre en charge plusieurs crans. Dans ce cas, il faudra dnir plusieurs sections Device pour la mme carte graphique, et spcier les ports de sortie dans les options de ces sections. Enn, il ne reste plus qu dnir le display lui-mme. Nous avons dj dni la notion de display ci-dessus comme tant le regroupement dun clavier, dune souris et dun ou plusieurs crans. Ces associations sont donc dnies dans des sections nommes ServerLayout . Une section de ce type contient donc ncessairement une rfrence une section InputDevice pour le clavier et une section InputDevice pour le priphrique de pointage, et une ou plusieurs sections Screen pour les crans utiliss par le serveur X. Dautre part, comme leur nom lindique, les sections ServerLayout permettent galement de spcier la disposition relative des crans les uns par rapport aux autres, dans le cas des congurations multi-ttes. Figure 10-2. Structure du chier XF86Cong

320

Chapitre 10. Installation de XWindow Nous allons prsent dcrire un peu plus en dtail les diffrentes sections qui ont t prsentes ici. Toutes ces sections sont introduites par le mot cl Section suivi du type de la section, indiqu entre guillemets, et se terminent toutes par le mot cl EndSection . Entre ces deux balises, un certain nombre dinformations peuvent tre spcies, et peuvent mme tre regroupes en soussections. tant donn le grand nombre doptions qui peuvent tre indiques dans les sections du chier XF86Config, seules les plus classiques seront dcrites ci-dessous.

10.2.4.2. Section Files


La section Files , contient les chemins vers les ressources utiliss par XFree86. Ce peut tre les rpertoires de polices de caractres, les rpertoires dinstallation des modules du serveur X, ou encore des chemins indiquant ladresse et le port de serveurs de polices sur un rseau. Cette section est donc relativement riche de renseignements pour le serveur X. Un exemple typique de section Files est donn ci-dessous :
Section "Files" RgbPath "/usr/X11R6/lib/X11/rgb" FontPath "/usr/X11R6/lib/X11/fonts/local" FontPath "/usr/X11R6/lib/X11/fonts/misc" FontPath "/usr/X11R6/lib/X11/fonts/75dpi" FontPath "/usr/X11R6/lib/X11/fonts/100dpi" ModulePath "/usr/X11R6/lib/modules" EndSection

Les chemins indiqus sont des chemins Unix classiques, et sont introduits par les mots cls FontPath , RgbPath et ModulePath respectivement pour les chemins sur les rpertoires de polices, les rpertoires de chiers de dnition de couleurs et les rpertoires dinstallation des modules. Cependant, comme on le verra plus loin, laccs aux serveurs de polices se fait laide dune syntaxe de chemin particulire.

10.2.4.3. Section ServerFlags


Cette section regroupe les principales options globales de tous les serveurs X. Ces options sont gnralement introduites laide du mot cl Option , suivi du nom de loption entre guillemets, lui-mme suivi dune ventuelle valeur pour cette option, elle aussi entre guillemets. Par exemple, loption :
Option "DontZap"

permet dempcher que lutilisateur puisse utiliser la combinaison de touches CTRL+ALT+BACKSPACE (en temps normal, cette combinaison de touches a pour consquence de tuer le serveur X, et de forcer la dconnexion de toutes les applications en cours de fonctionnement). De mme, loption :
Option "Dont Zoom"

dsactive les combinaisons de touches CTRL+ALT+PLUS et CTRL+ALT+MINUS, o PLUS et MINUS sont respectivement les touches plus et moins du pav numrique. Ces deux combinaisons de touches sont normalement utilises respectivement pour passer dun mode vido au suivant ou au prcdent.

321

Chapitre 10. Installation de XWindow Il existe beaucoup dautres options gnrales du serveur X. Les plus intressantes sont sans doute les options BlankTime , StandbyTime , SuspendTime et OffTime , qui permettent de contrler les dures des conomiseurs dcrans matriels. Vous trouverez la description des autres options dans les chiers XF86Config gnrs automatiquement, et bien entendu dans la page de manuel XF86Config.

10.2.4.4. Section Module


Cette section contient la liste des modules que les serveurs X doivent charger lorsquils dmarrent. Ces modules peuvent tre spcis de deux manires diffrentes, une abrge et une plus complte. La forme abrge utilise le mot cl Load , suivi du nom du module entre guillemets. Par exemple, la ligne suivante permet de demander le chargement du module de gestion des polices TrueType :
Load "freetype"

La forme complte utilise une sous-section, introduite par le mot cl SubSection suivi du nom du module entre guillemets, et se terminant par le mot cl EndSubSection . Ces sous-sections ont la mme structure que les sections normales, et permettent de spcier des options pour le module laide du mot cl Option . Par exemple, les extensions du serveur X peuvent tre charges lexception de lextension DGA laide de la sous-section suivante :
SubSection "extmod" Option "omit XFree86-DGA" EndSubSection

Note : Lextension DGA permet aux applications daccder directement la mmoire vido de la carte graphique. La dsactiver accrot donc la scurit du systme, mais peut empcher certaines applications de fonctionner correctement. Cest le cas des jeux, et surtout des programmes de tlvision sous XWindow. Par consquent, il est probable que vous vouliez laisser ces extensions actives. Dans ce cas, il suft simplement de ne pas spcier loption omit de lexemple prcdent.

Outre les modules freetype et extmod donns dans les exemples prcdents, vous pourrez peut-tre utiliser les modules dri et glx. Ces modules permettent respectivement dactiver les fonctionnalits DRI (abrviation de langlais Direct Rendering Infrastructure ) du noyau et le support de la 3D par OpenGL. Les diffrentes cartes capables de grer les fonctionnalits DRI sont celles listes dans la conguration du noyau, que lon a dj vue dans la Section 7.3. Notez toutefois que ces fonctionnalits ne sont indispensables pour utiliser le module glx que pour ces cartes. En particulier, les cartes graphiques bases sur les puces NVidia peuvent utiliser le module glx sans charger le module dri, car le pilote fourni par NVidia utilise un autre mcanisme.

10.2.4.5. Section InputDevice


Les sections InputDevice permettent de dcrire tous les types de priphriques dentre. En pratique, il sagira souvent de claviers et de souris, mais il est galement possible de connecter des priphriques plus exotiques tels que les joysticks et les tablettes de dessin.

322

Chapitre 10. Installation de XWindow Les sections InputDevice doivent tre nommes avec un identicateur unique, introduit par le mot cl Identifier . Ce mot cl doit tre suivi du nom de la section, donn entre guillemets. Cest ce nom qui sera utilis pour rfrencer la section dans les sections ServerLayout pour dnir les diffrents displays. La nature du priphrique dentre est ensuite spcie par la valeur de loption Driver . En pratique, on utilisera quasiment toujours Keyboard ou Mouse, qui correspondent bien videmment aux pilotes pour les claviers et les souris. La suite des options de la section InputDevice est fonction de la nature du pilote utilis. Les options les plus courantes pour un clavier sont donnes dans lexemple suivant :
Section "InputDevice" Identifier "Clavier 1" Driver "Keyboard" # # # # Loption suivante permet de spcifier le dlai avant rptition (en millisecondes) et la vitesse de rptition une fois ce dlai pass (en caractres par seconde) : Option "AutoRepeat" "500 30"

# Loption suivante indique que la dfinition de clavier # utiliser est celle de XFree86 : Option "XkbRules" "xfree86" # Loption suivante indique que le modle de clavier # utilis est un clavier 105 touches : Option "XkbModel" "pc105" # Loption suivante indique que la disposition # des touches est celle dun clavier franais : Option "XkbLayout" "fr" EndSection

De mme, vous trouverez ci-dessous un exemple typique de section InputDevice pour une souris :
Section "InputDevice" Identifier "Souris 1" Driver "Mouse" # Loption suivante indique que la souris est # une souris de type PS/2 : Option "Protocol" "PS/2" # Loption suivante indique le fichier spcial # de priphrique utiliser pour cette souris : Option "Device" "/dev/psaux" # Loption suivante indique le nombre de boutons # de la souris : Option "Buttons" "2"

323

Chapitre 10. Installation de XWindow


# Loption suivante demande XFree86 dmuler # le troisime bouton de la souris par clic # simultan des deux boutons : Option "Emulate3Buttons" EndSection

Note : Pour les souris molette connectes sur port PS/2, vous devrez choisir le protocole IMPS/2 au lieu du protocole PS/2 et indiquer que la souris a 5 boutons. De plus, vous devrez ajouter loption ZAxisMapping dans la section InputDevice de votre souris, et lui donner la valeur 4 5 . Cette option permet de rediriger la rotation de la molette sur les vnements des boutons 4 et 5 de la souris. De cette manire, vous pourrez utiliser votre molette dans toutes les applications qui grent ces deux boutons.

10.2.4.6. Sections Device


Les sections Device contiennent les descriptions des cartes graphiques utilises. Ces descriptions nindiquent absolument pas quel est le serveur X utilis : elles ne contiennent quune description du matriel. Notez, encore une fois, quil est possible de dnir plusieurs sections Device , qui pourront tre utilises dans les sections Screen associant les cartes graphiques aux moniteurs. Tout comme les sections InputDevice , les sections Device doivent disposer dun identicateur unique, an de pouvoir les rfrencer dans les sections Screen qui les utilisent. Cet identicateur est introduit par le mot cl Identifier et suivi dun nom indiqu entre guillemets. Les sections Device peuvent contenir un certain nombre doptions permettant de caractriser la carte graphique et de prciser ses capacits (mmoire, rapidit, adresse sur le bus PCI, etc.). Toutes ces options sont bien entendu spciques aux diffrentes cartes graphiques, et ne seront pas dcrites en dtail ici. Loption la plus importante est sans doute loption Driver , qui permet dindiquer le pilote que le serveur X devra charger pour piloter cette carte graphique. Cest ce niveau quil faut surtout ne pas se tromper, puisque la moindre erreur ferait chouer le dmarrage du serveur X. En gnral, les pilotes portent le nom du chipset utilis par la carte graphique, si bien quil nest pas difcile de dterminer la valeur exacte utiliser. XFree86 fournit galement deux pilotes gnriques vga et vesa, permettant respectivement de prendre en charge les cartes graphiques compatibles avec le standard VGA ou compatibles avec le standard VESA 2.0. Sachez cependant que ces pilotes ne disposent daucune acclration matrielle, et que leurs performances sont donc bien infrieures aux pilotes spcialiss pour chaque carte graphique. Vous trouverez ci-dessous un exemple de section Device typique :
Section "Device" Identifier "Carte 1" VendorName "CHAINTECH" BoardName "TORNADO I7000" # Cette option indique au serveur X quil doit # charger le module i740_drv pour piloter cette # carte graphique : Driver "i740"

324

Chapitre 10. Installation de XWindow


# Cette option indique la quantit de mmoire # vive dont cette carte dispose (en ko) : VideoRam 8192 EndSection

Note : Les options des sections Device ne sont pas trs compliques utiliser. Cependant, quelques-unes peuvent poser des problmes lorsquon ralise des congurations multittes (cest--dire des congurations disposant de plusieurs crans). Dans la majorit des cas, il faut installer plusieurs cartes graphiques dans le PC pour pouvoir utiliser plusieurs crans. En gnral, on utilise une carte AGP et une ou plusieurs cartes PCI. Il va de soi quil faut que chaque pilote utilise la bonne carte, aussi faut-il indiquer, dans chaque section Device , ladresse de la carte dcrite par la section. Cette adresse est dnie laide de loption BusID . Cette option permet de retrouver la carte graphique sur les diffrents bus systmes. Les cartes AGP utilisant le mme mcanisme dadressage que les cartes PCI, on utilisera la syntaxe suivante :
"PCI:bus:priphrique:fonction"

o bus est le numro du bus PCI sur lequel se trouve la carte graphique, priphrique est le numro du priphrique sur ce bus, et fonction est le numro de la fonction utiliser pour accder ce priphrique. Vous pouvez utiliser la commande lspci pour afcher les caractristiques des diffrents bus PCI de votre machine et dterminer les valeurs utilises par vos cartes graphiques. Certaines cartes graphiques haut de gamme disposent de plusieurs contrleurs vido et sont donc capables de grer plusieurs crans. Pour ces cartes graphiques, le principe de fonctionnement est le mme : il faut crire une section Device pour chaque contrleur vido existant. Cependant, tant donn que toutes ces sections sadressent la mme carte graphique, il est impossible de les distinguer par lintermdiaire de loption BusID . Dans ce cas, on utilise alors loption Screen , suivie du numro du contrleur vido que la section dcrit. Ce numro doit tre donn juste aprs loption Screen , sans guillemets. La numrotation des contrleurs vido commence 0. Cest cette valeur qui est utilise pour toutes les cartes graphiques ne disposant que dun seul contrleur vido.

10.2.4.7. Sections Monitor


Les sections Monitor contiennent les informations descriptives des crans. Notez quil est possible de dnir plusieurs sections Monitor , pour plusieurs crans potentiels. Cependant, chaque section Screen devra utiliser un moniteur et un seul. Les sections Monitor sont certainement les sections les plus importantes du chier XF86Config. Elles contiennent en effet toutes les informations concernant les moniteurs et tous les paramtres des modes graphiques utiliss par ces moniteurs. Ces informations sont utilises par le serveur X pour programmer les signaux vido que la carte graphique envoie au moniteur. Il est donc vident que chaque section Monitor est spcique un modle de moniteur donn, et que la dtermination des valeurs qui doivent y tre crites requiert une bonne connaissance du fonctionnement de ce moniteur et de ses caractristiques physiques. Vous trouverez une description gnrale du fonctionnement des moniteurs dans les paragraphes qui suivent. Il est impratif de bien les assimiler si vous dsirez crer ou modier une section Monitor , car si les informations qui y sont stockes sont errones, le moniteur correspondant risque dtre gravement endommag. Le principe de fonctionnement des tubes cathodiques utiliss dans les moniteurs est trs simple : chaque instant, un faisceau dlectrons gnr par un canon lectrons vient frapper un point dune

325

Chapitre 10. Installation de XWindow plaque phosphorescente situe juste derrire la vitre du moniteur. Lnergie cintique des lectrons du faisceau est transforme en lumire par le phosphore en ce point, qui reste ainsi lumineux tant que le faisceau frappe ce point. Comme un seul faisceau est utilis pour tous les points de la plaque phosphorescente, il faut dplacer le faisceau de point en point pour pouvoir tous les clairer. Cela a bien entendu pour consquence que les points ne restent lumineux que pendant un temps trs court. Cependant, nous percevons la luminosit de ce point pendant un temps beaucoup plus long, en raison de la rmanence des cellules de lil. Les points de lcran semblent donc tre tous allums en mme temps, bien qu chaque instant un seul dentre eux est atteint par le faisceau dlectrons. Nous voyons ainsi limage complte du moniteur. Le dplacement du faisceau dlectrons est assur par un champ magntique gnr par des bobinages magntiques larrire du tube cathodique. Le faisceau balaye lcran ligne par ligne, de gauche droite (en regardant le moniteur de face). chaque fois quil atteint le bord gauche, il retourne rapidement vers le dbut de la ligne suivante, sur le bord droit du moniteur. Ce retour se fait simplement en modiant brusquement le champ magntique qui dirige le faisceau. Il va de soi que le faisceau dlectrons est coup pendant ce retour de balayage, car sil ne ltait pas, on le verrait traverser lcran de droite gauche et perturber ainsi limage. De plus, le champ magntique nest pas facilement contrlable lorsque le retour du faisceau commence. Par consquent, il est ncessaire que ce retour se fasse un certain temps aprs que le bord droit ait t teint. Si ce ntait pas le cas, limage serait dforme prs des bords du moniteur. Le faisceau lectronique continue donc de balayer lcran sur une petite zone aprs le bord de limage, sans mettre de lumire. Cette zone sappelle le blanking horizontal. De mme, le faisceau lectronique retourne rapidement en haut de lcran ds quil en atteint le bas. Pour les mmes raisons que pour les retours de balayage horizontal, le faisceau doit tre teint un peu avant et pendant la modication du champ magntique lors des retours de balayage vertical. La zone ainsi parcourue par le faisceau aprs le bord de limage sappelle le blanking vertical.
Note : Il est possible dutiliser dautres mthodes de balayage que celle dcrite ci-dessus. En particulier, les modes graphiques entrelacs ne suivent pas ce principe. Dans ces modes, seulement une ligne sur deux est balaye chaque gnration dimage. Les lignes paires sont dabord afches pour une premire image, puis les lignes impaires sont afches pour limage suivante. Ces modes graphiques taient utiliss lorsque les moniteurs ntaient pas sufsamment rapides pour afcher une image complte sans que lon puisse voir le balayage du faisceau dlectrons. De nos jours, il est dconseill dutiliser ces modes, car limage a tendance trembler du fait de lcart de luminosit alternatif entre les lignes paires et impaires de lcran.

Les limitations techniques de la technologie des tubes cathodiques imposent une limite suprieure pour la vitesse de balayage, et une limite infrieure pour la dure des retours de balayage horizontal et vertical, ainsi que pour la dure minimale du blanking. Les caractristiques techniques des tubes sont donc souvent spcis en terme de frquences de balayage et de dures des signaux de synchronisation. Les vieux moniteurs ne pouvaient supporter quun nombre limit de frquences de balayage, que lon qualiaient alors de xes . De nos jours, les crans multisynchrones acceptent toutes les frquences comprises dans une plage de valeur, et sadaptent donc aux frquences des signaux mis par les cartes graphiques. La frquence de balayage vertical utilise dans un mode graphique donn constitue le taux de rafrachissement de lcran, cest--dire le nombre de fois que limage de lcran est afche par seconde. Il est vident quun taux de rafrachissement trop faible ne permet pas davoir une image agrable regarder, car elle semble trembler ou clignoter. Un tube cathodique de bonne qualit est donc un tube qui permet dutiliser de hautes frquences verticales. Comme il est ncessaire dafcher toutes les lignes pour afcher une image complte, il va de soi quun bon tube doit galement tre capable dafcher les lignes rapidement, et donc accepter des frquences de balayage horizontal leves. Typi-

326

Chapitre 10. Installation de XWindow quement, les frquences de balayage horizontal sont environ mille fois plus leves que les frquences de balayage vertical, puisque chaque ligne peut contenir environ mille pixels. La sensibilit au taux de rafrachissement dpend des personnes et de lemploi que lon fait du tube. Les tubes destins tre regards de loin peuvent utiliser des frquences beaucoup plus faibles que les tubes de proximit. Ainsi, les tlvisions afchent 25 images par seconde (en fait, elles afchent 50 demi-images par seconde, car elles utilisent lentrelacement). En revanche, ce taux de rafrachissement est trs insufsant pour les moniteurs dordinateurs, o la limite infrieure est de 60 Hz. Le standard VESA exige des taux de 72 Hz ou plus pour que limage soit agrable regarder, mais de nombreux crans supportent facilement 85 Hz ou plus de nos jours. Certaines personnes ne sont cependant pas dranges par des taux aussi faibles que 60 Hz. Il est bon de savoir quel taux de rafrachissement vous convient, car un balayage insufsant peut fatiguer vos yeux, mme sans que vous en soyez conscient. Et cette fatigue se traduit toujours un jour ou un autre par des maux de tte inexpliqus... Ne vous vantez donc pas de voir le balayage, cest un grave handicap par rapport ceux qui ne le voient pas et qui donc ont moins de maux de tte que vous ! Vous pouvez utiliser la mthode suivante pour dterminer si le taux de rafrachissement est sufsant pour vous. Commencez par afcher une image blanche sur la totalit de la surface visible de votre moniteur. Puis rglez la luminosit du moniteur son maximum. Placez-vous ensuite de biais par rapport votre moniteur, et regardez en face de vous. Concentrez ensuite votre attention sur limage de lcran, sans le regarder directement (regardez-le en coin ). Normalement, vous devez percevoir limage avec les cellules latrales de la rtine, qui donnent une image moins prcise que les cellules centrales, mais qui sont plus sensibles aux mouvements (ces cellules nous servent en quelque sorte dantennes). Ces cellules sont donc plus aptes percevoir les variations rapides de luminosit de limage dues au balayage du faisceau lectronique. Si limage semble clignoter, cest que le taux de rafrachissement de lcran est insufsant. Sinon, vous tenez le bon taux, ne le lchez pas. Certaines caractristiques techniques des tubes cathodiques inuent sur les autres et permettent donc de modier le taux de rafrachissement. Il est vident que si la dure du retour du faisceau est importante, lcran ne peut pas gnrer beaucoup dimages par seconde. Par consquent, plus la dure du retour de balayage est longue, moins bon peut tre le taux de rafrachissement. Il en va de mme pour la dure du blanking. Les bons crans disposent donc souvent de retours de balayage rapides et de courtes dures de blanking. Mais diminuer ces dures ncessite une lectronique plus prcise au niveau du contrle des champs magntiques dirigeant le faisceau dlectrons. Il est galement vident que la rsolution du mode graphique inue sur le taux de rafrachissement. Si la rsolution est leve, il y a plus de pixels afcher au total sur chaque ligne de lcran. vitesse de balayage des pixels xe, le temps ncessaire pour balayer une ligne est donc plus grand. Et comme il y a plus de lignes afcher, le temps ncessaire pour gnrer une image complte est plus grand, et le taux de rafrachissement est plus faible. Donc, si le test dcrit dans le paragraphe prcdent vous indique que votre taux de rafrachissement est trop faible, vous pouvez tenter de baisser la rsolution.
Note : Notez que la profondeur de couleur utilise nintervient absolument pas dans le taux de rafrachissement. Cette profondeur nest un facteur limitant quau niveau de la carte graphique, qui peut ne pas avoir assez de mmoire pour afcher un mode de grande rsolution avec toutes les couleurs dsires ou ne pas avoir une lectronique assez rapide pour traiter toutes les donnes une vitesse raisonnable.

Le signal vido mis par la carte graphique contient toutes les informations dont le moniteur a besoin pour gnrer limage. Ces informations spcient bien entendu lintensit du faisceau dlectrons, mais aussi les signaux de synchronisation qui contrlent les retours de balayage horizontal et vertical. Ce sont les informations de synchronisation que les sections Monitor du chier XF86Config contiennent. On comprend donc limportance de ces informations pour la qualit de limage, aussi bien en terme de stabilit quen termes de taux de rafrachissement.

327

Chapitre 10. Installation de XWindow Les sections Monitor sont constitues grosso modo de deux parties. La premire partie contient les caractristiques gnrales de lcran, telles que son nom, son modle et le nom de son fabricant. Elle contient galement les plages de frquences de balayage horizontal et vertical. La deuxime partie contient les dnitions des modes graphiques, raison dune ligne par mode graphique utilisable. La documentation de XFree86 appelle ces lignes des lignes de mode ( modelines en anglais). Il est vident que les informations fournies dans les lignes de mode sont trs sensibles, et dterminent tous les paramtres du mode graphique : rsolution, position et taille de limage sur lcran, taux de rafrachissement. La premire partie dune section Monitor ressemble ceci :
Section "Monitor" Identifier "Moniteur 1" # Marque et modle du moniteur (informations facultatives) : VendorName "SONY" ModelName "MULTISCAN 100ES" # Plage de frquence horizontale (information capitale) : HorizSync 30-70 # Plage de frquence verticale (information capitale) : VertRefresh 50-120

Le mot cl Identifier permet de donner un nom la section Monitor . Ce sera ce nom que lon utilisera plus loin dans la section Screen pour indiquer que lon dsire utiliser ce moniteur. Les mots cls VendorName et ModelName permettent de donner la description du moniteur. Les informations stockes ici nont aucun effet sur la conguration du moniteur et sont simplement indicatives. En revanche, les plages de frquences horizontales et verticales indiques respectivement aprs les mots cls HorizSync et VertRefresh sont dune importance capitale. Elles donnent les plages de frquences auxquelles le moniteur peut travailler, et servent contrler la validit des lignes de mode donnes dans la deuxime partie de la section Monitor . Il est donc important de donner ici les valeurs exactes, que vous trouverez normalement dans la che technique de votre moniteur (cette che est souvent imprime la n du mode demploi). Pour les moniteurs multisynchrones, les plages de frquences utilisables peuvent tre donnes par leurs frquences minimale et maximale, spares dun tiret. Les frquences xes peuvent tre spcies simplement avec une seule valeur. Il est possible de spcier plusieurs frquences xes et plusieurs plages de frquences en les sparant par des virgules. Lunit utilise pour les frquences horizontales est le kilohertz, et celle utilise pour les frquences verticales est le Hertz. La deuxime partie de la section Monitor contient les lignes de mode, raison dune ligne de mode par mode graphique que le moniteur est capable dafcher. En gnral, une ligne de mode ressemble ceci :
Modeline "1024x768" 92.96 1024 1064 1240 1352 768 768 778 802

mais il existe cette une autre syntaxe, beaucoup plus claire car elle diffrencie les diffrentes valeurs donnes dans la ligne prcdente :
Mode "1024x768" DotClock 92.96 HTimings 1024 1064 1240 1352 VTimings 768 768 778 802 EndMode

328

Chapitre 10. Installation de XWindow La premire valeur indique entre guillemets dans les lignes de mode est le nom du mode graphique. Comme on le verra plus tard, cest ce nom qui est utilis pour spcier les modes graphiques utilisables dans la section Screen . La deuxime valeur est la frquence de base des signaux mis par la carte graphique. Cette vitesse est exprime en MHz et reprsente le nombre de pixels par seconde que le faisceau lectronique du moniteur balaye. Les quatre valeurs suivantes xent les paramtres horizontaux du mode graphique : rsolution horizontale, pixel partir duquel le signal de synchronisation pour le retour de balayage horizontal commence, pixel auquel ce signal sarrte et longueur totale de la ligne en pixel, blanking compris. De mme, les quatre dernires valeurs xent les paramtres verticaux du mode graphique, savoir rsolution verticale, ligne de dbut et ligne de n du signal de synchronisation pour le retour de balayage vertical, et nombre de lignes total du mode graphique. On notera que les informations concernant le signal de synchronisation du balayage horizontal sont toutes multiples de 8. Cette contrainte est impose par le matriel de la plupart des cartes graphiques. Dautre part, lunit utilise pour ces valeurs est le pixel. Il faut donc se baser sur la frquence de base indique au dbut de la ligne de mode pour les convertir en temps. Les informations concernant le signal de synchronisation vertical, quant elles, sont exprimes en nombre de lignes. Elles peuvent ne pas tre multiples de 8. La conversion en temps se calcule cette fois partir de la frquence de base et de la longueur totale dune ligne horizontale pour ce mode graphique. Enn, il est possible de rajouter des options complmentaires la n des lignes de mode pour prciser le fonctionnement du mode graphique, laide du mot-clef Flags . Loption la plus courante tant sans aucun doute Interlace , qui permet de crer des modes entrelacs. Loption Doublescan quant elle permet de faire en sorte que chaque ligne est afche deux fois de suite. Elle permet de crer des modes graphiques de faible rsolution, qui utilisent des frquences de balayage trop faibles pour les moniteurs actuels. Vous pourrez trouver les autres options dans la page de manuel XF86Config. La section Monitor se termine, comme toute section du chier XF86Config, par une ligne de n de section :
EndSection

Comme vous vous en tes aperu, les donnes stockes dans les lignes de mode sont assez techniques. Quelques explications complmentaires ne seront donc pas de trop pour comprendre linuence de ces paramtres et pour crer de nouvelles lignes de mode. Pour commencer, la frquence de base de la ligne de mode doit videmment tre gre par la carte graphique. Vous pouvez dterminer la frquence de base maximale en regardant les informations afches par le serveur X adapt cette carte lorsquil dmarre. Cette information est toujours juste, mme si les lignes de mode crites dans votre chier XF86Config ne conviennent pas et que le serveur X ne dmarre pas correctement. La ligne contenant cette frquence maximale est semblable celle-ci :
Maximum allowed dot-clock: 163.000 MHz

Cette frquence de base peut tre gnre par la carte graphique, mais il nest pas certain quelle soit supporte par le moniteur. En effet, les moniteurs ne sont pas capables de grer les frquences de base au del dune certaine limite. La gamme de frquences quils acceptent est ce que lon appelle leur bande passante. La frquence de base doit donc tre dans cette bande passante, cest--dire quelle doit tre infrieure la frquence maximale que le moniteur peut grer. La bande passante de votre moniteur est normalement indique dans sa che de spcications techniques. Si toutefois ce nest pas le cas, vous pouvez vous faire une ide de la frquence la plus leve de cette bande passante en regardant la rsolution maximale quil peut afcher et en consultant ce tableau :

329

Chapitre 10. Installation de XWindow Tableau 10-1. Frquence maximale des moniteurs Rsolution 640x480 800x600 10254x768 1280x1024 1600x1200 25 36 65 110 185 Frquence maximale

Les valeurs des frquences indiques dans ce tableau sont les plus petites valeurs constates pour lensemble des moniteurs grs par XFree86. On peut donc supposer que votre moniteur gre ces frquences, et certainement mme de plus hautes. La rsolution du mode graphique est donne par la premire des quatre valeurs des paramtres horizontaux et verticaux dans la ligne de mode. Ainsi, dans la ligne de mode exemple donne ci-dessus, la rsolution horizontale est de 1024 et la rsolution verticale est de 768. Sachez que vous tes parfaitement libre dutiliser des rsolutions non standards, en crivant les lignes de mode correspondantes. Dans lexemple donn ci-dessus, il sagit simplement du mode graphique 1024x768. Notez, encore une fois, que la profondeur de couleur nintervient absolument pas dans les paramtres du moniteur. Ils ninterviennent que dans les composants de la carte graphique qui sont chargs de gnrer les signaux vidos pour le moniteur. La quatrime valeur des paramtres horizontaux donne la longueur totale des lignes physiques dans ce mode. Cette longueur comprend bien entendu la partie visible de limage, mais galement la partie due au blanking horizontal. Rappelons que le blanking est la partie balaye par le faisceau alors quil est teint, ce qui comprend la partie balaye pendant la dure du signal de synchronisation horizontal. Dans lexemple donn ci-dessus, le blanking a une longueur gale 1352-1024 pixels, soit 328 pixels. La quatrime valeur des paramtres verticaux xe de mme le nombre de lignes total du mode, en tenant compte des lignes du blanking vertical. Comme vous pouvez le constater dans la ligne de mode exemple, le pixel auquel le signal de synchronisation commence nest pas le dernier pixel visible. En effet, il y a 40 pixels dcart entre le dernier pixel visible (en loccurrence, le pixel 1024) et le pixel auquel le signal de synchronisation horizontal commence (le pixel 1064). Cet espace fait partie du blanking, il sert de marge pour viter les perturbations dues au retour de balayage et pour positionner limage sur lcran. Cette zone noire se trouve au del du bord droit de limage afche. Elle est suivie par la zone qui serait balaye pendant la dure du retour de balayage si le faisceau poursuivait sa route au lieu de revenir sur le bord gauche. Cette zone se termine au pixel indiqu par la troisime valeur (1240 dans notre exemple). Ce pixel est donc toujours positionn sur le point le plus droite que le moniteur peut afcher. Par consquent, la taille de la partie du blanking situ la droite de limage est gale au numro du pixel o le signal de synchronisation horizontal se termine moins le nombre de pixels afchs. Dans notre exemple, cette partie de blanking a une taille de 1240-1024 pixels, soit 216 pixels. La taille de la partie du blanking horizontal situ la gauche de lcran est donc logiquement gale la longueur totale de la ligne (1352) moins le pixel o le signal de synchronisation se termine (1240), ce qui donne 112 pixels. Vous voyez ainsi que lon peut dcaler limage vers la gauche en augmentant les valeurs de dpart et de n du signal de synchronisation. Inversement, on peut dcaler limage vers la droite en diminuant ces valeurs. Le mme raisonnement peut tre appliqu aux paramtres verticaux du mode graphique. Le blanking vertical comprend les lignes balayes avant et aprs le signal de synchronisation, ainsi que les lignes balayes pendant le temps o ce signal est gnr. La dernire ligne de ce signal est, encore une fois, la ligne la plus basse que le moniteur peut afcher. On peut donc dplacer limage vers le haut ou

330

Chapitre 10. Installation de XWindow vers le bas en jouant sur les valeurs de dpart et de n du signal de synchronisation vertical dans les paramtres verticaux du mode graphique. Figure 10-3. Paramtres des lignes de mode

En augmentant le nombre de pixels physiques pour chaque ligne et en conservant la mme rsolution, la largeur de limage visible est rduite. En effet, la proportion de la partie visible de limage sur la largeur totale de lcran est dautant plus faible que le nombre de pixels physiques des lignes est grand. Le mme raisonnement peut tre appliqu sur les paramtres verticaux. Limage peut donc tre agrandie ou rduite horizontalement et verticalement en jouant sur la longueur totale des lignes et sur la hauteur totale de limage. Si lon veut que limage reste centre, il faut galement dcaler les points de dbut et de n des signaux de synchronisation, pour que la proportion du blanking place de part et dautre de limage reste constante. Il faut bien comprendre que la modication des paramtres de synchronisation et de la longueur totale de la ligne est soumise de fortes contraintes. Il faut sassurer que les dures des signaux de synchronisation et du blanking restent dans les limites de ce que peut accepter le moniteur. De plus, le nombre de points balays au total est videmment le produit de la longueur totale des lignes et du nombre de lignes total du mode. frquence de base xe, cela revient dnir le taux de rafrachissement, puisque plus il y a de pixels balayer dans chaque image, moins il est possible dafcher dimages par seconde. Cela nest pas gnant si vous pouvez augmenter la frquence de base. Par contre, si vous avez atteint la limite de votre carte graphique, ou la limite de bande passante de votre moniteur, vous serez limit dans le taux de rafrachissement si vous devez rduire les dimensions de limage afche. Vous devez vous en doutez prsent : lcriture dune ligne de mode est un sport trs difcile. La technique utiliser est itrative. Vous pouvez tourner en rond pendant un certain temps, si vous ne savez pas vous y prendre. La premire des choses faire est de choisir la dimension de limage que vous dsirez obtenir. Cette dimension va xer la largeur totale et le nombre de lignes total qui seront utiliss pour ce mode graphique. Vous pouvez toujours partir des lignes de mode utilises pour les modes graphiques VESA pour un moniteur semblable au vtre. Une fois que vous aurez ces valeurs, vous pourrez essayer de faire monter le taux de rafrachissement en augmentant la frquence de base.

331

Chapitre 10. Installation de XWindow Vous aurez peut-tre redimensionner et recentrer limage sur le moniteur. Les quatre contraintes respecter lorsque vous augmentez la frquence de base sont bien entendu la dure du blanking horizontal et vertical, la dure des signaux de synchronisation et les plages de frquences horizontales et verticales acceptes par votre moniteur. Il est probable que vous aurez accrotre lcart entre les valeurs de dbut et de n des signaux de synchronisation, car leur dure peut baisser dangereusement lorsque la frquence de base augmente. Malheureusement, cela peut vous limiter dans la possibilit de centrer limage sur votre moniteur. Une image dont les bords ne sont pas rectilignes ou pas nets est un signe indiquant que le signal de synchronisation nest pas sufsamment long. Si vous ne vous en sortez pas, cest que vous essayez datteindre un taux de rafrachissement trop lev. Si vous dsirez fabriquer un mode graphique de rsolution non standard, vous ne trouverez pas forcment une ligne de mode pouvant servir de point de dpart. Dans ce cas, il va vous falloir crer cette ligne de mode ex-nihilo. Vous trouverez dans le chier de documentation VideoModes.doc de XFree86 les explications permettant de crer une ligne de mode correcte partir des caractristiques de votre moniteur. Pour les moniteurs multisynchrones, la technique suivante peut tre utilise. La premire tape est de trouver la bande passante de votre moniteur et les plages de frquences horizontales et verticales utilisables par votre moniteur. Ces donnes sont trs souvent fournies dans la documentation du moniteur. Par exemple, pour un moniteur Sony Multiscan 100ES, ces plages de frquences sont les suivantes : Horizontales (kHz) Frquence minimale Frquence maximale 30 70 50 120 Verticales (Hz)

La deuxime tape est de choisir la rsolution que lon dsire utiliser. Supposons que lon veuille utiliser une rsolution intermdiaire entre 1024x768 et 800x600 sur ce type dcran 15 pouces. Prenons par exemple 904x678. Notez que la rsolution horizontale est divisible par 8, et que la rsolution verticale est gale aux trois quarts de cette dernire. Ce rapport permet simplement de conserver la proportion de 4/3 des crans dordinateurs. Pour pouvez cependant choisir un autre rapport si vous le dsirez. Vous devez ensuite dterminer les longueurs totales des lignes en pixels et le nombre total de lignes, blanking compris. Cest cette partie qui est la plus difcile, elle ncessite de connatre les dures minimales des signaux de synchronisation horizontaux et verticaux. Ces donnes sont hlas rarement fournies par les fabricants. Heureusement, on peut sen passer en pratique, car tous les crans cathodiques utilisent la mme technologie. En gnral, la longueur totale dune ligne est gale la rsolution horizontale divise par 0,8, et le nombre total de lignes est gal la rsolution verticale augmente de 5%. Pour notre mode graphique, le calcul est donc le suivant :
longueur totale des lignes = 904 pixels / 0,8 = 1130 pixels hauteur totale de limage = 678 lignes * (1+5/100) = 678 lignes * 1,05 = 711,9 lignes.

La longueur totale des lignes nest pas multiple de 8, nous devons donc larrondir 1136. De mme, la hauteur totale de limage doit tre arrondie 712 lignes. Nous disposons prsent des premires et dernires valeurs des paramtres horizontaux et verticaux de la ligne de mode. Les paramtres intermdiaires, qui xent le dbut et la n des signaux de retour de balayage, doivent tre choisis de telle sorte que ces signaux commencent un peu aprs le dbut du blanking et se terminent un peu avant le dbut de la gnration de limage suivante. En pratique,

332

Chapitre 10. Installation de XWindow on peut couramment considrer quune marge de 32 40 pixels est sufsante pour les signaux de synchronisation horizontaux, et quil faut 0 10 lignes pour les signaux de synchronisation verticaux. Lcart entre le dbut et la n de ces signaux doit tre sufsamment grand pour garantir leurs dures minimales exiges (mais a priori inconnues) par votre moniteur. Dans notre exemple, nous pouvons donc choisir les paramtres suivants :
HTimings 904 944 1096 1136 VTimings 678 683 707 712

Il reste dterminer la frquence de base utiliser. Le but est bien entendu dobtenir le taux de rafrachissement le plus lev possible, donc la frquence de base la plus leve, tout en restant dans les limites de la carte graphique et du moniteur. La contrainte la plus forte en gnrale est la frquence maximale de balayage horizontal. Dans notre cas, lcran est capable de travailler 70 kHz au plus, cest--dire dafcher 70000 lignes par seconde. Comme notre mode graphique utilise 712 lignes physiques au total, cela nous donne un taux de rafrachissement de 70000/712, soit environ 98 images par seconde. Bien entendu, il faut contrler que cette frquence est bien dans la plage de frquences verticales du moniteur. Cest bien le cas ici, puisquil peut supporter des frquences allant jusqu 120 Hz. En gnral, il faut prendre la plus petite de ces valeurs comme taux de rafrachissement initial. Une fois le taux de rafrachissement dtermin, nous devons calculer la frquence de base utiliser. Pour afcher 98 images de 710 lignes de 1125 pixels par seconde, nous calculons cette frquence de la manire suivante :
98 * 712 * 1136 = 79,26 MHz

Encore une fois, il faut contrler que la carte graphique peut gnrer un signal de cette frquence et que celle-ci est bien infrieure la bande passante du moniteur. Dans le cas contraire, il faudrait encore une fois se limiter la plus petite de ces valeurs. La plupart des cartes graphiques rcentes peuvent monter au moins jusqu 150MHz, et lcran Sony Multiscan 100ES a une bande passante bien suprieure cette valeur. Nous pouvons donc conserver cette frquence de base, et obtenons donc la ligne de mode suivante :
Mode "904x678" DotClock 79.26 HTimings 904 944 1096 1136 VTimings 678 683 707 712 EndMode

Cette ligne de mode a peu de chances dtre satisfaisante sans retouches, mais elle peut servir de point de dpart pour la recherche de la ligne de mode idale. En gnral, les paramtres tant choisis proches de loptimum, limage sera bien trop grande ou dforme sur les bords. Vous devrez donc faire des ajustements manuels pour vous rapprocher, petit petit, dune ligne de mode utilisable. Vous pourrez utiliser lutilitaire xvidtune pour cela. Cet utilitaire est un utilitaire fourni avec XFree86, qui permet de modier les dimensions et la position de limage interactivement. Cet utilitaire fonctionne directement sous XWindow, et permet donc davoir un aperu de limage avec les paramtres modis. Vous trouverez une description plus dtaille de la manire dutiliser xvidtune dans la Section 10.2.6.

333

Chapitre 10. Installation de XWindow Seul le redimensionnement de limage modie le nombre total de lignes et leur longueur totale. En particulier, la rduction de la taille de limage accrot la taille totale des lignes et leur nombre, ce qui entrane la baisse du taux de rafrachissement. chaque fois que vous rduisez limage, vous pourrez recalculer le taux de rafrachissement et la frquence de base ncessaire pour atteindre ce taux, tout en veillant ne dpasser ni les limites de votre carte graphique, ni celles de votre moniteur. Ainsi, aprs quelques modications de la ligne de mode dans xvidtune et rajustements de la frquence de base, la ligne de mode suivante peut tre obtenue :
Mode "904x678" DotClock 79.82 HTimings 904 920 1104 1144 VTimings 678 679 710 712 EndMode

Cette ligne de mode permet dobtenir un afchage correct en 904 par 678, avec un taux de rafrachissement de 97.99 Hz, ce qui est plus quhonorable. On constate que la premire ligne de mode utilisait une dure de balayage vertical trop petite, ce qui provoquait des dformations sur les bords de limage. Si vous voulez approfondir le sujet, vous pouvez lire les formules mathmatiques donnant les relations entre les diffrents paramtres techniques inuant sur la gnration des images dans lAnnexe C. Ces formules sont donnes titre indicatif, elles ne vous donneront pas les caractristiques techniques de votre cran. Encore une fois, je ne saurais trop vous recommander dutiliser les outils fournis avec votre distribution...

10.2.4.8. Sections Modes


Gnralement, les lignes de mode sont dnies pour un moniteur donn, car lapparence de limage dpend des caractristiques physiques de chaque moniteur. Par consquent, ces lignes sont dnies la plupart du temps dans les sections Monitor . Cependant, il peut tre utile de regrouper toutes les lignes de mode dun type de moniteur donn dans une section part, an de structurer et dorganiser le chier XF86Config. Pour cela, on crira des sections Modes , qui nauront donc pas dautre rle que de contenir une ou plusieurs lignes de mode, et qui seront rfrences dans les sections Monitor des moniteurs qui dsirent utiliser ces lignes de mode. Lintrt de regrouper toutes les lignes de mode dans une section Modes apparat clairement ds que plusieurs sections Monitor utilisent les mmes lignes de mode. Ce peut tre le cas pour des moniteurs dun mme fabricant ou possdant des caractristiques techniques similaires. Le format des sections Monitor est trs simple, puisquelles ne contiennent quun identicateur, introduit comme laccoutume par le mot-clef Identifier suivi du nom de la section entre guillemets, et les lignes de mode elles-mmes. La syntaxe de ces lignes est exactement la mme que celle qui est utilise dans la section Monitor et ne sera donc pas dcrite plus en dtail ici. Vous trouverez ci-dessous un exemple de section Modes :
# Exemple de section Modes : Section "Modes" Identifier "Modes Standards" Modeline "640x480" 50.00 640 656 720 832 480 480 489 501 Modeline "800x600" 72.80 800 816 928 1040 600 600 610 626 Modeline "1024x768" 92.00 1024 1076 1252 1344 768 772 782 806

334

Chapitre 10. Installation de XWindow


EnsSection

10.2.4.9. Sections Screen


Les sections Screen permettent de regrouper les moniteurs et les cartes graphiques pour effectuer lafchage des crans dun display, et dindiquer les modes graphiques que lon dsire utiliser parmi tous les modes que le moniteur indiqu sait grer, pour chaque profondeur de couleur. Les sections Screen sont, comme les sections Monitor , constitues de deux parties. La premire partie spcie les informations gnrales de lcran, savoir essentiellement la carte graphique et le moniteur utiliser. La deuxime partie quant elle permet de prciser, pour chaque profondeur de couleur utilisable avec cet cran, les rsolutions des modes graphiques utilisables ainsi que les paramtres des rsolutions virtuelles. Voici trouverez ci-dessous un exemple de section Screen :

Section "Screen" Identifier "Ecran 1" Device "Carte 1" Monitor "Moniteur DefaultDepth 24 SubSection "Display" Depth 24 Modes "1024x768" EndSubSection SubSection "Display" Depth 16 Modes "1024x768" EndSubSection SubSection "Display" Depth 8 Modes "1024x768" EndSubSection EndSection

1"

"800x600" "640x480"

"800x600" "640x480"

"800x600" "640x480"

Loption Identifier permet, comme dhabitude, de nommer la section Screen courante. Le nom doit tre indiqu entre guillemets, la suite du mot cl Identifier . Cest ce nom qui sera utilis dans les sections ServerLayout pour rfrencer les crans du display. Le mot-clef Device indique la section Device utiliser pour obtenir les informations sur la carte graphique qui gre lafchage de cet cran. Il doit tre suivi du nom qui a t spci aprs le mot-clef Identifier dans la section Device correspondante. De mme, le mot-clef Monitor indique la section Monitor utiliser pour obtenir les informations sur le moniteur courant. Enn, le mot-clef DefaultColorDepth indique la profondeur de couleur utilise par dfaut au dmarrage de XWindow. Comme nous le verrons plus loin, une autre profondeur de couleur que celle-ci pourra tre utilise en passant un argument sur la ligne de commande du serveur X. Comme vous pouvez le voir, la section Screen contient une ou plusieurs sous-sections Display . Ce sont ces sous-sections qui indiquent les paramtres de lcran spciques chaque profondeur de couleur utilisable. Les sous-sections Display contiennent les informations suivantes :

la profondeur de couleur considre, exprime en bits par pixels aprs le mot-clef Depth ;

335

Chapitre 10. Installation de XWindow

la liste des modes graphiques utilisables avec cette profondeur de couleur, rfrencs par le nom de leur ligne de mode, aprs le mot-clef Modes . Plusieurs modes peuvent tre spcis, en donnant leurs noms respectifs, spars par des espaces. des informations complmentaires concernant les rsolutions virtuelles pour les modes dans lesquels la rsolution logique de lcran est suprieure la rsolution rellement utilise. Ces paramtres indiquent la rsolution logique de lcran virtuel, ainsi que le positionnement de limage afche par lcran physique dans cet cran virtuel. Vous trouverez de plus amples informations sur ces options dans la page de manuel XF86Config.

10.2.4.10. Sections ServerLayout


Le dernier type de section, qui regroupe toutes les informations des sections vues prcdemment, est le type des sections ServerLayout . Comme leur nom lindique, les sections de ce type fournissent les informations concernant la disposition des crans dun display. Cependant, dans la plupart des cas, les displays nont quun seul cran, et il est vident que la disposition de cet cran est triviale dans ce cas. Il peut exister plusieurs sections ServerLayout dans le chier XF86Cong. En effet, ce chier peut tre utilis par plusieurs serveurs X qui peuvent tourner simultanment sur la mme machine (que lon ait plusieurs cartes graphiques ou non). Chaque serveur X peut donc utiliser une section ServerLayout . La section utilise par dfaut est la premire que le serveur X trouvera dans le chier XF86Config, mais il est possible de lui demander den utiliser une autre laide dune option en ligne de commande. Toutefois, encore une fois, la plupart des machines ne disposent que dun seul cran, et mme si lon lance plusieurs serveurs X, il ny a ici besoin que dune seule section ServerLayout . Les sections ServerLayout indiquent surtout au serveurs X quels sont les priphriques dentre utiliser (au moins un clavier et une souris) en plus de lcran ou les crans du display. Ce sont donc ces sections qui dnissent compltement un display donn. Lexemple donn ci-dessous prsente une section ServerLayout simple :
Section "ServerLayout" Identifier "Serveur 1" Screen "Ecran 1" InputDevice "Clavier 1" "CoreKeyboard" InputDevice "Souris 1" "CorePointer" Option "BlankTime" "5" EndSection

Les sections ServerLayout disposent dun nom qui permet de les identier. Ce nom est le nom qui sera utilis dans la ligne de commande du serveur X si plusieurs sections ServerLayout sont dnies. Il doit tre indiqu, comme dhabitude, la suite du mot-clef Identifier , entre guillemets. Les sections ServerLayout doivent ensuite indiquer au moins un cran pour le display quelles dcrivent. Les crans sont introduits laide du mot-clef Screen , suivi de lidenticateur de la section Screen utiliser. Si plusieurs crans doivent tre utiliss, il est possible de spcier la position des crans les uns par rapport aux autres laide doptions complmentaires, qui sont spcies la suite de lidenticateur de lcran. Ces options permettent de positionner les crans relativement les uns aux autres, ou de manire absolue en prcisant leurs coordonnes dans le systme

336

Chapitre 10. Installation de XWindow de coordonnes de lcran virtuel. Les options les plus simples utiliser sont les options RightOf, LeftOf, Above et Below, qui permettent dindiquer respectivement que lcran courant est situ droite, gauche, au dessus ou en dessous de lcran dont lidenticateur est spci juste aprs. Par exemple, si lon veut rajouter un deuxime cran la section prcdente, et que cet cran doit tre situ droite du premier cran, on ajoutera simplement la ligne suivante :
Screen "Ecran 2" RightOf "Ecran 1"

La section ServerLayout doit ensuite contenir au moins une rfrence un clavier et une rfrence un priphrique de pointage. Ces rfrences sont introduites laide du mot-clef InputDevice , suivie de lidenticateur de la section InputDevice utiliser. Le serveur X doit interprter les vnements provenant des diffrents priphriques dentre correctement. Il faut en particulier lui indiquer quels sont les priphriques principaux laide de loption CorePointer pour la souris principale et loption CoreKeyboard pour le clavier principal. Seuls les priphriques dentre principaux seront utiliss en tant que clavier et en tant que souris. Enn, comme vous pouvez le voir dans lexemple donn ci-dessus, il est possible dutiliser des options spciques pour chaque section ServerLayout . Ces options sont les mmes que celles utilises dans la section ServerFlags . Vous pouvez donc ici spcier une autre valeur que celles indiques dans cette section, an de prciser le comportement dun serveur spcique. Dans lexemple donn ci-dessus, lconomiseur dcran a t rgl pour sactiver au bout de 5 minutes.

10.2.5. Informations utilises lors du dmarrage de XFree86


Les informations stockes dans le chier de conguration XF86Config sont utilises par XFree86 pour dterminer la manire dont lafchage doit se faire. Lorsque le serveur X dmarre, il commence par rechercher la section ServerLayout quil doit utiliser pour dterminer les principales options du display. Par dfaut, il utilisera systmatiquement la premire section ServerLayout du chier XF86Config. Cependant, il est possible de lui demander den utiliser une autre, laide de loption de ligne de commande -layout, suivie de lidenticateur de la section utiliser. Le serveur X initialise alors tous les crans du display et prend en charge les priphriques dentre. Pour chaque cran, il choisit la profondeur de couleur indique dans la variable DefaultDepth de la section Screen et tente de lutiliser. Cependant, il est possible de choisir une autre profondeur de couleur laide de loption -depth, suivie de la profondeur de couleur utiliser, spcie en bits par pixels. Remarquez que dans le cas des congurations plusieurs cran, il nest possible de spcier quune seule profondeur de couleur. Il faut donc que toutes les sections Screen des crans utiliss contiennent une sous-section Display pour la profondeur de couleur choisie. Une fois la profondeur de couleur dtermine, le serveur X choisit pour chaque cran la premire rsolution indique dans la liste des modes de la sous-section Display dont la profondeur de couleur correspond celle utilise. Il tente alors de passer ladaptateur graphique dans ce mode graphique, en utilisant pour cela la ligne de mode correspondante cette rsolution pour piloter le moniteur. Il est possible, lorsque XWindow fonctionne, de changer cette rsolution avec les combinaisons de touches CTRL+ALT+PLUS et CTRL+ALT+MINUS (PLUS et MINUS tant les touches + et - du pav numrique). Ces deux combinaisons de touches permettent respectivement de passer dune rsolution la suivante ou la prcdente dans la liste des modes spcis dans la sous-section Display . Pour chaque mode choisi, la ligne de mode correspondante la rsolution de ce mode est utilise pour gnrer les signaux destination du moniteur.

337

Chapitre 10. Installation de XWindow


Note : La rsolution virtuelle de lcran nest pas modie lorsquon change de rsolution physique. Elle est toujours gale la plus grande des rsolutions disponibles dans la section Display utilise. Seule la rsolution physique de lafchage est modie. Vous pourrez dplacer la zone dafchage en dplaant la souris, et faire dler ainsi tout lcran. Il est impossible de changer la profondeur de couleur utilise sans redmarrer le serveur X. Les seuls changements accepts sont ceux concernant les rsolutions graphiques listes dans la sous-section Display pour la profondeur de couleur courante.

10.2.6. Utilisation de xvidtune


xvidtune est un petit utilitaire permettant de rgler les paramtres dafchage de chaque mode graphique. Grce lui, vous pourrez ajuster la taille de limage horizontalement et verticalement, ainsi que sa position par rapport aux bords du moniteur. xvidtune se lance simplement, en tapant son nom en ligne de commande :
xvidtune

Ds quil dmarre, il commence par afcher une fentre davertissement, pour vous prvenir quun usage par une personne non avertie peut provoquer de srieux dommages au moniteur. En effet, il permet de modier les paramtres de synchronisation horizontale et verticale du moniteur pour ajuster limage. Si vous choisissez de mauvais paramtres, vous pouvez sortir des spcications techniques de votre moniteur, ce qui pourrait fort bien lendommager. Fort heureusement, la plupart des moniteurs modernes disposent de mcanismes de scurit qui les empchent de gnrer limage lorsque ces paramtres sont incorrects. Par consquent, il est assez rare davoir des problmes avec cet utilitaire, dautant plus quil effectue des contrles avant toute tentative douteuse. Vous pouvez donc valider en toute conance, mais soyez malgr tout averti des risques potentiels. Rappelons que le serveur X peut tre arrt nimporte quel moment laide de la squence de touches CTRL+ALT+BACKSPACE. Lcran de xvidtune se compose de quatre parties. La partie suprieure gauche permet de rgler les paramtres horizontaux du mode graphique, savoir la largeur de limage et sa position par rapport aux bords verticaux du moniteur. La partie suprieure droite permet de rgler les paramtres verticaux, savoir la hauteur et la position par rapport aux bords horizontaux du moniteur. La partie infrieure droite contient les informations essentielles sur le mode vido courant. Enn, la partie infrieure gauche contient les boutons permettant de choisir les actions effectuer. Les paramtrages horizontaux et verticaux du mode graphique peuvent tre modis trs simplement. Les boutons Left et Right permettent de centrer limage horizontalement, et les boutons Wider et Narrower permettent dajuster sa largeur. De mme, les boutons Up et Down inuent sur le centrage vertical, et les boutons Shorter et Taller ajustent sa hauteur. Vous pouvez tester les modications apportes tout instant laide du bouton Test . Il est mme recommand dessayer rgulirement les paramtres choisis et de procder pas pas. Lorsque les paramtres conviennent, ils peuvent tre appliqus immdiatement laide du bouton Apply . Si vous dsirez gnrer une ligne mode valide pour la conguration courante, par exemple an de modier votre chier de conguration XF86Config, vous pouvez cliquer sur le bouton Show . La ligne de mode sera afche sur le terminal partir duquel vous avez lanc xvidtune. Vous pourrez alors la recopier dans le chier XF86Config la place de la ligne de mode du mode graphique en cours dutilisation.

338

Chapitre 10. Installation de XWindow Il est possible de changer le mode graphique courant en cliquant sur les boutons Next et Prev . Ils permettent de passer en revue tous les modes graphiques qui ont t enregistrs dans le chier XF86Config par XF86Setup. Une fois que vous aurez ajust tous les modes graphiques et que vous les aurez enregistrs laide du bouton Apply , vous pourrez quitter xvidtune en cliquant sur le bouton Quit . Notez que le bouton Apply valide les choix en cours, mais ne les enregistre pas dans le chier XF86Config. Vous devez reporter manuellement dans le chier XF86Config les paramtres du mode courant, tels quils sont prsents par la commande Show .

10.3. Utilisation du pilote frame buffer du noyau


Si par malheur votre carte graphique nest gre par aucun des pilotes de XFree86 (cas relativement exceptionnel), vous serez sans doute oblig dutiliser le pilote vesa. Ce pilote permet dutiliser toutes les cartes compatibles avec le standard VESA 2.0 (cest--dire la plupart des cartes graphiques, mais il existe des exceptions notables). Il existe une alternative ce pilote, qui se base sur les fonctionnalits frame buffer du noyau de Linux. Cette fonctionnalit permet dutiliser Linux compltement en mode graphique, en fournissant un accs linaire direct la mmoire vido de la carte graphique grce au chier spcial de priphrique /dev/fb0. Il existe un pilote XFree86 pour le frame buffer du noyau, qui permet donc de dmarrer le serveur X en sappuyant compltement sur le noyau. Lavantage du frame buffer du noyau est que mme les consoles en mode texte feront leur afchage en mode graphique (cela est aussi un inconvnient du point de vue des performances). En revanche, vous ne pourrez pas changer de rsolution une fois que le systme aura dmarr. Pour accder la mmoire vido, le noyau se base galement sur linterface de programmation du standard VESA 2.0, qui est gre par le BIOS de la plupart des cartes graphiques rcentes. Cela signie galement que vous ne disposerez pas dacclration matrielle en gnral, sauf pour quelques cartes graphiques courantes reconnues par le noyau.

10.3.1. Conguration du noyau et installation du pilote


La mise en uvre du pilote pour le frame buffer se fait videmment dans la conguration du noyau. Les options activer sont toutes dans le menu Console drivers . En plus de loption VGA text console , vous devez imprativement activer Video mode selection support . Cette option vous permettra de choisir le mode VESA utiliser lors du dmarrage de lordinateur. Vous devrez galement cocher loption Support for frame buffer devices (EXPERIMENTAL) (cette option ne vous sera propose que si vous avez valid loption Prompt for development and/or incomplete code/drivers du menu Code maturity level options ). Les options suivantes du gestionnaire du frame buffer du noyau devront galement tre actives :

VESA VGA graphics console (cette option permet dutiliser un mode graphique VESA indiqu au dmarrage pour lafchage de la console) ; Advanced low level driver options (NEW) (cette option vous permet de prciser la structure de la mmoire vido dans les diffrents modes graphiques utiliss avec le frame buffer) ; 8 bpp packed pixels support , 16 bpp packed pixels support , 24 bpp packed pixels support et 32 bpp packed pixels support (ces options

339

Chapitre 10. Installation de XWindow correspondent aux diffrentes structures de la mmoire vido qui sont utilises par les modes graphiques VESA) ;

Select compiled-in fonts (NEW) (cette option vous permet de choisir les polices de caractres qui seront utilises par la console) ; VGA 8x8 font et VGA 8x16 font (ces deux polices sont les polices standards utilises par la console).

Il faut ensuite vrier que le chier spcial de priphrique /dev/fb0 a t cr par le programme dinstallation de votre distribution. Si ce nest pas le cas, vous devez le crer laide de la commande mknod. Le numro de priphrique majeur de ce chier est 29. Le numro mineur utiliser est le numro du priphrique. Par exemple, le chier spcial de priphrique /dev/fb0 porte les numros 29 et 0, le chier /dev/fb1 porte les numros 29 et 1, etc. Ces chiers sont tous de type caractre, la ligne de commande pour crer un de ces chiers est donc la suivante :
mknod fbn c 29 n

o n est le numro du chier spcial de priphrique crer. Il est galement recommand de crer un lien symbolique /dev/fb vers /dev/fb0 an dassurer la compatibilit avec de vieux programmes utilisant ce nom pour accder au chier spcial de priphrique du gestionnaire du frame buffer du noyau. Une fois ces oprations ralises, vous devez compiler le noyau et linstaller, en suivant la mthode dcrite dans la partie dcrivant la compilation du noyau. Lors du redmarrage du systme, vous pourrez passer loption suivante au noyau pour prciser le mode graphique VESA utiliser :
vga=mode

o mode est le numro du mode graphique dsir. Les numros valides sont indiqus dans le tableau donn ci-dessous : Tableau 10-2. Numros des modes graphiques VESA Couleurs 640x480 256 32768 65536 16,8M 769 784 785 786 800x600 771 787 788 789 Rsolution 1024x768 773 790 791 792 1280x1024 775 793 794 795 1600x1200 796 797 798 799

Si tout se passe correctement, votre systme devrait dmarrer dans le mode graphique indiqu et afcher le logo de Linux (un pingouin nomm Tux , pour ceux qui ne le sauraient pas encore). Lorsque vous aurez dtermin le mode graphique qui vous convient, vous pourrez modier le chier de conguration de Lilo et spcier le numro de ce mode dans la ligne vga=... . De cette manire, votre systme redmarrera automatiquement dans ce mode graphique.

340

Chapitre 10. Installation de XWindow

10.3.2. Conguration du serveur X


Les manipulations prcdentes nont pas grand intrt si vous ne dsirez travailler quavec la console. En effet, lafchage en mode graphique est beaucoup plus lent que lafchage en mode texte, et lafchage du pingouin Tux au dmarrage ne vous apportera pas grand chose. Cest pour cela que ltape suivante est normalement de congurer le serveur X de XFree86 pour le pilote frame buffer, an dutiliser lenvironnement graphique XWindow et son systme de fentrage. La conguration du serveur X est lmentaire. Il faut avant tout sassurer que lon dispose bien du pilote permettant au serveur X dutiliser linterface /dev/fb0. Ce pilote se nomme fbdev, et utilise un autre module spcique au systme dexploitation nomm fbdevhw. Il faut ensuite modier ou crer le chier XF86Config pour utiliser ce pilote. Les seules sections modier pour utiliser le pilote frame buffer sont la section Device et la section Screen . La section Device est rduite sa plus simple expression, puisque tous les paramtres sont xs par le mode VESA choisi au dmarrage dune part, et parce que le serveur X ne saurait pas les exploiter dautre part. Il suft donc simplement dindiquer que le pilote utiliser est le pilote fbdev, et de donner ladresse de la carte vido sur le bus laide du mot-clef BusID :
Section "Device" Identifier "Carte 1" Driver "fbdev" BusID "PCI:1:5:0" EndSection

Vous pourrez dterminer ladresse de votre carte graphique laide de la commande lspci, ou en demandant au serveur X de scanner les bus PCI en lui passant loption -scanpci en paramtre :
XFree86 -scanpci

La section Screen est elle aussi trs simplie, puisque le seul mode graphique utilisable est le mode choisi au dmarrage de la machine. La liste des modes utilisables peut donc tre franchement omise, ou se rduire la valeur spciale default :
Section "Screen" Device "Carte 1" Monitor "Moniteur 1" DefaultDepth 16 SubSection "Display" Depth 16 Modes "default" EndSubSection EndSection

Notez quil est impratif que la profondeur de couleur de la sous-section Display soit la mme que celle du mode VESA indiqu au dmarrage. Prenez garde ne pas utiliser une profondeur de couleur trop leve, car cela dgraderait encore un peu plus les performances. Par ailleurs, comme aucun mode nest spci dans la section Screen , les lignes de mode des sections Monitor sont prsent facultatives. Ces sections peuvent donc tre simplies galement. Une fois ces modications ralises, vous devrez pouvoir dmarrer XWindow simplement avec la commande startx. Vous disposerez alors de toutes les fonctionnalits de XWindow, avec des per-

341

Chapitre 10. Installation de XWindow formances quelques peu infrieures celles que vous auriez avec un serveur X adapt votre carte graphique. Il est conseill de suivre lactualit de XFree86 an de savoir si un tel serveur est en cours de dveloppement et, si oui, den rcuprer une version nale ds que possible.

10.4. Conguration des terminaux X


Nous avons vu dans le chapitre de conguration du systme de base que la connexion des utilisateurs se faisait par lintermdiaire dun terminal. La plupart des terminaux sont en mode texte, mais il est galement possible dutiliser des terminaux graphiques sous XWindow. Les terminaux de ce type sont logiquement appels terminaux X . Si le niveau dexcution par dfaut de votre systme est le niveau associ au dmarrage sous XWindow (ce niveau est en gnral 3, 4 ou 5 selon les distributions), XWindow est lanc ds le dmarrage de la machine et la demande de connexion se fait via un cran graphique. Dans ce cas, vous vous connecterez directement par lintermdiaire de ce terminal X. Le principe de fonctionnement des terminaux X nest pas exactement le mme que celui que nous avons vu pour les terminaux virtuels (voir la Section 6.6). En effet, les terminaux X ne sont pas grs par les processus getty et login classiques, mais par un programme spcique nomm xdm (abrviation de langlais X Display Manager ).

10.4.1. Principe de fonctionnement de xdm


Contrairement ce quil fait avec les processus getty, init ne lance quun script dinitialisation de XWindow lorsquil passe dans le niveau dexcution correspondant. Ce script a pour tche essentiellement le dmarrage du dmon xdm. Cest ce dmon qui est en charge de grer les connexions sur tous les serveurs X quil peut trouver, en proposant la fentre de login et en permettant ainsi lutilisateur de sidentier et sauthentier. En gnral, xdm lance lui-mme le serveur X de la machine locale, et surveille son excution. Lorsque lutilisateur se dconnecte, le serveur X se rinitialise, et xdm afche une nouvelle fentre de connexion. Cependant, xdm est galement capable dutiliser des serveurs X distants (qui sont donc dj lancs), an de permettre la connexion dutilisateurs sur des terminaux X dports. Enn, il est possible de le congurer pour quil se signale sur un rseau, an que les serveurs X fonctionnant sur ce rseau puisse lui demander une connexion. Les serveurs X capable de se connecter xdm de cette manire doivent comprendre le protocole XDMCP (abrviation de langlais XDM Control Protocol ). Comme on le voit, la souplesse de ce mcanisme est tout simplement exceptionnelle.
Note : Pratiquement, le processus xdm se duplique pour chaque terminal X dont il gre la connexion. Ainsi, chaque processus xdm propose la connexion et surveille la dconnexion de lutilisateur sur un terminal X donn. Tous les processus xdm sont lancs par le processus xdm initial qui a t lanc par les scripts de changement de niveau dexcution. Ce mcanisme est donc compltement transparent pour lutilisateur. La plupart des environnement graphiques modernes (comme KDE et GNOME) fournissent leur propre gestionnaire de display. Ces gestionnaires sont toutefois compatibles avec xdm, et leur conguration se fait de la mme manire.

342

Chapitre 10. Installation de XWindow

10.4.2. Conguration de xdm


Le comportement de xdm est compltement dni dans ses chiers de conguration, qui sont en gnral placs dans le rpertoire /etc/X11/xdm/. Ces chiers dcrivent chacun un des aspects du comportement de xdm. Le chier de conguration principal est le chier xdm-config, qui contient les rfrences sur les autres chiers de conguration.

10.4.2.1. Serveurs X locaux


La dnition des serveurs X qui nutilisent pas le protocole XDMCP et que xdm doit prendre en charge directement est ralise dans le chier de conguration rfrenc par la ligne DisplayManager.servers du chier xdm-config. Par dfaut, ce chier est le chier /etc/X11/xdm/Xservers. Il contient une ligne par serveur, chaque ligne ayant la syntaxe suivante :
display type [commande]

o display est le nom du display utiliser, type est le type de serveur X (serveur local ou distant), et commande est la commande excuter pour lancer le serveur sil est local. Le display indiqu sera celui qui sera utilis pour dnir la variable denvironnement DISPLAY, et doit donc utiliser la syntaxe normale des displays. Les deux types de serveurs disponibles sont local , pour les serveurs de la machine locale que xdm doit lancer lui-mme, et foreign , pour les serveurs distants sur lesquels xdm doit afcher la fentre de demande de connexion (ils doivent donc tre dj lancs). La ligne de commande utiliser pour le lancement du serveur ne doit tre spcie que pour les serveurs de type local . Les serveurs X peuvent prendre un certain nombres de paramtres en ligne de commande pour leur dmarrage. Vous en trouverez la liste complte dans la page de manuel Xserver et dans la page de manuel XFree86. Les options les plus intressantes dans le cadre du lancement du serveur X par xdm sont celles permettant de dnir le display que le serveur aura en charge et le terminal virtuel quil devra utiliser pour effectuer son afchage. Notez bien que le display doit tre le mme que celui donn xdm. Ces deux options sont passes directement la suite du nom de lexcutable du serveur X lancer :
/usr/X11R6/bin/X display vtNN

o vtNN est le nom du terminal virtuel utiliser (vt01 pour /dev/tty01, vt02 pour /dev/tty02, etc.). Ainsi, si lon veut faire en sorte que xdm lance automatiquement deux sessions X sur les terminaux virtuels 11 et 12, en leur affectant respectivement les displays :0.0 et :1.0, on devra placer ces deux lignes dans son chier de conguration Xservers :
:0 local /usr/X11R6/bin/X :0 vt11 :1 local /usr/X11R6/bin/X :1 vt12

Note : La spcication du terminal virtuel utiliser est facultative. Si aucun terminal nest indiqu, le serveur X utilisera le premier terminal quil trouvera. Cependant, il est plus sr de toujours indiquer le terminal utiliser, car le noyau ne cre les terminaux qu la demande, lorsquun processus dsire y accder. Or les serveurs X ne cherchent pas en crer de nouveau. Si tous les terminaux virtuels existants sont dj utiliss, le serveur X tentera donc de sen approprier un, sans se proccuper du programme qui lutilise ce moment. Le fait dindiquer manuellement le terminal utiliser vous vitera donc des problmes assez curieux, tels que ceux qui peuvent

343

Chapitre 10. Installation de XWindow


survenir si les terminaux utiliss par les serveurs X le sont pas dj par un getty par exemple. De plus, cela permet galement dviter, si on lance plusieurs serveurs X sur la mme machine, quils naccdent ensemble au mme terminal virtuel lors de leur initialisation. Il est recommand par ailleurs de basculer sur chaque terminal virtuel sur lequel un serveur X est lanc avant de se connecter an de les forcer crer leur terminal. En effet, si vous ne procdez pas ainsi, il est possible que vous ayez le temps de vous connecter dans une session X avant que les autres terminaux X naient ni de sinitialiser. Lorsque ceux-ci dmarreront, ils changeront le terminal virtuel courant et lafchage de votre bureau risque dtre corrompu. Si cela se produit, ne vous inquitez pas : votre session X na pas plant. Assurez-vous seulement que vous vous trouvez bien sur le bon terminal virtuel, et faites en sorte que lcran soit rafrachi (par exemple, changez de bureau virtuel ou dplacez une fentre sur lcran). Remarquez galement que les chiers de conguration fournis avec XFree86 ne prvoient pas lutilisation de plus de deux sessions X par dfaut. Si daventure vous dsirez en utiliser plus, vous devrez complter le chier de conguration xdm-cong avec les lignes suivantes :
DisplayManager._2.authorize: DisplayManager._3.authorize: etc. true true

Chaque ligne indique que le display correspondant (:2 pour DisplayManager._2.authorize , etc.) doit utiliser les mcanismes de scurit de XWindow. Nous verrons ces mcanismes dans la section suivante. Mez-vous enn de la consommation mmoire requise par chaque session X. Les serveurs X sont des programmes gourmands en mmoire, car ils doivent manipuler des images. Les performances du systme risquent donc de se dgrader sensiblement si vous lancez plusieurs serveurs X. Noubliez pas quaprs tout, XWindow est un systme de fentrage et que la plupart des gestionnaires de fentres X donnent la possibilit dutiliser des bureaux virtuels. En pratique, deux sessions X devraient sufre, an de se connecter sous deux utilisateurs diffrents (un utilisateur normal et lutilisateur root par exemple). Enn, notez que le changement dun terminal X un autre terminal virtuel peut provoquer quelques problmes en ce qui concerne ltat du clavier. En effet, lafchage des diodes (Verrou numrique et Majuscule en particulier) nest pas rtabli correctement, mme si le clavier continue fonctionner correctement. Cela peut surprendre quelque peu la premire fois que lon rencontre ce problme. Il suft dappuyer deux fois de suite sur les touches Verr Num et Caps Lock (cest--dire la touche de verrouillage des majuscules) an de rtablir ltat correct de ces diodes. Remarquez galement que les serveurs X mmorisent ltat des terminaux virtuels lors de leur dmarrage, et neutralisent chaque basculement vers un terminal en mode texte les ventuels changements de police de caractres.

10.4.2.2. Serveurs X utilisant XDMCP


Comme nous lavons dit plus haut, xdm est galement capable de se signaler sur un rseau laide du protocole XDMCP, an de permettre aux serveurs X distants de raliser une connexion sur la machine o il est lanc. De cette manire, le lancement dun serveur X sur une machine du rseau permettra dobtenir la fentre de connexion votre machine Linux. xdm est capable de rpondre aux demandes de connexion directes des serveurs X distants (remarquez que dans ce cas, xdm est serveur de connexions pour les serveurs X des postes clients. Faites bien attention la terminologie client/serveur ici !). Cela suppose que chaque poste client connaisse ladresse des machines qui utilisent xdm. Cette information peut faire partie de la conguration du poste client, mais elle peut galement tre dtermine dynamiquement. Pour cela, le serveur X du

344

Chapitre 10. Installation de XWindow poste client met une requte XDMCP en mode broadcast sur le rseau (cest--dire destination de tout le monde). Chaque machine sur laquelle xdm fonctionne rpondra ce client, et le serveur X proposera ainsi la liste des machines sur lesquelles une connexion est ralisable via xdm. Ainsi, lutilisateur du poste client pourra choisir le serveur sur lequel il dsire se connecter, et le processus xdm de ce serveur lui enverra la fentre de login. En ralit, tous les serveurs X ne sont pas capables de grer les rponses reues de plusieurs processus xdm provenant de plusieurs machines la suite de lenvoi dune requte en mode broadcast. Par ailleurs, il nest pas toujours possible dutiliser le mode broadcast, car les paquets de ce type peuvent trs bien ne pas tre routs lors de la traverse dun passerelle. Par consquent, xdm offre galement la possibilit dinterroger les machines du rseau local en rponse une requte de connexion indirecte. Le serveur X reoit en rponse le rsultat de la requte effectue par broadcast, et lutilisateur peut choisir la machine laquelle il dsire accder. La conguration de xdm pour le protocole XDMCP se fait dans le chier identi par la ligne DisplayManager.accessFile du chier xdm-config. Par dfaut, le chier ainsi rfrenc est le chier Xaccess du rpertoire /etc/X11/xdm/. La syntaxe de ce chier est trs simple. Il contient des rgles indiquant le comportement de xdm lorsquil reoit une requte de connexion de la part dun serveur X. Ces rgles sont dnies pour des groupes de machines. Les machines sont identies par leur nom ou leur adresse IP, plusieurs machines pouvant tre spcies par une mme rgle grce aux caractres gnriques classiques * et ?. Il est galement possible dexclure une machine ou un groupe de machines en prxant le nom du caractre de ngation !. Il existe quatre types de lignes dans le chier Xaccess. Le premier type permet simplement dindiquer que les connexions directes ou en mode broadcast provenant dune machine sont toutes acceptes. Ce sont les lignes les plus simples, puisquil suft simplement dindiquer la machine ou le groupe de machines. Par exemple, la ligne suivante :
*.localnet.org

indique que les demandes de connexion provenant de toutes les machines du domaine localnet.org sont acceptes. Il est possible de faire en sorte que xdm ne rponde quaux demandes de connexion directes simplement en ajoutant le mot cl NOBROADCAST la suite de la ligne. Ainsi, si la machine termX3.localnet.org doit pouvoir se connecter directement, mais ne doit pas recevoir de rponse de notre machine, on ajoutera la ligne suivante dans le chier Xaccess :
termX3.localnet.org NOBROADCAST

Le deuxime type de ligne permet de spcier le comportement de xdm pour les demandes de connexion indirectes. Ces lignes contiennent toujours le nom de la machine ou du groupe de machines, mais ce nom est suivi de la liste des machines auxquelles xdm doit faire suivre la demande de connexion du serveur X. Par exemple, supposons que la machine termX2.localnet.org ne soit pas capable deffectuer des requtes en mode broadcast, et que lon veuille quelle puisse se connecter sur les serveurs s5.localnet.org , s11.localnet.org et s13.localnet.org . On devra alors ajouter la ligne suivante dans le chier Xaccess :
termX2.localnet.org s13.localnet.org s5.localnet.org s11.localnet.org \

345

Chapitre 10. Installation de XWindow Le troisime type de ligne permet de lancer un programme nomm chooser et qui va proposer la liste des serveurs lutilisateur du serveur X qui demande se connecter. Ce programme est trs utile pour les serveurs X qui ne sont pas capables de proposer ce choix lutilisateur. La syntaxe de ces lignes est trs simple, puisquil suft de faire prcder les noms des serveurs par le mot cl CHOOSER. Si lon reprend lexemple prcdent, la ligne de conguration pour le terminal X termX2 deviendrait :
termX2.localnet.org CHOOSER s5.localnet.org s11.localnet.org s13.localnet.org

La liste des serveurs qui suit peut tre assez longue, et il peut tre utile de faire en sorte que le programme chooser effectue une requte en mode broadcast pour le compte du serveur X qui nen nest pas capable. Il suft pour cela de remplacer la liste des serveurs par le mot cl BROADCAST . Ainsi, la ligne suivante :
termX4.localnet.org CHOOSER BROADCAST

signie simplement que lorsque le serveur X de la machine termX4.localnet.org se connecte au processus xdm local, celui-ci lance le programme chooser. Ce dernier lance une requte en broadcast sur le rseau an de dterminer la liste des machines excutant le processus xdm. Une fois quil a obtenu cette liste, il lafche sur le display gr par le serveur X qui sest connect. De cette manire, lutilisateur peut choisir la machine sur laquelle il va se connecter. Le serveur X est mis en relation avec le processus xdm de cette machine, et la fentre de login est enn propose lutilisateur. Le quatrime type de ligne permet de dnir des macros de remplacement pour grer les listes de noms de machines plus simplement. La dnition dune macro se fait avec la syntaxe suivante :
%nom liste

o nom est le nom de la macro dnir, et liste est la liste des machines quelle reprsente. Il est possible dutiliser des macros dans les dnitions de macros.
Note : Le protocole XDMCP utilise le port 117 du protocole UDP. Vous pourrez donc ajouter la ligne suivante dans votre chier /etc/services, si elle ne sy trouve pas dj :
xdmcp 117/udp

Notez galement que vous ne pourrez pas tester votre conguration en utilisant linterface rseau loopback. En effet, xdm vrie la validit des adresses sources des paquets quil reoit, et il refuse par dfaut tout paquet provenant de ladresse 127.0.0.1. Si vous dsirez malgr tout utiliser XDMCP sans rseau rel, vous pourrez utiliser linterface rseau dummy. Cette interface peut tre cre en activant loption Dummy net driver support du menu Network device support .

10.4.2.3. Paramtrage du serveur X pour utiliser le protocole XDMCP


Lcriture du chier Xaccess ne reprsente que la partie serveur du travail de conguration du protocole XDMCP. En effet, il faut encore indiquer aux serveurs X distants quel processus xdm il doivent tenter de se connecter lors de leur dmarrage. Bien entendu, cela dpend fortement du serveur X uti-

346

Chapitre 10. Installation de XWindow lis, qui peut tre quelconque. Par exemple, le serveur X peut trs bien fonctionner sur une machine Windows. Par consquent, seule la syntaxe des serveurs de XFree86 sera dcrite ici. Les serveurs X de XFree86 utilisent des options en ligne de commande pour dterminer comment ils doivent se comporter leur dmarrage. Lorsquils sont lancs directement par xdm (cest--dire lorsquils sont lancs en local, avec les options indiques dans le chier Xservers), ils nont pas besoin doptions spciques car ils nutilisent pas XDMCP dans ce cas. En revanche, si lon dsire les lancer manuellement (ou dans un script dinitialisation), on devra utiliser lune des options suivantes :
-query permet de demander une connexion directe sur une machine donne. Le nom de la machine

doit tre spci la suite de loption ;


-indirect

permet de demander une connexion indirecte sur une machine donne. Le nom de cette machine doit tre spci la suite de loption. La liste des machines qui a t indique dans le chier Xaccess sera retourne, ou bien le programme chooser sera lanc ; sur le rseau.

-broadcast permet de demander au serveur X deffectuer une requte de connexion en broadcast

Les serveurs de XFree86 ne sont pas capables de proposer une liste de machines lutilisateur. Ils prennent systmatiquement la premire machine quils trouvent. Vous ne contrlerez donc pas la machine sur laquelle la connexion sera faite si vous utilisez loption -broadcast. Cest pour cela quil est recommand dutiliser le programme chooser dans le chier de conguration Xaccess et de congurer les serveurs pour faire des demandes de connexion indirectes.

10.4.2.4. Fichiers dinitialisation de sessions


xdm fournit la possibilit deffectuer des actions lorsque divers vnements concernant la session XWindow en cours ont lieu. Par exemple, il est possible de raliser un traitement particulier pour linitialisation de lenvironnement dun serveur X, pour xer lenvironnement de lutilisateur qui se connecte, et pour effectuer le mnage lorsquil ferme sa session. Toutes ces actions sont effectues dans des scripts qui sont rfrencs par des lignes du chier xdm-config. La ligne DisplayManager.DISPLAY.setup , o DISPLAY est le nom du display (_0 pour :0, _1 pour :1, etc.), rfrence un script qui est excut au nom de lutilisateur root avant que la fentre de login ne soit prsente. Le chier par dfaut utilis par XFree86 est le chier /etc/X11/xdm/Xsetup. Cest donc dans ce script que vous pourrez mettre des commandes dinitialisation spciques pour prparer le login. De la mme manire, la ligne DisplayManager.DISPLAY.startup rfrence le script Xstartup par dfaut. Ce chier est excut sous le compte root juste aprs lauthentication de lutilisateur. Cest ici que lon pourra par exemple enregistrer la connexion de lutilisateur dans le systme. La ligne DisplayManager.DISPLAY.session rfrence quant elle le script Xsession, qui est excut aprs Xstartup, mais au nom de lutilisateur cette fois. Ce script prend gnralement en charge le lancement des programmes ncessaires la gestion de la session de lutilisateur. Par exemple, il est possible dy placer les commandes de lancement du gestionnaire de fentres ou du gestionnaire de bureau. Enn, la ligne DisplayManager.DISPLAY.reset rfrence le script Xreset du rpertoire /lib/X11/xdm/, qui est excut au nom de lutilisateur root lorsque la session X se termine. Vous pouvez donc excuter les tches ncessaires pour faire le mnage cet endroit, comme par exemple le dsenregistrement de la connexion de lutilisateur dans le systme.

347

Chapitre 10. Installation de XWindow Tous ces scripts sont lancs sans paramtres, sauf le script Xsession. Ce script peut en effet recevoir des paramtres fournis par le gestionnaire de connexions (xdm, kdm ou autre), qui permettent de reprsenter les choix que lutilisateur a fait pour sa connexion dans la fentre de login. Par exemple, le premier paramtre de ce script est souvent le nom du gestionnaire de fentres utiliser. Notez que le nom failsafe rfrence un mode dgrad, et nest normalement utilis que quand les autres gestionnaires de fentres disponibles ne se lancent pas correctement. Les scripts lancs au nom de lutilisateur root (Xsetup et Xreset) sont excuts dans un environnement minimal. La valeur de la variable denvironnement PATH pour ces scripts est dtermine par la valeur de la ligne DisplayManager.DISPLAY.systemPath du chier de conguration xdm-config. De mme, le script Xsession est excut avec la variable denvironnement PATH xe la valeur spcie par la ligne DisplayManager.DISPLAY.userPath du chier xdm-config. Si vos scripts de gestion des connexions ne fonctionnent pas correctement, cest sans doute un problme li lenvironnement. En pratique, ces chiers de scripts de gestion des connexions sont fournis par votre distribution et vous ne devriez donc pas avoir y toucher. Vous pouvez toutefois y faire quelques modications si vous estimez que les actions effectues ne vous conviennent pas. En particulier, certaines distributions nenregistrent pas lutilisateur qui commence une nouvelle session. Cette opration est ncessaire, parce que xdm nest pas un processus de login classique et ne le fait pas automatiquement (il nutilise pas de terminal pour faire la connexion). Vous aurez pour cela utiliser lutilitaire sessreg fourni avec XWindow. Cet utilitaire permet denregistrer un utilisateur avec loption -a et de le supprimer avec loption -d. Vous devrez donc typiquement placer une ligne telle que celle-ci :
sessreg -a -l $DISPLAY -x /usr/X11R6/lib/xdm/Xservers $LOGNAME

dans le chier Xstartup, an denregistrer les utilisateurs qui commencent une session XWindow, et une autre ligne telle que celle-ci :
sessreg -d -l $DISPLAY -x /usr/X11R6/lib/xdm/Xservers $LOGNAME

dans le chier Xreset, an de les supprimer lorsquils terminent cette session.

10.4.3. Paramtrage des terminaux X


La conguration des terminaux X comprend un certain nombre de points qui vont de lajustement du nombre de couleurs et de la rsolution la disposition du clavier, en passant par les paramtres de la souris et lconomiseur dcran. Heureusement, nous avons dj vu comment nous pouvions contrler un grand nombre de ces paramtres. Par exemple, la rsolution graphique, ainsi que le nombre de couleurs et la disposition du clavier, sont dnis dans le chier de conguration gnral de XFree86 XF86Config. Nous verrons donc ici comment modier des paramtres qui tiennent plus de lergonomie que de la conguration de base.

10.4.3.1. La commande xset


Ces paramtres peuvent souvent tre xs lors du dmarrage du serveur X, ou dynamiquement avec la commande xset. Les paramtres que lon peut xer avec xset sont trs nombreux, et seuls les plus utiles seront dcrits ici. Veuillez consulter la page de manuel xset pour plus de dtails. Loption dpms permet de xer les temps dattente avant la mise en veille du moniteur. Sachez que la mise en veille constitue de loin le meilleur conomiseur dcran, et que les conomiseurs logiciels du type ballet de lignes sont trs jolis mais ne servent rien. Pire, ils peuvent ralentir la machine, ce

348

Chapitre 10. Installation de XWindow qui est inadmissible si vous lutilisez en tant que serveur (heureusement, les conomiseurs dcran logiciels se lancent gnralement avec des priorits trs faibles, an de ne pas perturber les autres processus). Cette option prend de un trois paramtres, qui reprsentent respectivement le temps avant le passage en mode conomie dnergie du moniteur, le temps avant le passage en mode veille, et le temps avant lextinction complte du moniteur. Ces temps sont exprims en secondes, la valeur nulle permettant de dsactiver cette fonctionnalit. Ainsi, la commande suivante :
xset dpms 0 0 600

permet dteindre lcran au bout de dix minutes dinactivit. Ces temps peuvent galement tre xs dans le chier de conguration XF86Config, o ils sont exprims en minutes, laide des mots cls StandbyTime , SuspendTime et OffTime . Ces mots cls doivent tre placs dans la section ServerFlags du chier de conguration. Cependant, les serveurs X nactivent ces fonctionnalits que pour les moniteurs capables de grer le standard DPMS. Ces moniteurs doivent donc tre signals laide de la ligne suivante :
Option "DPMS" "On"

dans la section Monitor qui les dnit.


Note : Les valeurs des temps dattente que vous pouvez xer dans le chier de conguration XF86Config peuvent tre crases par les valeurs dnies dans la conguration de votre gestionnaire de bureau. Vous devrez donc vrier ces paramtres si les modications que vous faites dans le chier XF86Config ne sont pas prises en compte ou si lconomie dnergie reste dsactive malgr la prsence de loption DPMS dans la section Monitor de votre moniteur.

Une autre option importante de la commande xset est loption fp, qui permet dajouter et de supprimer des chemins de rpertoires de polices de caractres. Pour ajouter un rpertoire, il suft dutiliser loption +fp et de faire suivre le chemin de ce rpertoire. La suppression dun rpertoire se fait de la mme manire, avec loption -fp. Par exemple, pour ajouter le rpertoire de polices /usr/X11R6/lib/X11/fonts/100dpi/ la liste des rpertoires de polices du serveur, il suft de taper la commande suivante :
xset +fp /usr/X11R6/lib/X11/fonts/100dpi

De plus, comme nous lavons dj vu plus haut, les chemins des rpertoires de polices de caractres peuvent tre xs statiquement laide du mot cl FontPath de la section Files du chier de conguration XF86Config. Enn, loption q de xset vous permettra de visualiser lensemble des paramtres en cours dutilisation.

10.4.3.2. Conguration de la disposition du clavier


Nous avons vu dans le chapitre de conguration du systme de base le fonctionnement du clavier sous Linux. Les applications qui lisent les donnes provenant du pilote clavier de la console peuvent travailler au niveau ASCII, au niveau keycode ou au niveau scancode. Les serveurs X font partie des logiciels qui prfrent la troisime solution, ce qui signie quils interprtent eux-mmes le ux de scancodes provenant du clavier.

349

Chapitre 10. Installation de XWindow La raison de ce choix est que XFree86 est une implmentation portable du systme XWindow pour PC. Cela signie quil est prvu pour fonctionner sur plusieurs systmes dexploitation de type Unix et fonctionnant sur larchitecture compatible PC. Par consquent, il ne pouvait pas se baser sur des keycodes, qui sont videmment dpendant du systme utilis. Linconvnient en revanche est que cela impose que les serveurs X dnissent un mcanisme parallle de gestion des touches du clavier, qui permette de modier la disposition des touches et de dnir le type de clavier utilis. Plusieurs mcanismes sont utilisables, cependant, il semble que ce qui est le plus utilis actuellement est le mcanisme Xkb (abrviation de langlais X KeyBoard ). Ce mcanisme permet de dnir un grand nombre de donnes concernant le clavier, puisquoutre lemplacement des touches, il fournit la gomtrie du clavier. Ainsi, toute application le dsirant peut dterminer la forme du clavier et en dessiner une reprsentation dle. Malheureusement, le protocole Xkb ne prvoit pas la possibilit de dnir de nouvelles touches avec leurs scancodes. La gestion des codes reus du clavier nest en effet pas paramtrable. Par consquent, il est impossible dutiliser des claviers exotiques si ceux-ci ne sont pas reconnus par XFree86. Le protocole Xkb utilise les chiers de conguration stocks dans le rpertoire
/usr/X11R6/lib/X11/xkb/. Ce rpertoire contient un certain nombre de sous-rpertoires,

dont chacun est relatif un des aspects de la conguration du clavier. Le rle des principaux sous-rpertoires est dtaill dans le tableau suivant : Nom du rpertoire
geometry/

Fonction Contient les chiers de description de la gomtrie des claviers. Ces chiers peuvent tre utiliss par les applications pour obtenir une reprsentation graphique du clavier. Contient les chiers de dnitions des keycodes X du clavier. Les keycodes X ont la mme fonction que les keycodes de Linux : donner un nom unique chaque touche. Cependant, ils diffrent des keycodes de Linux en ce sens quils ne sont pas dnis partir des scancodes du clavier, mais partir de codes numriques gnrs par le serveur X. Ce mcanisme suppose que le serveur X connaisse tous les scancodes envoys par les claviers. Comme il est impossible de dclarer de nouvelles squences de scancodes au niveau du serveur X, on ne peut pas complter les dnitions de clavier existantes pour prendre en charge dventuelles nouvelles touches. Contient les dnitions des plans de clavier ou, autrement dit, les associations entre les keycodes X et les symboles obtenus lors de lappui sur les touches. Contient les dnitions des modles de clavier de XFree86. Ces modles de clavier sont utiliss pour simplier la dnition des claviers dans le chier de conguration XF86Config. Contient les dnitions des principaux claviers connus. Une dnition de clavier comprend entre autres la dnition des keycodes, des touches modicatrices et des symboles affects aux keycodes.

keycodes/

symbols/ rules/

keymaps/

Il est probable que vous nayez pas modier un seul des chiers de ces rpertoires, car ils sont correctement dnis par dfaut. Le seul chier qui peut tre intressant est le chier fr du sousrpertoire symbols/. En effet, cest dans ce chier que vous trouverez la dnition des symboles affects chaque touche pour un clavier franais, en fonction des modicateurs (ALT, CTRL, etc.) actifs lors de lappui sur la touche. Le principe de fonctionnement de ce chier est semblable aux plans de claviers de Linux : pour chaque keycode, un ensemble de symboles peuvent tre dnis. Ces symboles sont indiqus entre accolades (caractres { et }), en deux jeux de symboles entours

350

Chapitre 10. Installation de XWindow de crochets (caractres [ et ]). Le premier jeu de symboles indique les symboles accessibles directement et en utilisant la touche majuscule, et le deuxime jeux dnit les symboles accessibles avec la combinaison de la touche AltGr. Par exemple, la touche du chiffre 3 au dessus des lettres Z et E est dnie comme suit dans le chier de dnition du clavier franais (chier fr) :
key <AE03> { [ quotedbl, 3 ], [ numbersign, sterling ] };

Cela signie que la touche dont le keycode est <AE03> (cest--dire celle la quatrime de la deuxime range de touches du clavier) gnre les symboles " et 3 selon que la touche majuscule est utilise ou non, et les symboles # et respectivement en minuscule ou en majuscule et avec la touche AltGr enfonce. Si vous regardez le chier du clavier franais, vous constaterez que toutes les touches ne sont pas dnies. La raison de cela est que ces chiers utilisent par dfaut les affectations de touches du clavier amricain standard. Par consquent, seules les diffrences ont t rednies dans ce chier. Vous pourrez ventuellement modier certaines affectations de touches si vous le dsirez. Ce peut tre ncessaire si vous dsirez homogniser les combinaisons de touches entre la console Linux et XWindow. Par exemple, il peut tre utile de rednie le comportement de la touche E pour quelle renvoie le symbole Euro (caractre ) en combinaison avec la touche AltGr. Pour cela, vous pourrez utiliser la conguration suivante dans le chier de clavier utilis :
key <AD03> { [ e, [ currency, E E ], ] };

Note : Notez que la touche Euro est dj accessible par dfaut sur les claviers franais avec la touche des monnaies (Livre Sterling, Dollar). Une autre touche qui peut tre rednie pour un clavier franais est la touche O, an de lui faire gnrer les symboles o e dans lo franais ( et ) au lieu des symboles o barrs ( et ) norvgiens, qui ne sont pas trs utiles en franais. Notez que les noms de symboles utiliss dans les tables dencodage correspondent aux symboles de lencodage ISO 8859-1, et que par consquent, vous devrez utiliser les noms de symboles onehalf et onequarter pour reprsenter les caractres et . En effet, ces symboles sont les symboles de lencodage ISO 8859-1 qui ont le mme code que les symboles et dans lencodage ISO 8859-15 (cest le cas de ce document). Sachez enn que lobtention de ces symboles est bien entendue assujettie lutilisation dune police de caractres utilisant lencodage ISO 8859-15.

Comme vous avez d le constater, un certain nombre de plans de clavier sont dnis en standard dans XFree86. De mme, plusieurs gomtries et dnitions de keycodes sont fournies dans les sousrpertoires geometry/ et keycodes/ du rpertoire /usr/X11R6/lib/X11/xkb/. Le serveur X utilise les chiers qui sont rfrencs dans la section Keyboard du chier de conguration XF86Config. Comme on la dj vu plus haut dans ce chapitre, le mot cl XkbLayout permet de dnir le plan de clavier utiliser. Ainsi, si vous spciez le plan de clavier fr la suite de ce mot cl, le chier de dnition des associations keycodes-symboles utilis sera le chier fr du rpertoire /usr/X11R6/lib/X11/xkb/symbols/. Les autres options sont xes par les mots cls XkbRules et XkbModel . Le premier mot cl indique quel est le chier utiliser pour

351

Chapitre 10. Installation de XWindow dnir les modles de claviers de XFree86. Ce chier est localis dans le sous-rpertoire rules/, et fournit les valeurs par dfaut utiliser pour chaque modle de clavier. Le deuxime mot cl indique le modle de clavier utiliser. Ainsi, il nest ncessaire de spcier que trois paramtres pour dnir le clavier sous XFree86 : le chier contenant la dnition des modles de clavier, le modle lui-mme et le chier dnissant la disposition des touches.
Note : Vous pouvez galement dnir tous les paramtres du clavier dans le chier XF86Config. Cette technique est plus complique et nest pas ncessaire pour dnir un clavier franais, elle ne sera donc pas dcrite ici. Vous trouverez plus de renseignements ce sujet dans la page de manuel XF86Config.

10.5. Paramtrage des applications et ressources X


Du fait que toutes les applications X font appel au serveur X pour effectuer leur afchage, et au gestionnaire de fentres pour dnir lapparence et la disposition de leurs fentres, elles sont soumises aux options gnrales de ces deux programmes. Elles peuvent cependant tre paramtres elles-aussi, et leur comportement peut tre personnalis souhait par chaque utilisateur. Pour cela, XWindow fournit un mcanisme standard pour toutes les applications, an quelles puissent grer leurs options de conguration de manire uniforme. Ce mcanisme se base sur des paramtres grs par le serveur X, que lon appelle des ressources X . La plupart des applications utilisent ces ressources pour stocker leurs paramtres de conguration, et le fait que ce soit le serveur X qui centralise leur gestion assure une certaine cohrence entre les applications. En gnral, les ressources X dcrivent essentiellement les aspects visuels des applications, comme par exemple les polices de caractres utilises, les couleurs et lpaisseur des traits. Cependant, les applications peuvent parfaitement utiliser les ressources pour enregistrer des paramtres qui leurs sont propres. Le serveur X ninterprte en aucune manire les ressources utilises par les applications, il ne fait que les mettre disposition des applications. Le serveur X gre les ressources dans une base de donnes qui est initialise lors de son dmarrage : la X Ressource DataBase ( xrdb en abrg). Cette base de donnes est initialise lors du dmarrage du serveur partir de chiers de conguration au format texte, que lon peut donc diter et modier aisment. Le serveur X utilise deux jeux de chiers lors de son initialisation : les chiers de conguration par dfaut des applications dune part, et le chier de prfrences personnelles de chaque utilisateur dautre part. Les chiers de conguration des applications sont normalement placs dans le rpertoire /usr/X11R6/lib/X11/app-defaults/. Les applications y copient leurs propres chiers lors de leur installation. Le nom de chaque chier correspond au nom de lapplication laquelle il appartient, ce qui permet de retrouver aisment le chier de conguration dune application donne. Le chier de prfrences personnelles de chaque utilisateur, quant lui, se place dans son rpertoire racine et porte le nom .Xresources. Les chiers de ressources des applications sont lus en premier, en gnral dans les scripts dinitialisation de XWindow. En revanche, le chier de prfrences personnelles dun utilisateur nest lu que lors de louverture dune session X par cet utilisateur. Lorsquune ressource prsente dans le chier de conguration par dfaut dune application est rednie dans le chier de prfrences personnelles dun utilisateur, la valeur utilise est bien entendue celle de lutilisateur. Ainsi, chacun peut rednir les valeurs par dfaut des ressources de toutes les applications quil utilise. La plupart des applications peuvent galement prendre des options en paramtres de ligne de commande, qui

352

Chapitre 10. Installation de XWindow permettent de xer les valeurs de certaines ressources. Ces options prvalent sur les valeurs dnies dans les chiers de conguration des applications et de prfrences personnelles des utilisateurs. Vous pourrez vous inspirer du contenu des chiers de conguration des applications pour paramtrer vos applications. Pour cela, il vous sufra simplement de recopier les dnitions des ressources qui vous intressent dans votre chier .Xresources, et de tester le rsultat avec diffrentes valeurs. Laffectation dune valeur une ressource se fait avec la syntaxe suivante :
ressource : valeur

o ressource est le nom de la ressource, et valeur est la valeur lui affecter. Les noms de ressources sont structurs de manire hirarchique. Ils sont en effet constitus dun certain nombre de composantes spares par des points (caractre .). La premire composante qualie lapplication elle-mme, et porte son nom. Il est dusage de mettre la premire lettre de ce nom en majuscule, et si cette lettre est un X, de mettre galement la deuxime lettre du nom en majuscule (beaucoup dapplications X ont en effet un nom commenant par un X). Les composantes suivantes dnissent un sous-ensemble de paramtres apparents dans lensemble des paramtres dtermin par les composantes prcdentes. Enn, la dernire composante du nom de ressource constitue le nom du paramtre lui-mme. Par exemple, le nom de ressource suivant :
XApplication.mainWindow.background

qualie la couleur darrire plan (proprit background ) de la fentre principale (proprit mainWindow ) de lapplication XApplication . Notez que les deux premires lettres du nom de la ressource sont en majuscules ici, car la premire lettre du nom de lapplication est elle-mme un X majuscule.
Note : Les chiers de ressources utilisent des noms de couleurs prdnies pour dnir les couleurs des diffrentes parties des applications. Vous pourrez trouver la liste de ces noms de couleurs ainsi que leurs dnitions dans le chier /usr/X11R6/lib/X11/rgb.txt. Vous pouvez galement dnir vos propres couleurs avec la syntaxe rgb:R/V/B , o R reprsente la portion de rouge de la couleur, V reprsente la portion de vert, et B la portion de bleu.

Ainsi, lensemble des paramtres des applications X est organis un peu comme sont organiss les chiers dans une arborescence de rpertoires. Lanalogie ne sarrte pas l : il est possible de caractriser un ensemble de ressources grce des caractres gnriques. Par exemple, en utilisant une toile (caractre *) comme sparateur la place du point dans un nom de ressource, toutes les ressources dont le nom comprend les deux composantes seront slectionnes, que ces deux composantes soient adjacentes ou spares dautres composantes intermdiaires. Par exemple, le nom de ressource suivant :
XApplication*background

qualie la couleur darrire plan de toutes les fentres de lapplication Xapplication . De mme, le caractre gnrique point dinterrogation (caractre ?) permet de remplacer une composante par un nom quelconque. Le nom de ressource suivant :
XApplication.?.background

353

Chapitre 10. Installation de XWindow reprsente donc toutes les ressources comportant les composantes XApplication et background , spares par une composante de nom quelconque. La structure des noms de ressources dune application nest pas due au hasard. Les paramtres sont regroups soit par fonctionnalit, soit par thme, soit par appartenance la mme partie de lapplication. En gnral, les noms de ressources utiliss par les applications sont simples comprendre. Vous trouverez des exemples de noms de ressources dans les chiers de ressources des applications. Vous pouvez obtenir la liste exhaustive des ressources dune application avec lutilitaire appres. En fait, cet utilitaire permet dobtenir la liste des noms des ressources appartenant une branche de larborescence des ressources. Cet utilitaire sutilise selon la syntaxe suivante :
appres branche

o branche est le nom de la branche que lon veut explorer. Comme la base de donnes des ressources est initialise au dmarrage du serveur X et louverture de la session X, les modications que vous pourrez apporter votre chier de ressources personnelles ne seront pas prises en compte immdiatement. Pour cela, vous devez demander la relecture de la base de donnes explicitement et relancer les applications concernes. Cette opration peut tre effectue laide de loutil xrdb (abrviation de langlais X ressource DataBase ). En fait, cet outil permet deffectuer diverses oprations sur la base de donnes des ressources. Loption -merge est certainement celle que vous utiliserez le plus. Elle permet de mettre jour les valeurs des ressources avec celles dcrites dans un chier. La syntaxe utilise est la suivante :
xrdb -merge fichier

o fichier est le nom du chier contenant la dnition des ressources (gnralement, il sagit de votre chier .Xresources). Loption -load permet deffectuer le mme travail, mais la base de donnes est vide au pralable. Cette option permet donc de rinitialiser compltement le contenu de la base de donnes avec le contenu du chier pass en paramtre. Sa syntaxe est la mme que celle de loption -merge. Loption -remove permet de vider la base de donnes et de supprimer toutes les ressources que vous auriez pu dnir au pralable. Elle sutilise selon la syntaxe suivante :
xrdb -remove

Enn, loption -query permet de lister lensemble des ressources existantes.

10.6. Gestion de la scurit sous XWindow


XWindow neffectue pas de contrle daccs sur les oprations demandes par un processus connect un serveur X. Cela signie que tous les processus qui ont accs un display y ont un accs total. Par exemple, un processus peut parfaitement faire une prise dcran et rcuprer tous les vnements provenant du clavier. Il va de soi que ce genre de processus pose un problme de scurit majeur, aussi XWindow considre-t-il que seuls les processus lancs sur la machine locale au nom de lutilisateur courant ont le droit de se connecter au serveur X. Cela protge donc le display de lutilisateur contre les malversations de personnes mal intentionnes. Cependant, cette restriction est assez forte, parce quelle va vous empcher de lancer un programme graphique sous un autre nom dutilisateur. Par exemple, vous ne pourrez pas lancer un programme ncessitant les droits administrateur et dont le bit setuid nest pas positionn. En effet, une fois que

354

Chapitre 10. Installation de XWindow vous vous serez identi en tant que root avec la commande su, les programmes que vous lancerez le seront au nom de lutilisateur root, et le serveur X refusera la connexion. Un autre cas dcole o cette restriction peut tre gnante est le lancement dun programme graphique sur une machine distante. La situation est encore plus grave, car cette fois la demande de connexion au serveur X ne provient pas de la machine o il sexcute, et na aucune chance daboutir. XWindow fournit donc les outils ncessaires pour contrler le niveau de scurit en cours. Classiquement, le serveur X utilise deux techniques pour contrler la validit des demandes de connexion des clients. Le premier mcanisme de contrle daccs est relativement grossier, puisquil se base simplement sur les adresses des machines. Le deuxime mcanisme a t introduit ultrieurement an de permettre des contrles plus ns. Les contrles se font alors laide dun mcanisme de cls prives, que seuls les clients autoriss connaissent.

10.6.1. La commande xhost


La commande xhost permet de xer le niveau des contrles daccs bass sur les adresses de machines. Comme on la vu, le serveur X naccepte les connexions que de la machine locale. Vous pouvez cependant lui indiquer daccepter toutes les connexions provenant dune autre machine avec une commande telle que celle-ci :
xhost +machine

o machine est le nom de la machine en qui lon a conance. Si aucun nom de machine nest spci, tous les mcanismes de contrle daccs sont dsactivs. Inversement, la suppression dune machine de la liste des machines autorises est ralise par la commande suivante :
xhost -machine

La commande xhost - (sans nom de machine) permet de ractiver les mcanismes de contrle daccs sils ont t dsactivs par un xhost +. Notez bien que donner le droit de connexion une machine suppose que lon fasse conance tous les utilisateurs de cette machine, car alors ils pourront tous se connecter sur votre serveur X local. De plus, rien ne vous garantit que la machine qui vous donnez ces droits na pas t usurpe par celle dun pirate (technique dite de l IP spoong ). Ce nest donc videmment pas la solution recommande, surtout si vous tes connect Internet.

10.6.2. La commande xauth


Le deuxime mcanisme de scurit utilise une cl prive. Tous les clients qui dsirent se connecter au serveur local doivent connatre cette cl, faute de quoi leur requte sera refuse. Ainsi, vous pouvez trs simplement permettre lutilisation de votre display une personne donne sur une machine donne, simplement en lui communiquant la cl utilise par le serveur X grant votre display. Bien entendu, cette communication doit se faire de manire sre. Par dfaut, les cls prives utilises par les clients sont enregistres dans le chier .Xauthority de votre rpertoire personnel. Ce chier contient une cl prive pour chaque display auquel vous avez le droit de vous connecter. Les clients que vous lancez consultent donc ce chier an de dterminer la cl utiliser, en fonction du display auquel ils dsirent accder. Une fois cette cl connue, ils peuvent

355

Chapitre 10. Installation de XWindow sauthentier auprs du serveur X grant ce display, et ainsi obtenir une connexion. Notez bien que le chier .Xauthority ne doit tre accessible que par vous. Si vous utilisez xdm, une nouvelle cl est automatiquement gnre chaque fois que vous vous connectez un terminal X. xdm enregistre cette cl dans un chier temporaire du rpertoire rfrenc par le lien symbolique /etc/X11/xdm/authdir (qui rfrence gnralement le rpertoire /var/lib/xdm/authdir/), que seul lutilisateur root peut accder. Il communique ensuite ce chier au serveur X local laide de loption -auth du serveur X pour que celui-ci puisse lire la cl utiliser. Enn, xdm enregistre cette cl dans votre chier .Xauthority, pour que vous puissiez lancer des clients dans cette session X. Comme vous pouvez le constater, ce mcanisme de scurit est totalement transparent pour lutilisateur. Cependant, il peut tre ncessaire de manipuler le chier .Xauthority pour lire les cls prives et les communiquer aux personnes de conance qui doivent avoir accs votre display. Ces manipulations peuvent tre effectues laide de la commande xauth. La cl associe un display peut tre obtenue avec la commande suivante :
xauth list display

o display est le nom du display auquel la cl donne accs. xauth afche alors le display, le type dauthentication utilis (MIT-MAGIC-COOKIE-1) et la cl prive. Vous pouvez communiquer cette cl par les moyens que vous voulez la personne devant accder votre display. Celle-ci pourra alors utiliser la commande suivante pour ajouter la cl son chier .Xauthority :
xauth add display . cl

o display est le display utilisant la cl cl. Le caractre . est une abrviation pour le type dauthentication MIT-MAGIC-COOKIE-1 (type dauthentication par dfaut). Ds que la cl aura t ajoute dans son chier .Xauthority, cette personne aura accs votre display. Enn, la commande suivante :
xauth remove display

permet de supprimer la cl utilise pour le display display.


Note : Il est ncessaire dutiliser une technique de communication sre pour transmettre la clef, faute de quoi le mcanisme de scurit de XWindow ne servirait rien. Lutilisation dOpenSSH est vivement recommande.

10.7. Gestion des polices de caractres


La gestion des polices de caractres est relativement complique sous XWindow. En effet, elle est gre par un protocole complexe, qui permet de dcrire avec prcision les diverses polices de caractres, quel que soient leur type et leur aspect. De plus, la gestion des polices ncessite de traiter correctement les symboles spciques chaque pays, ce qui complique encore un peu plus les choses. Enn, pour couronner le tout, XWindow nutilise pas la notion de graphisme indpendant du priphrique, comme la GDI de Windows. Cela implique, hlas, quil ne se charge que de lafchage et pas de limpression. Chaque programme doit donc prendre en compte lui-mme les problmes dimpression, ce qui im-

356

Chapitre 10. Installation de XWindow plique, en gnral, que les programmes soient capables dimprimer sur des imprimantes PostScript. Par consquent, la conguration des polices de caractres doit non seulement se faire pour XWindow, mais galement pour chacun des programmes (ou, au moins, pour linterprteur GhostScript, utilis pour limpression avec des imprimantes non PostScript).

10.7.1. Gestion des polices de caractres sous XWindow


Originellement, XWindow ne pouvait afcher que des polices de type bitmap, cest--dire des polices de caractres dnies par un dessin pour chaque caractre et pour un certain nombre de rsolutions. Cette technique avait lavantage dtre rapide lafchage, mais de relative mauvaise qualit lorsque les tailles demandes ntaient pas exactement celles pour lesquelles la police avait t dessine. En effet, la police devait alors tre redimensionne partir de la taille la plus proche disponible. Ultrieurement, les polices Postscript sont apparues. Ces polices sont dnies vectoriellement, cest--dire par des formules mathmatiques. La forme des caractres est ainsi calcule pour chaque dimension, ce qui permet davoir une qualit irrprochable. Lavantage des polices Postscript est quelles sont gres de manire native par les imprimantes PostScript, et assurent une qualit dimpression optimale. En revanche, leur afchage sur les crans nest pas toujours correct, car les formules utilises ont t conues pour les priphriques disposant de grandes rsolutions et ne donnent pas forcment un rsultat esthtique pour les rsolutions dcrans. Enn, les polices Truetype ont t inventes par Apple. Ces polices sont galement vectorielles, mais disposent en plus de petites astuces permettant damliorer leur lisibilit sur les priphriques faible rsolution tels que les crans. Microsoft a licenci la technologie Truetype et la intgre Windows par la suite. An de dcrire les polices le plus prcisment possible, XWindow leur donne des noms relativement complexes. Ces noms constituent ce que lon appelle la description logique des polices ( XLFD , qui est labrviation de langlais X Logical Font Description ). Cette convention de dnomination spcie que la description des polices doit tre constitue de diffrents champs, spars par des tirets (-). De plus, la description doit elle-mme tre prcde dun tiret. Les diffrents champs utiliss dans la description logique des polices sont les suivants :

le nom de lditeur de la police, ou le nom du type de la police ; le nom de la police (par exemple, arial ) ; la graisse de la police (par exemple, bold pour gras, medium pour normal) ; linclinaison de la police (par exemple, r pour roman, i pour italique) ; la largeur de la police ; des options de styles avances ; la taille de la police ; la taille des points ; la rsolution horizontale de la police ; la rsolution verticale ; le type despacement de la police (par exemple, c pour constant, p pour proportionnel) ; la largeur moyenne de la police ; le jeu de caractres de la police ; la page de codes de la police.

357

Chapitre 10. Installation de XWindow Vous pouvez consulter la documentation de XWindow pour une description plus dtaille de ces champs. Ces informations ne sont pas toutes supportes par les polices de caractres. Inversement, certaines polices peuvent correspondre plusieurs descriptions (ne serait-ce que parce quelles disposent de plusieurs tailles). Parmi les informations dcrivant les polices se trouvent le jeu de caractres de la police et sa page de codes (rappelons que ces informations constituent ce que lon appelle lencodage de la police). Il peut y avoir plusieurs pages de codes pour un jeu de caractres, chacune reprsentant une manire de numroter les diffrents caractres du jeu. Une police peut disposer de plusieurs jeux de caractres, mais en pratique ce nest que rarement le cas. En revanche, la manire de numroter les caractres (cest--dire la page de codes) peut avoir une inuence certaine. Comme on le verra plus tard, le jeu de caractres le plus pratique pour les pays dEurope de lOuest est le jeu ISO 8859 (jeu de caractres dit latin ). Ce jeu de caractres dispose de la plupart des caractres utiliss en Europe. Pour les alphabets occidentaux, la page de codes la plus utilise est la page de codes 1, ce qui fait que lencodage des polices occidentales est ISO 8859-1. Cependant, quelques caractres ont t oublis dans cette page de codes (notamment le o e dans lo franais ()). Ces caractres sont pourtant disponibles dans certaines polices (en particulier, les polices Truetype provenant de Windows), mais ne sont malheureusement pas disponibles avec lencodage ISO 88591. Pour y accder, on est oblig dutiliser un autre encodage, comme par exemple lencodage ISO 8859-15. Cet encodage est quasiment identique lencodage ISO 8859-1, aux caractres additionnels prs, qui ont t ajouts pour les pays europens. Il est galement possible dutiliser la page de codes 1252 des polices de caractres de Windows. Cette page de codes correspond lencodage windows1252 , parfois galement nomm microsoft-ansi ou encore microsoft-cp1252 . En rsum, le jeu de caractres et la page de codes permettent dindiquer pour quel pays (ou quel alphabet) une police est destine.
Note : Le problme des encodages est que seul lencodage ISO 8859-1 est vraiment utilis par la majorit des gens. Cela implique que les autres encodages risques de ne pas tre reconnus par tous les programmes. En particulier, il est assez difcile dimprimer des textes encods avec des encodages non standards.

La description logique des polices de caractres est trs prcise, puisquelle permet de spcier lorigine de la police, son nom, les informations la concernant, les caractres quelle comprend et comment ils sont numrots. Lorsquon choisit une police de caractres, on peut parfaitement ne prciser que certains critres (comme par exemple, lencodage de la police). Dans ce cas, les champs constituant le nom de la police non spcis pourront tre remplacs par des caractres gnriques. Le caractre * permet ainsi de spcier nimporte quelle valeur pour ce champ, et le caractre ? permet de spcier nimporte quel caractre dans un champ. Le programme xfontsel permet de slectionner les polices de caractres installes sur un systme. Il peut tre utile pour comprendre la signication des diffrents champs de la description logique des polices. Des exemples de descriptions logiques de polices sont donns ci-dessous :
-adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-iso8859-1 -*-courier-bold-*-normal-*-10-*-*-*-*-*-iso8859-15 -winfonts-arial-*-i-normal-*-16-*-*-*-*-*-microsoft-cp1252

Les polices de caractres sont souvent regroupes dans des rpertoires. Il peut exister plusieurs rpertoires de polices sur un systme, si bien quil est ncessaire dindiquer XFree86 dans quels rpertoires ils doit rechercher les polices de caractres utilisables. Les rpertoires des polices utilises

358

Chapitre 10. Installation de XWindow par le serveur X sont indiqus dans le chier XF86Config, dans la section Files . Comme on le verra plus tard, cette section peut galement contenir des rfrences sur des serveurs de polices de caractres. Les serveurs de polices de caractres peuvent rechercher les polices dans des rpertoires indiqus de diffrentes manires selon le serveur. Pour certains serveurs, les rpertoires de polices sont indiqus dans un chier de conguration, pour dautres, ils sont indiqus en ligne de commande. Dans le protocole X, les rpertoires de polices doivent contenir un chier fonts.dir donnant la liste des polices de ce rpertoire. Ce chier indique, sur sa premire ligne, le nombre de polices installes dans ce rpertoire, et, sur les lignes suivantes, lassociation entre les chiers de polices et leur description logique. Ce chier est cr normalement par le programme mkfontdir. Ce programme gnre le chier fonts.dir partir des informations contenues dans les chiers des polices ou partir du nom des chiers des polices eux-mmes. En gnral, les polices taille variable ne contiennent pas ces informations dans le format standard des polices X11 classiques, et mkfontdir ne peut donc pas crer le chier fonts.dir automatiquement. Pour ces polices, il faut crer un chier fonts.scale contenant les mmes informations que le chier fonts.dir, et que mkfontdir utilisera pour crer ce dernier. La mthode pour crer le chier fonts.scale dpend du type de police utilise. Celle utilise pour les polices Truetype sera dcrite dans la Section 10.7.2. En gnral, les encodages les plus standards sont grs directement par le serveur X ou par le serveur de polices. En particulier, lencodage ISO 8859-1 est gr nativement. Il est toutefois possible de dnir de nouveaux encodages dans des chiers dencodages. Pour que le serveur X ou le serveur de polices puisse utiliser les polices dnies avec ces encodages, il faut que le rpertoire dinstallation des polices contiennent un chier encodings.dir. Ce chier a la mme structure que le chier fonts.dir, cest--dire quil contient le nombre des encodages sur la premire ligne et, sur chaque ligne suivante, le nom de lencodage et le nom dun chier contenant la dnition dun encodage, spars par un espace. De cette manire, le serveur X et le serveur de polices sont capables de raliser lassociation entre le nom de lencodage utilis dans la description logique de polices et le chier de dnition de cet encodage. La mthode permettant de crer le chier encodings.dir sera dcrite plus loin dans la section traitant de linstallation des polices Truetype. Lcriture des chiers de dnition dencodages de polices est une tche assez complique, qui ncessite de bien connatre la numrotation des caractres de chaque type de chier de police. De manire trs simplie, on peut dire que les chiers de dnition dencodage font lassociation entre le numro de chaque caractre dans la police et une numrotation standardise des caractres (XWindow utilise lencodage Unicode) de cette police. Cela permet de manipuler les textes avec la numrotation standard, et dutiliser des polices qui ne dnissent pas tous les caractres de cette numrotation ou qui ne les numrotent pas de la mme manire. Heureusement, les encodages les plus courants ont dj t crits et il est fort peu probable que vous ayiez vous intresser ce problme. La structure des chiers dencodages ne sera donc pas dcrite plus en dtail dans ce document.

10.7.2. Installation des polices Truetype


Linstallation des polices TrueType sous XWindow ne pose dsormais plus de problmes, puisquil suft de dnir le chier fonts.dir dans le rpertoire dinstallation de ces polices. Cependant, un certain nombre doprations supplmentaires devront tre ralises pour permettre limpression des documents utilisant les polices TrueType. Ce paragraphe dtaille la manire de dclarer les polices TrueType au niveau du serveur X, et prsente les oprations ncessaires leur impression pour quelques logiciels courants. Gnralement, les chiers de polices sont places dans des sous-rpertoires du rpertoire /usr/X11R6/lib/X11/fonts/. Ces sous-rpertoires permettent de classer les chiers de polices par type et par taille. Dans la suite de ce document, il sera suppos que les polices TrueType sont toutes situes dans le sous-rpertoire truetype/.

359

Chapitre 10. Installation de XWindow

10.7.2.1. Conguration du serveur X


Pour permettre au serveur X dutiliser les polices TrueType, il faut simplement crire le chier fonts.dir de chaque rpertoire de polices. Rappelons que ce chier contient la liste des polices du rpertoire dans lequel il se trouve, et est utilis la fois par le serveur X et par les serveurs de polices de caractres. La notion de serveur de polices sera vue en dtail dans la Section 10.7.3. Normalement, le chier fonts.dir est gnr par le programme mkfontdir. Ce programme utilise les informations contenues dans les chiers de polices ou dans le nom de ces chiers pour le gnrer. Malheureusement, les polices Truetype, comme la plupart des polices taille variable, ne contiennent pas ces informations dans un format comprhensible par mkfontdir, ni dans leurs chier, ni dans leurs nom. Celui-ci ne peut donc pas crer le chier fonts.dir directement. Dans ce cas, mkfontdir utilise le chier de dnition des polices taille variable fonts.scale. Ce chier doit tre cr soit manuellement, soit laide de lutilitaire mkfontscale. Celui-ci doit tre appel dans le rpertoire contenant les polices de caractres, et gnre un chier fonts.scale directement utilisable par mkfontdir. Une fois le chier fonts.scale cr, il ne reste plus qu appeler mkfontdir avec la ligne de commande suivante :
mkfontdir

Cette commande aura pour effet de crer le chier fonts.dir partir du chier fonts.scale (en fait, il sagit dune simple recopie). Les encodages utiliss par le serveur X pour les polices Truetype sont tous dnis dans le chier fonts.dir, qui donne la correspondance entre les descriptions logiques de polices et les chiers de polices Truetype. Par consquent, vous pourrez aisment modier ou ajouter des encodages diffrents pour ces polices de la manire suivante :

ditez le chier fonts.scale contenant la liste des noms de polices et des descriptions logiques de polices ; modiez la description logique de chaque police ; relancez mkfontdir.

La modication de la description logique de la police consiste simplement changer lencodage utilis par la police en un autre encodage. Vous pouvez utiliser nimporte lequel des encodages suivants, qui sont grs nativement par le serveur de polices et par le serveur X :
iso10646-1 iso8859-1

(encodage Unicode, recommand) ;

iso8859-10 ; ; ou koi8-e ;

iso8859-15

koi8-r, koi8-u, koi8-ru, koi8-uni, microsoft-symbol apple-roman

(uniquement pour les polices Truetype) ;

(uniquement pour les polices Truetype dApple).

Vous pouvez galement utiliser des encodages additionnels, condition dutiliser loption -e de mkfontdir lors de la gnration du chier fonts.dir. Cette option permet dindiquer le rpertoire contenant les chiers de dnition des encodages utiliser :

360

Chapitre 10. Installation de XWindow


mkfontdir -e rpertoire

o rpertoire est le rpertoire contenant les chiers de dnition dencodages. Cette commande a pour consquence de crer un chier encodings.dir en plus du chier fonts.dir. XWindow est fourni avec un certain nombre de chiers de dnition dencodages standards, tous situs dans le rpertoire /usr/X11R6/lib/X11/fonts/encodings/. Lun des plus intressants est sans doute microsoft-cp1252, qui permet de disposer des caractres additionnels ajouts par Microsoft dans ses polices, tout en conservant un encodage compatible avec les documents Windows.
Note : Si vous voulez rester compatible avec les normes ISO, vous pouvez utiliser lencodage ISO 8859-15 au lieu de microsoft-cp1252. Vous accderez ainsi tous les caractres utiliss en Europe, mais vous ne pourrez plus utiliser les caractres additionnels dnis par Microsoft. Il faut noter que la plupart des polices sont dfectueuses et indiquent une page de codes errone dans leur chier. Cela explique pourquoi quelques descriptions logiques de polices dans le chier fonts.scale gnr automatiquement par ttmkfdir peuvent tre fausses. Pour ces polices, il faudra corriger lencodage manuellement en suivant la mthode dcrite ci-dessus.

10.7.2.2. Conguration des polices Truetype pour limpression


Comme il la t dit plus haut, la conguration des polices Truetype pour limpression dpend fortement de chaque programme utilis. Certains programmes, comme la suite bureautique OpenOfce et les programmes du gestionnaire de bureau KDE par exemple, prennent en charge compltement les polices de caractres TrueType tant pour lafchage que pour limpression. Dautres ne font que rfrencer les polices utilises dans les chiers dimpression, et il faut congurer le sous-systme dimpression pour que ces polices soient reconnues et imprimes correctement. Dune manire gnrale, plusieurs cas peuvent se prsenter :

soit on dispose dune imprimante PostScript, auquel cas il faut convertir les polices Truetype en polices Adobe Type 42, qui constituent une encapsulation des polices Truetype en PostScript. Cette conversion a lavantage de ne pas provoquer de perte de qualit, puisque la police Truetype est utilise telle quelle ; soit on ne dispose pas dimprimante PostScript, auquel cas on utilise ncessairement un interprteur PostScript. Cet interprteur est souvent GhostScript, car il sagit encore une fois dun logiciel libre. Quel que soit linterprteur PostScript utilis, il faut le congurer pour utiliser les polices Truetype. Nous verrons comment le faire pour les versions de GhostScript ultrieures la 7.00.

Dans les deux cas, il se peut quil faille congurer le logiciel utilis pour quil puisse utiliser les polices Truetype de concert avec le sous-systme dimpression. Les paragraphes suivants dcrivent les procdures suivre pour imprimer les polices Truetype en gnral. La conguration des logiciels ne sera pas aborde, consultez leur aide ou recherchez des renseignements sur Internet quant la procdure suivre. 10.7.2.2.1. Conversion des polices Truetype en polices Adobe de Type 42 La conversion des polices Truetype en polices Adobe de Type 42 est une opration ncessaire si lon utilise directement une imprimante PostScript ou si lon utilise un interprteur PostScript incapable de grer directement les polices Truetype. De manire gnrale, il est recommand dutiliser GhostScript mme si lon possde une imprimante PostScript, car la conguration de limpression se fait de la

361

Chapitre 10. Installation de XWindow mme manire que les autres utilisateurs de Linux, et il est donc plus facile de trouver de laide sur Internet. La conversion en polices Adobe de Type 42 peut tre ralise avec le programme ttfps, disponible sur Internet sous le nom ttfps.tar.gz. Cet outil est tout fait correct, mais il souffre dun grave dfaut : il ne permet pas de choisir lencodage de la police PostScript quil gnre. Plus grave encore, il utilise systmatiquement lencodage standard Adobe, qui ne dispose pas de la plupart des lettres accentues franaises (cest aussi la raison pour laquelle il est recommand dutiliser GhostScript). Vous pouvez bien entendu modier le code source si vous vous en sentez le courage. Vous devrez compiler ttfps pour pouvoir lutiliser. Lorsque vous aurez extrait les chiers sources de larchive, vous aurez diter le chier Makefile pour :

dnir la variable denvironnement CC avec pour valeur le nom du compilateur que vous utilisez (en loccurence, gcc) :
CC=gcc

choisir entre les deux jeux doptions de compilation CFLAGS. Vous ne devez en choisir quun seul, il faut obligatoirement commenter lautre avec un caractre dise (#). Le choix dpend de larchitecture de votre machine. Si vous utilisez un PC, vous devrez choisir loption contenant loption -DSMALLENDIAN.

Une fois ces modications faites, vous pourrez compiler ttsps avec la simple commande suivante :
make

Lutilisation de ttfps est trs simple. Pour convertir une police Truetype en police Adobe de Type 42, il suft dutiliser la ligne de commande suivante :
ttfps [-a fichier.afm] fichier.ttf fichier.pfa

o fichier.afm est le nom du chier de dnition des dimensions de la police PostScript, fichier.ttf est le nom du chier de police Truetype encapsuler, et fichier.pfa est le nom de la police PostScript rsultante. La gnration du chier .afm est facultative.

10.7.2.2.2. Installation des polices Truetype pour GhostScript GhostScript est un interprteur PostScript capable dimprimer les polices Truetype. Sa conguration est trs simple, puisquil suft de lui donner le nom de police que les chiers PostScript utilisent pour la rfrencer et le nom du chier de police correspondant. Cette association est dnie dans le chier Fontmap de GhostScript, que vous pourrez trouver dans son rpertoire dinstallation (normalement, GhostScript se trouve dans le rpertoire /usr/share/ghostscript/version/, o version est le numro de la version installe). Les informations que vous devez ajouter dans ce chier sont similaires celles stockes dans le chier fonts.dir du rpertoire de polices. Pour chaque police, il faut rajouter une ligne de la forme suivante :
(nom) (fichier) ;

362

Chapitre 10. Installation de XWindow o nom est le nom de la police dimprimante que les programmes utilisent dans les chiers PostScript quils gnrent, et fichier est le chemin absolu du chier de la police Truetype. En pratique, le nom de la police dimprimante peut tre choisi librement. On veillera toutefois ne pas utiliser des noms de polices contenant des espaces, car certains programmes peuvent avoir du mal manipuler de tels noms. Il faudra bien utiliser ce nom lors de la dclaration des polices dimprimante dans les logiciels capables dimprimer en PostScript. Si lon ne peut pas dnir ce nom au niveau des logiciels, il faudra ajouter un alias dans le chier Fontmap de GhostScript pour chaque nom de police utilis par les logiciels. Il nexiste pas de rgle gnral permettant de dterminer les noms de polices utiliss par les programmes. Le plus simple est peut-tre dans ce cas de dterminer les noms utiliss en imprimant un document dans un chier PostScript et en regardant dans le chier les instructions de changement de police de caractres.

10.7.3. Conguration dun serveur de polices


XWindow tant un systme de fentrage fonctionnant en rseau, il propose des services additionnels sur le rseau en plus de lafchage. Parmi ces services, on notera la possibilit de mettre en place des serveurs de polices de caractres. Ces serveurs permetttent des clients situs sur dautres machines daccder la dnition des polices de caractres de la machine locale. Le serveur de police fourni par XWindow se nomme xfs (abrviation de langlais X Font Server ). Ce serveur utilise un chier de conguration qui permet de lui spcier les options avec lesquelles il doit dmarrer. Dans la suite de ce document, le nom suppos de ce chier est /etc/xfs.conf. Un chier de conguration typique est donn ci-dessous :
# Exemple de fichier de configuration du serveur de police : # Limite 10 le nombre de clients connects ce serveur : client-limit = 10 # Demande le dmarrage dun autre serveur quand la limite # prcdente est atteinte : clone-self = on # Rpertoire des polices de caractres : catalogue = /usr/X11R6/lib/X11/fonts/truetype # Fixe la taille par dfaut (en diximes de points) : default-point-size = 120 # Rsolution par dfaut (100 x 100 et 75 x 75) : default-resolutions = 100,100,75,75 # Nutilise pas le mcanisme des traces du systme : use-syslog = off # Utilise le fichier derreurs suivant la place : error-file = /root/xfs.errors

Lorsque vous aurez cr votre chier de conguration, il ne vous restera plus qu tester si tout fonctionne bien. Il vous faut pour cela lancer le serveur de polices avec la ligne de commande suivante :

363

Chapitre 10. Installation de XWindow


xfs -port 7100 -config /etc/xfs.conf &

et essayer de lui demander la liste des polices quil peut fournir :


fslsfonts -server localhost:7100

Si cette dernire commande choue, il se peut que le chemin indiqu pour les rpertoires de polices dans le chier /etc/xfs.conf ne soit pas correct, ou que le chier fonts.dir nexiste pas ou ne soit pas correct dans un des rpertoires de polices. Si vous le dsirez, vous pouvez faire en sorte que le serveur de polices soit dmarr automatiquement au lancement de X. Vous pourrez pour cela crer un script de lancement du serveur de polices, que vous placerez dans le rpertoire /etc/rc.d/ (ou le rpertoire /sbin/init.d/, selon votre distribution) pour lancer et arrter le serveur de polices en suivant le mcanisme des niveaux dexcution. Vous trouverez ci-dessous un exemple de script de lancement du serveur de polices permettant dutiliser le chier de conguration prcdent :
#!/bin/bash # # /etc/rc.d/xfs # # Fichier de lancement du serveur de polices. # PORT=7100 FILE=/etc/xfs.conf PRGM=/usr/X11/bin/xfs [ -f $PRGM ] || exit 0 # Analyse les paramtres : case "$1" in start) # Vrifie si xfs est dj lanc : if [ -f /var/lock/subsys/xfs ]; then echo -n "Redmarrage du serveur de polices" killall -e -TERM $PRGM rm -f /var/lock/subsys/xfs fi $PRGM -port $PORT -config $FILE & touch /var/lock/subsys/xfs ;; stop) if [ ! -f /var/lock/subsys/xfs ]; then echo -n "xfs nest pas lanc" else echo -n "Arrt du serveur de polices" killall -e -TERM $PRGM rm -f /var/lock/subsys/xfs fi ;; restart) echo -n "Relecture du fichier de configuration" if [ -f /var/lock/subsys/xfs ]; then killall -e -USR1 $PRGM

364

Chapitre 10. Installation de XWindow


fi ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 esac exit 0

Comme X11 est dmarr classiquement dans le niveau dexcution 3 ou 4, vous devrez crer les liens symboliques vers ce chier pour le lancement et larrt du serveur de polices dans le rpertoire rc3.d/ ou rc4.d/. Attention, rappelez-vous que les noms de ces liens indiquent le moment o le script est excut, aussi bien pour lentre que pour la sortie du niveau dexcution. Vous devrez imprativement faire en sorte que ce script soit appel avant que XWindow ne dmarre si vous dsirez utiliser le serveur de polices dans les sessions X locales. Lutilisation du serveur de polices est trs simple. Il suft dy accder comme un rpertoire de polices de caractres normal, en utilisant la syntaxe suivante :
tcp/machine:port

o machine est la machine sur laquelle le serveur de polices accder est lanc, et port est le port que ce serveur coute. Par exemple, pour ajouter les polices dun serveur de polices locales la liste des polices du serveur X, il suft de taper la commande suivante :
xset +fp tcp/127.0.0.1:7100

Vous pourrez alors vrier que ces polices sont bien disponibles avec le programme xfontsel. Si vous le dsirez, vous pouvez ajouter automatiquement les polices dun serveur de polices en ajoutant la ligne suivante dans la section Files dans le chier de conguration XF86Config du serveur :
FontPath "tcp/127.0.0.1:7100"

Cette ligne permet dindiquer au serveur X quil trouvera des polices de caractres au niveau du serveur de polices de la machine locale. Bien entendu, le serveur de polices doit imprativement tre lanc avant le serveur X si une telle ligne est place dans le chier de conguration XF86Config.

10.8. Problmes classiques rencontrs


Il est possible que vous rencontriez quelques problmes au lancement de XWindow aprs avoir modi sa conguration. Ces problmes peuvent aller du blocage complet de la machine limpossibilit de lancer XWindow. Dune manire gnrale, il est recommand de ne pas modier la conguration dans le niveau dexcution de XWindow (3, 4 ou 5 selon les distributions). En effet, dans ces niveaux, xdm relance automatiquement le serveur X ds quil dtecte sa terminaison. Si le serveur X ne peut pas se lancer, votre ordinateur se bloquera dans une boucle innie, avec en prime deux changements de mode graphique chaque itration (ce qui peut endommager srieusement votre moniteur). Si cela vous arrivait, vous nauriez plus qu tenter le redmarrage de la machine en basculant rapidement sur un terminal (avec CTRL+ALT+F1 suivi de CTRL+ALT+DEL. Faites-le trs rapidement, avant que xdm

365

Chapitre 10. Installation de XWindow nait le temps de tenter un redmarrage du serveur X !), et redmarrer en indiquant le niveau dexcution 2 lamorage du noyau. Par consquent, essayez vos changement de conguration dans le niveau dexcution 2 si possible, et faites vos tests avec la simple commande startx. Des erreurs un peu plus techniques peuvent provenir de la conguration rseau elle-mme (noubliez pas que XWindow est un systme graphique bas rseau). Les erreurs les plus effroyables sont sans doute les erreurs du type _X11TransSocketINETConnect: Cant connect: errno = n , o n est un code derreur numrique. Typiquement, cette erreur signale un problme dans la conguration rseau. Les deux erreurs les plus classiques sont lerreur 101, qui signale que la machine indique dans le display na pas pu tre contacte, et lerreur 111, qui signale que cette machine est bien accessible par le rseau, mais que le serveur X ne sy trouve pas. En gnral, vous devrez vrier toute votre conguration rseau si vous rencontrez des erreurs 101, et le problme nest certainement pas spcique XWindow. Vous pouvez galement vrier la validit de votre display, car il se peut quil dsigne une machine inaccessible sur votre rseau (ou que la rsolution de nom ait chou pour cette machine). Pour ce qui est de lerreur 111, cest beaucoup plus simple. Dans la grande majorit des cas, le serveur X dsign nexiste tout simplement pas. Il faut donc sassurer que le serveur X en charge de grer le display indiqu dans la variable denvironnement DISPLAY est bien lanc sur la machine dsigne. Enn, lorsquune application cliente refuse de dmarrer en afchant un message derreur Cant open display: , cest tout simplement que la variable denvironnement DISPLAY na pas t prcise, et que loption en ligne de commande -display na pas t utilise non plus. Lapplication ne sait donc tout simplement pas quel display se connecter. Si le display a bien t dni, mais que le message Cant open display:xxx est complt du message Connection to "xxx" refused by server ou Client is not authorized to connect to Server , cest que le client a t lanc dans un autre compte utilisateur que le compte que vous utilisez couramment, et que ce compte ne dispose pas des droits ncessaires pour accder ce display. Vous devez dans ce cas donner laccs votre display au compte utilisateur sous lequel vous lancez le client.

366

Chapitre 11. Conclusion


Vous avez pu voir dans ce document les diffrentes procdures mettre en uvre pour installer Linux. Ces procdures peuvent paratre compliques, et en fait elles le sont effectivement. Cependant, il faut faire un choix entre fonctionnalit et simplicit. Linux choisit la voie la plus difcile : celle sur laquelle il faut tre performant et fournir le plus de possibilits. La complexit qui en dcoule se voit immdiatement lors de son installation, mais elle se comprend car chaque tape permet de le rendre chaque fois plus puissant, en lui ajoutant une fonctionnalit de plus. Finalement, ce qui vous a motiv pendant toutes ces tapes, cest sans aucun doute le dsir de bncier de la stabilit et de la puissance de Linux. Vous ne serez pas du, et vous rendrez vite compte que Linux dpasse de loin les systmes soi-disant plus ergonomiques sur ces deux points, dans une telle proportion que vous nirez par ne plus pouvoir les utiliser. Et si vous y tes contraint, vous ne louerez plus leur facilit demploi, mais vous pestifrerez bel et bien contre leur comportement alatoire, leurs incohrences ou leurs plantages rptition. En ralit, comme vous allez bientt le dcouvrir, Linux est simple utiliser pour les travaux du quotidien. De plus, comme il la dj t dit au dbut de ce document, ce qui parat compliqu au premier abord est souvent tout simplement inhabituel. Cest lusage que vous vous familiariserez avec les concepts Unix, et plus vous les utiliserez, plus vous les apprcierez. Aussi ne puis-je que vous souhaiter bonne continuation !

367

Chapitre 11. Conclusion

368

Annexe A. Options de conguration du noyau


Les questions poses par le programme de conguration du noyau sont rcapitules ci-dessous. Les rponses recommandes ont t choisies pour correspondre la plupart des cas courants. Il ne sagit pas des options recommandes pour installer un serveur ou pour un machine contenant des priphriques exotiques (carte vido, port infrarouge, etc.). Avec ce jeu doptions, un PC standard est suppos dmarrer sans poser de problmes. Vous devrez cependant certainement les adapter selon vos besoins. La plupart de ces options sont dcrites plus en dtail dans le chapitre traitant de la conguration du matriel. Je tiens prciser que certaines de ces options mont laiss dubitatif, tant dans lincapacit absolue de les comprendre et de les tester. Ces options sont en gnral les options concernant des fonctionnalits avances ou des priphriques rarement utiliss.

A.1. Menu Code maturity level options


Ce menu donne accs aux fonctionnalits en cours de dveloppement. Vous devez rpondre Y, si des pilotes particuliers sont ncessaires. Si lon rpond N, les questions de conguration concernant ces fonctionnalits ne seront pas poses. Il est recommand de rpondre Y cette question, car nombre de fonctionnalits rcentes sont marques comme tant exprimentales , bien qutant tout fait stable.

A.2. Menu Loadable module support


Loption Enable loadable module support permet lemploi des modules par le noyau. Il est recommand de rpondre Y cette question. Loption Set version information on all module symbols permet denregistrer des informations de version dans les modules du noyau. Cette fonctionnalit autorise lemploi des modules des versions prcdentes, par lintermdiaire du programme modprobe. En particulier, cela est ncessaire si vous dsirez utiliser des modules non fournis dans les sources du noyau (par exemple des gestionnaires de priphriques commerciaux). Par ailleurs, si vous dsactivez cette fonctionnalit, il faudra recompiler tous les modules chaque fois que vous changerez de noyau. Il est donc recommand de rpondre par Y cette question. Loption Kernel module loader donne la possibilit au noyau de charger lui-mme les modules du noyau. Cette fonctionnalit est ncessaire pour la bonne marche du systme, aussi est-il recommand de rpondre par Y cette question.

A.3. Menu Processor type and features


Loption Processor family vous permet de spcier le type de processeur sur lequel le noyau fonctionnera. Choisissez le processeur dont vous disposez. Loption PGE extensions (not for Cyrix/Transmeta) nest pas documente et ne sera pas dcrite ici. Loption Machine Check Exception permet dactiver la surveillance de ltat de lordinateur (lvation anormale de temprature, pannes, etc.) an de contourner les problmes matriels ou

369

Annexe A. Options de conguration du noyau darrter le systme avant une destruction de composants ou des pertes de donnes irrmdiables. La rponse recommande est Y. Loption Toshiba Laptop support permet dactiver la gestion dnergie pour les portables de marque Toshiba. Vous pouvez rpondre Y cette question si vous dsirez utiliser votre noyau sur un portable Toshiba. La rponse recommande est N. Loption Dell Laptop support permet dactiver la gestion dnergie pour les portables de marque Dell. Vous pouvez rpondre Y cette question si vous dsirez utiliser votre noyau sur un portable Dell. La rponse recommande est N. Loption /dev/cpu/microcode - Intel IA32 CPU microcode support permet dactiver la reprogrammation du microcode des processeurs Intel postrieurs aux Pentium Pro. laide de cette fonctionnalit, vous pourrez mettre jour le microcode de votre processeur (cette mise jour nest pas permanente, le microcode doit tre recharg chaque dmarrage de la machine). Notez que cette option impose dutiliser le systme de chiers virtuel /dev/ du noyau. Il est donc ncessaire dactiver loption /dev filesystem support (EXPERIMENTAL) du menu File systems . En gnral, il nest pas ncessaire de mettre jour le microcode de son processeur, moins que celuici ne contienne un bug incontournable ou que vous nayez optimiser spcialement votre machine pour une utilisation particulire. La rponse recommande est donc N. Loption /dev/cpu/*/msr - Model-specific register support permet dactiver la gestion du registre MSR sur les processeurs x86. Il existe un registre de ce type pour chaque processeur, que lon trouvera dans les sous-rpertoires portant comme nom les numros de chaque processeur. La rponse recommande est N. Loption /dev/cpu/*/cpuid - CPU information support permet dobtenir les informations fournies par linstruction CPUID pour chaque processeur de la machine. Il existe un registre de ce type pour chaque processeur, que lon trouvera dans les sous-rpertoires portant comme nom les numros de chaque processeur. La rponse recommande est N. Loption High Memory Support vous permet dindiquer le mode de gestion de la mmoire que le noyau utilisera. Pour la plupart des gens, dont les machines disposent de moins dun Go de mmoire, la rponse recommande est off . Si votre machine dispose de plus dun Go de mmoire, mais moins de quatre Go, vous pouvez changer le mode dadressage du noyau pour grer la totalit de votre mmoire, en choisissant loption 4GB . Les processeurs x86 ne permettent pas dadresser plus de 4Go de mmoire simultanment en raison de leur bus dadresses 32 bits. Cependant, ils peuvent grer jusqu 64Go de mmoire par tranches de 4Go, laide dune extension spcique aux processeurs de type Pentium Pro. Si vous disposez dune telle machine, vous devez choisir loption 64GB . Si vous activez lune de ces options, vous pourrez activer ou non loption HIGHMEM I/O support , qui permet dautoriser le systme utiliser la mmoire haute pour stocker ses tampons dentre / sortie ou de conner ceux-ci en mmoire basse. La rponse recommande est off . Loption Math emulation permet dactiver lmulateur dunit de calcul en virgule ottante, pour les processeurs qui nen disposent pas (386 et 486 SX). Si vous avez un ordinateur rcent, choisissez N. Loption MTRR (Memory Type Range Register) support permet dactiver le support des plages mmoires du processeur. Celui-ci peut permettre lacclration des transferts de donns dans les plages mmoires des priphriques, en particulier pour les cartes graphiques. Cette fonctionnalit nest disponible que pour les processeurs de type Pentium Pro et postrieurs. Si vous avez un ordinateur rcent, choisissez Y. Loption Symetric multi-processing support permet dactiver le support des cartes mres multi-processeurs. La plupart des gens nen disposant pas, vous pouvez rpondre N cette question. Loption Local APIC support on uniprocessors (NEW) permet dactiver les contrleurs dinterruptions programmables intgrs dans certains processeurs. Certaines machines disposent dun

370

Annexe A. Options de conguration du noyau tel processeur, si cest votre cas, vous pouvez rpondre par Y cette question. Cette option nest disponible que si vous avez rpondu N la question Symetric multi-processing support . Loption IO-APIC support on uniprocessors permet dactiver la gestion des contrleurs dinterruption programmables avancs. Ces contrleurs sont utiliss sur les machines multi-processeurs, mais certaines cartes mres monoprocesseurs les utilisent. Si cest le cas de votre carte mre, vous pouvez rpondre par Y cette question. Loption Multi-node NUMA system support permet dactiver la gestion des machines multiprocesseur utilisant larchitecture NUMA. Cette option modie la gestion des interruptions et la manire dont les processeurs sont dmarrs. Si vous disposez dune telle machine, vous pouvez rpondre par Y cette question et slectionner le type de machine avec lune des deux options Multiquad (IBM/Sequent) NUMAQ support ou IBM x440 (Summit/EXA) support . Cette option nest disponible que si vous avez rpondu Y la question Symetric multi-processing support . La rponse recommande est N. Loption Unsynced TSC support (NEW) permet de corriger un bug dans la gestion des timers de certaines machines parallles, qui provoque parfois un retour en arrire de lhorloge systme. La rponse recommande est N.

A.4. Menu General setup


Loption Networking support permet dactiver le support rseau. Les systmes Unix tant profondment bass sur les rseaux, il faut rpondre par Y. Loption PCI support permet dactiver le support des ordinateurs base de bus PCI. Si vous avez un ordinateur rcent, rpondez par Y. Loption PCI access mode permet de slectionner le composant qui initialisera les bus PCI. Si vous avez un ordinateur rcent, avec un BIOS rcent, choisissez BIOS . Sinon, choisissez Direct . Le choix Any permet de demander Linux dessayer linitialisation par le BIOS, et de faire le travail lui-mme si ce dernier est dfaillant. Vous pouvez donc toujours choisir loption Any . Loption ISA bus support permet la prise en charge des bus ISA. Le bus ISA est un bus en voie de dsutude, mais la plupart des anciennes cartes mres en disposent encore. Vous devez activer cette option si votre ordinateur dispose encore dun bus ISA. La rponse recommande est Y. Loption PCI device name database permet dinclure dans le noyau une liste de noms de priphriques PCI. Cette table est utilise pour fournir des noms humainement lisibles pour les priphriques PCI dans le systme de chiers virtuels /proc/. Elle accrot sensiblement la taille du noyau, mais ne consomme pas de mmoire supplmentaire une fois que la phase damorage termine. Il est donc recommand dactiver cette fonctionnalit, moins que vous ne cherchiez faire un systme embarqu ou une disquette damorage. La rponse recommande est donc Y. Loption EISA support permet dactiver la gestion des bus EISA. Ce bus a dsormais compltement t remplac par le bus PCI, aussi devriez-vous rpondre par N, moins que vous ne disposiez dune machine trs ancienne. Loption MCA support permet dactiver la gestion des bus MCA (pour les PS/2 dIBM). moins que vous nayez un PS/2, rpondez par N. Loption Support for hot-pluggable devices permet dactiver la gestion des priphriques connectables chaud (cest--dire pendant que le systme fonctionne). Parmi ces priphriques, on recontre couramment les cartes PCMCIA des portables, mais galement les priphriques USB et les cartes PCI connectables chaud. Cette option est en particulier ncessaire pour lutilisation

371

Annexe A. Options de conguration du noyau des cartes PCMCIA sur les portables. Elle vous donnera laccs aux menus PCMCIA/CardBus support , qui permet dactiver la gestion des cartes PCMCIA 32 bits (cela nest pas ncessaire pour utiliser les cartes PCMCIA 16 bits), et au menu PCI Hotplug Support , qui permet de prendre en charge la gestion des cartes PCI connectables chaud. Cette option est facultative pour lutilisation des priphriques USB. Ces priphriques ne seront toutefois pas congurs automatiquement lorsque vous les connecterez chaud si vous ne lactivez pas. Pour que la conguration des priphriques USB connects chaud fonctionne, vous devez galement activer la gestion des modules du noyau, ainsi que loption Kernel module loader . Si cette option est active, le noyau appelera alors le programme de conguration /sbin/hotplug pour charger le gestionnaire de priphriques appropri lorsquun priphrique sera connect. La rponse recommande est Y. Loption System V IPC permet dactiver la gestion des communications inter-processus compatibles System V. Cest quasiment un standard sur tous les systmes Unix, il faut donc rpondre par Y. Loption BSD Process Accounting permet dactiver le monitoring des applications utilis sur les systme BSD. Ce monitoring peut tre utilis par quelques applications, aussi est-il recommand de rpondre par Y. Loption Sysctl support permet de modier dynamiquement certains paramtres du noyau sans recompilation ni redmarrage par lintermdiaire du systme de chiers virtuels /proc/. Il est recommand de rpondre par Y cette question. Loption Kernel core (/proc/kcore) format permet de choisir le format de chiers binaires pour le chier kcore du systme de chiers virtuels /proc/. Ce chier contient la reprsentation de la mmoire vive du systme telle quelle est vue par le noyau, et peut tre utilis pour le dbogage du noyau. Les diffrents formats de chiers binaires sont A.OUT , un ancien format de chiers dsormais obsolte, ou ELF (abrviation de langlais Executable and Linking Format ), le format de chiers actuel. La rponse recommande est ELF . Loption Kernel support for a.out binaries permet dutiliser les programmes dont le format de chiers binaires est le format a.out . Bien que ce format de chiers binaires soit obsolte, il se peut que vous rencontriez de vielles applications qui nont pas t recompiles et qui lutilisent encore. Il est donc recommand dactiver la gestion de ce format : rpondez par Y. Loption Kernel support for ELF binaries permet dutiliser les programmes dont le format de chiers binaires est le format ELF. Ce format de chiers tant devenu un standard, il faut rpondre par Y cette question. Loption Kernel support for MISC binaries permet dactiver la gestion de formats de chiers binaires enregistrables dans le noyau. On peut alors utiliser des chargeurs spciques directement au niveau du noyau, et ainsi utiliser ces chiers binaires directement en ligne de commande. Il est recommand de rpondre par Y cette question. Loption Power Management support permet dactiver la gestion dnergie sur votre machine. Il existe actuellement deux protocoles de gestion dnergie sur les PCI : le protocole APM (abrviation de langlais Advanced Power Management , relativement ancien mais able, et le protocole ACPI (abrviation de langlais Advanced Conguration and Power Interface ), plus rcent mais pouvant poser quelques problmes de stabilit du systme. Ces deux protocoles peuvent tre paramtrs respectivement avec les deux jeux doptions suivantes. La rponse recommande est Y. Loption ACPI support permet dactiver la gestion du protocole de gestion dnergie ACPI. Ce protocole permet au systme dexploitation de contrler nement la consommation dnergie du systme, mais ncessite que votre carte mre le gre ainsi que tous les priphriques connects dessus. Si ce nest pas le cas, les priphriques qui seront mis en veille ne se rinitialiseront pas correctement lors du rveil de lordinateur, ce qui peut provoquer des plantages violents. La rponse recommande est donc N, moins que vous ne soyez sr que votre matriel soit 100% compatible ACPI. Notes que

372

Annexe A. Options de conguration du noyau si vous choisissez dactiver le protocole de gestion dnergie ACPI, celui-ci sera utilis en priorit par rapport au protocole APM. Il sera donc inutile dactiver la gestion de ce dernier. Les options suivantes permettent dactiver certaines fonctionnalits du protocole ACPI. Loption Advanced Power Management BIOS support permet dactiver la gestion dnergie APM par lintermdiaire du BIOS. Cette mthode de gestion dnergie est beaucoup plus sre que lACPI, car elle est plus ancienne et en gnral parfaitement support par le matriel actuel. Il faut activer le support de la gestion dnergie par APM si lon veut que lordinateur steigne tout seul lors de larrt du systme. Il est donc recommand de rpondre par Y cette question. Notez toutefois que cette fonctionnalit nest disponible que pour les ordinateurs disposant dun botier au format ATX. On remarquera que ce nest pas la gestion dnergie APM qui gre larrt des disques durs et la veille des moniteurs Green , il est possible davoir ces fonctionnalits mme si lon na pas activ la gestion dnergie APM. On notera galement que lhorloge logicielle de Linux prend du retard lorsque lordinateur passe en veille. Les options suivantes dpendent fortement de la conguration APM des machines. Les options de ce menu ne seront pas dcrites plus en dtails ici, car elles sont trop spciques chaque modle de machine. Pour la plupart des gens, il faut rpondre N toutes ces questions.

A.5. Menu Memory Technology Devices (MTD)


Ce menu vous permet dactiver la gestion des puces de mmoire Flash ou autres priphriques de mmoire persistante. Ce genre de priphrique est gnralement utilis pour raliser des systmes de chiers sur les systmes embarqus, qui ne disposent pas ncessairement de disques magntiques. Loption Memory Technology Device (MTD) support vous donnera accs aux choix des diffrents pilotes pour les matriels supports. La rponse recommande est N. Les sous-menus de ce menus sont les menus RAM/ROM/Flash chip drivers , Mapping drivers for chip access , Self-contained MTD device drivers et NAND Flash Device Drivers .

A.6. Menu Parallel port support


Loption Parallel port support permet dactiver la gestion du port parallle au niveau du noyau. Il est recommand de le faire sous la forme de module, car le port parallle nest pas souvent utilis. De toutes faons, il est recommand dactiver cette fonctionnalit, en rpondant par Y ou par M. Quelle que soit la rponse donne, on pourra ainsi utiliser le port parallle pour plusieurs fonctionnalits diffrentes (imprimante, lecteurs externes, etc.). Rpondez par Y ou par M. Loption PC-style hardware (NEW) permet dindiquer au noyau que le port parallle est compatible PC. Si vous compilez le noyau pour un PC ou un Alpha, rpondez par M cette question. Loption Multi-IO cards (parallel and serial) permet de prendre en charge les ports parallle et srie additionnels fournis par des cartes PCI. La rponse recommande est N. Loption Use FIFO/DMA if available (EXPERIMENTAL) permet de demander au noyau dutiliser une interruption et un canal DMA pour accder au port parallle, si le chipset de la carte mre le supporte. Cela permet gnralement dacclrer les entres / sorties sur le port parallle, en vitant au noyau dutiliser un mcanisme de consultation priodique de ltat du port an de savoir sil est capable daccepter des donnes ou si des donnes doivent tre lues. Notez que, par dfaut, le noyau nutilisera aucune ligne dinterruption pour accder au port parallle, et ce mme si vous avez activ cette option. Pour changer le comportement par dfaut, vous devrez passer le paramtre parport au noyau lors de son dmarrage, suivi de ladresse du port et de la ligne dinterruption utiliser, spars par une virgule. Si vous avez demand la compilation du gestionnaire de ports paral-

373

Annexe A. Options de conguration du noyau lles sous forme de module, vous devrez spcier ces options dans le chier /etc/modules.conf. La rponse recommande est Y. Loption SuperIO chipset support (EXPERIMENTAL) permet dactiver la gestion des chipset SuperIO prsents sur certaines cartes mres. La rponse recommande est N. Loption Support for PCMCIA management for PC-styles ports permet dutiliser les outils PCMCIA pour les priphriques sur port parallles. La rponse recommande est N. Loption Sparc hardware (EXPERIMENTAL) permet de prendre en charge les ports parallles des vieilles stations Sparc de Sun. Les nouvelles stations Ultra Sparc utilisent prsent des ports parallles de PC, et peu de gens ont utiliser cette option. La rponse recommande est N. Loption Support foreign hardware permet dactiver la gestion de matriels exotiques pour le port parallle. Il est recommand de rpondre N cette question. Loption IEEE 1284 transfer modes permet de paramtrer le gestionnaire de ports parallles pour utiliser les communications bidirectionnelles du port. Cette option est utile si lon utilise une imprimante capable dindiquer son tat lordinateur. Notez que pour que cette fonctionnalit soit disponible, vous devez galement paramtrer votre BIOS pour que le port parallle soit en mode EPP ou ECP. La rponse recommande est Y.

A.7. Menu Plug and Play conguration


Loption Plug and Play support permet dactiver la gestion du plug and play au niveau du noyau. La rponse recommande est Y. Loption ISA Plug and Play support permet dactiver les fonctionnalits Plug and Play pour les priphriques ISA. Il est ainsi possible dviter davoir utiliser les outils isapnp et pnpdump, et dviter la compilation des gestionnaires de ces priphriques en modules. La conguration de ces priphriques ISA Plug and Play en est grandement simplie. Il est donc recommand de rpondre par Y cette question. Toutefois, si vous dsirez affecter manuellement les lignes dinterruptions, canaux DMA et ports dentre/sortie pour vos cartes, vous devez rpondre par N.

A.8. Menu Block devices


Loption Normal PC floppy disk support permet dactiver la gestion des lecteurs de disquettes sous Linux. Vous pouvez rpondre par Y cette question. Loption PS/2 ESDI hard disk support permet dactiver la gestion des disques ESDI sur les ordinateurs de type PS/2. Cette option nest disponible que si vous avez activ la gestion du bus MCA laide de loption MCA support du menu General setup . La rponse recommande est N. Loption XT hard disk support permet dactiver la gestion des disques durs XT. Ce sont de trs vieux disques durs, que plus personne nutilise. Rpondez par N cette question. Loption Parallel port IDE device support permet dactiver la gestion des priphriques IDE connects sur port parallle. Il est recommand de placer ce pilote en module, car les lecteurs sur port parallle ne sont pas toujours connects lordinateur. Rpondez par M cette question. Loption Parallel port IDE disks permet dactiver le support des disques IDE connects sur port parallle. Si vous disposez dun tel disque, rpondez par M cette question, et choisissez le protocole de communication sur port parallle correspondant dans lune des options suivantes. La rponse recommande est N.

374

Annexe A. Options de conguration du noyau Loption Parallel port ATAPI CD-ROMs permet dactiver la gestion des CD-ROM ATAPI connects sur port parallle. Si vous disposez dun tel lecteur, rpondez par M cette question, et choisissez le protocole de communication sur port parallle correspondant dans lune des options suivantes. La rponse recommande est N. Loption Parallel port ATAPI disks permet dactiver la gestion des disques ATAPI connects sur port parallle. Si vous disposez dun tel disque, rpondez par M cette question, et choisissez le protocole de communication sur port parallle correspondant dans lune des options suivantes. La rponse recommande est N. Loption Parallel port ATAPI tapes permet dactiver la gestion des lecteurs de bandes connects sur port parallle. Si vous disposez dun tel lecteur, rpondez par M cette question, et choisissez le protocole de communication sur port parallle correspondant dans lune des options suivantes. La rponse recommande est N. Loption Parallel port generic ATAPI devices permet la gestion de priphriques ATAPI non standards connects au port parallle. Les logiciels utilisateur peuvent envoyer des commandes ATAPI spciques ces priphriques par lintermdiaire de ce gestionnaire. En particulier, les graveurs de CD connects sur port parallle utilisent cette fonctionnalit. Si vous disposez dun graveur de CD sur port parallle, rpondez par M cette question, et choisissez le protocole de communication sur port parallle correspondant dans lune des options suivantes. La rponse recommande est N. Les options qui suivent permettent de choisir les protocoles de communication sur port parallle adapts votre matriel. Vous devez en choisir au moins un si vous comptez utiliser un priphrique IDE connect sur le port parallle. Les rponses recommandes sont N pour les protocoles que votre matriel ne comprend pas. Loption Compaq SMART2 support permet dactiver la gestion des cartes contrleurs Smart Array de Compaq. moins que vous ne disposiez dune telle carte, la rponse recommande est N. Loption Compaq Smart Array 5xxx support permet dactiver la gestion des cartes contrleurs Smart Array 5xxx de Compaq. moins que vous ne disposiez dune telle carte, la rponse recommande est N. Si vous activez cette fonctionnalit, vous pourrez galement activier loption SCSI tape drive support for Smart Array 5xxx , qui permet dutiliser des priphriques SCSI connects sur les contrleurs Smart Array 5xxx. La rponse recommande pour cette option est galement N. Loption Mylex DAC960/DAC1100 PCI RAID Controler support permet dactiver la gestion des contrleurs RAID Mylex. La rponse recommande est N. Loption Micro Memory MM5415 Battery Backed RAM support (EXPERIMENTAL) permet dactiver la gestion des cartes mmoires alimentes par batterie MM5415. La rponse recommande est N. Loption Loopback device support permet dutiliser des chiers classiques pour y placer un systme de chiers. Cela est essentiellement utilis pour crer des images de CD et les tester avant de les graver. Si vous disposez dun graveur de CD-ROM, il est recommand de rpondre Y cette question. Sinon, rpondez M, pour vous rserver la possibilit dutiliser des systmes de chiers stocks dans des chiers classiques. Loption Network block device support permet daccder aux chiers spciaux de priphriques de type bloc dun ordinateur distant par lintermdiaire du rseau. Cette fonctionnalit est peu utilise, la rponse recommande est donc N. Loption RAM disk support permet dactiver la gestion des disques virtuels. Ces disques sont souvent utiliss pour crer des disquettes de rparation, qui chargent les utilitaires systmes sur un

375

Annexe A. Options de conguration du noyau disque en mmoire. La rponse recommande est N pour un systme normal, et Y pour un systme destin tre plac sur une disquette de rparation. Loption Default RAM disk size permet de xer la taille par dfaut des disques virtuels. La taille recommande est de 4096 Ko. Loption Initial RAM disk (initrd) support permet dactiver la possibilit de monter le systme de chier racine sur un disque virtuel au dmarrage. La rponse recommande est N pour un systme normal, Y pour un systme destin tre plac sur une disquette de rparation. Loption Per partition statistics in /proc/partitions permet de demander au noyau de maintenir des statistiques pour chaque partition. Ces statistiques sont accessibles dans le chier partition du systme de chiers virtuel /proc/. La rponse recommande est N.

A.9. Menu Multi-device support (RAID and LVM)


Loption Multiple devices driver support (RAID and LVM) permet dactiver la gestion de la redondance de donnes RAID et des disques logiques. La technologie RAID permet de raliser des agrgats de disques, soit dans le but de simuler des disques de grande capacit, soit an de stocker les donnes de manire redondante sur plusieurs disques an dobtenir une scurit accrue de ces donnes. La technologie LVM permet quant elle uniquement de regrouper plusieurs volumes physiques an de simuler la prsence dun volume logique de trs grande capacit. Vous pouvez rpondre par Y cette question si vous avez besoin de lune de ces fonctionnalits. Dans le cas contraire, rpondez par N. La rponse recommande est N. Loption RAID support permet dactiver la prise en charge des technologies RAID au niveau logiciel. Cette option nest pas ncessaire pour utiliser les technologies RAID avec un matriel spcique. La rponse recommande est N. Loption Linear (append) mode permet de concatner plusieurs partitions pour ne former quune seule zone de donnes plus grande. Cette fonctionnalit nassure pas la redondance des donnes. La rponse recommande est N. Loption RAID-0 (striping) mode permet de rpartir les donnes sur plusieurs partitions de manire quilibre. Cela permet de simuler des disques de trs grande capacit, et galement daugmenter les performances en minimisant les temps daccs, si ces partitions sont sur des disques diffrents. Cette fonctionnalit nassure cependant pas la redondance des donnes. La rponse recommande est N. Loption RAID-1 (mirroring) mode permet de dupliquer les donnes sur plusieurs disques la vole. Cette redondance des donnes permet dassurer une grande scurit. La rponse recommande est N. Loption RAID-4/RAID-5 mode permet dactiver le support logiciel RAID-4 ou RAID-5. Dans le mode de fonctionnement RAID-4, un des disques est utilis pour contrler la validit des donnes sur les autres disques. Dans le mode de fonctionnement RAID-5, ces donnes de contrle sont rparties sur tous les disques, pour une capacit toujours diminue de la capacit de lun des disques. La rponse recommande est N. Loption Mutipath I/O support permet dactiver le support des priphriques capables dtre accds par diffrents jeux de ports dentre / sortie. La rponse recommande est N. Loption Logical volume manager (LVM) support permet dactiver la gestion des volumes virtuels. Avec cette option, vous pourrez faire des agrgats de plusieurs disques, priphriques RAID ou priphriques loopback an de simuler un priphrique de type bloc de trs grande capacit. La rponse recommande est N.

376

Annexe A. Options de conguration du noyau

A.10. Menu Networking options


Loption Packet socket permet dautoriser la manipulation directe des trames rseau par des applications clientes. Cette fonctionnalit peut tre utiles pour certains utilitaires rseau, et en particulier elle est ncessaire pour les clients et les serveurs DHCP. Loption recommande est donc Y. Loption Packet socket: mmapped IO nest disponible que si loption prcdente a t active. Elle permet dutiliser un mcanisme de communication optimis pour la communication des trames rseau aux applications clientes, bas sur des segments de mmoire partage (ce qui vite une copie des donnes transfres). La rponse recommande est Y. Loption Netlink device emulation est obsolte et nest plus utilise. Rpondez par Y cette question pour assurer la compatibilit avec dventuels vieux programmes. Loption Network packet filtering (replaces ipchains) permet dactiver les fonctions de ltrage des paquets rseau du noyau. Ces fonctions peuvent tre utilises pour plusieurs raisons, les plus courantes tant sans doute la ralisation de Firewall et de partages de connexion Internet. Pour information, un Firewall est un programme qui ltre les informations en provenance et destination du rseau, selon des rgles de scurit prdnies. Ces rgles permettent deffectuer le ltrage en fonction des adresses et du type des paquets mis et reus. Les actions qui peuvent tre prises sur les paquets ainsi ltrs peuvent tre varies, allant de llimination du paquet sa modication ou son transfert vers une autre adresse que celle vers laquelle il devait aller initialement. Cette fonctionnalit permet donc galement de raliser la translation dadresse des paquets TCP/IP. Vous devez activer cette option si vous dsirez raliser un partage de connexion Internet ou un Firewall. La rponse recommande est N. Loption Network packet filtering debugging active la gestion des messages de dbogage des fonctionnalits de ltrage des paquets. Ces messages peuvent tre trs utiles pour le dbogage des rgles de ltrage et de translations dadresses du noyau, aussi la rponse recommande est-elle Y. Loption Socket Filtering active la fonctionnalit permettant aux programmes utilisateurs denregistrer un ltre pour chaque canal de communication rseau. Ce ltre indique au noyau si les paquets correspondants doivent tre transmis ou rejets. Ce type de ltre est trs utilis pour la ralisation de Firewall volus, ou doutil danalyse de trac du rseau. Dautre programmes peuvent utiliser cette fonctionnalit pour analyser les paquets qui circulent sur le rseau. Cest en particulier le cas des clients et des serveurs DHCP, aussi la rponse recommande est-elle Y. Loption Unix domain sockets permet dactiver les communications rseau bases sur la notion de socket Unix. Comme la plupart des programmes Unix utilisent ce paradigme de communication, il faut rpondre Y cette question. Loption TCP/IP networking permet dactiver le protocole de communication rseau TCP/IP. Le systme utilisant intensivement ce protocole de communication, il faut rpondre Y cette question. Loption IP: multicasting permet dautoriser lenvoi des donnes plusieurs ordinateurs en mode multicast (un paquet pour plusieurs destinations). Cette fonctionnalit permet de rduire le trac rseau dans certaines applications, mais elle est trs peu utilise. La rponse recommande est donc N. Loption IP: advanced router permet de congurer le systme pour tre un routeur (ordinateur qui transfre des informations dun rseau un autre). La rponse recommande est N. Loption IP: policy routing permet dactiver le routage des paquets en fonction des adresses source en plus des adresses destination des paquets. La rponse recommande est N.

377

Annexe A. Options de conguration du noyau Loption IP: use netfilter MARK value as routing key permet dactiver le routage en fonction du champ MARK des paquets en plus des adresses destination. Le champ MARK est utilis par les fonctionnalits de ltrage du noyau, et permet didentier certains paquets pour leur faire subir des traitements ultrieurs. Parmi ces traitements, on peut utiliser un routage spcique, ce que cette option permet de raliser. La rponse recommande est N. Loption IP: fast network address translation permet de convertir les adresses source et destination des paquets qui passent par lordinateur selon une mthode prdtermine. Cette fonctionnalit nest pas ncessaire pour raliser la translation dadresse, aussi la rponse recommande est-elle N. Loption IP: equal cost multipath permet de choisir une route possible parmi plusieurs routes pour chaque paquet transmis. La rponse recommande est N. Loption IP: use TOS value as routing key permet de prendre en compte le type de service auquel appartient le paquet courant dans la dtermination de la route. La rponse recommande est N. Loption IP: verbose route monitoring permet dactiver les traces du sous-systme de routage. La rponse recommande est N. Loption IP: large routing tables permet daccrotre la taille des tables de routage et daugmenter ainsi leur rapidit dexcution pour les grands rseaux. La rponse recommande est N. Loption IP: kernel level autoconfiguration permet de raliser la conguration du protocole rseau IP au niveau du noyau, lors de la phase de dmarrage. Cette option est utilise notamment lorsquon dsire monter le systme de chiers racine par NFS. La rponse recommande est N. Loption IP: DHCP support permet de demander au noyau de dterminer automatiquement ladresse IP lors du dmarrage grce au protocole DHCP . Cette option nest valide que lorsque loption IP: kernel level autoconfiguration a t active. La rponse recommande est N. Loption IP: BOOTP support permet de demander au noyau de dterminer automatiquement ladresse IP lors du dmarrage grce au protocole BOOTP . Cette option nest valide que lorsque loption IP: kernel level autoconfiguration a t active. La rponse recommande est N. Loption IP: RARP support permet de demander au noyau de dterminer automatiquement ladresse IP lors du dmarrage grce au protocole RARP . Ce protocole est un protocole plus ancien que le protocole BOOTP, il est en passe de devenir obsolte. Cette option nest valide que lorsque loption IP: kernel level configuration a t active. La rponse recommande est N. Loption IP: tunneling permet dactiver lencapsulation des paquets dun protocole dans les paquets dun autre protocole. La rponse recommande est N. Loption IP: GRE tunnels over IP permet dautoriser lencapsulation des protocoles IPv4 et IPv6 avec la mthode GRE (abrviation de langlais Generic Routing Encapsulation ). Cette mthode dencapsulation est destine aux routeurs Cisco. La rponse recommande est N. Loption IP: broadcast GRE over IP permet de crer un rseau Ethernet virtuel sur IP par lintermdiaire de la mthode dencapsulation GRE, qui permet deffectuer des broadcasts dIP dans le rseau virtuel. La rponse recommande est N. Loption IP: multicast routing permet de congurer le systme pour le routage des paquets ayant plusieurs destinations (cest--dire les paquets IP envoys en multicast). La rponse recommande est N.

378

Annexe A. Options de conguration du noyau Loption IP: PIM-SM version 1 support permet dactiver la gestion du protocole de routage PIM des paquets envoys en multicast. Ce protocole est gr par Cisco. La rponse recommande est N. Loption IP: PIM-SM version 2 support permet dactiver la gestion de la version 2 du protocole de routage PIM. La rponse recommande est N. Loption IP: ARP daemon support (EXPERIMENTAL) permet de limiter 256 la table dadresses physiques utilises pour les requtes ARP. Cette option est utile pour limiter la consommation mmoire du noyau dans les grands rseaux. Les requtes ne pouvant tre satisfaites directement sont transfres un dmon, repoussant ainsi le reste de la table hors de la mmoire du noyau. La rponse recommande est N. Loption IP: TCP Explicit Congestion Notification support permet dactiver la prise en charge des notications de surcharge des rseaux TCP/IP. Ces notications sont envoyes par les routeurs aux clients an dviter que le rseau scroule. Elle permet donc de diminuer le nombre de paquets perdus et daccrotre ainsi les performances du rseau. Malheureusement, certains rewall sur Internet ne permettent pas les communications avec les machines utilisant cette fonctionnalit. La rponse recommande est donc N. Loption IP: TCP syncookie support (disabled per default) permet de protger la machine dune certaine forme dattaque rseau. Le fait de rpondre par Y cette question inclut le support de cette protection, mais ne lactive pas par dfaut. Lactivation doit se faire par conguration dynamique du noyau via /proc/. La rponse recommande est N. Loption The IPv6 protocol (EXPERIMENTAL) permet dactiver la gestion du protocole IPv6. La rponse recommande est N. Loption Kernel httpd acceleration (EXPERIMENTAL) est une option permettant dintgrer un petit serveur Web trs optimis au sein dun thread du noyau. Ce serveur nest capable de dlivrer que des pages statiques, mais dune manire extrmement efcace car toutes les oprations sont effectues au sein du noyau. Lorsquune requte HTTP ne peut pas tre excute par le thread du noyau, celui-ci peut transfrer la requte un serveur Web classique, comme Apache par exemple, an que celui-ci y rponde. Cette fonctionnalit est exprimentale et intgre au sein du noyau du code classiquement situ dans les applicatifs utilisateur. Aussi est-il vivement recommand de rpondre N cette question et de laisser de ct cette fonctionnalit. Loption Asynchronous Transfer Mode (ATM) (EXPERIMENTAL) permet dactiver la gestion des rseaux ATM. ATM est un type de rseau travaillant en mode connect (cest--dire quune connexion permanente est tablie entre les deux machines), ce qui permet deffectuer une ngociation initiale des ressources allouer cette connexion. Les rseaux ATM sont donc relativement adapts aux transferts de donnes temps rel, comme la voix ou la vido. Les paquets transfrs sont tous de taille xe, ce qui permet de simplier leur traitement et dobtenir des dbits trs grands. ATM est utilis aussi bien pour les rseaux de grande chelle que pour les rseaux locaux. Vous pouvez rpondre par Y cette question si vous tes connect un rseau ATM. La rponse recommande est N. Loption Classical IP over ATM permet dactiver le support du protocole IP encapsul dans un rseau virtuel ATM. Une alternative cette option est loption LAN Emulation (LANE) support . La rponse recommande est N. Loption Do NOT send ICMP if no neighbour permet dviter lenvoi de paquet ICMP signalant linaccessibilit dune machine lorsque le noyau supprime temporairement la connexion cette machine de ses tables internes pendant certaines oprations de maintenance. La rponse recommande est N. Loption LAN Emulation (LANE) support permet de simuler un rseau local classique sur un rseau ATM et ventuellement dtablir un pont entre ce rseau local virtuel et dautre rseaux Ethernet rels. La rponse recommande est N.

379

Annexe A. Options de conguration du noyau Loption Multi-Protocol Over ATM (MPOA) support permet ltablissement de canaux virtuels ATM au travers des limites des rseaux an doptimiser le routage des donnes. La rponse recommande est N. Loption RFC1483/2684 Bridged protocols permet denvoyer des paquets Ethernet sur un rseau virtuel ATM. La rponse recommande est N. Loption Per-VC IP filter kludge nest pas documente et ne sera pas dcrite ici. Loption 802.1Q VLAN Support (EXPERIMENTAL) permet de crer des interfaces rseau virtuelles 802.1Q sur une interface Ethernet normale. La rponse recommande est N. Loption The IPX protocol permet de prendre en charge le protocole rseau IPX de Novell. La rponse recommande est N. Loption IPX: Full internal IPX network permet de congurer le serveur pour quil apparaisse comme un rseau IPX part entire, en lui assignant un numro de rseau Novell. Toutes les requtes seront rediriges vers des nuds grs en interne pour ce rseau virtuel. La rponse recommande est N. Loption Appletalk protocol support permet dactiver la gestion des rseaux AppleTalk. La rponse recommande est N. Loption DECnet support permet dactiver la gestion des rseaux DECnet, initialement crs par Digital (et repris maintenant par Compaq). La rponse recommande est N. Loption DECnet: SIOCGIFCONF support permet de paramtrer les interfaces rseau via un appel systme spcial. La validation de cette option peut provoquer des problmes avec certains utilitaires, aussi la rponse recommande est-elle N. Loption DECnet: router support (EXPERIMENTAL) permet dactiver les fonctionnalits de routage sur les rseaux DECnet. La rponse recommande est N. Loption DECnet: use FWMARK value as routing key (EXPERIMENTAL) permet dtablir des rgles de routage pour les rseaux DECnet qui se basent sur la valeur du champ MARK de ces paquets. Cette valeur peut tre modie par le code de ltrage des paquets du noyau laide des rgles de rewalling. La rponse recommande est N. Loption 802.1d Ethernet Bridging permet de congurer le systme comme un pont Ethernet (un pont permet de regrouper physiquement plusieurs rseaux en un seul rseau physique). La rponse recommande est N. Loption CCITT X.25 Packet Layer (EXPERIMENTAL) permet dactiver la gestion du protocole de bas niveau pour X.25. La rponse recommande est N. Loption LAPB Data Link Driver (EXPERIMENTAL) permet dactiver la gestion du protocole de communication de haut niveau de X.25. La rponse recommande est N. Loption 802.2 LLC (EXPERIMENTAL) permet dencapsuler le protocole X.25 sur Ethernet. La rponse recommande est N. Loption Frame Diverter (EXPERIMENTAL) active une fonctionnalit permettant de dtourner les trames rseau qui arrivent sur linterface rseau, mme si ces trames ne sont pas destines linterface rseau courante. Grce cette option, il est facile de raliser des analyseurs rseau ou dintercaler une machine Linux entre deux rseaux et de la congurer comme un pont an de raliser un cache transparent pour certains protocoles. La rponse recommande est N. Loption Acorn Econet/AUN protocols (EXPERIMENTAL) permet dactiver la gestion des rseaux Econet. La rponse recommande est N. Loption AUN over UDP permet dencapsuler les paquets Econet dans UDP. La rponse recommande est N.

380

Annexe A. Options de conguration du noyau Loption Native Econet permet de prendre en charge les cartes rseau Econet. La rponse recommande est N. Loption WAN rooter permet deffectuer le routage sur un rseau WAN (abrviation de langlais Wide Area Network ). La rponse recommande est N. Loption Fast switching (read help!) permet dactiver la communication entre les machines directement par lintermdiaire des interfaces rseau. Cette option est incompatible avec les fonctionnalits de ltrage du noyau. Vous ne devez donc pas lactiver si vous dsirez raliser un Firewall ou partager une connexion Internet. La rponse recommande est N. Loption Forwarding between high speed interfaces permet de congurer les couches rseau pour attendre avant de rmettre les paquets en cas de congestion extrme du rseau. La rponse recommande est N.

A.11. Menu IP: Netlter Conguration


Loption Connection tracking (required for masq/NAT) permet de suivre la connexions courantes an de dterminer quelle connexion un paquet appartient. Cela peut tre utile si lon dsire crer des rgles de ltrage des paquets se basant sur les informations de gestion des connexions pour les protocoles comme TCP. Cette option est galement ncessaire pour utiliser les mcanismes de translation dadresse, vous devrez donc lactiver si vous dsirez effectuer un partage de connexion Internet. La rponse recommande est N. Loption FTP protocol support active la gestion du suivi des connexions FTP. Ces connexions ncessitent en effet un traitement particulier, et vous devrez activer cette option si vous voulez utiliser des connexions FTP avec un partage de connexion Internet. La rponse recommande est Y. Loption Amanda protocol support active la gestion des connexions utilisant le protocole rseau du logiciel de sauvegarde Amanda. La rponse recommande est N, sauf si bien sr vous utilisez ce logiciel. Loption TFTP protocol support active la gestion du suivi des connexions TFTP. Si vous utilisez des clients TFTP au travers de votre partage de connexion Internet, vous devez activer cette option. La rponse recommande est N. Loption IRC protocol support active la prise en charge des commandes de transfert de chiers DDC du protocole IRC. Si vous utiliser IRC couramment, il est exprssment recommand de rpondre Y cette question, faute de quoi vous ne pourrez pas changer de chiers avec vos interlocuteurs. Loption Userspace queueing via NETLINK (EXPERIMENTAL) permet de mettre disposition de programmes clients les paquets traits par le code de ltrage, par lintermdiaire de linterface Netlink. La rponse recommande est N. Loption IP tables support (required for filtering/masq/NAT) permet dactiver la gestion des tables au sein du code de ltrage du noyau. Une table est en ralit un ensemble cohrent de fonctionnalits permettant dappliquer des traitements aux paquets selon des rgles organises en groupes. Ces traitements peuvent intervenir diffrents endroits dans la gestion des paquets par le code rseau du noyau. Les deux tables les plus importantes sont celles qui permettent de raliser le ltrage des paquets et les translations dadresses. Vous devez donc activer cette fonctionnalit si vous dsirez raliser un Firewall ou un partage de connexion Internet. La rponse recommande est N. Loption limit match support active la gestion de la limitation du nombre de fois par seconde quune rgle peut tre vrie par un paquet. Cette limitation est utile lorsquon enregistre des

381

Annexe A. Options de conguration du noyau messages pour tous les paquets qui vrient certaines rgles, an dviter lengorgement des chiers de traces du systme. La rponse recommande est N. Loption MAC address match support active la gestion du critre de slection des paquets bas sur leur adresse Ethernet source. Cette rgle nest utilisable que pour les paquets provenant dune interface rseau de type Ethernet. La rponse recommande est N. Loption Packet type match support vous permet de slectionner les paquets en fonction de leur nature (broadcast, multicast, etc...). La rponse recommande est N. Loption netfilter MARK match support active la gestion du critre de slection des paquets bas sur le champ MARK de leur en-tte. Ce champ peut tre modi par certaines rgles des chanes prcdemment traverses par les paquets, an de les marquer pour un traitement ultrieur. Cette option doit donc obligatoirement tre active si lon dsire dtecter ces paquets pour effectuer ce traitement. La rponse recommande est N. Loption Multiple port match support permet dutiliser des plages de valeurs pour les ports TCP et UDP dans les critres de slection des rgles pour ces deux protocoles. Sans cette option, les ports doivent tre spcis un un, ce qui peut rendre relativement peu pratique la dnition de certaines rgles. La rponse recommande est Y. Loption TOS match support active la gestion du critre de slection des paquets bas sur le champ TOS de leur en-tte. Ce champ permet de dnir le type de service des paquets, principalement an de distinguer les paquets prioritaires des paquets normaux. La rponse recommande est N. Loption ECN match support active la gestion du critre de slection des paquets bas sur le champ ECN de leur en-tte. La rponse recommande est N. Loption DSCP match support active la gestion du critre de slection des paquets bas sur le champ DSCP de leur en-tte. La rponse recommande est N. Loption AH/ESP match support active la gestion des critres de slection bass sur les informations utilises par les protocoles de scurisation AH et ESP de lextension IPSec du protocole IP. La rponse recommande est N. Loption LENGTH match support active la gestion du critre de slection bas sur la longueur des paquets. La rponse recommande est N. Loption TTL match support permet dutiliser le champ TTL des paquets comme critre de slection. Ce champ permet de dnir la dure de vie des paquets au travers des diffrents routeurs, et permet de limiter la propagation des paquets sur Internet un certain nombre dinterconnexions seulement. La rponse recommande est N. Loption tcpmss match support permet de prendre en compte le champ MSS des paquets de demande de connexion dans les critres de slection. Ce champ indique la taille maximale que les paquets de cette connexion devront utiliser pas la suite. La rponse recommande est N. Loption Helper match support active la gestion du critre de slection des paquets participant une connexion tablie et suivie par lune des fonctionnalits actives par loption Connection tracking (required for masq/NAT) . La rponse recommande est N. Loption Connection state match support permet de slectionner les paquets selon leur rle dans la gestion des connexions rseau. Par exemple, cette option permet de distinguer les paquets qui tablissent une connexion rseau des autres paquets. La rponse recommande est Y. Loption Connection tracking match support permet de slectionner les paquets selon les connexions rseau auxquels ils appartiennent. Par exemple, cette option permet de distinguer les paquets de diffrentes connexions virtuelles dans le cas du tunneling. La rponse recommande est N.

382

Annexe A. Options de conguration du noyau Loption Unclean match support (EXPERIMENTAL) permet de slectionner les paquets dont les en-ttes IP ne sont pas corrects ou contiennent des valeurs incohrentes. Ces paquets doivent dabord avoir travers le code de validation de lintgrit des paquets des interfaces rseau pour pouvoir tre ltrs selon ce critre. La rponse recommande est N. Loption Owner match support (EXPERIMENTAL) permet de slectionner les paquets crs par les processus locaux en utilisant comme critre les identiants de groupe, de processus et dutilisateur de celui qui les a crs. Ces critres de slection ne sont pas utilisables sur les paquets provenant de lextrieur. La rponse recommande est N. Loption Packet filtering active la gestion de la table filter, couramment utilise pour ltrer les paquets autoriss et raliser un Firewall. La rponse recommande est N. Loption REJECT target support active la gestion de la cible REJECT dans les rgles des chanes de la table filter. Cette cible se distingue de la cible DROP, gre nativement par la table filter, par le fait quun message derreur est renvoy la machine source du paquet. La rponse recommande est Y. Loption MIRROR target support (EXPERIMENTAL) active la gestion de la cible MIRROR, qui permet de renvoyer lmetteur les paquets qui sont dirigs vers cette cible dans une rgle de ltrage. La rponse recommande est N. Loption Full NAT active les fonctionnalits de translation dadresse, au travers de la table nat. Cette option doit tre active si vous dsirez raliser un partage de connexion Internet. Dans le cas contraire, la rponse recommande est N. Loption MASQUERADE target support active la gestion du masquerading des paquets rseau. Vous devez activer cette option si vous dsirez raliser un partage de connexion Internet. La rponse recommande est N. Loption REDIRECT target support active la gestion de la translation dadresse destination pour rediriger les paquets vers la machine locale. Cette option est trs utilise pour raliser des proxies qui devront fonctionner de manire transparente pour les clients. La rponse recommande est N. Loption NAT on local connections (READ HELP) permet dactiver le support des translations dadresses entre les processus de la machine locale. La rponse recommande est N. Loption Basic SNMP-ALG support (EXPERIMENTAL) active la gestion de la translation dadresse pour permettre laccs et le contrle des machines situes sur le rseau et pour lesquelles un partage de connexion Internet est ralis. moins que vous nutilisiez le protocole SNMP pour administrer les machines de votre rseau, vous pouvez rpondre N cette question. Loption Packet mangling active la gestion de la table mangle. Cette table a pour but de donner les moyens deffectuer diverses modications des en-ttes des paquets, an de les marquer pour un traitement ultrieur spcique. La rponse recommande est N. Loption TOS target support permet dutiliser la cible TOS dans les rgles des chanes de la table mangle. Cette cible autorise la modication du champ Type Of Service des paquets, principalement dans le but de modier leur priorit. La rponse recommande est N. Loption ECN target support permet dutiliser la cible ECN dans les rgles des chanes de la table mangle. Cette cible autorise la modication du champ ECN des paquets. La rponse recommande est N. Loption DSCP target support permet dutiliser la cible DSCP dans les rgles des chanes de la table mangle. Cette cible autorise la modication du champ DSCP des paquets. La rponse recommande est N. Loption MARK target support active la gestion de la cible MARK, qui permet de marquer les paquets avec un traceur an de pouvoir les identier ultrieurement. Par exemple, il est possible de

383

Annexe A. Options de conguration du noyau modier le routage de certains paquets selon quils sont marqus ou non. On peut ainsi raliser des liaisons prioritaires pour certaines catgories de paquets. La rponse recommande est N. Loption LOG target support active la gestion de la cible LOG. Cette cible permet denregistrer des messages de dbogage dans les chiers de traces du systme. On veillera activer galement la gestion des limites sur les rgles de ltrage an dviter dengorger les chiers de traces si lon dsire utiliser cette option. La rponse recommande est N. Loption ULOG target support active la gestion de la cible ULOG. Cette cible permet denregistrer des messages de dbogage au niveau dun processus de gestion de traces fonctionnant dans lespace utilisateur. La rponse recommande est N. Loption TCPMSS target support active la gestion de la cible TCPMSS, qui permet de modier le champ MSS des paquets TCP. Cette cible est utilise gnralement pour rduire cette taille la valeur xe par le champ MTU des interfaces rseau, an de prvenir la perte de paquets quand cette taille nest pas correctement dnie. Cela peut se produire avec certains fournisseurs daccs Internet, dont les passerelles sont mal congures. En gnral, vous pouvez rpondre N cette question. Loption ARP tables support nest pas documente et ne sera pas dcrite ici. Loption ARP packet filtering nest pas documente et ne sera pas dcrite ici. Loption ipchains (2.2-style) support nest disponible que si lon utilise les modules du noyau pour Netlter. Elle permet dutiliser les outils de conguration des Firewall et des translations dadresses ipchains, qui taient utiliss avec les noyaux 2.2. de Linux. Il sagit donc dune option de compatibilit. On prfrera dornavant la commande iptables, aussi la rponse recommande est-elle N. Loption ipfwadm (2.0-style) support nest disponible que si lon utilise les modules du noyau pour Netlter. Elle permet dutiliser les outils de conguration des Firewall et des translations dadresses ipfwadm, qui taient utiliss avec les noyaux 2.0. de Linux. Il sagit donc dune option de compatibilit. On prfrera dornavant la commande iptables, aussi la rponse recommande est-elle N.

A.12. Menu IPv6: Netlter Conguration


Loption Userspace queueing via NETLINK (EXPERIMENTAL) permet dactiver la gestion des transfert des paquets IPv6 sur un processus utilisateur via linterface NETLINK. La rponse recommande est N. Loption IP6 tables support (required for filtering/masq/NAT) permet dactiver la gestion de Netlter pour le protocole IPv6. La rponse recommande est N. Loption limit match support permet dactiver la gestion des limites sur le nombre de fois par seconde quune rgle peut tre vrie. Cette option permet par exemple dviter dengorger les chiers de traces du systme lorsquun grand nombre de rgles sont vries. La rponse recommande est N. Loption MAC address match support permet dactiver le critre de slection des paquets bas sur les adresses physiques des cartes rseau des machines pour le trage des paquets. La rponse recommande est N. Les options Routing header match support (EXPERIMENTAL) , Hop-byHop and Dst opts header match (EXPERIMENTAL) , Fragmentation header match support (EXPRERIMENTAL) et HL match support ne sont pas documentes et ne seront pas dcrites ici.

384

Annexe A. Options de conguration du noyau Loption Multiple port match support permet dutiliser des plages de valeurs pour les ports TCP et UDP dans les critres de slection des rgles pour ces deux protocoles. La rponse recommande est N. Loption Owner match support (EXPERIMENTAL) permet de slectionner les paquets crs par les processus locaux en utilisant comme critre les identiants de groupe, de processus et dutilisateur de celui qui les a crs. La rponse recommande est N. Loption netfilter MARK match support permet dactiver la gestion du critre de slection des paquets bas sur le champ MARK de leur en-tte. Ce champ peut tre modi par les rgles de la chane mangle, comme pour le protocole IPv4. La rponse recommande est N. Loption IPv6 Extensions Headers Match (EXPERIMENTAL) permet dactiver la gestion du critre de slection des paquets utilisant des extensions IPv6. La rponse recommande est N. Loption AH/ESP match support (EXPERIMENTAL) permet dactiver la slection des paquets des connexions scurises par les extensions AH et ESP. La rponse recommande est N. Loption Packet Length match support permet dactiver la gestion du critre de slection des paquets bas leur taille. La rponse recommande est N. Loption UEI64 address check (EXPERIMENTAL) permet dactiver la vrication de la validit des adresses IPv6 sources. La rponse recommande est N. Loption Packet filtering permet dactiver la gestion de la table filter, an de raliser par exemple un Firewall. La rponse recommande est N. Loption LOG target support active la gestion de la cible LOG. Cette cible permet denregistrer des messages de dbogage dans les chiers de traces du systme. On veillera activer galement la gestion des limites sur les rgles de ltrage an dviter dengorger les chiers de traces si lon dsire utiliser cette option. La rponse recommande est N. Loption Packet mangling permet dactiver la gestion de la table mangle, qui autorise la modication de certains champs des en-ttes des paquets IP. La rponse recommande est N. Loption MARK target support permet de prendre en charge la gestion de la cible MARK, an de marquer les paquets vriant certaines rgles, par exemple pour effectuer un traitement ultrieur. La rponse recommande est N.

A.13. Menu AppleTalk devices


Loption Appletalk interfaces support active la gestion des interfaces rseau Appletalk. Ce sont des interfaces rseau permettant de communiquer sur les rseaux Apple dancienne gnration. La rponse recommande est N. Les options Apple/Farallon LocalTalk PC support et COPS LocalTalk PC support permettent de grer les adaptateurs LocalTalk pour PC. Les options qui suivent permettent de choisir les gestionnaires de priphriques appropris votre matriel. La rponse recommande est N. Loption AppleTalk-IP driver support permet de se connecter un rseau utilisant le protocole IP via un adaptateur rseau AppleTalk. Cette fonctionnalit est exprimentale. La rponse recommande est N. Loption IP to Appletalk-IP Encapsulation support permet dencapsuler les paquets IP dans des paquets AppleTalk. Cette fonctionnalit est utilise par les machines Linux qui nont accs qu un rseau Appletalk. La rponse recommande est N.

385

Annexe A. Options de conguration du noyau Loption Appletalk-IP to IP Decapsulation support permet dextraire les paquets IP encapsuls dans des paquets IP. Cette fonctionnalit est utilise par les machines Linux qui font ofce de passerelles vers Internet pour les machines dun rseau Appletalk. La rponse recommande est N.

A.14. Menu QoS and/or fair queueing


Loption QoS and/or fair queuing permet dactiver les options de conguration des algorithmes qui xent les priorits sur les paquets envoyer sur le rseau. La rponse recommande est N. Les options qui suivent permettent de choisir les algorithmes utiliser pour la dtermination des priorits dmission. Parmi ces algorithmes, on retrouve les algorithmes bass sur la notion de qualit de service, qui peuvent tre activs grce loption QoS support . Les options suivantes permettent de paramtrer les notions attaches la qualit de service.

A.15. Menu Network testing


Ce menu ne comprend que loption Packet Generator (USE WITH CAUTION) , qui permet de gnrer diffrents types de paquets et de les envoyer sur une interface rseau des ns de tests. Cette opration peut tre dangereuse pour la machine locale et les autres machines du rseau, aussi la rponse recommande est-elle N.

A.16. Menu Telephony Support


Loption Linux telephony support permet dactiver la gestion des cartes tlphoniques. Ces cartes permettent de transfrer les communications tlphoniques sur des supports numriques, par exemple en encapsulant les informations sonores sur un rseau TCP/IP. Cette option na rien voir avec un modem, qui fait exactement linverse (transfert des donnes informatiques sur un rseau tlphonique analogique). La rponse recommande est N. Loption QuickNet Internet LineJack/PhoneJack support active la prise en charge des cartes tlphoniques Quicknet. Vous pouvez rpondre Y ou M si vous possdez ce matriel, sinon la rponse recommande est N. Loption QuickNet Internet LineJack/PhoneJack PCMCIA support active la prise en charge des cartes tlphoniques Quicknet connectes sur port PCMCIA. Vous pouvez rpondre Y ou M si vous possdez ce matriel, sinon la rponse recommande est N.

A.17. Menu ATA/IDE/MFM/RLL support


Loption ATA/IDE/MFM/RLL support permet dactiver la gestion des disques durs et autres priphriques IDE. La rponse recommande est Y. Les options spciques chaque type de contrleur sont accessibles dans le sous-menu IDE, ATA and ATAPI Block devices .

386

Annexe A. Options de conguration du noyau

A.18. Menu IDE, ATA and ATAPI Block devices


Loption Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support permet dactiver la gestion des disques IDE. moins que votre ordinateur ne soit compltement SCSI, rpondez par Y ou M cette question. Si vous rpondez par M, il faut que Linux soit install sur un disque SCSI amorable. Il est recommand de rpondre par Y cette question. Loption Use old disk-only driver on primary interface permet dutiliser un vieux pilote pour les disques IDE connects la premire interface IDE et qui poseraient quelques problmes avec le pilote gnral. Seule la premire interface sera concerne par cette option, les autres interfaces utiliseront le nouveau pilote. En gnral, la rponse cette question est N. Loption Include IDE/ATA-2 DISK support permet dutiliser les disques durs IDE et ATAPI. Si lordinateur possde un disque IDE, il est fortement recommand de rpondre Y cette question. On ne doit rpondre N que si lordinateur est compltement SCSI. De plus, on prendra garde au fait que lon ne peut pas mettre les fonctionnalits ncessaires au dmarrage de lordinateur dans des modules. Cela signie que si le disque de dmarrage est un disque IDE, il ne faut pas mettre cette fonctionnalit dans un module. Donc, pour la plupart des gens, il faut rpondre Y cette question. Loption Use multi-mode by default permet dactiver la gestion du mode de transfert multiple par dfaut. Cette option nest ncessaire que pour quelques cas particuliers, aussi la rponse recommande est-elle N. Loption Auto-Geometry Resizing support permet dactiver le support des disques durs de taille suprieure 32 Go sur certaines machines disposant dun BIOS AWARD. La rponse recommande est N. Les options qui suivent permettent dactiver des fonctionnalits spciques aux diffrentes marques de disques durs. Ces options sont rserves aux dveloppeurs des gestionnaires de priphriques IDE et ne doivent pas tre actives. La rponse recommande est donc N. Loption PCMCIA IDE support permet dactiver la gestion des priphriques IDE connects par un port PCMCIA sur les portables. Cette option nest accessible que si vous avez activ la gestion des cartes PCMCIA avec loption CardBus support du menu PCMCIA/CardBus support . La rponse recommande est N. Loption Include IDE/ATAPI CDROM support permet dutiliser les CD-ROM IDE et ATAPI. La plupart des ordinateurs possdent un lecteur de CD-ROM ATAPI actuellement, il est donc recommand dactiver cette fonctionnalit. On essaiera dutiliser cette fonctionnalit sous forme de module de prfrence, parce que cette fonctionnalit nest pas ncessaire en permanence. Cependant, si vous disposez dun graveur de CD-ROM, il est recommand de ne pas activer cette fonctionnalit. Laccs aux priphriques IDE ATAPI se fera alors par lintermdiaire de lmulateur de priphriques SCSI. Si vous disposez dun lecteur de CD-ROM IDE et que ne voulez pas utiliser lmulation SCSI, vous pouvez rpondre Y cette question. Rpondez par N si vous ne possdez pas de lecteurs de CD-ROM IDE et si vous ne voudrez pas en installer un ultrieurement. La rponse recommande est M. Loption Include IDE/ATAPI TAPE support permet dinclure la gestion des priphriques de sauvegarde bande IDE et ATAPI (streamers). Peu de gens disposent de tels priphriques, et ceux qui en ont un ne lutilisent que pour les sauvegardes, il est donc conseill de rpondre par M cette question si vous possdez un tel priphrique, et par N sinon. Loption Include IDE/ATAPI FLOPPY support permet dinclure la gestion des lecteurs de disques amovibles IDE et ATAPI. Cest en particulier le cas pour les lecteurs LS120 et ZIP. Comme les lecteurs de disques amovibles IDE sont assez rares, la rponse recommande est N. Loption SCSI emulation support permet dmuler la prsence dun priphrique SCSI par un priphrique IDE en convertissant les requtes SCSI en requtes ATAPI. Cette fonctionnalit est

387

Annexe A. Options de conguration du noyau utile lorsquon veut utiliser certains logiciels bas niveau qui ne peuvent travailler quavec des priphriques SCSI. Cest en particulier le cas des logiciel de gravage de CD. On notera que cette fonctionnalit ne sera pas activable si le pilote IDE est actif. Il est donc ncessaire dutiliser celui-ci sous la forme de module, ou de ne pas lutiliser du tout. La rponse recommande est N si vous ne disposez pas dun graveur de CD-ROM ATAPI, et Y dans le cas contraire. Loption IDE Taskfile Access permet dactiver lenvoi de commandes directement au niveau du contrleur IDE. La rponse recommande est N. Loption CMD640 chipset bugfix/support permet de contourner un bogue des chipsets IDE CMD640. Vous ne devez activer cette option que si vous disposez dun tel chipset. La rponse recommande est Y si vous avez un tel chipset, et N sinon. Loption CMD640 enhanced support permet lautodtection des paramtre idaux pour les chipsets IDE CMD640. Cette option nest disponible que si vous avez activ le support des chipsets CMD640 dans la question prcdente. La rponse recommande est Y si vous avez un tel chipset, et N sinon. Loption ISA-PNP EIDE support permet de prendre en charge la gestion des cartes ISA Plug and Play prenant en charge des disques EIDE additionnels. Cette option peut tre ncessaire si ces cartes doivent tre initialises avant de chercher utiliser les disques qui y sont connectes. La rponse recommande est N. Loption Generic PCI IDE chipset support permet dactiver la gestion des priphriques IDE sur bus PCI. Vous devez rpondre par Y cette question si vous disposez dune carte mre PCI et de contrleurs IDE. Loption Sharing PCI IDE interrupts support permet dactiver le partage des lignes dinterruptions utilises par les contrleurs IDE avec les cartes prsentes sur le bus PCI. Cette fonctionnalit ncessite un support matriel particulier de la part du contrleur IDE, support qui nest prsent que sur certaines cartes mres. En gnral, lactivation de cette option ne perturbe pas le fonctionnement du systme sur les ordinateurs incapables deffectuer le partage des lignes dinterruptions des contrleurs IDE, mais la rponse recommande reste N. Loption Generic PCI bus-master DMA support permet dactiver la gestion des disques Ultra DMA. La rponse recommande est Y si vous disposez dune carte mre PCI grant lUltra DMA et de disques IDE. Loption Boot off-board chipsets first support permet dinverser la numrotation des disques IDE connects aux contrleurs de la carte mre et des disques IDE connects aux contrleurs additionnels que lon peut avoir sur une carte lle. Il faut rpondre par N cette question. Loption Force enable legacy 2.0.X HOSTS to use DMA permet dactiver une vielle fonctionnalit non documente et ne sera pas dcrite ici. Loption recommande N. Loption Use PCI DMA by default when available permet dactiver la gestion de lUltra DMA au dmarrage. La rponse recommande est Y, sauf si lon veut dsactiver le support de lUltra DMA. Loption Enable DMA only for disks permet de dsactiver les transferts DMA pour les priphriques IDE qui ne sont pas des disques durs. Cette option peut tre active si des priphriques connects ne grent pas correctement les transferts DMA. La rponse recommande est Y. Loption ATA Work(s) In Progress (EXPERIMENTAL) donne laccs des fonctionnalits extrmement exprimentales concernant les disques IDE. La rponse recommande est N. Il suit un certain nombre doptions qui permettent dactiver un support tendu pour diffrents chipsets. Il est recommand de rpondre par N ces questions, sauf celles correspondant aux chipsets effectivement prsents sur votre carte mre.

388

Annexe A. Options de conguration du noyau Loption IGNORE word93 Validation BITS permet dviter une inconsistance dans les spcications du protocole matriel ATAPI. Ces spcications nont pas t claires un endroit, et il existe maintenant des diffrences mineures entre les diffrents chipsets prsents sur le march. Cette option permet de dsactiver cette fonctionnalit ambigu. Bien quil ne soit pas dangereux de rpondre par lafrmative cette question, la rponse recommande reste N. Loption Support for IDE Raid controllers permet dactiver la prise en charge de contrleurs RAID IDE. Les options suivantes correspondent aux diffrents contrleurs RAID pris en charge par Linux. La rponse recommande est N.

A.19. Menu SCSI support


Loption SCSI support permet dactiver la prise en charge des priphriques SCSI. Il faut rpondre par Y ou M cette question si vous disposez de tels priphriques. De plus, si le noyau se trouve sur un disque SCSI ou sil a besoin de composants se trouvant sur le disque SCSI pour samorcer, il ne faut pas mettre en module cette fonctionnalit. Ceux qui nont pas de priphrique SCSI et ne comptent pas en utiliser peuvent rpondre N cette question. En revanche, ceux qui disposent dun priphrique ATAPI pour lequel ils nont pas de gestionnaire de priphriques, et pour lequel ils utilisent la couche dmulation SCSI, doivent activer cette fonctionnalit. Cest en particulier le cas si vous avez un graveur de CD. Dans ce cas, il est recommand de rpondre Y cette question. Mme dans les autres cas, il est conseill de rpondre par M cette question, an de se rserver la possibilit dutiliser ultrieurement un lecteur ZIP connect sur port parallle, qui ncessitera alors le support SCSI. Loption SCSI disk support permet dactiver la gestion des disques durs SCSI. Il ne faut pas rpondre par M si votre systme a besoin dun disque SCSI pour dmarrer. Cette option permet galement de grer les lecteurs ZIP connects sur port parallle. La rponse recommande est donc M. Loption Maximum number of SCSI disks that can be loaded as modules permet de xer le nombre maximal de disques SCSI qui pourront tre utiliss si les gestionnaires de priphriques SCSI du noyau sont chargs en tant que modules. Il est recommand de laisser la valeur par dfaut dans ce champ. Loption SCSI tape support permet dactiver la gestion des priphriques bande SCSI. Notez que les lecteurs de bande OnStream SC-x0 ne sont pas pris en charge par ce pilote gnrique, mais peuvent tre utiliss malgr tout en activant loption suivante SCSI OnStream SC-x0 tape support . Le pilote alors utilis ncessitera la prsence des chiers spciaux de priphrique /dev/osstX, qui utilisent le numro de code majeur 206. La rponse recommande pour ces deux options est N. Loption SCSI CD-ROM support permet dactiver la gestion des CD-ROM SCSI. Vous devez activer cette fonctionnalit galement si vous utilisez lmulation SCSI pour un graveur de CD ATAPI. Si vous tes dans lun de deux ces cas, il est recommand de rpondre Y cette question. Dans tous les autres cas, la rponse recommande est N. Loption Enable vendor-specific extensions (for SCSI CDROM) permet dactiver la gestion de CD-ROM SCSI disposant de commandes SCSI spciques. Cest notamment le cas pour les lecteurs de CD multisessions NEC/TOSHIBA et les graveurs de CD HP. Pour la plupart des utilisateurs, la rponse recommande est N. Loption Maximum number of CDROM devices that can be loaded as modules permet de xer le nombre maximal de lecteurs de CDROM SCSI qui pourront tre utiliss si les gestion-

389

Annexe A. Options de conguration du noyau naires de priphriques du noyau sont chargs en tant que modules. Il est recommand de laisser la valeur par dfaut dans ce champ. Loption SCSI generic support permet dactiver la gestion des priphriques SCSI non standards. Pour ces priphriques, il faut utiliser un programme capable denvoyer les commandes SCSI appropries votre matriel. Il faut activer cette fonctionnalit pour la plupart des priphriques SCSI qui ne sont ni des disques, ni des lecteurs de CD-ROM, ni des lecteurs de bandes. Cest en particulier le cas si vous utilisez un graveur de CD-ROM. Dans ce cas, la rponse recommande est Y. Pour la plupart des utilisateurs, la rponse recommande est N. Loption Enable extra checks in new queueing code permet dactiver des contrles supplmenaires dans les pilotes SCSI. Si une erreur est dtecte, le systme sarrtera en catastrophe immdiatement, limitant ainsi les risques de pertes de donnes ultrieurs. Si vous nactivez pas cette option, le systme continuera fonctionner normalement, mais les dgts risquent dtre beaucoup plus importants terme si une erreur se produit. La rponse recommande est Y. Loption Probe all LUNs on each SCSI device permet deffectuer la dtection de tous les numros logiques dunits SCSI de chaque priphrique. Comme la plupart des priphriques SCSI ne disposent que dun seul numro dunit logique, la rponse recommande est N. Loption Verbose SCSI error reporting (kernel size +=12K) permet dutiliser un jeu de messages derreurs alternatif pour le SCSI. Ces messages sont plus lisibles, mais prennent plus de place dans le noyau. La rponse recommande est N. Loption SCSI logging facility permet dactiver les traces du sous-systme SCSI. La rponse recommande est N.

A.20. Menu SCSI low-level drivers


Ce jeu doptions permet de slectionner les gestionnaires de priphriques bas niveau SCSI adapts votre matriel. Il faut connatre la marque et le modle de votre adaptateur SCSI, ainsi que ses paramtres pour rpondre ces questions. Si vous utilisez lmulation SCSI pour les priphriques ATAPI, il nest pas ncessaire de choisir un gestionnaire bas niveau pour ceux-ci.

A.21. Menu PCMCIA SCSI adapter support


Loption PCMCIA SCSI adapter support permet la prise en charge les priphriques SCSI au format PCMCIA. Les options qui suivent correspondent aux gestionnaires des diffrents types de matriel SCSI au format PCMCIA que Linux est capable de prendre en charge. Vous devez donc choisir les pilotes correspondants votre matriel. La rponse recommande est N.

A.22. Menu Fusion MPT device support


Loption Fusion MPT (base + ScsiHost) drivers permet dactiver la prise en charge de larchitecture Fusion pour les adaptateurs rseau bre optique et les priphriques SCSI parallles. Cette architecture permet de multiplexer ces priphriques pour atteindre des taux de transfert encore plus levs. Ce gestionnaire utilise une carte PCI compatible Fusion MPT pour effectuer les oprations dentre/sortie. Vous pouvez rpondre Y cette question si vous disposez dune telle carte, et rgler le paramtre du nombre maximum de paramtres des oprations dentres / sorties multiples du driver avec loption suivante. La rponse recommande tant N.

390

Annexe A. Options de conguration du noyau Loption Enhanced SCSI error reporting permet dobtenir des informations plus dtailles dans les messages de traces gnrs par le sous-systme SCSI. La rponse recommande est M si vous dsirez avoir cette fonctionnalit. Notez quil nest pas possible, en raison de la taille du noyau que cette option impliquerait, de rpondre Y cette question. La rponse recommande est, en gnral, N. Loption Fusion MPT misc device (ioctl) driver permet dactiver un moyen de contrle supplmentaire sur les adaptateurs MPT par lintermdiaire du chier spcial de priphrique de type caractre /dev/mptctl, dont le code majeur est 10 et le code mineur est 240. La rponse recommande est N. Loption Fusion MPT LAN driver permet dactiver les fonctionnalits rseau des cartes bre optique compatibles Fusion MPT, cest--dire celles bases sur les puces LSIFC9xx. Cette option crera une interface rseau fc0, que lon pourra utiliser comme une interface rseau classique. La rponse recommande est N. Notez que cette fonctionnalit nest disponible que sous la forme de module du noyau, vous ne pourrez donc lactiver quen rpondant par M cette option.

A.23. Menu IEEE 1394 (FireWire) support (EXPERIMENTAL)


Loption IEEE 1394 (FireWire) support (EXPERIMENTAL) permet dactiver la gestion des cartes FireWire. Ces cartes fournissent laccs un bus de donnes extrmement rapide, que lon utilise gnralement pour connecter des priphriques exigeant une bande passante trs leve, comme les camras vido par exemple. La rponse recommande est N. Loption Texas Instruments PCILynx support permet dactiver la gestion des cartes FireWire PCILynx de Texas Instruments. La rponse recommande est N. Loption OHCI-1394 support active la prise en charge des contrleurs IEEE 1394 respectant les spcications OHCI (il sagit dun standard de communication pour les contrleurs). Ce pilote na t test quavec un contrleur de Texas Instruments, mais ce contrleur est lun des plus utiliss du march. La rponse recommande est Y. Loption OHCI-1394 Video support permet dutiliser la capture vido des cartes FireWire. La rponse recommande est Y. Loption SBP-2 support (Harddisks, etc.) permet dactiver la gestion des priphriques SBP-2, qui comprennent les disques durs et les lecteurs de DVD connects sur les bus FireWire. La rponse recommande est Y. Loption Enable Phys DMA support for SBP2 (Debug) nest pas documente et ne sera pas dcrite ici. Loption Ethernet over 1394 permet dutiliser une interface IEEE1394 comme une interface Ethernet. La rponse recommande est N. Loption OHCI-DV I/O support permet dactiver lenvoi et la rception dimages DV par un port IEEE1394 au travers dune interface simplie. La rponse recommande est N. Loption Raw IEEE 1394 I/O support permet aux programmes de communiquer directement avec le matriel IEEE 1394. Cest en gnral le mode de fonctionnement dsir, aussi la rponse recommande cette question est-elle Y. Loption IEC61883-1 Plug support permet dactiver le gestionnaire de connexion IEC618831. La rponse recommande est N.

391

Annexe A. Options de conguration du noyau Loption IEC61883-6 (Audio transmission) support permet dactiver la gestion du protocole de transmission de donnes audio et musicales IEC61883-6 au travers dune interface IEEE1394. La rponse recommande est N. Loption Excessive debugging support est rserve pour les dveloppeurs de gestionnaires de priphriques. Elle permet de stocker sur disque toutes les informations transitant sur le bus FireWire, ce qui sature gnralement les disques durs extrmement rapidement. Il faut rpondre par N cette question.

A.24. Menu I2O support


Loption I2O support permet dactiver la gestion des cartes dentre/sortie I2O. Ces cartes prennent en charge la gestion des entres/sorties de manire uniforme, pour tous les priphriques matriels, et permettent donc dcrire un gestionnaire de priphriques uniforme au niveau du systme dexploitation pour toute une classe de priphrique. Ce gestionnaire, nomm OSM (abrviation de Operating System Module ), communique avec des pilotes spciques chaque type de matriel. Ces pilotes peuvent alors ne faire aucune hypothse sur le systme dexploitation utilis. Ainsi, il est possible dcrire des gestionnaires de priphriques communs tous les systmes dexploitations. La rponse recommande est N. Si vous rpondez par Y, vous devrez choisir le type de carte I2O installe et la liste des pilotes I2O OSM que vous voulez utiliser.

A.25. Menu Network device support


Loption Network device support permet dactiver la gestion des diverses interfaces rseau que Linux peut prendre en charge. On notera que les choix faits pour les protocoles de communication dans le menu Networking options sont ncessaires (la plupart des composants des systmes Unix utilisent les fonctions rseau du systme pour communiquer) mais non sufsants pour accder au monde extrieur. Si lon nactive pas cette option, seuls les processus de la machine locale seront accessibles (par lintermdiaire de linterface rseau loopback ). Pour accder aux autres ordinateurs, que ce soit par une carte rseau, un cble parallle ou srie, ou par modem via un fournisseur daccs Internet, il faut en plus rpondre Y cette question. La rponse recommande est Y. Loption Dummy net driver support permet dactiver la fonctionnalit de rseau virtuel. Cette fonctionnalit fournit une interface virtuelle sur un rseau ne contenant quune seule machine. Cette interface peut tre utilise pour faire croire des programmes rseau que la machine est effectivement connecte un rseau. La rponse recommande est N. Loption Bonding driver support permet de runir plusieurs connexions Ethernet entre deux machines pour simuler une connexion unique, dont la bande passante est la somme des bandes passantes des connexions ainsi regroupes. La rponse recommande est N. Loption EQL (serial line load balancing) support permet dactiver la gestion de connexions multiples sur plusieurs connexions srie (par exemple par lintermdiaire de deux modems). Cette fonctionnalit ncessite galement le support de cette fonctionnalit du ct de la machine distante. La rponse recommande est N. Loption Universal TUN/TAP device driver support permet dactiver la gestion dinterfaces rseau virtuelles tunX et tapX (o X est le numro de chaque interface), dont les donnes peuvent tre lues et crites directement par des applications normales, par lintermdiaire de chiers spciaux de priphriques /dev/tunX et /dev/tapX. Les interfaces de type tun se comportent exactement comme des interfaces rseau point point (elles ne permettent donc de communiquer quavec une seule autre machine), alors que les interfaces de type tap simulent le

392

Annexe A. Options de conguration du noyau fonctionnement dune carte Ethernet classique. Cette fonctionnalit permet donc aux programmes classiques daccder aux paquets routs vers ces interfaces, et de recevoir et denvoyer des donnes brutes sur le rseau. Les interfaces tunX et tapX sont cres dynamiquement, lorsque les programmes qui dsirent les utiliser senregistrent au niveau du systme en ouvrant le chier spcial de priphrique /dev/net/tun, de type caractre et de codes majeur et mineur gaux respectivement 10 et 200. La rponse recommande est N. Loption Ethertap network tap (OBSOLETE) nest active que si loption Kernel/User netlink socket a t active. Elle permet de grer un chier spcial de type bloc et de numro majeur 36 et de numro mineur 16, qui fournit les donnes brutes dune interface Ethernet. Ce chier peut tre utilis par un programme pour envoyer et recevoir des trames Ethernet directement sur ce pseudo priphrique au plus bas niveau. Cette fonctionnalit est devenue obsolte depuis les noyaux 2.4, car ceux-ci proposent le mcanisme plus gnral de loption Universal TUN/TAP device driver support . La rponse recommande est donc N. Loption General Instruments Surfboard 1000 permet dactiver la gestion des cartes Sufboard 1000, qui sont gnralement utilises pour connecter un modem cble lordinateur. Ces modems permettent de recevoir des informations en provenance dInternet haut dbit, mais ne permettent pas denvoyer dinformations destination dInternet. Le canal montant doit donc toujours tre ralis par une liaison tlphonique classique. La rponse recommande est N. Loption FDDI driver support permet dactiver la gestion des cartes Ethernet FDDI. Les options qui suivent permettent de slectionner les gestionnaires de priphriques pour les cartes FDDI gres par Linux. La rponse recommande est N. Loption HIPPI driver support (EXPERIMENTAL) permet la gestion des cartes HIPPI. Les options qui suivent permettent de slectionner les gestionnaires de priphriques pour les cartes de ce type. La rponse recommande est N. Loption PLIP (parallel port) support permet dactiver les connexions par port parallle. Ce type de connexion peut tre utilis pour transfrer des chiers par un cble parallle entre deux ordinateurs. La rponse recommande est N. Loption PPP (point-to-point protocol) support permet dactiver la gestion des connexions PPP. Ces connexions sont utilises pour accder Internet via un modem, ou pour tablir une connexion de manire plus gnrale via un cble srie ou tout autre moyen de communication existant. Il est conseill dactiver le support de ce type de connexion, moins que vous soyez sr de ne jamais vous connecter Internet. La rponse recommande ici est Y. Loption PPP multinlink support (EXPERIMENTAL) permet dutiliser plusieurs lignes PPP pour augmenter la bande passante en les agrgeant. Par exemple, si vous disposez de plusieurs lignes tlphoniques, vous pouvez vous connecter plusieurs fois votre fournisseur daccs et accrotre ainsi votre bande passante. Bien entendu, pour que cette technique fonctionne, il faut que le fournisseur daccs lautorise. La rponse recommande est N. Loption PPP filtering permet dautoriser le ltrage des paquets traversant les interfaces PPP existantes dans le systme. Cette fonctionnalit peut tre utile pour raliser un rewall ou pour effectuer des actions spciques lorsque certains paquets sont reus. La rponse recommande est N. Loption PPP support for async serial ports permet de prendre en charge les communications PPP sur les cbles srie classiques. Cest en gnral loption qui convient lorsquon veut se connecter Internet laide dun modem classique. Notez que cette option nest pas utilisable pour les connexions laide dun modem Numris. La rponse recommande est Y. Loption PPP support for sync tty ports permet de prendre en charge les communications PPP avec les adaptateurs synchones, tels que les cartes SyncLink. La rponse recommande est N.

393

Annexe A. Options de conguration du noyau Loption PPP Deflate compression permet de prendre en charge lalgorithme de compression Deate (le mme algorithme que celui utilis par le programme gzip) pour comprimer les donnes transmises sur les connexions PPP. La rponse recommande est Y. Loption PPP BSD-Compress compression permet de prendre en charge lalgorithme de compression LZW pour comprimer les donnes transmises sur les connexions PPP. Cet algorithme est soumis un brevet de logiciel et son utilisation est suppose tre soumise paiement de droits. Cependant, les brevets de logiciel sont encore illgaux en Europe, et il est tout fait lgal de lutiliser. Les taux de compressions obtenus sont de toutes manires infrieurs ceux de la mthode Deate, aussi la rponse recommande est-elle N. Loption PPP over Ethernet (EXPERIMENTAL) permet de raliser des connexions point point sur un rseau de type Ethernet. La rponse recommande est N. Loption PPP over ATM (EXPERIMENTAL) permet de raliser des connexions point point sur un rseau ATM. La rponse recommande est N. Loption SLIP (serial line) support permet de connecter deux ordinateurs par une ligne srie ou par un modem. Les options suivantes permettent de xer les paramtres des connexions SLIP. Le protocole SLIP est en train de tomber en dsutude et est remplac par PPP. La rponse recommande cette question est donc N. Loption CSLIP compressed headers permet dactiver la compression des en-ttes IP pour le protocole SLIP. La rponse recommande est N. Loption Keepalive and linefill permet dactiver la surveillance de la connexion SLIP. Cette option est utilise sur les connexions SLIP passant par des lignes analogiques de mauvaise qualit. La rponse recommande est N. Loption Six bit SLIP encapsulation permet de faire en sorte que le protocole SLIP nenvoie que des donnes codes sur 6 bits. Cela permet damliorer la qualit des transmissions sur les rseaux peu ables, ou qui ne peuvent pas transfrer plus de 7 bits de donnes. La rponse recommande est N. Loption Fibre Channel driver support permet dactiver la gestion des adaptateurs Fiber Channel. Loption qui suit donne la possibilit de slectionner le gestionnaire de priphriques pour les cartes Interphase base de chipset Tachyon. La rponse recommande est N. Loption Red Creek Hardware VPN (EXPERIMENTAL) permet dactiver la gestion des cartes permettant de crer des rseaux privs virtuels. La rponse recommande est N. Loption Traffic Shaper (EXPERIMENTAL) permet dactiver la possibilit de contrler le dbit maximal de donnes travers une interface rseau. La rponse recommande est N.

A.26. Menu ARCnet devices


Loption ARCnet support permet dactiver la gestion des cartes de type ARCnet. Les options qui suivent correspondent aux diffrents pilotes pour les diffrentes cartes de ce type. Si vous avez une carte de ce type, rpondez par M ou Y cette question et choisissez le pilote correspondant votre matriel dans la suite du menu. La rponse recommande est N.

A.27. Menu Ethernet (10 or 100Mbit)


Loption Ethernet (10 or 100Mbit) permet dactiver la gestion des cartes de type Ethernet. Les options qui suivent correspondent aux diffrents gestionnaires de priphriques pour les diff-

394

Annexe A. Options de conguration du noyau rentes cartes de ce type. Si vous avez une carte de ce type, rpondez par M ou Y cette question et choisissez le gestionnaire de priphriques correspondant votre matriel dans la suite du menu. La rponse recommande est N. La plupart des cartes rseau sont compatibles NE2000. Il existe deux types de pilotes pour ces cartes, selon quelles sont ISA ou non. Le pilote pour les cartes ISA peut tre choisi en activant les options Other ISA cards et NE2000/NE1000 support . Le pilote pour les cartes PCI peut tre slectionn en activant les options EISA, VLB, PCI and on board controllers et PCI NE2000 support and clones support (see help) .

A.28. Menu Ethernet (1000 Mbit)


Les options disponibles dans ce menu permettent de choisir les gestionnaires de priphriques utiliser pour les cartes Ethernet Gigabit. Choisissez loption qui correspond votre matriel si vous en disposez dune.

A.29. Menu Wireless LAN (non-hamradio)


Loption Wireless LAN (non-hamradio) permet dactiver la gestion des connexions sans l (mais qui ne sont pas gres par les fonctionnalits radio-amateur). Les options qui suivent permettent de choisir les gestionnaires de priphriques disponibles. La rponse recommande est N. Loption STRIP (Metricom starmode radio IP) permet dactiver la gestion des adaptateurs rseau radio Metricom. La rponse recommande est N. Loption AT&T WaveLAN & DEC RoamAbout DS support permet dactiver la gestion des adaptateurs rseau radio WaveLAN. La rponse recommande est N. Loption Aironet Arlan 655 & IC2200 DS support permet dactiver la gestion des adaptateurs rseau radio Aironet 655 et IC2200 DS. La rponse recommande est N. Loption Aironet 4500/4800 series adapters permet dactiver la gestion des adaptateurs rseau radio Aironet de la srie 4500/4800. Les options qui suivent correspondent aux diffrents types de cartes de cette srie. Loption Aironet 4500/4800 PROC interface donne la possibilit de congurer ces cartes par lintermdiaire du systme de chiers virtuels /proc/. La rponse recommande est N. Loption Cisco/Aironet 34X/35X/4500/4800 ISA and PCI cards permet dactiver la gestion des cartes rseau radio PCI et ISA Cisco et Aironet. La rponse recommande est N. Les trois options Hermes chipset 802.11b support (Orinoco/Prism2/Symbol) , Hermes PCMCIA card support et Cisco/Aironet 34X/35X/4500/4800 PCMCIA cards permettent dactiver la gestion des cartes rseau radio PCMCIA Cisco et Aironet. Loption Hermes in PLX9052 based PCI adaptor support (Netgear MA301 etc.) permet de connecter une carte Hermes sur un adaptateur PCI/PCMCIA. La rponse recommande est N.

A.30. Menu Token ring devices


Loption Token Ring driver support permet dactiver la gestion des rseaux Token Ring. Les options qui suivent permettent de choisir les gestionnaires de priphriques pour ces adaptateurs. La rponse recommande est N.

395

Annexe A. Options de conguration du noyau

A.31. Menu Wan interfaces


Loption Comtrol Hostess SV-11 support permet dactiver la gestion des cartes Comtrol. La rponse recommande est N. Loption COSA/SRP sync serial boards support permet dactiver la gestion des cartes COSA et SRP. La rponse recommande est N. Loption MultiGate (COMX) synchronous serial boards support permet dactiver la gestion des cartes MultiGate. La rponse recommande est N. Les options qui suivent permettent de paramtrer les fonctionnalits supportes par ce gestionnaire de priphriques. Loption Etinc PCISYNC serial board support (EXPERIMENTAL) permet dactiver la prise en charge des cartes Etinc PCISYNC bases sur la puce Inneon DSCC4. La rponse recommande est N. Loption LanMedia Corp. SSI/V.35, T1/E1, HSSI, T3 boards permet dactiver la gestion des cartes LanMedia. La rponse recommande est N. Loption Aurora Technology, Inc. synchronous asynchronous PCI cards V2 nest pas documente et ne sera pas dcrite ici. Loption Sealevel Systems 4021 support permet dactiver la gestion des cartes Sealevel ACB 56. La rponse recommande est N. Loption SyncLink HDLC/SYNCPPP support permet dactiver le gestionnaire de priphriques Cisco HDLC/PPP pour les cartes SyncLink. Ces cartes peuvent galement fonctionner avec le pilote HDLC gnrique indiqu ci-dessous. La rponse recommande est N. Loption Generic HDLC driver permet dactiver le pilote gnrique pour les adaptateurs WAN. Les options qui suivent permettent de congurer les diffrentes fonctionnalits de cette fonctionnalit. La rponse recommande est N. Loption Frame relay DLCI support permet dactiver la gestion du protocole Frame Relay. Les options qui suivent permettent de congurer le gestionnaire de priphriques. La rponse recommande est N. Loption WAN router drivers permet dactiver les options de menu suivantes, qui donnent la possibilit de faire la conguration des adaptateurs WAN. La rponse recommande est N. Loption Sangoma WANPIPE(tm) multiprotocol cards permet dactiver la gestion des cartes WAN Sangoma. Les options qui suivent permettent de congurer les paramtres pour ce gestionnaire de priphriques. La rponse recommande est N. Loption LAPB over Ethernet driver permet dactiver un gestionnaire de priphriques pour une carte X.25 virtuelle. La rponse recommande est N. Loption X.25 async driver permet dactiver la gestion du protocole X.25 sur une ligne srie normale ou sur un modem. La rponse recommande est N. Loption Granch SBNI12 Leased Line adapter support permet dactiver la gestion des cartes SBNI12-xx. La rponse recommande est N. Loption Multiple line feature support permet dutiliser les cartes SBNI12-xx pour synchroniser les transmissions effectues par lintermdiaire de plusieurs lignes de communication parallles. Cette synchronisation amliore notablement le dbit. La rponse recommande est-elle N.

396

Annexe A. Options de conguration du noyau

A.32. Menu PCMCIA network device support


Loption PCMCIA network device support permet dactiver la gestion des cartes rseau au format PCMCIA. Les options qui suivent correspondent aux divers gestionnaires de priphriques pris en charge par Linux. La rponse recommande est N.

A.33. Menu ATM drivers


Loption ATM over TCP permet dencapsuler ATM sur un rseau TCP/IP. Ce type dencapsulation nest utile qu des ns de test et de dveloppement. La rponse recommande est N. Loption Efficient Networks Speedstream 3010 permet de prendre en charge les cartes ATM Speedstream 3010 dEfcient Networks. La rponse recommande est N. Loption Efficient Networks ENI155P active la gestion des cartes ATM ENI155P dEfcient Networks et Power155 de SMC. Les options qui suivent permettent de congurer ce gestionnaire de priphriques. La rponse recommande est N. Loption Fujitsu FireStream (FS50/FS155) active la gestion des cartes ATM FireStream de Fujitsu. La rponse recommande est N. Loption ZeitNet ZN1221/ZN1225 active la gestion des cartes ATM ZN1221 et ZN1225 de ZeitNet. Les options qui suivent permettent de congurer ce gestionnaire de priphriques. La rponse recommande est N. Loption IDT 77201 (NICStAR) (ForeRunnerLE) active la gestion des cartes ATM bases sur le chipset NICStAR 77201. Les options qui suivent permettent de congurer ce gestionnaire de priphriques. La rponse recommande est N. Loption IDT 77252 (NICStAR II) active la gestion des cartes ATM bases sur le chipset NICStAR 77252. Les options qui suivent permettent de congurer ce gestionnaire de priphriques. La rponse recommande est N. Loption Madge Ambassador (Collage PCI 155 Server) active la gestion des cartes ATM bases sur le chipset ATMizer. Loption qui suit permet dactiver les informations de dbogage de ce gestionnaire de priphriques. La rponse recommande est N. Loption Madge Horizon [Ultra] (Collage PCI 25 and Collage PCI 155 Client) active la gestion des cartes ATM bases sur le chipset Horizon. Loption qui suit permet dactiver les informations de dbogage de ce gestionnaire de priphriques. La rponse recommande est N. Loption Interphase ATM PCI x575/x525/x531 active la gestion des cartes ATM ChipSAR dInterphase. Loption qui suit permet dactiver les informations de dbogage de ce gestionnaire de priphriques. La rponse recommande est N. Loption FORE Systems 200E-series active la gestion des cartes ATM FORE Systems 200E. Les options qui suivent permettent de congurer ce gestionnaire de priphriques. La rponse recommande est N.

A.34. Menu Amateur Radio support


Loption Amateur Radio support permet dactiver la gestion des communications Radio de Linux. Les options qui suivent permettent de prciser les options du protocole rseau utilis pour ces communications. La rponse recommande est N.

397

Annexe A. Options de conguration du noyau

A.35. Menu AX.25 network device drivers


Ce menu permet de choisir les gestionnaires de priphriques bas niveau utiliser pour le support des communications Radio. Il faut choisir le pilote correspondant votre matriel.

A.36. Menu IrDA subsystem support


Loption IrDA subsystem support permet dactiver la gestion des priphriques infrarouges. La rponse recommande est N. Il faut choisir le protocole de communication que vous dsirez dans les options qui suivent. Les dernire options permettent de choisir les options de ces protocoles.

A.37. Menu Infrared-port device drivers


Ces options permettent de choisir les pilotes bas niveau pour les priphriques infrarouges. Vous devez choisir le pilote correspondant votre matriel.

A.38. Menu ISDN subsystem


Loption ISDN support permet dactiver la gestion des interfaces ISDN ( Numris en France). Si vous disposez dune telle interface, la rponse recommande est M, sinon, cest N. Loption Support synchronous PPP permet dutiliser une version de PPP qui ne gre pas les synchronisations dans la communication entre les deux ordinateurs. Cette fonctionnalit nest en effet plus ncessaire avec ISDN, puisque cest un protocole numrique. La rponse recommande est Y. Loption Use VJ-compression with synchronous PPP permet dutiliser lalgorithme de Van Jacobson pour la compression des en-ttes IP dans le protocole PPP synchrone. La rponse recommande est Y. Loption Support generic MP (RFC 1717) permet de regrouper plusieurs connexions ISDN avec le protocole PPP synchrone, et ce an daccrotre la bande passante. La rponse recommande est N. Loption Support BSD compression active la gestion de la compression de donne avec lalgorithme BSD. La rponse recommande est N. Loption Support audio via ISDN permet dactiver la gestion des commandes vocales dans lmulateur de modem du sous-systme ISDN. La rponse recommande est N. Loption Support AT-Fax Class 1 and 2 commands permet dactiver la gestion des commandes vocales des FAX. La rponse recommande est N. Loption X.25 PLP on top of ISDN permet dactiver lencapsulation du protocole X.25 dans le protocole ISDN. La rponse recommande est N.

398

Annexe A. Options de conguration du noyau

A.39. Menu ISDN feature submodules


Loption isdnloop support permet dactiver la gestion dune interface ISDN virtuelle, an de tester la conguration sans effectuer dappel rel. La rponse recommande est N. Loption Support isdn diversion services permet dactiver la gestion de services ISDN supplmentaires. La rponse recommande est N.

A.40. Menu Passive ISDN cards


Loption HiSax SiemensChipSet driver support permet dactiver les options de conguration pour les cartes base de chipsets Siemens. Ce sont les cartes les plus courantes. Les options qui suivent permettent de slectionner le type de matriel correspondant. La rponse recommande est N. Loption Sedlbauer PCMCIA cards permet de prendre en charge le support des cartes PCMCI Sedlbauer Speed Star et Speed Star II. La rponse recommande est N. Loption ELSA PCMCIA MicroLink cards permet de prendre en charge le support des cartes PCMCIA MicroLink de la socit ELSA. La rponse recommande est N. Loption AVM A1 PCMCIA cards permet de prendre en charge le gestionnaire de priphrique pour les cartes A1 et les cartes PCMCIA Fritz! dAVM. La rponse recommande est N. Loption ST5481 USB ISDN modem (EXPERIMENAL) permet de prendre en charge les modems numris ST5481 connects sur port USB. La rponse recommande est N. Loption AVM Fritz!Card PCI/PCIv2/PnP support (EXPERIMENTAL) permet dactiver les cartes PCI et Plug and Play Fritzm dAVM. La rponse recommande est N. Loption Auerswald devices IDSN support permet dactiver la fonctionnalit de modem ISDN des cartes Auerswald. La rponse recommande est N.

A.41. Menu Active ISDN cards


Loption ICN 2B and 4B support permet dactiver le support pour des cartes ISDN fabriques par la socit ICN. La rponse recommande est N. Loption PCBIT-D support permet dactiver la gestion des cartes ISDN fabriques par la socit Octal. La rponse recommande est N. Loption Spellcaster support permet dactiver la gestion des cartes ISDN Spellcaster. La rponse recommande est N. Loption IBM Active 2000 support permet dactiver la gestion des cartes ISDN IBM Active 2000. La rponse recommande est N. Loption Eicon active card support permet dactiver la gestion des cartes Eicon. Les options qui suivent permettent de choisir le gestionnaire de priphriques appropri au matriel dont vous disposez. La rponse recommande est N. Loption Auvertech TurboPAM support permet dactiver la gestion des cartes Auvertech TurboPAM. Un rmware spcial doit galement tre tlcharg dans la carte pour utiliser ce gestionnaire de priphriques. La rponse recommande est N.

399

Annexe A. Options de conguration du noyau Loption CAPI2.0 support permet dactiver la gestion de linterface de programmation CAPI ( Common Application Programming Interface ), permettant aux programmes clients dutiliser de manire uniforme toutes les cartes ISDN. La rponse recommande est Y. Loption Verbose reason code reporting (kernel size +=7K) permet dindiquer le degr de traces utilis par le gestionnaire de priphriques des cartes AVM. La rponse recommande est N. Loption CAPI2.0 Middleware support (EXPERIMENTAL) permet dtendre linterface CAPI pour permettre le transfert des connexions tablies via linterface CAPI vers un terminal classique. La rponse recommande est N. Loption CAPI2.0 /dev/capi support permet de donner laccs linterface CAPI 2.0 aux applications par lintermdiaire dun chier spcial de priphrique /dev/capi20. Lutilisation de ce chier spcial de priphrique ncessite linstallation dune bibliothque de fonctions ddie. La rponse recommande est N. Loption CAPI2.0 filesystem support nest pas documente et ne sera pas dcrite ici. La rponse recommande est N. Loption CAPI2.0 capidrv interface support permet dutiliser les cartes compatibles CAPI avec linterface de programmation ISDN classique. La rponse recommande est N. Les options qui suivent permettent de prendre en charge les cartes AVM et Hyperscope. La rponse recommande est N. Loption Hypercope HYSDN cards (Champ, Ergo, Metro) support (module only) permet de prendre en charge les cartes ISDN actives dHypercope. Cette fonctionnalit ne peut tre active que sous la forme de module du noyau. La rponse recommande est N. Loption HYSDN CAPI2.0 support permet de grer linterface de programmation CAPI 2.0 pour les cartes Hypercope. La rponse recommande est Y.

A.42. Menu Old CD-ROM drivers (not SCSI, not IDE)


Loption Support non-SCSI/IDE/ATAPI CDROM drives permet dactiver la gestion des lecteurs de CD-ROM non SCSI et non IDE. Ce sont essentiellement des vieux lecteurs de CD-ROM, parfois connects sur une carte son par une interface propritaire. Les options qui suivent permettent de choisir le gestionnaire de priphriques qui correspond au matriel dont vous disposez. La rponse recommande est N.

A.43. Menu Input Core Support


Loption Input core support permet dactiver un nouveau mcanisme de gestion des priphriques de saisie et dentre interactifs. Ce mcanisme permettra terme de grer tous les priphriques dentre de manire uniforme, et donc de simplier la gestion des donnes provenant de lutilisateur. Les priphriques dj capables dutiliser ce nouveau mcanisme comprennent les joysticks et certains priphriques USB. Vous devez activer cette fonctionnalit si vous dsirez connecter un joystick, un clavier ou une souris USB sur votre ordinateur. La rponse recommande est N pour les gens qui ne disposent pas de tels priphriques. Loption Keyboard support permet de prendre en charge les claviers USB en redirigeant les donnes provenant de ces claviers vers le traitement classique du clavier de Linux. Si vous disposez dun tel clavier, il ny a normalement rien faire pour lutiliser, puisque le BIOS assure la compa-

400

Annexe A. Options de conguration du noyau tibilit ascendante des claviers USB connects sur les ports USB de la carte mre. Cependant, cette technique ne fonctionne pas pour les claviers connects sur des cartes USB lles, et vous pouvez avoir besoin dactiver la gestion de ces claviers ici. La rponse recommande est N, sauf si vous dsirez connecter un clavier USB sur votre ordinateur et quil ne fonctionne pas nativement. Notez que cette option est incompatible avec loption USB HIDBP Keyboard (basic) support du menu USB support , qui permet de grer les claviers USB dune manire plus lgre an de rduire la taille du noyau dans les systmes embarqus. De la mme manire, loption Mouse support permet de prendre en charge les souris USB en simulant une souris PS/2 classique, via le chier spcial de priphrique /dev/input/mice, de code majeur 13 et de code mineur 63. Ce pilote permet galement daccder aux souris USB via les chiers spciaux de priphriques /dev/input/mouseN, o N est le numro de la souris, et dont les numros de codes majeur et mineurs sont respectivement 13 et 32 63. Ce pilote est galement incompatible avec le pilote simpli que lon peut activer avec loption USB HIDBP Mouse (basic) support du menu USB support . La rponse recommande est N, sauf pour ceux qui disposent dune souris USB. Les options Horizontal screen resolution et Vertical screen resolution permettent de dnir la rsolution horizontale et verticale de lcran, an de permettre lutilisation dune tablette de digitalisation USB comme une souris. Ces deux donnes permettent de faire la conversion entre les coordonnes de la tablette et les coordonnes de lcran. La rponse recommande est N. Loption Joystick support active la prise en charge des joysticks USB et permet aux applications dy accder au travers des chiers spciaux de priphriques /dev/input/jsN, o N est le numro du joystick, et dont les numros de codes majeur et mineurs sont respectivement 13 et 0 31. Notez que cette option nest pas ncessaire pour la prise en charge des joystick non-USB, bien que lactivation de loption Input core support reste obligatoire. La rponse recommande est N. Loption Event interface support active la gestion des chiers spciaux /dev/input/eventN (o N est le numro du priphrique), qui permettent de lire les vnements provenant des priphriques dentre USB de manire gnrique. Ces chiers peuvent tre utiliss par plusieurs priphriques distincts, et permettront terme de connecter plusieurs priphriques dentre sur la mme machine tout en permettant une gestion uniforme de la part des applications. Actuellement, trs peu de programmes utilisent cette fonctionnalit, et il est encore rare de voir des machines plusieurs claviers et plusieurs souris. La rponse recommande est donc N. terme cependant, cette fonctionnalit sera certainement utilise pour permettre lutilisation dune mme machine par plusieurs personnes (il suft pour cela de dvelopper un pilote pour les serveurs X de XFree86 capable de lire les donnes provenant de ces chiers spciaux de priphriques).

A.44. Menu Character devices


Loption Virtual terminal permet dactiver la gestion des terminaux virtuels, accessibles avec les combinaisons de touches ALT+Fx (ou CTRL+ALT+Fx sous XWindow). Il faut au moins un terminal virtuel pour pouvoir utiliser le clavier et lcran de la machine, vous devez donc rpondre Y cette question. Loption Support for console on virtual terminal permet de placer la console systme (les ux standards du noyau, et le login en mode mono utilisateur) sur un terminal virtuel. Si vous rpondez N cette question, la console ne sera pas accessible avec le clavier et lcran, aussi faut-il rpondre Y cette question. Loption Standard/generic (8250/16550 and compatible UARTs) serial support permet dactiver la gestion des ports srie classiques. Vous pouvez vous en passer si vous navez ni

401

Annexe A. Options de conguration du noyau modem ni souris srie, et si vous ne dsirez pas utiliser le port srie du tout. Il est recommand de rpondre Y cette question. Loption Support for console on serial port permet dactiver la redirection de la console systme sur un port srie. En gnral, la console est redirige vers un terminal virtuel, aussi la rponse recommande cette question est-elle N. Loption Extended dumb serial driver options permet dactiver les options de congurations tendues pour les ports srie classiques. La rponse recommande est N. Loption Support more than 4 serial ports permet dactiver la gestion de ports srie additionnels. La rponse recommande est N. Loption Support for sharing serial interrupts permet dactiver la gestion des interruptions de plusieurs ports srie dune mme carte par un seul canal dinterruption. Il faut que la carte srie gre le partage des interruptions pour pouvoir utiliser cette option. La rponse recommande est N. Loption Autodetect IRQ on standard ports (unsafe) permet de demander au noyau de tenter une dtection automatique de la ligne dinterruption utilise par les ports srie. Cette fonctionnalit nest pas trs sre et la rponse recommande est N. Loption Support special multiport boards permet dactiver certaines cartes srie, qui peuvent indiquer quel port srie est en attente de traitement de la part du gestionnaire de priphriques. La rponse recommande est N. Loption Support the Bell Technologies HUB6 card permet dactiver la gestion des cartes HUB6. La rponse recommande est N. Loption Non-standard serial port support permet dactiver les options correspondantes des ports srie non standards. Les options qui suivent permettent de congurer les gestionnaires de priphriques correspondants. La rponse recommande est N. Loption Unix98 PTY support permet dactiver les pseudo terminaux compatibles Unix 98. Les pseudo terminaux sont des composants logiciels permettant dmuler des terminaux. Il y a deux composants par pseudo terminal : la partie matre est le programme qui cherche accder au pseudo terminal, et la partie esclave est le programme qui simule le terminal physique. Les composants matres peuvent ouvrir le pseudo terminal par lintermdiaire des chiers spciaux /dev/ptyxx. En revanche, il existe deux protocoles de nommage des chiers spciaux utiliss par les composants esclaves. Lancienne mthode utilisait les chiers spciaux /dev/ttyxx, mais elle a t remplace par un autre protocole, dans lequel le composant esclave doit dabord ouvrir le chier spcial /dev/ptmx, qui lui donne le numro n de pseudo terminal quil doit simuler, et il ouvre ensuite le chier /dev/pts/n. Ce dernier chier spcial est cr la vole, grce un systme de chiers virtuel. Pour que ce mcanisme fonctionne, il faut que le systme de chiers /dev/pts/ ait t galement choisi parmi les systmes de chiers, et quil soit mont (voir la conguration du chier /etc/fstab). Si vous rpondez Y, loption suivante vous permet de choisir le nombre de pseudo terminaux que vous dsirez que le systme gre. La valeur par dfaut est 256. La rponse recommande est Y. Loption Parallel printer support permet dactiver la gestion des imprimantes connectes sur port parallle. Le fait dactiver cette option nempche pas dutiliser le port parallle pour dautres priphriques. Il est recommand dactiver cette option sous forme de module parce quainsi, les fonctionnalits dimpression ne seront charges que lorsque cela sera ncessaire. La rponse recommande est donc M. Loption Support for console on line printer permet de rediriger les messages destins la console sur une imprimante connecte au port parallle. Ces messages sont alors imprims au l de leau. La rponse recommande est N.

402

Annexe A. Options de conguration du noyau Loption Support for user-space parallel port device drivers active la gestion du chier spcial de priphrique /dev/parport, au travers duquel les programmes peuvent accder de manire uniforme au port parallle. Cette fonctionnalit nest pas ncessaire pour utiliser une imprimante ou des priphriques ATAPI connects sur port parallle, aussi la rponse recommande est-elle N. Loption Texas Instruments parallel link cable support permet de prendre en charge les connexions aux calculatrices Texas Instruments laide dun cble parallle. La rponse recommande est N. Loption pSeries Hypervisor Virtual Console support nest pas documente et ne sera pas dcrite plus en dtail ici. Loption QIC-02 tape support permet dactiver la gestion des lecteurs de cassettes non SCSI du type QIC. Loption suivante permet dindiquer si la conguration dynamique du lecteur doit tre utilise. La rponse recommande pour ces deux questions est N. Loption IPMI top-level message handler permet de prendre en charge la surveillance des capteurs du systme (temprature, voltage, etc.). Les options qui suivent permettent de congurer les fonctionnalits de ce driver. La rponse recommande est N. Loption NatSemi SCx200 GPIO support permet dactiver le support des processeurs NatSemi par lintermdiaire du bus I2C. La rponse recommande est N. Loption AMD 768/8111 Random Number Generator support nest pas documente et ne sera pas dcrite ici. Loption Intel i8x0 Random Number Generator support active la prise en charge des gnrateurs de nombres alatoires prsents sur les cartes mres base de chipsets i8x0 dIntel. La rponse recommande est N. Loption AMD 76x native power management (Experimental) nest pas documente et ne sera pas dcrite plus en dtail ici. Loption /dev/nvram support permet dactiver laccs la mmoire non volatile de lhorloge temps rel. Cette mmoire peut tre accde par lintermdiaire du chier spcial de priphrique /dev/nvram, de code majeur 10 et de code mineur 144. La rponse recommande est N. Loption Enhanced Real Time Clock Support permet dactiver laccs au compteurs de lhorloge temps rel par lintermdiaire du chier spcial de priphrique /dev/rtc, de code majeur 10 et de code mineur 135. Cette option doit tre active si vous disposez dune machine multiprocesseur. La rponse recommande est N. Loption Double Talk PC internal speech card support permet dactiver la gestion du synthtiseur de voix Double Talk. La rponse recommande est N. Loption Siemens R3964 line discipline active la gestion des synchronisations entre les priphriques utilisant le protocole de communication R3964 de Siemens. La rponse recommande est N. Loption Applicom intelligent fieldbus card support active la gestion des cartes Applicom intelligent eldbus . La rponse recommande est N. Loption Sony Vaio Programmable I/O Control Device support permet dactiver la gestion des contrleurs dentre / sortie programmable des portables Sony Vaio. La rponse recommande est N. Loption /dev/agpgart support (AGP support) active la gestion des transferts de donnes acclrs par le bus AGP pour les pilotes de cartes graphiques. Ces transferts peuvent tre pilots au travers du chier spcial de priphrique /dev/agpgart, de code majeur 10 et de code mineur 175. Cette fonctionnalit nest pas ncessaire pour le bon fonctionnement des cartes graphiques AGP,

403

Annexe A. Options de conguration du noyau mais elle permet daccrotre les performances des pilotes 3D. Elle est galement indispensable pour permettre laccs au registre MTRR du processeur permettant de contrler le bus AGP. La rponse recommande est Y si vous disposez dune carte graphique AGP, et N sinon. Les options qui suivent permettent de slectionner le type de chipset utilis par la carte mre, an de dterminer la manire dont le port AGP fonctionne. Si vous avez activ cette fonctionnalit, vous devez choisir loption correspondant votre chipset galement. Loption Direct Rendering Manager (XFree86 DRI support) permet dactiver le support de larchitecture DRI (abrviation de langlais Direct Rendering Infrastructure ) de XFree86. Il existe deux versions de cette architecture, la version courante tant utilise par les versions 4.1 et plus de XFree86. Les gestionnaires de priphriques pour la version 4.0 de XFree86 peuvent tre pris en charge en activant loption Build drivers for old (XFree 4.0) DRM . Quelle que soit la version dont vous ayiez besoin, vous devrez slectionner le type de carte graphique install sur le systme laide des options suivantes. Il va de soi quil ne faut activer les drivers que pour la version de XFree86 qui est installe sur votre systme. La rponse recommande est gnralement N, sauf si vous disposez dune des cartes graphiques listes. Dans ce cas, vous devriez certainement utiliser XFree86 4.3.0, an de bncier des gestionnaires de priphriques les plus rcents. Notez enn que certaines cartes graphiques 3D, bien que parfaitement supportes sous Linux, nutilisent pas les fonctionnalits DRI du noyau. Cest en particulier le cas pour toutes les cartes graphiques base de puce NVidia, pour lesquelles il faut utiliser le module fourni avec le pilote de NVidia. Vous pouvez donc rpondre N cette question si vous disposez dune telle carte graphique. Loption ACP Modem (Mwave) support permet dactiver la prise en charge des Winmodems ACP (galement connu sous le nom Mwave). De tels modems sont intgrs en particulier dans les Thinkpad 600E, 600 et 770 dIBM. La rponse recommande est N.

A.45. Menu I2C support


Loption I2C support permet dactiver la gestion du protocole de communication I2C. Ce protocole de communication est utilis par beaucoup de micro-contrleurs, et peut tre ncessaire pour accder certaines fonctionnalits. En particulier, les cartes dacquisition TV bases sur les puces lectroniques Bt848 ncessitent cette fonctionnalit pour tre utilisables. La rponse recommande est N, sauf si vous disposez dune telle carte. Dans ce cas, la rponse recommande est M. Loption I2C bit-banging interfaces active la gestion des adaptateurs bit-banging . Cette option est ncessaire pour faire fonctionner les cartes dacquisition TV bases sur les puces lectroniques Bt848. La rponse recommande est N, sauf si vous disposez dune telle carte. Les options suivantes activent la gestion des priphriques utilisant cette interface. Il nest pas ncessaire de les activer pour faire fonctionner les cartes dacquisition TV base de Bt848. La rponse recommande pour ces options est N. Loption I2C PCF 8584 interfaces active la gestion des adaptateurs PCF. Les options suivantes permettent dactiver les priphriques utilisant cette interface. Les rponses recommandes ces questions sont N. Loption I2C device interface active la gestion des chiers spciaux de priphriques /dev/i2c-*. La rponse recommande est N. Loption I2C /proc interface (required for hardware sensors) permet dajouter des entres dans le systme de chiers /proc/ pour le sous-systme I2C. La rponse recommande est N.

404

Annexe A. Options de conguration du noyau

A.46. Menu Mice


Loption Bus Mouse Support active la prise en charge des souris bus. Ces souris sont des souris connectes sur des bus spciques, comme par exemple sur une carte graphique. Cette option permet dinclure le pilote gnrique de ce type de souris, les pilotes spciques pouvant tre slectionns avec les options suivantes. La rponse recommande est N, sauf si vous disposez dune telle souris. Loption ATIXL busmouse support permet dactiver la gestion des souris bus connectes sur certaines cartes graphiques ATI. La rponse recommande est N. Loption Logitech busmouse support permet de grer les souris bus Logitech. Attention, les souris Logitech connectes sur port PS/2 ne sont pas des souris bus et ne sont pas gres par ce pilote. La rponse recommande est N. Loption Microsoft busmouse support permet de grer les souris bus Microsoft. Attention, les souris Microsoft connectes sur port PS/2 ne sont pas des souris bus et ne sont pas gres par ce pilote. La rponse recommande est N. Loption Mouse Support (not serial and bus mice) permet dactiver la gestion des souris qui ne sont connectes ni au port srie, ni sur un bus souris. Si vous disposez dune souris srie ou dune souris bus, vous devez rpondre N cette question. Sinon, la rponse recommande est Y. Loption PS/2 mouse (aka "auxiliary device") support permet de grer toutes les souris connectes sur un port PS/2, quelles que soit leur marque. La plupart des souris vendues actuellement sont de ce type. La rponse recommande est donc Y. Loption C&T 82C710 mouse port support (as on TI Travelmate) permet de grer les souris pour Travelmate. Ces souris sont des souris PS/2 particulires ces ordinateurs. Il est recommand dessayer le pilote PS/2 gnrique avant de choisir celui-ci, aussi faut-il rpondre N cette question en gnral. Loption PC110 digitizer pad support permet dactiver la gestion de lmulation souris pour les touchpads PC110. La rponse recommande est N. Loption MK712 touch screen support nest pas documente et ne sera pas dcrite ici.

A.47. Menu Joystick support


Loption Jostick support permet dactiver les options de gestion des joysticks. Les options suivantes correspondent aux gestionnaires des diffrents types de joysticks supports. La rponse recommande est N.

A.48. Menu Watchdog cards


Loption Watchdog Timer Support permet dactiver la dtection des blocages systmes grce un chien de garde. Le chien de garde exige un accs en criture sur le chier spcial de priphrique /dev/watchdog, de code majeur 10 et de code mineur 130, au moins une fois par minute. Si cette condition nest pas vrie, la machine est redmarre automatiquement. La gestion de cette fonctionnalit peut tre ralise matriellement grce une carte spciale, ou logiciellement. La rponse recommande est N. Loption Disable watchdog shutdown on close permet de maintenir lactivit du chien de garde mme si le processus qui le rveille rgulirement ferme le chier /dev/watchdog. Ce nest

405

Annexe A. Options de conguration du noyau pas le cas si la rponse N est donne, dans ce cas, le chien de garde ne fonctionnera plus en cas darrt du processus de surveillance. La rponse recommande est N. Loption Acquire SBC Watchdog Timer permet dactiver la gestion des chiens de garde des PSC-6x86 Single Board Computer dAcquire Inc. La rponse recommande est N. Loption Advantech SBC Watchdog Timer permet dactiver la gestion des chiens de garde Advantech. La rponse recommande est N. Les options ALi M7101 PMU on ALi 1535D+ Watchdog Timer et ALi M7101 PMU Watchdog Timer permet dactiver la gestion des chiens de garde M7101 PMU dALi prsents sur les serveurs Cobalt bass des x86. La rponse recommande est N. Loption AMD "Elan" SC520 Watchdog Timer permet dactiver la gestion des chiens de garde "Ekab" SC520 dAMD utiliss gnralement dans les systmes embarqus. La rponse recommande est N. Loption Berkshire Products PC Watchdog permet dactiver la gestion des cartes Berkshire. La rponse recommande est N. Loption Eurotech CPU-1220/1410 Watchdog Timer permet dactiver la gestion des chiens de garde Eurotech CPU-1220/1410. La rponse recommande est N. Loption IB700 SBC Watchdog Timer permet de prendre en charge les cartes mres IB700 Single Board Computer. La rponse recommande est N. Loption ICP ELectronics Wafer 5823 Watchdog permet dactiver la gestion des chiens de garde ICP Wafer 5823. La rponse recommande est N. Loption Intel i810 TCO timer / Watchdog permet dactiver la gestion des chiens de garde matriels intgrs dans les chipsets i810 et i815 dIntel. Ces chiens de garde peuvent surveiller lactivit du systme rgulirement et contrler sa temprature. La rponse recommande est N. Loption Mixcom Watchdog permet dactiver la gestion des chiens de garde Mixcom. La rponse recommande est N. Loption SBC-60XX Watchdog Timer permet dactiver la gestion des chiens de garde des ordinateurs disposant dune carte mre SBC 6010. La rponse recommande est N. Loption SC1200 Watchdog Timer (EXPERIMENTAL) permet de prendre en charge les cartes PC87307 et PC97307 des SC1200. La rponse recommande est N. Loption NatSemi SCx200 Watchdog permet dactiver le support des chiens de garde des processeurs NatSemi. La rponse recommande est N. Loption Software Watchdog permet dactiver la gestion du chien de garde logiciel. La rponse recommande est N. Loption W82877F (EMACS) Watchdog Timer permet de prendre en charge les chiens de garde des ordinateurs disposant dune carte mre EMACS PC-104. La rponse recommande est N. Loption WDT Watchdog timer permet dactiver la gestion des cartes WDT. Pour les cartes PCI, vous devrez galement activer loption WDT PCI Watchdog timer . Ces cartes ne pouvant pas tre congures automatiquement, vous devrez spcier manuellement le port et la ligne dinterruption laide du paramtre du noyau wdt lors du dmarrage du systme. Si vous rpondez Y ou M, vous pourrez spcier les fonctionnalits de cette carte laide des options WDT501 features et Fan Tachometer . La rponse recommande est N. Les options WDT501 features et Fan Tachometer permettent de spcier les paramtres du systme surveills par les cartes WDT : temprature et vitesse du ventilateur. La rponse recommande est N.

406

Annexe A. Options de conguration du noyau Loption ZF MachZ Watchdog permet dactiver la gestion du pilote pour les chiens de garde ZF Micro MachZ. La rponse recommande est N. Loption AMD 766/768 TCO Timer/Watchdog nest pas documente et ne sera pas dcrite plus en dtail ici.

A.49. Menu Ftape, the oppy tape device driver


Loption Ftape (QIC-80/Travan) support permet dactiver les options de gestion des lecteurs de bandes connects sur le contrleur de disquettes. Si vous avez un tel priphrique, rpondez Y ou M. Sinon, rpondez N. Loption Zftape, the VFS interface permet dinclure la gestion des systmes de chiers virtuel dans le pilote ftape. Il faut imprativement activer cette option, faute de quoi le priphrique sera inutilisable. Rpondez par Y cette question si vous avez activ la fonctionnalit ftape. Loption Default block size permet de spcier la taille par dfaut des blocs utiliss par les programmes darchivage. La valeur 10240 correspond la taille des blocs utilise par GNU tar, cest la valeur recommande. Loption Number of ftape buffers (EXPERIMENTAL) est exprimentale et il est trs dconseill de la modier. La valeur par dfaut est 3. Loption Enable procfs status report (+2kb) permet de gnrer un rpertoire ftape/ dans le systme de chiers virtuel /proc/. Ce rpertoire contient des informations concernant ltat courant du pilote ftape. La rponse recommande cette question est N. Loption Debugging output permet de xer la quantit de traces que le pilote ftape gnre. La valeur recommande est Normal . Loption Floppy tape controllers permet de slectionner le type de contrleur de disquettes. La valeur recommande est Standard . Si vous choisissez un autre type de contrleur, vous devrez spcier les paramtres matriels pour ce contrleur dans les trois options qui suivent. Loption Default FIFO threshold (EXPERIMENTAL) est exprimentale et ne doit pas tre modie. La valeur recommande est 8. Loption Maximal data rate to use (EXPERIMENTAL) permet de rduire la vitesse maximale de transfert utiliss par le pilote ftape. Cette option est exprimentale et ne doit pas tre modie. La valeur par dfaut est 2000.

A.50. Menu PCMCIA character device support


Les options de ce menu permettent dactiver la gestion des cartes PCMCIA de type srie, comme par exemple les modems, les ports srie et les cartes rseau intgrant un modem. La rponse recommande ces options est N.

A.51. Menu Multimedia devices


Loption Video For Linux permet dactiver les options de gestion de la vido et de radio sous Linux. Il faut activer cette option pour accder aux deux menus suivants, qui permettent de choisir les

407

Annexe A. Options de conguration du noyau pilotes adapts au type de matriel vido install et les options de conguration pour certains de ces pilotes. La rponse recommande est N.

A.52. Menu Video For Linux


Loption V4L information in proc filesystem permet dinclure des informations complmentaire sur ltat de linterface Vido pour Linux dans le systme de chiers /proc/. La rponse recommande est Y. Loption I2C on parallel port permet dutiliser le port parallle comme interface I2C pour les contrleurs vido qui reconnaissent ce protocole. La rponse recommande est N. Les options qui suivent permettent de choisir les pilotes pour les diffrents types de cartes dacquisition vido. Vous devez activer la fonctionnalit correspondant au matriel dont vous disposez. En gnral, il est recommand dutiliser les pilotes sous forme de modules, car certains dentre eux ne sont pas capables de faire la distinction entre les diffrents modles de cartes qui utilisent la mme lectronique, et il faut leur communiquer ces informations sous la forme de paramtres lors de leur chargement. Cest en particulier le cas pour les cartes vido bases sur la puce lectronique Bt848 et les puces qui en sont drives. Notez que, contrairement ce quindique laide de loption Zoran ZR36057/36060 Video For Linux , les cartes dacquisition et de compression vido analogiques DC30 et DC30+ ne sont pas gres.

A.53. Menu Radio Adapters


Les options proposes par ce menu vous permettront dactiver les pilotes pour les diffrentes cartes radio supportes par Linux. Vous devez activer le pilote correspondant votre matriel, et ventuellement spcier les paramtres matriels de cette carte. La rponse recommande ces questions est N.

A.54. Menu File systems


Loption Quota support permet dactiver la gestion des quotas de disque utilis par utilisateur. Cette fonctionnalit nest disponible que pour les systmes de chiers EXT2. La rponse recommande est N. Loption Kernel automounter support permet deffectuer le montage des disques NFS automatiquement (cest--dire la demande) au niveau du noyau. La rponse recommande est N. Loption Kernel automounter version 4 support (also supports v3) permet dactiver la nouvelle version du montage automatique des systmes de chiers NFS. La rponse recommande est N. Les options qui suivent permettent de prendre en compte les systmes de chiers de diffrents systmes dexploitation. Parmi ces systmes, certains sont encore en cours de dveloppement et ne fonctionnent pas trs bien. Cela signie quil est trs dconseill dutiliser ces gestionnaires pour crire des donnes sur ces systmes de chiers : de trs grosses pertes de donnes peuvent sensuivre. En particulier, il ne faut surtout pas utiliser le systme de chiers NTFS en criture : les dveloppeurs de cette partie du noyau sont, encore actuellement, certains quil dtruira le systme de chiers. En revanche, les systmes de chiers qui sont compltement grs peuvent tre utiliss sans risque. Cependant, ils peuvent ne pas tre assez puissants pour stocker les informations de chiers ncessaires

408

Annexe A. Options de conguration du noyau tout systme Unix. Dans ce cas, le systme de chiers ne peut tre utilis que pour stocker des donnes dapplications, pas le systme lui-mme. Cest en particulier le cas de la FAT. An de corriger les limitations de ce systme de chiers, une extension nomme UMSDOS a t dveloppe. Cette extension stocke dans chaque rpertoire un chier cach dcrivant les droits Unix, et rend ainsi la FAT exploitable sous Linux. Cette fonctionnalit est trs intressante si lon veut installer Linux sur une partition dj formate en FAT. Il faut prendre garde cependant au fait que les performances seront alors dplorables (les accs disques sont plus lents dans un facteur 2 3). Le problme de performances se pose dailleurs pour tous les systmes de chiers qui ont t intgrs Linux mais qui ne sont pas natifs. Ainsi, mme sans utiliser UMSDOS, la FAT32 est deux fois plus lente que les systmes de chiers natifs. Le systme de chiers le plus utilis actuellement sous Linux est EXT2, qui offre la fois la scurit, les fonctionnalits et les performances. Loption Ext3 journalling file system support (EXPERIMENTAL) permet dactiver les fonctionnalits de journalisation de ce systme de chiers (il sagit dans ce cas dun systme de chiers EXT3). Un autre systme de chiers journalis extrmement performant est le systme de chiers ReiserFS, dont on pourra activer le support par lintermdiaire de loption Reiserfs support . Il est fortement recommand dutiliser lun des ces systmes de chiers, car il sagit des systmes de chiers de loin les plus courants sous Linux. Il est impratif de compiler le pilote du systme de chiers racine dans le noyau. Si cela nest pas fait, le noyau ne pourra pas monter le systme de chiers racine et se terminera en afchant le message kernel panic . Il ne faut pas compiler ce systme de chiers en tant que module, pour les mmes raisons. La rponse recommande pour loption Second extended fs support est donc Y et rien dautre si vous utilisez ce systme de chiers pour votre systme de chiers racine (vous devrez galement rpondre Y loption Ext3 journalling file system support (EXPERIMENTAL) si ce systme de chiers est en EXT3). De mme, vous devrez rpondre Y et non M loption Reiserfs support si votre systme de chiers racine est de type ReiserFS. Certains systmes de chiers ncessitent le support de systmes de chiers de base. En particulier, les systmes de chiers VFAT (qui gre la FAT32), MSDOS fs (qui gre les partitions DOS 12 et 16 bits) et UMSDOS exigent tous trois le support du systme de chiers DOS FAT en gnral. Pour utiliser ces systmes de chiers, on devra donc activer loption DOS FAT fs support . De mme, pour lire les CD-ROM au format Joliet (lextension Microsoft au format ISO 9660 pour supporter les noms longs sous Windows), il faudra activer loption ISO 9660 CDROM file system support .De toutes faons, il est fortement recommand de grer ce systme de chiers si lon veut utiliser des CD-ROMs. Quatre systmes de chiers sont virtuels. Ils ne correspondent aucun support physique, et leur arborescence est cre uniquement en mmoire, la vole, par le noyau. Il sagit du systme de chiers /proc/ (option /proc file system support ), qui fournit des informations dynamiquement sur ltat du systme, du systme de chiers /dev/ (option /dev file system support (EXPERIMENTAL) ), qui permet de grer les chiers spciaux de priphriques la vole, du systme de chiers /dev/pts/ (option /dev/pts file system for Unix98 PTYs ), qui permet de crer des chiers spciaux de priphriques la demande pour les pseudo terminaux et du systme de chiers /dev/shm/ (option Virtual memory file system support (former shm fs) ), qui permet de grer les segments de mmoire partage POSIX. Il est fortement recommand dactiver la gestion des systmes de chiers /proc/, /dev/pts/ et /dev/shm/, car ils sont utiliss par beaucoup de programmes. Le systme de chiers /dev/ pourra tre utilis sur les systmes embarqus ou les disquettes de dmarrage, pour lesquels la taille prise par le rpertoire /dev/ peut tre gnante. Dans ce cas, on aura intrt raliser le montage automatique de ce systme de chiers laide de loption Automatically mount at boot .

409

Annexe A. Options de conguration du noyau

A.55. Menu Network File Systems


Loption Coda file system support (advanced network fs) permet dactiver le support du systme de chiers rseau Coda, qui donne accs aux priphriques par le rseau comme sils taient branchs sur la machine locale. Cette option active les fonctionnalits clientes au niveau du noyau, mais il faut galement des outils complmentaires pour implmenter les fonctions serveurs. La rponse recommande est N. Loption InterMezzo file system support (replicating fs) (EXPERIMENTAL) permet dactiver le systme de chiers rseau InterMezzo, qui permet de travailler sans connexion permanente et qui assure la cohrence des chiers des diffrentes machines par rplication. La rponse recommande est N. Loption NFS file system support permet dactiver le support NFS classique en tant que machine cliente. NFS est moins puissant que Coda, mais est cependant le plus rpandu. Il lui est donc encore prfrable pour linstant. La rponse recommande est Y. Loption Provide NFSv3 client support permet dactiver le support de la version 3 du protocole NFS en tant que machine cliente. La rponse recommande est N. Loption Root file system on NFS permet dindiquer au noyau que le systme de chiers racine est plac sur un serveur NFS. Dans ce cas, le noyau se connectera automatiquement ce serveur pour monter le systme de chiers racine. Pour raliser ce type de montage, il faut avoir rpondu Y la question IP: kernel level autoconfiguration , an que les couches rseau soient congures au niveau du noyau lors du dmarrage du systme. La rponse recommande est N. Loption NFS server support permet dactiver le support NFS en tant que machine serveur. La rponse recommande est N. Loption Provide NFSv3 server support permet dactiver le support de la version 3 du protocole NFS en tant que serveur. La rponse recommande est N. Loption Provide NFS server over TCP support (EXPERIMENTAL) permet dactiver le support du protocole NFS encapsul dans le protocole de communication TCP. La rponse recommande est N. Loption SMB file system support (to mount WfW shares, etc.) permet daccder aux rpertoires partags par les machines fonctionnant sous Windows. Cette fonctionnalit nest possible que si les postes Windows utilisent TCP/IP comme protocole de rseau de base, et non NetBIOS. La rponse recommande est Y. Les Use a default NLS et Default Remote NLS Option permettent de spcier une page de codes par dfaut pour lire les noms de chiers et de rpertoires partags par le serveur. La rponse recommande est N. Loption NCP file system support (to mount NetWare volumes) permet daccder aux volumes NetWare. Cette fonctionnalit ncessite la gestion dIPX au niveau de la machine Linux. On notera quil est inutile dactiver cette fonctionnalit si lon dsire faire en sorte que la machine Linux soit serveur de chiers Novell. Les options qui suivent permettent de paramtrer les accs aux volumes NetWare (scurit, verrous sur les chiers, droits daccs...). La rponse recommande est N.

A.56. Menu Partition Types


Certains systmes utilisent un format diffrent pour les tables de partitions que le format utilis par le BIOS des PC. Pour lire les donnes stockes sur les disques partitionns par ces systmes sur des

410

Annexe A. Options de conguration du noyau machines darchitecture diffrente, vous devez activer une gestion spciale des tables de partitions. Les options de ce menu permettent dactiver la gestion des tables de partitions de ces systmes. La rponse recommande ces questions est N.

A.57. Menu Native Language Support


Les options fournies ici permettent de choisir les pages de codes utiliser pour les jeux de caractres dans les systmes de chiers. Ces pages de codes doivent tre choisies en fonction de la langue dinstallation du systme. Les pages de codes recommandes pour un systme franais sont les suivantes :

Codepage 437 (United States, Canada) , indispensable en raison de la majorit des programmes provenant des tats Unis ; Codepage 850 (Europe) , pour les caractres accentus europens ; NLS ISO 8859-1 (Latin 1; Western European Languages) pour les caractres accentus europens sur les CDROMs ; NLS ISO 8859-15 (Latin 9; Western European Languages with Euro) pour les caractres accentus europens sur les CDROMs, y compris quelques caractres additionnels non grs par la page de code ISO 8859-1 ; NLS UTF8 , pour les caractres encods en ISO10686 (dont Unicode est un sous-ensemble). Cette option est ncessaire pour certains systmes de chiers qui travaillent en Unicode, comme NTFS par exemple.

Pour toutes les autres pages de codes, la rponse recommande est N. Loption Default NLS Option permet de choisir la page de code par dfaut utiliser parmi celles qui ont t choisies. La rponse recommande est iso8859-1 .

A.58. Menu Console drivers


Loption VGA text console permet dutiliser les modes texte VGA pour lafchage en mode texte. La rponse cette question est Y. Loption Video mode selection support permet de choisir le mode texte utiliser au dmarrage de Linux. Ce mode peut tre indiqu grce un paramtre pass au noyau lors du dmarrage. La rponse recommande est Y. Loption MDA text console (dual-headed) (EXPERIMENTAL) permet dactiver le support de lafchage multiple ralisable laide dune carte MDA et dune carte VGA. Cette option ne doit tre choisie que si la carte MDA est la carte dafchage principale. La rponse recommande est N.

A.59. Menu Frame-buffer support


Loption Support for frame buffer devices (EXPERIMENTAL) permet dactiver le support des cartes graphiques par lintermdiaire dune interface unie et dune zone mmoire nomme

411

Annexe A. Options de conguration du noyau frame buffer , accessible via les chiers spciaux /dev/fb*. Cette interface permet aux programmes daccder aux fonctionnalits des cartes graphiques de manire portable. Le support de cette fonctionnalit nest en gnral pas ncessaire pour les PC, puisque beaucoup de serveurs X ont t dvelopps pour cette plate-forme et que, dans le pire des cas, un serveur X bas sur le standard VESA 2.0 est disponible. Cependant, pour les autres plates-formes, ou si vous disposez dune carte graphique exotique, il peut tre utile dactiver cette fonctionnalit et dutiliser un serveur X bas sur cette interface. Les options qui suivent permettent dinclure les pilotes pour diffrentes cartes graphiques. Vous trouverez de plus amples informations sur ces options dans la huitime partie de ce document. La rponse recommande est N. Notez que la plupart de ces pilotes ne sont pas ncessaires pour les architectures PC et ne doivent en aucun cas tre slectionnes (mme si lon dsire utiliser les fonctionnalits Frame buffer du noyau). Pour utiliser le frame buffer sur un PC, il faut dabord essayer loption Support for frame buffer devices (EXPERIMENTAL) seule, avec les polices de caractres que vous dsirez utiliser. Loption Virtual Frame Buffer support (ONLY FOR TESTING!) (EXPERIMENTAL) permet dactiver la gestion dune carte graphique virtuelle en mmoire seulement. Ce pilote consomme normment de ressources et ne doit tre utilis que pour tester des applications bases sur cette interface. La rponse recommande est N. Loption Advanced low level driver options permet dactiver les options permettant de xer certains paramtres bas niveau. Ces paramtres peuvent tre xs grce aux options suivantes. En particulier, les formats de pixels grs, ainsi que les polices de caractres utiliser peuvent tre prciss. Vous trouverez de plus amples informations sur ces options dans le Chapitre 10. La rponse recommande est N.

A.60. Menu Sound


Loption Sound card support permet dactiver la gestion des cartes son. Si vous ne disposez pas de carte son, choisissez la rponse N, sinon, activez cette fonctionnalit. Les options qui suivent permettent de choisir les pilotes pour les cartes son non standards. Ces pilotes grent les cartes son correctement mais ne fournissent pas exactement la mme interface de programmation que le standard actuel sous Linux quest OSS (abrviation de langlais Open Sound System ). Certaines fonctionnalits ne seront donc pas accessibles de manire standard avec ces cartes. Vient ensuite loption OSS sound modules , qui permet dactiver la slection des pilotes compatibles avec linterface OSS. Les options qui suivent celle-ci permettent de choisir et de congurer les pilotes pour les cartes son compatibles. Il est recommand dutiliser les pilotes OSS si possible. Notez quune certain nombre de pilotes ont galement t dvelopps dans le cadre de larchitecture ALSA (abrviation de langlais Advanced Linux Sound Architecture ). Si vous ne trouvez pas de pilote appropri votre matriel ici, vous pouvez essayer dinstaller les pilotes dALSA. Notez enn que le gestionnaire de priphriques pour le son des cartes dacquisition TV bases sur la puce Bt848 se situe parmi les pilotes OSS (option TV card (bt848) mixer support ). Vous devez donc lintgrer sous forme de module si vous disposez dune telle carte.

A.61. Menu USB support


Loption Support for USB permet de prendre en charge les priphriques USB sous Linux. La rponse recommande est Y.

412

Annexe A. Options de conguration du noyau Loption USB verbose debug message permet de demander aux gestionnaires de priphriques USB denvoyer des informations de dbogage dans les chiers de traces du systme. La rponse recommande est N. Loption Preliminary USB device filesystem active la gestion des informations sur les ports USB dans le systme de chiers virtuels /proc/. Ces informations comprennent en particulier la liste des priphriques connects sur le bus USB. La rponse recommande est Y. Loption Enforce USB bandwidth allocation (EXPERIMENTAL) active la gestion de la bande passante du bus USB entre les diffrents priphriques qui y sont connects. Cette option est exprimentale, et la rponse recommandes est N. Les quatre options suivantes ( EHCI HCD (USB 2.0) support (EXPERIMENTAL) , UHCI (Intel PIIX4, VIA, ...) support , UHCI Alternate Driver (JE) support et OHCI (Compaq, iMacs, OPTi, SiS, ALi, ...) support permettent dinclure les pilotes pour les diffrents types de contrleurs USB. La premire option permet dactiver le support de lUSB 2.0, alors que les autres prennent en charge les ports USB classiques. On recense pour ceux-ci deux diffrents types de contrleurs : les contrleurs UHCI (abrviation de langlais Universal Host Controller Interface ) et les contrleurs OHCI (abrviation de Open Host Controller Interface ). Les contrleurs UHCI sont fabriqus par Intel et VIA essentiellement, alors que les contrleurs OHCI sont prsents sur les chipsets non Intel (Compaq, SiS, Aladdin). Vous devez choisir le pilote appropri au chipset de votre carte mre. Pour les contrleurs UHCI, vous avez le choix entre deux pilotes. Notez que la prise en charge de lUSB 2.0 nest pas exclusive de celle de lUSB classiques, les contrleurs USB 2.0 tant gnralement fournis avec des contrleurs USB auxiliaires permettant daccder aux anciens priphriques USB. Les gestionnaire de priphrique pour les contrleurs USB 2.0 ne prennant en charge que les contrleurs USB 2.0, vous devrez galement inclure le gestionnaire de priphriques adquat pour vos priphriques USB classiques si vous dsirez y accder. Loption USB Audio support permet de prendre en charge les priphriques audio connects sur le port USB, comme des hauts-parleurs par exemple. La rponse recommande est N. Loption EMI 2|6 USB Audio interface support permet de prendre en charge le tlchargement dynamique du rmware des interfaces audio USB Emagic EMI 2|6. Une fois le code du rmware charg, ces interfaces sont utilisables comme des interfaces audio USB classiques. La rponse recommande est N. Loption USB Bluetooth support (EXPERIMENTAL) active la gestion des priphriques USB Bluetooth (capables deffectuer des transmissions sans l). La rponse recommande est N. Loption USB MIDI support active la gestion des priphriques MIDI connects sur port USB. La rponse recommande est N. Loption USB Mass Storage support active la gestion des priphriques USB de masse (lecteurs de CD, clefs USB, etc.). La rponse recommande est N. Loption USB Mass Storage verbose debug permet de demander au gestionnaires de priphriques USB de masse de gnrer des messages de dbogage dans les chiers de traces du systme. La rponse recommande est N. Loption Datafab MDCFE-B Compact Flash Reader support est rserve pour activer des fonctionnalits extrmement exprimentales au niveau des gestionnaires de priphriques USB. La rponse recommande est N. Loption Freecom USB/ATAPI Bridge support permet de grer les passerelles entre le bus USB et les priphriques ATAPI connects sur ce bus. La rponse recommande est N. Loption ISD-200 USB/ATA Bridge support permet dutiliser les priphriques de stockage utilisant le pont SUB/ATA ISD-200. La rponse recommande est N.

413

Annexe A. Options de conguration du noyau Loption Microtech CompactFlash/SmartMedia support permet de prendre en charge les priphriques de lecture des cartes ash Microtech CompactFlash/SmartMedia. La rponse recommande est N. Loption HP CD-Writer 82xx support permet dutiliser les graveurs externes HP CD-Writer 82xx connects sur port USB. La rponse recommande est N. Loption SanDisk SDDR-09 (and other SmartMedia) support) permet de prendre en charge les cartes ash SmartMedia SDDR-09 de Sandisk au niveau du gestionnaire de priphriques de stockage USB. La rponse recommande est N. Loption SanDisk SDDR-55 SmartMedia support permet de prendre en charge les cartes ash SmartMedia SDDR-55 de Sandisk au niveau du gestionnaire de priphriques de stockage USB. La rponse recommande est N. Loption Lexar Jumpshot Compact Flash Reader est rserve pour activer des fonctionnalits extrmement exprimentales au niveau des gestionnaires de priphriques USB. La rponse recommande est N. Loption USB Modem (CDC ACM) support permet de prendre en charge les modems analogiques et Numris utilisant linterface CDC ACM (abrviation de langlais Communication Device Class Abstract Control Model ) connects sur le port USB. La rponse recommande est N. Loption USB Printer support active la gestion des imprimantes connectes sur le port USB. La rponse recommande est N. Loption USB Human Interface Devices (full HID) support permet dactiver la prise en charge des priphriques dentre et de saisie tels que les claviers, souris et tablettes de digitalisation. Ce pilote gre compltement les priphriques dentre USB, et est incompatible avec les pilotes simplis pour le clavier et la souris, que lon peut activer avec les options USB HIDBP Keyboard (basic) support et USB HIDBP Mouse (basic) support . La rponse recommande est N. Loption HID input layer support permet dutiliser les priphriques dentre USB par lintermdiaire de linterface gnrique de gestion des priphriques de Linux. Cette option nest accessible que si loption Input core support du menu Input core support a galement t active. La rponse recommande est N. Loption /dev/hiddev raw HID device support (EXPERIMENTAL) permet de prendre en charge les priphriques dentre USB qui ne sont pas des priphriques utiliss par lutilisateur directement, mais plutt pour signaler des vnements complmentaires (comme des moniteurs dalimentation par exemple). La communication avec ces priphriques se fera par lintermdiaire de chiers spciaux de priphriques /dev/usb/hiddevX complmentaires, tous de code majeur 180 et de codes mineurs allant de 96 111. La rponse recommande est N. Loption USB HIDBP Keyboard (basic) support permet dactiver un pilote simpli pour les claviers USB. Ce pilote peut tre utilis pour allger le noyau dans les systmes embarqus, mais ne gre pas toutes les touches des claviers tendus. Cette option est incompatible avec loption USB Human Interface Device (full HID) support . La rponse recommande est N. Loption USB HIDBP Mouse (basic) support permet dactiver un pilote simpli pour les souris USB. Ce pilote peut tre utilis pour allger le noyau dans les systmes embarqus. Cette option est incompatible avec loption USB Human Interface Device (full HID) support . La rponse recommande est N. Loption Aiptek 6000U/8000U tablet support permet de prendre en charge les tablettes graphiques 6000U et 8000U dAiptek. Cette option ncessite davoir galement activ loption Event interface support du menu Input core support . La rponse recommande est N.

414

Annexe A. Options de conguration du noyau Loption Wacom Intuos/Graphire tablet support active la prise en charge des tablettes graphiques Wacom USB. Cette option ncessite davoir galement activ loption Mouse support ou loption Event interface support du menu Input core support . La rponse recommande est N. Loption KB Gear JamStudio tablet support nest pas documente et ne sera pas dcrite ici. Loption Griffin Technology PowerMate support permet de prendre en charge les capteurs PorwerMate de Grifn Technlology. La rponse recommande est N. Loption USB Kodak DC-2xx Camera support active la prise en charge des appareils photos numriques USB Kodak DC-2xx et de quelques appareils compatibles. La rponse recommande est N. Loption USB Mustek MDC800 Digital Camera support (EXPERIMENTAL) permet de prendre en charge les appareils photos numriques USB Mustek MDC800 et de quelques appareils compatibles. La rponse recommande est N. Loption USB Scanner support active la prise en charge des scanners USB. La rponse recommande est N. Loption Microtek X6USB scanner support (EXPERIMENTAL) permet de prendre en charge les scanners Microtek X6USB. Ces scanners apparatront dans le systme comme des priphriques SCSI gnriques. Notez quil faut une version modie de SANE pour utiliser ce pilote. La rponse recommande est N. Loption HP53xx USB scanner support (EXPERIMENTAL) permet de prendre en charge les scanners USB de la srie HP53xx et le scannel Scan Dual de Minolta. Avec ce gestionnaire, les scanners apparaissent comme des priphriques SCSI normaux. La rponse recommande est N. Loption USB IBM (Xirlink) C-it Camera support permet de connecter un appareil photo Xirlink dIBM votre ordinateur. Cet appareil sera utilisable via linterface Video4Linux, que lon devra donc galement activer. La rponse recommande est N. Loption USB Konica Webcal support permet de prendre en charge les webcams Konica. La rponse recommande est N. Loption USB OV511 Camera support permet de connecter un appareil photo OV511 votre ordinateur. Cet appareil sera utilisable via linterface Video4Linux, que lon devra donc galement activer. La rponse recommande est N. Loption USB Philips Cameras permet de connecter un appareil photo Philips votre ordinateur. Cet appareil sera utilisable via linterface Video4Linux, que lon devra donc galement activer. La rponse recommande est N. Loption USB SE401 Camera support permet de connecter un appareil photo SE401 votre ordinateur. Cet appareil sera utilisable via linterface Video4Linux, que lon devra donc galement activer. La rponse recommande est N. Loption USB STV680 (Pencam) Camera support permet de connecter un appareil photo STV680 votre ordinateur. Cet appareil sera utilisable via linterface Video4Linux, que lon devra donc galement activer. La rponse recommande est N. Loption USB 3com HomeConnect (aka vicam) support (EXPERIMENTAL) permet de connecter appareil photo HomeConnect de 3Com votre ordinateur. Cet appareil sera utilisable via linterface Video4Linux, que lon devra donc galement activer. La rponse recommande est N. Loption D-Link USB FM radio support (EXPERIMENTAL) permet de connecter une radio FM USB D-Link. Cette radio sera utilisable via linterface Video4Linux, que lon devra donc galement activer. La rponse recommande est N.

415

Annexe A. Options de conguration du noyau Loption DABUSB driver permet la prise en charge dun rcepteur USB DAB (abrviation de langlais Digital Audio Broadcasting ). La rponse recommande est N. Loption USB Pegasus/Pegasus II based ethernet device support (EXPERIMENTAL) permet de prendre en charge les cartes Ethernet de type Pegasus ou Pegasus II. La rponse recommande est N. Loption USB Realtek RTL8150 base ethernet device support (EXPERIMENTAL) permet de prendre en charge les adaptateurs Ethernet USB bass sur la puce RTL8150 de Realtek. La rponse recommande est N. Loption USB KLSI KL5USB101-based ethernet device support permet de prendre en charge les adaptateurs Ethernet connects sur port USB bass sur la puce KL5USB101. La rponse recommande est N. Loption USB CATC NetMate-based Ethernet driver (EXPERIMENTAL) permet de prendre en charge les connecteurs Ethernet pour port USB bass sur la puce EL1210A. La rponse recommande est N. Loption USB Communication Class Ethernet device support (EXPERIMENTAL) permet dactiver la prise en charge de certains modems cble connects sur port USB. La rponse recommande est N. Loption USB-to-USB Networking cable device support (EXPERIMENTAL) permet de raliser un rseau entre deux PC en utilisant un cble USB de transfert de donnes. Les interfaces rseau seront nommes usb0, usb1, etc. dans le systme. La rponse recommande est N. Loption USS720 parport driver permet dactiver les convertisseurs USB / Port parallle permettant de connecter les priphriques utilisant un port parallle sur le port USB de lordinateur. La rponse recommande est N. Loption USB Diamond Rio500 support (EXPERIMENTAL) permet de prendre en charge les lecteurs MP3 USB Rio500. La rponse recommande est N. Loption USB Auerswald device support permet de connecter un adaptateur ISDN Auerswald sur le port USB de votre ordinateur. La rponse recommande est N. Loption Texas Instruments Graph Link USB (aka SilverLink) cable support permet de connecter un calculateur Graph Link de Texas Instruments sur le port USB. La rponse recommande est N. Loption Tieman Voyager USB Braille display support (EXPERIMENTAL) nest pas documente et ne sera pas dcrite plus en dtail ici. Loption USB LCD device support permet dactiver la prise en charge dune interface LCD alphanumrique connectanle sur le port USB. La rponse recommande est N.

A.62. Menu USB Serial Converter support


Loption USB Serial Converter support permet de prendre en charge les priphriques USB utilisant une interface srie classique. Les options qui suivent activent les gestionaires des diffrents priphriques supports par Linux. La rponse recommande est N.

416

Annexe A. Options de conguration du noyau

A.63. Menu Bluetooth support


Loption Bluetooth subsystem support permet dactiver la gestion des priphriques sans l utilisant la norme Bluetooth. La rponse recommande est N. Loption L2CAP protocol support active la prise en charge du protocole de communication L2CAP, qui permet de travailler en mode connect ou non avec les priphriques BlueTooth. Ce protocole tant utilis par la majorit des priphriques, il est recommand de rpondre Y cette question. Loption SCO links support permet dactiver la gestion de la voix au travers du protocole Bluetooth. La rponse recommande est N. Loption RFCOMM protocol support permet dactiver le support des communications connectes sur la technologie BlueTooth. Loption qui suit permet de permettre lutilisation dun terminal par ce protocole. La rponse recommande est N. Loption BNEP protocol support permet de crer une interface rseau Ethernet virtuelle utilisant les fonctionnalits Bluetooth comme couche de transport. Cela permet de crer des rseau privs Bluetooth. Les options qui suivent permettent de spcier les fonctionnalits disponibles au niveau de linterface implmente par ce gestionnaire. La rponse recommande est N.

A.64. Menu Bluetooth device drivers


Loption HCI USB driver permet de prendre en charge les priphriques Bluetooth utilisant une interface USB. La rponse recommande est N. Loption SCO (voice) support permet dactiver le support du protocole SCO sur les priphriques BlueTooth USB. La rponse recommande est N. Loption USB zero packet support permet dactiver le support dune fonctionnalit USB qui nest ncessaire que pour certains priphriques USB Bluetooth bogus. La rponse recommande est N. Loption HCI UART driver permet de prendre en charge les priphriques Bluetooth utilisant une interface srie classique. La rponse recommande est N. Loption UART (H4) protocol supoprt permet de prendre en charge le protocole de communication srie H4 utilis par les priphriques Bluetooth et leur hte. Ce protocole est utilis par un grand nombre de priphriques. La rponse recommande est N. Loption BCSP protocol support permet de prendre en charge le protocole de communication srie BSCP utilis par les priphriques Bluetooth et leur hte. Loption Transmit CRC with every BCSP packet permet de demander ce quun code de contrle de redondance cyclique soit transmis avec chaque paquet du protocole. Cela rduit les performances mais rend le protocole plus sr. Les rponses recommandes sont N. Loption HCI DTL1 (PC Card) driver permet de prendre en charge les cartes PCMCIA Bluetooth disposant de linterface DTL1 de Nokia. La rponse recommande est N. Loption HCI BT3C (PC Card) driver permet de prendre en charge les cartes PCMCIA Bluetooth disposant de linterface BT3C de 3Com. La rponse recommande est N. Loption HCI BlueCard (PC Card) driver permet de prendre en charge les cartes PCMCIA Bluetooth disposant de linterface BlueCard de Anycom. La rponse recommande est N. Loption HCI VHCI virtual HCI device driver permet dactiver le priphrique HCI virtuel, qui vous permettra de simuler des priphriques Bluetooth. La rponse recommande est N.

417

Annexe A. Options de conguration du noyau

A.65. Menu Kernel hacking


Loption Kernel debugging permet daccder une srie doptions relatives au dboguage du noyau. Ces options ne sont pas rellement utilise pour un utilisateur et ne sont prsentes que pour les dveloppeurs de gestionnaires de priphriques ou les dveloppeurs du noyau. Les options qui suivent ne sont donc accessibles que si vos rpondez Y cette question. Elles ne seront toutefois pas dcrites plus en dtail ici, et la rponse recommande pour cette option est N.

A.66. Menu Library routines


Les options de ce menu ne sont pas documentes et ne seront pas dcrites plus en dtail ici.

418

Annexe B. Compilation et mise jour des principaux composants du systme


Les paragraphes suivants contiennent les remarques et les options choisir pour compiler les principaux composants du systme. La compilation de GCC et du noyau a dj t vue et ne sera donc pas dcrite ici. Les informations fournies ci-dessous ne sont pas trs dtailles, car la plupart des gens nen nont pas besoin. Elles relvent plus de la cration du systme que de son installation, mais elles sont fournies car elles peuvent tre utiles pour les personnes dsirant approfondir srieusement le sujet et disposant dun certain niveau en informatique.

B.1. Compilation de make 3.80.0


Le programme make est utilis systmatiquement lors des compilations. Certaines compilations ncessitent la dernire version de make, qui nest pas forcment fournie avec votre distribution. Vous pouvez donc avoir besoin de le recompiler. La version courante de make est la 3.80.0, il est fortement recommand de lutiliser. La compilation de make est tout fait classique. Elle ncessite de :

extraire les chiers sources de leur archive dans un rpertoire source srcdir ; crer un rpertoire pour les objets et sy placer ; taper :
CFLAGS=-O2 ../srcdir/configure --enable-shared --host=i686-pc-linux-gnu \ --prefix=/usr

lancer make.

Lorsque la compilation sera termine, vous pourrez tester le nouveau programme avant de linstaller. Pour cela, il suft de taper la commande suivante :
make check

Le programme make ainsi congur sera install avec la simple commande suivante :
make install

Le rpertoire dinstallation est le rpertoire /usr/bin si le prxe utilis est /usr/.

B.2. Compilation des binutils 2.14


Larchive de GCC ne fournit en soi que les compilateurs des langages supports, ainsi que quelques outils complmentaires. Elle ne contient pas en revanche les outils de gnration et de manipulation des chiers binaires. Ces outils sont fournis dans un paquetage distinct, les binutils.

419

Annexe B. Compilation et mise jour des principaux composants du systme La qualit des outils de manipulation des chiers binaires est un facteur important pour une gnration correcte des programmes partir de leurs sources. En clair, le compilateur ne fait quune partie du travail, le reste revient aux binutils. Il est donc ncessaire de disposer des dernires versions de ces outils, car certaines compilations de grande taille peuvent mal se passer avec les anciennes versions. Cest en particulier le cas de la glibc. La version courante des binutils est la 2.14. Les sources de ce paquetage peuvent, comme lacoutume, tre rcupres sur le site Internet du GNU (http://www.gnu.org). Leur compilation ne pose pas de problme, puisquelle utilise le trs classique script de conguration de GNU. La conguration se fera donc avec la commande suivante :
CFLAGS=-O2 ./configure --prefix=/usr

La compilation et linstallation de ces outils pourront alors tre faites simplement avec les deux commandes suivantes :
make make install

Comme dhabitude, vous pourrez tester que tout sest bien pass laide de la commande make check avant de lancer linstallation.

B.3. Compilation de la bibliothque C 2.3.2


La bibliothque C constitue lensemble des bibliothques de fonctions que tous les programmes crits en C utilisent pour accder aux systme. Il sagit donc dun composant essentiel dans le systme (qui, rappelons-le, est lui-mme crit en C). Recompiler la bibliothque C est donc une opration trs sensible. Surtout si vous utilisez une Redhat ou une distribution drive de la Redhat (comme la Mandrake par exemple) : vous allez certainement casser compltement votre systme si vous passez lacte. Ces distributions font exprs de ne pas tre compatibles avec les autres et dintgrer des fonctionnalits non stabilises et non ofcielles. Recompiler la bibliothque C est donc le meilleur moyen pour ne plus pouvoir lancer le moindre programme avec ces distributions. Vous tes prvenus. La compilation de la bibliothque C est une opration fastidieuse plus dun titre. Elle ncessite souvent de recompiler certains outils, et elle est longue et consomme normment de ressources. Enn, il faut parfois recompiler certaines parties du systme aprs son installation, an de rsoudre des conits de versions dus la migration. La dernire version de la bibliothque C GNU est la 2.3.2. Les prrequis sont les suivants :

le compilateur GCC (version 3.2.1 ou plus) doit avoir t compil et install ; les outils de manipulation des chiers binaires (binutils 2.13 ou plus) doivent avoir t compils et installs ; le programme make utilis doit tre de version rcente (3.79.1 ou plus) ; vous devez disposer de larchive de lextension linuxthreads prenant en charge les threads sous Linux. Cette archive peut tre trouve au mme endroit que larchive de la bibliothque C, par exemple sur le site du GNU (http://www.gnu.org).

420

Annexe B. Compilation et mise jour des principaux composants du systme


Note : Contrairement aux anciennes versions de la bibliothque C, il est inutile de tlcharger un add-on pour les fonctionnalits de cryptage de la bibliothque. Celles-ci sont prsent directement intgres dans les sources de la glibc.

Le processus de compilation est ensuite assez classique. Il suft de :

extraire les chiers sources de leur archive dans un rpertoire source srcdir ; se placer dans le rpertoire srcdir et extraire les sources de larchive de linuxthreads ; crer un rpertoire pour les objets en dehors du rpertoire des sources de la bibliothque et sy placer ; taper :
CFLAGS=-O2 ../srcdir/configure --enable-shared --host=i686-pc-linux-gnu \ --prefix=/usr --enable-add-ons=linuxthreads

Les options de la commande de conguration permettent lemploi des bibliothques dynamiques et la compilation des modules additionnels pour le multithreading. Le rpertoire dinstallation sera /usr/lib/ pour les bibliothques, et /usr/include/ pour les chiers den-ttes. Vous pouvez bien entendu utiliser une autre valeur pour loption --host, selon votre conguration. Normalement, cette option est facultative, car sa valeur est automatiquement dtecte par le programme de conguration. La compilation peut ensuite tre lance avec la simple commande suivante :
make

Une fois la compilation effectue, vous pouvez tester la nouvelle bibliothque avant de linstaller. Pour cela, tapez la commande suivante :
make check

Il est vivement recommand deffectuer ce test. Si la moindre erreur apparat pendant lexcution du test, ninstallez surtout pas la bibliothque, vous dtruiriez sans aucun doute votre systme.
Note : En gnral, un chec de ce test provient souvent dune mauvaise gnration de la bibliothque due lutilisation de programmes trop vieux sur votre systme. Il est donc parfois ncessaire de mettre jour dautres programmes avant deffectuer la mise jour de la bibliothque C. Par exemple, votre version de make peut tre obsolte, ainsi que celle de GCC ou encore celle des outils GNU binutils (assembleur, diteur de liens, archiveur, etc.). Les sources de tous ces programmes peuvent tre trouves sur le site du GNU (http://www.gnu.org). La compilation de la bibliothque C, ainsi que celle des autres composants lourds du systme comme le noyau, GCC, XFree86, Gnome ou KDE, peuvent stresser votre systme dune manire quil na jamais connu. Les calculs intensifs peuvent durer plusieurs heures, ce qui fait chauffer les composants de votre ordinateur. Il nest pas rare de voire certains de ces composants dfaillir dans ces circonstances, alors quils se sont toujours comports apparemment normalement jusqu prsent. En particulier, vous pouvez avoir des problmes de surchauffe du processeur et des corruptions de donnes dans les barettes de mmoire. Les symptmes sont en gnral lapparition dune erreur de type SIG 11 (erreur de segmentation) sur des programmes trs ables, comme gcc ou le shell. Dans ce cas, il faut identier et remplacer les composants dfecteux (ce nest pas une blague, ce problme mest personnellement arriv avec trois barettes

421

Annexe B. Compilation et mise jour des principaux composants du systme


mmoires et un processeur en moins dun an, et il est arriv bien dautres personnes dans le monde). Il est facile de penser que, avec la baisse du prix des barettes mmoires que lon a vcu ces derniers temps, les fabricant sont tents dtre un peu plus laxistes au niveau du contrle qualit des composants en n de chane. Le phnomne risque donc de devenir courant, et il peut parfaitement vous arriver. Bien entendu, il va de soi quil ne faut pas overclocker sa machine lorsquon se lance dans des oprations telles que celles-ci. Loverclocking est de toutes manires une technique douteuse dont le but nest que darriver plus vite avoir des problmes curieux, surtout sous Linux. Vous tes avertis.

Linstallation se fera enn avec les deux commande suivantes :


make install

et :
make localedata/install-locales

La compilation des paramtres internationaux utiliss par la bibliothque C pour la France se fera ensuite avec la commande suivante :
localedef -i fr_FR -f ISO-8859-15 fr_FR

Cette commande permet de compiler les chiers des paramtres dafchage des monnaies et des dates, ainsi que le jeu de caractres utilis pour comparer et trier les chanes de caractres. Dans lexemple donn ci-dessus, la langue choisie est le franais ( fr ) tel quil est parl en France ( FR ), avec le jeu de caractres ISO-8859-15. Les chiers compils sont placs dans le rpertoire /usr/lib/locale/, raison dun sous-rpertoire pour chaque locale congure. Si ce rpertoire nexiste pas sur votre machine, vous devrez le crer manuellement, car la commande localedef ne le fait pas automatiquement.
Note : Une fois la bibliothque C compile, vous aurez peut-tre recompiler GCC et un certain nombre dautres programmes, car la compatibilit binaire dune version lautre de la bibliothque C est trs relative. Si la version que vous utilisez est un simple correctif de bug cependant, la compatibilit sera sans doute totale, mais il faut savoir qu chaque version majeure un certain nombre de fonctionnalits sont modies et peuvent ncessiter des mises jour en cascade. Remarquez enn que le format des chiers dinternationalisation de la bibliothque C a t modi depuis la version 2.2.x. Cela peut provoquer des incompatibilit avec les programmes internationnaux qui ont t compils statiquement avec lancienne version de la bibliothque. Ces programmes devront galement tre recompils.

partir de la version 2.3 de la bibliothque C et de la version 2.13 des binutils, une amlioration dans le chargement des bibliothques dynamiques a t apporte. Cette amlioration permet de prcharger ces bibliothques et donc de gagner du temps au dmarrage des programmes. Pour pouvoir bncier de ces amliorations, il faut installer un outil complmentaire nomm prelink . Les sources de cet outil pourront tre trouvs sur le compte de son auteur, ladresse ftp://people.redhat.com/jakub/prelink/. Sa compilation requiert que la bibliothque libelf, permettant de manipuler les chiers binaires, soit installe. Les sources de cette bibliothque peut galement tre rcuprs sur Internet, ladresse

422

Annexe B. Compilation et mise jour des principaux composants du systme http://www.stud.uni-hannover.de/~michael/software/libelf-0.8.2.tar.gz. Linstallation bibliothque et de prelink se fait simplement laide des commandes suivantes :
./configure --prefix=/usr make make install

de

cette

Note

Pour

pouvoir

utiliser

correctement

prelink,

vous

devez

crer

un

chier

/etc/prelink.conf contenant la liste de tous les rpertoires des bibliothques de votre

systme, raison dune ligne par rpertoire. Le contenu de ce chier est donc typiquement le suivant :
# Exemple de fichier /etc/prelink.conf : /lib /usr/lib /usr/local/lib /usr/X11R6/lib /usr/lib/qt/lib /opt/kde/lib

De plus, sachez que le prchargement des bibliothques ne peut fonctionner que si toutes les bibliothques dont dpend un programme, directement ou indirectement (cest--dire par lintermdiaire dventuelles autres bibliothques) ont t gnres avec les binutils 2.13 ou plus. Cela implique quun certain nombre de composants systmes (pour ne pas dire tous) devront tre recompils au pralable. Une mise jour de votre distribution semble donc tre la solution la plus simple ce stade.

B.4. Compilation de OpenSSL


Les communications sur Internet nont jamais t considres comme quelque chose de sr. Cest pour cela que bon nombre de programmes ont recours au cryptage des donnes pour assurer des communications ables. Ce cryptage est une ncessit vitale si vous dsirez acheter quelque chose sur Internet ou consulter vos comptes en ligne, tant pour assurer votre protection que celle des intervenants commerciaux. La plupart des sites commerciaux refuseront laccs aux clients non scuriss. La plupart des distributions utilisent pour assurer le cryptage une bibliothque fournissant un accs standard la plupart des algorithmes de cryptage : OpenSSL. Vous pourrez trouver cette bibliothque sur Internet (http://www.openssl.org). La compilation dOpenSSL nest pas complique, car un jeu de chier makele pour Linux est fourni avec les sources. Vous devez simplement tapez la commande suivante pour les slectionner :
./Configure linux-elf shared

Note : Par dfaut, OpenSSL va sinstaller dans le rpertoire /usr/local/ssl/, y compris les chiers den-tte. Il faut donc ajouter le chemin /usr/local/ssl/ dans les variables denvironnement C_INCLUDE_PATH et CPLUS_INCLUDE_PATH si on veut compiler des programmes qui utilisent SSL (cest en particulier le cas de KDE). Une autre solution est de

423

Annexe B. Compilation et mise jour des principaux composants du systme


demander une conguration explicite et dutiliser loption --prefix pour indiquer le rpertoire de base pour linstallation, et loption --openssldir pour indiquer le rpertoire dinstallation des utilitaires :
./Configure linux-elf shared --prefix=/usr --openssldir=/etc/ssl

pour effectuer linstallation des bibliothques et des en-ttes dans les rpertoires /usr/lib et /usr/include respectivement, et de placer les clefs prives et les chiers de conguration dans le rpertoire /etc/ssl.

Une fois la conguration effectue, il suft de taper les commandes suivantes pour effectuer la compilation et linstallation :
make make install

Comme dhabitude, vous pouvez effectuer un test avec la commande make test avant de raliser linstallation pour vrier que tout est correct.

B.5. Compilation de XFree86 4.3.0


La compilation de XFree86 est certainement lune des oprations les plus difciles raliser, car il ny a pas de programme de conguration automatique des sources. La plupart des chiers sources de la distribution sont fournis par le Consortium X, et ils sont prvus pour pouvoir tre modis librement par les diffrentes implmentation. XFree86 est lune de ces implmentations, et utilise la base de ces sources. XFree86 est en fait une implmentation des serveurs X pour le systme XWindow fourni par le Consortium X. La conguration de XFree86 doit donc tre faite comme indique dans la documentation de XFree86 et non pas comme indiqu dans la documentation originale du Consortium X. Toutes les options sont indiques dans les chiers du rpertoire /xc/config/cf/. Le chier site.def est le chier de conguration central des sources de XWindow. Il lit les options des chiers de conguration des autres systmes, en particulier le chier host.def. Cest pour cela quil faut dnir les options de conguration dans le chier host.def et non pas dans le chier site.def. Vous trouverez un exemple de chier host.def adapt Linux dans le chier xf86site.def. La compilation de XFree86 se droule donc comme suit :

dcomprimez les archives X430src-1.tgz X430src-5.tgz ; dcomprimez ventuellement les archives X430src-6.tgz et X430src-7 si vous dsirez obtenir la documentation en version imprimable ; allez dans xc/config/cf et copiez le chier xf86site.def vers host.def ; ditez host.def pour dnir les options de compilation de XFree86 ; allez dans le rpertoire xc/ et tapez
make World

424

Annexe B. Compilation et mise jour des principaux composants du systme


Note : La compilation de XWindow lui-mme suppose quil y ait un lien de /usr/bin/cc vers le compilateur C natif de votre systme, en loccurrence /usr/bin/gcc. Il en est de mme pour le prprocesseur. Vous devrez donc crer un lien symbolique de /lib/cpp vers /usr/bin/cpp. De mme, il faut sassurer quil y ait un lien symbolique de /usr/lib/libtermcap.so vers la version courante de cette bibliothque (allez savoir pourquoi ce lien nexiste pas sur certaines distributions...). La compilation des documentation de XFree86 ncessite galement que vous disposiez des outils de gnration de documentation SMGL. Ces outils comprennent OpenJade, un traducteur SGML utilisant des feuilles de styles DSSSL, et les outils doctools de XFree86. OpenJade est normalement fourni avec toute bonne distribution, son installation ne sera donc pas traite dans ce document. Notez toutefois quil faut sassurer que des liens symboliques jade et nsgmls existent et rfrencent respectivement les programmes openjade et onsgmls pour que la compilation des documentations puisse bien se passer. Ces outils sont tous compris dans larchive doctools-1.3.tgz, que lon trouvera avec les sources de XFree86. Linstallation de ces outils ncessite dditer le chier Makefile pour corriger quelques paramtres spciques Linux. Ces paramtres sont les suivants :
la variable PERLCMD doit tre xe sur le chemin de linterprteur perl ; les variables CC et CXX pourront tre dcommentes an dutiliser GCC, qui est compilateur

par dfaut sous Linux ;


enn, la variable JADE pourra tre dnie la chane de caractres vide si OpenJade est dj

install sur le systme. La compilation et linstallation se font ensuite avec les commandes make et make install.

Les modications apporter au chier host.def sont les suivantes pour Linux :

xer loption DefaultGcc2i386Opt -fno-strict-aliasing ; xer la valeur de loption HasTk YES ; xer la valeur de loption HasTcl YES ;

-O2 -fno-strength-reduce

xer les chemins sur les bibliothques TCL/Tk de la distribution et leurs chiers den-tte. Les bibliothques sont gnralement installes dans le rpertoire des bibliothques du systme, savoir /usr/lib/, et les chiers den-tte sont gnralement situs dans le rpertoire /usr/include/ ; de mme, donner le nom des bibliothques TCL et Tk avec lesquelles les programmes qui les utilisent doivent tre lis. Ces noms sont peuvent par exemple tre tcl8. et tk8.4 pour la version 8.4 de ces bibliothques. Vous devrez bien entendu corriger le nom en fonction de la version dont vous disposez. La dernire version de Tcl/Tk peut tre rcupre sur Internet (http://www.scriptics.com) ; indiquer les pilotes graphiques compiler dans loption XF86CardDrivers. Vous pouvez compiler plusieurs pilotes, pour le cas par exemple o vous auriez plusieurs cartes graphiques installes sur la mme machine. Il est recommand de toujours compiler les pilotes gnriques vga et vesa, ainsi que le pilote utilisant la fonctionnalit virtual frame buffer du noyau (module fbdev). Vous pouvez galement compiler le pilote AgpGartDrivers si votre carte est une carte AGP, an dacclrer les performances OpenGL de votre carte. Enn, vous devrez ajouter le pilote XF86OSCardDrivers pour ajouter les pilotes spciques au systmes dexploitation, comme le pilote de support de linterface Video for Linux par exemple (recommand si vous disposez dune carte dacquisition TV) ;

425

Annexe B. Compilation et mise jour des principaux composants du systme

dcommenter, si ncessaire, la ligne xant loption BuildFonts NO si vous ne voulez pas compiler les polices de caractres (en gnral, on ne les compile quune seule fois, car ce nest plus ncessaire lors des mises jour) ; dcommenter, si ncessaire, la ligne xant loption BuildServersOnly YES si vous ne dsirez compiler que les serveurs X (par exemple pour une mise jour) ; dcommenter la ligne xant la valeur de loption HasSgmlFmt YES si vous avez install les outils doctools de XFree86 et si vous dsirez compiler les documentations.

Vous pouvez laisser les autres options entre commentaires. La compilation de XFree86 se fera alors simplement en excutant la commande suivante dans le rpertoire dinstallation des sources :
make World

Note : Notez quil nest pas ncessaire, en gnral, de compiler les polices de caractres. En effet, celles-ci ne sont que trs rarement modies dune version lautre de X11, et les polices de lancienne version peuvent parfaitement convenir. Il en est de mme pour la documentation, qui nest pas toujours mise jour chaque version mineure.

Linstallation de XWindow se fait alors simplement avec les deux commandes suivantes :
make install make install.man

B.6. Compilation de Lesstif 0.93.36


Lesstif est un clone libre de la bibliothque de composants graphiques Motif, qui est lune des bibliothques les plus utilises en programmation graphique sous X11, mais dont lutilisation est soumise une licence commerciale. Lesstif est donc Motif ce que Linux est Unix en quelque sorte. tant donn le grand nombre de programmes qui utilisent Motif, il est ncessaire de linstaller sur votre machine. La dernire version actuellement disponible est la 0.93.36. Vous pourrez en trouver les sources sur le site de Lesstif (http://www.lesstif.org). La compilation et linstallation de Lesstif seffectue classiquement, laide des programmes congure et make. Vous aurez donc excuter les commandes suivantes dans le rpertoire dinstallation des sources de Lesstif :
./configure --prefix=/usr/X11R6 make make install

Ce jeu de commandes installera Lesstif dans le rpertoire /usr/X11R6/LessTif. Bien entendu, vous tes libre dutiliser un autre emplacement, mais il vous faudra alors modier les chemins de recherche des chiers den-tte et des bibliothques lorsque vous voudrez utiliser des programmes qui en ont besoin.

426

Annexe B. Compilation et mise jour des principaux composants du systme

B.7. Compilation de MESA 5.0.1


MESA est une bibliothque compatible avec le standard OpenGL introduit par Silicon Graphics pour uniformiser les fonctions 3D des systmes dexploitation. XFree86 est fourni avec une version 3.4 allge de MESA, qui ne fournit pas toutes les en-ttes et toutes les bibliothques utilisable par les programmes OpenGL. Vous aurez donc peut-tre mettre jour MESA sur votre systme avec la dernire version disponible. Linstallation de MESA ne pose pas de problme particulier, si ce nest quil faut rcuprer galement larchive des chiers de dmonstration car elle contient la bibliothque complmentaires GLUT que bon nombre de programmes OpenGL utilisent. Larchive de MESA et larchive de ses programmes dexemples peuvent tre rcupres toutes les deux sur le site Web de Mesa (http://www.mesa3d.org). Ces archives portent respectivement les noms MesaLib-5.0.1.tar.bz2 et MesaDemos-5.0.1.tar.bz2. Lorsque vous aurez rcupr ces archives, vous devrez les dcomprimer toutes les deux dans le mme rpertoire. Vous disposerez alors dun sous-rpertoire Mesa-5.0, dans lequel se trouvent tous les chiers sources. La conguration et la compilation de MESA ne posent rellement aucun problme. Il suft simplement de taper les commandes suivantes :
./configure --prefix=/usr/X11R6/ make make check make install

Notez quil nest pas ncessaire de spcier les options doptimisation congure. En effet, MESA dtectera automatiquement votre matriel et choisira les options appropries. La bibliothque MESA sait en effet dtecter les capacits de chaque type de processeur et utiliser le jeux dinstructions le plus appropri an dobtenir les meilleures performances.
Note : Il est ncessaire de compiler les programmes de test pour que la bibliothque GLUT soit installe. Il est recommand de supprimer les chiers de lancienne version de la bibliothque MESA fournie avec XFree86. Ces chiers sont situs dans le rpertoire /usr/X11R6/lib/ de XFree86, et portent des noms du type libGL*. Si vous avez install des bibliothques permettant de bncier de lacclration 3D matrielle de votre carte graphique, vous devrez supprimer les bibliothques installes par MESA, et au besoin rinstaller vos bibliothques prenant en charge votre carte graphique. Dans le cas contraire, les programmes utilisant OpenGL seront considrablement ralentis, et vous ne pourrez certainement plus les utiliser. Ce genre de situation se produit par exemple sur les machines disposant de cartes graphiques base de puces NVidia, pour lesquelles vous devez utiliser les pilotes fournis par NVidia (http://www.nvidia.com) an de bncier des acclrations 3D par le matriel.

B.8. Compilation de KDE 3.1.2


KDE utilise XWindow et la bibliothque Qt. Il faut donc disposer des bibliothques et des chiers den-tte de XWindow, et compiler la bibliothque Qt au pralable pour compiler KDE. La version de Qt utiliser pour compiler KDE 3.1.2 est la version 3.1.2. Les paragraphes qui suivent supposent que vous disposez de cette version.

427

Annexe B. Compilation et mise jour des principaux composants du systme Si la bibliothque Qt est fournie avec votre distribution, sont rpertoire dinstallation sera /usr/lib/. Dans le cas contraire, elle sera place dans /usr/local/lib/. La compilation se fait sur place, ce qui permet dviter davoir linstaller. Elle se droule de la manire suivante :

il faut se placer dans le rpertoire /usr/lib/ :


cd /usr/lib

les sources doivent ensuite tre extraites de larchive de la bibliothque Qt :


tar xvfz qt-x11-free-3.1.2.tar.gz

les sources sont extraites dans le rpertoire qt-x11-free-3.1.2/. Il faut renommer ce rpertoire en qt/ (cest--dire, supprimer les numros de version) ou faire un lien symbolique qt vers ce rpertoire (solution permettant de conserver les anciennes bibliothques, pour les anciens programmes) ; il faut ensuite ajouter les variables denvironnement dans le .profile ou .login (selon le shell utilis, pour bash, il faut modier .profile) comme indiqu dans le chier INSTALL du rpertoire qt. Ces variables denvironnement sont utilises par le processus de compilation. Vous devrez bien entendu corriger les chemins dnis par dfaut pour rfrencer le rpertoire dinstallation des sources de Qt ; il faut recharger le chier .profile ou .login an de dnir ces variables ; lancer la commande congure avec les options suivantes :
./configure -shared -thread -no-g++-exceptions -no-stl -system-zlib -qt-gif -system-libpng -system-libjpeg -plugin-imgfmt-mng -xft

lancer la commande make pour construire la bibliothque :


make

lancer ldcong.

Outre la bibliothque Qt, KDE utilise galement quelques bibliothques utilitaires pour certaines fonctionnalits annexes. Il sagit principalement de la bibliothque pcre (http://www.pcre.org), qui permet de grer les expressions rationnelles, de la bibliothque Xine (http://xinehq.de/), qui permet de jouer des chiers vido de manire indpendante de leur format, et dun certain nombre de bilbliothques du gestionnaire de bureau Gnome (http://www.gnome.org) :

la bibliothque libaudiole, qui permet de manipuler les chiers sons ; la bibliothque libxml, qui permet danalyser les documents au format XML ; et des bibliothques libart et ImLib, qui permettent de manipuler les diffrents formats dimage de manire uniforme.

Ces bibliothques peuvent tre compiles de manire similaire, laide du classique triplet congure, make et make install. Dautres bibliothques devront tre installes pour bncier de fonctionnalits complmentaires, les bibliothques de prise en charge des chiers MP3 et Ogg/Vorbis par exemple.

428

Annexe B. Compilation et mise jour des principaux composants du systme Cependant, linstallation de ces bibliothques reste facultative et nest pas ncessaire la compilation complte de KDE. Une fois les bibliothques utilitaires et la bibliothque Qt compiles, on peut sattaquer KDE luimme. La compilation de KDE suppose que les variables denvironnement de la bibliothque Qt sont toujours dnies, il ne faut donc pas les supprimer aprs avoir compil celle-ci. KDE se congure classiquement, avec le programme de conguration congure. Pour chaque composant de KDE, il faut procder comme suit :

extraire les chiers sources de larchive ; appeler congure avec les bonnes options ; lancer la compilation avec make ; installer les chiers binaires avec make install .

En gnral, KDE est install dans le rpertoire /opt/kde/. Il faut donc spcier les bons prxes lors de lappel congure. La ligne de commande utiliser est donc la suivante :
./configure --prefix=/opt/kde

Comme dhabitude, il faut ventuellement indiquer le type de machine avec loption --host et demander lutilisation des bibliothques dynamiques avec loption --enable-shared. Lordre des oprations lors de la compilation de KDE est important, parce que certaines parties de KDE en utilisent dautres. En particulier, il faut imprativement compiler et installer les bibliothques en premier. Il est donc recommand doprer dans lordre suivant :

arts ; kdelib ; kdebase ; les autres composants de KDE, kdeaddons devant tre compil en dernier.

Note : Contrairement aux autres parties du systme, il faut compiler KDE dans le rpertoire des sources. En effet, certaines bibliothques fournies avec les sources sont ncessaires pour la compilation correcte de quelques modules non essentiels de KDE. Dautre part, si KDE est dj prsent sur votre systme, il faut le supprimer avant de le recompiler (ou au moins renommer son rpertoire si vous ntes pas sr de vous...). En effet, les chiers dentte et les bibliothques de lancienne version peuvent faire chouer la compilation de la nouvelle version. Si vous le supprimez compltement, il se rinstallera avec la conguration par dfaut. Les scripts de conguration de votre distribution pourront alors trs bien ne plus fonctionner sur la conguration de KDE. Dans ce cas, vous aurez certainement quelques problmes avec les droits xs par dfaut sur certains programmes. En particulier, vous ne pourrez jouer des chiers son que sous le compte root, car le serveur de son artsd de KDE et ses outils connexes ont besoin de privilges pour utiliser les chiers spciaux de priphrique de la carte son. La manire la plus propre pour rgler ce problme est de crer un groupe dutilisateurs nomm audio et contenant tous les utilisateurs ayant le droit dutiliser la carte son, et dattribuer ce groupe les chiers spciaux de priphrique /dev/dsp, /dev/audio et /dev/mixer. Les droits daccs en lecture et criture sur

429

Annexe B. Compilation et mise jour des principaux composants du systme


ces chiers devront ensuite tre donns au propritaire (root) et au groupe dutilisateurs (audio). Normalement, les autres utilisateurs ne doivent avoir aucun droit sur ces chiers.

Note : KDE 3.1.2 et Qt 3.1.2 sont capables dutiliser les fonctionnalits les plus avances des serveurs XFree86. Ces fonctionnalits peuvent apporter un plus indniable, et il est recommand que XFree86 soit correctement install avant de lancer leur compilation . En particulier, il est recommand davoir compil et install la bibliothque FreeType 2, pour le support des polices TrueType et lanti-aliasing des polices de caractres, ainsi que la bibliothque Open GL MESA.

Note : Enn, sachez que KDE 3.1.2 ncessite la version 1.4.1 ou plus de lenvironnement dexcution java pour permettre lutilisation de java et de javascript dans le navigateur Konqueror. Cet environnement peut tre tlcharg gratuitement sur le site de Sun (http://www.sun.com). Les binaires fournis par Sun ne sont pas des logiciels libres, mais ce sont les seuls qui respectent rellement la norme Java (ce qui est logique, puisquelle est impose par Sun). Linstallation de cet environnement dexcution se fait extrmement simplement. Il est recommand dinstaller les binaires dans le rpertoire /usr/lib/jrex.y.z et de crer un lien symbolique /usr/lib/java vers ce rpertoire, an de permettre linstallation de plusieurs versions de lenvironnement dexcution java tout en slectionnant la version x.y.z par dfaut. Aprs installation, vous devrez ajouter le rpertoire /usr/lib/java/bin aux rpertoires de votre variable denvironnement PATH pour permettre lutilisation de Java par les programmes tels que Konqueror. Enn, le script de lancement de la machine virtuelle utilise les commandes cut et head, et suppose quelles sont installes dans le rpertoire /usr/bin/, alors que la plupart des distributions les placent directement dans le rpertoire /bin/. Vous aurez donc peut-tre faire des liens symboliques cut et head sur ces deux commandes dans le rpertoire /usr/bin/. Par ailleurs, si vous dsirez utiliser des applets Java sur des sites Web scuriss par SSL, vous devrez galement installer la bibliothques Java JSSE. Cette bibliothque, actuellement en version 1.0.2, est disponible gratuitement sur le site de Sun (http://java.sun.com/products/jsse) consacr au langage Java. Il nest pas ncessaire de linstaller si vous utilisez lenvironnement Java 1.4 ou plus. Pour les versions antrieures de Java, son installation dans KDE se borne une simple copie de chiers. Vous trouverez en effet trois chiers nomms jcert.jar, jnet.jar et jsse.jar dans le sous-rpertoire lib/ de larchive de la bibliothque, que vous devrez simplement recopier dans le sous-rpertoire share/apps/kjava/ de KDE. Notez que le support de Java doit galement tre activ manuellement dans la conguration de Konqueror pour que vous puissiez utiliser toutes les fonctionnalits de Java.

B.9. Compilation de Gnome 2.2.1


Contrairement KDE, Gnome utilise sa propre bibliothque graphique, qui est elle-mme base sur XWindow. La compilation de Gnome requiert donc de compiler cette bibliothques ainsi que les bibliothques utilitaires quil utilise avant de compiler les applications. Le nombre darchives comprises dans lenvironnement Gnome est donc relativement important, et lopration de compilation peut donc tre relativement fastidieuse. Les chiers darchives de Gnome 2.2.1 peuvent tre tlchargs directement partir du site du projet Gnome (http://www.gnome.org) ou partir de lun de ses miroirs. Les dpendances entre les diffrents constituants de Gnome sont trs fortes, et lordre de compilation est extrmement important. Notez que lordre de compilation indiqu dans les pages daide du site de

430

Annexe B. Compilation et mise jour des principaux composants du systme Gnome est partiellement faux, et suppose quelques prrequis quand aux outils complmentaires. En particulier, OpenJade et Python 2.2 ou plus doivent tre installs, ainsi que la DTD XML DocBook 4.1.2 (dnition de grammaire de document XML pour les documentations informatiques). Il est bien entendu possible dinstaller Gnome dans un autre rpertoire que le rpertoire par dfaut en spciant le rpertoire destination laide de loption --prefix lors de la compilation de chaque module. Toutefois, il est impratif dans ce cas dajouter le rpertoire des binaires de Gnome dans la variable denvironnement PATH, ainsi que le rpertoire des bibliothques de Gnome dans la variable denvironnement LD_LIBRARY_PATH pour que la compilation des composants de Gnome se droule sans problme. La premire tape dans la compilation de Gnome est dinstaller un outil de gestion des bibliothques utilis par le processus de compilation tous les autres modules de Gnome : loutil pkg-cong. Cet outil peut tre install simplement avec les commandes suivantes :
./configure --enable-shared --prefix=/usr make make install

Cet outil tant capital, la ligne de commande indique ci-dessous propose de linstaller dans le rpertoire systme laide de loption --prefix. Une fois linstallation effectue, il est recommande de dnir la variable denvironnement PKG_CONFIG_PATH la valeur /usr/lib/pkgconfig. Cette valeur est le chemin du rpertoire dans lequel seront placs les chiers stockant les options des diverses bibliothques installes par Gnome. Ltape suivante est ensuite dinstaller les bibliothques libxml et libxslt. Ces bibliothques peuvent tre compiles et installes avec les commandes suivantes :
./configure --enable-shared --prefix=/usr make make install

Notez que ces bibliothques sont trs couremment utilises (y compris par certains programmes de KDE) et peuvent donc tre installes dans un rpertoire classique du systme, do lutilisation de loption --prefix dans la commande donne ci-dessus. Une fois ces deux bibliothques installes, il faut indiquer Gnome o se trouve la DTD XML de DocBook. Cela peut tre ralis laide des commandes suivantes :
xmlcatalog --noout --create /etc/xml/catalog xmlcatalog --noout --add public "-//OASIS//DTD DocBook XML V4.1.2//EN" \ /usr/local/share/xml/dtd/docbook/4.1.2/docbookx.dtd /etc/xml/catalog

La premire commande permet de crer un chier de conguration vierge pour lenregistrement des DTDs au niveau de la bibliothque libxml, et la deuxime permet dajouter la DTD DocBook dans ce chier. Le chemin indiqu pour le chier docbookx.dtd donn ici lest titre dexemple et doit bien entendu tre modi en fonction de lemplacement o vous avez install la DTD DocBook. La bibliothque suivante est la bibliothque libintl, qui permet de grer les paramtres de langue de Gnome. Cette bibliothque peut tre installe avec les commandes suivantes :
./configure --enable-shared --prefix=/opt/gnome --with-omfdirs=/opt/gnome/share/omf make make install \

431

Annexe B. Compilation et mise jour des principaux composants du systme Loption --with-omfdirs permet de xer lemplacement des chiers de conguration, qui ne sont pas relatifs au rpertoire indiqu par loption --prefix (cela est peut-tre une anomalie). Une fois la bibliothque libintl installe, il est possible de compiler les autres bibliothques et applications de Gnome laide des commandes congure, make et make install. Ces composants doivent tre compils dans lordre suivant :

scrollkeeper ; audiole ; esound ; gtk-doc ; glib ; linc ; atk ; gnome-common ; pango ; libIDL ; ORBit2 ; bonobo-activation ; gtk+ ; GConf ; libart_lgpl ; libzvt ; libbonobo ; gnome-mime-data ; gnome-vfs ; libglade ; libgnome ; libgnomecanvas ; libbonoboui ; libgnomeui ; libwnck ; libgnomeprint ; libgnomeprintui ; libgtop ; librsvg ; gail ; eel ; libgtkhtml ; gtk-engines ;

432

Annexe B. Compilation et mise jour des principaux composants du systme


gnome-desktop ; gnome-panel ; gnome-session ; vte ; gnome-terminal ; gnome-utils ; gnome-applets ; control-center ; gnome-games ; bug-buddy ; eog ; nautilus ; gnome-system-monitor ; yelp ; gedit ; librep ; rep-gtk ; sawsh ; gnome-media ; gdm ; at-spi ; libgail-gnome ; gconf-editor ; gnome2-user-docs.

Note : Certaines de ces bibliothques, comme les bibliothques glib et audiole par exemple, peuvent tre utilises par dautres programmes que les programmes Gnome. Il peut donc tre utile de les mettre disposition de tous en les installant dans un rpertoire systme tel que /usr/lib/ ou /usr/local/lib/. Ces bibliothques sont toutes disponibles sur le site de Gnome. Cependant, elles ne sont pas toutes prsentes dans le rpertoire des sources de Gnome 2.2.1, dans ce cas ce sont des bibliothques Gnome 2.0 pour lesquelles aucune modication na t apporte. Vous les trouverez donc dans le rpertoire de Gnome 2.0.3.

433

Annexe B. Compilation et mise jour des principaux composants du systme

B.10. Compilation de Samba 2.2.8a


La compilation de Samba 2.2.8a ne pose dsormais plus de problmes particulier. Cependant, le choix des rpertoires par dfaut utiliss par Samba nest pas trs judicieux sur une machine Linux et pourra tre ventuellement modi. La conguration se fait classiquement avec congure :
CFLAGS="-O2 -pipe" ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \ --with-smbmount --with-smbwrapper

Loption --with-smbmount permet de compiler galement les utilitaires smbmount, smbmnt et smbumount, qui permettent de monter les volumes partags comme des systmes de chiers classiques. De mme, loption --with-smbwrapper permet de crer une bibliothque dynamique que les programmes peuvent utiliser pour accder directement aux partages SMB, quils trouveront dans un rpertoire virtuel /smb/. Un fois la conguration faite, il est recommand de modier les chemins dclars dans le chier makefile. En effet, ces chemins ne sont pas forcment ceux spcis au programme de conguration. Les variables suivantes devront donc ventuellement tre rednies :
# Rpertoire des fichiers de configuration de Samba : CONFIGDIR = ${sysconfdir} # Rpertoire priv pour les fichiers de mots de passe : PRIVATEDIR=/etc/samba

La compilation se fait simplement avec la commande suivante :


make

et linstallation avec :
make install

Notez cependant que les outils smbmnt et smbumount ne sont pas setuid. Leurs droits doivent donc tre modis avec les deux commandes suivantes :
chmod +s /usr/bin/smbmnt chmod +s /usr/bin/smbumount

434

Annexe C. Formulaire pour la cration des lignes de mode de XFree86


Les formules donnes dans cette annexe donnent les relations entre les diffrentes valeurs utilises dans les lignes de mode de XFree86. Elles peuvent vous aider comprendre les relations entre les principaux paramtres de ces lignes. Ces formules utilisent des variables qui reprsentent les valeurs des lignes de mode et les caractristiques techniques de votre cran. Le tableau donn ci-dessous liste les variables utilises : Variable
DC BW

Signication Dot Clock , frquence de base du balayage. Reprsente le nombre de pixels balays par seconde et sert de base de temps pour tous les calculs. Bandwidth , bande passante de fonctionnement du moniteur. Reprsente la limite suprieure de la frquence de base du balayage que le moniteur peut accepter. Cette valeur fait partie des caractristiques techniques du moniteur. Elle peut tre extrapole partir de la rsolution maximale que le moniteur peut afcher. Graphic Card Maximum Frequency , la plus grande valeur de frquence de balayage que la carte graphique peut gnrer. Cette valeur fait partie des caractristiques techniques de la carte graphique. Max Horizontal Frequency , frquence maximale du balayage horizontal. Cest la plus forte valeur de la plage de frquences horizontales pour les moniteurs multisynchrones. Cette donne fait partie des caractristiques techniques du moniteur. Max Vertical Frequency , frquence maximale du balayage vertical. Cest la plus forte valeur de la plage de frquences verticales pour les moniteurs multisynchrones. Cette donne fait partie des caractristiques techniques du moniteur. Refresh Rate , taux de rafrachissement des images du mode graphique. Cest le nombre dimages gnres par seconde pour ce mode graphique. Horizontal Resolution , rsolution horizontale du mode graphique. Cest le nombre de pixels visibles dans ce mode graphique. Horizontal Frame Length , longueur totale dune ligne dans ce mode. Cest le nombre de pixels total du mode graphique, visibles ou non. Les pixels non visibles sont les pixels de la zone de blanking horizontal. Horizontal Sync Time , dure minimale des signaux de synchronisation du balayage horizontal. Cette donne fait partie des caractristiques techniques du moniteur. Horizontal Sync Length , longueur des signaux de synchronisation du balayage horizontal, exprime en pixels. Cette donne peut tre dduite directement de la dure des signaux et de la frquence de base du balayage. Horizontal Blanking Time , dure minimale du blanking horizontal dans ce mode graphique. Cest la dure pendant laquelle le faisceau lectronique doit tre teint. Cette donne fait partie des caractristiques techniques du moniteur. Horizontal Blanking Length , longueur totale du blanking en pixels. Cette donne peut tre dduite directement de la dure du blanking et de la frquence de base du balayage.

GCMF

MHF

MVF

RR HR HFL

HST

HSL

HBT

HBL

435

Annexe C. Formulaire pour la cration des lignes de mode de XFree86 Variable


VR VFH

Signication Vertical Resolution , rsolution verticale du mode graphique. Cest le nombre de lignes visibles dans ce mode graphique. Vertical Frame Height , hauteur totale dune image dans ce mode. Cest le nombre de lignes total du mode graphique, lignes non visibles comprises. Les lignes non visibles sont les lignes de la zone de blanking vertical. Vertical Sync Time , dure minimale des signaux de synchronisation du balayage vertical. Cette donne fait partie des caractristiques techniques du moniteur. Vertical Sync Height , nombre de lignes balayes pendant le signal de synchronisation du balayage vertical. Cette donne peut tre dduite de la dure des signaux de synchronisation du balayage vertical, de la longueur totale dune ligne et de la frquence de base du balayage. Vertical Blanking Time , dure minimale du blanking vertical dans ce mode graphique. Cest la dure pendant laquelle le faisceau lectronique doit tre teint avant et aprs un retour de balayage vertical. Cette donne fait partie des caractristiques techniques du moniteur. Vertical Blanking Height , nombre totale de lignes du blanking vertical. Cette donne peut tre dduite de la dure du blanking vertical, de la longueur totale dune ligne et de la frquence de base du balayage.

VST

VSH

VBT

VBH

Certaines des variables mentionnes dans ce tableau peuvent tre directement dduites des autres. Cest en particulier le cas de RR, HSL, HVL, VSH et VBH. Le taux de rafrachissement dpend bien entendu de la frquence de base du balayage et du nombre total de pixels balayer. Il peut donc tre calcul directement avec la formule suivante :
RR = DC (HFL VFH)

La longueur des signaux de synchronisation horizontale et la longueur du blanking dpendent de la frquence de base du balayage et de leurs dures respectives. Elles peuvent donc tre calcules avec les formules suivantes :
HSL = HST DC HBL = HBT DC

Le mme raisonnement peut tre fait pour le nombre de lignes parcourues pendant le signal de synchronisation du balayage vertical et le blanking. Cependant, il ne faut pas utiliser la frquence de base directement quand on calcule sur les lignes, car cette frquence est exprime en pixels par seconde et les lignes contiennent HFL pixels. Il faut donc diviser cette frquence par HFL pour obtenir la frquence en nombres de lignes par seconde. Les formules utiliser seront donc les suivantes :
VSH = VST (DC HFL) VBH = VBT (DC HFL)

Par ailleurs, la longueur totale des lignes doit bien entendue tre suprieure la rsolution plus la taille de la zone de blanking horizontal. Le mme raisonnement peut tre appliqu au nombres de

436

Annexe C. Formulaire pour la cration des lignes de mode de XFree86 lignes total, la rsolution verticale et au nombre de lignes utilises pour le blanking. On disposera donc des relations suivantes :
HFL HR + HBL VFH VR + VBH

Le choix des valeurs des lignes de mode est soumis un certain nombre de contraintes, qui expriment les limitations techniques du moniteur et de la carte graphique. Ces contraintes sont exprimes cidessous. Il va de soi que les signaux de synchronisation de balayage doivent tre compris dans le blanking. Les deux premires contraintes sont donc les suivantes :
HSL HBL VSH VBH

Par ailleurs, la frquence de balayage de base doit bien entendu tre tolre la fois par le moniteur et par la carte graphique. Elle doit donc vrier les deux ingalits suivantes :
DC BP DC GCMF

Enn, il faut que les frquences de balayage horizontales et verticales utilises soient infrieures aux frquences de balayage maximales que le moniteur peut grer. Cette rgle nest valide que pour les moniteurs multisynchrones. Pour les moniteurs frquences xes, il faut que les frquences de balayage horizontale et verticale soient strictement gales celles du moniteur. La contrainte horizontale donne une troisime condition sur DC :
(DC HFL) MHF

Or :
(DC HFL) (DC (HR + HBL))

donc lingalit prcdente est forcment vrie si on sassure que :


DC (HR + HBL) MHF

soit :
DC MHF (HR + HBL) DC MHF (HR + DC HBT)

do la condition suivante :
DC (MHF HR) (1 - MHF HBT)

(le dnominateur tant positif en pratique). La contrainte verticale porte sur le taux de rafrachissement, qui doit tre infrieur la frquence verticale maximale. Elle permet dobtenir une troisime condition sur DC :

437

Annexe C. Formulaire pour la cration des lignes de mode de XFree86


RR = DC / (HFL x VFH) MVF

soit :
DC MVF HFL VFH = MVF (HR + HBL) (VR + VBH) = MVF (HR + DC HBT) (VR + DC VBT)

ce qui donne linquation suivante :


MVF HBT VBT DC2 + (MVF HR VBT + MVF VR HBT - 1) DC + MVF HR VR 0

Cette inquation impose une limite infrieure en dessous de laquelle DC peut se trouver, ou une limite suprieure au del de laquelle il peut se trouver. En pratique, la limite suprieure ne peut jamais tre atteinte. Il faut donc que la frquence de base soit infrieure la premire racine de lquation associe linquation donne ci-dessous. Cette quation est du second degr et sa rsolution ne pose pas de problme particulier. Certains moniteurs ont un temps nul pour les signaux de synchronisation verticaux. Comme le second membre de cette quation est ngatif en pratique, la limite respecter pour la frquence de balayage de base est exprime dans ce cas par linquation suivante :
DC (MVF HR VR) (1 - MVF (HR VBT + VR HBT))

438

Appendix D. GNU Free Documentation License


Version 1.1, March 2000 Copyright (C) 2000 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. 0. PREAMBLE The purpose of this License is to make a manual, textbook, or other written document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modications made by others. This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference. 1. APPLICABILITY AND DEFINITIONS This License applies to any manual or other work that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". A "Modied Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modications and/or translated into another language. A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Documents overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (For example, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or BackCover Texts, in the notice that says that the Document is released under this License. A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specication is available to the general public, whose contents can be viewed and edited directly and straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters.

439

Appendix D. GNU Free Documentation License A copy made in an otherwise Transparent le format whose markup has been designed to thwart or discourage subsequent modication by readers is not Transparent. A copy that is not "Transparent" is called "Opaque". Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standardconforming simple HTML designed for human modication. Opaque formats include PostScript, PDF, proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machinegenerated HTML produced by some word processors for output purposes only. The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the works title, preceding the beginning of the body of the text. 2. VERBATIM COPYING You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. You may also lend copies, under the same conditions stated above, and you may publicly display copies. 3. COPYING IN QUANTITY If you publish printed copies of the Document numbering more than 100, and the Documents license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. If the required texts for either cover are too voluminous to t legibly, you should put the rst ones listed (as many as t reasonably) on the actual cover, and continue the rest onto adjacent pages. If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a publicly-accessible computer-network location containing a complete Transparent copy of the Document, free of added material, which the general network-using public has access to download anonymously at no charge using public-standard network protocols. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document. 4. MODIFICATIONS

440

Appendix D. GNU Free Documentation License You may copy and distribute a Modied Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modied Version under precisely this License, with the Modied Version lling the role of the Document, thus licensing distribution and modication of the Modied Version to whoever possesses a copy of it. In addition, you must do these things in the Modied Version: A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modications in the Modied Version, together with at least ve of the principal authors of the Document (all of its principal authors, if it has less than ve). C. State on the Title page the name of the publisher of the Modied Version, as the publisher. D. Preserve all the copyright notices of the Document. E. Add an appropriate copyright notice for your modications adjacent to the other copyright notices. F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modied Version under the terms of this License, in the form shown in the Addendum below. G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Documents license notice. H. Include an unaltered copy of this License. I. Preserve the section entitled "History", and its title, and add to it an item stating at least the title, year, new authors, and publisher of the Modied Version as given on the Title Page. If there is no section entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modied Version as stated in the previous sentence. J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. K. In any section entitled "Acknowledgements" or "Dedications", preserve the sections title, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. M. Delete any section entitled "Endorsements". Such a section may not be included in the Modied Version. N. Do not retitle any existing section as "Endorsements" or to conict in title with any Invariant Section.

If the Modied Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some

441

Appendix D. GNU Free Documentation License or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modied Versions license notice. These titles must be distinct from any other section titles. You may add a section entitled "Endorsements", provided it contains nothing but endorsements of your Modied Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative denition of a standard. You may add a passage of up to ve words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modied Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modied Version. 5. COMBINING DOCUMENTS You may combine the Document with other documents released under this License, under the terms dened in section 4 above for modied versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodied, and list them all as Invariant Sections of your combined work in its license notice. The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. In the combination, you must combine any sections entitled "History" in the various original documents, forming one section entitled "History"; likewise combine any sections entitled "Acknowledgements", and any sections entitled "Dedications". You must delete all sections entitled "Endorsements." 6. COLLECTIONS OF DOCUMENTS You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document. 7. AGGREGATION WITH INDEPENDENT WORKS A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, does not as a whole count as a Modied Version of the Document, provided no compilation copyright is claimed for the compilation. Such a compilation is called an "aggregate", and this License does not apply to the other self-contained works thus compiled with the Document, on account of their being thus compiled, if they are not themselves derivative works of the Document. If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one quarter of the entire aggregate, the Documents Cover Texts may be placed on covers that surround only the Document within the aggregate. Otherwise they must appear on covers around the whole aggregate.

442

Appendix D. GNU Free Documentation License 8. TRANSLATION Translation is considered a kind of modication, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License provided that you also include the original English version of this License. In case of a disagreement between the translation and the original English version of this License, the original English version will prevail. 9. TERMINATION You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 10. FUTURE REVISIONS OF THIS LICENSE The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/. Each version of the License is given a distinguishing version number. If the Document species that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specied version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.

443

Appendix D. GNU Free Documentation License

444

Annexe E. Licence de documentation libre GNU


Disclaimer This is an unofcial translation of the GNU Free Documentation License into French. It was not published by the Free Software Foundation, and does not legally state the distribution terms for software that uses the GNU FDL--only the original English text of the GNU FDL does that. However, we hope that this translation will help French speakers understand the GNU FDL better. Ceci est une traduction franaise non ofcielle de la Licence de documentation libre GNU. Elle na pas t publie par la Free Software Foundation, et ne xe pas lgalement les conditions de redistribution des documents qui lutilisent -- seul le texte original en anglais le fait. Nous esprons toutefois que cette traduction aidera les francophones mieux comprendre la FDL GNU. Traduction franaise non ofcielle de la GFDL Version 1.1 (Mars 2000) Copyright original : Copyright (C) 2000 Free Sofware Foundation, inc 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Pour la traduction : Version 1.0 FR (Jean Luc Fortin, juillet 2000) Version 1.1 FR (Christian Casteyde, mars 2001) Version 1.1.1 FR (Csar Alexanian, mars 2001) Version 1.1.2 FR (Christian Casteyde et Csar Alexanian, mars 2001) Version 1.1.3 FR (Christian Casteyde, avril 2001) Chacun est libre de copier et de distribuer des copies conformes de cette Licence, mais nul nest autoris la modier. 0 - PRAMBULE Lobjet de cette Licence est de rendre tout manuel, livre ou autre document crit libre au sens de la libert dutilisation, savoir : assurer chacun la libert effective de le copier ou de le redistribuer, avec ou sans modications, commercialement ou non. En outre, cette Licence garantit lauteur et lditeur la reconnaissance de leur travail, sans quils soient pour autant considrs comme responsables des modications ralises par des tiers. Cette Licence est une sorte de copyleft , ce qui signie que les travaux drivs du document dorigine sont eux-mmes libres selon les mmes termes. Elle complte la Licence Publique Gnrale GNU, qui est galement une Licence copyleft, conue pour les logiciels libres. Nous avons conu cette Licence pour la documentation des logiciels libres, car les logiciels libres ont besoin dune documentation elle-mme libre : un logiciel libre doit tre accompagn dun manuel garantissant les mmes liberts que celles accordes par le logiciel lui-mme. Mais cette Licence nest pas limite aux seuls manuels des logiciels ; elle peut tre utilise pour tous les documents crits, sans distinction particulire relative au sujet trait ou au mode de publication. Nous recommandons lusage de cette Licence principalement pour les travaux destins des ns denseignement ou devant servir de documents de rfrence. 1 - APPLICABILIT ET DFINITIONS

445

Annexe E. Licence de documentation libre GNU Cette Licence couvre tout manuel ou tout autre travail crit contenant une notice de copyright autorisant la redistribution selon les termes de cette Licence. Le mot Document se rfre ci-aprs un tel manuel ou travail. Toute personne en est par dnition concessionnaire, et est rfrence ci-aprs par le terme Vous . Une Version modie du Document dsigne tout travail en contenant la totalit ou seulement une portion de celui-ci, copie mot pour mot, modie et/ou traduite dans une autre langue. Une Section secondaire dsigne une annexe au Document, ou toute information indiquant les rapports entre lauteur ou lditeur et le sujet (ou tout autre sujet connexe) du document, sans toutefois tre en rapport direct avec le sujet lui-mme (par exemple, si le Document est un manuel de mathmatiques, une Section secondaire ne traitera daucune notion mathmatique). Cette section peut contenir des informations relatives lhistorique du Document, des sources documentaires, des dispositions lgales, commerciales, philosophiques, ou des positions thiques ou politiques susceptibles de concerner le sujet trait. Les Sections inaltrables sont des sections secondaires considres comme ne pouvant tre modies et cites comme telles dans la notice lgale qui place le Document sous cette Licence. Les Textes de couverture sont les textes courts situs sur les pages de couverture avant et arrire du Document, et cits comme tels dans la mention lgale de ce Document. Le terme Copie transparente dsigne une version numrique du Document reprsente dans un format dont les spcications sont publiquement disponibles et dont le contenu peut tre visualis et dit directement et immdiatement par un diteur de texte quelconque, ou (pour les images composes de pixels) par un programme de traitement dimages quelconque, ou (pour les dessins) par un diteur de dessins courant. Ce format doit tre pouvoir tre accept directement ou tre convertible facilement dans des formats utilisables directement par des logiciels de formatage de texte. Une copie publie dans un quelconque format numrique ouvert mais dont la structure a t conue dans le but exprs de prvenir les modications ultrieures du Document ou dans le but den dcourager les lecteurs nest pas considre comme une Copie Transparente. Une copie qui nest pas Transparente est considre, par opposition, comme Opaque . Le format de chier texte cod en ASCII gnrique et nutilisant pas de balises, les formats de chiers Texinfo ou LaTeX, les formats de chiers SGML ou XML utilisant une DTD publiquement accessible, ainsi que les formats de chiers HTML simple et standard, crits de telle sorte quils sont modiables sans outil spcique, sont des exemples de formats acceptables pour la ralisation de Copies Transparentes. Les formats suivants sont opaques : PostScript, PDF, formats de chiers propritaires qui ne peuvent tre visualiss ou dits que par des traitements de textes propritaires, SGML et XML utilisant des DTD et/ou des outils de formatage qui ne sont pas disponibles publiquement, et du code HTML gnr par une machine laide dun traitement de texte quelconque et dans le seul but de la gnration dun format de sortie. La Page de titre dsigne, pour les ouvrages imprims, la page de titre elle-mme, ainsi que les pages supplmentaires ncessaires pour fournir clairement les informations dont cette Licence impose la prsence sur la page de titre. Pour les travaux nayant pas de Page de titre comme dcrit ci-dessus, la Page de titre dsigne le texte qui sapparente le plus au titre du document et situ avant le texte principal. 2 - COPIES CONFORMES Vous pouvez copier et distribuer le Document sur tout type de support, commercialement ou non, condition que cette Licence, la notice de copyright et la notice de la Licence indiquant que cette Licence sapplique ce Document soient reproduits dans toutes les copies, et que vous ny ajoutiez aucune condition restrictive supplmentaire. Vous ne pouvez pas utiliser un quelconque moyen technique visant empcher ou contrler la lecture ou la reproduction ultrieure des copies que vous

446

Annexe E. Licence de documentation libre GNU avez cres ou distribues. Toutefois, vous pouvez solliciter une rtribution en change des copies. Si vous distribuez une grande quantit de copies, rfrez-vous aux dispositions de la section 3. Vous pouvez galement prter des copies, sous les mmes conditions que celles prcites, et vous pouvez afcher publiquement des copies de ce Document. 3 - COPIES EN NOMBRE Si vous publiez des copies imprimes de ce Document plus de 100 exemplaires, et que la Licence du Document indique la prsence de Textes de couverture, vous devez fournir une couverture pour chaque copie, qui prsente les Textes de couverture des premire et dernire pages de couverture du Document. Les premire et dernire pages de couverture doivent galement vous identier clairement et sans ambigut comme tant lditeur de ces copies. La premire page de couverture doit comporter le titre du Document en mots dimportance et de visibilit gale. Vous pouvez ajouter des informations complmentaires sur les pages de couverture. Les copies du Document dont seule la couverture a t modie peuvent tre considres comme des copies conformes, condition que le titre du Document soit prserv et que les conditions indiques prcdemment soient respectes. Si les textes devant se trouver sur la couverture sont trop importants pour y tenir de manire claire, vous pouvez ne placer que les premiers sur la premire page et placer les suivants sur les pages conscutives. Si vous publiez plus de 100 Copies opaques du Document, vous devez soit fournir une Copie transparente pour chaque Copie opaque, soit prciser ou fournir avec chaque Copie opaque une adresse rseau publiquement accessible dune Copie transparente et complte du Document, sans aucun ajout ou modication, et laquelle tout le monde peut accder en tlchargement anonyme et sans frais, selon des protocoles rseau communs et standards. Si vous choisissez cette dernire option, vous devez prendre les dispositions ncessaires, dans la limite du raisonnable, an de garantir laccs non restrictif la Copie transparente durant une anne pleine aprs la diffusion publique de la dernire Copie opaque (directement ou via vos revendeurs). Nous recommandons, mais ce nest pas obligatoire, que vous contactiez lauteur du Document sufsamment tt avant toute publication dun grand nombre de copies, an de lui permettre de vous donner une version jour du Document. 4 - MODIFICATIONS Vous pouvez copier et distribuer une Version modie du Document en respectant les conditions des sections 2 et 3 prcdentes, condition de placer cette Version modie sous la prsente Licence, dans laquelle le terme Document doit tre remplac par les termes Version modie , donnant ainsi lautorisation de redistribuer et de modier cette Version modie quiconque en possde une copie. De plus, vous devez effectuer les actions suivantes dans la Version modie : A. Utiliser sur la Page de titre (et sur la page de couverture ventuellement prsente) un titre distinct de celui du Document dorigine et de toutes ses versions antrieures (qui, si elles existent, doivent tre mentionnes dans la section Historique du Document). Vous pouvez utiliser le mme titre si lditeur dorigine vous en a donn expressment la permission. B. Mentionner sur la Page de titre en tant quauteurs une ou plusieurs des personnes ou entits responsables des modications de la Version modie, avec au moins les cinq principaux auteurs du Document (ou tous les auteurs si il y en a moins de cinq). C. Prciser sur la Page de titre le nom de lditeur de la Version modie, en tant quditeur du Document. D. Prserver intgralement toutes les notices de copyright du Document. E. Ajouter une notice de copyright adjacente aux autres notices pour vos propres modications.

447

Annexe E. Licence de documentation libre GNU F. Inclure immdiatement aprs les notices de copyright une notice donnant quiconque lautorisation dutiliser la Version modie selon les termes de cette Licence, sous la forme prsente dans lannexe indiqu ci-dessous. G. Prserver dans cette notice la liste complte des Sections inaltrables et les Textes de couverture donns avec la notice de la Licence du Document. H. Inclure une copie non modie de cette Licence. I. Prserver la section nomme Historique et son titre, et y ajouter une nouvelle entre dcrivant le titre, lanne, les nouveaux auteurs et lditeur de la Version modie, tels que dcrits sur la Page de titre, ainsi quun descriptif des modications apportes depuis la prcdente version. J. Conserver ladresse rseau ventuellement indique dans le Document permettant quiconque daccder une Copie transparente du Document, ainsi que les adresses rseau indiques dans le Document pour les versions prcdentes sur lesquelles le Document se base. Ces liens peuvent tre placs dans la section Historique . Vous pouvez ne pas conserver les liens pour un travail datant de plus de quatre ans avant la version courante, ou si lditeur dorigine vous en accorde la permission. K. Si une section Ddicaces ou une section Remerciements sont prsentes, les informations et les apprciations concernant les contributeurs et les personnes auxquelles sadressent ces remerciements doivent tre conserves, ainsi que le titre de ces sections. L. Conserver sans modication les Sections inaltrables du Document, ni dans leurs textes, ni dans leurs titres. Les numros de sections ne sont pas considrs comme faisant partie du texte des sections. M. Effacer toute section intitule Approbations . Une telle section ne peut pas tre incluse dans une Version modie. N. Ne pas renommer une section existante sous le titre Approbations ou sous un autre titre entrant en conit avec le titre dune Section inaltrable.

Si la Version modie contient de nouvelles sections prliminaires ou de nouvelles annexes considres comme des Sections secondaires, et que celles-ci ne contiennent aucun lment copi depuis le Document, vous pouvez votre convenance en dsigner une ou plusieurs comme tant des Sections inaltrables. Pour ce faire, ajoutez leurs titres dans la liste des Sections inaltrables au sein de la notice de Licence de la Version modie. Ces titres doivent tres distincts des titres des autres sections. Vous pouvez ajouter une section nomme Approbations , condition que ces approbations ne concernent que les modications ayant donn naissance la Version modie (par exemple, comptesrendus de revue de document, ou acceptation du texte par une organisation le reconnaissant comme tant la dnition dun standard). Vous pouvez ajouter un passage comprenant jusqu cinq mots en premire page de couverture, et jusqu vingt-cinq mots en dernire page de couverture, la liste des Textes de couverture de la Version modie. Il nest autoris dajouter quun seul passage en premire et en dernire page de couverture par personne ou groupe de personnes ou organisation ayant contribu la modication du Document. Si le Document comporte dj un passage sur la mme couverture, ajout en votre nom ou au nom de lorganisation au nom de laquelle vous agissez, vous ne pouvez pas ajouter de passage supplmentaire ; mais vous pouvez remplacer un ancien passage si vous avez expressment obtenu lautorisation de lditeur de celui-ci. Cette Licence ne vous donne pas le droit dutiliser le nom des auteurs et des diteurs de ce Document des ns publicitaires ou pour prtendre lapprobation dune Version modie. 5 - FUSION DE DOCUMENTS

448

Annexe E. Licence de documentation libre GNU Vous pouvez fusionner le Document avec dautres documents soumis cette Licence, suivant les spcications de la section 4 pour les Versions modies, condition dinclure dans le document rsultant toutes les Sections inaltrables des documents originaux sans modication, et de toutes les lister dans la liste des Sections inaltrables de la notice de Licence du document rsultant de la fusion. Le document rsultant de la fusion na besoin que dune seule copie de cette Licence, et les Sections inaltrables existant en multiples exemplaires peuvent tre remplaces par une copie unique. Sil existe plusieurs Sections inaltrables portant le mme nom mais de contenu diffrent, rendez unique le titre de chaque section en ajoutant, la n de celui-ci, entre parenthses, le nom de lauteur ou de lditeur dorigine, ou, dfaut, un numro unique. Les mmes modications doivent tre ralises dans la liste des Sections inaltrables de la notice de Licence du document nal. Dans le document rsultant de la fusion, vous devez rassembler en une seule toutes les sections Historique des documents dorigine. De mme, vous devez rassembler les sections Remerciements et Ddicaces . Vous devez supprimer toutes les sections Approbations . 6 - REGROUPEMENTS DE DOCUMENTS Vous pouvez crer un regroupement de documents comprenant le Document et dautres documents soumis cette Licence, et remplacer les copies individuelles de cette Licence des diffrents documents par une unique copie incluse dans le regroupement de documents, condition de respecter pour chacun de ces documents lensemble des rgles de cette Licence concernant les copies conformes. Vous pouvez extraire un document dun tel regroupement, et le distribuer individuellement sous couvert de cette Licence, condition dy inclure une copie de cette Licence et de lensemble des rgles concernant les copies conformes. 7 - AGRGATION AVEC DES TRAVAUX INDPENDANTS La compilation du Document ou ses drivs avec dautres documents ou travaux spars et indpendants sur un support de stockage ou sur un mdia de distribution quelconque ne reprsente pas une Version modie du Document tant quaucun copyright nest dpos pour cette compilation. Une telle compilation est appele agrgat , et cette Licence ne sapplique pas aux autres travaux indpendants compils avec le Document, sils ne sont pas eux-mmes des travaux drivs du Document. Si les exigences de la section 3 concernant les Textes de couverture sont applicables ces copies du Document, et si le Document reprsente un volume infrieur un quart du volume total de lagrgat, les Textes de couverture du Document peuvent tre placs sur des pages de couverture qui nencadrent que le Document au sein de lagrgat. Dans le cas contraire, ils doivent apparatre sur les pages de couverture de lagrgat complet. 8 - TRADUCTION La traduction est considre comme une forme de modication, vous pouvez donc distribuer les traductions du Document selon les termes de la section 4. Vous devez obtenir lautorisation spciale des auteurs des Sections inaltrables pour les remplacer par des traductions, mais vous pouvez inclure les traductions des Sections inaltrables en plus des textes originaux. Vous pouvez inclure une traduction de cette Licence condition dinclure galement la version originale en anglais. En cas de contradiction entre la traduction et la version originale en anglais, cest cette dernire qui prvaut. 9 - RVOCATION Vous ne pouvez pas copier, modier, sous-licencier ou distribuer le Document autrement que selon les termes de cette Licence. Toute autre acte de copie, modication, sous-licence ou distribution du Document est sans objet et vous prive automatiquement des droits que cette Licence vous accorde. En revanche, les personnes qui ont reu de votre part des copies ou les droits sur le document sous couvert de cette Licence ne voient pas leurs droits caducs tant quelles en respectent les principes. 10 - RVISIONS FUTURES DE CETTE LICENCE

449

Annexe E. Licence de documentation libre GNU La Free Software Foundation peut publier de temps en temps de nouvelles versions rvises de cette Licence. Ces nouvelles versions seront semblables la prsente version dans lesprit, mais pourront diffrer sur des points de dtail en fonction de nouvelles questions ou problmes. Voyez http://www.gnu.org/copyleft/ pour plus de dtails. Chaque version de cette Licence est dote dun numro de version distinct. Si un Document spcie un numro de version particulier de cette Licence, et porte la mention ou toute autre version ultrieure , vous pouvez choisir de suivre les termes de la version spcie ou ceux de nimporte quelle version ultrieure publie par la Free Software Foundation. Si aucun numro de version nest spci, vous pouvez choisir nimporte quelle version ofcielle publie par la Free Sofware Foundation.

450

Vous aimerez peut-être aussi