You are on page 1of 434

Guide dinstallation et de conguration de Linux

Christian Casteyde

Guide dinstallation et de conguration de Linux par Christian Casteyde

Copyright (c) 2001 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".

Copyright (c) 2001 Christian Casteyde 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.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 librairie crypt 2.1.2. Ajout du paragraphe sur la cong 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 ..................................................................................................................... 13 1. Introduction................................................................................................................................... 14 2. GNU, Linux et les logiciels libres................................................................................................. 16 3. Concepts de base ........................................................................................................................... 18 3.1. Architecture du systme..................................................................................................... 18 3.2. Scurit et utilisateurs ........................................................................................................ 21 3.3. Fonctionnalits du systme de chiers............................................................................... 25 3.4. Structure du systme de chiers......................................................................................... 28 4. Installation du systme de base ................................................................................................... 37 4.1. Rcupration des informations sur le matriel................................................................... 37 4.2. Sauvegarde des donnes..................................................................................................... 38 4.3. Amorage ........................................................................................................................... 38 4.4. Partitionnement du disque.................................................................................................. 39 4.5. Cration des systmes de chiers....................................................................................... 44 4.6. Cration de la partition de swap......................................................................................... 46 4.7. Installation des composants de base................................................................................... 48 5. Commandes de base dUnix......................................................................................................... 51 5.1. Login et dconnexion......................................................................................................... 51 5.2. Arrt et redmarrage du systme ....................................................................................... 52 5.3. Pages de manuel................................................................................................................. 54 5.4. Oprations de base sur les rpertoires................................................................................ 56 5.5. Notions de chemins sous Unix........................................................................................... 57 5.6. Oprations de base sur les chiers ..................................................................................... 59 5.7. Autres commandes utiles ................................................................................................... 60 5.7.1. Passage en mode superviseur ................................................................................ 61 5.7.2. Changement des droits des chiers, du propritaire et du groupe......................... 61 5.7.3. Gestion des liens.................................................................................................... 62 5.7.4. Montage et dmontage dun systme de chiers................................................... 63 5.7.5. Recherche de chiers............................................................................................. 64 5.7.6. Recherche dun texte dans un chier..................................................................... 64 5.7.7. Remplacement de texte dans les chiers ............................................................... 65 5.7.8. Compression et dcompression des chiers .......................................................... 66 5.7.9. Archivage de chiers ............................................................................................. 66 5.7.10. Gestion des paquetages........................................................................................ 67 5.8. vi, lditeur de chiers de base........................................................................................... 68 5.9. Utilisation du shell bash ..................................................................................................... 71 5.9.1. Contrle des processus .......................................................................................... 71 5.9.1.1. Lancement dun programme en arrire-plan............................................. 72 5.9.1.2. Listing des processus ................................................................................ 73 5.9.1.3. Notion de signal ........................................................................................ 73

5.9.1.4. Arrt dun processus ................................................................................. 74 5.9.1.5. Gel dun processus.................................................................................... 74 5.9.1.6. Relancement dun processus..................................................................... 75 5.9.2. Redirections........................................................................................................... 75 5.9.2.1. Principe de base ........................................................................................ 76 5.9.2.2. Redirections de donnes en entre............................................................ 76 5.9.2.3. Redirection de donnes en sortie .............................................................. 77 5.9.2.4. Insertion de documents ............................................................................. 79 5.9.3. Les pipes................................................................................................................ 79 5.9.3.1. Syntaxe des pipes...................................................................................... 79 5.9.3.2. Les pipes nomms..................................................................................... 82 5.9.3.3. La commande tee ...................................................................................... 82 5.9.3.4. La commande xargs .................................................................................. 83 5.9.4. Manipulation des variables denvironnement........................................................ 84 5.9.5. Caractre dchappement et chanes de caractres................................................ 91 5.9.6. Les substitutions .................................................................................................... 92 5.9.6.1. Gnration de chanes de caractres selon un motif ................................. 93 5.9.6.2. Substitution du nom dutilisateur.............................................................. 93 5.9.6.3. Remplacements de variables..................................................................... 93 5.9.6.4. Substitution du rsultat dune commande................................................. 96 5.9.6.5. valuation dexpressions arithmtiques.................................................... 97 5.9.6.6. Substitution de commandes ...................................................................... 97 5.9.6.7. Dcoupage en mots ................................................................................... 98 5.9.6.8. Remplacement des caractres gnriques................................................. 99 5.9.7. Les expressions rgulires ..................................................................................... 99 5.9.8. Structures de contrle .......................................................................................... 101 5.9.8.1. Les instructions composes..................................................................... 101 5.9.8.2. Les tests................................................................................................... 102 5.9.8.3. Le branchement conditionnel.................................................................. 106 5.9.8.4. Les boucles.............................................................................................. 107 5.9.8.5. Les itrations........................................................................................... 107 5.9.8.6. Les ruptures de squence ........................................................................ 108 5.9.8.7. Les fonctions........................................................................................... 109 5.9.8.8. Les entres / sorties de donnes .............................................................. 110 5.9.9. Les alias ............................................................................................................... 111 5.9.10. Les scripts shell ................................................................................................. 112 6. Conguration du systme de base ............................................................................................. 114 6.1. Sauvegarde de la conguration dinstallation .................................................................. 114 6.2. Notion de niveau dexcution .......................................................................................... 115 6.3. Notion de chiers spciaux de priphriques .................................................................. 117 6.4. Conguration de LILO..................................................................................................... 119 6.5. Gestion des systmes de chiers ...................................................................................... 123 6.5.1. Conguration des disques durs IDE .................................................................... 124 6.5.2. Vrication des systmes de chiers................................................................... 126

6.5.3. Conguration du montage des systmes de chiers............................................ 129 6.6. Mise lheure du systme................................................................................................ 132 6.7. Conguration du lancement automatique des tches ....................................................... 135 6.8. Conguration des terminaux virtuels ............................................................................... 137 6.9. Conguration de la console.............................................................................................. 140 6.9.1. Pages de codes et Unicode................................................................................... 140 6.9.2. Principe de fonctionnement du clavier ................................................................ 141 6.9.3. Principe de fonctionnement de lcran de la console .......................................... 144 6.9.4. Conguration du clavier ...................................................................................... 145 6.9.4.1. Dnition de scancodes .......................................................................... 146 6.9.4.2. Dnition dun plan de clavier ............................................................... 148 6.9.4.3. Modication des paramtres du clavier .................................................. 152 6.9.5. Choix de la police de caractres .......................................................................... 154 6.9.6. Conguration de la ligne de communication....................................................... 155 6.9.7. Description des terminaux................................................................................... 156 6.9.8. Paramtrage des applications............................................................................... 160 6.9.8.1. Conguration du clavier pour la bibliothque readline .......................... 160 6.9.8.2. Conguration du clavier pour vi ............................................................. 161 6.9.8.3. Conguration du clavier pour less .......................................................... 165 6.9.9. Conguration de la souris.................................................................................... 167 6.10. Modules du noyau .......................................................................................................... 168 6.11. Conguration des priphriques additionnels................................................................ 173 6.12. Conguration des cartes son .......................................................................................... 177 6.13. Installation dune carte graphique 3D ............................................................................ 181 6.14. Installation dune carte dacquisition vido ................................................................... 183 6.15. Installation dun graveur de CD-ROM........................................................................... 185 6.15.1. Notions de base sur le gravage sous Linux........................................................ 186 6.15.2. Conguration du noyau ..................................................................................... 186 6.15.3. Conguration des modules du noyau ................................................................ 188 6.15.4. Installation des logiciels de gravage .................................................................. 189 6.15.5. Utilisation des logiciels de gravage ................................................................... 189 6.16. Installation des priphriques USB................................................................................ 192 6.16.1. Conguration du noyau ..................................................................................... 193 6.16.2. Dtection automatique des priphriques USB................................................. 193 6.17. Conguration de limprimante....................................................................................... 195 6.17.1. Filtres dimpression ........................................................................................... 196 6.17.2. Commandes dimpression ................................................................................. 197 6.17.3. Conguration des les dimpression ................................................................. 197 7. Conguration du rseau............................................................................................................. 200 7.1. Notions de rseau TCP/IP ................................................................................................ 200 7.1.1. Gnralits sur les rseaux .................................................................................. 200 7.1.2. Le protocole IP .................................................................................................... 201 7.1.3. Le protocole TCP ................................................................................................ 206 7.1.4. Les protocoles de haut niveau ............................................................................. 208

7.2. Conguration du rseau sous Linux................................................................................. 208 7.2.1. Conguration statique des interfaces rseau ....................................................... 209 7.2.2. Dnition des rgles de routage .......................................................................... 210 7.2.3. Dnition du nom de la machine......................................................................... 212 7.2.4. Rsolution des noms de domaines....................................................................... 213 7.2.5. Utilisation des protocoles DHCP et BOOTP....................................................... 215 7.2.5.1. Conguration dun client BOOTP .......................................................... 215 7.2.5.2. Conguration dun client DHCP ............................................................ 216 7.2.6. Dnition des protocoles de haut niveau............................................................. 217 7.2.7. Le dmon inetd .................................................................................................... 219 7.2.8. Conguration de la scurit................................................................................. 220 7.3. Conguration de la connexion Internet ......................................................................... 223 7.3.1. Le protocole PPP ................................................................................................. 223 7.3.2. Cration dune connexion Internet ................................................................... 225 7.3.3. Utilisation du mail ............................................................................................... 230 7.3.4. Les autres outils de connexion............................................................................. 231 7.4. Firewalls et partages de connexion Internet .................................................................. 231 7.4.1. Mcanismes de ltrage du noyau ........................................................................ 232 7.4.2. Translations dadresses et masquerading ............................................................ 234 7.4.3. Trajet des paquets ................................................................................................ 235 7.4.4. Conguration du noyau et installation des outils ................................................ 236 7.4.5. Utilisation diptables ........................................................................................... 238 7.4.5.1. Manipulation des chanes........................................................................ 238 7.4.5.2. Manipulation des rgles .......................................................................... 239 7.4.6. Exemple de rgles................................................................................................ 240 7.4.6.1. Exemple de rgles de ltrage .................................................................. 241 7.4.6.2. Exemple de partage de connexion Internet .......................................... 242 7.4.7. Conguration des clients ..................................................................................... 243 7.5. Conguration des fonctions serveur................................................................................. 243 7.5.1. Paramtrage des connexions extrieures ............................................................. 243 7.5.2. Conguration des liaisons PPP............................................................................ 245 7.5.3. Liaison de deux ordinateurs par un cble srie ................................................... 249 7.5.4. Installation dun proxy ........................................................................................ 250 7.5.5. Conguration dun serveur DHCP ...................................................................... 254 7.6. Systmes de chiers en rseau ......................................................................................... 256 7.6.1. Installation dun serveur de chiers NFS ............................................................ 257 7.6.2. Conguration dun client NFS ............................................................................ 261 7.6.3. Installation dun serveur de chiers SMB ........................................................... 262 7.6.4. Conguration dun client SMB ........................................................................... 271 8. Notions de compilation et de sources ........................................................................................ 274 8.1. Vocabulaire....................................................................................................................... 274 8.2. Compilation de GCC........................................................................................................ 279 8.2.1. Prrequis .............................................................................................................. 280 8.2.2. Installation des sources........................................................................................ 280

8.2.3. Conguration....................................................................................................... 281 8.2.4. Compilation ......................................................................................................... 282 8.2.5. Installation de GCC ............................................................................................. 282 9. Compilation du noyau de Linux................................................................................................ 283 9.1. Installation des sources de Linux ..................................................................................... 283 9.2. Lancement du programme de conguration .................................................................... 284 9.3. Choix des options de conguration.................................................................................. 285 9.3.1. Menu Code maturity level options ................................................................ 285 9.3.2. Menu Loadable module support .................................................................... 285 9.3.3. Menu Processor type and features ................................................................. 286 9.3.4. Menu General setup ....................................................................................... 287 9.3.5. Menu Memory Technology Devices (MTD) ................................................. 289 9.3.6. Menu Parallel port support ............................................................................ 289 9.3.7. Menu Plug and Play conguration ................................................................ 290 9.3.8. Menu Block devices ...................................................................................... 290 9.3.9. Menu Multi-device support (RAID and LVM)................................................. 292 9.3.10. Menu Networking options ........................................................................... 293 9.3.11. Menu IP: Netlter Conguration ................................................................. 298 9.3.12. Menu IPv6: Netlter Conguration ............................................................. 301 9.3.13. Menu QoS and/or fair queueing .................................................................. 301 9.3.14. Menu Telephony Support ............................................................................ 301 9.3.15. Menu ATA/IDE/MFM/RLL support ........................................................... 302 9.3.16. Menu IDE, ATA and ATAPI Block devices ................................................. 302 9.3.17. Menu SCSI support ..................................................................................... 304 9.3.18. Menu SCSI low-level drivers ....................................................................... 305 9.3.19. Menu PCMCIA SCSI adapter support ........................................................ 306 9.3.20. Menu IEEE 1394 (FireWire) support .......................................................... 306 9.3.21. Menu I2O support ........................................................................................ 306 9.3.22. Menu Network device support .................................................................... 307 9.3.23. Menu ARCnet devices ................................................................................. 309 9.3.24. Menu AppleTalk devices ............................................................................. 309 9.3.25. Menu Ethernet (10 or 100Mbit) .................................................................. 310 9.3.26. Menu Ethernet (1000 Mbit) ......................................................................... 310 9.3.27. Menu Wireless LAN (non-hamradio) .......................................................... 310 9.3.28. Menu Token ring devices ............................................................................. 311 9.3.29. Menu Wan interfaces ................................................................................... 311 9.3.30. Menu PCMCIA network device support ..................................................... 312 9.3.31. Menu ATM drivers ...................................................................................... 312 9.3.32. Menu Amateur Radio support ..................................................................... 313 9.3.33. Menu AX.25 network device drivers ........................................................... 313 9.3.34. Menu IrDA subsystem support .................................................................... 313 9.3.35. Menu Infrared-port device drivers ............................................................... 313 9.3.36. Menu ISDN subsystem ................................................................................ 313 9.3.37. Menu ISDN feature submodules ................................................................. 314

9.3.38. Menu Passive ISDN cards ........................................................................... 314 9.3.39. Menu Active ISDN cards ............................................................................ 314 9.3.40. Menu Old CD-ROM drivers (not SCSI, not IDE) ....................................... 315 9.3.41. Menu Input Core Support ............................................................................ 315 9.3.42. Menu Character devices .............................................................................. 316 9.3.43. Menu I2C support ........................................................................................ 319 9.3.44. Menu Mice ................................................................................................... 319 9.3.45. Menu Joystick support ................................................................................. 320 9.3.46. Menu Watchdog cards ................................................................................. 320 9.3.47. Menu Ftape, the oppy tape device driver .................................................. 321 9.3.48. Menu PCMCIA character device support ................................................... 322 9.3.49. Menu Multimedia devices ........................................................................... 322 9.3.50. Menu Video For Linux ................................................................................ 322 9.3.51. Menu Radio Adapters .................................................................................. 323 9.3.52. Menu File systems ....................................................................................... 323 9.3.53. Menu Network File Systems ....................................................................... 324 9.3.54. Menu Partition Types ................................................................................... 325 9.3.55. Menu Native Language Support .................................................................. 325 9.3.56. Menu Console drivers .................................................................................. 326 9.3.57. Menu Frame-buffer support ......................................................................... 326 9.3.58. Menu Sound ................................................................................................. 327 9.3.59. Menu USB support ...................................................................................... 327 9.3.60. Menu USB Serial Converter support ........................................................... 329 9.3.61. Menu Kernel hacking .................................................................................. 329 9.4. Compilation du noyau ...................................................................................................... 329 9.5. Installation du noyau ........................................................................................................ 330 9.6. Compilation des modules................................................................................................. 332 9.7. Installation des modules................................................................................................... 332 10. Installation de XWindow.......................................................................................................... 334 10.1. Gnralits sur XWindow .............................................................................................. 335 10.2. Conguration de XFree86.............................................................................................. 337 10.2.1. Gnration automatique du chier XF86Cong ............................................... 338 10.2.2. Utilisation de xf86cong ................................................................................... 338 10.2.3. Utilisation de xf86cfg ........................................................................................ 342 10.2.3.1. Conguration en mode graphique......................................................... 342 10.2.3.2. Conguration en mode texte................................................................. 345 10.2.4. Description du chier XF86Cong ................................................................... 346 10.2.4.1. Structure gnrale du chier XF86Cong ............................................ 346 10.2.4.2. Section Files .................................................................................... 348 10.2.4.3. Section ServerFlags ........................................................................ 348 10.2.4.4. Section Module ............................................................................... 349 10.2.4.5. Section InputDevice ........................................................................ 350 10.2.4.6. Sections Device ............................................................................... 351 10.2.4.7. Sections Monitor ............................................................................. 353

10.2.4.8. Sections Modes ............................................................................... 362 10.2.4.9. Sections Screen ............................................................................... 363 10.2.4.10. Sections ServerLayout .................................................................. 364 10.2.5. Informations utilises lors du dmarrage de XFree86....................................... 366 10.2.6. Utilisation de xvidtune ...................................................................................... 366 10.3. Utilisation du driver frame buffer du noyau................................................................... 368 10.3.1. Conguration du noyau et installation du driver ............................................... 368 10.3.2. Conguration du serveur X ............................................................................... 369 10.4. Conguration des terminaux X ...................................................................................... 371 10.4.1. Principe de fonctionnement de xdm .................................................................. 371 10.4.2. Conguration de xdm ........................................................................................ 372 10.4.2.1. Serveurs X locaux ................................................................................. 372 10.4.2.2. Serveurs X utilisant XDMCP................................................................ 374 10.4.2.3. Paramtrage du serveur X pour utiliser le protocole XDMCP ............. 376 10.4.2.4. Fichiers dinitialisation de sessions ...................................................... 377 10.4.3. Paramtrage des terminaux X............................................................................ 378 10.4.3.1. La commande xset ................................................................................ 378 10.4.3.2. Conguration de la disposition du clavier ............................................ 379 10.5. Paramtrage des applications et ressources X................................................................ 382 10.6. Gestion de la scurit sous XWindow............................................................................ 385 10.6.1. La commande xhost........................................................................................... 385 10.6.2. La commande xauth .......................................................................................... 386 10.7. Gestion des polices de caractres................................................................................... 387 10.7.1. Gestion des polices de caractres sous XWindow............................................. 387 10.7.2. Installation des polices Truetype ....................................................................... 390 10.7.2.1. Conguration du serveur X................................................................... 391 10.7.2.2. Conguration des polices Truetype pour limpression ......................... 393 10.7.2.2.1. Conversion des polices Truetype en polices Adobe de Type 42393 10.7.2.2.2. Installation des polices Truetype pour GhostScript ................. 394 10.7.2.2.3. Conguration de StarOfce pour lutilisation des polices Truetype ............................................................................................ 395 10.7.3. Conguration dun serveur de polices............................................................... 398 10.8. Problmes classiques rencontrs .................................................................................... 401 11. Conclusion ................................................................................................................................. 403 A. Compilation et mise jour des principaux composants du systme..................................... 404 A.1. Compilation de make 3.79.1 ........................................................................................... 404 A.2. Compilation des binutils 2.10.1 ...................................................................................... 404 A.3. Compilation de la librairie C 2.2.2.................................................................................. 405 A.4. Compilation de OpenSSL ............................................................................................... 408 A.5. Compilation de XFree86 4.0.3 ........................................................................................ 409 A.6. Compilation de MESA 3.4.1 ........................................................................................... 411 A.7. Compilation de KDE 2.1.1.............................................................................................. 412 A.8. Compilation de Samba 2.0.7 ........................................................................................... 415

10

B. Formulaire pour la cration des lignes de mode de XFree86................................................. 417 C. GNU Free Documentation License........................................................................................... 422 D. Licence de documentation libre GNU ...................................................................................... 428

11

Liste des tableaux


3-1. Caractristiques des liens physiques et symboliques .................................................................. ?? 3-2. Hirarchie standard du systme de chiers ................................................................................. 31 5-1. Groupes de pages de man............................................................................................................ 54 5-2. Principaux signaux Unix ............................................................................................................. 74 5-3. Variables denvironnements courantes ........................................................................................ 86 5-4. Tests sur les chiers................................................................................................................... 105 7-1. Plages dadresses IP rserves pour un usage personnel .......................................................... 203 10-1. Frquence maximale des moniteurs .......................................................................................... ?? 10-2. Numros des modes graphiques VESA................................................................................... 369

12

Remarques de lauteur
Il se peut que certaines informations fournies dans ce document soient spciques mes distributions de Linux. titre indicatif, jutilise une distribution SuSE 7.0 et une distribution Slackware 7.0, toutes deux avec le noyau 2.4.4. de Linux. Je me suis efforc de rendre ce document gnrique et indpendant de la distribution par comparaison, mais je ne peux pas le garantir. En particulier, il est connu que la structure des systmes de chiers de SuSE nest pas tout fait standard, et que la Slackware nutilise pas la notion de niveaux dexcution par dfaut. 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. Je remercie davance les gens qui pourront menvoyer des remarques concernant des imprcisions, voire les horreurs et les neries que jai 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). Bien entendu, les modications ne seront faites que si jai le temps de les faire...

13

Chapitre 1. Introduction
Linstallation de Linux est une opration relativement complique, qui 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 problme, 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 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

14

Chapitre 1. Introduction

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 dinformations 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 huit parties distinctes, qui correspondent essentiellement aux grandes tapes que vous suivrez pour installer 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, 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. Bien que, comme les deux premires parties, elle ne traite pas de linstallation proprement parler, sa lecture est vivement recommande. En effet, vous aurez utiliser les commandes dcrites dans ce chapitre pour raliser la conguration de votre nouveau systme. La cinquime partie dcrit les oprations de conguration du systme de base. Cette partie est en relation troite avec la huitime partie, qui traite des fonctionnalits du noyau. Elle pourra tre relue avec bnce lorsque vous aurez congur une premire fois votre noyau. La sixime 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. La septime partie donne les notions de base sur les mcanismes de compilation, qui seront utilises dans la huitime partie. Elle dcrit galement la manire de faire pour compiler la dernire version de GCC, le compilateur C/C++ de GNU. La huitime partie dcrit la compilation du noyau du systme, opration indispensable pour obtenir un systme qui colle la machine et aux fonctionnalits dsires. 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.

15

Chapitre 2. GNU, Linux et les logiciels libres


Vous entendrez souvent parler de la licence 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 GNU, 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 de facto gratuits, car ils sont librement redistribuables par quiconque en possde une copie. An de protger les logiciels libres, la Free Software Foundation a rdig la licence GNU (en fait, cette licence a originellement t rdige pour le projet GNU, qui sera dcrit plus loin). 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. 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. An de garantir la libert de modication des logiciels libres, la licence GNU impose aux distributeurs de fournir leur code source, cest--dire tous les chiers utiliss pour crer le logiciel. Vous trouverez de plus amples informations sur la notion de code source dans le Chapitre 8. Si vous dsirez lire la licence GNU, vous pouvez en trouver une copie dans le chier /usr/src/linux/COPYING une fois que vous aurez install Linux. Les programmes distribus sous la licence GNU ont souvent t crits par des passionns dinformatique, et ont t amliors au l du temps par les diffrentes personnes qui les ont utiliss. Il est mme courant de voir des entreprises participer au dveloppement des logiciels libres, pour diverses raisons. On peut se demander quel est lintrt pour une entreprise de dvelopper un logiciel libre dont elle ne tirera aucun prot. En gnral, plusieurs critres peuvent entrer en ligne de compte. Ce peut tre la publicit, le parrainage, ou tout simplement parce que le logiciel est utilis en interne et requiert une amlioration. Dautres socits fournissent un support et un service aprs-vente payants sur les logiciels libres quelles distribuent (cest notamment le cas pour les distributions de Linux). Quoi quil en soit, cette participation collective a toujours pour but damliorer le logiciel. De plus, les gens qui dveloppent un logiciel libre sont souvent des spcialistes de ce type de logiciel, ou des utilisateurs avertis. Il est donc logique quau bout dun certain temps, les logiciels libres fassent partie des meilleurs logiciels dans leur catgorie. Une autre caractristique de ce modle de dveloppement est laccessibilit au code source des programmes et la libert de le modier. Cette facilit est la source de la rapidit avec laquelle les bogues et les erreurs sont identis, et de la ractivit du monde des logiciels libres en gnral. On peut considrer quun logiciel utilis par un grand nombre de personnes est virtuellement sans bogue connu, puisque si tel tait le cas il serait immdiatement corrig. Ce modle de dveloppement est donc certainement celui qui conduit lune des plus grandes qualits logicielles qui soient.

16

Chapitre 2. GNU, Linux et les logiciels libres

Comme on la dj dit, la licence GNU a t cre par la Free Software Foundation dans le cadre du projet GNU. Ce projet, toujours en cours de ralisation, a pour but dcrire 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. La Free Software Foundation a dj crit la plupart des utilitaires Unix dans le cadre du projet GNU, mais 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 un noyau parmi tant dautres, ceci prs quil est, lui aussi, distribu sous la licence GNU, 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 . Sous cette dnomination, il est clair que ce systme est constitu des outils GNU fonctionnant sous 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. Prcisons que la licence GNU 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 FreeBSD (un autre systme Unix libre) exige galement la distribution des sources, mais interdit lexploitation commerciale des logiciels. Cela explique labsence de distribution de FreeBSD et le fait quil est quasiment inconnu du grand public bien quil soit techniquement meilleur que Linux. Quelques outils fournis avec Linux sont distribus sous cette licence. 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 dnitions inniment rcursives. 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.

17

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 des utilisateurs. Cette complexit implique un grand nombre derreurs, danomalies et de dysfonctionnement 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.

18

Chapitre 3. Concepts de base

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. 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 fentre ( 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 fentre 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 fentre 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

19

Chapitre 3. Concepts de base

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 ; le shell ; les programmes en ligne de commande, dont le serveur XWindow ; le gestionnaire de fentre ; le gestionnaire de bureau ; les applications XWindow.

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 fentre 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 driver 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 ;

20

Chapitre 3. Concepts de base

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.

3.2. Scurit et utilisateurs


Linux est un systme multi-utilisateurs. 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, par lintermdiaire des ports srie, mais ce nest pas recommand). 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 multi-utilisateurs, 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

21

Chapitre 3. Concepts de base

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 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

22

Chapitre 3. Concepts de base

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 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

23

Chapitre 3. Concepts de base

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. Contrairement au bit setuid cependant, il 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 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,

24

Chapitre 3. Concepts de base

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 du systme de chiers


Les systmes de chiers des systmes Unix sont trs puissants. Ils assurent la fois fonctionnalits, performances, et abilit. 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 rpertoire. Heureusement, ils permettent de faire beaucoup mieux que cela ! 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 pas de toutes les fonctionnalits demandes par le systme de chiers virtuel, dans ce cas, la requte de lapplication dsirant effectuer cette opration 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 ci-dessous :

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 ;

25

Chapitre 3. Concepts de base

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.

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 ; les systmes de chiers FAT, FAT32 et FAT32X (utiliss par les systmes DOS et Windows) ; le systme de chiers NTFS en lecture seule pour linstant (utilis par Windows NT) ; 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 (extension de Microsoft pour Windows 95) et Rock Ridge (extension de tous les systmes Unix) ; le systme de chiers NFS (utilis pour distribuer sur un rseau un systme de chiers) ; 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).

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 et le plus performant, 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) ;

26

Chapitre 3. Concepts de base

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 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 rpertoires 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

27

Chapitre 3. Concepts de base

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 la 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 libres 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 Rfrence absolue Peuvent tre dplacs Suivent la cible Oui Oui Avec la cible Non Oui Oui Oui Non Oui Oui

Si dplacs avec elle Non

Grent la suppression de la cible Oui Peuvent rfrencer des cibles sur Non un autre systme de chiers Peuvent rfrencer des Non rpertoires

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.

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

28

Chapitre 3. Concepts de base

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 donnes 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 (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 slashs 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 lecteurs. Les systmes de chiers Unix sont dits mono-tte, 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). 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

29

Chapitre 3. Concepts de base

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 dopration 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 ; 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 des 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 :

30

Chapitre 3. Concepts de base

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 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 souvent 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 de la partition root.

/boot/

/boot/vmlinuz

31

Chapitre 3. Concepts de base

Rpertoire
/boot/System.map

Signication 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 bloqu se trouve. 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 virtuels, gr directement par le noyau. Le rpertoire /dev/ ne
contient dans ce cas que les fichiers 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 fichiers racine.

/dev/

/sbin/

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 fichiers racine.

/bin/

/lib/

/lib/modules/

Rpertoire contenant les modules du noyau. Ce rpertoire contient les modules additionnels du noyau. Ces modules sont des composants logiciels du noyau, mais ne sont pas chargs immdiatement pendant lamorage. 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.

32

Chapitre 3. Concepts de base

Rpertoire
/etc/

Signication Rpertoire contenant tous les chiers de conguration du systme. Ce rpertoire doit tre imprativement plac dans le systme de chiers racine. Dans certaines distributions, les chiers de conguration de XWindow sont placs directement dans le rpertoire /etc/X11/. 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.

/etc/X11/ /etc/opt/ /tmp/

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

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.

/usr/lib/

/usr/include/

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 fichiers den-ttes pour crer des programmes pour XWindow en C et C++.

/usr/X11R6/

/usr/src/

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.

/usr/src/linux/

33

Chapitre 3. Concepts de base

Rpertoire
/usr/local/

Signication Rpertoire contenant les programmes dextension du systme indpendants de la distribution. Ce nest pas le rpertoire dinstallation des applications. 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 signification que les rpertoires du mme nom de /usr/, ceci prs quils ne concernent que les extensions locales du systme, donc indpendantes de la distribution.

/var/

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.

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

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.

/var/spool/

/var/locks/

/var/cache/

34

Chapitre 3. Concepts de base

Rpertoire
/opt/

Signication 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 fichiers en lecture seule, et que les applications utilisent le rpertoire /var/opt/ pour travailler.

/home/

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. 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 fichiers 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 devra tre le rpertoire racine.

/root/

/mnt/

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.

/proc/

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.

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.

35

Chapitre 3. Concepts de base

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 catgories 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 blibliothques 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 8.

36

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.

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 ; date et type du BIOS (PnP, PCI, etc.) ; type de souris (srie, PS/2, interface bus propritaire) ; nombre de ports srie, ainsi que leurs paramtres (ports dentre/sortie, lignes dinterruption) ; nombre de ports parallle, ainsi que leurs paramtres (ports dentre/sortie, lignes dinterruption) ; types de disques durs (IDE, ATAPI, SCSI), ainsi que leurs taille et gomtrie (ttes, cylindres, secteurs par piste) ; si vous disposez dun contrleur de disque SCSI, marque et modle de ce contrleur (ou, dfaut, de la carte SCSI) ; sinon, nom du contrleur de disque IDE (regardez sur le chipset de la carte mre !) ; type de lecteur de CD-ROM (IDE, ATAPI, SCSI, connect sur carte son) ; type de carte son (ISA, PCI, PnP), avec son nom et sa marque ; nom, modle et marque de la carte graphique, taille de sa mmoire vido ; nom, modle et marque de lcran, avec ses frquences de balayage horizontales et verticales.

37

Chapitre 4. Installation du systme de base

Il se peut que vous nayez pas besoin de ces informations et que linstallation se passe sans problme. Cependant, si daventure Linux exige que vous les connaissiez, mieux vaut pouvoir lui rpondre.

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 !

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 cous 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 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 (sauf si vous ne disposez pas de place libre sur votre disque dur pour crer une partition Linux. Dans ce cas, vous devriez lire tout de suite la section suivante, et ne pas essayer de dmarrer Linux immdiatement. Vous reviendrez cette section lorsque vous aurez russi dgager de la place pour les partitions 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

38

Chapitre 4. Installation du systme de base

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 :

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 problme lorsquon installe Linux sur une machine neuve, mais elle peut tre dlicate si un autre systme dexploitation est dj install. Le problme le plus courant est labsence de place disponible sur le disque dur pour placer une partition Linux. Ce problme na pas de solution : il faut supprimer une autre partition appartenant un autre systme, ou la rduire. Souvent, rduire une partition revient sauvegarder les donnes, la supprimer, la recrer avec une taille infrieure et restaurer les donnes.

39

Chapitre 4. Installation du systme de base

De toutes faons, dans ce type de situation, il faut faire des sauvegardes. Cependant, il existe une possibilit pour les partitions FAT. On peut dfragmenter la partition an de placer toutes les donnes au dbut de celle-ci, et modier la variable qui contient sa taille dans la table des partitions pour la rduire. Cette opration ne reconstruit pas le systme de chiers FAT, ce qui fait que cette dernire est trop grosse pour la taille de la partition quelle gre aprs rduction. Cela nest pas gnant, et cette technique a lavantage dtre rapide. La plupart des distributions de Linux fournissent des utilitaires DOS sur leur CD-ROM dinstallation, gnralement dans le rpertoire dosutils du CD-ROM. Parmi ces utilitaires, vous trouverez lutilitaire ps, qui permet justement de modier la taille dune partition FAT. Attention cependant, les FAT32 et FAT32X ne sont gres qu partir de la version 2.0 de ps.
Note : Attention ! Vriez bien les options du dfragmenteur de systme de chiers que vous utilisez : quelques outils consolident bien lespace libre mais placent les chiers les plus couramment accds la n de la partition FAT pour optimiser les temps daccs (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 perdrez dnitivement vos principaux chiers et votre FAT sera dans un tat incohrent. En fait, il est possible dinstaller Linux sur une partition FAT, laide dune extension de ce systme de chier 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 le systme de chiers natif ext2 ; 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 ; le systme de chiers ext2 est plus performant quun systme de chiers FAT32, mme 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.

Quoi quil en soit, il faut dterminer les tailles de partitions. Il est normal de disposer dau moins trois partitions :

une partition contenant le noyau, qui doit se trouver dans les 1024 premiers cylindres pour que le BIOS puisse y accder au dmarrage ; une partition de swap, que Linux utilisera pour y stocker temporairement des donnes lorsquil aura besoin de rcuprer un peu de place en mmoire ; une partition contenant les programmes et les donnes.

40

Chapitre 4. Installation du systme de base

En ralit, il est mme recommand de placer les donnes des utilisateurs sur une partition spare, et les programmes sur une partition accessible en lecture seule, pour minimiser les risques de pertes de donnes. Cela ncessite de disposer dencore deux autres partitions, ce qui amne le nombre de partition cinq. Si lon spare galement les applications (places dans /opt/) des programmes dextensions du systme (placs dans /usr/), il faut mme 6 partitions. Comme les tables de partitions ne contiennent que quatre entres, il faut utiliser des partitions logiques. Linux sait parfaitement grer ce type de partitions, de manire compltement transparente. Lavantage de cette organisation est une trs grande sret du systme. Son inconvnient est videmment quil faut connatre lavance 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 fait de rinstaller le systme en cas de perte totale dune partition nest pas le plus gros problme. Cela dit, il est trs rare que le systme de chiers ext2 soit corrompu, et quand il lest, il est peut tre rpar facilement. Un particulier peut installer et essayer des programmes trs couramment, il est donc logique de regrouper lespace de donnes utilisateur avec lespace dinstallation des programmes. En revanche, il reste prudent de continuer placer le noyau sur sa propre partition, ne serait-ce que pour simplier linstallation. Vous devrez galement prendre en compte lventualit dune rinitialisation complte du systme de chiers systme pour une nouvelle installation ou une mise jour du systme. Il peut tre agrable dans ce cas de disposer dune partition indpendante pour les donnes utilisateurs, sur laquelle vous pourrez sauvegarder vos chiers de conguration... Lune des solutions les plus simples consiste videmment avoir un deuxime disque, auquel cas le problme ne se pose plus. Toutefois, si vous dcidez de placer les programmes et les donnes utilisateurs dans la mme partition, vous pouvez envisager les tailles de partitions suivantes :

partition rserve au noyau pour le dmarrage : 1 cylindre du disque (il faut au moins 2 Mo, ce qui est infrieur la taille dun cylindre sur la plupart des disques durs rcents). Il est inutile de consacrer plus de 4 Mo pour cette partition, elle ne contiendra au plus que deux noyaux et quelques autres chiers ; partition de swap : 2 fois la mmoire vive de lordinateur, avec pour limite suprieure 128 Mo. Il est inutile de consacrer plus de place que cela, car il est trs rare davoir besoin de plus de 192 Mo de mmoire virtuelle (la mmoire virtuelle est la somme de la mmoire libre et de la taille du swap). 128 Mo de swap sont donc largement sufsant pour tout type dopration. De toutes faons, si un jour il fallait plus de swap, on pourrait crer un chier de swap temporaire ; partition root, contenant le systme, les programmes et les donnes utilisateurs : 1,5 Go au moins. Il est possible de travailler avec 1 Go, mais on nest vraiment pas laise avec XWindow et si lon dsire compiler des programmes rcuprs sur Internet (ce qui est assez courant). Il est galement recommand de placer la partition de swap la n du disque dur. Si jamais le systme se plante, il ne risque pas de dborder et dcrire accidentellement sur les autres partitions. Lordre recommand pour les partitions est donc partition de dmarrage, partition utilisateur et partition de swap.

41

Chapitre 4. Installation du systme de base

Note : La taille de 128 Mo pour le swap nest plus une limitation partir de la version 2.2 du noyau. En effet, la gestion du swap a t modie et la nouvelle limite est prsent 2 Go par partition de swap, avec un total de 8 partitions possibles. Si jindique ici une taille maximale de 128 Mo pour le swap, cest simplement parce que cest tout fait sufsant et que si on a besoin de plus, il vaut mieux redimensionner sa conguration et envisager de goner la machine en mmoire vive.

Le partitionnement 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. 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 correspondant 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/sda0, /dev/sdb, etc. Donc, si vous voulez partitionner le disque matre du premier contrleur IDE, vous devrez 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.
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 leur ancien nom. Vous naurez donc normalement 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.

42

Chapitre 4. Installation du systme de base

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. Il existe deux types de partitions. Les partitions primaires sont dnies directement dans une petite table enregistre dans le secteur damorage principal, encore appel MBR (abrviation de Master Boot Record en anglais). Outre les informations dcrivant les partitions primaires, ce secteur contient un petit programme permettant de charger le systme dune de ces partitions (on appelle ce programme le bootstrap loader ). Il ne peut y avoir plus de quatre partitions primaires, parce que seulement quatre entres sont dnies dans la table des partitions du MBR. Les partitions tendues permettent de repousser cette limite 64, en recrant une table des partitions plus grande dans une des partitions primaires. Il ne peut y avoir quune seule partition tendue sur un disque donn (mais cela nempche pas davoir des partitions primaires ct de celle-ci). Lorsque vous aurez choisi le type de partition dsir (avec les commandes p ou e, respectivement pour primary et extended ), vous devrez 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 (DOS et Windows par exemple). 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. 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 cylindre, soit en secteurs selon lunit courante. Les partitions primaires et logiques ont toutes un identicateur qui permet dindiquer quel systme elles appartiennent. Les identicateurs utiliser pour Linux sont 83 pour les partitions en EXT2, et 82 pour les partitions de swap. Cet identicateur peut tre x laide de la commande t (pour type ), qui demande successivement le numro de la partition modier et la valeur de son identicateur en hexadcimal. La liste des valeurs admissibles par fdisk peut tre obtenue laide de la commande l. Par dfaut, fdisk cre des partitions Linux natives, de code 83. Lorsque vous aurez cr toutes vos partitions, il ne vous restera plus qu activer la partition qui contient le secteur damorage ( boot sector en anglais). Cela se fait laide de la commande a. Cest sur cette partition que le chargeur du MBR ira chercher le systme lancer. En gnral, le lancement du systme consiste excuter le programme enregistr dans le premier secteur de la partition de ce systme. On appelle ce secteur le secteur de boot. On ne peut activer quune seule partition, cest donc sur celle-ci quil faudra installer le systme principal, ou plus gnralement le gestionnaire damorage de ce systme. Un gestionnaire damorage est un petit programme capable de lancer des systmes dexploitation. Il est en gnral constitu dune petite partie place sur le secteur de boot de la partition du systme auquel il appartient, et dun complment enregistr dans des chiers de cette partition. Le fait de stocker le gestionnaire damorage dans le secteur de boot nest pas gnant, parce que les gestionnaires damorages des systmes sont capables damorcer dautres systmes que celui avec lequel ils ont t fournis (ce nest cependant pas le cas pour DOS et Windows 9x). En

43

Chapitre 4. Installation du systme de base

fait, il est fortement recommand dinstaller les gestionnaires damorage sur la partition du systme avec lequel il est fourni, et non pas directement dans le MBR. En effet, certains systmes dexploitation (ceux de Microsoft) crasent systmatiquement le MBR lorsquils sinstallent, dtruisant ainsi les chargeurs des autres systmes qui y seraient installs. 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. Le gestionnaire damorage de Linux se nomme LILO (pour LInux LOader ). LILO permet de dmarrer un grand nombre de systmes, dont DOS, Windows et OS/2. Comme nous venons de lexpliquer, il est conseill dinstall LILO sur le secteur de boot de la partition Linux, et cest cette partition qui doit tre marque comme amorable. Il vous est galement parfaitement possible dinstaller LILO directement sur le MBR, mme si dautres systmes dexploitation que Linux sont dj installs. En revanche, on prendra garde dans ce cas toujours installer les ventuels systmes dexploitation Microsoft en premier et faire une sauvegarde de son MBR. Lutilitaire ps dcrit ci-dessus vous permet deffectuer une telle sauvegarde avant de modier votre table des partitions. Le nom du chier contenant limage de votre MBR sera ROOTBOOT.000. En cas de problme, vous pourrez utiliser lutilitaire restorrb fourni avec ps pour rinstaller le MBR initial sur votre systme, partir dune disquette de boot DOS. Vous devriez lire attentivement la documentation fournie avec ps sur le CD-ROM de votre distribution avant de vous lancer dans ces manipulations on ne peut plus techniques (une traduction franaise de lintgralit de la documentation de ps est disponible sur Internet ladresse http ://www.ps.fr.st. Nous verrons comment installer LILO plus loin.

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. La cration des systmes de chiers ne sera dcrite que pour le systme de chiers natif de Linux, savoir EXT2. 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 mthode dcrite ici permet de crer un systme de chiers EXT2. Cette opration peut tre faite laide de la commande mke2fs. La cration des autres systmes de chiers se fait de manire gnrale de la mme manire que pour EXT2, mais avec des outils diffrents. Par exemple, la cration dun systme de chiers ReiserFS se fait laide de loutil mkreiserfs. Ces outils ne seront pas dcrits ici, consultez la documentation de votre distribution et les pages de manuel appropries pour plus de dtails ce sujet.

44

Chapitre 4. Installation du systme de base

An de pouvoir utiliser mke2fs correctement, il est ncessaire de dnir quelques termes, et dexpliquer quelles notions dEXT2 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 ses avantages et ses 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 gre 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 utilise 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. 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.

45

Chapitre 4. Installation du systme de base

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 par inode de la partition. 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 possible 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). La syntaxe de la commande mke2fs est donne ci-dessous :
mke2fs fichier

o fichier est le nom du chier spcial de priphrique reprsentant la partition sur laquelle le systme de chiers doit tre cr. mke2fs prend alors des valeurs par dfaut appropries pour cette partition, mais vous pouvez galement spcier dautres valeurs. La taille des blocs peut tre indique en octets avec loption suivante :
mke2fs -b taille fichier

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 -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 -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.

46

Chapitre 4. Installation du systme de base

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 de swap, 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 nos jours de consacrer 64 ou 128 Mo de disque dur pour une partition de swap. Linux est capable de grer jusqu 8 partitions de swap, plus les chiers de swap que lon peut rajouter ultrieurement. Nous ne dcrirons que la manire de crer une partition de swap, car les chiers ne constituent plus le meilleur compromis avec les tailles de disques que lon rencontre prsent. 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 EXT2 est tout simplement son identicateur. Comme on la dj vu lors du partitionnement du disque, lidenticateur utilis pour les partitions de systmes de chiers 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. 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 congura-

47

Chapitre 4. Installation du systme de base

tion dynamique permet dajouter temporairement un peu plus de swap 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 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

48

Chapitre 4. Installation du systme de base

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 tre toujours 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. Lorsque vous aurez install votre systme de base, vous devrez faire en sorte quil puisse dmarrer. Pour cela, il existe plusieurs possibilits :

soit vous dmarrez partir dune disquette ou dun CD damorage ; soit vous lancez Linux partir du DOS grce au programme LOADLIN.EXE ; soit vous installez le gestionnaire damorage LILO.

Il va de soi que cest la troisime solution qui est recommande. Cependant, les deux premires solutions pourront tre utiles si daventure votre MBR se trouvait cras par un systme dexploitation maladroit (comme DOS ou Windows).

49

Chapitre 4. Installation du systme de base

Linstallation de LILO doit se faire de prfrence dans le programme dinstallation ou de conguration de votre distribution. Consultez votre documentation pour plus de dtails ce sujet. Cependant, si vous dsirez installer LILO vous-mme, vous devrez modier le chier de conguration /etc/lilo.conf. Ce type dopration est dcrit en dtail dans la Section 6.4.

50

Chapitre 5. Commandes de base dUnix


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 de base dUnix 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 multi-utilisateurs. 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

51

Chapitre 5. Commandes de base dUnix

utilis, mais le principe reste toujours le mme : il faut fournir son nom dutilisateur et son mot de passe. 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

52

Chapitre 5. Commandes de base dUnix

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 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 on 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. En gnral, le systme effectue un contrle et une rparation si ncessaire lors du redmarrage suivant, 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 Permet darrter le systme. reboot 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.

53

Chapitre 5. Commandes de base dUnix

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 ! 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 thmatiques de pages, 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 Type de pages de manuel Commandes utilisateur Appels systmes (programmation en C) Fonctions de la librairie C

54

Chapitre 5. Commandes de base dUnix

Identicateur 4 5 6 7 8

Type de pages de manuel 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 particulier. Ce programme sutilise avec la syntaxe suivante :
apropos mot-cl

o mot-cl 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 ;

55

Chapitre 5. Commandes de base dUnix

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 :
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/local/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

56

Chapitre 5. Commandes de base dUnix

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 .

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. 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/local/X11/bin avec les deux chemins suivants :
/usr/local/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.

57

Chapitre 5. Commandes de base dUnix

La plupart des shells sont capables deffectuer ce que lon appelle la compltion automatique des noms. 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. 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.

58

Chapitre 5. Commandes de base dUnix

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 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

59

Chapitre 5. Commandes de base dUnix

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).

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 :
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

60

Chapitre 5. Commandes de base dUnix

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 sous ce compte. Cette technique est prudente, cependant, elle pose un problme vident : vous ne pouvez pas faire votre travail dadministrateur sous ce compte. 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 pour le champ utilisateur , cest--dire le propritaire du chier ; g pour le champ groupe , cest--dire tous les utilisateurs faisant partie du groupe du chier ; o pour le champ other , cest--dire pour tous les utilisateurs qui ne sont ni propritaires, ni membres du groupe du chier ; a pour tous les champs sans distinction, donc pour tous les utilisateurs.

Les droits sont identis par lun des caractres suivants :


r pour le droit de lecture ; w pour le droit dcriture ;

61

Chapitre 5. Commandes de base dUnix

x pour le droit dexcution ; s pour les bits setuid et setguid ; t 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

62

Chapitre 5. Commandes de base dUnix

permet dafcher les informations sur le lien lien, et en particulier le chier ou le rpertoire cible de ce lien. 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, par exemple, 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 pour les systmes de chiers EXT2FS ; iso9660 pour les CD-ROM (quils soient avec extensions Joliet ou Rock Ridge ou en mode ISO 9660 pur) ; msdos pour les systmes de chiers FAT normaux ; vfat pour les systmes de chiers FAT32 ; umsdos pour les systmes de chiers UMSDOS (extension au DOS pour permettre les fonctionnalits des systmes de chiers Unix).

63

Chapitre 5. Commandes de base dUnix

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 :
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. Il est possible denregistrer des options par dfaut dans le chier de conguration /etc/fstab. Ce chier contient, entre autre, le rpertoire de montage, le type du systme de chiers et le chier de priphrique utiliser pour ce 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 plus loin.

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 dautre options de recherche que le nom (partie -name de la ligne de commande), et peut effectuer dautres actions que lafchage du chemin des chier trouvs (partie -print ). Consultez les pages de manuel pour plus dinformation ce sujet.

5.7.6. Recherche dun texte dans un chier

64

Chapitre 5. Commandes de base dUnix

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.

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), et I, qui permet deffectuer une recherche sans tenir compte de la casse des caractres. Par exemple, la ligne de commande suivante :

65

Chapitre 5. Commandes de base dUnix

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.

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 videmment 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.

66

Chapitre 5. Commandes de base dUnix

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. Cette liste ne doit pas tre prcise sil sagit dune restauration. Les options de tar que vous utiliserez le plus souvent sont les suivantes :

cvf pour crer une archive ; tvf pour lister le contenu dune archive ; xvf 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 *

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. 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 distributions. 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 y supprimer ou de les mettre jour facilement.

67

Chapitre 5. Commandes de base dUnix

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

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

68

Chapitre 5. Commandes de base dUnix

en fait certainement lditeur le moins convivial du monde. Ce paragraphe vous donnera la description des principales commandes de vi, qui ne sera pas exhaustive car vous ne lutiliserez certainement pas 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 sur 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. 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 ;

69

Chapitre 5. Commandes de base dUnix

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 tapant un nombre avant de les taper. Ainsi, pour supprimer 3 lignes, il sufra de taper la commande suivante :
3dd

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 ;

70

Chapitre 5. Commandes de base dUnix

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 la page de manuel 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 par excellence. 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

71

Chapitre 5. Commandes de base dUnix

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 ne soit pas interactive) ; ajouter une esperluette (caractre & ) la n de la ligne de commande.

Par exemple, la commande suivante :


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

copiera larchive du noyau 2.2.10 du CD-ROM vers le rpertoire courant, et sexcutera en arrireplan. 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. 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.

72

Chapitre 5. Commandes de base dUnix

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 pas en dtail dans

73

Chapitre 5. Commandes de base dUnix

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 Signication signal 15 Signal de terminaison de processus. 9 19 18 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.

74

Chapitre 5. Commandes de base dUnix

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 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.

75

Chapitre 5. Commandes de base dUnix

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 standard (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

76

Chapitre 5. Commandes de base dUnix

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

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 &

77

Chapitre 5. Commandes de base dUnix

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

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 virtuels /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 descrip-

78

Chapitre 5. Commandes de base dUnix

teurs 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 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 sh Pour terminer le fichier, il faut taper le mot "fin" tout seul, au dbut dune ligne vide fin

5.9.3. Les pipes


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 pipes .

79

Chapitre 5. Commandes de base dUnix

5.9.3.1. Syntaxe des pipes


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 ( tuyau ou tube en anglais). Loprateur pipe sutilise de la manire suivante :

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

La commande se trouvant la gauche de loprateur pipe doit tre complte, avec ses autres redirections ventuelles. La redirection dans un pipe seffectue aprs les autres types de redirections vues prcdemment. Le systme contrle lexcution des processus qui se trouvent aux deux bouts dun pipe, 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 prsente. Inversement, si le processus source est trop lent, cest le processus consommateur qui attendra patiemment que les donnes soient disponibles. Les pipes 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

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

80

Chapitre 5. Commandes de base dUnix

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 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 pipe 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

81

Chapitre 5. Commandes de base dUnix

commandes sont mises entre parenthses, car loprateur | du pipe 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 pipe 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 pipes nomms


Les pipes crs par loprateur | constituent ce que lon appelle des pipes anonymes, car ils sont crs directement par le shell pour une commande donne. Il est possible de crer manuellement des pipes en leur donnant un nom, et de les utiliser a posteriori dans plusieurs commandes. Ces pipes constituent ce que lon appelle des pipes nomms. En fait, les pipes 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 pipes nomms sont crs par la commande mkfo, dont la syntaxe est la suivante :
mkfifo nom

o nom est le nom du pipe nomm. Notez que cette commande chouera sur les systmes de chiers incapables de grer les pipes nomms. Une fois cr, le chier de pipe 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 pipe nomm temporaire de la manire suivante :
mkfifo /tmp/tempfifo ls > /tmp/tempfifo less < /tmp/tempfifo

La destruction dun pipe 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.

82

Chapitre 5. Commandes de base dUnix

Elle est couramment utilise, en conjonction avec les pipes, 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 pipes, 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. 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

83

Chapitre 5. Commandes de base dUnix

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 par la variable denvironnement PATH. 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 normales et ses propres variables ; lenvironnement dexcution, qui est lenvironnement que le shell utilise pour lancer les programmes.

84

Chapitre 5. Commandes de base dUnix

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 antislash dchappement (\), 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, et 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.

85

Chapitre 5. Commandes de base dUnix

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

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, et que la plupart des programmes utilisent pour permettre lutilisateur de modier leur comportement : Tableau 5-3. Variables denvironnements courantes Nom HOME USER 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.9.7.

TERM

SHELL

Chemin sur le chier de programme du shell actuellement utilis. Sous Linux, il sagit souvent du shell bash.

86

Chapitre 5. Commandes de base dUnix

Nom PATH

Signication 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 suffit 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 LD_LIBRARY_PATH bibliothques dynamiques seront recherches si elles ne sont pas trouvables dans les rpertoires classiques des bibliothques de programme du systme. C_INCLUDE_PATHListe 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. Liste des rpertoires dans lesquels le compilateur CPLUS_INCLUDE_PATH 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. LIBRARY_PATH Liste des rpertoires dans lesquels les bibliothques utiliser lors de ldition de lien 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 8.

87

Chapitre 5. Commandes de base dUnix

Nom TMPDIR

Signication 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.

88

Chapitre 5. Commandes de base dUnix

Nom TZ

Signication 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 fin 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, il est possible dutiliser les noms de fuseau horaires dfinis par la librairie C. En France, on utilise normalement le fuseau CES (temps dEurope centrale).

89

Chapitre 5. Commandes de base dUnix

Nom LANG

Signication Valeur par dfaut utiliser 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 redfinie par lune des variables denvironnement dcrites ci-dessous.

LC_MESSAGES

Valeur utiliser pour dterminer la langue des messages. La valeur par dfaut est spcie par la variable denvironnement LANG. Valeur 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. Valeur 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. Valeur utiliser pour dterminer lemplacement et le caractre reprsentant le symbole montaire du pays. La valeur par dfaut est spcie par la variable denvironnement LANG. Valeur utiliser pour dterminer les conventions locales dcriture des nombres (sparateurs dcimal, format de la virgule, etc.). La valeur par dfaut est spcie par la variable denvironnement LANG.

LC_TYPE

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.

90

Chapitre 5. Commandes de base dUnix

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 pipes, 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 ignorera le contenu lors de lanalyse syntaxique. Ces chanes de caractres sont simplement donnes entre guillemets simples (caractre ). Par exemple, la commande suivante :
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 pipes, 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 ), qui se ressemblent normment dans certaines polices de caractres. Ces deux caractres ont une signication compltement 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.

91

Chapitre 5. Commandes de base dUnix

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 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

92

Chapitre 5. Commandes de base dUnix

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, de calculer des expressions mathmatiques, voire dinclure le rsultat dune autre commande dans la ligne de commande en cours. Les mcanismes de substitution 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

permet de copier tous les chiers dextension .txt dans le rpertoire personnel de lutilisateur jean.

5.9.6.3. Remplacements de variables

93

Chapitre 5. Commandes de base dUnix

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 serait 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 plutt 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 deux-

94

Chapitre 5. Commandes de base dUnix

points 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 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}

95

Chapitre 5. Commandes de base dUnix

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 :
${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 simpose : si le motif commence par le caractre #, ce motif devra obligatoirement tre plac au dbut de la chane de caractres contenue dans la variable. De mme, si le motif commence par le caractre %, il devra obligatoirement se trouver 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 sur le ux standard de sortie). Pour donner un exemple, la commande suivante :

96

Chapitre 5. Commandes de base dUnix

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).

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 :

97

Chapitre 5. Commandes de base dUnix

<(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 pipe manuellement et de lancer les deux commandes devant se servir de ce pipe pour communiquer. Ainsi, la commande suivante :
cat <(ls)

est fonctionnellement quivalente la srie de commande 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

98

Chapitre 5. Commandes de base dUnix

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.
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 Unix de chiers. 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 :
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 sur le rpertoire courant et le rpertoire pre par dfaut. 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 rgulires

99

Chapitre 5. Commandes de base dUnix

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 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. Le langage des expressions rgulires 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 rgulires, et permet ventuellement de remplacer ces sous-chanes par des chanes de substitutions. Malheureusement, la description des expressions rgulires 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 rgulires, 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 rgulire, 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.


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 rgulires plus complexes que celles prsentes ici. Cependant, ces expressions ne sont pas actives par

100

Chapitre 5. Commandes de base dUnix

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 dun point-virgule. Les instructions peuvent tre pourtant trs complexes, car elles peuvent contenir des pipes 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 dinstruction 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 rm *.bak )

101

Chapitre 5. Commandes de base dUnix

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 tels chiers. 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 pipe. 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

102

Chapitre 5. Commandes de base dUnix

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). 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 caractre, 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 chanes de caractres. 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.

103

Chapitre 5. Commandes de base dUnix

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

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 des formes plus complexes 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, qui, 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.

104

Chapitre 5. Commandes de base dUnix

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 sa nature et ses attributs, en passant par son propritaire et son groupe. La syntaxe gnrale de ces tests est la suivante :
if [ option fichier ] ; then . . . 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

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 block (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 pipe. 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.

105

Chapitre 5. Commandes de base dUnix

Option
-G -N

Signication 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 effectif 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 . . . 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 :

106

Chapitre 5. Commandes de base dUnix

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 :
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

107

Chapitre 5. Commandes de base dUnix

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 fonctions. Nous verrons plus loin comment raliser des fonctions et des scripts, ainsi que la manire de rcuprer leurs paramtres.

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))

108

Chapitre 5. Commandes de base dUnix

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 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

109

Chapitre 5. Commandes de base dUnix

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 problme 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 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.

110

Chapitre 5. Commandes de base dUnix

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 avez "Vous avez "Vous avez "Vous avez break ; ; 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 fautes de frappe et davoir corriger la commande. Cela peut au mieux faire perdre son temps lutilisateur, et au pire lnerver.

111

Chapitre 5. Commandes de base dUnix

Le shell fournit donc un mcanisme simpli 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 paramtre. 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 commande 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

112

Chapitre 5. Commandes de base dUnix

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 dexcutions. Il contient les diffrentes commandes du shell 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 :
# !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 shells 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 utilisateurs en mode fentr, pilotage dapplications, etc.). Si vous vous y intressez, vous verrez que le sujet est rellement vaste et passionnant.

113

Chapitre 6. Conguration du systme de base


La conguration du systme de base est un peu moins sensible que son installation. En pratique, les oprations de conguration consisteront manipuler les chiers de conguration du systme. Les seuls risques que lon encourt sont de les dtruire, et donc de devoir les recrer manuellement. Cest pour cette raison que nous allons commencer par les sauvegarder, an de pouvoir revenir ltape de conguration du systme de base sans repasser par la case dpart. Cela dit, il se peut fort bien que le programme dinstallation ou le programme de conguration de votre distribution vous permette dviter cette tche. Dans ce cas, il vous sera sans doute demand de rpondre quelques questions, et ce programme effectuera les modications pour vous. Il est dailleurs recommand de toujours essayer la conguration du systme avec un tel programme, car lui seul connat les spcicits de votre distribution (puisquil est fourni avec !). Malheureusement, ces programmes ne peuvent pas tout prvoir, parce que Linux est un systme capable deffectuer un nombre de tches trs diversi dune part, et parce que ce que vous voulez en faire personnellement ne correspond pas forcment un standard prdtermin dautre part. Cette partie dcrira le mcanisme gnral damorage des systmes Linux et les commandes dadministration les plus importantes. Elle dcrira galement comment ajouter des priphriques additionnels (clavier, souris, cartes son, vido, rseau, imprimante) et comment les congurer pour obtenir un fonctionnement correct sous Linux. Cependant, la premire tape est bien entendu de faire une sauvegarde de tous les chiers de conguration, car la moindre erreur peut provoquer de lourdes consquences (jusqu la rinstallation complte du systme).

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/*

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 :

114

Chapitre 6. Conguration du systme de base

tar xvfz /root/install.conf.tar.gz

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 devrait tre place sur une disquette que lon conservera en lieu sr.

6.2. Notion de niveau dexcution


La plupart des systmes Unix utilisent la notion de niveaux 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 mono-utilisateur (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, contrler la partition root). La signication des autres niveaux dexcution dpend de la distribution que vous utilisez, mais en gnral, le niveau dexcution 2 correspond au mode multi-utilisateurs avec rseau sans XWindow, et le niveau dexcution 3 ou 4 correspond au mode multi-utilisateur 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 dmarr. Il ne peut pas tre dtruit, et cest rellement le processus pre de tous les autres dans le systme. Le rle dinit est de rcuprer les processus zombies (cest--dire les processus qui viennent de se terminer et dont le processus pre sest termin avant eux) et de grer les changements de niveau dexcution. 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. init utilise le chier de conguration /etc/inittab. Ce chier dnit les niveaux dexcution, le niveau par dfaut dans lequel le systme se place au dmarrage, et les actions quinit doit prendre lorsque certains vnements arrivent. En particulier, il est indiqu quels sont les scripts qui doivent tre

115

Chapitre 6. Conguration du systme de base

excuts lors du changement de niveau dexcution. Il est fortement, mais 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 ; 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, pour le dmarrage du service correspondant ; stop, pour son arrt.

116

Chapitre 6. Conguration du systme de base

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.

6.3. Notion de chiers spciaux de priphriques


Comme il a dj t expliqu dans les chapitres prcdents, Linux gre tous les priphriques comme des chiers spciaux. Cela simplie normment leur utilisation 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 utilises 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 priphrique, 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 priphrique. 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.

117

Chapitre 6. Conguration du systme de base

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 priphrique 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 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 une 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 davoir recours aux 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 conits 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) ;

118

Chapitre 6. Conguration du systme de base

les performances sont suprieures, puisque la recherche du priphrique 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 du matriel 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. 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 priphrique senregistre ou se dcharge du niveau. 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 priphrique 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 chier 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.

119

Chapitre 6. Conguration du systme de base

6.4. Conguration de LILO


Linstallation de LILO est quasiment un passage oblig sur les ordinateurs utilisant Linux, car cest lun des gestionnaires damorage les plus puissants. Il 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 cette option si lutilisateur na rien saisi. LILO est constitu de deux parties. La premire partie peut sinstaller sur le secteur principal damorage du disque dur ( MBR ), 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 Linux, an dviter quelle ne soit crase par le DOS ou par Windows. La deuxime partie 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, car lors de lamorage, les systmes de chiers de Linux ne sont pas encore chargs. LILO utilise le chier de conguration /etc/lilo.conf. Ce chier contient la description des diffrents systmes dexploitation que LILO doit proposer au dmarrage. Les options les plus importantes de ce chier 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 chier spcial du priphrique sur lequel LILO va sinstaller. Ainsi, si lon prcise /dev/hda, LILO va sinstaller sur le MBR du premier disque du premier contrleur de disques IDE. De mme, /dev/hda3 demande LILO de sinstaller sur le secteur de boot de la troisime partition de ce mme disque ;

loption read-only permet de demander au noyau de monter la partition root 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 chier de cette partition si ncessaire. La partition sera remonte en lecture et en criture une fois ces vrications ralises ; loption prompt 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 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 secondes attendre avant le lancement du systme. 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 :

120

Chapitre 6. Conguration du systme de base

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 root 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 systme DOS (ou Windows 9x), vous pouvez utiliser le modle suivant :
other = partition table = disque label = nom

o partition est la partition o se trouve le systme DOS lancer, disque est le disque contenant la table des partitions utilise par ce systme, et nom est le nom de cette conguration. Vous pouvez vous inspirer de lexemple fourni ci-dessous :
other = /dev/hda1 table = /dev/hda label = dos

qui permet de lancer le systme situ sur la premire partition du premier disque IDE. Lexemple donn ci-dessous permet de donner la possibilit de charger Linux ou le DOS, en lanant Linux par dfaut au bout de 10 secondes. Le DOS est install sur la premire partition, et Linux utilise la deuxime et la troisime partition respectivement pour y stocker son noyau et sa partition racine. LILO est ici install sur la partition contenant le noyau de Linux :
# Exemple de fichier de configuration /etc/lilo.conf : # Options gnrales : boot = /dev/hda2 read-only prompt timeout=100 # Premire configuration (Linux) : image = /dev/hda2 root = /dev/hda3 label = linux

121

Chapitre 6. Conguration du systme de base

# Deuxime configuration (DOS) : other = /dev/hda1 table = /dev/hda label = dos

Remarquez que si lon utilise /dev/hda la place de /dev/hda2 aprs loption boot, LILO sinstallera sur le MBR du disque et non pas sur le secteur de boot de Linux. Dans ce cas, vous prendrez des risques si vous rinstallez le systme DOS, car celui-ci crasera le MBR de votre disque, supprimant ainsi LILO. Si vous dsirez poursuivre dans cette voie (ce qui peut tre ncessaire si Linux est install sur un disque esclave par exemple), vous pouvez raliser une sauvegarde de votre MBR laide de la commande suivante :
dd if=/dev/hda of=fichier bs=512 count=1

o fichier est le nom du chier devant recevoir limage du MBR. La restauration de votre MBR pourra alors tre effectue simplement avec la commande inverse :
dd if=fichier of=/dev/hda bs=512 count=1

Note : ATTENTION ! Cette dernire commande crit de manire directe le contenu du chier sur les secteurs du disque dur ! La moindre erreur peut donc provoquer lcrasement TOTAL de votre disque dur par des donnes alatoires, ou, dans le meilleur des cas, la perte de toutes vos partitions. Fates donc extrmement attention ce que vous tapez et relisez trois fois, non, quatre, la page de manuel de la commande dd avant dexcuter cette commande...

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

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 : Il attend ici que vous indiquiez le nom du systme que vous dsirez dmarrer. Attention, le clavier est ici en amricain, et la disposition des touches est donc QWERTY. 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. Il est possible de spcier des paramtres de dmarrage la suite du nom du systme utilis. 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 la 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 lordi-

122

Chapitre 6. Conguration du systme de base

nateur. 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. Par exemple, si votre ordinateur dispose de 128 Mo de mmoire, vous devrez taper la ligne de paramtres suivante au dmarrage : LILO boot :linux mem=128M Bien entendu, il est possible denregistrer ces paramtres dans le chier de conguration de LILO. 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 128 Mo de mmoire :
# Premire configuration (Linux) : image = /dev/hda2 root = /dev/hda3 label = linux append="mem=128M"

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 pour dmarrer Linux dans le niveau dexcution niveau. Ainsi, pour passer en mode mono-utilisateur (cest--dire le mode de maintenance), il suft de taper la commande suivante lamorage de LILO :
LILO boot :linux 1

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

6.5. Gestion 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 paramtrer les disques durs

123

Chapitre 6. Conguration du systme de base

IDE, de vrier un systme de chiers et de monter automatiquement les systmes de chiers les plus utiliss au dmarrage du systme. La description des systmes de chiers rseau sera donne dans le chapitre traitant de la conguration rseau.

6.5.1. 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 disque, obligeant ainsi le systme consacrer une part importante des ressources processeur uniquement pour les accs disque. Inversement, les priphriques SCSI sont capables de communiquer entre eux sur leur bus, dchargeant ainsi le processeur de ce travail de transfert des donnes. Pour rsoudre ce problme, les contrleurs IDE disposent prsent dun mode de fonctionnement particulier, le mode DMA (abrviation de langlais Direct Memory Access ), qui leur permet daccder directement aux donnes dans la mmoire centrale de lordinateur. Ainsi, le processeur na plus qu envoyer les commandes de lecture et dcriture, et peut soccuper dautre chose pendant que le disque travaille. Ce mode existe depuis les tous dbuts de larchitecture PC, mais les premiers contrleurs DMA ntaient pas capable 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 disques durs IDE ont prsent rduit lcart avec les disques SCSI au niveau du taux de transfert des donnes, ils ne disposent toujours pas dune fonctionnalit extrmement utile pour les systmes dexploitation multitches : la possibilit de mmoriser plusieurs commandes dafles pour les excuter sans intervention du processeur. Grce cette fonctionnalit, les disques SCSI ont un taux doccupation du processeur nettement moindre, et permettent aux systmes tels que Linux datteindre un degr de ractivit ingal avec les disques IDE classiques.

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 disques. 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 dur et des contrleurs IDE. Il permet galement de tester les performances de votre conguration, et peut donc servir doutil de diagnostic

124

Chapitre 6. Conguration du systme de base

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 encore aller 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 disque dur.

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

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 drivers 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. La manire de procder est dcrite en dtail dans le Chapitre 9. Sachez cependant que les options activer sont les suivantes :

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.

125

Chapitre 6. Conguration du systme de base

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.

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.

6.5.2. 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. Enn, si un systme de chiers nest pas dmont correctement avant larrt du systme, celui-ci effectuera automatiquement

126

Chapitre 6. Conguration du systme de base

une vrication de ce systme de chiers au dmarrage suivant, ce qui fait quil ny a pas lieu de le faire soi-mme. 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 marche. Un systme de chiers ne se manipule que lorsquil est dmont. Cela pose videmment quelques problmes pour le systme de chiers root, 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 root 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 la partition root 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. Ensuite, il faut remonter la partition root en lecture seule, ce qui se fait avec la commande suivante :
mount -n -o remount,ro /

Loption remount permet de dmonter et de remonter la partition racine, et loption ro indique quelle doit tre remonte 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 la partition, parce quelle sera alors en lecture seule et quil ne pourra pas y parvenir. Ce chier est utilis par mount pour mmoriser les partitions qui sont montes, an de pouvoir en donner la liste (ce que 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. Lorsque la partition root sera monte en lecture seule, on pourra utiliser le programme fsck an de vrier, et ventuellement rparer, la partition root. En ralit, ce programme ne fait rien dautre que dappeler un programme spcique pour chaque systme de chier. Par exemple, pour les systmes de chiers EXT2, fsck appelle le programme e2fsck, qui est capable de vrier et de rparer ce type de systmes de chiers. La ligne de commande utiliser pour vrier la partition racine avec fsck est la suivante :
fsck -a priphrique

127

Chapitre 6. Conguration du systme de base

o priphrique est le chier spcial du priphrique contenant le systme de chiers vrier. Il faut donc spcier la partition sur laquelle le systme de chier root 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 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. 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 /

128

Chapitre 6. Conguration du systme de base

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.5.3. 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 quels systmes de chiers doivent tre sauvegards ; un entier indiquant le rang dans lequel les systmes de chiers doivent tre vris.

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. 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 ;

129

Chapitre 6. Conguration du systme de base

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 dutilisateur 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. 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 ne pas les monter (cest le cas notamment du systme de chiers root). Il en va de mme pour les CD-ROM, car on ne peut bien entendu pas crire dessus. 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.

130

Chapitre 6. Conguration du systme de base

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 chier 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. En revanche, 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 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 communications peut tre utilis par des processus courants, aussi faut-il vous assurer que la ligne suivante se trouve bien dans la chier fstab :

131

Chapitre 6. Conguration du systme de base

tmpfs

/dev/shm

tmpfs

defaults

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.6. 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 18,6 fois par seconde, ce qui donne pour la plus petite unit de temps mesurable environ 1/20 de seconde. 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 le 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 64 bits sa taille. 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.

132

Chapitre 6. Conguration du systme de base

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 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 librairie 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

133

Chapitre 6. Conguration du systme de base

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 paramtre, permet dobtenir la date systme, exprime en temps local. Mais elle permet galement 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.

134

Chapitre 6. Conguration du systme de base

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 :
# 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 intresss 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.7. Conguration du lancement automatique des tches


Il est possible de dclencher lexcution de certaines oprations intervalle rgulier 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 ac-

135

Chapitre 6. Conguration du systme de base

tion 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 dutiliser galement loption -u si lon a effectu un su, car la commande crontab peut ne pas pouvoir dterminer lutilisateur qui la appel. 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 (comprise 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).

136

Chapitre 6. Conguration du systme de base

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 de 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 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.

6.8. 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

137

Chapitre 6. Conguration du systme de base

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 mono utilisateur (cest--dire en mode maintenance). En mode multi-utilisateur, 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 :
echo Coucou > /dev/tty11

138

Chapitre 6. Conguration du systme de base

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. 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.

139

Chapitre 6. Conguration du systme de base

Une fois les modications ajoutes, vous pourrez demander init de relire son chier de conguration avec la commande suivante :
init Q

Ds lors, les nouveaux terminaux sont prts tre utiliss.

6.9. 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.9.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, et 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. Initialement, plusieurs manire de raliser cet encodage ont t inventes, mais lun des standards les plus utilis 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

140

Chapitre 6. Conguration du systme de base

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, Windows 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 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 conforme 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 un, deux ou trois octets selon leur emplacement dans la page de codes Unicode.

6.9.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 driver du clavier dans le noyau de Linux, et constituent le dbut du traitement des saisies clavier. Les scancodes permettent normalement de dterminer

141

Chapitre 6. Conguration du systme de base

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 claviers 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 les drivers de claviers. La plupart des claviers courants sont grs et en gnral peu de personnes ont besoin de modier ce type dinformation. Toutefois, an de permettre lintgration des claviers futurs, il est possible de complter la table de conversion des scancodes en codes de touches virtuelles. La manipulation des scancodes est une opration relativement complique et peu commode, cause de la complexit des squences de scancodes envoyes par les claviers. 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 code 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, de la touche Entre 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 code 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. 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

142

Chapitre 6. Conguration du systme de base

permet de travailler directement en Unicode, si vous le dsirez. Cependant, vous devrez vous 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 essayez 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

143

Chapitre 6. Conguration du systme de base

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.

6.9.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, et ce sont donc les applications qui, en fonction des codes quelles lisent sur la console, effectuent une action. Cependant, la majorit de ces actions ncessitent dafcher des rsultats sur le moniteur. Pour raliser cela, les donnes afcher sont crites dans le chier spcial de priphrique de la console. Comme nous lavons dj 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 donc le 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 driver 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 dchappements sont classiquement utiliss pour effectuer des oprations sur la console, comme par exemple le dplacement du curseur, la couleur et les 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 driver 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 code 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 code, 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 code du texte afcher et lencodage propre de la police. An de raliser cette conversion, le driver 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 code les caractres exactement comme Unicode. En revanche, si la console est en mode ASCII, cette opration ncessite lemploi dune table de conversion. Linux dispose de quatre tables

144

Chapitre 6. Conguration du systme de base

de conversions :

la premire table permet de faire la conversion entre la page de code 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 code 437 et Unicode ; et la quatrime et dernire table est rserve lusage personnel de lutilisateur.

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 caractre. 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. 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 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.

145

Chapitre 6. Conguration du systme de base

6.9.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.9.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 manquant la base 10, soit les chiffres reprsentant les valeurs 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

146

Chapitre 6. Conguration du systme de base

et la squence suivante au relchement :


0xE0 0x9D

Lintrt de procder ainsi est que les vieux programmes, incapables de grer les codes de touches tendues, 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 suivante est mise : 0xE0 0xC8 ou : 0xE0 0xC8 0xE0 0xAA 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

147

Chapitre 6. Conguration du systme de base

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

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 du numro de la colonne dans laquelle se trouve chaque keycode.

6.9.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 claviers 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

148

Chapitre 6. Conguration du systme de base

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 1 altgr control alt shiftl shiftr ctrll ctrlr 2 4 8 16 32 64 128 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.

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 claviers 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 claviers. Vous pourrez obtenir la liste des symboles utiliss grce la commande suivante :

149

Chapitre 6. Conguration du systme de base

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 toutes les combinaisons de touches imaginables. 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

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 combinaison 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).

150

Chapitre 6. Conguration du systme de base

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 caractre :
\\

Ainsi, si lon veut faire en sorte que la touche F4 afche la chane de caractre 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.

151

Chapitre 6. Conguration du systme de base

Enn, les plans de claviers 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 une 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 toute pice. 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 claviers 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. 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.

152

Chapitre 6. Conguration du systme de base

6.9.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 paramtres 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=/dev/tty[1-12] for tty in $INITTTY ; do setleds -D +num < $tty done

Ces lignes appellent la commande setleds sur les terminaux virtuels 1 12. 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 dattentes spcis peuvent tre de 250, 500, 750 ou 1000 millisecondes. Les taux de rptition utilisables vont de 2 30 caractres par seconde. Les claviers ne peuvent pas

153

Chapitre 6. Conguration du systme de base

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.9.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 code 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 donc 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). 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 dchap-

154

Chapitre 6. Conguration du systme de base

pement \033(K ou \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.9.6. Conguration de la ligne de communication


La conguration du driver de 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 une console 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 envoys sous la forme de petits paquets de 5 8 bits, et contrls par dautres bits ventuellement facultatifs (bit de stop et bit de parit). Il va de soi que toutes les lignes de communications ne sont pas identiques, et quun certain nombre de paramtres doivent tre xs.

155

Chapitre 6. Conguration du systme de base

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 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), la gomtrie du terminal (options rows et columns), les caractres de contrle affects un certain nombre daction relatifs la ligne (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), le format des donnes transfres sur la ligne (option parodd pour la parit impaire, option cs8 pour des paquets 8 bits, etc.) 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.

6.9.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 driver 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 scrolling, etc. Le malheur, cest que les codes dchappement utilisables diffrent selon les diffrents terminaux utiliss. Les terminaux les plus standards sont les terminaux VT100 et VT102 (la console Linux en faut partie). Cependant, les programmes ne peuvent pas savoir a priori quels codes dchappement doivent tre utiliss pour effectuer telle ou telle action.

156

Chapitre 6. Conguration du systme de base

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 dchappements 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. Cependant, 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 des caractres deux points ( :). 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 descriptive 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 :

157

Chapitre 6. Conguration du systme de base

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 :

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 dchappements associs aux touches du curseur (variable ku, kd, kr et kl respectivement pour les touches haut, bas, droite et gauche). La variable cl donne par exemple de 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.

158

Chapitre 6. Conguration du systme de base

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\3 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

159

Chapitre 6. Conguration du systme de base

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. En revanche, cette liste peut tre obtenue plus facilement pour terminfo, laide de lutilitaire toe (abrviation de langlais Table Of terminfo Entry ). 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.9.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.9.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.

160

Chapitre 6. Conguration du systme de base

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 # 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 "\eOH" : beginning-of-line "\eOF" : 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.

161

Chapitre 6. Conguration du systme de base

6.9.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 la plupart des fichiers de configuration.

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

" 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

162

Chapitre 6. Conguration du systme de base

map map map map map map map map map map map map map map map map map

^? h ^H h ^[OC l ^[[C l ^[[2~ i ^[[3~ x ^[[1~ 0 ^[OH 0 ^[[H 0 ^[[4~ $ ^[OF $ ^[[F $ ^[[5~ ^B ^[[6~ ^F ^[[E "" ^[[G "" ^[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 map ! ^[Oy 9 map ! ^[Ot 4 map ! ^[Ou 5

163

Chapitre 6. Conguration du systme de base

map ! map ! map ! map ! map ! map !

^[Ov ^[Oq ^[Or ^[Os ^[Op ^[On

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

164

Chapitre 6. Conguration du systme de base

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 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.9.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 denvironnements 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

165

Chapitre 6. Conguration du systme de base

\e[6~ \e[5~ \177 ^H \e[3~ \e[2~ \e[1~ \eOH \e[4~ \eOF \eOM

forw-scroll back-scroll back-screen back-screen back-screen visual goto-line goto-line goto-end goto-end forw-line

# Deuxime section : #line-edit \177 backspace ^H backspace \e[3~ delete \e[1~ home \eOH home \e[4~ 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 :

166

Chapitre 6. Conguration du systme de base

#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. 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.9.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 sries, 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 le Chapitre 9 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. Normalement ce programme est gpm, il permet dutiliser la souris en mode texte. La conguration de la souris pour XWindow sera vue dans le Chapitre 10.

167

Chapitre 6. Conguration du systme de base

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.

6.10. 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 drivers 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. 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 problme, car toutes les fonctionnalits quil utilise sont dj prsentes dans le noyau lors de son chargement. La commande modprobe va chercher ces informations de dpendance dans le chier modules.dep, situ dans le rpertoire /lib/module/version/. Ce chier utilise une syntaxe trs

168

Chapitre 6. Conguration du systme de base

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.def 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 penvent prendre un certain nombre doptions lors de leur chargement. Ces options sont en quelque sorte lquivalent des options que lon communique au noyau lors du boot, 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 option, 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 :
option module paramtres

Par exemple, il est probable que le driver du port parallle soit fourni sous la forme de module avec votre distribution. Cela permet de le charger la demande, et de le congurer pour les diffrentes utilisations possibles dun port parallle : communication avec une imprimante parallle, ou avec un lecteur ZIP, ou encore avec un lecteur de CD IDE, etc. Sur les ordinateurs de type PC, le nom du module grant le port parallle est parport_pc . Ce module peut prendre des paramtres de chargement permettant dindiquer le port dentre/sortie utiliser et la ligne dinterruption utiliser. 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 :
option parport_pc io=0x378 irq=7

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

169

Chapitre 6. Conguration du systme de base

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

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. Notez cependant quil est recommand dadapter le chier de conguration modules.conf an dobtenir des performances optimales. Les modications que nous avons donnes en exemple ci-dessus pour le port parallle permettent par exemple dviter que le noyau consulte en permanence le port pour savoir sil est prt recevoir ou fournir de nouvelles donnes pendant les impressions. Le gain de performance peut ainsi atteindre 10% quelle que soit la vitesse du processeur, ce qui est trs loin dtre ngligeable. 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 :

170

Chapitre 6. Conguration du systme de base

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, comme on la vu, 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 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

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 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.

171

Chapitre 6. Conguration du systme de base

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 6.3. 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

172

Chapitre 6. Conguration du systme de base

pour nimporte quel nom de chiers spcial de priphrique (expression rguire .* , qui reprsente nimporte quelle squence de caractres). Bien entendu, les noms de modules utiliss par le dmon devfsd ne peuvent pas se baser sur les codes majeurs et mineurs du chier spcial de priphrique pour les raisons que lon a indiqu ci-dessus. 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 gnralement 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.

6.11. Conguration des priphriques additionnels


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 ligne 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

173

Chapitre 6. Conguration du systme de base

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 x 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 plusieurs lignes dinterruptions 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 difcile 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. La compilation du noyau sera dcrite en dtail dans le Chapitre 9. 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, leur attribuera les paramtres matriels adquats, et communiquera ces paramtres aux gestionnaires de priphriques. Il prendra galement en charge la gestion des conits avec les autres

174

Chapitre 6. Conguration du systme de base

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, elle peut tre ralise 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 canaux DMA nexistent 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 :
(ACT Y)

la n des diffrentes options de conguration pour chaque carte correctement congure, faute de quoi celle-ci 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 :

175

Chapitre 6. Conguration du systme de base

/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 priphrique 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 6.10, 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 majeurs et mineurs 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/Documentatio Pour tester si les modications que vous avez effectues sont correctes, vous pouvez essayer de charger le module avec la commande suivante :

176

Chapitre 6. Conguration du systme de base

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.

6.12. 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 une conguration particulire. Cependant, il est possible dutiliser un convertisseur logiciel de chiers MIDI en chiers son classique an de jouer ce type de chiers mme avec une carte son classique. La premire tape lors de la conguration de votre carte son sera la slection du driver utiliser au niveau du noyau. Dune manire gnrale, la conguration du noyau consiste simplement rpondre des questions concernant le noyau dans un programme de conguration. Cest une opration relativement simple, mais il faut viter de se tromper lors de cette tape cruciale, faute de quoi le noyau ne serait pas fonctionnel ou ne se comporterait pas comme prvu. La conguration du noyau est dcrite en dtail dans le Chapitre 9. En ce qui concerne les cartes son, les options de conguration se trouvent dans le menu Sound . Ce menu permet de choisir les drivers utiliser en fonction du matriel install. Ils sont classs en deux catgories : les drivers classiques (premire partie des options du menu) et les drivers 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 driver qui convient le mieux votre matriel. Si vous avez le choix entre les drivers classiques et les drivers OSS, choisissez les drivers OSS car ils sont plus standards et vous naurez aucun problme utiliser votre carte son avec la plupart des logiciels.

177

Chapitre 6. Conguration du systme de base

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 driver 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 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 drivers 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 driver adquat, vous aurez le choix entre le compiler lintrieur du noyau (en choisissant loption Y pour ce driver) ou le compiler sous forme de module (en choisissant loption M). En pratique, il est plus simple de compiler les drivers lintrieur du noyau pour les cartes PCI et les cartes ISA Plug and Play. En effet, Linux attribuera automatiquement les lignes dinterruptions, les portes 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 sans problmes. Cest gnralement galement le bon choix pour les vielles cartes sons 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

178

Chapitre 6. Conguration du systme de base

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 des chiers son classiques ou des 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. Son utilisation requiert un chier de dnition des patches, chier 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 lmulateur SoftOSS fourni avec les drivers OSS ou un autre programme trs utilis nomm Timidity . SoftOSS a lavantage dtre intgr au drivers OSS, mais souffre de deux inconvnients. Premirement, il nest disponible quavec ces drivers, et deuximement, il consomme beaucoup de mmoire du noyau pour charger les patches.

179

Chapitre 6. Conguration du systme de base

Timidity en revanche nest pas intgr au noyau, et nutilise par consquent pas la mmoire systme. De plus, la mmoire consomme par les patches est dcharge ds que Timidity se termine. Enn, le moteur de Timidity est utilis par dautres programmes externes, et en particulier par le lecteur KMidi de KDE. En raison de son caractre plus gnral, seule linstallation de Timidity et la conguration de KMidi seront prsentes ci-dessous. 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 :


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 ralise par Eric A. Welsh est trs complte, quoique un 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

180

Chapitre 6. Conguration du systme de base

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.

6.13. 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. 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 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. Elle 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.

181

Chapitre 6. Conguration du systme de base

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 driver 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 de lAGP 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 est dcrite en dtail dans le Chapitre 9. 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.
Note : Pour le driver 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 est 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

182

Chapitre 6. Conguration du systme de base

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.

6.14. 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 lorsque vous achterez 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 problme. 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 vous aurez peut-tre recompiler vous-mme votre noyau. La manire de procder est dcrite en dtail dans le Chapitre 9. 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 drivers 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 .

183

Chapitre 6. Conguration du systme de base

Une fois le noyau recompil votre noyau 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 de modules 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 :

184

Chapitre 6. Conguration du systme de base

alias char-major-89 i2c-dev # Activation de lagorithme bit-banging : options i2c-algo-bit bit_test=1

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 tromps 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 tromps 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 attribuant un groupe dutilisateurs video, auxquel 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.

6.15. 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.

185

Chapitre 6. Conguration du systme de base

6.15.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 problmes 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 en terme de performances et de fonctionnalits linterface IDE, cette mthode est dconseille.

6.15.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 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.

186

Chapitre 6. Conguration du systme de base

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 commandes, 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. 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

187

Chapitre 6. Conguration du systme de base

Cette option permet, lorsquon dispose de priphriques SCSI capables de grer plusieurs numros dunit logiques, de leur demander tous ces numros. Ce type de priphriques 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 driver 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 driver. En revanche, pour les graveurs SCSI, il faut choisir le driver appropri. Une fois cette conguration effectue, il ne reste plus qu compiler le noyau et les modules et les installer. Vous trouverez plus de dtails ce sujet dans le chapitre traitant de la compilation du noyau.

6.15.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 un 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 blocks 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 priphriques 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

188

Chapitre 6. Conguration du systme de base

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 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.

6.15.4. Installation des logiciels de gravage


Lorsque cela aura t ralis, il ne vous reste 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 ; mkhybrid, qui permet de crer des images disques ISO 9660 avec les extensions Joliet (CD Windows 95), Rock Ridge (CD Unix) ou HFS (CD Macintosh). Ce programme est trs pratique, car les CD ainsi crs pourront tre lus correctement par plusieurs systmes ; 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.

6.15.5. Utilisation des logiciels de gravage


Nous allons prsent voir les commandes permettant de faire les principales oprations ayant trait au gravage des CD. 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

189

Chapitre 6. Conguration du systme de base

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

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 ou mkhybrid. Le premier programme permet de crer une image disque ISO9660, avec ventuellement les extensions Rock Ridge pour activer les fonctionnalits des systmes de chiers Unix (noms de chiers plus longs, liens symboliques, droits...). Le deuxime programme permet de crer des images qui seront lisibles sur plusieurs systmes dexploitation, en fournissant les extensions Joliet sous Windows 95 et NT (noms de chiers longs), Rock Ridge sous Unix et HFS sous Macintosh. 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. Les options des deux utilitaires mkisofs et mkhybrid sont similaires. La ligne de commande utiliser pour crer une image disque est la suivante :
mkisofs [-r | -R] -V "nom" -o image rpertoires

ou
mkhybrid [-r | -R] [-J] [-hfs] -V "nom" -o image rpertoires

selon le programme utilis. Les options -r ou -R, -J et -hfs permettent respectivement dutiliser les extensions Rock Ridge, Juliette ou HFS. mkhybrid est capable de prendre plusieurs de ces options simultanment, et de crer des CD hybrides qui fonctionneront sur plusieurs systmes. 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. Loption -o permet de spcier le nom du chier image qui doit tre cr.

190

Chapitre 6. Conguration du systme de base

Les paramtres suivants 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 indiqu en paramtre dans un autre rpertoire du CD-ROM, laide de la syntaxe suivante :
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. 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 de donnes 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 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 sons 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 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 piste1.wav \

191

Chapitre 6. Conguration du systme de base

piste2.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 ayez utiliser ces commandes directement, car il existe un programme graphique capable de les piloter de manire conviviale. Ce programme se nomme xcdroast, et peut tre rcupr sur Internet si votre distribution ne le comprend pas. Il est vivement recommand de linstaller. Son utilisation est assez lmentaire et ne devrait pas poser de problme particulier.

6.16. Installation des priphriques USB


Bien quayant eu quelques difcults ses dbuts, le port USB est dsormais en pleine volution. 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 ; 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 dlctricit.

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 drivers, 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

192

Chapitre 6. Conguration du systme de base

conguration chaud des priphriques en revanche nest pas encore tout fait nalise, bien que les mcanismes soient tous en place. La conguration et la compilation du noyau seront dcrites en dtail dans le Chapitre 9.

6.16.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 drivers 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 drivers UHCI disponibles (options UHCI (Intel PIIX4, VIA, ...) support et UHCI Alternate Driver (JE) support (NEW) )) ou le driver 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 drivers pour les priphriques dentre : un driver gnral (option USB Human Interface Device (full HID) support ), qui fonctionne avec tous les priphriques dentre du menu Input core support , et des drivers 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 driver, 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).

193

Chapitre 6. Conguration du systme de base

6.16.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 drivers 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 driver charger pour grer ce nouveau priphrique ; charger et congurer ce driver ; 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. 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

194

Chapitre 6. Conguration du systme de base

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 priphriqe 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 priphriques. 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).

6.17. Conguration de limprimante

195

Chapitre 6. Conguration du systme de base

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.17.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 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. Linux est fourni 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.

196

Chapitre 6. Conguration du systme de base

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, puisquils nont quun seul format grer. Bon nombre dapplications gnrent directement des chiers PostScript, qui sont donc envoys directement GhostScript pour limpression dnitive. 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.17.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 ltre 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.

6.17.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.

197

Chapitre 6. Conguration du systme de base

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 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

198

Chapitre 6. Conguration du systme de base

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 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.

199

Chapitre 7. 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.

7.1. Notions de rseau TCP/IP


7.1.1. Gnralits sur les rseaux
Un rseau nest en gnral rien dautre quune interconnexion entre plusieurs machines et 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. En gnral, les paquets contiennent galement ladresse de la machine source, an quune rponse puisse lui tre envoye. 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 drivers spciques au support physique. Les applications quant elles utilisent un protocole de communication plus volu, dont le but est dassurer

200

Chapitre 7. Conguration du rseau

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.

7.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 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 dtails est laiss aux drivers rseaux 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 donc utilises un peu comme les numros de tlphone : le premier octet dni le numro dun super rseau dans lequel le correspondant se trouve (ces super rseaux sont appels les rseaux de classe A), le deuxime octet dni le numro du sous-rseau dans le super rseau (ces sous-rseaux sont appels rseaux de classe B), le troisime octet dni 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 on 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 de zones 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 pro-

201

Chapitre 7. Conguration du rseau

tocole 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 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 rseau, 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

202

Chapitre 7. Conguration du rseau

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 192.168.1.15 et que son masque de sous-rseau est 255.255.255.0, alors ladresse de son rseau est 192.168.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 192.168.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. 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, la classe des rseaux, ainsi que les adresses quils utilisent, sont attribus 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, et peuvent donc tre utilises par quiconque. Les plages dadresse rserves sont les suivantes : Tableau 7-1. Plages dadresses IP rserves pour un usage personnel Classe de rseau A B C 10.0.0.0 172.16.0.0 172.31.0.0 192.168.0.0 192.168.255.0 Adresses de rseau rserves

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

203

Chapitre 7. Conguration du rseau

nombres (cest--dire les nombres qui ne font pas partie de ladresse du rseau) se terminent par 0 ou 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 capable de se connecter lInternet appartient 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. 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 au fournisseur daccs Internet, qui

204

Chapitre 7. Conguration du rseau

se charge de les transmettre aux autres ordinateurs. Notez que la passerelle peut elle-mme transmettre ces paquets une autre passerelle, 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 rseaux diffrents pour envoyer un paquet dont la destination nest pas sur son propre rseau. Par exemple, les passerelles des fournisseurs Internet peuvent tre elles-mmes connectes diffrents autres rseaux, qui sont eux-mmes connects dautres rseaux. 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 125.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. Le choix du rseau utilis est en gnral dtermin par des rgles de la forme suivante : Tous les paquets destins au sous-rseau 125.46.0.0 doivent tre envoys vers la passerelle 137.49.20.1 du rseau 137.49.20.0 . Ainsi, si la passerelle est connecte trois rseaux dadresses respectives 192.168.1.0, 137.49.20.0 et 209.70.105.10, elle transfrera le paquet destination de 125.46.10.15 la passerelle 137.49.20.1. Lensemble des 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, cependant, elle se rvle 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. 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 dterminer la nature du domaine, ou sa localisation. Par exemple, lextension .com indique clairement

205

Chapitre 7. Conguration du rseau

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 rseaux. 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 noms de domaines. 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, cependant, elle ncessite 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.

7.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 informations 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

206

Chapitre 7. Conguration du rseau

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).

Les services rseaux des machines sont organiss en couche logicielles, qui sappuient chacune sur la couche infrieure. Ainsi, TCP utilise IP, qui lui-mme utilise le driver 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 logicielle qui est plante. Par exemple, une machine peut rpondre la commande ping (classiquement utilise pour tester les connexions rseaux) 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 avec dautres protocoles rseaux 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. Par consquent, 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. Une fois tablie, une connexion TCP permet deffectuer des communications bidirectionnelles. Cela signie que le clients 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

207

Chapitre 7. 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 somme 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.

7.1.4. Les protocoles de haut niveau


TCP fournit donc les fonctionnalits requises pour la plupart des services rseaux 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 rseaux 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 ( PostOfce Protocol ) pour la rception des courriers et SMTP ( Simple Mail Transfer Protocol ) pour leur envoi. La liste de ces protocoles nest pas exhaustive, et de nouveaux services apparaissent rgulirement. Les protocoles de haut niveau ne seront donc pas traits dans ce document.

7.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 rseaux 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

208

Chapitre 7. Conguration du rseau

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.

7.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 rseaux de la machine. Il faut savoir quil existe plusieurs types dinterfaces rseaux. Les plus courants sont les trois types dinterfaces suivants :

linterface loopback, qui reprsente le rseau virtuel de la machine, et qui permet aux applications rseaux dune mme machine de communiquer entre elles mme si lon ne dispose pas de carte rseau ; les interfaces des cartes rseaux (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 drivers 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 donne 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

209

Chapitre 7. Conguration du rseau

Note : Prenez bien garde, lorsque vous crivez vos adesses 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 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, par exemple, 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

7.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

210

Chapitre 7. Conguration du rseau

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

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

211

Chapitre 7. Conguration du rseau

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

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. 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

7.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 com-

212

Chapitre 7. Conguration du rseau

mande 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 sera dtermin automatiquement par le systme partir des informations issues de la conguration de la rsolution des noms de domaines. 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 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 !

7.2.4. Rsolution des noms de domaines


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 domaines. 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 nom de domaines. 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.

213

Chapitre 7. Conguration du rseau

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. 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 soit effectue. 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

214

Chapitre 7. Conguration du rseau

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.

7.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 machine administre. Enn, le nombre dadresses IP disponibles peut se rduire et 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 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 root est alors mont en NFS. La conguration des protocoles BOOTP et DHCP ne se fait bien entendu pas de la mme manire, car le premier est implment purement au niveau du noyau, alors que le deuxime requiert la prsence dun dmon de conguration rseau. Les deux sections suivantes dcrivent la manire dutiliser ces protocoles.

7.2.5.1. Conguration dun client BOOTP


La conguration du protocole BOOTP en soi ne comporte aucune difcult particulire, puisque tout est pris en charge par le noyau. Cela suppose donc que la prise en charge de ce protocole soit active dans le noyau, et, si ce nest pas le cas, il va vous falloir recompiler un nouveau noyau et linstaller. Cette opration en revanche est relativement technique, et doit tre faite avec soin. La manire de procder sera dcrite en dtail dans le Chapitre 9. 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 : BOOTP support (NEW) pour activer le protocole BOOTP.

215

Chapitre 7. Conguration du rseau

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 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 root mont en NFS lors du dmarrage.

7.2.5.2. Conguration dun client DHCP


Comme sous la plupart des systmes Unix, le protocole DHCP est pris en charge sur les machines par 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 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 bails 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 rseaux 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.

216

Chapitre 7. Conguration du rseau

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 conits 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 rseaux 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 sera vu dans le Chapitre 9.

7.2.6. Dnition des protocoles de haut niveau


Comme nous lavons vu plus haut, le protocole IP fourni 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 rseaux dinterprter les donnes des paquets.

217

Chapitre 7. Conguration du rseau

Tout comme les adresses IP, ces numros identiant les protocoles ne sont pas trs intressant pour les humains, qui leur prfre videmment le nom du protocole. Certains programme rseaux 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 peut 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 telnet smtp pop3 irc irc Port/Protocole 21/tcp 23/tcp 25/tcp 109/tcp 194/tcp 194/udp

218

Chapitre 7. Conguration du rseau

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.

7.2.7. Le dmon inetd


La plupart des services rseaux 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. Cest pour cette raison que le dmon inetd (de langlais InterNET Daemon ) a t cr. Ce dmon est lcoute des demandes de connexion des clients pour les autres services rseaux, et ne lancent ceux-ci que lorsquun client se connecte sur leur port. Une fois lancs, ceux-ci reprennent la main et communiquent directement avec leurs clients. Ainsi, inetd coute les ports pour tout le monde, et est la plupart du temps le seul fonctionner. Les ressources systme sont conomises de cette manire, et les services rseaux sont dmarrs et arrts la demande. Le 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. Encore une fois, le chier est structur en lignes. Chaque ligne 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 communications bases sur les datagrammes, donc typiquement les communications utilisant le protocole UDP) ; lun des mots-cls wait ou nowait, qui permettent dindiquer si inetd doit attendre la n de lexcution du dmon grant ce 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 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 :

219

Chapitre 7. Conguration du rseau

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 la section suivante.

7.2.8. Conguration de la scurit


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, et qui vrient en gnral 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. 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 rseaux 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. Tout cela pour dire que les services rseaux dun systme Linux sont potentiellement nombreux, et parfois inutiles pour lemploi que lon veut en faire. Par consquent, il vaut mieux tout simplement ne pas les proposer au monde extrieur, simplement en ne lanant pas les dmons correspondants ou en commentant les lignes des services inutiles dans le chier /etc/inetd.conf. Mais cela nest pas sufsant, il faut galement restreindre le nombre de personnes et des machines auxquels les services ncessaires sont proposs. Le service le plus sensible est bien entendu le 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. De toute vidence, si quelquun trouve le mot de passe du compte root, il a tout gagn. Cela dit, il est possible de limiter srieusement les dgts en interdisant lutilisateur root de se connecter purement et simplement. Dans la majorit des cas cependant, il est concevable que root puisse se connecter sur la console locale (cest--dire, avec votre clavier et votre cran...). Il est donc possible de choisir les terminaux partir desquels lutilisateur root peut se connecter. Ces informations sont stockes dans le chier de conguration /etc/securetty.

220

Chapitre 7. Conguration du rseau

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 donc 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. Comme on le voit, il est possible de restreindre laccs certains utilisateurs pour certains services. Mais il est galement possible de restreindre les accs provenant de certaines machines, considres comme peu ables. En particulier, on peut considrer comme dangereuse tout machine trangre au rseau local. Le programme tcpd a t invent pour effectuer ces contrles. Il sintercale entre le 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 de base, 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

221

Chapitre 7. 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. 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

222

Chapitre 7. Conguration du rseau

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. 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, car le protocole IP ninclut aucun mcanisme dauthentication. Par consquent, nimporte qui peut tenter de communiquer avec votre machine au nom dune autre machine, quil aura au pralable mis hors dtat de se manifester (technique nomme IP spoong 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. Par consquent, vous ne devez pas vous reposer uniquement sur tcpd et les techniques de rewalling si vous devez crer un site parfaitement sr. En particulier, vous devriez vous intresser aux rseaux virtuels et lencryptage des donnes. Le protocole Ipv6 intgrera des mcanismes dauthentication et sera donc nettement plus sr. Bien entendu, cela dpasse le cadre de ce document.

7.3. Conguration de la connexion Internet


Les connexions Internet font partie des connexions rseaux 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.

7.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 dune ligne srie (donc galement au travers dune ligne tlphonique en utilisant un modem). Ce protocole est gr par le noyau dune part, et par le dmon pppd dautre part. Il permet deffectuer 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

223

Chapitre 7. Conguration du rseau

attendues en retour. Cela permet de reporter la conguration spcique aux modems dans les scripts de connexions. 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 connexions. Les tapes seront dtailles ci-dessous. Nous supposerons dans la suite que vos paramtres de connexions sont les suivants : Paramtre Fournisseur daccs Internet Nom de domaine Adresse du DNS Numro de tlphone Nom de login monfai.fr 192.205.43.1 08 36 76 30 18 jdupont Valeur www.monfai.fr

224

Chapitre 7. Conguration du rseau

Paramtre Mot de passe Nom de serveur (pour PAP et CHAP) gh25k ;f serveurfai

Valeur

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.

7.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

225

Chapitre 7. Conguration du rseau

ABORT "NO CARRIER" ABORT "NO DIALTONE" "" ATZ OK AT&F1 OK ATM0L0DT0836763018 CONNECT ""

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, et la technique utiliser sera dcrite ci-dessous. 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 de-

226

Chapitre 7. Conguration du rseau

mande 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

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 retour. 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

227

Chapitre 7. Conguration du rseau

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. 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 des-

228

Chapitre 7. Conguration du rseau

tination 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, la plupart des fournisseurs attribuent les adresses IP dynamiquement, et en gnral, la connexion ne se fait pas toujours sur le mme serveur (il peut y avoir plusieurs serveurs 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 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 domaines 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 #

229

Chapitre 7. Conguration du rseau

# 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 # La connexion indique nest pas active : echo "ERREUR : Il ny a pas de connexion PPP sur $DEVICE" exit 1

7.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.

230

Chapitre 7. Conguration du rseau

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...

7.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.

231

Chapitre 7. Conguration du rseau

7.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 translations dadresses ( 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 dadresses, car cest sans doute celui que la plupart des gens cherchent utiliser.

7.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 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 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

232

Chapitre 7. Conguration du rseau

et lajout des modules complmentaires qui pourraient tre dvelopps par la suite. Les fonctionnalits fournies par ces modules sont regroupes par domaine fonctionnel. 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 sources 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 des paquets des rgles de ltrage se basent sur les informations de lentte 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, le marquer pour le reconnatre dans un traitement ultrieur ou effectuer une translation dadresses ; lenvoyer dans une autre chane pour effectuer des vrications complmentaires ;

233

Chapitre 7. 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. 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 tous les paquets par dfaut et qui nont pas t accept 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.

7.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 connexions), et de modier ses adresses source et destination, pour effectuer une translation dadresse. Nous allons nous intresser plus particulirement aux diffrentes formes de translation dadresses dans la suite de cette section. Une translation dadresse nest en fait rien dautre quun remplacement contrl des adresses source ou des adresses destination de tous les paquets dune connexion. En gnral, cela permet de dtourner les connexions rseau ou de simuler une provenance unique de 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 translation dadresses : les translations dadresses source et les translation dadresses destination. Parmi les translations dadresses source se trouve un cas

234

Chapitre 7. Conguration du rseau

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. Lorsquune machine du rseau local envoie un paquet destination dInternet, ce paquet est donc achemin vers la passerelle, qui est la route par dfaut. Celle-ci commence par modier leur adresse source et mettre sa propre adresse la place, puis les transfere 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 rponse, puisque les machines situes sur Internet croient que la machine avec laquelle elles communiquent est la passerelle. Les paquets rponse sont donc tous envoys la passerelle directement, et celle-ci doit retrouver la machine du rseau local laquelle ce paquet est destin. Cette opration est ralise de diffrentes manires selon les protocoles utiliss, et elle suppose que la passerelle conserve en permanence une trace des connexions rseaux 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 rponse, celui-ci sera destination de la passerelle, avec comme port destination le port de la 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 sources des paquets provenant dInternet, elle ne fait que les racheminer vers la bonne destination. 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. 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 rassur, et peut-tre aurez-vous trouv dici peu une utilit lun de ces dinosaures qui tranent encore dans votre garage...

7.4.3. Trajet des paquets


Il existe cinq points dentre au total pour les modules de Netlter dans le code des couches rseau

235

Chapitre 7. Conguration du 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.
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 traversent ces chanes le font bien lorsquils sont au niveau du point dentre correspondant dans le code des couches rseau de Linux.

7.4.4. Conguration du noyau et installation des outils


Les fonctionnalits de Netlter sont toutes fournies par le noyau lui-mme, aussi leur conguration

236

Chapitre 7. Conguration du rseau

doit-elle se faire au niveau du noyau. La manire de procder pour congurer le noyau sera indique ultrieurement dans le paragraphe traitant de la compilation du noyau. Sachez cependant que les options activer pour mettre en place les fonctionnalits de ltrage des paquets et de translation dadresses 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) ; 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

237

Chapitre 7. Conguration du rseau

diptables. Cette archive peut tre trouve sur Internet (http ://netlter.lewatcher.org/iptables-1.1.2.tar.bz2). La version courante est la 1.1.2, aussi larchive se nomme-t-elle iptables-1.1.2.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.1.2.tar.bz2 tar xf iptables-1.1.2.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.

7.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 leur politique 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.

7.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, la table utilise par dfaut sera la table filter, qui est celle qui est normalement utilise pour dnir des rgles de ltrages 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 rgles. 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

238

Chapitre 7. Conguration du rseau

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 lister les rgles.

7.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 filter) ; chane est le nom de la chane laquelle la rgle doit tre ajoute ; source est ladresse source du paquet ; destination est ladresse destination du paquet ; 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 est le nom de linterface rseau source par laquelle le paquet doit arriver ; itfdest 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 sources ou destination, ou sur le port ou linterface). Les adresses sources 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, pour accepter le paquet qui vrie le critre de slection de la rgle ;

239

Chapitre 7. Conguration du rseau

DROP, 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 ; SNAT, pour permettre la modication des adresses source des paquets. 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 ; DNAT, pour effectuer la modication des adresses destination des paquets, an par exemple de les dtourner vers une autre machine que celle vers laquelle ils devaient 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 ; MASQUERADE, 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.

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

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 reprennent les vrication de la chane appelante lorsquils sortent de la chane appele.

240

Chapitre 7. Conguration du rseau

7.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.

7.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 police des chanes. On dnira donc toujours la police 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 de contraintes, et en utilisant des rgles de ltrages plus nes. On devra 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...).

241

Chapitre 7. Conguration du rseau

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.

7.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 dadresses destination des paquets 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 dadresses 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 toutes les paquets provenant de votre rseau local sortant par linterface ppp0 est donc MASQUERADE, ce qui active la translation dadresses. 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.

242

Chapitre 7. Conguration du rseau

Sans cela, toute tentative de masquerading sera voue lchec, avant mme datteindre la chane POSTROUTING.

7.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 domaines de votre fournisseur daccs dans le chier de conguration /etc/resolv.conf.

7.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 allumer 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 deux rseaux spars physiquement par lintermdiaire du rseau tlphonique. Cette section prsente donc les techniques de base permettant de paramtrer Linux pour accepter les communications entrantes, tant pour satisfaire aux demandes de connexions distantes que pour tablir une liaison PPP.

7.5.1. Paramtrage des connexions extrieures

243

Chapitre 7. Conguration du rseau

Nous avons vu dans la Section 6.8 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. 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 mulateur 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. 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 sries 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 compatible Hayes ; agetty, qui est une version complte de getty, utilisable aussi bien sur les lignes sries (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

244

Chapitre 7. Conguration du rseau

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 quelques 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 tlphoniques. 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 sries 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

7.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

245

Chapitre 7. Conguration du rseau

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 sries. 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 ; 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. Il est important que ces deux adresses ne soient pas sur le mme rseau, car les deux machines sont effectivement spares lune de lautre ! Un lien PPP ne constitue donc pas un rseau en soi, mais plutt 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).

246

Chapitre 7. Conguration du rseau

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 7.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 leur syntaxe. 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.

AT&K3

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.

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" &

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

247

Chapitre 7. Conguration du rseau

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 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 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 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 Signication Nom de linterface rseau (par exemple, ppp0 .

248

Chapitre 7. Conguration du rseau

Paramtre $2 $3 $4 $5 $6

Signication 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 faudra donc relancer pppd rgulirement lorsquil se terminera. 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 matriel : modem # Contrle de flux matriel : crtscts

7.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 :

249

Chapitre 7. Conguration du rseau

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. 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...

7.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 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.

250

Chapitre 7. Conguration du rseau

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 au serveur 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 changent qui sont le plus souvent demandes. 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). 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 de sa conguration. 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 partages 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

o 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 peu peupls. En fait, squid peut stocker tellement dobjets que le nombre de rpertoires peut lui-

251

Chapitre 7. Conguration du rseau

mme 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 rpertoire 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 noquery, 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 trafc 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.

252

Chapitre 7. Conguration du rseau

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. 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 ; port, qui permet de slectionner les requtes sadressant sur les ports fournis en paramtres ; proto, qui permet de spcier la liste des protocoles utiliss par les requtes ; method, qui permet de slectionner les requtes HTTP par la mthode utilise dans la requte.

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 connexions : acl connect method CONNECT

253

Chapitre 7. Conguration du rseau

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 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.

7.5.5. Conguration dun serveur DHCP

254

Chapitre 7. Conguration du rseau

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 { 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 ;

255

Chapitre 7. Conguration du rseau

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 an de 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 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 sera vu dans le Chapitre 9.

7.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.

256

Chapitre 7. Conguration du rseau

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.

7.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 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

257

Chapitre 7. Conguration du rseau

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 ports 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 RPC, 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 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. 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.

258

Chapitre 7. Conguration du rseau

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 dinformation 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 map_static contient un certain nombre de lignes, chacune dnissant lassociation entre les iden-

259

Chapitre 7. Conguration du rseau

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

260

Chapitre 7. Conguration du rseau

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 killall -HUP rpc.nfsd

7.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). La compilation du noyau sera dcrite en dtail ultrieurement. 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

261

Chapitre 7. Conguration du rseau

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

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.

7.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.0.7. Si ce nest pas celle fournie avec votre distribution, il est fortement recommand deffectuer une mise jour. Linstallation de Samba ne pose pas de problmes particuliers. 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

262

Chapitre 7. Conguration du rseau

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 donne centrale permettant de raliser lauthentication des utilisateurs lors des accs aux machines par le rseau, on dit quil sagit dun 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 domaines. 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 :

263

Chapitre 7. Conguration du rseau

/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 en gnral. Seul Windows NT dispose de ces fonctionnalits, condition quil utilise des systmes de chiers NTFS. Cependant, les informations de scurit de Windows NT sont toutes perdues lorsquon accde aux chiers dun partage : lourd hritage que celui du DOS ! 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 ; 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 seul Windows NT puisse servir de contrleur 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 ou Windows 98 (heureusement, Samba est capable de servir de contrleur de domaine, cependant, nous ne verrons pas ce type de conguration). 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.

264

Chapitre 7. Conguration du rseau

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 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 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

265

Chapitre 7. Conguration du rseau

# 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 (motcl 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 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 lencryptage 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.

266

Chapitre 7. Conguration du rseau

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 leur login 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. 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]

267

Chapitre 7. Conguration du rseau

# 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

268

Chapitre 7. 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

269

Chapitre 7. Conguration du rseau

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, 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 avec la mthode habituelle, 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

270

Chapitre 7. Conguration du rseau

locales sur le port TCP 901. Lutilisation de SWAT ne pose pas vraiment de problme et ne sera donc pas dcrite plus en dtail ici.

7.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 seront dcrites en dtail dans le Chapitre 9. 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.

271

Chapitre 7. Conguration du rseau

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. Et il est lui-mme un caractre spcial, qui doit donc 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 :
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 possible galement 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 quant elle 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 problme 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

272

Chapitre 7. Conguration du rseau

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 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.

273

Chapitre 8. Notions de compilation et de sources


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 le recompilation du noyau de Linux ! La raison de cet tat de fait provient sans nul doute du fait que les licences GNU et BSD imposent 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 un peu de vocabulaire. Nous verrons ensuite comment installer (et compiler !) le compilateur C/C++ de GNU.

8.1. Vocabulaire
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.
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.

274

Chapitre 8. Notions de compilation et de sources

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 de 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 capable de lire le code source et de lexcuter directement ; disposer dun autre programme capable de traduire le code source en langage binaire, directement comprhensible par le matriel.

Les programmes de la premire catgorie sont appels des interprteurs, car ils traduisent le code source la vole, lors de lexcution du programme. Les programmes interprts sont fatalement relativement lents, puisque linterprteur doit analyser en permanence les chiers sources pour les excuter. En revanche, les programmes de la deuxime catgorie sont appels compilateurs. Les programmes compils sont beaucoup plus rapides lexcution, puisquils ne sont traduit quune seule fois en langage machine et sadressent directement au matriel.

275

Chapitre 8. Notions de compilation et de sources

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 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. 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. Cette opration 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 ces deux chiers. 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). Malheureusement, cette solution souffre de la duplication du code contenu dans les 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 dyna-

276

Chapitre 8. Notions de compilation et de sources

mique nest pas incluse dans les chiers des excutables qui lutilisent, mais reste dans un rpertoire bien dni du systme de chiers. De cette manire, le code de la bibliothque peut tre partag entre diffrents programmes, et la mise jour de la bibliothque peut se faire sans avoir toucher tous les programmes qui lutilisent. Le problme est cependant que ldition de liens reste incomplte, 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 lien dynamique. Ainsi, la diffrence de performance est devenue peine dcelable. 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.

277

Chapitre 8. Notions de compilation et de sources

En gnral, la compilation dun programme passe par les tapes suivantes :


installation des chiers sources du programme ; conguration du programme pour lenvironnement courant ; appel make pour la compilation ; 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-pclinux-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 :

278

Chapitre 8. Notions de compilation et de sources

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 , ou quelque chose de similaire. 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 temps 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 disque dur et la quantit de la mmoire vive disponible.

8.2. Compilation de GCC


La plupart des distributions sont fournies avec le compilateur GNU C/C++. Cependant, la version fournie est souvent la version 2.7.2., qui est assez ge, pour ne pas dire compltement obsolte. La raison de cet tat de fait est que la compilation du noyau de Linux pose quelques problmes avec les versions ultrieures de GCC. Les distributeurs sassurent ainsi de ne pas avoir de problmes relatifs aux dernires versions de GCC en ninstallant que la version 2.7.2. par dfaut. Cependant, il nest pas raisonnable de continuer utiliser cette version, car la version courante, savoir GCC 2.95.3 (17 mars 2001), est nettement meilleure sur tous les points de vue. Elle optimise mieux le code et elle comprend bien mieux le C++ que la version 2.7.2. Pour tout dire, il sest coul deux versions majeures entre la 2.7.2. et la 2.95.3. ! Sachez que lon ninstalle pas GCC pour le plaisir de le faire. Cest une tape quasiment ncessaire. Cependant, il est lgitime que vous vous posiez quelques questions. La premire est : Quel est lintrt dinstaller la dernire version de GCC pour celui qui ne veut pas programmer ? . Eh bien tout simplement de ne pas avoir de problmes avec des programmes rcents dont seuls les sources sont disponibles. Il est probable quun jour ou un autre vous trouviez des sources qui ne compilent tout simplement pas avec GCC 2.7.2. Dans ce cas, vous serez oblig dinstaller la dernire version de GCC, alors autant le faire tout de suite. Une autre question peut survenir, surtout si vous avez entendu parler de rumeurs peu rassurantes propos du noyau de Linux : Ny a-t-il pas un risque si lon compile le noyau de Linux avec une version rcente de GCC ? . La rponse est non, pour deux raisons. Premirement, il y avait bien un problme avec les versions 2.0. du noyau, mais ce problme a t rsolu partir de la version 2.2. Deuximement, les difcults que lon rencontre lors de la compilation du noyau avec les nouvelles versions de GCC proviennent de quelques fonctions mal crites dans le noyau, qui ne compilent pas correctement avec une option doptimisation qui a t

279

Chapitre 8. Notions de compilation et de sources

ajoute rcemment GCC. Par consquent, il suft de dsactiver cette option pour ne plus avoir de problmes. Les chiers makele des noyaux rcents le font automatiquement. Ce problme est dcrit plus en dtail dans le chapitre traitant de la compilation du noyau. Certaines distributions fournissent galement la version 1.1.2. du systme de compilation exprimental de GNU ( EGCS en anglais, abrviation de Experimental GNU Compilation System ). Cet outil est une version de dveloppement de GCC, et a deux inconvnients majeurs :

primo, elle nest pas ofcielle ; secondo, elle est elle aussi obsolte, puisque la version 2.95.3. de GCC est ultrieure EGCS 1.1.2 (EGCS et GCC ont t fusionn en 1999, aprs la diffusion des distributions de Linux utilisant le noyau 2.2.).

En clair, si la version 1.1.2. dEGCS est actuellement fournie avec votre distribution, cest parce que celle-ci a t diffuse avant la sortie de GCC 2.95.3. Il faut donc choisir ce dernier de prfrence.
Note : Il est galement assez courant de voir distribues des versions 2.96 et 2.97 de GCC. Ces versions nont rien dofciel, et sont des versions de dveloppement qui doivent normalement conduire la version nale 3.0 de GCC. Il ne faut pas les utiliser, elles ne sont pas stables, et aucun programme ne requiert actuellement les fonctionnalits du futur GCC 3.0. Celui-ci sera disponible avant que cet tat de fait ne change.

8.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-2.95.3.tar.gz . Il est inutile, avec cette version, de rcuprer la librairie standard C++, car elle est fournie avec les sources de GCC. Il va de soi que si, au moment o vous lisez ce document, la version 3.0 de GCC est diffuse, il faut rcuprer les sources de cette version. 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 disposez 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.

8.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

280

Chapitre 8. Notions de compilation et de sources

o archive est le nom de larchive comprime contenant ces sources. Dans notre cas, ce doit tre gcc-2.95.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 supposerons que le rpertoire des sources se nomme srcdir, et que le rpertoire de compilation se nomme objdir.

8.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 fortement conseill de passer loption -enable-shared, qui permet dutiliser les bibliothques dynamiques. Il est galement recommand de fournir loption -enablethreads, qui permet dactiver le support du multithreading pour le langage Objective C (cest un langage objet driv du C, gr par GCC en marge du C++ et qui nest pas trs courant, mais sufsamment utilis pour quon ne puisse pas sen passer). Ces fonctionnalits tant disponibles sous Linux, autant les utiliser. 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-shared -enable-threads -host=hte

o hte est de la forme ix86-pc-linux-gnu . 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 -with-local-prefix=/usr \ -with-gxx-include-dir=/usr/include/g++

la ligne de commande de congure.

281

Chapitre 8. Notions de compilation et de sources

8.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 150 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.

8.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 librairie standard C++.

282

Chapitre 9. Compilation du noyau de 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 lien, les modules du noyau tant fournis sous la forme de chiers objets. La compilation ou ldition de lien du noyau est une opration technique qui peut surprendre un habitu des systmes ferms que sont par exemple Windows 95 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 install sur votre systme ? La compilation du noyau de Linux ncessite de disposer des dernires sources du noyau (version 2.4.4. au 28/04/2001) et dun compilateur. Il est vident que le compilateur idal est le compilateur GNU C/C++ GCC. On utilisera une version 2.7.2. ou suprieure de GCC. On prendra garde au fait que les versions de GCC suprieures 2.95. ne peuvent pas tre utilises pour compiler les noyaux de version 2.2.10. ou moins. En effet, les compilateurs rcents utilisent des optimisations qui sont incompatibles avec certaines constructions utilises par ces noyaux (en ralit, ces constructions sont fausses, mais ne posent de problmes quavec les compilateurs rcents). Je supposerai dans la suite de ce document que vous disposez de la dernire version du noyau, savoir la version 2.4.4. La compilation du noyau nest pas trs difcile, cependant, elle ncessite de rpondre correctement aux questions de conguration. Les erreurs peuvent tre multiples, et seront 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 galement dcrites en dtail plus loin. La compilation du noyau se passe en quatre tapes :

installation des chiers sources ; rponse aux questions de conguration ; compilation proprement dite ; installation du nouveau noyau.

9.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 17 Mo. Toutefois, si lon dispose dj dune version complte des chiers sources, il est envisageable de ne tlcharger que les patches. Il est recommand dinstaller les sources du noyau dans un rpertoire /usr/src/linux<version>/ et dditer un lien symbolique vers ce rpertoire sous le nom /usr/src/linux/. Cela permet de

283

Chapitre 9. Compilation du noyau de Linux

conserver plusieurs jeux de sources de versions diffrentes, et de travailler sur la version courante sous /usr/src/linux/. 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 des chiers sources actuels de Linux :
cd /usr/src rm linux mkdir linux-2.4.4 ln -s linux-2.4.4 linux tar xvfz linux-2.4.4.tar.gz

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. Consultez la page de manuel patch pour plus de dtails sur cette option. Il est recommand de tlcharger au moins une fois les sources compltes 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.

9.2. Lancement du programme de conguration


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 :

284

Chapitre 9. Compilation du noyau de Linux

make xconfig

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.

9.3. Choix des options de conguration


Les questions poses 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 problme. Vous devrez cependant certainement les adapter selon vos besoins. Je tiens galement 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. An de se prmunir contre tout mauvais choix, il est impratif de suivre pas pas les recommandations donnes dans les paragraphes concernant linstallation du nouveau noyau et suivants. Ces recommandations stipulent simplement quil faut conserver le noyau actuel tant que lon nest pas sr que le noyau que lon installe fonctionne parfaitement.

9.3.1. Menu Code maturity level options


Ce menu donne accs aux fonctionnalits en cours de dveloppement. Il est dconseill de rpondre Y, sauf si des drivers particuliers sont ncessaires. Si lon rpond N, les questions de conguration concernant ces fonctionnalits ne seront pas poses.

9.3.2. Menu Loadable module support


Loption Enable loadable module support permet lemploi des modules par le systme. 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

285

Chapitre 9. Compilation du noyau de Linux

ncessaire si vous dsirez utiliser des modules non fournis dans les sources du noyau (par exemple des drivers 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.

9.3.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 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 /dev/cpu/microcode - Intel P6 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 celui-ci 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 . La rponse recommande est off .

286

Chapitre 9. Compilation du noyau de Linux

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 APIC and 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.

9.3.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 SGI Visual Workstation support permet de gnrer un noyau pour les stations de travail Silicon Graphics de type 320 ou 540. Ces stations utilisent des processeurs x86, mais sont bass sur des composants systmes diffrents. moins que vous nayez une telle machine, rpondez par N. Loption PCI support permet dactiver le support des ordinateurs base de 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 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.

287

Chapitre 9. Compilation du noyau de Linux

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. Cette option est ncessaire lutilisation des cartes PCMCIA sur les portables. Elle vous donnera laccs loption PCMCIA/CardBus support , qui permet dactiver la gestion des cartes PCMCIA 32 bits (cela nest pas ncessaire pour utiliser les cartes PCMCIA 16 bits). Cette option est facultative pour lutilisation des priphriques USB, toutefois, ces priphriques ne seront 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 . Lorsquun priphrique sera connect, le noyau appelera alors le programme de conguration /sbin/hotplug pour charger le gestionnaire de priphrique appropri. 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. Il est recommand de rpondre par Y cette question. Loption Kernel core (/proc/kcore) format permet de choisir le format de chier binaire 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 chier dsormais obsolte, ou ELF (abrviation de langlais Executable and Linking Format ), le format de chier actuel. La rponse recommande est ELF . Loption Kernel support for a.out binaries permet dutiliser les programmes dont le format de chier binaire est le format a.out . Bien que ce format de chier binaire 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 chier binaire est le format ELF. Ce format de chier 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

288

Chapitre 9. Compilation du noyau de Linux

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 indits. La rponse recommande est donc N, moins que vous ne soyez sr que votre matriel est 100% compatible ACPI. Notes que 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.

9.3.5. Menu Memory Technology Devices (MTD)


Ce menu vous permet dactiver la gestion des puces de mmoire Flash ou autre priphrique 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 de drivers pour les diffrents matriels supports. La rponse recommande est N.

9.3.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 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.

289

Chapitre 9. Compilation du noyau de Linux

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 driver de port parallle 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 driver du port parallle pour utiliser les communications bidirectionnelles du port. Cette option est utile si lon utiliser 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.

9.3.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 drivers de ces priphriques en modules. La conguration de ces priphriques ISA Plug and Play en est donc 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.

9.3.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.

290

Chapitre 9. Compilation du noyau de Linux

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. 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 driver. 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.

291

Chapitre 9. Compilation du noyau de Linux

Loption Mylex DAC960/DAC1100 PCI RAID Controler support permet dactiver la gestion des contrleurs RAID Mylex. La rponse recommande est N. Loption Loopback device support permet dutiliser des chiers classiques pour y placer un systme de chier. 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 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.

9.3.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 lun 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.

292

Chapitre 9. Compilation du noyau de Linux

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 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. Loption LVM information in proc filesystem permet dajouter des informations sur les volumes virtuels LVM dans le systme de chiers virtuel /proc/. La rponse recommande est N.

9.3.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 Kernel/User netlink socket permet dactiver un mcanisme de communication interprocessus bas sur les sockets. Quelques applications peuvent utiliser cette interface, et certaines fonctionnalits du noyau utilisent elles-mmes cette interface pour publier des informations utilisables par les programmes clients. La manire dont ce protocole fonctionne est assez complique. Elle utilise des chiers spciaux de priphriques placs dans le rpertoire /dev/. Les chiers spciaux utiliss par cette interface de communication disposent tous du mme code majeur, qui vaut 36. La nature des informations qui transitent par ces chiers spciaux est dpendante de leur code mineur. La rponse recommande est N. Loption Routing messages permet dobtenir des informations sur le routage rseau par lintermdiaire du chier spcial de code majeur 36 et mineur 0. La rponse recommande est N. 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 connexions 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

293

Chapitre 9. Compilation du noyau de Linux

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 dadresses 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 des noyaux et du masquerading, aussi la rponse recommande est-elle Y. Loption Socket Filtering active la fonctionnalit permettant aux programmes utilisateurs denregistrer un ltre pour chaque socket. Ce ltre indique au noyau si les paquets correspondants doivent tre transmis ou rejets. Ce type de ltres 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 sockets de types 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 sources en plus des adresses destinations des paquets. La rponse recommande est N. 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 le masquerading, aussi la rponse recommande est-elle N. Loption IP : equal cost multipath permet de choisir une route possible parmi plusieurs routes de manire non dterministe pour un paquet donn. La rponse recommande est N.

294

Chapitre 9. Compilation du noyau de Linux

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 chier root par NFS. 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. 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

295

Chapitre 9. Compilation du noyau de Linux

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 nest pas encore documente. Elle ne sera donc pas traite dans ce document. La rponse recommande est 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 IPv6 : enable EUI-64 token format permet dutiliser le format dadresse EUI64, qui est le nouveau format dadresse utilis par le protocole IPv6. Il faut rpondre Y cette question si lenvironnement rseau utilise ce nouveau format, et N dans le cas contraire. La rponse recommande est N. Loption IPv6 : disable provider based addresses permet de dsactiver compltement lancien adressage dIPv6. Cette option doit tre choisie lorsque lenvironnement rseau a compltement t bascul vers le nouveau mode dadressage, ou si des problmes apparaissent en raison de conits entre les deux modes dadressage dans un rseau qui na t que partiellement migr en IPv6. La rponse recommande est N. Loption IPv6 : routing messages via old netlink permet dobtenir les informations de routage de manire compatible avec lancien protocole (IPv4 ?). 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 connects 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.

296

Chapitre 9. Compilation du noyau de Linux

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. 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 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 rseaux 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.

297

Chapitre 9. Compilation du noyau de Linux

Loption Frame Diverter (EXPERIMENTAL) active une fonctionnalit permettant de dtourner les trames rseaux 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. 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 drivers rseaux pour attendre avant de rmettre les paquets en cas de congestion extrme du rseau. La rponse recommande est N.

9.3.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 de connexions pour les protocoles comme TCP. Cette option est galement ncessaire pour utiliser les mcanismes de translation dadresses, 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 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

298

Chapitre 9. Compilation du noyau de Linux

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 messages pour chaque paquet qui vrie 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 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 tcpmss match support permet de prendre en compte de 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 Connection state match support permet de slectionner les paquets selon leur rle dans la gestion des connexions rseaux. Par exemple, cette option permet de distinguer les paquets qui tablissent une connexion rseau des autres paquets. La rponse recommande est Y. 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

299

Chapitre 9. Compilation du noyau de Linux

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 dadresses 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 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 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 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 trace du systme. On veillera activer galement la gestion des limites sur les rgles de ltrages an dviter dengorger les chiers de traces si lon dsire utiliser cette option. 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 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

300

Chapitre 9. Compilation du noyau de Linux

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.

9.3.12. Menu IPv6: Netlter Conguration


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 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 Packet filtering permet dactiver la gestion de la table filter, an de raliser par exemple un Firewall. 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.

9.3.13. Menu QoS and/or fair queueing


Loption QoS and/or fair queuing (EXPERIMENTAL) 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.

9.3.14. 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.

301

Chapitre 9. Compilation du noyau de Linux

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.

9.3.15. 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 .

9.3.16. 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. Il est recommand de rpondre par Y cette question. Loption Use old disk-only driver on primary interface permet dutiliser un vieux driver pour les disques IDE connects la premire interface IDE et qui poseraient quelques problmes avec le driver gnral. Seule la premire interface sera concerne par cette option, les autres interfaces utiliseront le nouveau driver. 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. Il suit un certain nombre doptions permettant dactiver des fonctionnalits spciques aux principales grandes marques de disque dur. Ces options ne sont pas encore disponibles, et ne sont pas encore documentes. Elles ne seront donc pas dcrites ici. 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. Lac-

302

Chapitre 9. Compilation du noyau de Linux

cs 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 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 CMD640 chipset bugfix/support permet de contourner une 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 chipset 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 RZ1000 chipset bugfix/support permet de contourner une bogue des chipsets RZ1000. 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 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 fonctionne-

303

Chapitre 9. Compilation du noyau de Linux

ment 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 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 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. 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.

9.3.17. 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 priphriques 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 drivers, 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 de connecter 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 drivers SCSI du noyau sont

304

Chapitre 9. Compilation du noyau de Linux

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 driver gnrique, mais peuvent tre utiliss malgr tout en activant loption suivante SCSI OnStream SC-x0 tape support . Le driver 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 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 drivers 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 drivers 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.

9.3.18. Menu SCSI low-level drivers

305

Chapitre 9. Compilation du noyau de Linux

Ce jeu doptions permet de slectionner le driver bas niveau SCSI adapt 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 driver bas niveau pour ceux-ci.

9.3.19. 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 drivers des diffrents types de matriels SCSI au format PCMCIA que Linux est capable de grer. Vous devez donc choisir les drivers correspondants votre matriel. La rponse recommande est N.

9.3.20. Menu IEEE 1394 (FireWire) support


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 drivers pour les cartes FireWire PCILynx de Texas Instruments. La rponse recommande est N. Loption Use PCILynx local RAM permet dutiliser la mmoire vive embarque dans certaines cartes PCILynx de Texas Instruments an damliorer les performances. Ce type de carte est trs rare, et ce driver ne fonctionne pas du tout avec les cartes qui ne disposent pas de mmoire vive embarque, aussi faut-il rpondre N cette question. Loption Support for non-IEEE1394 local ports permet daccder aux ressources matrielles des cartes PCILynx par lintermdiaire de chiers spciaux de priphriques ddis, au lieu de passer par linterface FireWire standard. La rponse recommande est N. Loption OHCI (Open Host Controller Interface) support active la prise en charge des contrleurs IEEE 1394 respectant les spcications OHCI (il sagit dun standard de communication pour les contrleurs). Ce driver 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 Video 1394 support nest pas documente et ne sera pas dcrite dans ce document. 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 Excessive debugging support est rserve pour les dveloppeurs de drivers. 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.

306

Chapitre 9. Compilation du noyau de Linux

9.3.21. 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 driver uniforme au niveau du systme dexploitation pour toute une classe de priphriques. Ce driver uniforme ( OSM , abrviation de Operating System Module ) communique avec des drivers spciques chaque type de matriel, qui ne font aucune hypothse sur le systme dexploitation utilis. Ainsi, il est possible dcrire des drivers 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 drivers I2O OSM que vous voulez utiliser.

9.3.22. 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 rseaux 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 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

307

Chapitre 9. Compilation du noyau de Linux

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 block 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 drivers 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 drivers 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. 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.

308

Chapitre 9. Compilation du noyau de Linux

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. 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 logiciel, mais ces brevets sont illgaux en Europe et il est tout fait lgal de lutiliser. Cependant, les taux de compressions obtenus sont 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 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 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 driver 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.

9.3.23. Menu ARCnet devices


Loption ARCnet support permet dactiver la gestion des cartes de type ARCnet. Les options qui suivent correspondent aux diffrents drivers 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 driver correspondant votre matriel dans la suite du menu. La rponse recommande est N.

309

Chapitre 9. Compilation du noyau de Linux

9.3.24. 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 drivers 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. 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.

9.3.25. 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 drivers 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 driver 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 drivers pour ces cartes, selon quelles sont ISA ou non. Le driver ISA peut tre choisi en activant les options Other ISA cards et NE2000/NE1000 support . Le driver pour les cartes PCI peut tre slectionn en activant les options EISA, VLB, PCI and on board controllers et PCI NE2000 support .

9.3.26. Menu Ethernet (1000 Mbit)


Les options disponibles dans ce menu permettent de choisir les drivers utiliser pour les cartes Ethernet Gigabit. Choisissez loption qui correspond votre matriel si vous en disposez dune.

9.3.27. 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-amateurs). Les options qui suivent permettent de choisir les drivers disponibles. La rponse recommande est N.

310

Chapitre 9. Compilation du noyau de Linux

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.

9.3.28. 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 drivers pour ces adaptateurs. La rponse recommande est N.

9.3.29. 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 drivers des cartes MultiGate. La rponse recommande est N. Les options qui suivent permettent de paramtrer les fonctionnalits supportes par le driver. Loption Etinc PCISYNC serial board support (EXPERIMENTAL) nest pas encore documente et ne sera pas dcrite plus en dtail ici. Loption LanMedia Corp. SSI/V.35, T1/E1, HSSI, T3 boards permet dactiver la gestion des drivers des cartes LanMedia. La rponse recommande est N. Loption Sealevel Systems 4021 support permet dactiver la gestion des drivers des cartes Sealevel ACB 56. La rponse recommande est N. Loption SyncLink HDLC/SYNCPPP support nest pas documente lheure actuelle. La rponse recommande est N. Loption Generic HDLC driver et ses sous-options ne sont pas encore documentes et ne seront donc pas dcrites plus en dtail ici. Loption Frame relay DLCI support permet dactiver la gestion du protocole Frame Relay. Les options qui suivent permettent de congurer le driver. La rponse recommande est N.

311

Chapitre 9. Compilation du noyau de Linux

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 driver. La rponse recommande est N. Loption LAPB over Ethernet driver permet dactiver un driver 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 SBNI12-xx support permet dactiver la gestion des cartes SBNI12-xx. La rponse recommande est N.

9.3.30. 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 drivers pris en charge par Linux. La rponse recommande est N.

9.3.31. 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 ENI155P active la gestion des cartes ATM ENI155P dEfcient Networks et Power155 de SMC. Les options qui suivent permettent de congurer le driver. 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 le driver. La rponse recommande est N. Loption IDT 77201 (NICStAR) (ForeRunnerLE) active la gestion des cartes ATM bases sur le chipset NICStAR. Les options qui suivent permettent de congurer le driver. 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 du driver. 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 du driver. La rponse recommande est N.

312

Chapitre 9. Compilation du noyau de Linux

Loption Interphase ATM PCI x575/x525/x531 active la gestion des cartes ATM ChipSAR dInterphase. Loption qui suit permet dactiver les informations de dbogage du driver. 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 le driver. La rponse recommande est N.

9.3.32. 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.

9.3.33. Menu AX.25 network device drivers


Ce menu permet de choisir les drivers bas niveau utiliser pour le support des communications Radio. Il faut choisir le driver correspondant votre matriel.

9.3.34. 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.

9.3.35. Menu Infrared-port device drivers


Ces options permettent de choisir les drivers bas niveau pour les priphriques infrarouges. Vous devez choisir le driver correspondant votre matriel.

9.3.36. 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.

313

Chapitre 9. Compilation du noyau de Linux

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 (module only) active la gestion de la compression de donne avec lalgorithme BSD. Cette fonctionnalit nest disponible que sous la forme de module pour des raisons de licences logicielles. 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.

9.3.37. 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.

9.3.38. 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.

9.3.39. 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 driver appropri au matriel dont vous disposez. La rponse

314

Chapitre 9. Compilation du noyau de Linux

recommande est N. Loption CAPI2.0 support permet dactiver la gestion de linterface de programmation CAPI ( Common ISDN 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 driver des cartes AVM. La rponse recommande est N. Loption CAPI2.0 Middleware support (EXPERIMENTAL) nest pas encore documente et ne sera pas dcrite dans ce document. Loption CAPI2.0 /dev/capi support nest pas documente et ne sera pas dcrite ici. La rponse recommande est N. Loption CAPI2.0 filesystem support nest pas encore documente et ne sera pas dcrite dans ce document. Loption CAPI2.0 capidrv interface support nest pas documente et ne sera pas dcrite ici. La rponse recommande est N. Les options qui suivent permettent de prendre en charge les cartes AVM. La rponse recommande est N. Loption Hypercope HYSDN cards (Champ, Ergo, Metro) support (module) permet de prendre en charge les cartes ISDN actives dHypercope. 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.

9.3.40. 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 driver qui correspond au matriel dont vous disposez. La rponse recommande est N.

9.3.41. 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

315

Chapitre 9. Compilation du noyau de Linux

dun tel clavier, il ny a normalement rien faire pour lutiliser, puisque le BIOS assure la compatibilit 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 codes majeur et mineur 13 et 63. Ce driver 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 driver est galement incompatible avec le driver 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 horizontalement et verticalement 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 restent 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 driver pour les serveurs X de XFree86 capable de lire les donnes provenant de ces chiers spciaux de priphriques).

9.3.42. Menu Character devices


Loption Virtual terminal permet dactiver la gestion des terminaux virtuels, accessibles avec les combinaisons de touche ALT+Fx (ou CTRL+ALT+Fx sous XWindow). Il faut au moins un terminal

316

Chapitre 9. Compilation du noyau de Linux

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 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 driver. 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 drivers 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

317

Chapitre 9. Compilation du noyau de Linux

/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 chier 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 dimpressions ne seront charges que lorsque cest 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. 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 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 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 /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.

318

Chapitre 9. Compilation du noyau de Linux

Loption /dev/agpgart support (AGP support) active la gestion des transferts de donnes acclrs par le bus AGP pour les drivers 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, mais elle permet daccrotre les performances des drivers 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 permettant aux pilotes graphiques daccder directement aux ressources des cartes graphiques. Cette fonctionnalit est la base du fonctionnement de larchitecture 3D de Linux. Les options suivantes permettent de slectionner le type de carte graphique install sur le systme. La rponse recommande est N, sauf si vous disposez dune de ces cartes graphiques. Dans ce cas, vous devriez certainement utiliser XFree86 4.0.3, an de bncier des acclrations 3D de ces cartes graphiques. Notez 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 driver de NVidia. Vous pouvez donc rpondre N cette question si vous disposez dune telle carte graphique.

9.3.43. 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 utilisable. 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 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.

319

Chapitre 9. Compilation du noyau de Linux

9.3.44. 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 driver gnrique de ce type de souris, les drivers spciques peuvent 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 driver. 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 driver. 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 son 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 driver gnrique PS/2 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 PC110 digitizer. La rponse recommande est N.

9.3.45. Menu Joystick support


Loption Jostick support permet dactiver les options de gestion des joysticks. Les options suivantes correspondent aux drivers des diffrents types de joysticks supports. La rponse recommande est N.

9.3.46. 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.

320

Chapitre 9. Compilation du noyau de Linux

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 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 Software Watchdog permet dactiver la gestion du chien de garde logiciel. La rponse recommande est N. Loption WDT Watchdog timer permet dactiver la gestion des cartes WDT. 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. Loption WDT PCI Watchdog timer permet dactiver la gestion des cartes WDT PCI. 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. Loption Berkshire Products PC Watchdog permet dactiver la gestion des cartes Berkshire. 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 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 Mixcom Watchdog permet dactiver la gestion des chiens de garde Mixcom. 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.