Guide d'installation et configuration Linux

466
Guide d’installation et de configuration de Linux Christian Casteyde

description

un guide qui vous aidera a installer et configurer votre distribution

Transcript of Guide d'installation et configuration Linux

Guide dinstallation et de conguration de Linux

Christian Casteyde

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

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

Historique des versions

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

Premire version publique.

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

v

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

vi

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

vii

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

viii

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

ix

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

x

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

xi

xii

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

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

xiii

xiv

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

i

Remarques de lauteur

ii

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

1

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

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

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

2

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

3

Chapitre 1. Introduction

4

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

5

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

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

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

6

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

7

Chapitre 2. GNU, Linux et les logiciels libres

8

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

9

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

le noyau Linux ;

10

Chapitre 3. Concepts de base

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

Figure 3-1. Architecture des systmes GNU/Linux

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

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

En bref, cest la voie de la vrit.

11

Chapitre 3. Concepts de base

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

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

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

12

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

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

Il nest sans doute pas inutile de prciser un peu le fonctionnement des droits dans le systme de chiers. Le droit de lecture correspond la possibilit douvrir et de consulter un chier, ou de lister le contenu dun rpertoire. Le droit dcriture correspond la possibilit de modier un chier, ou de crer ou supprimer un chier dun rpertoire. Enn, le droit dexcution correspond la possibilit dexcuter un chier contenant un programme, ou dentrer dans un rpertoire. On notera par exemple quil est possible dobtenir la liste des chiers dun rpertoire sans pouvoir sy dplacer, ou encore de modier un chier sans pouvoir le lire. On prendra garde galement que le fait davoir le droit dcriture sur un chier ne donne pas le droit de le supprimer (cependant, on peut le vider !). Pour cela, il faut avoir le droit dcriture sur le rpertoire contenant ce chier. Comme on le voit, les droits daccs aux chiers et aux rpertoires sont trs souples. Ces droits sont attribus sparment pour le propritaire, le groupe et les autres utilisateurs (cest-dire les utilisateurs qui ne font pas partie du groupe auquel appartient le chier). Il est donc possible de donner par exemple tous les droits au propritaire dun chier, et seulement le droit de lecture aux autres utilisateurs. Cette conguration est celle qui est choisie par dfaut lors de la cration dun chier, elle assure que seul le propritaire peut modier ou excuter ce chier, tout en laissant la possibilit aux autres de le lire. Ce choix privilgie la scurit des donnes de chac