Guide d'installation et de configuration de Linux Christian Casteyde Permission vous est donne de copier, distribuer et modifier 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 l'annexe intitule "Licence de Documentation Libre GNU". Ce docvument a t extrait partir de linternet et sera decoup en plusieurs parties selon les chapitres, les annexes et autres Table des matires Remarques de l'auteur 1. Introduction 1.1. Matriel, logiciel et systme d'exploitation 1.2. Qu'est-ce que Linux ? 1.3. Pourquoi Linux ? 1.4. Plan du document 2. GNU, Linux et les logiciels libres 2.1. Les logiciels libres et la Free Software Foundation 2.2. Droits d'auteurs et la licence GPL 2.3. Le projet GNU et Linux 2.4. Avantages et inconvnients des logiciels libres 2.5. La motivation des auteurs et le financement des logiciels libres 3. Installation du systme 3.1. Choix de la distribution 3.2. Partitionnement et systmes de fichiers 3.2.1. Notion de partition 3.2.2. Notion de systme de fichiers 3.2.3. Choix du plan de partitionnement 3.3. Prrequis 3.3.1. Rcupration des informations sur le matriel 3.3.2. Sauvegarde des donnes 3.4. Procdure d'installation gnrique 3.4.1. Premier dmarrage 3.4.2. Trouver de la place pour installer le systme 3.4.3. Partitionnement du disque 3.4.4. Cration des systmes de fichiers 3.4.5. Cration de la partition de swap 3.4.6. Installation des composants de base 3.4.7. Configuration du gestionnaire d'amorage 3.5. Installation de la Mandriva 2007 3.6. Installation de la Debian 4.0r1 3.7. Installation de la Slackware 12.0 4. Prsentation gnrale du systme 4.1. Architecture du systme 4.1.1. Principe de modularit DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 2
4.1.2. Les diffrentes couches logicielles sous Linux 4.1.3. Rsum de l'architecture de Linux 4.2. Scurit et utilisateurs 4.2.1. Gnralits 4.2.2. Notion d'utilisateur et d'administrateur 4.2.3. La scurit au niveau du systme de fichiers 4.3. Fonctionnalits des systmes de fichiers 4.3.1. Le systme de fichiers virtuel 4.3.2. Liens symboliques et liens physiques 4.3.3. Autres fonctionnalits 4.4. Structure du systme de fichiers 5. Commandes Unix de base 5.1. Login et dconnexion 5.2. Arrt et redmarrage du systme 5.3. Pages de manuel 5.4. Oprations de base sur les rpertoires 5.5. Notions sur les chemins Unix 5.6. Oprations de base sur les fichiers 5.7. Autres commandes utiles 5.7.1. Gestion des liens 5.7.2. Recherche de fichiers 5.7.3. Recherche d'un texte dans un fichier 5.7.4. Remplacement de texte dans les fichiers 5.7.5. Compression et dcompression des fichiers 5.7.6. Archivage de fichiers 5.7.7. Passage en mode superviseur 5.7.8. Changement des droits des fichiers, du propritaire et du groupe 5.8. vi, l'diteur de fichiers de base 5.9. Utilisation du shell bash 5.9.1. Contrle des processus 5.9.2. Redirections 5.9.3. Les tubes 5.9.4. Manipulation des variables d'environnement 5.9.5. Caractre d'chappement et chanes de caractres 5.9.6. Les substitutions 5.9.7. Les expressions rationnelles 5.9.8. Structures de contrle 5.9.9. Les alias 5.9.10. Les scripts shell 6. Administration du systme de base 6.1. Sauvegarde de la configuration d'installation 6.2. Mise l'heure du systme 6.3. Gestion des utilisateurs et de la scurit 6.3.1. Mcanismes d'authentification des utilisateurs 6.3.2. Cration et suppression des utilisateurs 6.3.3. Description de la bibliothque PAM 6.4. Gestion des paquetages 6.4.1. Le gestionnaire de paquetages rpm 6.4.2. Le gestionnaire de paquetages apt 6.4.3. Le gestionnaire de paquetages pkgtool 6.5. Notion de niveau d'excution et amorage du systme 6.6. Maintenance des systmes de fichiers 6.6.1. Cration des systmes de fichiers 6.6.2. Montage des systmes de fichiers 6.6.3. Dmontage des systmes de fichiers DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 3
6.6.4. Vrification des systmes de fichiers 6.6.5. Configuration du montage des systmes de fichiers 6.6.6. Montage des systmes de fichiers la demande 6.7. Gestion des volumes 6.7.1. Gestion des fichiers images 6.7.2. Agrgation de volumes 6.7.3. Chiffrement des systmes de fichiers 6.8. Configuration des terminaux virtuels 6.9. Configuration de la console 6.9.1. Pages de codes et Unicode 6.9.2. Principe de fonctionnement du clavier 6.9.3. Principe de fonctionnement de l'cran de la console 6.9.4. Configuration du clavier 6.9.5. Choix de la police de caractres 6.9.6. Configuration des paramtres du terminal 6.9.7. Description des terminaux 6.9.8. Paramtrage des applications 6.9.9. Configuration de la souris 6.10. Configuration de l'imprimante 6.10.1. Concepts de base de l'impression sous Unix 6.10.2. Le systme d'impression LPRng 6.10.3. Le systme d'impression CUPS 6.11. Configuration du lancement automatique des tches 6.12. Gestion de l'nergie 6.12.1. Gnralits sur la gestion de l'nergie 6.12.2. Configuration de la gestion de l'nergie 6.12.3. Le dmon ACPI 7. Notions de compilation et configuration du noyau 7.1. Notions de base 7.1.1. Dfinition des termes 7.1.2. Processus de gnration 7.2. Compilation de GCC 7.2.1. Prrequis 7.2.2. Installation des sources 7.2.3. Configuration 7.2.4. Compilation 7.2.5. Installation de GCC 7.3. Compilation du noyau Linux 7.3.1. Installation des sources de Linux 7.3.2. Choix des options de configuration du noyau 7.3.3. Compilation et installation du noyau 7.3.4. Compilation et installation des modules 8. Configuration du matriel et des priphriques 8.1. Gnralits sur le support matriel sous Linux 8.1.1. Modules du noyau 8.1.2. Les fichiers spciaux de priphriques 8.2. Configuration des priphriques de masse 8.2.1. Configuration des priphriques SCSI 8.2.2. Configuration des disques durs IDE 8.2.3. Installation d'un graveur de CD/DVD 8.3. Configuration des cartes filles 8.3.1. Gnralits sur les cartes ISA, Plug And Play et PCI 8.3.2. Configuration des cartes son 8.3.3. Installation d'une carte graphique 3D 8.3.4. Installation d'une carte d'acquisition vido DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 4
8.3.5. Configuration des cartes rseau 8.3.6. Configuration des adaptateurs Wifi 8.4. Configuration des ports de communication 8.4.1. Prise en charge des priphriques ISA standards 8.4.2. Installation des priphriques USB 8.4.3. Installation des priphriques IEEE1394 9. Configuration du rseau 9.1. Notions de rseau TCP/IP 9.1.1. Gnralits sur les rseaux 9.1.2. Le protocole IP 9.1.3. Le protocole TCP 9.1.4. Les protocoles de haut niveau 9.2. Configuration du rseau sous Linux 9.2.1. Configuration statique des interfaces rseau 9.2.2. Dfinition des rgles de routage 9.2.3. Dfinition du nom de la machine 9.2.4. Rsolution des noms de domaine 9.2.5. Utilisation des protocoles DHCP et BOOTP 9.2.6. Dfinition des protocoles de haut niveau 9.2.7. Les super-dmons inetd et xinetd 9.3. Configuration de la connexion Internet 9.3.1. Le protocole PPP 9.3.2. Cration d'une connexion Internet 9.3.3. Connexion l'ADSL 9.3.4. Les autres outils de connexion 9.3.5. Configuration d'un cache de DNS 9.3.6. Installation d'un proxy HTTP 9.4. Pare-feu et partages de connexion Internet 9.4.1. Mcanismes de filtrage du noyau 9.4.2. Translations d'adresses et masquerading 9.4.3. Trajet des paquets dans le code de Netfilter 9.4.4. Configuration du noyau et installation des outils 9.4.5. Utilisation d'iptables 9.4.6. Exemple de rgles 9.4.7. Configuration des clients 9.5. Configuration de la scurit du rseau 9.5.1. Limitation des services et des accs 9.5.2. Chiffrement des communications 9.6. Configuration des fonctions serveur 9.6.1. Paramtrage des connexions extrieures 9.6.2. Configuration des liaisons PPP 9.6.3. Liaison de deux ordinateurs par un cble srie 9.6.4. Configuration d'un serveur DHCP 9.7. Systmes de fichiers en rseau 9.7.1. Installation d'un serveur de fichiers NFS 9.7.2. Configuration d'un client NFS 9.7.3. Installation d'un serveur de fichiers SMB 9.7.4. Configuration d'un client SMB 10. Installation de XWindow 10.1. Gnralits sur XWindow 10.2. Installation de X.org 10.3. Configuration de X.org 10.3.1. Gnration automatique du fichier xorg.conf 10.3.2. Utilisation de xorgconfig 10.3.3. Utilisation de xorgcfg DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 5
10.3.4. Description du fichier xorg.conf 10.3.5. Informations utilises lors du dmarrage de X.org 10.3.6. Utilisation de xvidtune 10.4. Utilisation du pilote frame buffer du noyau 10.4.1. Configuration du noyau et installation du pilote 10.4.2. Configuration du serveur X 10.5. Configuration des terminaux X 10.5.1. Principe de fonctionnement de xdm 10.5.2. Configuration de xdm 10.5.3. Paramtrage des terminaux X 10.6. Paramtrage des applications et ressources X 10.7. Gestion de la scurit sous XWindow 10.7.1. La commande xhost 10.7.2. La commande xauth 10.8. Gestion des polices de caractres 10.8.1. Gestion des polices de caractres sous XWindow 10.8.2. Installation des polices Truetype 10.8.3. Configuration d'un serveur de polices 10.9. Problmes classiques rencontrs 11. Conclusion A. Options de configuration du noyau A.1. Menu General setup A.1.1. Sous-menu Configure standard kernel features (for small systems) A.2. Menu Loadable module support A.3. Menu Block layer A.3.1. Sous-menu IO Schedulers A.4. Menu Processor type and features A.4.1. Sous-menu Firmware Drivers A.5. Menu Power management options (ACPI, APM) A.6. Menu Bus options (PCI, PCMCIA, EISA, MCA, ISA) A.6.1. Sous-menu PCCARD (PCMCIA/CardBus) support A.6.2. Sous-menu PCI Hotplug Support A.7. Menu Executable file formats / Emulations A.8. Menu Networking A.8.1. Menu Networking options A.8.2. Menu Amateur Radio support A.8.3. Menu IrDA (infrared) subsystem support A.8.4. Menu Bluetooth sybsystem support A.8.5. Option RxRPC session socket A.8.6. Menu Wireless A.8.7. Option RF switch subsystem support A.8.8. Option Plan 9 Resource Sharing Support (9P2000) (Experimental) A.9. Device Drivers A.9.1. Menu Generic Driver Options A.9.2. Menu Connector - unified userspace <-> kernelspace linker A.9.3. Menu Memory Technology Devices (MTD) A.9.4. Menu Parallel port support A.9.5. Menu Plug and Play support A.9.6. Menu Block devices A.9.7. Sous-menu Misc devices A.9.8. Menu ATA/ATAPI/MFM/RLL support A.9.9. Menu SCSI device support A.9.10. Menu Serial ATA (prod) and Parallel ATA (experimental) drivers A.9.11. Menu Multi-device support (RAID and LVM) A.9.12. Menu Fusion MPT device support DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 6
A.9.13. Menu IEEE 1394 (FireWire) support (EXPERIMENTAL) A.9.14. Menu I2O device support A.9.15. Configuration des interfaces rseau A.9.16. Menu ISDN subsystem A.9.17. Menu Telephony Support A.9.18. Menu Input device support A.9.19. Menu Character devices A.9.20. Sous-menu I2C support A.9.21. Sous-menu SPI support A.9.22. Sous-menu Dallas's 1-wire bus A.9.23. Sous-menu Power supply class support A.9.24. Sous-menu Hardware Monitoring support A.9.25. Sous-menu Multifunction device drivers A.9.26. Menu Multimedia devices A.9.27. Menu Graphics support A.9.28. Menu Sound A.9.29. Menu HID Devices A.9.30. Menu USB support A.9.31. Menu MMC/SD Card support A.9.32. Menu LED devices A.9.33. Menu InfiniBand support A.9.34. Menu EDAC - error detection and reporting (RAS) (EXPERIMENTAL) A.9.35. Menu Real Time Clock A.9.36. Menu DMA Engine support A.9.37. Menu Auxiliary Display support A.9.38. Menu Virtualization A.9.39. Menu Userspace I/O A.9.40. Menu Linux hypervisor example code (NEW) A.10. Menu File systems A.10.1. Sous-menu CDROM/DVD Filesystems A.10.2. Sous-menu DOS/FAT/NT Filesystems A.10.3. Sous-menu Pseudo filesystems A.10.4. Sous-menu Miscelaneous filesystems A.10.5. Sous-menu Network File Systems A.10.6. Sous-menu Partition Types A.10.7. Sous-menu Native Language Support A.11. Menu Instrumentation Support A.12. Menu Kernel hacking A.13. Menu Security options A.14. Menu Cryptographic options A.15. Menu Library routines B. Compilation et mise jour des principaux composants du systme B.1. Compilation de make 3.81 B.2. Compilation des binutils 2.17.0 B.3. Compilation de la bibliothque C 2.5.0 B.4. Compilation de OpenSSL B.5. Compilation de MESA 6.5.2 B.6. Compilation de X.org 7.3.0 B.7. Compilation de Lesstif 0.95.0 B.8. Compilation de KDE 3.5.7 B.9. Compilation de Gnome 2.20.0 B.9.1. Rcupration des sources B.9.2. Compilation des bibliothques gnrales B.9.3. Compilation des modules de base d'interfaage avec les langages B.9.4. Compilation des bibliothques de Gnome DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 7
B.9.5. Compilation de Gnome B.9.6. Compilation des bindings de Gnome B.9.7. Compilation des outils de dveloppements complmentaires B.10. Compilation de Samba 3.0.23 C. Formulaire pour la cration des lignes de mode de X.org D. GNU Free Documentation License E. Licence de documentation libre GNU
Liste des tableaux
4-1. Caractristiques des liens physiques et symboliques 4-2. Hirarchie standard du systme de fichiers 5-1. Groupes de pages de man 5-2. Principaux signaux Unix 5-3. Variables d'environnements courantes 5-4. Tests sur les fichiers 9-1. Plages d'adresses IP rserves pour un usage personnel 10-1. Frquence maximale des moniteurs 10-2. Numros des modes graphiques VESA
Liste des illustrations
3-1. Pistes et secteurs d'un disque dur 3-2. Partitions primaires et partitions logiques 3-3. Master boot record et secteurs de boot 4-1. Architecture des systmes GNU/Linux 4-2. Le systme de fichiers virtuel 6-1. Traitements des entres clavier 6-2. Traitement des caractres pour l'affichage 6-3. Filtres d'impression et imprimantes PostScript 6-4. Filtres d'impression et imprimantes PostScript 7-1. Interprtation d'un programme 7-2. Compilation et excution d'un programme 7-3. Processus de gnration d'un excutable 8-1. Chargement des modules de pilotes de priphrique 8-2. Chargement des firmwares 8-3. Cration des fichiers spciaux de priphriques 8-4. Chargement automatique des modules du noyau 9-1. Notion de paquet et d'adresse rseau 9-2. Encapsulation de protocoles 9-3. Addresse IP et adresse de rseau 9-4. Notion de passerelle 9-5. Notion de route 9-6. Connexions TCP 9-7. Translation d'adresses avec suivi de port TCP 9-8. Trajet des paquets dans le code de filtrage 9-9. Algorithme de chiffrement symtrique 9-10. Algorithmes de chiffrement asymtriques 10-1. Notion de display 10-2. Structure du fichier xorg.conf 10-3. Paramtres des lignes de mode
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 8
Remarques de l'auteur Il se peut que certaines informations fournies dans ce livre soient spcifiques ma configuration matrielle et logicielle. titre indicatif, j'utilise une machine fonctionnant sous Linux Slackware 12.0, et j'ai contrl les informations sur une Debian Etch. En particulier, il est connu que la Slackware n'utilise pas, par dfaut, la notion de niveaux d'excution. En revanche, elle n'utilise que les versions officielles des logiciels, et sa configuration reste simple et comprhensible. Je me suis toutefois efforc de rendre ce document gnrique et indpendant de ma configuration. J'espre donc que la plupart des informations fournies ici s'appliqueront la plupart des configurations matrielles et toutes les distributions Linux, bien que je ne puisse pas le garantir. Les informations donnes dans ce livre permettront donc sans doute aux personnes qui n'ont jamais vu Linux de dbroussailler un peu le terrain, et celles qui utilisent dj Linux de comprendre en profondeur comment leur systme fonctionne. Je remercie d'avance les gens qui pourront m'envoyer des remarques concernant les imprcisions, voire les horreurs et les neries que j'aurais pu crire. Plus je recevrai de critiques constructives et de propositions, plus ce document a de chances de s'amliorer. Cependant, si vous prenez le temps de m'envoyer les remarques et les erreurs que vous avez pu dtecter, je vous saurais gr de vrifier au pralable qu'elles sont toujours d'actualit dans la dernire version de ce document, que vous pourrez trouver dans diffrents formats de fichiers sur mon site Web. Vous pouvez contribuer au maintien et au support de mes documents libres sur la page de support de mon site Web, l'adresse http://casteyde.christian.free.fr/support/support.html. Si vous estimez que ce travail mrite salaire, n'hsitez pas m'offir un pot, c'est facile et scuris (n'envoyez pas de pizza par La Poste SVP). Chapitre 1 : Introduction Table des matires
1.1. Matriel, logiciel et systme d'exploitation 1.2. Qu'est-ce que Linux ? 1.3. Pourquoi Linux ? 1.4. Plan du document Ce livre est un guide d'installation et d'administration du systme d'exploitation GNU/Linux pour ordinateur de type PC. L'objet de ce document est donc de donner les connaissances de base ncessaires l'installation de Linux sur un ordinateur de particulier ou un petit serveur. Il est suppos que l'utilisateur a dj utilis un autre systme d'exploitation, par exemple MS Windows. Cependant, aucune notion avance d'informatique n'est ncessaire. Tout sera expliqu au fur et mesure des besoins et, si ncessit est, des complments d'information 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 n'ont pas une grande habitude de l'informatique aient quelques difficults les assimiler. Cela dit, vaincre sans peine, on triomphe sans gloire, et l'installation de Linux vous procurera le plaisir d'apprendre. 1.1. Matriel, logiciel et systme d'exploitation Dans les grandes lignes, un ordinateur est gnralement constitu : DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 9
d'un ou plusieurs processeurs, qui effectuent tous les traitements de calcul ; de mmoire vive, o sont stockes les instructions que le ou les processeurs doivent excuter, et les donnes quils doivent manipuler ; d'units de stockage de masse tels que les disques durs, permettant de stocker les donnes et les programmes de manire permanente (c'est--dire mme aprs extinction de l'ordinateur) ; et d'une carte mre, sur laquelle on connecte tous ces lments. ces composants de base s'ajoutent des composants annexes, que l'on appelle priphriques . Le clavier, la souris, les cartes graphiques, son et rseau en sont des exemples. Ce matriel n'est toutefois gnralement pas exploitable tel quel. Il faut pour cela utiliser des programmes ddis, qui permettent de l'utiliser. L'ensemble de ces programmes constituent ce que l'on appelle le systme d'exploitation . C'est au dessus de ce systme que viennent se placer les programmes utilisateurs, que l'on appelle galement les applications , ou logiciels . La fonction premire d'un systme d'exploitation est donc de grer l'ordinateur, et de permettre aux logiciels de s'excuter. Toutefois, les systmes d'exploitation fournissent gnralement une abstraction du matriel pour les programmes, afin que ceux-ci n'aient pas se soucier des spcificits du matriel sur lequel ils sont installs. Par exemple, il est possible de simuler certaines fonctions absentes, telles que les fonctions 3D des cartes graphiques modernes, ou encore une interface rseau sur un ordinateur qui n'en dispose pas. Ainsi, les programmes qui utilisent ces fonctionnalits peuvent s'excuter correctement, mais avec des restrictions et des performances moindres. L'essentiel est donc, dans ce cas, de fournir une interface de programmation uniforme, quel que soit le matriel sous-jacent. Le systme d'exploitation apparat donc comme une machine virtuelle de haut niveau pour les programmes. Il est vident que le systme doit savoir se montrer le plus discret possible, car le but final n'est pas de grer l'ordinateur mais bel et bien de s'en servir. Toutefois, la mode actuelle est de faire des systmes de plus en plus complexes, et de plus en plus visibles, et par consquent de moins en moins discrets (suivez mon regard...). De nos jours, la notion de systme d'exploitation englobe donc de plus en plus l'ensemble des logiciels permettant d'utiliser le matriel et les logiciels d'application courants. Mais bien entendu, il ne s'agit l que d'un abus de langage, dont le grand public n'a pas forcment pris conscience. 1.2. Qu'est-ce que Linux ? Linux est le noyau d'un systme d'exploitation 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 d'un systme d'exploitation exprimental dvelopp par Dennis Ritchie et Ken Thompson dans les laboratoires AT&T's 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 d'exploitation 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 n'a jamais rellement vu le jour, en revanche, le systme Unix initial a engendr un grand nombre d'autres systmes plus ou moins compatibles. Rcemment, les diffrents fournisseurs de systmes Unix se sont accords pour dfinir l'ensemble des fonctionnalits que tous les systmes Unix doivent supporter, afin de rsoudre les problmes engendrs par les incompatibilits existantes entre ces diffrents systmes. Le terme Unix est donc un terme gnrique pour reprsenter l'ensemble de tous ces systmes, dont Linux fait partie. Pour l'anecdote, la dnomination Unix provient de la contraction de Unics (abrviation de Uniplexed Information and Computing Service ), terme forg ironiquement pour bien signaler qu'Unix tait une version allge de ce que Multics devait tre. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 10
Bien que compatible avec les dernires spcifications Unix, Linux ne contient pas une ligne du code source du systme Unix original, ce qui en fait ce que l'on appelle un clone . Cela dit, il s'agit rellement d'un systme Unix part entire. En tant que tel, il dispose des fonctionnalits fournies par les systmes Unix : il est multitche, multi-utilisateur et relativement orient rseau. Vous aurez donc, avec Linux, un systme fiable, fonctionnel et performant. Comme nous l'avons dit, Linux n'est que le noyau d'un systme d'exploitation. Ce n'est donc que le composant de base qui prend en charge toute la gestion du matriel. Mais quel est donc ce systme d'exploitation ? Il s'agit du systme GNU/Linux, comprenant donc, outre le noyau Linux, plusieurs autres couches logicielles dveloppes par la Free Software Foundation et d'autres organisations. Ces couches prennent en charge diffrentes fonctionnalits, telles que l'utilisation de l'ordinateur en ligne de commande, l'affichage graphique, et la gestion complte de l'environnement utilisateur en mode graphique. Parler de Linux en tant que systme d'exploitation est donc, encore une fois, un abus de langage. Cela tant dit, nous nous autoriserons le faire dans la suite de ce document, par souci de simplicit. Contrairement aux ides reues, il existe un grand nombre d'applications pour Linux. La plupart de ces applications peuvent tre installes avec le systme GNU/Linux, ce qui fait qu'en pratique ce systme forme un ensemble complet et parfaitement utilisable pour la plupart des tches courantes. Une installation correcte de Linux vous permettra donc de raliser les oprations les plus classiques, comme effectuer un travail bureautique, naviguer sur Internet, raliser l'acquisition, la capture et le retraitement d'images, 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, vous ne trouverez pas forcment tous les logiciels spcialiss qui existent sous Windows, et certains logiciels se contenteront des fonctionnalits fondamentales. Vous ne pourrez donc pas raliser ce que vous faisiez avec ces applications Windows dont il n'existe pas encore d'quivalent sous Linux. C'est par exemple le cas pour les applications de gestion et de paie utilises par nombre de professionnels indpendants ou par des PME. Les systmes Linux se prsentent gnralement sous la forme de distributions , que l'ont peut acheter dans le commerce ou tlcharger sur Internet (de manire tout fait lgale, comme nous le verrons dans le chapitre suivant). Une distribution n'est rien d'autre que le regroupement de l'ensemble des programmes qui constituent le systme d'exploitation et des logiciels les plus utiles et les plus connus pour Linux. Une distribution Linux est donc rellement bien plus qu'un systme d'exploitation : c'est un tout qui vous permettra rellement d'utiliser compltement votre ordinateur, gnralement sans mme avoir installer de logiciels complmentaires ! De ce point de vue, Linux est beaucoup plus fonctionnel que les autres systmes d'exploitation propritaires, qui sont en pratique livrs nus . 1.3. Pourquoi Linux ? Que les choses soient claires : l'installation de Linux peut tre une opration relativement complique, et l'usage d'un systme Unix en gnral n'est pas la porte de tout le monde. Mme si la qualit des distributions actuellement disponibles s'est grandement accrue ces derniers temps, au point que n'importe qui peut installer un systme Linux viable sans trop de problmes, la configuration du systme pour obtenir un fonctionnement correct exige un travail assez important. En particulier, les distributions actuelles prouvent encore quelques difficults pour optimiser les priphriques exotiques, et souvent seules les fonctionnalits de base sont correctement configures 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 l'intgration de tous ces composants dans un environnement homogne, celle-ci n'est pas forcment DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 11
parfaite. Les outils de configuration des distributions vous permettront sans doute de configurer 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 d'une distribution sur un ordinateur assez vieux (c'est--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 qu'il dsire. En particulier, celui qui utilise son ordinateur pour travailler (j'entends par l crire des lettres, les imprimer, naviguer sur Internet pour rcuprer des informations, ou programmer) peut parfaitement se contenter de l'installation par dfaut. Ce type de situation ne convient pas tout le monde : la plupart des gens disposent de cartes graphiques rcentes (surtout depuis l'avnement des jeux 3D) ou de priphriques spcifiques. Tout le monde ne se place pas uniquement dans le cadre d'une utilisation professionnelle, et il est absurde de disposer d'une carte son et de ne pas pouvoir l'utiliser. Et c'est l que le bt blesse ! Si l'on 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 configuration apparat malheureusement principalement pour les particuliers, qui souvent disposent de machines htroclites et absolument non standards. Dans le cadre d'une entreprise, il existe des personnes qualifies pour rsoudre ce type de problme, mais ce sont des informaticiens et, de plus, les machines sont souvent homognes, ce qui permet d'apporter des solutions gnriques. Il faut donc tre informaticien ou amateur trs clair pour installer Linux sur une machine de particulier et pour le configurer de manire optimale. La situation est d'autant plus grave que la plupart des gens ne connaissent pas Linux, et qu'il est toujours difficile d'apprendre 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 l'a jamais faite. Celui qui a install trois fois MS Windows sait parfaitement le faire prsent, et il pense que c'est relativement facile. Et pourtant, il ralise souvent des tches d'une complexit qui dpasse, l aussi, le commun des mortels. Heureusement, et c'est l la force de Linux, ces oprations ne doivent tre effectues qu'une seule fois. On n'a absolument pas besoin de changer la configuration chaque instant, comme c'est 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 c'est un enfer installer et configurer, mais tout simplement parce que ce n'est pas ncessaire de le changer. En rsum, on peut affirmer que : Linux est un systme simple installer sur des machines standards ; sa configuration sur une machine plus exotique requiert parfois une intervention manuelle ; dans la plupart des cas, cette intervention n'est pas trs difficile raliser ; cependant, elle peut drouter les personnes qui ne l'ont jamais effectue ; mais le jeu en vaut la chandelle, parce que le systme est rellement solide. 1.4. Plan du document 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 clarifier un peu les notions ayant trait aux logiciels libres. Elle tente d'expliquer 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 d'exploitation, et prsente l'installation de trois distributions Linux reprsentatives de ce qui existe actuellement. l'issue de DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 12
cette partie, vous devez disposer d'un systme fonctionnel, utilisable mais non optimis et ne permettant pas forcment d'utiliser tous vos priphriques. La troisime partie prsente un peu le systme et vous aidera faire vos premiers pas avec Linux, et vous donnera les notions de base qui vous permettront de mieux comprendre la philosophie du systme. La quatrime partie constitue un petit cours d'Unix pour les nouveaux utilisateurs de ce type de systme. Sa lecture en est fortement recommande, du moins si vous voulez avoir un aperu des possibilits de Linux et de l'ensemble de ses fonctionnalits. La cinquime partie traite des oprations d'administration et de maintenance de base des systmes Unix. Cette partie est en quelque sorte la suite de la quatrime partie, o les notions plus spcifiques l'administration de la machine sont dcrites. 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 septime partie prsente la manire dont la configuration du matriel est ralise sous Linux, ainsi que la manire dont le systme fonctionne en interne. Elle vous permettra de configurer et d'optimiser votre systme pour votre matriel. La huitime partie traite de la configuration du rseau sous Linux. Le rseau est rellement l'un des aspects les plus importants de Linux, et ncessite donc une attention toute particulire. Enfin, la neuvime et dernire partie vous dcrit le fonctionnement et la procdure d'installation de XWindow, l'environnement graphique de Linux. Cet environnement est particulirement riche et fonctionnel, et mrite donc que l'on s'y attarde galement. Chapitre 2 : GNU, Linux et les logiciels libres Table des matires
2.1. Les logiciels libres et la Free Software Foundation 2.2. Droits d'auteurs et la licence GPL 2.3. Le projet GNU et Linux 2.4. Avantages et inconvnients des logiciels libres 2.5. La motivation des auteurs et le financement des logiciels libres Vous entendrez souvent parler de la licence GPL , du projet GNU , de la Free Software Foundation et des logiciels libres dans le monde de Linux. Pour bien comprendre ce que sont les logiciels libres et la Free Software Foundation, et ce que signifie la licence GPL, il est ncessaire d'en faire une brve prsentation. 2.1. Les logiciels libres et la Free Software Foundation La Free Software Foundation est une organisation dont le but est de dvelopper des logiciels libres. Le terme de libre signifie clairement que chacun peut faire ce qu'il veut du logiciel, y compris le modifier. La vente n'est 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. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 13
La libert de modifier les logiciels libres implique naturellement que leur code source, c'est dire le texte de leur programme tel qu'il a t saisi par ses auteurs, soit librement accessible et modifiable. Les logiciels libres sont donc qualifis de logiciels Open Source , ce qui signifie en anglais que les sources du programme sont disponibles. Attention cependant, tous les logiciels Open Source ne sont pas forcment libres, car il n'est pas toujours possible de modifier ce code source et de le redistribuer librement (ventuellement gratuitement). Ainsi, nombre d'diteurs de logiciels propritaires publient leur code source sans pour autant donner de droits supplmentaires ceux qui les lisent. Certains d'entre eux jouent d'ailleurs explicitement sur cette confusion. De plus, la plupart des journalistes anglo-saxons 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. 2.2. Droits d'auteurs et la licence GPL 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 l'auteur et, en tant que tel, conserve les droits d'auteurs sur son travail. Il ne fait que concder la libert d'exploiter ce travail aux autres. C'est en cela que les logiciels libres se dmarquent du domaine public, dont les logiciels ne sont plus soumis aucun droit. Afin de protger les logiciels libres et leurs auteurs, la Free Software Foundation a rdig la licence GPL (abrviation de l'anglais General Public License ). Cette licence stipule que le logiciel libre peut tre redistribu, utilis, modifi librement, pourvu que celui qui en bnficie accorde les mmes droits ceux qui il fournit les copies du logiciel, qu'il l'ait modifi ou non. En dautres termes, elle garantit que la libert des uns s'arrte l o commence celle des autres. Cette licence empche donc l'alination du logiciel et sa transformation en logiciel propritaire, de quelque manire que ce soit. Cela implique que tout logiciel libre sous licence GPL modifi par une autre personne que son auteur reste libre, et le restera jamais. Ainsi, il est impossible qu'une socit commerciale puisse un jour s'approprier un logiciel libre, mme si elle l'amliore. Si vous dsirez lire la licence GPL, vous pouvez en trouver une copie dans le fichier /usr/src/linux/COPYING une fois que vous aurez install Linux. La FSF a galement rdig d'autres licences plus adaptes aux bibliothques de programmes et aux documentations libres. Ainsi, la licence LGPL ( Lesser General Public License ) permet d'utiliser les bibliothques de programmes dans des programmes propritaires, et la licence FDL ( Free Documentation License ) permet de diffuser des documentations libres. titre d'exemple, ce guide est distribu sous licence FDL, dont vous trouverez une tradution franaise en annexe. Prcisons que la licence GPL n'est pas la seule licence permettant de distribuer des logiciels libres. Il existe d'autres 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 l'appropriation des sources par des socits commerciales. De mme, la licence X, sous laquelle est diffus l'environnement graphique X11 qu'utilise Linux, est une licence libre. Quelques outils fournis avec Linux sont distribus avec d'autres licences plus rares. 2.3. Le projet GNU et Linux 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 d'exploitation, qui disposent tous peu prs des mmes fonctionnalits et proposent d'y 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 l'on appelle le noyau) est toujours en cours de ralisation. Pour information, ce noyau se nomme Hurd . DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 14
Cependant, d'autres 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 lorsqu'il tait tudiant, et amlior par des programmeurs du monde entier sur Internet. Linux est un noyau parmi tant d'autres, ceci prs qu'il est, lui aussi, distribu sous la licence GPL, bien que n'ayant rien avoir avec la Free Software Foundation. Cela signifie qu'il 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. C'est donc un ensemble de logiciels libres provenant de plusieurs sources distinctes. Cependant, il est trs courant d'entendre 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. Pour information, le terme GNU est l'abrviation de l'anglais GNU's Not Unix . Cette curieuse phrase rappelle que le projet GNU est de raliser un systme Unix diffrent des autres. Vous remarquerez que cette dfinition est rcursive, c'est--dire qu'elle utilise le mot GNU elle-mme. Cela doit tre attribu au got des dveloppeurs de la Free Software Foundation pour ce genre de dfinition infiniment rcursive. Vous ne saurez sans doute jamais les raisons qui les ont pousss choisir la lettre 'G' dans leur dfinition. Cela tant, GNU se prononce gnou en anglais, et vous trouverez donc souvent la reprsentation d'un gnou sur les sites Internet de GNU. 2.4. Avantages et inconvnients des logiciels libres Les logiciels libres disposent d'avantages 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 d'intervenants sur les sources des logiciels libres, un grand nombre de possibilits techniques peuvent tre explores, et c'est souvent la meilleure qui est slectionne. C'est une forme de slection naturelle de la meilleure solution. Ainsi, sur le long terme, les logiciels libres sont les plus efficaces en terme de performances. Toujours du fait du grand nombre d'intervenants, et surtout de par la possibilit de consulter et de modifier librement le code source, le cycle de dtection/identification/correction des bogues est trs court. Les logiciels libres sont donc parmi les plus fiables qui se font. On peut considrer qu'un 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 d'une 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 fixe, et sont certainement les plus rentables en terme de cot global pour la collectivit. Afin de garantir l'interoprabilit entre les diffrents intervenants du monde du logiciel libre, chacun s'vertue 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 fichiers et des protocoles de communication. Cela garantie une interoprabilit optimale et l'absence de mauvaise surprise. Professionnellement parlant, la disponibilit du code source fournit une garantie de fonctionnement que l'on ne peut pas retrouver ailleurs. En cas de problme, il est toujours possible de s'en sortir, ventuellement en recourant des comptences externes pour adapter le logiciel ses propres besoins. Enfin, la disponibilit du code source garantit une prennit absolue du logiciel, ce qu'aucune socit commerciale vendant des logiciels propritaires ne peut ou ne veut faire. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 15
Pour tre honnte, il faut admettre que les logiciels libres ont galement des inconvnients. La liste suivante en prsente quelques-uns : La diversit des logiciels libres a galement un revers. L'utilisateur peut avoir choisir entre plusieurs logiciels, ce qui ne simplifie pas forcment l'apprentissage ou la communication entre les diffrents utilisateurs de logiciels libres. Prenez par exemple ce guide : il fait la prsentation de l'installation de trois distributions Linux, qu'il a fallu choisir parmi les centaines de distributions existantes... De plus, ce n'est pas le seul document traitant du sujet de l'installation et de la configuration de Linux (mais c'est sans doute le plus meilleur, n'est-ce pas ?). Cela ne simplifie pas les choses pour l'utilisateur. La diversit des bibliothques et des outils, ainsi que le nombre d'applications susceptibles de communiquer entre elles, implique une complexit accrue dans le travail d'intgration de tous ces logiciels. Les distributions s'assurent que les logiciels qu'elles fournissent fonctionnent bien ensemble, mais la redondance existe malgr tout et a un cot non ngligeable au final, aussi bien pour les distributions que les programmeurs et les diteurs de logiciels. La description de l'installation de trois distributions dans ce document a galement un cot pour son auteur (pfff !). Enfin, mme l'utilisation simultane de plusieurs logiciels peut amener charger en mmoire de nombreuses bibliothques ayant pourtant la mme fonction, alourdissant le systme inutilement. Certaines fonctions des logiciels ne seront pas forcment implmentes, si ses auteurs n'y voient pas d'intrt. Si le logiciel est dvelopp par une seule personne ou une petite quipe, ils peuvent ne pas en avoir les moyens financiers ou temporels. Toutefois, si un nombre suffisant d'utilisateurs la rclame, il est probable qu'une personne ayant les comptences ncessaires pour ajouter la fonctionnalit se manifeste. Mais il est galement possible qu'un autre projet soit dmarr, ajoutant encore une fois un lment la complexit de l'cosystme des logiciels libres. Il n'est donc pas rare d'avoir plusieurs logiciels ralisant la mme chose, mais qu'aucun ne soit complet ! Du fait que les logiciels libres sont justement dvelopps par des passionns ou par des socits qui ne peuvent pas en tirer un bnfice direct, certains domaines ne sont pas couverts par les logiciels libres. Ainsi, vous ne trouverez pas toujours une alternative libre un logiciel propritaire, soit parce que le sujet n'intresse personne, soit parce que les cots de dveloppement dpassent les capacits des organisations de dveloppeurs de logiciels libres. Plus spcifiquement, le march monopolistique de Windows est beaucoup plus grand que celui de Linux. De ce fait, mme les diteurs de logiciels propritaires rechignent faire l'effort du portage de leurs logiciels pour Unix/Linux. Ainsi, la logithque pour les systmes libres s'en trouve d'autant plus rduite. Cela est particulirement vrai pour les jeux et les logiciels professionnels, et malheureusement galement pour les pilotes de priphriques de certains constructeurs de matriel. Quand bien mme les diteurs de logiciels voudraient publier leurs logiciels sous licence libre, ils n'en ont pas toujours le droit, en raison d'accords de licence avec des tiers ou de brevets qu'ils utilisent, et parfois mme en raison de la rglementation locale de certains pays (comme la France, depuis la loi DADVSI, pour tout les logiciels de lecture de films protgs par exemple). De mme, les vendeurs de matriel ne peuvent pas toujours fournir de pilotes libres, ni mme d'informations ou de spcifications sur le matriel. Hlas, ces inconvnients sont parfois incontournables, car inhrents la nature mme des logiciels libres. Des reproches injustifis sont parfois raliss envers les auteurs des logiciels libres, alors qu'ils ne sont pas en mesure d'viter ces problmes. L'utilisateur doit donc galement se faire une raison : aprs tout, il reoit dj beaucoup de la communaut des logiciels libres. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 16
Mais, et c'est l l'essentiel, l'aspect le plus important des logiciels libres est le fait qu'ils garantissent la libert des utilisateurs par rapport aux diteurs de logiciels. Le respect des standards, l'ouverture des formats de documents et des protocoles de communication garantissent une interoprabilit absolue, qui permet ainsi chacun de rester libre de ses choix pour sa solution informatique. Il n'est que trop courant de voir les diteurs de logiciels enfermer leurs clients dans une dpendance vis vis d'eux, 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 d'utiliser un produit implique que ses lecteurs le possdent galement), durable (on ne peut faire de mise jour que chez le mme diteur de logiciel), voire impose par la loi (interdiction en France d'analyser les formats de documents protgs/chiffrs depuis la loi DADVSI par exemple). 2.5. La motivation des auteurs et le financement des logiciels libres Bien que cela ne se situe pas au mme niveau philosophique, la question de la motivation des auteurs de logiciel libres et, pour les entreprises, de leur financement, se pose galement de manire rcurrente. Il n'est 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. Pour ce qui est des auteurs bnvoles, la motivation provient gnralement de l'amusement qu'ils ont dvelopper ces logiciels et les partager avec la communaut du logiciel libre. Cette communaut, constitue de l'ensemble des auteurs et des utilisateurs des logiciels libres, leur apporte en gnral la reconnaissance, des rapports de bogues ou des ides d'amlioration de leur logiciel, des conseils ou mme de l'aide sur des sujets qu'ils ne matrisent pas (traduction, nouvelles fonctionnalits, etc.). De plus, en s'intgrant la communaut du logiciel libre, les programmeurs amateurs peuvent galement rcuprer des bibliothques de programme ou des morceaux complets d'autres programmes, et ainsi voir leur logiciel progresser plus vite. Certains peuvent mme se distinguer des autres et se voir approcher par une entreprise pour un emploi sur le logiciel qui leur servait l'origine de passe- temps ! Il est toujours plus agrable de travailler sur quelque chose qui nous plat... Les socits quant elles peuvent financer le dveloppement des logiciels libres qu'elles ditent ou auxquels elles contribuent de plusieurs manires. Quelques socits vivent de manire drive des logiciels libres qu'elles dveloppent (par vente de produits drivs, de contrat de support, ou de services complmentaires). C'est notamment le cas des socits qui ditent des distributions Linux et des socits de service en logiciel libre. D'autres socits proposent une double licence, constitue d'une licence libre telle que la GPL pour bnficier des avantages des logiciels libres, et d'une licence propritaire, permettant d'obtenir une rmunration de la part des clients qui ne veulent pas se plier aux exigences de la GPL (obligation de redistribution des sources en particulier). Enfin, de nombreuses socits contribuent des logiciels libres tout simplement parce qu'elles en ont besoin. Il est en effet souvent prfrable d'adapter un logiciel libre qui satisfait ses besoins 80% et de dvelopper les 20% restants, quitte redistribuer les modifications et amliorations qui y sont apportes, que de redvelopper l'intgralit d'un logiciel quivalent ou d'en financer le dveloppement par une socit tiers. Le cot total de dveloppement d'une solution compltement propritaire est en effet gnralement beaucoup plus lev. On voit bien que dans ce cas, les dveloppeurs de logiciels libres sont avant tout leurs propres utilisateurs... Cela dit, il faut tre clair sur ce sujet : le logiciel libre rapporte moins que le logiciel propritaire, tout simplement parce qu'il n'est pas question de monopole ici et qu'on ne peut pas pressurer le client aussi facilement qu'avec une offre logicielle ferme. Comme on le voit, le logiciel libre est trs loin d'tre l'apanage de quelques fanatiques, et les mauvaises langues qui considrent ce modle conomique comme du communisme n'ont assurment DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 17
rien compris. Bien au contraire, il s'agit l de capitaliser les dveloppement et de rduire les cots, deux objectifs fondamentaux dans une conomie de march et trs souvent mal appliqus l'informatique ! Quant ceux qui prtendent que les logiciels libres constituent une forme de dumping dans le domaine informatique, ils devraient plutt analyser la pertinence de ce modle conomique et voir si, finalement, ce n'est pas tout simplement un modle plus rentable sur le long terme que le modle propritaire. Il suffit de considrer le temps consacr, et le cot probablement pharaonique, du dveloppement de Windows Vista, pour constater que le rapport qualit/prix est loin d'tre reluisant, mme par rapport son an Windows XP... Chapitre 3 : Installation du systme Table des matires
3.1. Choix de la distribution 3.2. Partitionnement et systmes de fichiers 3.3. Prrequis 3.4. Procdure d'installation gnrique 3.5. Installation de la Mandriva 2007 3.6. Installation de la Debian 4.0r1 3.7. Installation de la Slackware 12.0 Maintenant que nous avons fait connaissance avec Linux et les logiciels libres, nous allons pouvoir passer au vif du sujet, savoir l'installation du systme. La configuration minimale supporte par Linux est un 386 avec au minimum 12 Mo de mmoire vive. Il va de soi qu'avec un tel foudre de guerre, vous ne pourrez pas aller bien loin, et une configuration minimale plus raisonnable serait plutt un 486DX2 66MHz avec au moins 32Mo de mmoire pour une utilisation en mode texte. La quantit de mmoire est de loin le facteur le plus important, et si vous voulez utiliser l'environnement graphique X11, il faudra au minimum compter sur 64 Mo de mmoire vive. Si, de plus, vous dsirez utiliser les environnements graphiques modernes tels que KDE ou Gnome, 128 Mo seront ncessaires. N'importe quelle machine moderne peut donc parfaitement faire fonctionner Linux de nos jours, et vous n'aurez donc aucun problme l'installer. Vous pourrez mme transformer un vieux 486 ou Pentium en routeur ou en pare-feu avec partage de connexion Internet par exemple. Mme si les distributions les plus modernes permettent une installation quasiment transparente pour l'utilisateur, il est bon de savoir ce qui se passe en arrire plan. En effet, sauf dans le cas o l'on raliser l'installation sur un disque dur ddi, l'installation de Linux requiert des manipulations susceptibles de dtruire les donnes du systme dj en place, qui est gnralement Microsoft Windows. De plus, la bonne comprhension des oprations ncessite une connaissance minimale des notions de base relatives Linux et aux systmes d'exploitation en gnral. Ce chapitre a donc pour but de prsenter les concepts fondamentaux utiliss pendant l'installation du systme d'exploitation, et notamment la notion de partitionnement de disque. Les prrequis l'installation seront ensuite abords, puis l'installation elle-mme sera ralise. Mais avant tout, il va falloir vous dcider pour le choix d'une distribution parmi les nombreuses distributions Linux existantes... 3.1. Choix de la distribution Comme vous le savez peut-tre dj, il existe un grand nombre de distributions Linux. Si l'une d'entre elles tait rellement meilleure que toutes les autres, la question du choix ne se poserait pas, et il n'y aurait aucun problme. Mais en ralit, chaque distribution a son public, et le choix doit se faire en DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 18
fonction de ses besoins et de ses dsirs. Chose qui, videmment, n'est pas forcment vidente quand on n'a jamais install Linux ! Pour faire concis, et sans vouloir froisser les partisans de chaque distribution, on peut en premire approche distinguer les distributions selon leur procdure d'installation. Si vous tes un dbutant total, il est probable que vous cherchiez installer une distribution grand public , telle que la Mandriva de la socit ponyme, la Fedora Core soutenue par Redhat, ou la SuSE de Novell. D'autres prfreront des distributions moins commerciales , plus simples et plus fiables, qui ne s'appuient pas forcment sur les toutes dernires avances technologiques. Ce sera le cas avec les distributions Debian, Ubuntu ou Slackware par exemple. Enfin, les intgristes de la pire espce s'orienteront vers des distributions orientes source , dont le principe est essentiellement de reconstruire tout le systme lors de l'installation. Ceux-ci seront sans doute ravis avec la distribution Gentoo ou, s'ils veulent rellement tout refaire la main, avec la distribution LFS. Je pense que vous tes le plus mme de choisir la distribution qui vous conviendra le mieux, en fonction de vos comptences ou de vos apprhensions... En revanche, dans une catgorie donne, il n'est a priori pas vident de faire ce choix. Heureusement, il existe souvent une solution simple et rapide pour faire son choix : c'est tout simplement d'essayer chacune de ces distributions ! Non, je ne suis pas fou, je ne vous demande pas d'installer cinq versions de Linux les unes aprs les autres, juste pour que vous puissiez choisir celle que vous garderez... Je parle ici de la possibilit d'utiliser les versions Live des distributions. Ces versions sont simplement des versions allges et conues pour tenir sur un CD amorable. Il est donc possible de dmarrer son ordinateur sur ces CD et, sans faire la moindre installation sur disque dur, d'valuer une distribution. La plupart des distributions fournissent un CD Live (parfois mme plusieurs, selon le niveau de fonctionnalit propos). Vous pouvez tlcharger sur Internet leurs fichiers ISO (format des images de CD et de DVD), partir desquels tout bon logiciel de gravage peut graver un CD ou un DVD. Vous n'avez donc plus qu' faire vos emplettes et tester... En ce qui nous concerne, ce document a pour vocation de faire une description la plus gnrale possible de l'installation de Linux, et si possible la plus indpendante des diffrentes distributions existantes. tre exhaustif serait une perte de temps, et de toutes faon la qualit de la documentation obtenue serait sans doute moindre que celle des sites ddis chaque distribution. Par consquent, seules trois distributions seront prsentes, ce qui n'est dj pas mal. Le choix de ces distributions ne prjuge bien sr en rien de leur valeur, il a fallu tout simplement faire un choix. En pratique toutefois, ce choix a t orient sur les diffrents systmes d'installation existants. En effet, de nombreuses distributions sont drives d'autres distributions plus connues ou originelles, ce qui fait qu'il n'y a finalement pas autant de variantes de systmes d'installation qu'il y a de distributions sur le march. Les trois distributions prsentes dans ce document permettent donc de voir les systmes d'installation les plus classiques, et il sera ais d'adapter les procdures d'installation de ce document aux autres distributions de mme nature. Ces distributions sont les suivantes : la distribution Mandriva, base sur le systme d'installation RPM, originellement dvelopp par Redhat et galement utilis par SuSE ; la distribution Debian, base sur le systme d'installation apt, que de nombreuses autres distributions utilisent, comme par exemple les distributions Ubuntu et Knoppix ; et enfin la distribution Slackware, base sur le systme d'installation pkg, qui est moins populaire, mais qui reste d'une simplicit exemplaire.
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 19
3.2. Partitionnement et systmes de fichiers L'installation d'un systme d'exploitation tel que Linux sur un PC touche aux structures de donnes fondamentales du disque dur et est de ce fait une opration trs sensible. Il est donc ncessaire de connatre certaines notions de base afin de savoir ce que l'on est en train de faire. Cette section a donc pour but de vous prsenter ce que sont une partition et un systme de fichiers, comment choisir un plan de partitionnement, et comment l'accs aux partitions se fait dans un systme Linux. 3.2.1. Notion de partition Une partition est, comme son nom l'indique, une partie d'un disque dur. Les partitions permettent de diviser l'espace de stockage des disques durs en zones indpendantes de taille restreinte. La notion de partition permet de rserver certaines portions du disque dur un usage particulier, et de bien sparer les donnes qui se trouvent dans chaque partition. L'opration de partitionnement est l'opration de cration des diffrentes partitions d'un disque dur. L'installation de plusieurs systmes d'exploitation ncessite souvent d'allouer une partition chaque systme, car les systmes d'exploitation ne comprennent gnralement pas le format des partitions des autres systmes. Il est galement parfois ncessaire, pour un mme systme, de dfinir plusieurs partitions, qui seront utilises des fins spcifiques. Par exemple, Linux fonctionne nettement mieux si on lui attribue une partition de swap (dite aussi partition d'change ) pour stocker des donnes peu utilises qui se trouve en mmoire, lorsqu'il a besoin de plus de mmoire qu'il n'en est physiquement installe sur la machine. De mme, il est possible de crer plusieurs partitions pour sparer les donnes utilisateurs des programmes, ce qui permet de faciliter les mcanismes de sauvegarde d'une part, et d'assurer une plus grande scurit des donnes lors des oprations de maintenance du systme d'autre part. Sur les machines de type PC, chaque disque dur peut tre dcoup en quatre partitions dites primaires . La position, la taille et le type de ces partitions sont enregistrs dans le premier secteur du disque dur, que l'on appelle souvent le Master Boot Record ( MBR en abrg). Le MBR ne contient que quatre entres pour la dfinition des partitions, d'o la limite de quatre partitions primaires. Le type des partitions est un code numrique qui indique le systme d'exploitation capable de l'utiliser et sa nature (partition de swap ou systme de fichiers par exemple). titre d'exemple, Linux utilise principalement deux types de partition : les partitions de swap (numro 82) et les partitions pour les systmes de fichiers (type 83). La dfinition des partitions se fait donc en donnant leur point de dpart, leur taille et leur type. Le point de dpart et la longueur des partitions sont exprims en secteurs. Un secteur est l'unit de base pour les donnes des disques durs, qui correspond un bloc de 512 octets utiles (auxquels s'ajoutent bien entendu d'ventuels octets de contrle d'erreur, mais qui ne sont manipuls que par le disque dur lui-mme et par son contrleur, et que l'on ne peut donc pas utiliser pour y stocker des donnes). Cela dit, certains systmes (ceux de Microsoft) ne permettent pas une telle finesse dans la dfinition des partitions et ncessitent de travailler au niveau du cylindre. Note : Pour comprendre ce qu'est un cylindre, il faut savoir que les donnes des disques durs sont stockes sur les faces magntiques de plateaux en rotation, au dessus (et en dessous) desquelles les ttes de lecture/criture du disque se dplacent radialement. Les donnes sont donc crites en cercles concentriques sur les diffrents plateaux en raison de leur rotation sous les ttes de lecture (contrairement aux microsillons et aux CD, il s'agit bien ici de cercles et non d'une spirale car les ttes de lecture/criture restent une position fixe pendant la rotation des plateaux). On appelle ces cercles des pistes ( track en anglais). Chaque tte accde donc une piste et une seule un instant donn, sur laquelle les secteurs sont enregistrs. Comme toutes les ttes sont solidaires (elles se dplacent ensemble lorsque l'une d'entre elles doit changer de piste), les diffrentes pistes des diffrents plateaux sont accdes simultanment. L'ensemble de ces pistes, situs un rayon donn DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 20
pour tous les plateaux, constitue ce que l'on appelle un cylindre . Les paramtres des disques durs sont donc exprims en termes de nombre de ttes, de cylindres et de secteurs par piste. Figure 3-1. Pistes et secteurs d'un disque dur
Vous remarquerez souvent que le nombre de ttes est impair, alors qu'en gnral, un plateau a deux faces... Cela est d au fait que les fabricants de disques durs conservent toujours une face d'un plateau pour y crire des donnes de contrle permettant aux ttes de lecture/criture de se positionner ou pour y placer des pistes complmentaires en cas de zones dfectueuses sur la surface de l'un des autres plateaux. Bien entendu, la limitation quatre partitions seulement est extrmement contraignante, aussi la notion de partition tendue a-t-elle t introduite. Une partition tendue est une partition primaire spciale, dans laquelle il est possible de dfinir jusqu' 64 sous-partitions. Ces sous-partitions sont appeles des partitions logiques . Les donnes ne sont jamais stockes dans la partition tendue elle-mme, mais dans ses partitions logiques. On ne peut dfinir qu'une seule partition tendue sur un disque donn, mais cela n'empche pas d'avoir des partitions primaires normales ct de celle-ci. Il est donc recommand, lorsque l'on cre la quatrime partition, de crer une partition tendue et non une partition primaire, afin de se rserver la possibilit de crer de nouvelles partitions ultrieurement. Il faut toutefois savoir que certains systmes ne peuvent pas tre installs sur des partitions logiques (notamment DOS et Windows 9x/Millenium), bien qu'ils soient capables d'y accder une fois qu'ils ont dmarr. Figure 3-2. Partitions primaires et partitions logiques
Outre la table des partitions primaires, le MBR contient un petit programme appel le bootstrap loader qui permet de charger le premier secteur d'une des partitions primaires. Ce secteur est communment appel le secteur de boot , parce qu'il contient le programme capable de charger le systme d'exploitation. La partition dont le secteur de boot est charg par le bootstrap loader est appele la partition active . Il ne peut y avoir qu'une seule partition active chaque instant : celle du systme d'exploitation principal. Gnralement, le programme stock sur le secteur de boot d'une partition a pour but de charger le systme d'exploitation qui y est install. Cependant, pour certains systmes d'exploitation, ce programme est trs volu et permet de lancer d'autres systmes d'exploitation, ventuellement installs sur d'autres partitions ou d'autres disques durs. Ces programmes sont alors appels des gestionnaires d'amorage . DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 21
Linux dispose de deux gestionnaires d'amorage trs puissants : le GRUB et LILO. Windows NT, 2000, XP disposent galement d'un gestionnaire d'amorage capable de lancer d'autres systmes d'exploitation : NTLDR. Windows Vista fournit son propre gestionnaire d'amorage, bcdedit, qui est relativement difficile utiliser. Pour rsumer, lors du dmarrage d'un PC, le programme d'amorage de la machine (communment appel le BIOS ) charge le MBR du premier disque dur en mmoire et excute le bootstrap loader. Celui-ci cherche ensuite charger le secteur de boot de la partition active, et excute le gestionnaire d'amorage qui s'y trouve. Ce gestionnaire peut donner accs aux diffrents systmes d'exploitation, qu'ils soient situs sur d'autres partitions ou mme d'autres disques durs. La manire dont chaque systme est lanc dpend ensuite du systme. Il faut donc, en gnral, lancer chaque systme d'exploitation avec son propre chargeur. Cependant, on peut toujours utiliser un gestionnaire d'amorage d'un autre systme en rusant quelque peu : il suffit d'indiquer ce gestionnaire de charger le secteur de boot de la partition d'installation du systme que l'on dsire lancer si celui-ci n'est pas pris en charge directement. Dans ce cas, le gestionnaire d'amorage ne fait que passer la main au chargeur de l'autre systme. Figure 3-3. Master boot record et secteurs de boot
3.2.2. Notion de systme de fichiers Les systmes d'exploitation utilisent gnralement les partitions pour y stocker ce que l'on appelle des systmes de fichiers . Nous allons voir prsent ce qu'est un systme de fichiers, et comment ils sont manipuls sous Unix. 3.2.2.1. Dfinition Un systme de fichiers est une structure de donnes sur disque contenant des fichiers, dans lesquels applications peuvent y stocker leurs donnes. Les fichiers eux-mmes sont des entits capable de contenir des donnes au sens large, ce peut tre des documents (texte, image, film, son), des programmes, des donnes utilises par le systme ou tout autre type de donnes imaginable. La plupart des systmes de fichiers sont structurs hirarchiquement, et regroupent les fichiers dans des rpertoires. Cette organisation permet de classer les fichiers et de pouvoir les retrouver plus facilement. Il existe donc un rpertoire racine, qui contient tous les fichiers soit directement, soit indirectement dans ses sous-rpertoires. En fait, les rpertoires sont eux-mmes des fichiers spciaux, interprts par le systme diffremment des autres fichiers. Les donnes stockes dans les rpertoires sont simplement les entres de rpertoires, qui caractrisent et permettent d'avoir accs aux autres fichiers et aux autres rpertoires. Il existe de nombreux types de systmes de fichiers, pour chaque systme d'exploitation. Les plus connus dans le monde Windows sont la FAT (systme de fichier originel du DOS) et la FAT32, ainsi que NTFS (systme de fichiers de Windows NT4, 2000, XP et Vista) et ISO9660 (systme de fichiers des CD-ROM et DVD). Sous Linux, on retrouve, outre les systmes de fichiers Windows, les systmes Ext2 et Ext3, ReiserFS v3, XFS, JFS, etc. Chacun de ces systmes de fichiers a ses avantages DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 22
et ses inconvnients, aussi bien en termes de performances et de limites que de fiabilit face aux dfaillances matrielles. En pratique, les systmes de fichiers les plus utiliss sous Linux sont Ext3 et ReiserFS v3. 3.2.2.2. Nommage des fichiers Afin de retrouver les fichiers, un nom leur est attribu. Il est possible, partir du nom des diffrents sous-rpertoires et du nom du fichier, de construire un chemin d'accs , qui permet de rfrencer le fichier en question de manire bien prcise et de pouvoir le retrouver facilement. Bien entendu, c'est du rpertoire racine que dbutent tous les chemins possibles dans le systme de fichiers. De ce fait, le rpertoire racine est le seul rpertoire qui n'a pas de nom. Dans les chemins d'accs aux fichiers, les noms de rpertoires et de fichiers 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 n'tait pas ncessaire d'en avoir (sincrement, le cot de cette nerie, ainsi que celle des marqueurs de fin de ligne diffrents dans les fichiers textes, doit atteindre des sommes astronomiques dans tous les projets de portage ou de dveloppement d'applications portables). Comme le rpertoire racine n'a pas de nom, il peut tre accd directement avec un simple slash : / L'criture d'un chemin d'accs se fait en crivant les noms des diffrents rpertoires et le nom du fichier, tous spars par le sparateur. L'exemple suivant vous montre l'allure d'un chemin d'accs typique sous Unix : /home/dupond.jean/lettres/professionnelles/marketing/ventes2005.odt Le chemin de cet exemple rfrence le fichier ventes2005.odt de l'utilisateur Jean Dupond . Comme on peut le voir dans cet exemple, le nom de fichier contient un suffixe odt , spar du corps du nom par un point. En effet, il est d'usage d'ajouter un tel suffixe aux noms des fichiers, afin de pouvoir le caractriser plus facilement. Ce suffixe est appel l'extension . Dans le cas prsent, l'extension odt indique qu'il s'agit d'un fichier OpenOffice Document Text , donc qu'il s'agit d'un document texte de la suite bureautique OpenOffice. Les utilisateurs de DOS et Windows devront faire attention aux points suivants lorsqu'ils utiliseront des fichiers sous Linux : Contrairement DOS et Windows, les systmes Unix n'utilisent pas l'extension pour identifier la nature d'un fichier. Ainsi, il est tout fait possible de stocker une image JPEG dans un document d'extension .doc : cela n'en fera pas pour autant un document Microsoft Word... L'extension n'ayant aucun rle particulier, un nom de fichier peut parfaitement contenir un ou plusieurs points, et une extension peut tre arbitrairement longue. En revanche, par convention, les fichiers dont le nom commence par un point sont des fichiers cachs. Dans ce cas, ils ne seront visibles que si on le demande explicitement. Les systmes de fichiers Unix font la distinction entre les majuscules et les minuscules. Il faut donc prendre garde la manire dont on crit les noms de fichiers et de rpertoires. Cependant, la plupart des gens n'utilisent que des minuscules pour leurs noms de fichiers. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 23
Les systmes de fichiers Unix n'ont pas les mmes limitations sur les noms que les systmes de fichiers FAT, FAT32 et ISO9660. Par exemple, les noms des fichiers et des rpertoires peuvent tre trs longs (jusqu' 256 caractres par nom), et la longueur maximale d'un chemin d'accs est de 4 ko dans le systme de fichiers EXT2. 3.2.2.3. Montage des systmes de fichiers Contrairement l'usage sous Windows, les chemins d'accs Unix ne comportent pas de spcification de lecteur. Les systmes de fichiers Unix sont dits mono-ttes, ce qui signifie qu'ils n'ont qu'un seul point de dpart : le rpertoire racine (alors que les systmes Microsoft sont multi-ttes, puisqu'ils ont un point de dpart par lecteur et par partition). Le fait de n'avoir qu'un seul point de dpart est beaucoup plus simple et permet, encore une fois, d'crire les programmes plus simplement et donc avec moins de bogues potentiels. Je sens tout de suite venir la question de la part des habitus du DOS : Mais alors, comment spcifie- t-on le lecteur que l'on veut utiliser ? . Cette question a deux rponses. Premirement, sous Unix, on n'accde pas aux lecteurs, mais aux systmes de fichiers. Il faut donc bien comprendre qu'un lecteur reprsente un priphrique physique, et qu'il est possible qu'il contienne plusieurs systmes de fichiers dans diffrentes partitions. De mme, un systme de fichiers n'est pas ncessairement stock sur un lecteur ou dans une partition : il peut tre galement stock dans un fichier (c'est le cas par exemple pour les images disques de CD-ROM), accessible par le rseau (c'est le cas des systmes de fichiers rseau, Network File System en anglais), ou encore gnr par un composant du systme (c'est le cas des systmes de fichiers virtuels du noyau). Cependant, le problme de l'accs aux systmes de fichiers se pose malgr tout. La rponse ce problme-ci est cette fois la suivante : pour accder un systme de fichiers, il faut raliser une opration que l'on nomme le montage . Cette opration associe le rpertoire racine de ce systme de fichiers l'un des rpertoires de l'arborescence existante. Ce rpertoire est couramment appel point de montage . Les fichiers qui se trouvent dans le point de montage sont masqus par ceux du systme de fichiers monts et ne sont donc plus accessibles, mais ils ne sont bien entendus pas dtruits. Par exemple, il est courant de monter le lecteur de disquette dans le rpertoire /floppy/. Ainsi, si la disquette contient le fichier ventes1999.odt, ce fichier sera accessible grce au chemin suivant : /floppy/ventes1999.odt Cette solution permet d'accder tous les systmes de fichiers de la mme manire, partir d'un seul rpertoire racine, que ces systmes de fichiers soient EXT2, FAT, ISO9660, NTFS ou Amiga... En pratique, c'est nettement plus simple. Note : L'opration de montage peut raliser bien plus d'oprations qu'une simple association de la racune d'un systme de fichiers un point de montage. En effet, elle peut gnrer les oprations suivantes de manire implicite : chargement des pilotes pour ce systme de fichiers ; allocation de tampons mmoire pour optimiser les entres/sorties en mmoire. On fera donc trs attention toujours dmonter les systmes de fichiers pour les lecteurs amovibles. En effet, Linux utilise en effet les tampons mmoire ( buffers en anglais) pour y stocker les donnes des systmes de fichiers monts, et il n'crit ces donnes sur le support de stockage que lorsque c'est ncessaire. Ce mcanisme permet d'acclrer les lectures et les critures sur les disques, mais a l'inconvnient de ncessiter une requte de vidange des tampons (opration que l'on appelle sync ) avant de retirer le lecteur ou avant d'teindre le systme. Si on ne le fait pas, des donnes seront certainement perdues. Pour les systmes de fichiers fixes, le systme effectue ce sync lorsqu'on l'arrte proprement, mais il ne le fait pas si on coupe le courant brutalement. De manire similaire, DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 24
Linux empche l'jection des CD-ROM tant qu'ils sont monts, mais il ne peut rien faire pour les lecteurs amovibles tels que les disquettes et les clefs ou disques externes USB. C'est donc l'utilisateur de prendre garde bien dmonter les systmes de fichiers situs sur ces priphriques avant de les dbrancher. 3.2.2.4. Identification des partitions Comme nous le verrons plus tard, sous Linux, la plupart des priphriques sont considrs comme des fichiers (la principale exception tant les interfaces rseau). Cela signifie qu'ils peuvent tre manipuls via des fichiers spciaux, sur lesquels les oprations classiques des fichiers peuvent tre ralises (et notamment la lecture et l'criture). Cette rgle s'appliquant aux disques durs, et mme leurs partitions, il est utile de prciser les conventions de nommage utilises par Linux pour reprsenter ces entits. Les fichiers spciaux de priphriques sont par conventions tous situs dans le rpertoire /dev/. C'est donc dans ce rpertoire que l'on trouve les fichiers spciaux de priphriques pour les disques et autres priphriques de stockage de masse. Malheureusement, leur nom dpend de leur interface de connexion, ce qui fait que l'on ne peut pas crire de procdure gnrique pour leur manipulation. Historiquement, les priphriques IDE sont accessibles via des fichiers spciaux nomms avec des noms de la forme hdX, o 'X' est une lettre identifiant le disque sur le bus IDE. Par exemple, le lecteur matre du premier contrleur IDE est accessible via le fichier spcial de priphrique /dev/hda (qu'il s'agisse d'un disque dur ou d'un lecteur de CD/DVD), tandis que le lecteur esclave de ce mme contrleur sera accessible via le fichier spcial de priphrique /dev/hdb. Les lecteurs matre et esclave du deuxime contrleur IDE seront quant eux accessibles via les fichiers spciaux de priphrique /dev/hdc et /dev/hdd, et ainsi de suite. Inversement, les priphriques SCSI sont accessibles via des fichiers spciaux de priphriques dont le nom est de la forme sdX. On pourra donc accder aux divers disques SCSI via les fichiers spciaux de priphrique /deb/sda, /dev/sdb, etc. Note : Afin d'uniformiser la manire dont les priphriques sont accds, la tendance est de considrer les nouveaux priphriques comme des priphriques SCSI. De ce fait, la terminologie sdX est de plus en plus employe. Ainsi, les lecteurs de connectique Serial ATA, USB ou Firewire utilisent tous cette terminologie. De plus, un nouveau jeu de pilotes pour les priphriques IDE classiques est en cours de dveloppement, et il utilise dj cette terminologie, mme si tymologiquement 's' signifie SCSI . Il n'y aura donc plus lieu de faire la distinction entre les interfaces utilises sous peu. Les fichiers spciaux de priphrique des disques peuvent tre utiliss directement, mme si ce n'est pas l'usage de le faire. Par exemple, il est possible de lire la totalit du contenu d'un disque en lisant son fichier spcial de priphrique. En pratique toutefois, ces fichiers spciaux de priphriques ne sont utiliss que pour manipuler la table des partitions. Ils ne sont gnralement utiliss que par les programmes de partitionnement, donc que lors de l'installation du systme ou lors de l'installation d'un nouveau disque. Par exemple, l'dition de la table des partitions du disque /deb/hda se fera avec la commande suivante sous Linux : fdisk /dev/hda Les partitions d'un disque quant elle sont accessibles sous la terminologie hdXn ou sdXn, o 'X' est toujours la lettre du lecteur, et 'n' est le numro de la partition considre (la numrotation des partitions commence partir de 1). Ainsi, la premire partition du disque dur matre du premier contrleur IDE (ouf !) est accessible via le fichier spcial de priphrique /dev/hda1, et ainsi de suite. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 25
Ces fichiers spciaux de priphriques peuvent galement tre utiliss directement, par exemple lorsque l'on veut copier une partition. Toutefois, en pratique, ces fichiers spciaux sont surtout utiliss par les programmes permettant de crer les systmes de fichiers. Par exemple, la cration d'un systme de fichiers FAT32 sur la partition /deb/sda1 se fera avec la commande suivante sous Linux : mkdosfs -F32 /dev/sda1 Note : Comme il l'a dj t dit ci-dessus, il est tout fait possible de crer un systme de fichiers dans un fichier... Il suffit en effet de donner le nom de ce fichier en paramtre la commande de cration du systme de fichiers, en lieu et place du nom du fichier spcial de priphrique de la partition ou du disque ! Certains utilitaires non spcifiques Linux utilisent d'autres conventions de nommage pour identifier les disques et les partitions. C'est notamment le cas, comme on le verra plus loin, pour le gestionnaire d'amorage GRUB. En effet, ce gestionnaire ne fait pas d'hypothse sur le systme utilis, et ne peut donc pas reprendre la terminologie Linux. 3.2.3. Choix du plan de partitionnement Le partitionnement du disque peut gnralement tre ralis automatiquement par les programmes d'installation des systmes d'exploitation. Cependant, les choix faits par ces programmes ne sont pas toujours trs judicieux, et peuvent ne pas convenir si votre disque contient des partitions dj existantes. Nous verrons donc comment raliser un partitionnement manuellement lors de l'installation de Linux. Toutefois, avant de se lancer dans cette opration, il faut tablir un plan de partitionnement. Cela consiste tout simplement dterminer la taille et la nature de chaque partition dans le systme. Il est normal, sur un systme o seul Linux sera utilis, de disposer d'au moins trois partitions : Une partition d'change, que Linux utilisera pour y stocker temporairement des donnes lorsqu'il aura besoin de rcuprer un peu de place en mmoire. Il est recommand de placer cette partition au dbut du disque (c'est dire au plus prs du cylindre 0, l o le taux de transfert est le plus rapide). La taille de cette partition peut empiriquement tre dfinie comme tant gale deux fois la quantit de mmoire vive installe sur la machine, sans toutefois dpasser 512Mo. Cette limite part du principe que si le systme a besoin de plus de mmoire virtuelle (somme de la quantit de mmoire vive et de la taille des zones d'change), c'est que de toute faon il n'est pas dimensionn pour faire ce qu'on lui demande. Sachez qu'on peut rajouter des fichiers d'change a postriori trs facilement sous Linux. Une partition pour le systme de fichiers racine dans laquelle se trouvera l'ensemble des fichiers du systme. Selon l'ge de la machine et la version du BIOS, il peut y avoir des limitations en ce qui concerne le dbut de cette partition. Il est recommand qu'elle se trouve dans les 1024 premiers cylindres pour que le BIOS puisse y accder et charger le gestionnaire d'amorage du systme. Sa taille devra tre de 4 8Go, afin de pouvoir installer le systme d'exploitation, les environnements graphiques et la plupart des applications sans problme. Il est inutile de dpasser les 8Go : si cette partition vient se remplir, c'est que les fichiers temporaires du systme, situs dans les rpertoires /tmp/ et /var/, prennent trop de place, auquel cas l'activit de la machine justifie l'utilisation d'une partition ddie pour ces donnes. Une partition devant contenir les donnes des utilisateurs (qui se trouveront dans le rpertoire /home/). Elle pourra prendre le reste de l'espace disponible sur le disque moins, bien entendu, l'espace ncessaire aux partitions des ventuels autres systmes d'exploitation et celui d'une ventuelle partition de sauvegarde ou d'change de donnes. L'avantage d'avoir une partition spare pour toutes les donnes des utilisateurs est considrable, puisque dans ce cas on peut mettre jour le systme ou le rinstaller compltement sans avoir faire DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 26
de sauvegarde de ses donnes. De plus, les fichiers de configuration importants peuvent tre sauvegards sur cette partition avant la rinstallation, ce qui est extrmement pratique. Ce type de partitionnement est donc prendre srieusement en considration, surtout pour les machines de particuliers, sur lesquelles un grand nombre de programmes peuvent tre installs simplement pour les tester. Il n'est donc pas rare, dans ces conditions, d'avoir refaire une installation complte pour nettoyer rapidement le systme. Toutefois, si l'on ne dispose pas de beaucoup de place sur le disque, il est possible de regrouper la partition racine et la partition contenant les donnes utilisateurs. Un mauvais dimensionnement de ces partitions aura dans ce cas de moins lourdes consquences. En effet, lorsqu'une partition est pleine, on ne peut pas facilement utiliser l'espace restant sur les autres partitions pour l'agrandir, car il faut dplacer toutes les donnes au pralable. Si votre machine est destine accueillir plusieurs systmes d'exploitation, il est peut tre intressant de crer au moins une partition FAT ou FAT32. Cette partition permettra en effet d'changer des donnes entre Linux et les autres systmes d'exploitation, car les systmes de fichiers FAT sont reconnus par tous les systmes d'exploitation courants. Notez que si Windows NT4 doit tre install, vous devrez crer une partition FAT plutt qu'une partition FAT32, car Windows NT ne reconnat pas, sans programmes additionnels, les partitions FAT32. Ce problme ne se pose plus pour Windows 2000 et les suivants. Notez galement que bien que Linux sache parfaitement lire les partitions NTFS (utilises par Windows NT4, 2000, XP et Vista), l'criture sur ces partitions n'est pas compltement implmente (il n'est possible d'crire que dans un fichier existant). Inversement, aucun systme Windows ne sait et ne saura lire les systmes de fichiers Linux, quels qu'ils soient. De mme, les systmes Windows ne savent pas accder un systme de fichiers stock dans un autre fichier, sans installer d'outils complmentaires (pour ceux qui disposent de Windows XP, l'outil filedisk sera sans doute relativement utile). Avoir une partition FAT est donc souvent la solution la plus simple pour changer des informations entre les deux systmes. Note : Sachez cependant que la taille maximum des fichiers sur les partitions FAT32 est limite 4Go. Cette limitation est en dessous de la taille d'un DVD, cela pourra donc tre assez gnant l'occasion pour transfrer de gros fichiers tels que des fichiers images de DVD ou des fichiers vido non compresss. De plus, Microsoft ne recommande pas que des systmes de fichiers FAT de plus de 32 Go soient utiliss, mme s'il est possible de crer de tels systmes de fichiers avec des utilitaires spcifiques. Les systmes de fichiers Linux n'ont pas ce genre de limites. Dans ce cas galement, vous devrez prvoir une ou deux partitions pour le deuxime systme d'exploitation, afin de sparer les donnes de ce systme et les donnes des utilisateurs. Vous aurez alors certainement crer une partition tendue et des partitions logiques, pour viter d'tre limit aux quatre partitions primaires. On constate ici que le fait que les donnes des utilisateurs ne puissent pas tre partages entre les systmes est trs pnalisant... Rien ne vous empche de crer d'autres partitions si vous le dsirez. Par exemple, si la machine doit tre d'une fiabilit absolue ou si vous tes soumis des contraintes d'exploitation fortes, vous pouvez opter pour des solutions radicales qui consistent sparer les donnes d'exploitation (normalement situes dans le rpertoire /var/) des fichiers des programmes, et de les placer dans une partition ddie. Vous pourrez alors ne monter que cette partition en lecture/criture. Ainsi, en cas de crash systme, seule la partition contenant les donnes d'exploitation devra tre rpare, ou l'extrme rigueur rinitialise compltement par les scripts de dmarrage. Vous voyez que dfinir un plan de partitionnement n'est pas une chose facile, et il n'existe pas de solution gnrique qui convienne tous les usages. Cela est d'autant plus vrai qu'il est impratif de bien dterminer ses besoins en espace disque, aussi bien pour les programmes que pour les donnes et le swap, puisque les partitions ne peuvent pas facilement tre redimensionnes. Quoi qu'il en soit, dans DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 27
tous vos choix, gardez l'esprit que ce qui est le plus important pour un particulier, ce sont ses donnes. 3.3. Prrequis Maintenant que les principes de base ont t vus, on peut passer l'action. Mais avant de raliser l'installation de Linux proprement dite, il faut s'attarder sur quelques prrequis importants : le recensement du matriel install et bien entendu la sauvegarde des donnes existantes ! 3.3.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 configuration du matriel que vous pourriez rencontrer. Vous aurez aussi peut tre spcifier certains paramtres matriels lors de l'installation et, dans le pire des cas, lors du premier dmarrage de Linux. Les informations dont vous aurez certainement besoin sont les suivantes : type de processeur, avec sa marque et ventuellement sa vitesse ; type de carte mre, avec sa marque et imprativement son chipset ; type de branchement de la souris (srie, PS/2, USB, interface bus propritaire) ; nombre de ports srie, ainsi que leurs paramtres (ports d'entre/sortie, lignes d'interruption) ; nombre de ports parallles, ainsi que leurs paramtres (ports d'entre/sortie, lignes d'interruption) ; le type de port USB (vitesse, compatible UHCI ou OHCI) ; si vous disposez d'un contrleur SCSI, marque et modle de ce contrleur (modle du chipset de la carte SCSI) ; sinon, nom du contrleur de disque IDE (regardez sur le chipset de la carte mre !) ; types de disques durs (IDE, IDE UltraDMA 33, 66 ou 100, SCSI), ainsi que leurs taille et leur position dans le systme (contrleurs auxquel ils sont connects, numros d'units logiques SCSI) ; types de lecteurs ou de graveur de CD-ROM ou de DVD (IDE, ATAPI, SCSI, connect sur carte son) et le type de leur branchement s'ils sont externes (port parallle, SCSI ou USB) ; nom, modle et marque de la carte graphique, type de chipset utilis par cette carte et taille de sa mmoire vido ; nom, modle et marque de l'cran, avec, s'il s'agit d'un cran tube cathodique, ses frquences de balayage horizontales et verticales maximale, sa bande passante et les frquences recommandes par le constructeur pour les diffrentes rsolutions ; type de carte son (ISA, PCI, PnP) ainsi que le nom du chipset utilis par cette carte ; type de carte rseau (ISA, PCI, PnP) ainsi que le nom de son chipset ; type de chipset pour les rseaux sans fils Wifi ; type de modem (interne, externe) et, si le modem est interne, sa nature (modem complet ou mulation) ; type de chipset pour le contrleur FireWire (IEEE 1394) si vous en disposez d'un ; type de chipset et nom, marque, modle pour les priphriques annexes (contrleurs infrarouge, lecteurs de cartes mmoire intgrs, etc.). Vous pouvez obtenir ces informations en consultant la documentation fournie avec votre ordinateur, les sites Web des constructeurs des diffrents composants, les informations fournies par le programme de configuration du BIOS ou affiches directement par le BIOS au dmarrage de la machine, ou tout simplement en ouvrant le botier de la machine et en regardant ce qu'il y a l'intrieur. Vous pouvez galement rcuprer les informations indiques dans la configuration de MS Windows si celui-ci est install. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 28
Bien entendu, il se peut que vous n'ayez pas besoin de ces informations et que l'installation se passe sans problme. Cependant, si d'aventure Linux exige que vous les connaissiez, mieux vaut pouvoir lui rpondre. Note : Bien que cela soit assez rare, certains composants ou priphriques additionnels peuvent ne pas tre grs par Linux, faute d'avoir un gestionnaire de priphriques adquat (cet tat de fait est en gnral d une rtention d'informations de la part des fabricants, qui empchent ainsi les dveloppeurs de Linux d'crire les gestionnaires de priphriques dans de bonnes conditions). C'est en particulier le cas de nombre de priphriques bas de gamme conus pour ne fonctionner qu'avec MS Windows, ou de quelques priphriques exotiques. Les Winmodems ont une triste rputation ce sujet (il s'agit de modems incomplets, dont une partie du traitement de signal est report dans un logiciel spcifique Windows), ainsi que des imprimantes dites GDI , qui ne comprennent que les commandes graphiques de Windows. Vous pourrez galement avoir des problmes avec des cartes de numrisation vido analogiques ainsi que certaines cartes de dcompression MPEG. Certaines marques se distinguent par le fait qu'elles refusent obstinment de dvelopper des gestionnaires de priphriques pour leur matriel ou, pire encore, de fournir les informations ncessaires aux dveloppeurs de Linux pour crire ces gestionnaires sous licence libre. Il est donc recommand, comme toujours, de bien se renseigner auprs des vendeurs et des groupes de discussion avant tout achat de matriel... Vous pourrez trouver une liste (non exhaustive) de matriel test sous Linux dans la liste de matriel compatible Linux. La Liste de compatibilit Linux vous permettra galement d'effectuer une recherche sur n'importe quel type de matriel et sur n'importe quel modle trs facilement. Il existe d'autres sites ralisant priodiquement des tests sur le matriel rcent, comme par exemple LinuxHardware. 3.3.2. Sauvegarde des donnes L'installation d'un systme d'exploitation est une opration dlicate, surtout si l'on modifie les partitions, puisqu'il faut travailler au niveau le plus bas. La moindre erreur peut provoquer une catastrophe, ce qui peut au mieux vous obliger recommencer compltement l'installation, et au pire perdre l'ensemble de vos donnes, y compris celles des autres systmes installs ! Par consquent : IL FAUT DONC FAIRE UNE SAUVEGARDE DE VOS DONNES ! Toutefois, si Linux est le premier systme que vous installez sur votre ordinateur, ou si vous n'avez pas encore utilis ou pas l'intention d'utiliser les autres systmes d'exploitation installs dessus, vous pouvez tenter votre chance directement. La manire de procder pour raliser une telle sauvegarde dpend bien entendu des systmes d'exploitation dj installs. Gnralement, il s'agit de Microsoft Windows. Si vous disposez d'un lecteur de bande, le problme de la sauvegarde est trs simple : vous n'avez qu' faire une sauvegarde complte. Dans le cas contraire, vous allez sans doute devoir trier vos fichiers afin d'identifier ceux auxquels vous tenez rellement, et les recopier sur un support physique fiable (vitez absolument les disquettes, ils sont lents et n'ont jamais t fiables). Vous pouvez par exemple faire un DVD de sauvegarde si vous disposez d'un graveur de DVD. Dans ce cas, l'idal est tout simplement de disposer d'un autre disque dur, que l'on pourra consacrer compltement l'installation de Linux. Ainsi, vous pourrez exprimenter tout loisir, sans craindre de perdre vos prcieuses donnes. De plus, l'installation de Linux sur un disque vierge est nettement plus facile que sur un disque o Windows est dj install, parce que vous n'avez pas dgager de la place pour son installation. Prenez toutefois garde au fait que Linux restera capable d'accder aux donnes de votre premier disque dur, et que toute erreur de manipulation peut dtruire les donnes qui s'y trouvent. Par exemple, si vous ne spcifiez pas le bon disque dur lors de la cration des systmes de fichiers, vous perdrez nouveau toutes vos donnes. L'achat d'un tiroir peut tre la vraie solution, car vous n'aurez alors qu'un seul disque un instant donn dans votre ordinateur. Toutefois, cette DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 29
technique a l'inconvnient de ne pas vous permettre d'accder aux donnes de votre disque Windows partir de Linux. 3.4. Procdure d'installation gnrique Si vous avez fait la sauvegarde de vos donnes, que vous savez comment partitionner vos disques et o installer Linux, vous pouvez vous lancer effectivement dans l'installation de Linux. Cette section vous prsentera de manire gnrique les tapes d'une installation de Linux. Si vous dsirez installer une distribution Mandriva, Debian ou Slackware, vous pouvez passer directement aux sections suivantes, qui dcrivent plus spcifiquement l'installation de Linux avec ces distributions. De manire gnrale, une installation de Linux se droule selon les tapes suivantes : amorage du systme ; cration ou redimensionnement des partitions du disque dur ; cration des systmes de fichiers et de la partition d'change ; installation du systme proprement dite ; installation du gestionnaire d'amorage ; configuration du systme. Nous allons donc voir ces diffrentes tapes, sauf la configuration du systme, qui sera prsente dans toute la suite de ce document. 3.4.1. Premier dmarrage Pour commencer votre installation, vous devez pouvoir dmarrer votre ordinateur sous Linux. La mthode la plus simple est certainement de mettre le CD ou le DVD de la distribution que vous avez choisie dans votre lecteur et de redmarrer l'ordinateur. Toutefois, il faut que votre BIOS soit configur pour amorcer le systme sur le lecteur de CD pour que cette solution fonctionne. Tous les BIOS modernes permettent de le faire, il suffit de rentrer dans le programme SETUP (gnralement, cela se fait en appuyant sur la touche F2 ou la touche Suppr/Del de votre clavier juste au moment o l'ordinateur s'initialise). Par ailleurs, certaines cartes mres et BIOS disposent d'une fonction de protection contre les virus de secteurs de boot. Les virus de ce type sont gnralement assez anciens, et s'installent dans le MBR pour tre excuts chaque dmarrage de la machine et avant le systme d'exploitation. Je prdis toutefois une recrudescence de ce type de virus depuis l'apparition des processeurs modernes qui permettent de virtualiser compltement le systme d'exploitation. Quoi qu'il en soit, la modification des partitions et l'installation du gestionnaire d'amorage de Linux puisse apparatre comme une infection virale, et chouer en raison d'un blocage par le BIOS. Il est donc ncessaire de dsactiver cette fonctionnalit pendant l'installation du systme, et de la ractiver aprs. Cela se fait galement dans le programme SETUP du BIOS. 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 d'autres types de disques. Lorsqu'il se lance, Linux tente de dtecter le matriel de votre ordinateur. Seuls les pilotes correspondant votre matriel s'activent, 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, il est probable que votre distribution fournisse des noyaux alternatifs, pour DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 30
les configurations plus exotiques. Chacun de ces noyaux permet de dmarrer sur un certain type d'ordinateur : vous devrez donc trouver le noyau qui correspond votre matriel et ressayer. Une autre solution est de fournir, lors du dmarrage, des options au noyau, pour qu'il utilise un pilote plutt qu'un autre, ou qu'il ne tente pas de dtecter un matriel qui n'est pas prsent sur votre machine, si ce teste le bloque au dmarrage. Pour trouver la liste des options et la manire de les fournir au noyau, vous devez lire les informations du gestionnaire d'amorage de votre distribution. Si votre machine est trs vieille, il se peut que votre BIOS ne vous permette malheureusement pas de booter sur un lecteur de CD. Dans ce cas, vous pouvez tenter de le mettre jour, mais s'il n'en existe pas de nouvelle version, il ne vous restera plus qu' dmarrer sur une disquette. Pour cela, vous devrez copier une image de disquette d'amorage sur une disquette. Vous pourrez alors utiliser cette disquette pour dmarrer l'installation. En gnral, les distributions fournissent un petit utilitaire DOS nomm RAWRITE.EXE. Cet utilitaire s'utilise sous DOS avec la ligne de commande suivante : rawrite image lecteur: o image est l'image d'une des disquettes d'amorage (que vous trouverez sur le CD d'amorage 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 qu'il doit charger, ou comment crer une disquette de dmarrage pour un autre noyau. Dans le pire des cas, la distribution utilise ne supporte plus le dmarrage sur disquette. Il ne reste plus alors qu' trouver version plus ancienne de cette distribution, l'installer, puis faire une mise jour. Avec la plupart des distributions, les outils ncessaires l'installation sont placs sur un disque virtuel en mmoire aprs le dmarrage de Linux. C'est en particulier le cas du programme d'installation, et des outils de manipulation des partitions et des systmes de fichiers. Vous devez toutefois tre en mesure de les utiliser : il est donc impratif que Linux ait dtect vos disques durs. Si ce n'est pas le cas, soit les fichiers spciaux de priphriques de ces disques ne seront pas prsents dans le rpertoire /dev/, soit les outils vous signaleront une erreur lorsque vous tenterez de les utiliser. 3.4.2. Trouver de la place pour installer le systme L'un des problmes les plus courants lors d'une nouvelle installation est l'absence de place disponible sur le disque dur pour crer une partition Linux. Ce problme n'a hlas pas de solution : il faut supprimer une autre partition appartenant un autre systme, ou en rduire une. Souvent, rduire une partition revient sauvegarder les donnes, la supprimer, la recrer avec une taille infrieure et restaurer les donnes. Certains outils commerciaux permettent de rduire des partitions directement, mais ils se vendent souvent pour le prix d'un disque dur neuf (je ne peux donc rellement pas conseiller de les acheter, sauf si vous avez plusieurs disques durs dont les partitions doivent tre redimensionnes ou dplaces !). De plus, Linux dispose galement d'un outil similaire qui, bien qu'il soit encore en phase de dveloppement, permet dj de raliser la plupart des oprations que l'on peut avoir faire sur les partitions FAT et les partitions EXT2 de Linux. Il s'agit du programme parted, que nous dcrirons ci-aprs. De mme, il existe un programme DOS permettant de rduire la taille d'une partition FAT, moyennant quelques prcautions complmentaires. Bien entendu, il va de soi que si l'on doit dplacer ou modifier une partition, il faut faire au pralable des sauvegardes de toutes les donnes de cette partition... Mais ne l'ai-je pas dj dit ? Il est possible que votre distribution dispose d'un outil graphique permettant de manipuler les partitions existantes pendant la phase d'installation. Ce type d'outil pourra tre utilis pour dgager de la place pour Linux, ventuellement en rduisant une partition existante. Nous ne dcrirons cependant pas ces outils ici, car ils sont spcifiques chaque distribution. En revanche, nous prsenterons les DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 31
deux principales techniques permettant de redimensionner une partition, la premire fonctionnant sous Linux et la deuxime sous DOS. 3.4.2.1. Utilisation de parted L'utilitaire GNU parted est le standard en ce qui concerne les manipulations de partitions sous Linux. Cet outil s'utilise en ligne de commande, et peut donc tre utilis partir d'un terminal en mode texte pendant la phase d'installation, si votre distribution l'inclut avec ses outils d'installation standards. Si ce n'est pas le cas, vous pourrez rcuprer l'image d'une disquette de boot Linux contenant cet outil l'adresse ftp://ftp.gnu.org/gnu/parted/bootdisk/partboot.img. Cette image pourra tre copie sur une disquette l'aide de l'utilitaire DOS RAWRITE.EXE, de la mme manire que les disquettes de boot de votre distribution peuvent tre cres. La manire de procder a t dcrite dans la Section 3.4.1. Une fois que vous aurez dmarr Linux et obtenu un terminal fonctionnel, vous pourrez lancer parted avec la simple commande suivante : parted disque
o disque est l'identifiant du disque dur sur lequel la partition modifier se trouve. Par exemple, la modification des partitions du premier disque dur IDE se fera donc l'aide de la commande suivante :
parted /dev/hda parted dispose de plusieurs commandes permettant de modifier les partitions. l'heure actuelle, il ne permet rellement de travailler que sur les partitions FAT et les partitions contenant un systme de fichiers EXT2, EXT3 ou ReiserFS. Pour les partitions contenant un systme de fichiers NTFS, il vous faudra utiliser l'outil ntfsresize. Les exemples de la suite supposeront que le systme de fichiers manipuls est un systme de fichiers de type FAT. La premire commande indispensable est la commande print, qui permet d'afficher la table des partitions du disque courant. Les informations affiches par cette commande se prsentent de la manire suivante : Disk geometry for /dev/hda: 0.000-32634.492 megabytes Disk label type: msdos Minor Start End Type Filesystem Flags 1 0.031 32632.031 primary FAT lba
Comme vous pouvez le constater, les partitions sont dcrites raison d'une ligne par partition. Cette ligne contient le numro de la partition (les quatre premiers numros tant affects aux partitions primaires), les points de dpart et de fin de ces partitions, exprims en mgaoctets, le type de la partition, le systme de fichiers de cette partition, et des indications complmentaires. Note : Comme il l'a dj t expliqu ci-dessus, les partitions sont gnralement dcrites en terme de cylindres. parted prfre utiliser le mgaoctet comme unit, ce qui est gnralement plus clair. Il prend compltement en charge la traduction des informations de taille en termes plus physiques, en tenant compte des ventuels problmes d'alignement aux limites de cylindre. Son utilisation est donc relativement directe. La commande qui nous intresse le plus ensuite est la commande resize, qui permet de redimensionner une partition. Cette commande utilise la syntaxe suivante : resize partition dbut fin DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 32
o partition est le numro de la partition tel qu'il est prsent dans la premire colonne des informations de la commande print, dbut est la nouvelle position o la partition commencera et fin est la nouvelle limite de cette partition. Comme vous pouvez le constater, il est possible de rduire une partition aussi bien par son dbut que par sa fin ! La seule contrainte est, bien entendu, que cette partition reste suffisamment grande pour contenir l'ensemble de ses donnes. Par exemple, pour rduire de 8 Go la premire partition du disque dur de l'exemple prcdent afin d'y placer la partition de swap et les systmes de fichiers, on utiliserait la commande suivante :
resize 1 8192 32632.031 Note : L'opration de redimensionnement peut prendre un certain temps. En effet, parted doit dplacer les donnes qui se trouveraient en dehors de la partition aprs son redimensionnement si aucune mesure spciale n'tait prise, et il doit reconstruire compltement la FAT de cette partition pour qu'elle soit cohrente avec le nouvel emplacement de ces donnes. Linux peut dfinir des limites sur les ressources utilisables par les utilisateurs afin de protger le systme. En particulier, il est possible qu'une limite soit dfinie concernant la taille maximale des fichiers manipuls. Il est bien entendu impratif de dsactiver cette limite avant d'effectuer la moindre opration sur les partitions, tant donn que ce sont gnralement des fichiers de trs grande taille. Pour cela, il faut taper la commande suivante avant de lancer parted : ulimit -f unlimited Si vous dsirez dplacer une partition plutt que de la redimensionner, vous pouvez utiliser la commande move : move partition dbut
o partition est le numro de la partition et dbut est son nouvel emplacement de dpart, exprim en mgaoctets. De mme, si vous dsirez copier une partition, la commande cp devra tre utilise. Cette commande suit la syntaxe suivante :
cp [disque] source destination
o disque est le disque dur o se trouve la partition source, source est le numro de cette partition, et destination est le numro de la partition destination. La partition destination est toujours situe sur le disque dur courant (c'est--dire celui qui a t indiqu en ligne de commande lors du lancement de parted ou celui spcifi par la commande select de parted). Enfin, une fois que toutes les manipulations sur les partitions auront t effectues, vous pourrez quitter parted avec la simple commande quit. Vous pourrez obtenir la liste des autres commandes acceptes par parted en tapant la commande help. 3.4.2.2. Utilisation de fips fips (abrviation de l'anglais First Interactive Partition Splitter ) est un utilitaire similaire parted, ceci prs qu'il fonctionne sous DOS et qu'il ne permet que de rduire la limite suprieure d'une partition FAT. De plus, cet utilitaire est incapable de rorganiser le systme de fichiers l'issue de la rduction de la taille de la partition. Il est donc ncessaire de dfragmenter le systme de fichiers avant d'utiliser ce programme, afin de placer toutes ses donnes au dbut de la partition. Note : Vrifiez bien les options du dfragmenteur de systme de fichiers que vous utilisez : quelques outils consolident bien l'espace libre mais placent certains fichiers la fin de la partition FAT pour laisser plus de place aux fichiers les plus utiliss au dbut du disque, afin d'optimiser le dbit de DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 33
donnes sur ces fichiers (c'est notamment le cas avec le dfragmenteur de Norton). Il faut imprativement dsactiver ce type d'option avant de rduire la partition, faute de quoi vous perdriez dfinitivement les fichiers qui se trouvent la fin de la partition et votre FAT serait dans un tat incohrent. Une fois la dfragmentation ralise, fips peut tre utilis pour rduire la taille de la partition FAT. La plupart des distributions de Linux fournissent des utilitaires DOS sur leur CD/DVD d'installation, gnralement dans le rpertoire dosutils. C'est l que vous pourrez sans doute trouver fips. Attention, vous devrez imprativement utiliser la version 2.0 de fips pour manipuler les FAT32 et FAT32X. La rduction de la taille d'une partition se fait en modifiant la variable qui contient la taille de la partition dans la table des partitions. Pour cela, vous devrez simplement lancer fips. Celui-ci vous prsentera alors la liste des disques durs installs sur votre systme, et vous devrez lui indiquer le disque sur lequel la partition rduire se trouve. Il vous demandera ensuite la partition que vous dsirez rduire, puis le cylindre auquel cette partition devra se terminer. Lorsque vous aurez dtermin la nouvelle taille de cette partition, vous devrez presser la touche 'c' pour poursuivre. fips vous demandera alors confirmation avant d'crire sur disque les nouvelles informations de partition. Si vous tes sr de vous, vous pouvez rpondre par l'affirmative en pressant la touche 'y'. Note : Contrairement parted, fips ne reconstruit pas la table d'allocation des fichiers (la FAT ) aprs avoir rduit la taille de la partition, ce qui fait que cette dernire est trop grosse pour cette nouvelle taille aprs rduction. Cela n'est pas gnant, seuls quelques mgaoctets seront perdus sur la partition FAT dans la FAT elle-mme. Cette technique a en revanche l'avantage d'tre extrmement rapide. 3.4.3. Partitionnement du disque Le partitionnement en soi peut se faire soit directement l'aide du fdisk de Linux, soit par l'intermdiaire du programme d'installation de la distribution correspondante. Il est recommand d'utiliser ce programme d'installation, 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 suffit de taper la commande suivante en ligne de commande : fdisk disque
o disque est le fichier spcial de priphrique reprsentant le disque que vous dsirez partitionner. Si vous voulez partitionner le disque matre du premier contrleur IDE, vous devrez donc taper :
fdisk /dev/hda Si vous ne spcifiez aucun disque en paramtre fdisk, il prendra par dfaut le disque /dev/sda, ou /dev/hda si aucun disque SCSI n'est install. fdisk est un programme trs peu interactif. Il attend que vous lui communiquiez les commandes excuter en tapant sur une lettre. Les diffrentes commandes possibles peuvent tre affiches avec la commande 'm'. Lorsque vous crez une partition, vous devez utiliser la commande 'n', puis indiquer son type avec les commandes 'p' (pour primary ) pour une partition primaire ou 'e' (pour extended ) pour une partition tendue. Vous devrez ensuite donner son numro dans la table des partitions, puis indiquer le dbut et la fin de la partition. Par dfaut, l'unit utilise par fdisk est le cylindre. Il est recommand de conserver cette unit, surtout si l'on utilise un systme qui ne sait manipuler que les cylindres. Toutefois, on peut changer cette unit grce la commande 'u' et utiliser le secteur comme unit. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 34
Si vous avez cr une partition tendue, celle-ci sera utilise pour y stocker des partitions logiques. Pour pouvoir les crer, il faut encore utiliser la commande 'n', et choisir le type de partition logique avec la commande 'l' (pour logical ). Les partitions logiques sont numrotes avec les nombres 5 et suivants. La cration des partitions logiques se fait exactement de la mme manire que les partitions primaires, en spcifiant leur dbut et leur fin, soit en cylindres, soit en secteurs selon l'unit courante. Une fois les partitions cres, vous pouvez spcifier leur type l'aide de la commande 't' (pour type ). Cette commande demande successivement le numro de la partition modifier et la valeur de son identificateur en hexadcimal. Rappelons que les identificateurs utiliser pour Linux sont 83 pour les partitions de systmes de fichiers Linux, et 82 pour les partitions de swap. La liste des valeurs admissibles peut tre obtenue l'aide de la commande 'l'. Par dfaut, le fdisk de Linux cre des partitions Linux natives, de code 83. Lorsque vous aurez compltement dfini vos partitions, il ne vous restera plus qu' activer la partition qui contiendra le gestionnaire d'amorage. La slection de la partition active se fait avec la commande 'a' de fdisk. C'est donc sur cette partition que le chargeur du MBR ira chercher le gestionnaire d'amorage du systme lancer. Note : Thoriquement, il est tout fait possible d'installer le gestionnaire d'amorage d'un systme directement sur le MBR, mais procder de cette manire est trs dconseill. En effet, certains systmes d'exploitation (notamment tous les systmes de Microsoft) crasent systmatiquement le MBR lorsqu'ils s'installent, dtruisant ainsi le chargeur d'un autre systme qui y serait ventuellement install. Cela implique que si l'on dsire installer un gestionnaire d'amorage autre que celui des systmes Microsoft sur le MBR, il faut le faire aprs l'installation de ces systmes. En pratique, cela veut dire que dans ce cas, on doit installer Linux aprs Windows ou le DOS. Notez qu'il n'est toutefois pas toujours faisable d'installer le gestionnaire d'amorage sur le secteur de boot de la partition de son systme, en particulier si cette partition ne se trouve pas sur le premier disque dur de la machine. En effet, certains des BIOS sont incapables d'utiliser les MBR des autres disques durs. Dans ce cas, on peut soit crer une partition de dmarrage de petite taille (quelques mga-octets, un cylindre au maximum) au dbut du disque et sur laquelle on installera le gestionnaire d'amorage et ventuellement quelques outils de rparation en cas de coup dur, soit installer le gestionnaire d'amorage directement sur le MBR du premier disque dur. Dans ce cas, on devra faire particulirement attention l'ordre d'installation des systmes d'exploitation. De manire gnrale, il faut toujours installer les systmes Microsoft en premier (respectivement dans l'ordre suivant si l'on veut viter les problmes : DOS, Windows 9x/Millenium et Windows NT4/2000/XP). Nous verrons plus loin comment installer le gestionnaire d'amorage de Linux et faire une configuration multiboot avec les principaux autres systmes d'exploitation existants. 3.4.4. Cration des systmes de fichiers Une fois le disque correctement partitionn, il faut crer les systmes de fichiers. Cette opration n'est pas ncessaire pour les partitions de swap, cependant il faut le faire pour les autres partitions. Note : Attention ! Dans le monde du DOS et de Windows, l'opration de cration d'un systme de fichiers est appele le formatage d'une partition. C'est une erreur de langage relativement grave, car il n'y a strictement rien voir entre le formatage d'un disque, qui est l'opration consistant enregistrer des marques sur le support magntique pour dfinir les pistes et les secteurs du disque, et la cration du systme de fichiers d'une partition, qui consiste enregistrer les structures de donnes permettant de retrouver les fichiers 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 qu'il existe dj des pistes et des secteurs sur le disque. C'est pour cette raison que l'on ne parlera ici que de cration de systmes de fichiers. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 35
La cration des systmes de fichiers EXT2 et EXT3 se fait avec une mme commande, savoir la commande mke2fs. La cration des autres systmes de fichiers se fait gnralement de la mme manire que pour ces systmes, mais avec des outils diffrents. Par exemple, la cration d'un systme de fichiers ReiserFS se fait l'aide de l'outil mkreiserfs. ReiserFS constitue une alternative possible EXT3 car, tout comme EXT3, il prend en charge les mcanismes de journalisation qui assurent la cohrence du systme de fichiers mme en cas d'arrt intempestif de l'ordinateur. Cependant, ce systme de fichiers est encore jeune et n'a certainement pas t dbogu autant que EXT3, qui s'appuie sur la base de code du vieux systme de fichiers EXT2. Sachez galement que ReiserFS, contrairement EXT2 et EXT3, ne se comporte pas encore trs bien si le disque dur a des secteurs physiques dfectueux. La suite de cette section ne traitera que des systmes de fichiers EXT2 et EXT3, consultez la documentation de votre distribution et les pages de manuel des outils des autres systmes de fichiers pour plus de dtails sur la mthode utiliser pour les crer. Afin de pouvoir utiliser mke2fs correctement, il est ncessaire de dfinir quelques termes, et d'expliquer quelles notions d'EXT2 et d'EXT3 ils se rfrent. Premirement, le systme de fichiers EXT2 travaille, comme la plupart des systmes de fichiers (ce n'est pas le cas des systmes de fichiers Reiser par exemple), avec des blocs de taille fixe ( clusters en anglais). Cela signifie que l'allocation de l'espace disque se fait par multiples de la taille de ces blocs : il est impossible de demander seulement une partie d'un bloc. Cette technique prsente des avantages et des inconvnients. Essentiellement, l'avantage est la rapidit engendre par la simplification des mcanismes d'allocation et de libration d'espace disque. L'inconvnient majeur est videmment qu'on perd de la place pour tous les fichiers qui ne tiennent pas dans un nombre entier de blocs, puisqu'il faut allouer un bloc supplmentaire qui sera partiellement utilis. En moyenne, on perd la moiti d'un bloc par fichier, ce qui ne peut tre rduit qu'en limitant la taille des blocs une valeur relativement faible. Note : Les systmes de fichiers Unix grent l'allocation et la libration des blocs de manire toujours trouver le meilleur bloc allouer pour crer un fichier. Ainsi, ils limitent la fragmentation des fichiers son strict minimum, ce qui rend inutiles les programmes de dfragmentation de systmes de fichiers. De ce fait, la question de la dfragmentation, souvent pose par les nouveaux utilisateurs de Linux, ne se pose pas : en pratique, les systmes de fichiers Unix ne se fragmentent pas (si, si, c'est vrai). Deuximement, les systmes de fichiers Unix utilisent des structures de donnes appeles inodes pour dfinir les fichiers. Une inode contient la plupart des informations d'un fichier, savoir : son propritaire et le groupe d'utilisateurs de son propritaire ; ses droits d'accs ; ses dates de cration, modification, accs ; les blocs qu'il utilise ; d'autres informations utilises en interne. Dans le cas d'EXT2 et EXT3, ces inodes sont stockes dans une table du systme de fichiers, ce qui permet d'accder trs rapidement toutes ces informations et de retrouver galement trs simplement le ou les blocs contenant les donnes du fichier. Le problme est ici que cette table a un nombre d'entres limit, ce qui implique un nombre limit de fichiers dans le systme de fichiers. Plus cette table est grande, plus le nombre de fichiers que l'on pourra crer sera grand, et inversement. Il faut donc trouver un compromis entre la taille de cette table et le nombre de fichiers que l'on est susceptible de crer. Il va de soi qu'en gnral, les grandes partitions contiennent plus de fichiers, mais que la table d'inodes peut galement avoir une taille suprieure sans que cela soit drangeant. Par consquent, il est relativement courant de dfinir le taux d'inode par bloc ou, autrement dit, la proportion d'inodes dans la partition par rapport sa taille. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 36
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 fichiers. De cette manire, il est relativement simple de rparer un systme de fichiers endommag, mme si les donnes sont dtruites en raison d'une erreur matrielle (secteurs dfectueux sur le disque dur par exemple). Chacune de ces copies s'appelle un groupe de blocs. Chaque groupe de blocs contient un bloc particulier, le super bloc , qui contient la description de son groupe. Lors de la cration d'un systme de fichiers EXT2 ou EXT3, il est ncessaire d'indiquer la taille d'un bloc en octets. Cette taille doit imprativement tre un multiple de la taille d'un secteur du support physique de donnes, parce que les blocs ne peuvent contenir qu'un nombre entier de secteurs. Pour un disque dur, la taille des secteurs est fixe 512 octets, ce qui fait que la taille d'un bloc est au moins de 512 octets. De mme, il faut spcifier le nombre d'inodes de la partition. Il est possible de spcifier ce nombre soit directement, ou d'indiquer seulement le nombre d'octets de la partition par inode. Le nombre total d'inodes utilis sera alors calcul partir de ce nombre d'octets et de la taille de la partition. Bien entendu, le nombre maximal d'inodes possibles est le nombre total de blocs, puisque tout fichier non vide requiert au moins un bloc et que chaque inode caractrise un fichier. 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 plupart des systmes de fichiers Unix, comme EXT3 (mais pas EXT2), grent prsent, en plus de tout ce que nous avons vu prcdemment, un journal contenant les oprations raliser de manire transactionnelle sur le disque dur. Les oprations du journal sont excutes de telle sorte que la structure du systme de fichiers reste cohrente en toutes circonstances. Cela implique que le systme de fichiers est toujours valide, mme si une panne de courant se produit pendant une opration disque. Voyons prsent la syntaxe de la commande mke2fs : mke2fs [-j] fichier
fichier est le nom du fichier spcial de priphrique reprsentant la partition sur laquelle le systme de fichiers doit tre cr. Ce nom est le nom du disque dur, suffix du numro de la partition. Les numros de partitions commencent 0, si bien que la premire partition du premier disque dur IDE sera rfrence par le chemin /dev/hda0. L'option -_ quant elle est facultative. Lorsqu'elle est utilise, le systme de fichiers cr est un systme de fichiers EXT3. Il est recommand d'utiliser cette option pour tous les systmes de fichiers dont on voudra garantir la cohrence, par exemple pour les systmes de fichiers devant contenir des documents ou des informations importantes. Sachez cependant que la journalisation peut dgrader sensiblement les performances de votre ordinateur, aussi pouvez-vous vous en passer sur les partitions pour lesquelles un dbit lev est ncessaire (par exemple pour les partitions devant servir manipuler des fichiers vido). Note : Le systme de fichiers EXT3 utilise les mmes structures de donnes que le systme de fichiers EXT2. Il est donc parfaitement compatible avec ce dernier, et un systme de fichiers EXT3 peut tre utilis comme un systme de fichiers EXT2. En ralit, les mcanismes de journalisation peuvent tre activs ou non lors de l'opration de montage du systme de fichiers, en fonction du type de systme de fichiers indiqu la commande de montage. Nous dtaillerons la manire de monter les systmes de fichiers dans la Section 6.6.2 et dans la Section 6.6.5. Pour les mmes raisons, il est possible de convertir un systme de fichiers EXT2 en systme de fichiers EXT3 a posteriori, l'aide de l'option -_ de la commande tune2fs. Cette commande permet d'activer et de dsactiver des fonctionnalits complmentaires pour ces systmes de fichiers, dont la journalisation fait partie. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 37
Invoque sans autres options, la commande mke2fs prend des valeurs par dfaut pour tous les paramtres du systme de fichiers cr, mais vous pouvez galement spcifier d'autres valeurs. La taille des blocs peut tre indique en octets avec l'option suivante : mke2fs [-j] -b taille fichier
o taille reprsente la taille d'un bloc en octets. De mme, le nombre d'octets par inode peut tre prcis avec l'une des options -i :
mke2fs [-j] -i octets fichier
o octets est le rapport de la taille de la partition en octets par le nombre d'inodes crer. Il est possible d'indiquer directement ce nombre avec la commande suivante :
mke2fs [-j] -N nombre fichier Enfin, sachez que l'option -c permet de demander mke2fs d'effectuer une vrification des secteurs dfectueux du disque dur avant de crer le systme de fichiers. Il est fortement recommand d'utiliser cette option lors de la premire cration d'un systme de fichiers. 3.4.5. Cration de la partition de swap Comme on l'a vu prcdemment, Linux peut utiliser une partie du disque dur pour y stocker les donnes temporairement inutilises afin de librer de l'espace mmoire lorsqu'il manque de mmoire vive. Cette opration permet de continuer travailler, mme si la machine ne dispose pas de suffisamment de mmoire vive pour excuter tous les processus dont elle a la charge. videmment, l'inconvnient de cette mthode est la dgradation des performances, mais c'est un bon compromis si l'on considre le prix du mga-octet de mmoire par rapport celui des disques durs d'une part, et le fait qu'il vaut mieux parvenir faire son travail, mme lentement, que de ne pas le faire du tout. L'espace disque consacr par Linux pour ce stockage temporaire est appel swap , du terme anglais to swap qui fait rfrence l'change des donnes de la mmoire vers le disque dur (et inversement, lorsqu'elles sont recharges en mmoire). Linux est capable de grer plusieurs formes de swap. Il est capable d'utiliser des fichiers d'change, qui sont stocks dans un systme de fichiers, ou les partitions de swap. Ces dernires ont l'avantage d'tre bien plus rapides, puisque le noyau n'a pas se proccuper de la structure du systme de fichiers lors des oprations de swap (qui, rappelons-le, constituent dj un ralentissement notable de la machine). En revanche, elles ont l'inconvnient majeur d'tre trs contraignantes, puisqu'elles ncessitent de rserver une partition pour le swap de manire permanente. Cependant, il est tout fait acceptable de consacrer 128 ou 256 Mo de disque dur pour une partition de swap de nos jours. Linux est capable de grer jusqu' 8 partitions de swap dont la taille peut aller jusqu' 2 Go chacune, plus les fichiers d'change que l'on peut rajouter ultrieurement. Nous ne dcrirons que la manire de crer une partition de swap, car les fichiers d'change ne constituent plus le meilleur compromis avec les tailles de disques que l'on rencontre de nos jours. Bien entendu, le programme d'installation de votre distribution prend certainement dj en charge la cration des partitions de swap. Il est donc recommand, encore une fois, d'utiliser ce programme, mme si la description qui suit vous permettra de comprendre ce dont il s'agit. Les partitions de swap peuvent tre cres, comme toutes les partitions, l'aide du programme fdisk. En fait, la seule distinction entre une partition de swap et une partition rserve un systme de fichiers est tout simplement son identificateur. Comme on l'a dj vu lors du partitionnement du disque, l'identificateur utilis pour les partitions de systmes de fichiers Linux est 83, et celui pour les DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 38
partitions de swap est 82. Vous devrez donc affecter cet identificateur votre partition de swap lorsque vous partitionnerez votre disque dur. Il est recommand de placer la partition de swap au dbut du disque dur, car c'est cet emplacement que le taux de transfert est le plus lev (et donc c'est cet emplacement qu'on obtiendra les meilleures performances en cas de manque de mmoire vive). Une fois cre, la partition de swap peut tre prpare pour que le noyau puisse l'utiliser. Cette prparation revient peu prs formater un systme de fichiers, ceci prs que les structures de donnes crites dans la partition de swap sont beaucoup plus simples car il ne s'agit plus ici de stocker une arborescence complte de fichiers. La commande mkswap permet de prparer les partitions pour tre utilises en tant que partition de swap. Elle s'utilise 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 fichier que sur une partition. Lorsque la partition aura t prpare pour le swap, il est possible de demander Linux de l'utiliser 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 d'arrter le swapping sur une partition :
swapoff partition Normalement, vous n'aurez jamais utiliser ces commandes manuellement. Le programme d'installation de votre distribution configure 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 configuration dynamique permet d'ajouter temporairement un fichier d'change si les besoins s'en font sentir, sans avoir redmarrer la machine. 3.4.6. Installation des composants de base Si vous tes arriv jusqu'ici, vous avez fini les oprations les plus risques et sans doute les plus difficiles. 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 aujourd'hui de programmes d'installation volus, qui simplifient beaucoup le travail. Les oprations que vous allez raliser prsent sont donc plus simples, et certainement moins dangereuses. L'ordre logique est videmment de commencer par installer les couches les plus basses du systme, donc en particulier le noyau. Cependant, comme on le verra plus tard, le noyau ne permet pas rellement d'utiliser le systme, et il vous faudra installer d'autres couches logicielles. Les principales sont les suivantes : le shell (environnement utilisateur en mode texte) ; les outils et applications systmes en ligne de commande (utilisables via le shell) ; l'environnement graphique X Window, constitu d'un serveur d'affichage et d'applications graphiques simples ; un environnement de bureau (environnement utilisateur complet en mode graphique) ; et enfin, les applications de haut niveau (celles que vous utiliserez au jour le jour). Les programmes d'installation cherchent gnralement installer en premier ce qu'on appelle le systme de base (ensemble constitu du noyau, des bibliothques systmes, du shell et des outils DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 39
d'administration fondamentaux). Je vous suggre de vous assurer que ce systme de base est correctement configur, avant de vous lancer dans l'installation des couches suprieures telles que XWindow. C'est videmment l'installation et la configuration du systme de base qui est la partie la plus technique. Une fois ces oprations ralises, la suite ne pose gnralement pas de problme particulier. De nos jours, l'installation de XWindow se fait de manire relativement simple. Lorsque vous y serez parvenu, vous pourrez enfin installer les applications. L encore, lorsque le systme est bien configur, l'installation des applications est une tche relativement facile et se fait rapidement. Ce document ne traitera pas en dtail de l'installation des applications, car il y en a trop pour que l'on puisse donner des informations valides pour toutes les applications. Quelques rgles gnrales seront malgr tout donnes, car elles peuvent s'appliquer pour certaines applications. Toutes les distributions organisent les diffrents composants logiciels qu'elles fournissent en paquetages ( package en anglais). Ainsi, l'installation du systme se fait par groupes homognes de fichiers, et le regroupement dans un paquetage est gnralement une dpendance forte (en pratique, ce sont les fichiers d'une mme application). En installant un paquetage, on installe finalement un logiciel particulier. Cependant, certains paquetages dpendent d'autres paquetages, par exemple, les paquetages contenant le systme de base sont videmment utiliss par tous les autres paquetages. Les programmes d'installation grent relativement bien les dpendances et les conflits entre paquetages, si bien que l'installation peut maintenant se faire sans trop de problmes. Afin d'organiser un peu tous ces paquetages, les distributions les trient souvent par sries . Une srie n'est rien d'autre qu'un ensemble de paquetages regroups par domaine fonctionnel. Cela signifie que l'on 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 signifie absolument pas que tous les paquetages de la srie doivent tre installs pour obtenir une fonctionnalit donne, mais que les logiciels qui s'y trouvent ont plus ou moins trait cette fonctionnalit. En fait, il peut mme y avoir redondance ou conflit entre deux paquetages d'une mme srie. Dans ce cas, il faut choisir l'un ou l'autre, selon ses besoins personnels. Certains paquetages sont indispensables pour le systme, d'autres 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 qu'il est impensable d'installer tous les paquetages (une distribution de Linux peut faire 5 ou 6 CD-ROM, en tenant compte du systme, des applications et des sources). Les seuls paquetages qu'il 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, afin qu'elle puisse toujours tre en tte de liste dans les programmes d'installation. Cette srie comprend au moins les paquetages des commandes Unix de base, du shell, du programme d'installation et de tous les fichiers ncessaires au fonctionnement du systme (fichiers de configuration, scripts et bibliothques partages). Tant que les programmes de cette srie sont intacts et fonctionnels, le systme est utilisable. S'il en manque, les problmes peuvent survenir tout moment : de l'absence ou l'indisponibilit de la documentation l'impossibilit complte de dmarrer le systme. Le choix des paquetages installer est crucial mais non dfinitif. En effet, si vous avez install un paquetage dont vous n'avez pas ou plus besoin, rien ne vous empche de le supprimer par la suite. De mme, si vous vous apercevez que vous avez oubli d'installer un paquetage dont vous avez besoin, vous pouvez l'installer ultrieurement. Il n'est 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 d'aides du programme d'installation. Cependant, les paquetages dont vous aurez certainement besoin pour poursuivre l'installation sont sans doute les suivants : DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 40
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 l'esprit que dans le monde du logiciel libre, les programmes sont souvent distribus sous la forme de fichiers sources et que vous aurez sans doute besoin des outils de dveloppement pour les compiler et les installer. Veillez donc inclure d'office tous ces outils, mme si vous ne dsirez pas programmer personnellement. Bien entendu, vous pourrez revenir ultrieurement dans le programme d'installation et rinstaller un paquetage si vous l'avez oubli pendant la phase d'installation. 3.4.7. Configuration du gestionnaire d'amorage Lorsque vous aurez install votre systme de base, vous devrez faire en sorte qu'il puisse dmarrer. Pour cela, il existe plusieurs possibilits, les principales tant les deux suivantes : soit vous dmarrez partir d'une disquette ou d'un CD d'amorage ; soit vous utiliser un gestionnaire d'amorage. Il va de soi que c'est la deuxime solution qui est recommande. Cependant, la premire solution pourra tre utile si d'aventure votre MBR se trouvait tre cras ou endommag. Seule l'utilisation des gestionnaires d'amorage de Linux et de Windows NT/2000/XP sera dcrite ici. Le gestionnaire d'amorage de Windows Vista ne sera pas dcrit. Le gestionnaire d'amorage le plus utilis sous Linux se nomme LILO (pour LInux LOader ). LILO permet de dmarrer un grand nombre de systmes, dont DOS, Windows 95/98/Millenium, Windows NT/2000/XP/Vista et OS/2. Linux dispose galement d'un autre gestionnaire d'amorage galement trs performant : le GRUB (abrviation de l'anglais GRand Unified Bootloader ). Vous tes libre de choisir celui que vous voulez. Le GRUB est quelque peu plus moderne que LILO, mais le choix du gestionnaire d'amorage est ici une question de got. Windows NT, Windows 2000 et Windows XP disposent galement d'un gestionnaire d'amorage nomm NTLDR , capable de dmarrer d'autres systmes d'exploitation. Vous aurez donc galement la possibilit d'utiliser ce gestionnaire la place de LILO ou du GRUB si un de ces systmes est install sur votre machine. En revanche, Windows Vista utilise un nouveau gestionnaire d'amorage diffrent de NTLDR, et qui est techniquement beaucoup plus difficile utiliser que les autres gestionnaires d'amorage. Ce gestionnaire ne sera donc pas dcrit dans ce document, rfrez vous la documentation Microsoft si vous voulez installer Linux en marge de Vista, ou utilisez tout simplement l'un des gestionnaires d'amorage de Linux. Quel que soit le gestionnaire d'amorage que vous dsirez utiliser, il vous faudra activer la partition sur laquelle il est install. Cette opration peut tre ralise l'aide de l'utilitaire fdisk et a dj t dcrite dans la Section 3.2.1. Cela permettra au bootstrap loader de slectionner le secteur de boot de cette partition et de lancer le gestionnaire d'amorage qui y est install. Bien entendu, cela suppose que ce gestionnaire soit install sur cette partition, ce qui est normalement le cas (rappelons qu'il n'est en gnral pas conseill d'installer le gestionnaire d'amorage directement sur le MBR du disque dur). 3.4.7.1. Ralisation d'un multiboot avec LILO LILO est un gestionnaire d'amorage extrmement performant, puisqu'il permet de dmarrer Linux comme tout autre systme d'exploitation trs simplement, en donnant le nom du systme lancer lors DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 41
de l'amorage. Il est bien entendu possible de lancer un systme par dfaut, et de donner un temps d'attente avant de choisir ce systme si l'utilisateur n'intervient pas. LILO est constitu de deux parties. La premire partie peut s'installer sur le secteur d'amorage principal du disque dur ou sur le secteur de boot de n'importe quelle partition. Comme on l'a dj indiqu plus haut, il est fortement recommand d'installer cette partie de LILO sur le secteur de boot de la partition racine de Linux, afin d'viter qu'elle ne soit crase par le DOS ou par une quelconque version de Windows installe ultrieurement. La deuxime partie de LILO est enregistre directement dans la partition Linux. Elle contient les informations ncessaires pour pouvoir charger les diffrents systmes d'exploitation grs. Bien entendu, la premire partie est capable de retrouver directement la deuxime sur le disque dur de manire autonome car, lors de l'amorage, les systmes de fichiers de Linux ne sont pas encore chargs. LILO utilise le fichier de configuration /etc/lilo.conf pour y retrouver tous ses paramtres de configuration. Ce fichier contient la description des diffrents systmes d'exploitation que LILO doit proposer au dmarrage. Vous pourrez consulter ce fichier avec un des nombreux diteurs de fichiers texte prsents sur toute installation de Linux. Toutefois, si vous installez Linux pour la premire fois, il est possible que vous n'en connaissiez aucun et que vous soyez un peu perdu. Cela est normal, et dans ce cas je vous recommande de vous familiariser un peu avec le systme et l'environnement utilisateur avant de vous lancer dans l'dition de ce fichier. Il existe bon nombre d'diteurs graphiques ou en mode texte et il est hors de question de tous les dcrire ici. Toutefois, toutes les distributions Linux installent un diteur historique, j'ai nomm l'affreux vi . Cet diteur n'est pas du tout convivial pour les nouveaux utilisateurs, mais il dpannera toujours quand tous les autres seront inutilisables ou inaccessibles. En fait, on finit mme par l'apprcier l'usage... La manire d'utiliser vi sera dcrite ultrieurement, dans le chapitre donnant les notions de base d'Unix la Section 5.8. Vous devriez donc jeter un coup d'il cette section si vous dsirez modifier immdiatement le fichier /etc/lilo.conf, ou revenir ultrieurement la prsente section une fois que vous vous serez familiaris avec un autre diteur. Quoi qu'il en soit, les options les plus importantes du fichier /etc/lilo.conf sont les suivantes : l'option boo, qui permet d'indiquer sur quel secteur d'amorage LILO doit s'installer. Cette option suit la syntaxe suivante : boot = destination o destination est le nom d'un fichier spcial de priphrique sur lequel LILO va s'installer. Ce nom peut identifier un disque dur (comme par exemple /dev/hda), auquel cas LILO va s'installer sur le MBR de ce disque (c'est--dire sur le MBR du premier disque du premier contrleur de disques IDE dans notre exemple), ou une partition (comme /dev/hda2). Dans ce cas, LILO s'installe sur le secteur de boot de cette partition (la deuxime partition du premier disque dur IDE dans notre exemple). Rappelons qu'il est recommand d'installer LILO sur le secteur de boot de la partition racine de Linux ; l'option read-on1y permet de demander au noyau de monter le systme de fichiers racine en lecture seule lors du dmarrage. Cette option est ncessaire pour que les scripts de dmarrage du systme puissent effectuer les vrifications du systme de fichiers de cette partition si ncessaire. La partition sera remonte en lecture et en criture une fois ces vrifications ralises ; l'option prompt, qui permet LILO de demander le systme lancer chaque dmarrage. Cette option force donc l'apparition du message d'invite de LILO au dmarrage : LILO boot: auquel on pourra rpondre en tapant le nom de la configuration lancer ; DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 42
l'option imeou, qui permet de fixer un dlai au del duquel LILO lancera la premire configuration dfinie dans le fichier lilo.conf. La syntaxe de cette option est la suivante : timeout = diximes o diximes est le nombre de diximes de seconde attendre avant le lancement du systme ; l'option 'eyab1e, qui donne la possibilit de spcifier un fichier de tradution des codes de caractre envoys par le BIOS (qui suppose gnralement que le clavier utilise la disposition d'un clavier amricain) en les codes de caractre qui seraient envoys par un BIOS localis. Cette option permet donc de redfinir la disposition des touches du clavier pour prendre en compte les claviers non-amricains. La syntaxe de cette option est la suivante : keytable = fichier o fichier est le chemin sur un fichier de traduction de clavier pour LILO. Un tel fichier peut tre gnr par le script keytab-lilo.pl l'aide des fichiers de dfinition des claviers de Linux (gnralement installs dans le rpertoire /usr/lib/kbd/keymaps/). La ligne de commande utiliser pour ce script est la suivante : keytab-lilo.pl us local > fichier o us est le nom du fichier de dfinition de clavier Linux pour la disposition utilise par le BIOS (donc, effectivement, la disposition d'un clavier amricain en gnral), local est le nom du fichier de dfinition de clavier pour la disposition du clavier rellement utilise, et fichier est le nom du fichier de traduction des codes gnrer. Par exemple, la cration de ce fichier pour le clavier franais se ferait avec la commande suivante : keytab-lil.pl us fr-latin1 > /boot/fr-latin1.klt Remarquez que cette technique de traduction de clavier souffre d'un inconvnient majeur, puisque les combinaisons de touches qui ne sont pas valides dans la disposition amricaine des claviers ne peuvent pas tre converties. Si l'une de ces combinaisons doit tre utilise, il faut abandonner l'ide d'utiliser l'option 'eyab1e. La suite du fichier lilo.conf dcrit les diffrentes configurations que LILO peut lancer. Les sections de configuration permettant de charger Linux ont le format suivant : image = noyau root = root_device label = nom
o noyau est le chemin complet sur le noyau de Linux charger, root_device est le nom complet du fichier spcial de priphrique contenant le systme de fichier racine et nom est le nom de la configuration tel qu'il devra tre saisi l'invite de LILO. L'exemple 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 configuration permettant de lancer un autre systme d'exploitation que Linux (DOS ou Windows par exemple), vous pouvez utiliser la possibilit de passer le relais au DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 43
chargeur de ces systmes, qu'il s'agisse d'un simple secteur de boot ou d'un gestionnaire d'amorage complet. Cela se fait avec la syntaxe suivante : other = partition table = disque loader = relais label = nom
o partition est la partition sur laquelle le secteur de boot de l'autre systme est install, disque est le disque dur contenant la table des partitions utilise par ce systme, relais est le nom d'un chargeur spcial permettant de simplement passer la main au chargeur du systme, et nom est le nom de la configuration. Le chargeur utiliser pour demander LILO de passer le relais au chargeur de l'autre systme d'exploitation est le chargeur contenu dans le fichier chain.b de LILO. Ce fichier se trouve gnralement dans le rpertoire /boot/, aussi doit-on spcifier /boot/chain.b pour le champ relais. Note : Prenez garde au fait que Windows NT/Windows 2000/XP installent NTLDR dans la premire partition laquelle ils savent accder en gnral. Donc, si un DOS ou Windows 95, Windows 98 ou Millenium est install en premier, ils installeront NTLDR dans la partition de ces systmes. Dans ce cas, la configuration permettant de lancer le DOS ou le Windows 95, Windows 98 ou Millenium qui se trouve sur cette partition risque fort de lancer NTLDR qui proposera, son tour, de lancer les diffrents systmes d'exploitation Microsoft installs. Cela peut tre relativement gnant et peut tre corrig en dplaant NTLDR sur la partition de Windows NT/Windows 2000/XP et en reconstruisant les secteurs de boot des diffrentes partition pour que leur chargeurs s'occupent de leurs systmes respectifs, mais il s'agit l d'une opration extrmement technique d'une part, et qui ne concerne absolument pas Linux d'autre part. Cela ne sera donc pas dcrit dans ce document. Il existe toutefois des documents sur Internet qui dcrivent la manire de procder et je vous invite vous y rfrer (avec une prudence extrme cependant). L'exemple donn ci-dessous permet de donner la possibilit de charger Linux ou Windows NT, en lanant Linux par dfaut au bout de 10 secondes. Windows NT est install sur la troisime partition, et Linux utilise la deuxime et la quatrime partition respectivement pour y stocker sa partition racine et la partition des rpertoires personnels des utilisateurs. LILO est ici install sur la partition racine de Linux : # Exemple de fichier de configuration /etc/lilo.conf :
# Deuxime configuration (NT) : other = /dev/hda3 table = /dev/hda loader = /boot/chain.b label = NT DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 44
L'installation de LILO est trs simple une fois que l'on a crit le fichier lilo.conf. En effet, il suffit tout simplement de taper la commande suivante : lilo [-L]
L'option -L permet de demander LILO d'utiliser le mode d'adressage LBA pour accder au disque dur pendant la phase d'amorage. Cette option est ncessaire si vous disposez d'un grand disque dur et que certaines partitions disposant de systmes lancer sont situes au del du cylindre 1024. Il est recommand de l'utiliser systmatiquement tant donn les tailles des disques durs actuels. Note : Comprenez bien que si votre BIOS est incapable d'utiliser le mode LBA ou le si bootstrap loader est incapable d'utiliser ce mode, cette option ne vous sera d'aucune utilit. En effet, dans ce cas, le bootstrap loader ne parviendrait mme pas charger le secteur de boot de la partition Linux. C'est pour cette raison qu'il a t recommand de placer la partition du systme principal en de de cette limite des 1024 cylindres. Cette limitation est donc bien une limitation du BIOS, mais vous ne devriez plus rencontrer ce genre de problme que sur de vieilles machines sur lesquelles un nouveau disque dur de grande capacit a t install. Si lilo signale une erreur, il vaut mieux ne pas insister et corriger le fichier lilo.conf. Une fois LILO install correctement, il affichera l'invite de dmarrage lors du dmarrage de la machine : LILO boot: Il attend ici que vous indiquiez le nom du systme que vous dsirez dmarrer. Vous devez ici taper le nom du systme charger et valider : LILO boot:linux Si vous ne tapez rien, et que vous avez donn un dlai d'attente dans le fichier de configuration de LILO, la premire configuration sera lance automatiquement aprs ce dlai. LILO permet de spcifier des paramtres de dmarrage complmentaires pour Linux la suite du nom de la configuration qui permet de le lancer. Ces paramtres servent principalement renseigner le noyau sur la configuration matrielle (en particulier les ports d'entre/sortie et les lignes d'interruption des priphriques non Plug and Play), pour le cas o il ne parviendrait pas les dterminer automatiquement. L'un des paramtres les plus intressants est sans doute mem, qui permet d'indiquer au noyau la taille de la mmoire vive dont dispose l'ordinateur. Ce paramtre peut tre ncessaire si vous disposez de plus de 64 Mo de mmoire, parce que les fonctions du BIOS ne permettent pas d'indiquer les tailles de mmoire plus grandes (la plupart des BIOS rcents n'ont toutefois plus ce problme). Par exemple, si votre ordinateur dispose de 256 Mo de mmoire, vous devrez taper la ligne de paramtres suivante au dmarrage : LILO boot:linux mem=256M Bien entendu, il est possible d'enregistrer ces paramtres dans le fichier de configuration de LILO afin de ne pas avoir les saisir chaque dmarrage. Pour cela, il suffit d'indiquer le paramtre de dmarrage du noyau dans une ligne append de la section de configuration de Linux : append="paramtre" Ainsi, la section de configuration de Linux du fichier lilo.conf exemple donn ci-dessus pourrait tre remplace par celle-ci sur une machine disposant de 256 Mo de mmoire : # Premire configuration (Linux) : image = /boot/vmlinuz root = /dev/hda2 label = linux append="mem=256M" DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 45
La liste des paramtres que l'on peut fournir au noyau est relativement grande et ne sera pas dcrite ici. Les plus utiles seront prsents en temps et en heure, notamment dans le chapitre dcrivant la configuration du systme. 3.4.7.2. Ralisation d'un multiboot avec le GRUB Le GRUB (abrviation de l'anglais GRand Unified Bootloader ) est le gestionnaire d'amorage dvelopp par la Free Software Foundation pour amorcer le noyau Hurd du projet GNU. Il est capable de faire dmarrer tous les systmes utilisant un protocole de dmarrage standard initialement dfini pour le Hurd. Bien entendu, il sait aussi amorcer les systmes Linux, qui n'utilisent pas ce protocole, ainsi que la plupart des autres systmes d'exploitation en passant le relais leurs propres gestionnaires d'amorage. En fait, le GRUB fournit la possibilit de contrler totalement l'amorage de son systme par l'intermdiaire d'un interprteur de commandes simplifi. Il est possible, par l'intermdiaire de cet interprteur de commandes, d'effectuer nombre d'oprations dans le but de charger un noyau de systme d'exploitation et de l'amorcer. Bien entendu, ces commandes peuvent tre crites dans un fichier de configuration afin d'automatiser le processus de chargement. Le GRUB est normalement install dans le rpertoire /boot/grub/. Ce rpertoire contient, outre les fichiers binaires du GRUB lui-mme, son fichier de configuration. Ce fichier se nomme normalement menu.lst, en raison du fait qu'il permet de dfinir les diffrentes configurations correspondantes aux systmes d'exploitation charger et qui apparatront dans le menu de dmarrage lors de l'amorage de la machine. Contrairement LILO, qui enregistre l'emplacement des fichiers des diffrents noyaux charger dans une liste de blocs du disque dur, le GRUB sait interprter les systmes de fichiers classiques de Linux. En particulier, il est capable de retrouver son fichier de configuration et les fichiers images des noyaux Linux dans les systmes de fichiers FAT, EXT2/EXT3 et ReiserFS. Cette particularit fait qu'il n'est pas ncessaire, lorsqu'on modifie le fichier de configuration menu.lst, de rinstaller le GRUB. Tout comme le fichier de configuration de LILO, le fichier menu.lst se compose d'une partie contenant les options globales et d'une ou plusieurs parties contenant la description des diffrents systmes d'exploitation proposer au dmarrage. Les options gnrales les plus utiles sont les suivantes : l'option defau1, qui permet de spcifier la configuration par dfaut charger. Cette option doit tre suivie du numro de cette configuration. Les configurations sont numrotes partir de 0, dans leur ordre d'apparition dans le fichier de configuration ; l'option imeou, qui permet de spcifier le dlai d'attente avant que la configuration par dfaut spcifie par l'option defau1 ne soit lance. Les configurations spcifiques aux systmes d'exploitation suivent la syntaxe suivante : title titre root partition kernel noyau options
o titre est le titre de la configuration tel qu'il doit apparatre dans le menu de dmarrage du GRUB, partition est la partition dans laquelle se trouve le noyau charger, et noyau est le chemin sur le fichier image de ce noyau dans cette partition. Attention, ce chemin est dfini dans la partition elle-mme et peut donc tre diffrent du chemin utilis sous Linux. En effet, il faut dfinir ce chemin par rapport au point de montage de la partition, faute de quoi le GRUB ne retrouverait pas le fichier image du noyau charger. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 46
Comme le GRUB n'est pas un chargeur spcifique Linux mais a t crit au contraire avec comme principal objectif une gnricit absolue, la manire de spcifier la partition dans laquelle le noyau se trouve utilise une syntaxe diffrente de celle utilise sous Linux. Cette syntaxe, propre au GRUB donc, est la suivante : (hdn,m)
o n est le numro du disque dans l'ordre numr par le BIOS de la machine et m est le numro de la partition. Ce dernier numro est facultatif (ainsi que la virgule qui le prcde), ce qui permet de rfrencer un disque complet et non une partition. La numrotation des disques et des partitions commence toujours 0 dans le GRUB, ce qui fait que la premire partition du premier disque est rfrence par (hd0,0), la deuxime partition du premier disque par (hd0,1), la premire partition du deuxime disque par (hd1,0), etc. Tout comme avec LILO, il est possible de spcifier des options de dmarrage qui devront tres fournies au noyau. Ces options devront tre spcifies immdiatement aprs le nom de l'image du noyau. Comme vous pouvez le constater, la dfinition d'une configuration de dmarrage pour un systme Linux est trs simple, puisqu'il suffit quasiment de donner la ligne de commande pour lancer ce noyau ! Par exemple, pour charger le noyau /boot/vmlinuz d'un systme situ sur la deuxime partition du premier disque, la configuration suivante doit tre dfinie : title Linux root (hd0,1) kernel /boot/vmlinuz mem=256M Cet exemple prsente galement comment spcifier la taille de la mmoire disponible dans la machine (cela n'est normalement pas ncessaire avec les BIOS rcents et avec le GRUB). Il suffit simplement de fournir des options en ligne de commande au noyau pour cela. Beaucoup d'autres options peuvent tre fournies de cette manire au noyau. En particulier, des options peuvent tre fournies aux pilotes de priphriques si ncessaire (par exemple s'il y a des conflits d'interruptions ou de ressources entre plusieurs priphriques). Ces options seront prsentes au fur et mesure dans la suite de ce document. Bien entendu, le GRUB est capable de charger le secteur de boot d'une partition afin de passer le relais au gestionnaire d'amorage d'un autre systme d'exploitation. Pour cela, il faut utiliser la commande chainloader, plutt que la commande kernel, dans la description de la configuration de dmarrage de ce systme. La forme gnrale d'une configuration de ce type est donc la suivante : title titre root partition chainloader +1
Le +1 qui suit la commande chainloader indique au GRUB de charger le premier secteur de la partition indique par la commande root et d'excuter le gestionnaire d'amorage normalement stock dans ce secteur. Comme pour les configurations Linux, la syntaxe utilise pour spcifier la partition o ce secteur est situ est la syntaxe du GRUB et non celle utilise sous Linux. Le fichier de configuration d'exemple suivant correspond au fichier de configuration de LILO vu dans la section prcdente. Il permet de dmarrer un Linux install sur la deuxime partition ou un Windows NT install sur la troisime partition du premier disque dur de la machine :
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 47
# Exemple de fichier de configuration /boot/grub/menu.lst :
# Options gnrales : default 0 timeout 10
# Premire configuration (Linux) : title Linux root (hd0,1) kernel /boot/vmlinuz root=/dev/hda2 mem=256M
# Deuxime configuration (NT) : title NT root (hd0,2) chainloader +1 L'installation du GRUB sur une nouvelle machine ne pose quant elle pas de problme particulier. Il suffit de s'assurer que le fichier de configuration menu.lst se situe bien dans le rpertoire /boot/grub/, de mme que les fichiers binaires du GRUB. Ces fichiers sont respectivement les fichiers stage1, stage2 et tous les fichiers *_stage1_5. S'ils ne s'y trouvent pas, vous pourrez les copier partir du rpertoire /usr/share/grub/i386-pc/, dans lequel le programme d'installation du GRUB les place par dfaut. Lorsque tous les fichiers sont en place, il n'y a plus qu' lancer le GRUB en mode interactif avec la commande suivante : grub
et dfinir le secteur o il doit installer son fichier d'amorage principal stage1 (c'est--dire dans le secteur de boot d'une partition ou directement sur le MBR du premier disque dur). Pour cela, vous devrez utiliser les deux commandes suivantes :
root source setup destination
source est ici la partition o est install le GRUB (il s'agit donc de la partition o se trouvent le rpertoire /boot/grub/), et destination est le disque dur ou la partition dont le premier secteur doit recevoir le code d'amorage du GRUB. Ces deux informations doivent suivre la syntaxe utilise par le GRUB pour spcifier les disques durs et les partitions. Par exemple, pour installer le GRUB sur le secteur de boot de la deuxime partition du premier disque dur, on utilisera les deux commandes suivantes :
root (hd0,1) setup (hd0,1)
Cet exemple suppose que le GRUB est galement install dans cette partition. Si ce n'est pas le cas pour vous, vous devrez modifier la partition spcifie dans la commande root. Vous pourrez quitter le grub avec la commande quit une fois l'installation termine. 3.4.7.3. Ralisation d'un multiboot avec NTLDR Le gestionnaire d'amorage de Windows NT, Windows 2000 et XP se nomme NTLDR . Ce gestionnaire d'amorage permet de dmarrer ces systmes, bien entendu, mais galement les autres systmes d'exploitation les plus courants, dont Linux. Cette section ne traitera bien entendu que de la DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 48
manire d'utiliser NTLDR pour dmarrer Linux, pour de plus amples informations sur la manire d'ajouter les autres systmes d'exploitation, veuillez consulter la documentation de Microsoft. Tout comme LILO et le GRUB, NTLDR dispose d'un fichier de configuration qui permet de dcrire les diffrentes options de son menu de dmarrage. Il s'agit du fichier boot.ini, qui est normalement plac la racine du disque o NTLDR est install. Il s'agit donc gnralement du rpertoire racine du disque C:\. Le fichier boot.ini contient la dfinition du systme d'exploitation lancer par dfaut et du dlai d'attente attendre avant de le slectionner. Ces deux informations sont crites dans la section [boot loader] du fichier et sont introduites respectivement par les options defau1 et imeou. La valeur de l'option defau1 doit tre l'une des entres de la section [operating systems], qui contient la dfinition de tous les systmes d'exploitation que NTLDR devra proposer au dmarrage. La syntaxe des entres pour les systmes d'exploitation dans la section [operating systems] est la suivante : emplacement = "Nom"
o emplacement est la description de l'emplacement o se trouve le systme d'exploitation, et Nom est le nom avec lequel ce systme devra apparatre dans le menu de dmarrage de NTLDR. Cette syntaxe est trs simple, mais pour les systmes NT4, Windows 2000 et XP, la dfinition de l'emplacement du systme est assez complique. En effet, elle ncessite de dfinir compltement le disque physique et sa partition, ainsi que le rpertoire du systme. Pour les autres systmes d'exploitation, le plus simple est de spcifier un fichier contenant l'image du secteur de boot de leur partition, et de laisser leur chargeur prendre en charge leur amorage. Pour cela, il faut bien entendu disposer d'un tel fichier. Il faut donc copier le premier secteur de la partition du systme dans un fichier accessible NTLDR, donc, en pratique, situ dans le rpertoire C:\. Vous pourrez extraire le contenu du secteur de boot de votre partition Linux avec la commande suivante sous Linux : dd if=/dev/hda3 of=linux.sec bs=512 count=1
Cette commande suppose que LILO ait t install sur la partition /dev/hda3. Elle permet de lire un bloc de 512 octets de la troisime partition du premier disque dur et de l'enregistrer dans le fichier linux.sec. Vous pourrez ensuite transfrer ce fichier dans le rpertoire C:\ de Windows, soit en passant par une partition FAT, soit tout simplement l'aide d'une disquette (rappelons que le systme de fichiers NTFS n'est utilisable qu'en lecture seule sous Linux). Une fois ce fichier obtenu, vous pourrez simplement ajouter la ligne suivante dans votre fichier boot.ini : C:\linux.sec="Linux" Le contenu de votre fichier boot.ini devrait alors ressembler ceci : [boot loader] timeout=10 default=multi(0)disk(0)rdisk(0)partition(2)\WINNT
[operating systems] multi(0)disk(0)rdisk(0)partition(2)\WINNT="Microsoft Windows 2000 Professionnel" /fastdetect C:\linux.sec="Linux" DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 49
Vous devriez alors pouvoir dmarrer Linux directement partir du menu de dmarrage de NTLDR. Note : Prenez soin utiliser un nom court pour le fichier contenant le secteur de Linux (c'est--dire un nom ne comprenant pas plus de huit caractres et une extension d'au plus trois caractres). En effet, Windows, mme dans ses versions les plus rcentes, a toujours du mal prendre en charge les noms longs et il se peut que le gestionnaire d'amorage NTLDR ne puisse pas localiser le fichier si vous ne respectez pas cette rgle. 3.5. Installation de la Mandriva 2007 Nous allons prsenter dans cette section la procdure d'installation de la distribution Mandriva 2007. Comme nous allons le voir, cette distribution simplifie rellement la procdure d'installation et vise tre particulirement conviviale. L'installation peut tre dbute simplement en plaant le DVD d'installation dans le lecteur de DVD de l'ordinateur et en configurant le BIOS pour qu'il dmarre sur ce DVD. Les premiers crans du programme d'installation graphique apparaissent alors :
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 50
Le premier cran vous permettra de lancer l'installation proprement dite. Vous pouvez changer la langue du systme d'installation ce niveau en appuyant sur la touche F2 , ainsi que des options complmentaires de dmarrage avec la touche F3 . Une fois ceci fait, vous pouvez choisir l'option Insa11aion pour poursuivre. Le deuxime cran vous permettra cette fois de choisir la langue du systme d'exploitation (et non seulement celle du programme d'installation). Les deux crans qui suivent vous demandent respectivement d'accepter la licence d'utilisation et de choisir le type de clavier que vous voudrez utiliser. Le programme d'installation vous invite ensuite choisir un profil de scurit pour votre systme Linux, et crer les partitions l'aide de son outil de partitionnement interactif
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 51
Le niveau de scurit standard convient pour la plupart des utilisateurs. Les niveaux de scurit suprieurs peuvent ncessiter des comptences d'administration plus leves, et ne sont a priori pas ncessaires pour un particulier. Le partitionnement peut tre ralis manuellement ou automatiquement. Il est recommand de choisir la mthode manuelle, quitte accepter les valeurs proposes par dfaut, ne serait-ce que pour savoir ce que fait l'outil d'installation. Dans la suite de ce texte, le partitionnement a t ralis manuellement. On voit sur le troisime cran l'outil de partitionnement. La cration d'une partition se fait tout simplement, en cliquant d'abord sur l'espace libre devant la contenir, puis sur le type de la partition. Les options de la partition peuvent ensuite tre modifies. Le quatrime cran prsente la cration de la partition d'change (swap). Les deux crans suivants prsentent la manire de crer les partitions racine et /home/. Le troisime cran prsente le plan de partitionnement final, et le quatrime cran la demande de confirmation finale aprs laquelle la table des partitions sera crite sur le disque dur :
CREE PAR DOLLARSOFT
Il faut ensuite indiquer le support d'installation utiliser (dans notre cas, c'es choisir les logiciels installer. La copie des fichiers a ensuite lieu, cette opration peut prendre un certain temps :
DOCUMENT SUR LINUX
Il faut ensuite indiquer le support d'installation utiliser (dans notre cas, c'est le DVD d'installation), et choisir les logiciels installer. La copie des fichiers a ensuite lieu, cette opration peut prendre un
Page 52 t le DVD d'installation), et choisir les logiciels installer. La copie des fichiers a ensuite lieu, cette opration peut prendre un DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 53
Une fois l'installation termine, le systme vous demande un mot de passe pour l'administrateur. Vous pourrez ensuite crer les utilisateurs standards (cette tape est imprative). En revanche, vous pourrez activer la fonctionnalit de connexion automatique au dmarrage de la machine si vous n'utilisez votre machine qu' titre personnel
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 54
Vient ensuite la configuration du matriel. Vous devez dfinir le type de souris, indiquer si vous utilisez une carte son ISA ou non (le troisime cran indique que la configuration des priphriques audio n'est pas encore totalement intgre dans le programme d'installation et doit tre termine aprs l'installation avec un outil spcifique aux pilotes de son), et le type de carte graphique utilise pour l'affichage graphique :
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 55
Le programme d'installation exige des informations complmentaires pour l'interface graphique. Vous devez indiquer si vous voulez qu'elle soit active au dmarrage ou non et si vous voulez que les fonctionnalits de transparence soient actives (premier cran). Vous devez galement indiquer l'cran que vous utilisez et la rsolution graphique utilise (deuxime et troisime cran). Le dernier cran vous propose de tester la configuration graphique, ce qui est recommand :
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 56
Vient ensuite la configuration du rseau. La solution la plus simple pour mettre en rseau un ordinateur de nos jours est d'utiliser une carte Ethernet ou le port Ethernet intgr la carte mre (toutes les cartes mre rcentes en disposent d'un). Cela permet de raliser un petit rseau familial, et de pouvoir utiliser un modem/routeur pour se connecter Internet de manire quasi automatique et scurise. C'est cette configuration qui est dcrite dans la suite : le premier et le deuxime crans permettent de choisir le type et le modle de l'adaptateur rseau utilis, et le troisime cran permet d'activer le protocole de configuration rseau DHCP. Le quatrime cran vous permet quant lui de dfinir le nom de votre machine sur le rseau et d'utiliser le protocole DHCP pour rcuprer les adresses des serveurs de noms de votre fournisseur d'accs : DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 57
Les crans suivants vous demandent la confirmation du dmarrage automatique des fonctionnalits rseau au dmarrage de la machine et du dmarrage du rseau pour la suite de l'installation (recommand). Le quatrime cran vous prsente la liste des services systme activer. Soyez assez strict sur ce sujet, en gnral un particulier n'a besoin d'aucun de ces services : DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 58
L'installation se termine ensuite par une mise jour du systme via le rseau (recommand). Vous devrez ensuite redmarrer votre ordinateur, qui vous proposera alors la liste des systmes d'exploitation installs et les modes dgrads pour le dmarrage en cas de rparation : DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 59
Vous aurez droit remplir un petit questionnaire lors du premier dmarrage de votre systme Linux. Faites-en ce que vous voulez. Si le son ne fonctionne pas automatiquement aprs le premier dmarrage, connectez-vous en tant qu'administrateur et excutez le programme alsaconf. 3.6. Installation de la Debian 4.0r1 Nous allons prsenter dans cette section la procdure d'installation de la distribution Debian Etch 4.0r1. La distribution Debian a une rputation justifie de trs grande stabilit, en contrepartie de laquelle les sorties des versions majeures sont assez espaces dans le temps. L'installation de la Debian est relativement rustique, mais elle fournit des outils de configuration permettant aux utilisateurs une installation sans avoir connatre les arcanes du systme et de la configuration des logiciels installs. L'installation de la Debian commence par un cran d'accueil vous proposant de dmarrer le systme. L'appui sur la touche F1 vous donnera accs un cran d'aide permettant d'obtenir tous les paramtres de dmarrage du systme. Ces paramtres pourront tre utiles pour dmarrer Linux sur DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 60
certaines machines exotiques. Vous pouvez essayer dans un premier temps le dmarrage en utilisant le noyau par dfaut en appuyant sur Entre :
Le programme d'installation commence alors par vous demander la langue du systme, le pays o vous vous trouvez, et le type de clavier utilis dans ce pays :
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 61
Il vous faut ensuite indiquer le nom de votre machine et, ventuellement, le nom du domaine auquel elle appartient :
Vient ensuite la phase de partitionnement du disque. Ce document dcrit la procdure de partitionnement manuelle, que l'on peut activer en choisissant la mthode de partitionnement manuelle. Cette mthode vous permettra de choisir le disque partitionner, et d'ventuellement y crer une nouvelle table des partitions. Vous pourrez alors slectionner l'espace libre ainsi rendu disponible afin d'y crer vos partitions :
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 62
La cration d'une partition en soi se fait simplement en choisissant l'option Crer une nouvelle partition . Vous pourrez alors indiquer la taille de cette partition, son type, et son emplacement dans la table des partitions :
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 63
Pour chaque partition ainsi dfinie, vous devez indiquer sa nature et le systme de fichiers utilis. Les crans suivants montrent comment dfinir une partition d'change :
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 64
Vous procderez de mme pour dfinir la partition racine de votre systme, ainsi que les ventuelles autres partitions pour les diffrents points de montage. Vous devrez indiquer ensuite que la partition racine est amorable en fixant son indicateur d'amorage :
Vous pouvez alors valider les modifications effectues et crire la table de partition sur le disque dur :
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 65
Le programme d'installation vous demandera ensuite de dfinir le mot de passe de l'administrateur, et de confirmer ce mot de passe. Vous pourrez ensuite ajouter un premier utilisateur, en donnant son nom complet, puis le login et le mot de passe qu'il devra utiliser pour se connecter :
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 66
Le programme d'installation poursuivra en copiant les fichiers du systme de base sur le disque dur :
Vous pourrez ensuite choisir le miroir le plus proche de vous sur Internet pour la rcupration des mises jour et des paquetages manquants :
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 67
Le programme d'installation va ensuite vous demander de choisir les paquetages que vous dsirez installer, puis les copiera sur le disque dur. Afin de dterminer quels sont les paquetages les plus importants et d'amliorer la facilit d'installation de Debian il vous proposera au pralable de participer un sondage de popularit des paquetages :
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 68
Une fois le systme install, le programme d'installation passe la configuration du serveur X et du gestionnaire d'amorage GRUB avant de terminer l'installation. Pour le serveur X, vous devrez indiquer les rsolutions que vous comptez utiliser. En ce qui concerne le gestionnaire d'amorage, vous pouvez indiquer si vous dsirez l'installer sur le secteur d'amorage ou non :
L'installation telle que prsente ici n'installe que l'environnement graphique Gnome par dfaut. Si vous dsirez installer l'environnement graphique, il vous faudra vous connecter sous le compte DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 69
administrateur et complter l'installation manuellement. Cela se fait en ligne de commande, l'aide du gestionnaire de paquetage de la Debian, APT (abrviation de A Package Tool ). Pour cela, redmarrez, basculez sur le premier terminal virtuel avec les trois touches CTRL+Alt+F1, loguez-vous en tant qu'administrateur, et excutez la commande suivante : en utilisant le gestionnaire de Ainsi, vous devrez excuter la commande suivante : apt-get install kde Les crans suivants illustrent cette opration :
la suite de ces oprations, vous pouvez redmarrer votre machine. Vous devriez alors avoir un systme Debian utilisable et oprationnel. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 70
3.7. Installation de la Slackware 12.0 Nous allons prsenter dans cette section la procdure d'installation de la distribution Slackware 12.0. Tout comme Debian, la Slackware vise une grande stabilit et est par consquent galement assez conservatrice dans ses choix de logiciels. Toutefois, les versions officielles sortent une frquence suprieure celle de la Debian, car le temps d'intgration et de validation est plus court que pour la Debian. Cela est d au fait que la Slackware a pour vocation d'tre une distribution taille humaine, et se restreint donc aux logiciels les plus courants et fournit un nombre de logiciels nettement moindre. De ce fait, les versions des logiciels fournis sont souvent plus rcentes, ce qui constitue un bon compromis. Contrairement aux autres distributions en revanche, la Slackware ne fournit pas d'outil de configuration spcialis. Comme nous allons le voir, elle requiert donc une connaissance plus approfondie de Linux et des principaux logiciels de la part de l'utilisateur. L'installation de la Slackware commence par un cran d'accueil vous proposant de dmarrer le systme. Vous pouvez choisir plusieurs noyaux en fonction de votre configuration matrielle, la liste des noyaux disponibles tant accessible en appuyant sur la touche F3 . Il est recommand de choisir le noyau propos par dfaut, savoir le noyau hugesmp.s , et d'appuyer sur la touche Entre pour dmarrer Linux. Attention, le clavier tant en configuration anglaise au dmarrage, vous trouverez le point sur la touche : .
Le systme propose de configurer le clavier ds le premier dmarrage. Lorsque vous aurez choisi votre clavier, vous pourrez faire un test de celui-ci, comme le montre le troisime cran. Si la configuration du clavier vous convient, vous pouvez l'accepter en saisissant '1' sur une ligne vide et en validant. Vous aurez alors accs l'cran de login de la Slackware :
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 71
Le systme ne possdant pas encore de mot de passe ce stade de l'installation, vous pouvez vous connecter simplement en appuyant sur Entre . L'tape suivante est de partitionner le disque, en utilisant la commande fdisk. La manire d'utiliser cette commande ayant dj t dcrite dans la section dcrivant une installation gnrique, nous n'entrerons pas plus dans les dtails ici :
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 72
Pour chaque partition, il vous faut indiquer son type et, si vous ne comptez pas installer le gestionnaire d'amorage sur le secteur principal du disque dur, la rendre amorable. Vous pourrez ensuite crire la nouvelle table de partitions sur le disque :
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 73
Note : Pour rappel, la cration d'une nouvelle partition se fait avec la commande 'n' de fdisk, et la visualisation des partitions existantes se fait avec la commande 'p'. Pour changer le type d'une partition, il faut utiliser la commande 't', et pour la rendre amorable, il faut utiliser la commande 'a'. Enfin, pour crire la table des partitions sur le disque, il faut utiliser la commande 'w'. Le programme d'installation de la Slackware peut ensuite tre lanc en excutant la commande setup. Vous accderez alors l'cran suivant, qui vous permettra d'excuter les diffrentes phases de l'installation :
L'option HELP affiche un cran d'aide. L'option KEYMAP permet de choisir la disposition du clavier utiliser, mais cette opration tant dj faite, il est inutile de la refaire. Les options suivantes permettent de dfinir la partition d'change du systme, de choisir les partitions cibles et les supports d'installation, de choisir et d'installer les logiciels, et enfin de configurer le systme. Toutes ces options sont excutes automatiquement les unes aprs les autres par le systme d'installation, aussi suffit-il de commencer par l'option ADDSWAP . Le programme d'installation utilise les deux crans suivants pour configurer la partition d'change. La vrification des blocs de la partition d'change est fortement recommande, une dfaillance matrielle ce niveau pouvant planter le systme ultrieurement et dtruire l'intgralit de ses donnes :
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 74
Le programme d'installation va alors relire la table des partitions et vous demander comment utiliser chacune d'elles. La premire partition dfinir est la partition racine du systme, vers laquelle l'installation doit se faire. Pour chaque partition ainsi dfinie, il faut crer un systme de fichiers, en indiquant son type et le nombre d'inodes dans le systme de fichiers en fonction de sa taille (le quatrime cran vous demande donc d'indiquer la densit d'inodes du systme de fichiers par rapport sa taille) :
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 75
Cette procdure est rpter pour chaque partition. Toutefois, les autres partitions que la partition racine ncessitent un point de montage, qui doit donc tre spcifi. L'cran suivant montre comment dfinir le point de montage d'une partition. Vous devez y indiquer le chemin du point de montage de cette partition. Par exemple, si vous ddiez une partition pour les donnes des utilisateurs (ce qui est recommand), vous devez saisir le chemin /home/ :
Le programme d'installation demande ensuite o il peut trouver le support d'installation. Dans notre cas, l'installation se fait partir d'un CD-ROM ou d'un DVD-ROM. Le programme d'installation dtectera automatiquement le lecteur dans lequel le mdia d'installation se trouve :
La suite de l'installation se fait alors classiquement : il suffit de slectionner les diffrentes catgories de logiciels installer, et le mode de choix des paquetages. Pendant la copie des fichiers, des informations sont affiches sur le paquetage en cours d'installation :
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 76
la fin de l'installation, le programme d'installation demande s'il faut crer une cl USB de dmarrage de secours :
La configuration du modem est ensuite propose. Il s'agit l des modems analogiques classiques, et non des modems ADSL ou cble par exemple :
L'tape suivante consiste installer le gestionnaire d'amorage du systme. Par dfaut, la Slackware utilise LILO. La configuration automatique fonctionne gnralement bien, aussi pouvez-vous choisir l'option correspondante. Le programme d'installation demande ensuite la rsolution de l'cran au dmarrage, les options complmentaires qui doivent tre passes au noyau, et la zone du disque o LILO doit tre install : DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 77
La configuration de la souris est ensuite propose. Vous devez indiquer le type de souris dont vous disposez, et si vous voulez lancer le gestionnaire de souris pour le mode texte GPM :
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 78
Il faut ensuite effectuer la configuration rseau. Si vous utilisez un modem routeur ADSL, le plus simple est d'utiliser le protocole de configuration DHCP. Dans ce cas, il suffit simplement d'indiquer le nom de la machine et le nom de son domaine :
Il est conseill d'activer ensuite le protocole DHCP. Vous pourrez alors spcifier des options spcifiques ventuelles fournir au serveur DHCP si ncessaire :
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 79
Vous pouvez vrifier la configuration rseau avant de la valider. La liste des services activs sur le systme est galement personnalisable :
La configuration du systme se termine par le choix de la police de caractres pour la console et par le rglage des paramtres horaires (horloge systme en temps local ou en temps universel, et fuseau horaire de la machine) :
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 80
Le programme d'installation demande enfin le gestionnaire de connexion graphique utiliser et le mot de passe de l'administrateur du systme avant de redmarrer la machine :
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 81
L'installation doit toutefois tre complte par quelques oprations manuelles aprs le redmarrage. Pour cela, il faut d'abord se connecter sur la console en tant qu'administrateur :
Le programme d'installation laisse comment les entres permettant de monter les lecteurs de CD- ROM et de DVD-ROM dans le fichier /etc/fstab. Il faut donc dcommenter ces entres et ventuellement les corriger pour pouvoir accder au lecteur de CD-ROM et terminer l'installation. Pour cela, vous pouvez utiliser par exemple l'diteur de fichier jed et supprimer la marque de commentaire devant la ligne correspondante au lecteur de CD-ROM :
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 82
Il est alors possible de monter le disque d'installation dans le rpertoire /mnt/cdrom/ et d'installer les fichiers de prise en charge de la langue franaise pour l'environnement KDE :
La configuration de l'environnement graphique X11 pour la Slackware se fait avec la commande xorgsetup. Cette commande vous demandera confirmation que vous voulez bien configurer X11, et affichera un avertissement pour vous indiquer que la configuration existante sera crase :
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 83
Le programme dtectera ensuite la configuration matrielle et vous proposera ensuite diverses options pour la configuration du serveur X (nombre de couleurs de l'affichage par dfaut et configuration principale du clavier) :
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 84
xorgsetup vous permet galement de dfinir une configuration alternative pour le clavier, ainsi que de choisir des options sur le comportement des diffrentes touches. Une fois la configuration termine, il vous signale que l'environnement X11 est prt tre utilis :
Comme il est plus confortable de dmarrer l'environnement graphique automatiquement au dmarrage de la machine, on devra modifier le niveau d'excution par dfaut du systme (voir plus loin pour plus de dtails ce sujet). Pour cela, il suffit d'diter le fichier /etc/inittab, par exemple avec l'diteur jed. Il faut y remplacer la valeur '3' prcdent le mot-cl initdefault par '4' :
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 85
La dernire tape est de dfinir un compte d'utilisateur pour le travail quotidien. Cela se fait avec la commande adduser :
Votre systme Slackware est prsent install, et vous pouvez le redmarrer pour commencer l'utiliser. Vous pouvez tout moment modifier la configuration du systme l'aide du programme pkgtool, ou celle de X11 l'aide de xorgsetup. Chapitre 4 : Prsentation gnrale du systme Table des matires
4.1. Architecture du systme 4.2. Scurit et utilisateurs 4.3. Fonctionnalits des systmes de fichiers 4.4. Structure du systme de fichiers Si vous tes parvenu jusqu'ici, vous disposez d'un systme Linux fonctionnel. Flicitations ! Un monde nouveau s'ouvre vous, et vous allez pouvoir explorer toutes les fonctionnalits de ce nouveau systme. Toutefois, dcouvrir un nouveau systme d'exploitation peut s'avrer moins facile qu'on ne le pense. En effet, chaque systme a ses spcificits, et la manire de raliser une tche n'est pas forcment celle laquelle on peut s'attendre. Ce chapitre a donc pour but de vous prsenter les notions gnrales sur lesquelles le systme se base, afin de vous mettre le pied l'trier et de vous donner un cadre auquel vous pourrez vous raccrocher. Si vous avez dj utilis un systme Unix, vous n'aurez sans doute pas de difficult vous adapter, et la plupart des notions qui seront prsentes dans ce chapitre ne vous seront donc pas trangres. De mme, si Linux est le premier systme d'exploitation que vous utilisez, vous pourrez apprendre les procdures sans trop de difficults. En revanche, si vous tes d'abord un utilisateur de Microsoft Windows, la transition sera sans doute difficile dans un premier temps. Les habitudes ayant la vie dure, vous devrez en effet commencer par vous dbarrasser d'une bonne partie d'elles avant de pouvoir utiliser correctement Linux. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 86
Nous allons prsenter l'architecture gnrale du systme dans un premier temps. La notion d'utilisateur et les principes de base de scurit des systmes Unix seront ensuite abords. Enfin, les notions relatives la gestion des fichiers sous Linux, ainsi que les principaux systmes de fichiers disponibles et leurs fonctionnalits seront vues. Ce chapitre se terminera par une prsentation de l'arborescence standard du systme de fichiers de Linux, qui vous sera sans doute trs utile pour savoir le rle de chacun des rpertoires systmes de Linux et l'emplacement des diffrents composants du systme. 4.1. Architecture du systme 4.1.1. Principe de modularit Comme tout logiciel d'une certaine taille, un systme d'exploitation est d'une grande complexit. Tous les systmes d'exploitation rcents sont en effets constitus d'un grand ensemble de composants qui interagissent entre eux et qui doivent fonctionner de concert afin d'assurer la bonne marche du systme et rpondre aux besoins de l'utilisateur. Cette complexit implique un grand nombre d'erreurs, d'anomalies et de dysfonctionnements possibles, ainsi qu'une grande difficult en comprendre l'origine. En effet, pour qu'un systme informatique fonctionne correctement, il faut tout prvoir pour donner une action approprie tous les vnements possibles, et trouver la cause d'un problme est d'autant plus difficile qu'il y a de composants qui interviennent dans la fonction dfaillante. Cela n'est pas humainement ralisable quand le systme devient trop complexe si l'on n'est pas organis et qu'on ne connat pas les grandes lignes de l'architecture du systme. Pour rsoudre ce problme, il est courant de subdiviser les systmes complexes en composants indpendants, dont le mauvais fonctionnement potentiel ne peut perturber que partiellement les autres parties du systme. Par ailleurs, ces composants sont regroups en couches logicielles successives, les couches suprieures s'appuyant sur les services des couches infrieures. Ainsi, des points de synchronisation partir desquels le systme peut reprendre un fonctionnement normal aprs une dfaillance peuvent tre dfinis. Ces points de synchronisation permettent donc d'assurer la viabilit du systme, ou du moins des couches infrieures, mme en cas d'erreur inopine d'un composant dans une couche de plus haut niveau. Il va de soi que, lorsqu'un composant se plante, ceux qui l'utilisent risquent de se retrouver dans un tat d'erreur assez difficile grer. Cela peut souvent provoquer leur propre perte. Par consquent, plus un composant est utilis, plus il doit tre fiable. Autrement dit, les composants des couches infrieures doivent ncessairement tre beaucoup plus fiables que ceux des couches de plus haut niveau, car ils sont utiliss par tout le reste du systme. Pour quelques systmes, le dcoupage fonctionnel est trop grossier, voire inexistant. Il arrive galement que les interactions entre les composants soient trop importantes et impliquent une dpendance entre eux qui annihile le bnfice de leur isolation. Dans ces systmes, une dfaillance d'un composant peut donc entraner un dysfonctionnement global svre, et en pratique peut ncessiter jusqu' un redmarrage de l'ordinateur. Les systmes monolithiques et les systmes dont les composants sont trop interdpendants sont donc sujets de nombreux redmarrage, parfois mme pour des raisons mineures (modification de la configuration du systme, ajout d'un logiciel, ou mme simple erreur d'un logiciel). Il est d'usage de considrer que Linux est un systme monolithique. En effet, toute la gestion du matriel, ainsi que la gestion de certaines fonctionnalits de haut niveau, est prise en charge au niveau du noyau ( kernel en anglais). On pourrait donc craindre une faible fiabilit de ce systme d'exploitation. Toutefois, cette vision des choses n'est pas tout fait juste car, comme on l'a dj dit, le noyau n'est qu'une partie du systme d'exploitation, et en ralit un systme Linux est effectivement constitu de diffrentes couches fonctionnelles. De plus, le noyau reste d'une taille raisonnable. Pour DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 87
l'essentiel, il est constitu que d'une base relativement petite et trs bien teste, laquelle beaucoup de pilotes de priphriques ont t ajouts. La complexit du noyau reste donc limite, car les pilotes de priphriques ne sont bien entendus pas tous utiliss en mme temps sur une mme machine. Par ailleurs, le noyau Linux est d'une trs, trs grande fiabilit, et il n'est pas rare de voir un systme Linux fonctionner plusieurs mois ou annes sur des serveurs. Cette grande fiabilit provient du modle de dveloppement de Linux, qui est ouvert tout le monde (chacun peut rcuprer, lire, modifier, et complter ou corriger le noyau condition de savoir bien programmer). Ainsi, partir d'une taille critique en terme de nombre d'utilisateurs, taille que Linux a atteinte, il existe suffisamment de dveloppeurs pour dtecter et corriger les erreurs. En pratique, ds qu'une erreur est dtecte, elle est souvent corrige dans les jours qui suivent si la fonctionnalit concerne est effectivement utilise, ce qui assure au final une trs grande qualit. 4.1.2. Les diffrentes couches logicielles sous Linux Ainsi, un systme Linux est constitu, outre du noyau, d'un certain nombre d'autres couches logicielles, qui s'appuient les unes sur les autres. Nous allons donc prsenter brivement ces couches ici. Le noyau se trouve bien videmment la base de toutes les autres couches, puisqu'il gre quasiment tout le matriel (mmoire, disques, systmes de fichiers, rseau, clavier, etc.). Mais comme il n'est pas exploitable tel quel (par exemple, il n'est pas capable d'offrir une interface utilisateur permettant de lui donner les commandes que l'ordinateur doit excuter) il faut au moins une interface utilisateur. Cette interface utilisateur, c'est ce qu'on appelle le shell (ce qui signifie grosso modo environnement utilisateur ). Le shell est capable de lire des commandes saisies au clavier, de les excuter et d'afficher leurs rsultats l'cran. En gnral, les programmes capables de raliser ces oprations sont appeles 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.). Bien entendu, il existe plusieurs shells, mais le plus utilis sous Linux est le shell bash, qui est dvelopp par la Free Software Foundation et distribu sous licence GPL. En fait, les commandes que le shell peut excuter sont en nombre trs rduit. La plupart des commandes sont donc tout simplement prises en charge par d'autres programmes. Ces programmes, que l'on peut utiliser directement dans le shell, sont ce que l'on appelle des programmes en ligne de commande , parce qu'ils sont propres tre utiliss dans les lignes de commandes que l'on 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 GPL. Toutes ces commandes sont des commandes compatibles Unix, et nous apprendrons nous en servir dans le Chapitre 5. Bien entendu, ces commandes sont absolument essentielles pour pouvoir utiliser le systme, mais elles sont assez rbarbatives et peu d'utilisateurs acceptent de s'en contenter. C'est pour cela qu'une couche graphique a t dveloppe, pour introduire une interface graphique plus conviviale : 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 (d'o le nom de serveur) aux autres applications. Plusieurs implmentations concurrentes existent. L'une d'elles est particulirement utilise sous Linux, puisqu'elle est libre : X.org. vrai dire, un serveur X ne fait pas grand chose d'autre que de raliser des affichages sous les ordres d'autres programmes. D'autres composants permettent donc d'obtenir des fonctionnalits de plus haut niveau. Le gestionnaire de fentres ( Window Manager en anglais) est un de ces composants. Il se place juste au-dessus du serveur X et prend en charge, comme son nom l'indique, la gestion des fentres des applications graphiques sous X. C'est le gestionnaire de fentres qui prend en charge la gestion des dcorations des fentres de premier niveau (c'est--dire des fentres principales des programmes). Par DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 88
exemple, il s'occupe d'afficher les bords, la barre de titre, les boutons de rduction et de restauration, etc. des fentres. C'est galement lui qui s'occupe du positionnement des fentres, et qui donc permet l'utilisateur de dplacer et de rduire les fentres des applications graphiques. L'utilisateur est libre d'utiliser le gestionnaire de fentres qu'il dsire, selon ses propres gots et ses dsirs, la diffrence est souvent une pure question de style. Il existe galement des environnements graphiques complets qui, en plus de fournir un gestionnaire de fentres, fournissent la plupart des outils classiques que l'on est en droit d'attendre d'un systme graphique moderne. Ainsi, ces environnements comprennent des diteurs, des outils de configuration, 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 d'amliorer l'intgration des diverses applications entre elles, et c'est la raison pour laquelle on appelle souvent ces environnements des gestionnaires de bureau. KDE et Gnome sont des exemples de tels environnements de travail. Enfin, 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 d'applications en ligne de commande, c'est--dire des interfaces graphiques pour des programmes non graphiques. Ce concept permet d'avoir un composant unique ralisant une action, utilisable en ligne de commande et donc scriptable, et une ou plusieurs interfaces graphiques pour ce composant. De plus, ce modle permet de sparer clairement l'interface graphique du traitement qu'elle permet de raliser. La stabilit en est d'autant plus accrue. Bon nombre d'applications pour XWindow sont libres, ou utilisables librement des fins non commerciales (dans ce cas, on a le droit de les utiliser tant que ce n'est pas pour raliser un travail qu'on revendra). On peut donc considrer qu'il est actuellement possible, avec Linux, d'avoir un environnement logiciel complet, fiable et performant... pour un prix de revient minime. Note : Il n'est pas vident d'tablir un parallle entre l'architecture d'un systme comme Linux avec celle de MS Windows. Cependant, on peut considrer que le noyau Linux correspond aux modules KERNEL de Windows et de tous les services de type pilote de priphrique, que le shell correspond l'interprteur de commandes CMD.EXE, que les programmes en ligne de commande correspondent aux programmes en mode 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 que le gestionnaire de bureau correspond l'explorateur, Internet Explorer, aux fonctionnalits OLE permettant la communication entre applications, et aux programmes fournis avec Windows lui-mme. La diffrence essentielle vient du fait que le shell est peine programmable sous Windows, que le pilote de carte graphique, la GDI et le module USER sont tous intgrs dans le systme au lieu d'en tre spars (ce qui multiplie les chances de crash du systme complet), et que la plupart des applications Windows ne peuvent fonctionner que dans l'environnement graphique. Elles sont donc entranes par le systme lorsque les modules graphiques de Windows plantent (je n'ai d'ailleurs jamais vu un processus DOS survivre un crash de l'interface graphique de Windows). 4.1.3. Rsum de l'architecture de Linux En rsum, un systme GNU/Linux est structur de la manire suivante : le noyau Linux ; les programmes en ligne de commande et le shell ; le serveur XWindow ; le gestionnaire de fentres et le gestionnaire de bureau ; les applications XWindow. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 89
La figure suivante vous prsente comment ces diffrentes couches logicielles s'agencent les unes par rapport aux autres. Figure 4-1. Architecture des systmes GNU/Linux
Cette architecture est, comme on peut le voir, trs avantageuse : les systmes Unix, donc Linux, sont trs structurs, donc plus simples utiliser, configurer, maintenir et dvelopper ; ils sont trs stables, car les composants de haut niveau n'interfrent pas sur les composants de bas niveau ; ils sont faciles personnaliser, puisque l'utilisateur a le choix des outils chaque niveau ; Linux a de plus la particularit d'tre parfaitement modifiable, puisque si l'on sait programmer, on peut personnaliser les composants du systme ou en rajouter tous les niveaux ; et il n'est pas propritaire, c'est--dire que l'on n'est pas dpendant d'un diteur de logiciel pour rsoudre un problme donn. En bref, c'est la voie de la vrit. 4.2. Scurit et utilisateurs l'heure o la scurit devient un enjeu majeur en raison de l'importance des menaces virales et autres attaques contre les systmes informatiques et leurs utilisateurs, les systmes Unix tels que Linux, bien que de conception trs ancienne, apparaissent comme avant-gardistes et parfaitement en phase avec le march. La scurit est prsent considre comme une fonctionnalit essentielle du systme d'exploitation, et devient de plus en plus incontournable. De ce fait, il est ncessaire de prsenter les concepts de scurit utiliss par les systmes Unix et Linux, afin que vous puissiez apprhender les risques et matriser tous les principales fonctions de scurit du systme. Nous verrons donc ces concepts de base dans un premier temps. Puis, nous nous intresserons la notion d'utilisateur, qui est la base de la scurit sous Unix. Enfin, nous verrons comment cette scurit est assure dans le systme, en particulier au niveau du systme de fichiers. 4.2.1. Gnralits Les systmes Unix, depuis leurs origines, ont toujours pris en compte les problmes de scurit. En particulier, les dveloppeurs d'application Unix ont toujours fait attention ce que leurs logiciels se comportent relativement bien en termes de scurit. En pratique, bien que la scurit des programmes soit loin d'tre parfaite, surtout pour les plus anciens, des principes de base ont toujours t respects, ce qui fait que les applications Unix ne font pas, en rgle gnrale, n'importe quoi avec le systme. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 90
Ainsi, il est beaucoup plus facile de faire fonctionner une application Unix dans un contexte de scurit restreint qu'une application Windows, car les dveloppeurs de ces dernires ont longtemps t habitus une trs grande libert et ont donc ralis des applications qui ne peuvent pas tre utilises si elles n'ont pas les pleins pouvoirs. Les applications Unix qui se comportent mal sont donc trs rares, ce qui fait que les systmes Unix peuvent faire peu de cas d'elles et n'ont pas maintenir une compatibilit ascendante avec elles. Les systmes Unix ont donc un modle de scurit beaucoup plus simple et strict, et n'ont pas s'embarasser avec des techniques complexes et des circonvolutions insenses telles que la virtualisation de l'ensemble du systme pour les applications afin d'assurer un semblant de scurit tout en permettant la compatibilit ascendante. Par ailleurs, la scurit permet de protger non seulement le systme, mais aussi l'utilisateur de ses propres erreurs. En effet, le systme est capable de se protger contre les fausses manipulations de l'utilisateur. Cela peut tre extrmement utile avec les dbutants, puisqu'ils peuvent exprimenter loisir tout en tant srs qu'ils ne feront pas de btise irrmdiable. Ainsi, ils seront plus sereins et n'auront pas peur de faire une btise . Mais cela est trs utile mme pour les utilisateurs chevronns, car tout le monde peut effectivement faire une erreur ! La scurit permet galement de protger les donnes de chaque utilisateur vis vis des autres. En effet, par dfaut, les donnes d'un utilisateur ne peuvent pas tre modifies par un autre utilisateur. Vous n'aurez donc aucune crainte que vos chres ttes blondes puissent effacer ou dtruire par mgarde votre correspondance professionnelle ou l'ensemble des photos de famille... Enfin, ayant t prise en compte ds le dpart, la scurit sait se rendre trs discrte sur les systmes Unix, et bien que parfaitement fonctionnelle, elle n'ennuie pas l'utilisateur et reste facilement configurable. Ces deux aspects sont fondamentaux, car du coup, l'utilisateur n'a pas la tentation - ni le besoin - de tout dsactiver pour faire fonctionner ses applications ! En rsum, la scurit sous Linux, c'est : une fonctionnalit part entire, qui est parfaitement intgre dans le systme ; un moyen de se protger contre ses propres erreurs ainsi que celles des autres utilisateurs ; une facilit d'utilisation et une transparence qui la rendent utilisable en pratique sans perturber le travail de l'utilisateur. 4.2.2. Notion d'utilisateur et d'administrateur Linux dispose de plusieurs modles de scurit mais, historiquement, la scurit se base sur la notion d'utilisateur. Nous allons donc nous intresser ici la notion d'utilisateur, et voir comment cette notion peut tre utilise pour mettre en pratique les contrles de scurit du systme. Comme vous le savez sans doute dj, Linux est un systme multi-utilisateurs. Cela signifie que plusieurs personnes peuvent utiliser l'ordinateur simultanment (et pas uniquement les unes la suite des autres), et que le systme se charge de faire respecter la loi entre elles. Le systme protge les donnes de chaque utilisateur des actions que peuvent effectuer les autres utilisateurs. Il veille galement partager quitablement les ressources de la machine entre les utilisateurs, tant au niveau de la puissance de calcul qu'au niveau de la mmoire, du disque, des imprimantes, etc. Note : Si vous vous demandez comment plusieurs personnes peuvent se partager le clavier et l'cran et ainsi utiliser l'ordinateur en mme temps, la rponse est simple : ils ne le peuvent pas. Par contre, il est possible que plusieurs personnes soient connectes l'ordinateur via le rseau, utilisant d'autres claviers et d'autres crans (on appelle un couple clavier/cran un terminal ). Il est de plus thoriquement possible de connecter plusieurs claviers, souris et crans une mme unit centrale, mme si ces configurations sont encore trs rares et non standards. Les utilisateurs peuvent galement lancer des programmes en arrire plan, et laisser ces programmes tourner mme lorsqu'ils ne sont plus DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 91
connects l'ordinateur. videmment, cela ncessite que les programmes ainsi lancs ne soient pas interactifs. Autrement dit, ils doivent tre capable de fonctionner sans intervention de celui qui les a lancs. Ne croyez pas que ce dernier cas de situation est extrmement rare. En effet, le systme utilise des tches qui tournent en arrire plan dans des comptes ddis et diffrents du vtre, afin de prendre en charge certaines fonctionnalit ou de raliser des oprations de maintenance. En interne, le systme affecte un numro unique chaque utilisateur afin de pouvoir l'identifier. Ce numro d'utilisateur est dfini lors de la cration de son compte dans le systme, et ne peut tre modifi par la suite. Ainsi, toute action effectue dans le systme peut tre rattache un utilisateur particulier. L'utilisation du systme requiert donc que chaque utilisateur s'identifie au niveau du systme avant toute autre opration. Gnralement, cela se fait en indiquant son nom d'utilisateur, que l'on appelle classiquement le login . Bien entendu, afin d'viter qu'un utilisateur puisse usurper l'identit d'un autre utilisateur, le systme exige que l'utilisateur fournisse un mot de passe aprs s'tre identifi pour s'authentifier. La scurit du systme se base alors, lorsqu'une opration est excute, sur l'identit de l'utilisateur qui ralise cette commande et sur les droits dont cet utilisateur dispose sur les objets que cette commande doit manipuler. Par exemple, la suppression d'un fichier systme ne peut pas tre ralise par un utilisateur lambda, parce que cet utilisateur n'a pas les droits de suppression (ni de modification d'ailleurs, et parfois mme de lecture) sur ce fichier. L'administration du systme lui-mme revient la charge d'un utilisateur particulier. Cet utilisateur, classiquement nomm root , a virtuellement tous les droits sur le systme. C'est ce qu'on appelle l'administrateur du systme, ou encore le super utilisateur. En interne, le super utilisateur est identifi par le numro 0, qui lui est rserv. Ainsi, seul l'utilisateur dont le numro est 0 peut modifier les fichiers de configuration du systme. Note : Bien entendu, travailler sous l'identit du super utilisateur est extrmement dangereux, car ds lors tous les mcanismes de scurit du systme sont dsactivs. Une erreur de manipulation avec cette identit peut donc tre fatale et dtruire compltement le systme ! C'est pour cette raison que la plupart des distributions imposent de dfinir un compte utilisateur standard en plus du compte root, et que vous ne devriez travailler que sous ce compte. Ce n'est pas une restriction, c'est tout simplement pour votre bien. Ne vous inquitez pas, comme il l'a dj t dit plus haut, vous n'avez quasiment jamais besoin des droits administrateurs pour travailler sous Linux, parce que les applications sont en gnral conues ds le dpart pour tre utilisables dans des comptes restreints. Alors n'ayez aucune crainte, et respectez les bonnes manires : ne travaillez jamais sous le compte root. Les nouveaux utilisateurs de Linux qui ont fait leurs premiers pas en informatique sous Microsoft Windows ont souvent tendance considrer cette recommandation comme un faites ce que je dis, pas ce que je fais et croient donc que les utilisateurs chevronns ne la respectent pas. Qu'ils se dtrompent, la plupart des utilisateurs de Linux respectent cette rgle en permanence ! Ce n'est pas parce que ce n'est pas votre habitude que cette recommandation est un on-dit . D'ailleurs, elle est tellement importante que certaines distributions dsactivent tout bonnement le compte administrateur. Il est donc tout simplement impossible de se connecter sous ce compte, mme si l'on est la personne qui a install le systme ! Bien entendu, dans ce cas, les oprations d'administration sont toutes identifies et ncessitent de fournir le mot de passe administrateur pour tre excutes. En rsum, les mcanismes de scurit bass sur la notion d'utilisateur fonctionnent selon les principes suivants : DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 92
l'utilisateur doit s'identifier (gnralement, en fournissant son identifiant d'utilisateur, ou login ) et s'authentifier (classiquement en fournissant son mot de passe, ou password ) lorsqu'il se connecte l'ordinateur ; le noyau conserve pour chaque processus que l'utilisateur lance l'identit de cet utilisateur ; le noyau contrle les droits de l'utilisateur chaque accs d'une ressource de chaque programme de cet utilisateur (en particulier, comme nous allons le voir plus loin, au niveau des fichiers) ; le noyau assure une indpendance totale des processus, tant au niveau des zones de mmoire utilises qu'au niveau de l'accs aux ressources de la machine. Un processus ne peut donc, par dfaut, ni lire, ni crire dans la mmoire d'un autre processus, et les ressources de calcul ou d'entre/sortie sont partages entre les diffrents processus par les mcanismes du multitche. 4.2.3. La scurit au niveau du systme de fichiers Nous avons vu que le noyau contrlait les droits de l'utilisateur vis vis des ressources qu'il manipulait pour chaque processus qu'il excute. En particulier, l'accs chaque fichier est contrl lors de l'ouverture de ce fichier par les processus de l'utilisateur. Ainsi, les donnes de chaque utilisateur sont protges par le systme, ainsi que les fichiers du systme lui-mme. De plus, comme l'accs aux priphriques se fait gnralement par l'intermdiaire de fichiers spciaux, les accs aux ressources matrielles sont galement contrls via les mcanismes de scurit du systme de fichiers. Il est donc important de comprendre comment les systmes de fichiers grent la scurit. 4.2.3.1. Les droits sur les fichiers Les systmes de fichiers dfinissent, pour chaque fichier, les droits auquel un utilisateur peut prtendre. Ces droits comprennent la possibilit de lire ou crire un fichier, d'accder ou non une ressource ou d'excuter un programme. En pratique, chaque utilisateur peut dfinir les droits qu'il veut se donner sur ses propres fichiers, et surtout les droits qu'il veut donner aux autres utilisateurs du systme sur ses fichiers. Par exemple, il peut protger un fichier auquel il tient particulirement en lecture seule, afin d'viter de le dtruire par inadvertance. L'administrateur peut galement crer un ou plusieurs groupes d'utilisateurs, afin que les utilisateurs puissent donner des droits spcifiques aux utilisateurs de ces groupes sur leurs fichiers. En pratique, cela se fait en fixant le groupe propritaire du fichier, et en fixant les droits spcifiques ce groupe sur le fichier. Il est donc possible de dfinir les droits sur un fichier trois niveaux diffrents : au niveau du propritaire du fichier (par dfaut, l'utilisateur qui l'a cr) ; au niveau du groupe propritaire du fichier (par dfaut, les fichiers crs par les utilisateurs appartiennent au groupe users ) ; au niveau de tous les autres utilisateurs (c'est--dire les utilisateurs qui ne sont ni le propritaire du fichier, ni les utilisateurs du groupe du fichier). En pratique, les droits des fichiers sont reprsents par une srie de lettres indiquant les droits de chacun des niveaux que l'on vient de voir. Le droit de lecture est reprsent par la lettre 'r' (pour Read only ), le droit d'criture par la lettre 'w' (pour Writeable ), et le droit d'excution par la lettre 'x' (pour eXecutable ). Le droit de lecture correspond la possibilit d'ouvrir et de consulter un fichier, ou de lister le contenu d'un rpertoire. Le droit d'criture correspond la possibilit de modifier un fichier, ou de crer ou supprimer un fichier d'un rpertoire. Enfin, le droit d'excution correspond la possibilit d'excuter un fichier contenant un programme, ou d'entrer dans un rpertoire. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 93
Par exemple, la liste des droits sur un fichier lisezmoi.txt appartenant un hypothtique utilisateur Jean Dupont (dont le login serait jean) se prsente comme suit dans la sortie de la commande ls -l lisezmoi.txt (qui, comme on le verra plus loin, permet d'afficher les informations de ce fichier) : -rw-r--r-- 1 jean users 444 2006-12-10 08:42 lisezmoi.txt
Ce fichier appartient bien l'utilisateur jean et au groupe users et a une taille de 444 octets. Les droits sont affichs au dbut de la ligne. Le premier groupe de droit (rw-) indique que l'utilisateur peut lire et crire le fichier, mais pas l'excuter. En effet, le tiret (-) indique que le droit d'excution n'est pas donn. Les deuxime et troisime groupes de droits (r-- tous les deux) indiquent respectivement que les utilisateurs du groupe users et tous les autres utilisateurs n'ont que le droit de lecture. Le premier tiret au dbut de la ligne signifie que le fichier n'est pas un rpertoire, dans le cas contraire il serait remplac par la lettre 'd' (pour Directory ). Note : On notera que le fait d'avoir le droit d'criture sur un fichier ne donne pas le droit de le supprimer (cependant, on peut le vider !). Pour cela, il faut avoir le droit d'criture sur le rpertoire contenant ce fichier. De mme, il est possible d'obtenir la liste des fichiers d'un rpertoire sans pouvoir s'y dplacer, ou encore de modifier un fichier sans pouvoir le lire. Comme on le voit, les droits d'accs aux fichiers et aux rpertoires sont trs souples. Par dfaut, lors de la cration d'un fichier par un utilisateur, les droits de lecture et d'criture sont donns cet utilisateur, et seuls les droits de lecture sont donns au groupe du fichier et aux autres utilisateurs. Ainsi, tout le monde peut lire le fichier, mais seul son propritaire peut le modifier. Cela correspond l'usage classique sur un systme multiutilisateur o les utilisateurs se connaissent et n'ont pas de fichiers confidentiels. Dans le cas contraire, l'utilisateur devra retirer les droits de lecture pour les autres utilisateurs (nous verrons comment faire cela plus loin). Note : Comme vous pouvez le constater, les droits d'excution ne sont pas donns par dfaut, mme pour les fichiers binaires. Ainsi, le systme ne se base pas sur le contenu du fichier, et, comme on l'a vu, encore moins sur son extension, pour dterminer si un fichier est excutable ou non. Pour qu'un fichier soit excutable, il faut lui donner explicitement les droits d'excution ! Cela n'a l'air de rien, mais cette contrainte est un facteur de scurit extrmement important de nos jours. En effet, la plupart des virus de mail ne sont en fait rien d'autres que des chevaux de Troie transfrs en pice jointe, et qui ne peuvent s'excuter que si l'utilisateur les lance explicitement. Sous Windows, le simple fait de double-cliquer sur une pice jointe dont l'extension est excutable lance effectivement le programme (c'est pour cela que les pices jointes de ce type sont souvent filtres maintenant). Sous Unix et Linux, cela ne fait strictement rien, mme si c'est un programme, car pour l'excuter, il faut d'abord l'enregistrer, modifier ses droits d'excution explicitement, et l'excuter. Ainsi, un utilisateur non averti n'a quasiment aucune chance de lancer un tel cheval de Troie par mgarde... 4.2.3.2. Notion d'ACL La notion de groupe d'utilisateurs que l'on vient de voir est gnralement utilise pour dfinir des classes d'utilisateurs, et attribuer un peu plus de privilges que les utilisateurs normaux n'en disposent aux utilisateurs de ces classes, selon les ncessits. Par exemple, l'administrateur peut n'autoriser l'accs au lecteur de CD-ROM qu' quelques utilisateurs, en modifiant les droits sur le fichier spcial de priphrique permettant d'accder au lecteur de CD- ROM. Premirement, il cre un groupe d'utilisateurs cdrom et affecte le fichier spcial de priphrique du CD-ROM ce groupe. Ensuite, il restreint les droits d'accs ce fichiers pour que seuls les membres de ce groupe puisse y accder. Enfin, il place les utilisateurs autoriss accder au CD-ROM dans le groupe en question. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 94
Toutefois, cette technique est relativement contraignante pour les utilisateurs, parce que la cration d'un nouveau groupe d'utilisateurs est une opration privilgie que seul l'administrateur du systme peut raliser d'une part, et parce qu'un utilisateur ne peut changer le groupe propritaire d'un fichier que vers un groupe dont il fait lui-mme partie, d'autre part. Enfin, un mme fichier ne peut appartenir qu' un seul groupe, et crer un groupe pour rassembler tous les utilisateurs de deux groupes n'est pas une solution trs lgante. C'est pour cette raison que les systmes de fichiers modernes intgrent la notion d'ACL (abrviation de l'anglais Access Control List , c'est--dire les listes de contrle d'accs). Les ACL sont des listes d'informations dcrivant les droits d'accs aux fichiers. Avec les ACLs, les droits ne sont pas dfinis pour chaque catgorie d'utilisateurs (propritaire, groupe et autres), mais de manire plus fine, fichier par fichier, pour des utilisateurs et des groupes varis. De plus, les ACLs peuvent tre manipules par le propritaire du fichier, donc sans avoir recours aux droits administrateur, ce qui rsoud le problme des groupes. Note : La contrepartie de cette facilit est qu'il n'est pas toujours vident de contrler la scurit de manire globale avec les ACLs, puisqu'on ne peut plus retirer les droits d'un utilisateur sur tout un jeu de fichiers appartenant un mme groupe simplement en le supprimant de la liste des utilisateurs de ce groupe. Il n'est donc pas recommand d'utiliser les ACLs pour dfinir les droits sur les fichiers systmes, et de ne conserver cette fonctionnalit que pour que les utilisateurs puissent dfinir des droits plus fins sur leurs propres fichiers. 4.2.3.3. Les attributs spciaux des fichiers Nous avons vu dans les sections prcdentes que la notion d'utilisateur, couple avec les droits sur les fichiers, permettait au noyau de fournir une scurit sur les fichiers des utilisateurs et du systme. En particulier, les processus lancs par l'utilisateur s'excutent en son nom, et sont soumis aux mmes restrictions que l'utilisateur qui les a lancs. Il existe toutefois quelques programmes qui doivent faire exceptions cette rgle. Il s'agit gnralement de programmes qui ont besoin des droits administrateurs pour raliser une opration de reconfiguration sur le compte de l'utilisateur. C'est en particulier le cas de quelques commandes systmes (comme passwd, qui permet de changer de mot de passe), qui peuvent tre lances par les utilisateurs mais qui doivent s'excuter au nom du systme (dans le compte root). Ces programmes sont bien entendu raliss avec un grand soin, de telle sorte que l'on peut tre sr que l'utilisateur ne peut pas les utiliser dans le but de raliser une opration laquelle il n'a pas droit dans le compte administrateur. De ce fait, il est impossible un utilisateur de violer les rgles de scurit du systme. Pour parvenir ce comportement, les systmes de fichiers utilisent des attributs spciaux sur les fichiers excutables de ces programmes. Ces attributs viennent en complment des droits d'accs que l'on a prsents dans les sections prcdentes. Le premier de ces attributs est le bit setuid (qui est l'abrviation de l'anglais SET User IDentifier ). Il ne peut tre plac qu'au niveau des droits du propritaire sur le fichier. Il permet d'indiquer que le fichier est excutable, et que lorsque le programme qu'il contient est lanc par un utilisateur, le processus correspondant s'excute avec les droits du propritaire du fichier et non pas avec ceux de l'utilisateur qui l'a lanc. Cependant, le systme conserve tout de mme le numro de l'utilisateur rel qui a lanc le processus en interne, ce qui fait que le programme peut savoir par qui il a t lanc et au nom de qui il s'excute effectivement. Au final, un processus dispose donc toujours de deux numros d'utilisateur : DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 95
le numro de l'utilisateur rel ( real user id en anglais), qui est le numro de l'utilisateur qui a lanc le programme ; le numro de l'utilisateur effectif ( effective user id en anglais), qui est le numro de l'utilisateur avec les droits duquel le processus fonctionne. Le bit setuid permet donc simplement d'affecter le numro du propritaire du fichier au numro d'utilisateur effectif du processus lorsqu'il est lanc. Le fait de conserver le numro de l'utilisateur rel permet au programme de raliser des vrifications de scurit additionnelles. Par exemple, la commande passwd, qui permet de changer le mot de passe d'un utilisateur, a besoin des droits de l'utilisateur root pour enregistrer le nouveau mot de passe. Il dispose donc du bit setuid pour que tous les utilisateurs puissent l'utiliser. Cependant, mme s'il s'excute au nom de l'utilisateur root, il ne doit pas permettre n'importe qui de changer le mot de passe des autres utilisateurs : seul l'utilisateur root a le droit de faire cette opration. Il utilise donc le numro de l'utilisateur rel qui a lanc la commande pour savoir si c'est bien l'utilisateur root qui l'a lanc. Le bit setuid est l'attribut le plus couramment utilis, essentiellement pour certaines commandes systmes. Il est reprsent par la lettre 's' (comme Setuid ), et il remplace le droit d'excution ('x') des fichiers pour le propritaire des fichiers (rappelons que le bit setuid implique que le fichier est excutable). Il n'a aucune signification pour les rpertoires. Le deuxime attribut spcial est le bit setgid (qui est l'abrviation de l'anglais SET Group IDentifier ). Ce bit fonctionne un peu de la mme manire que le bit setuid, ceci prs qu'il fixe le numro de groupe effectif du processus lanc celui de son fichier excutable. Cet attribut est galement reprsent par la lettre 's', et remplace le droit d'excution ('x') pour les utilisateurs du groupe auquel appartient le fichier excutable. De plus, et contrairement au bit setuid, ce bit a une signification pour les rpertoires. Un rpertoire disposant du bit setgid permet de faire en sorte que tous les fichiers qui sont crs dans ce rpertoire se voient automatiquement attribus le mme groupe que le rpertoire. Ce bit est relativement peu utilis. Enfin, il existe un troisime attribut, le bit sticky . Cet attribut remplace l'attribut excutable pour les autres utilisateurs que le propritaire du fichier 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 signification 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. Afin de ne pas consommer la mmoire de manire permanente, le code du programme est plac automatiquement dans le swap s'il n'est 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 signification 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 d'criture sur le rpertoire, il ne peut pas supprimer tous les fichiers de ce rpertoire. Les seuls fichiers qu'il est autoris supprimer sont ses propres fichiers. Bien entendu, il est toujours possible d'ajouter des fichiers dans le rpertoire en question. Les questions qui se posent videmment sont les suivantes. Est-ce qu'un particulier a besoin de tout cela ? Ces fonctionnalits ne sont-elles pas rserves aux serveurs ? Est-ce qu'on ne risque pas de perdre beaucoup de temps pour dfinir 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. Heureusement, les rponses sont simples. Rappelons pour commencer qu'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 les erreurs des utilisateurs, voire l'utilisateur lui-mme de ses propres erreurs. Ainsi, avec Linux, on peut faire n'importe quoi, on est certain que le systme restera intact. Cette scurit est telle que, finalement, Linux est justement le systme d'exploitation idal pour apprendre l'informatique quelqu'un : savoir que le systme protge tout ce qui est DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 96
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 configuration est lmentaire. Toutes les distributions s'installent de telle sorte que le systme se protge des utilisateurs, et que ceux-ci soient indpendants les uns des autres. En pratique, les utilisateurs n'ont tout simplement pas se soucier de tous ces attributs de fichiers. Mme l'administrateur laisse souvent les attributs par dfaut dfinis par les distributions, car ils correspondent la majorit des besoins de scurit. 4.3. Fonctionnalits des systmes de fichiers Les systmes de fichiers Unix sont des systmes de fichiers extrmement volus, qui fournissent la fois d'excellentes performances, une grande scurit, et des fonctionnalits puissantes. Peu d'utilisateurs savent exactement quels sont les services qu'ils peuvent fournir en gnral, et beaucoup croient que les systmes de fichiers savent juste stocker des donnes dans des fichiers organiss dans une hirarchie de rpertoires. Mais nous allons voir qu'ils permettent de faire beaucoup mieux que cela ! 4.3.1. Le systme de fichiers virtuel Pour commencer, il faut prciser que Linux ne travaille pas directement avec les systmes de fichiers physiques. En effet, il interpose systmatiquement un systme de fichiers intermdiaire, nomm Virtual File System ( VFS en abrg), qui permet aux applications d'accder diffrents systmes de fichiers de manire indpendante de leur nature et de leur structure interne. Le systme de fichiers virtuel ne fait pas grand chose en soi : il se contente de transfrer les requtes des applications vers les systmes de fichiers rels. Il fournit donc une interface bien dfinie pour les applications, que celles-ci doivent utiliser. Les systmes de fichiers rels, quant eux, doivent simplement fournir les services dont le systme de fichiers virtuel a besoin. Tous les systmes de fichiers rels ne disposent toutefois pas forcment de toutes les fonctionnalits demandes par le systme de fichiers virtuel. Dans ce cas de configuration, la requte de l'application dsirant effectuer l'opration manquante chouera tout simplement. Comme on peut le constater, cette architecture est modulaire. Et comme on l'a vu pour l'architecture du systme en gnral, cela apporte beaucoup de bnfices. Les plus vidents sont indiqus ci-dessous : Linux est capable de grer plusieurs systmes de fichiers rels. La seule condition est qu'ils doivent tous fournir les services de base exigs par le systme de fichiers virtuel ; les applications peuvent utiliser plusieurs de ces systmes de fichiers rels de manire uniforme, puisqu'elles n'utilisent que le systme de fichiers virtuel. Cela simplifie leur programmation, et permet d'viter autant de bogues potentiels ; chaque systme de fichiers rel tant indpendant des autres, il ne perturbe pas leur fonctionnement. En particulier, un systme de fichiers corrompu ne corrompt pas les autres. Figure 4-2. Le systme de fichiers virtuel
Avec cette architecture, un grand nombre de systmes de fichiers ont t dvelopps pour Linux. Parmi ces systmes de fichiers, on retrouve les plus connus, savoir : DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 97
le systme de fichiers EXT2, qui est le systme de fichiers natif de Linux ; le systme de fichiers EXT3, qui est une volution du systme de fichiers EXT2 capable de prendre en charge galement les mcanismes de journalisation (voir la note ci-dessous pour savoir ce qu'est la journalisation d'un systme de fichiers) ainsi que les blocs dfectueux sur le support physique ; le systme de fichiers ReiserFS, qui supprime la notion de bloc disque et qui est galement journalis ; les systmes de fichiers FAT, FAT32 et FAT32X (utiliss par les systmes DOS et Windows, ainsi que par les clefs USB et les cartes mmoire) ; le systme de fichiers NTFS (utilis par Windows NT, Windows 2000 et XP), en lecture et partiellement en criture (seul l'crasement des donnes existantes dans un fichier, sans redimensionnement, est autoris l'heure actuelle) ; le systme de fichiers 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 fichiers Joliet (extensions de Microsoft pour Windows 95) et Rock Ridge (extensions utilises par tous les systmes Unix) ; le systme de fichiers NFS (utilis pour distribuer sur un rseau un systme de fichiers). Note : La journalisation consiste crire sur le disque toutes les oprations en cours chaque instant. Ainsi, lorsqu'un redmarrage intempestif se produit, le systme peut ramener rapidement la structure de donnes du systme de fichiers dans un tat cohrent. La journalisation accrot donc encore la fiabilit du systme de fichiers. Linux gre galement d'autres systmes de fichiers natifs ou utiliss par d'autres systmes d'exploitation (Unix ou non). Il permet mme d'intgrer des pseudo systmes de fichiers gnrs par le noyau. Ces systmes de fichiers sont compltement fictifs : leur structure et leurs fichiers sont gnrs dynamiquement par le noyau lorsqu'une application y accde. Ils sont principalement utiliss pour fournir aux applications des informations que le noyau met leur disposition, pour raliser des systmes de fichiers en mmoire, et pour grer l'ensemble des fichiers spciaux de priphriques installs sur l'ordinateur. Les systmes de fichiers natifs de Linux sont de loin les systmes de fichiers les plus fonctionnels, les plus fiables et les plus courants. Le choix du systme de fichiers dpend donc gnralement de l'usage que l'on en fera, certains systmes de fichiers tant plus appropris pour certains types d'utilisation. Si l'on recherche essentiellement la stabilit, je recommande le systme de fichiers EXT3, car c'est pour l'instant le seul systme de fichiers capable de prendre en compte les blocs dfectueux sur le support physique. Quoi qu'il en soit, on ne pourra installer Linux que sur un systme de fichiers de type Unix. Ces systmes de fichiers sont tous plus fonctionnels et plus performants que les systmes de fichiers FAT. Leurs principales fonctionnalits sont les suivantes : les accs aux fichiers sont rapides, mme plus rapides que les systmes de fichiers bass sur la FAT sous Windows, qui pourtant ne grent pas les droits des utilisateurs ni les autres fonctionnalits avances des systmes de fichiers Unix ; la fragmentation des fichiers est quasiment inexistante. En fait, la fragmentation des fichiers existe effectivement, mais les algorithmes utiliss par les systmes de fichiers pour allouer les blocs du disque dur lors de l'criture dans un fichier sont suffisamment volus pour viter qu'elle ne se produise de manire trop importante. De plus, les algorithmes de lecture anticipe des blocs et de mise en mmoire cache des donnes lues du sous-systme d'entre/sortie masquent compltement les latences dues la fragmentation. De ce fait, en pratique, la fragmentation n'a pas d'impact sur les performances du systme, et peut tre tout simplement ignore. Pour donner un ordre de grandeur, aprs installation, suppression, manipulation d'un grand nombre d'applications et de petits fichiers sur une partition EXT2 de 800 Mo, le tout DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 98
ralis par plusieurs processus fonctionnant en mme temps, la fragmentation reste infrieure 1% sur 57571 fichiers (sur un total de 249856 fichiers que le systme de fichiers pourrait contenir) ; quant la fiabilit, elle est gre grce un stockage redondant des principales structures de donnes internes. Ainsi, si une erreur apparat dans le systme de fichiers, les parties dfectueuses peuvent tre reconstitues partir des informations sauvegardes. Cette rparation est ralise automatiquement chaque redmarrage de la machine si ncessaire. 4.3.2. Liens symboliques et liens physiques Une fonctionnalit intressante fournie par les systmes de fichiers Unix est la possibilit de raliser des liens sur des fichiers ou des rpertoires. Un lien est une rfrence un fichier 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 fichier au niveau de la structure mme du systme de fichiers, et les liens symboliques, qui ne sont rien d'autre qu'un fichier 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 fichiers que celui dans lequel ils sont crs. La limitation sur les rpertoires permet d'viter de construire des cycles dans la structure du systme de fichiers. Quant la limitation la frontire des systmes de fichiers, elle est obligatoire puisque les liens physiques sont grs directement au niveau de la structure du systme de fichiers. En revanche, ils prsentent des avantages certains : le dplacement des cibles ne les perturbe pas si celles-ci restent dans le mme systme de fichiers, 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 fichier partagent la mme structure de donnes du systme de fichiers, et celle-ci n'est rellement dtruite qu' la destruction du dernier lien physique. En fait, toute entre de rpertoire est un lien physique sur le contenu du fichier. Le fait d'avoir plusieurs liens physiques sur les mmes donnes correspond disposer de plusieurs entres de rpertoire donnant accs aux mmes donnes dans le systme de fichiers. Il serait possible de crer des liens physiques dans un systme de fichiers FAT, mais ils seraient interprts comme des rfrences croises par les outils de vrification de disque. Le systme de fichiers 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 fichiers ou des rpertoires se trouvant dans d'autres systmes de fichiers que le leur. C'est pour cette raison qu'ils sont trs couramment utiliss (en fait, les liens physiques ne sont quasiment pas utiliss, parce qu'il est trs courant de faire un lien sur un rpertoire, ce que seuls les liens symboliques savent faire). En revanche, ils sont extrmement dpendants de leur cible : si elle est supprime ou dplace, tous les liens symboliques qui s'y rfrent deviennent invalides. La rfrence sur le fichier ou le rpertoire cible contenue dans les liens symboliques peut tre soit relative l'emplacement de leur cible, soit absolue dans le systme de fichiers. Chacune de ces mthodes a ses avantages et ses inconvnients : les liens symboliques qui contiennent des rfrences relatives ne sont pas briss lors d'un dplacement de la cible, pourvu qu'ils soient dplacs galement et restent la mme position relative par rapport celle-ci dans la hirarchie du systme de fichiers. En revanche, ils sont briss s'ils sont dplacs et que la cible ne l'est pas. Les liens symboliques utilisant des rfrences absolues sont systmatiquement briss lorsque la cible est dplace, mais ils restent valides lorsqu'ils sont eux-mmes dplacs. Comme en gnral c'est le comportement que l'on DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 99
recherche, les liens symboliques sont toujours crs avec des rfrences absolues, mais vous tes libre de faire autrement si vous en ressentez le besoin. Sachez cependant que dplacer une source de donnes n'est jamais une bonne ide. Le tableau suivant rcapitule les avantages et les inconvnients des diffrents types de liens : Tableau 4-1. Caractristiques des liens physiques et symboliques Fonctionnalit Liens physiques Liens symboliques Rfrence relative Rfrence absolue Peuvent tre dplacs Oui Avec la cible Oui Suivent la cible Oui Si dplacs avec elle Non Grent la suppression de la cible Oui Non Non Peuvent rfrencer des cibles sur un autre systme de fichiers Non Oui Oui Peuvent rfrencer des rpertoires Non Oui Oui 4.3.3. Autres fonctionnalits Les systmes de fichiers de Linux fournissent galement des fonctionnalits qui peuvent tre intressantes, mais que l'on utilise gnralement moins souvent. La premire de ces fonctionnalits est les quotas. Ceux-ci permettent de dfinir la proportion d'espace disque que chaque utilisateur peut consommer dans le systme de fichiers. Ainsi, il est possible de restreindre les utilisateurs et d'viter qu'un seul d'entre eux ne consomme l'ensemble des ressources disque. En pratique, cette fonctionnalit n'est pas d'une grande utilit pour un particulier, qui souvent est le seul utilisateur de sa machine. Note : Sachez toutefois que les systmes de fichiers rservent gnralement une petite partie (environ 5%) de l'espace disque pour l'administrateur du systme, afin de s'assurer que celui-ci pourra toujours effectuer les oprations de maintenance en cas de saturation du systme de fichiers. Cet espace libre est galement utilis pour les mcanismes de dfragmentation automatique des systmes de fichiers. Les systmes de fichiers permettent galement d'enregistrer des informations complmentaires sur les fichiers, afin par exemple de pouvoir les marquer pour un traitement spcifique. Ces informations complmentaires sont stocks sous la formes d'attributs , pouvant contenir virtuellement n'importe quel type d'information. Certains systmes de fichiers utilisent cette fonctionnalit pour implmenter les mcanismes de scurit bass sur les ACLs. Enfin, les systmes de fichiers Unix sont galement capables de prendre en charge ce que l'on appelle les fichiers trous ( sparse files en anglais). Ces fichiers sont des fichiers contenant des donnes spares par de grands espaces vides. On peut donc dire qu'ils sont presque vides . Pour ces fichiers, il est vident qu'il est inutile de stocker les espaces vides sur le disque. Les systmes de fichiers mmorisent donc tout simplement qu'ils contiennent des trous, et ils ne stockent que les donnes relles et la position des trous avec leurs tailles. Cela constitue une conomie de place non ngligeable. Les applications classiques des fichiers presque vides sont les bases de donnes, qui utilisent souvent des fichiers structurs contenant relativement peu de donnes effectives, et les images disque pour installer des systmes d'exploitation dans des machines virtuelles.
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 100
4.4. Structure du systme de fichiers Nous allons prsent nous intresser l'organisation du systme de fichiers de Linux. Ce systme de fichiers contient un certain nombre de rpertoires et de fichiers standards, qui ont chacun une fonction bien dfinie. 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 d'un systme un autre, et les utilisateurs ne sont pas dpayss lorsqu'ils changent de machine (en fait, cette structure est peu prs la mme pour tous les systmes Unix, ce qui donne encore plus de poids l'argument prcdent). Cette organisation standard du systme de fichiers a t conue de telle manire que les donnes et les programmes sont placs chacun leur place, et qu'ils puissent tre facilement intgrs dans un rseau. L'intgration dans un rseau sous-entend que les fichiers des programmes peuvent tre partags par les diffrentes machines de ce rseau, ce qui permet d'conomiser beaucoup de place. De plus, il est possible d'accder la plupart des ressources du systme grce une interface uniforme. En particulier, il est possible d'accder tous les priphriques installs sur l'ordinateur par l'intermdiaire de fichiers spciaux, et on peut rcuprer des informations sur le systme mises disposition par le noyau simplement en lisant des fichiers gnrs par un pseudo systme de fichiers. Le tableau suivant dcrit les principaux lments de l'arborescence du systme de fichiers de Linux. Tableau 4-2. Hirarchie standard du systme de fichiers Rpertoire Signification / Rpertoire racine. Point de dpart de toute la hirarchie du systme de fichiers. Le systme de fichiers contenant ce rpertoire est mont automatiquement par le noyau pendant l'amorage du systme. Ce systme de fichiers est appel systme de fichiers racine ( root en anglais). /boot/ Rpertoire contenant le noyau de Linux et ses informations de symboles. Ce rpertoire est parfois le point de montage d'un systme de fichiers de trs petite taille, ddi au noyau. Dans ce cas, il est recommand que le systme de fichiers correspondant soit mont en lecture seule. On notera que sur certains systmes, le noyau reste plac dans le rpertoire racine. Cette technique n'est pas recommande, car on ne peut pas monter en lecture seule la partition racine en utilisation normale du systme. /boot/vmlinuz Noyau compress de Linux. Les noyaux compresss se dcompressent automatiquement lors de l'amorage du systme. Sur certains systmes, le noyau est encore plac dans le rpertoire racine du systme de fichiers. /boot/System.map Fichier systme contenant la liste des symboles du noyau. Ce fichier 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) afin de donner le nom de la fonction du noyau dans lequel un processus se trouve bloqu lorsqu'il est en attente de la fin d'une opration que le noyau doit excuter pour lui. /dev/ Rpertoire contenant tous les fichiers spciaux permettant d'accder aux priphriques. Comme on l'a vu, hormis les interfaces rseau, les priphriques sont gnralement accessibles au travers de fichiers spciaux. Ces fichiers permettent l'envoi et la rception des donnes vers les priphriques associs, et ce de manire uniforme. Tous ces fichiers spciaux sont tous placs dans le rpertoire /dev/. Gnralement, le rpertoire /dev/ est un systme de fichiers virtuel (c'est-- dire un systme de fichiers qui est compltement gr en mmoire par le noyau), qui est rempli dynamiquement par le systme en fonction du matriel install. Le rpertoire /dev/ ne contient donc que les fichiers spciaux des priphriques pour lesquels le noyau dispose effectivement d'un pilote de priphrique charg. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 101
Rpertoire Signification Toutefois, il est galement possible que ce rpertoire soit effectivement pr-rempli avec les fichiers spciaux de la plupart des priphriques existants sur le march, mme ceux qui ne sont pas physiquement prsents dans la machine. Dans ce cas, les oprations sur les fichiers spciaux des priphriques non installs seront tout simplement refuses par le noyau. Ce type de configuration se rencontre encore assez souvent sur des installations assez anciennes. Quoi qu'il en soit, quelle que soit la technique utilise, ce rpertoire doit tre imprativement plac dans le systme de fichiers racine. /sbin/ Rpertoire contenant les commandes systmes ncessaires l'amorage et rserves l'administrateur. Ce rpertoire doit tre imprativement plac dans le systme de fichiers racine. En gnral, seul l'administrateur utilise ces commandes. /bin/ Rpertoire contenant les commandes systmes gnrales ncessaires l'amorage. Ce rpertoire doit tre imprativement plac dans le systme de fichiers racine. Tous les utilisateurs peuvent utiliser les commandes de ce rpertoire. /lib/ 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. /lib64/ Sur les systmes 64 bits bass sur une architecture x86_64 (processeurs AMD Athlon64 ou ultrieurs, ou processeurs Intel avec jeu d'instruction EMT64), rpertoire quivalent au rpertoire /lib/ pour les bibliothques 64 bits natives. Ces machines tant capables d'excuter des programmes 32 bits en plus des programmes natifs 64 bits, il est ncessaire de fournir deux jeux de bibliothques pour les deux modes de fonctionnement. Normalement, le rpertoire /lib/ devrait tre utilis pour les bibliothques natives, mais il est d'usage de continuer y placer les bibliothques 32 bits pour des raisons de compatibilit ascendante, les programmes 32 bits cherchant naturellement leurs bibliothques dans ce rpertoire. /lib32/ Sur les systmes 64 bits natifs bass sur une architecture x86_64 (processeurs AMD Athlon64 ou ultrieurs, ou processeurs Intel avec jeu d'instruction EMT64), rpertoire des bibliothques 32 bits si les bibliothques 64 bits natives sont places dans le rpertoire /lib/. Attention, sur les systmes qui utilisent ce type d'organisation, les paquetages 32 bits natifs ne peuvent pas tre installs sans modification, car ils placeraient leurs bibliothques 32 bits dans le rpertoire /lib/, qui contient dans ce cas des bibliothques 64 bits. Raliser une installation de paquetages non modifis dans ces conditions peut craser les bibliothques 64 bits natives et donc provoquer de graves dysfonctionnements. /lib/modules/ Ce rpertoire contient les modules additionnels du noyau. Les modules sont des composants logiciels du noyau, mais qui ne sont pas chargs immdiatement pendant la phase d'amorage du systme. Ils peuvent en revanche tre chargs et dchargs dynamiquement, lorsque le systme est en fonctionnement. Il est fortement recommand que ce rpertoire soit plac dans le systme de fichiers racine. /etc/ Rpertoire contenant tous les fichiers de configuration du systme. Ce rpertoire doit tre imprativement plac dans le systme de fichiers racine. /etc/X11/ Rpertoire contenant les fichiers de configuration de l'environnement graphique XWindow. /etc/rc.d/ Rpertoire contenant les scripts de dmarrage du systme. Ces scripts sont excuts lorsque le systme dmarre ou s'arrte, ainsi que lorsqu'il change de mode de fonctionnement. Il est galement possible de les excuter pour dmarrer ou arrter un service particulier. Dans certaines distributions, ces fichiers sont placs dans le rpertoire /sbin/init.d/. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 102
Rpertoire Signification /etc/opt/ Rpertoire contenant les fichiers de configuration des applications. /tmp/ Rpertoire permettant de stocker des donnes temporaires. En gnral, /tmp/ ne contient que des donnes trs phmres. Il est prfrable d'utiliser le rpertoire /var/tmp/. En effet, le rpertoire /tmp/ ne dispose pas ncessairement de beaucoup de place disponible. /usr/ Rpertoire contenant les fichiers du systme partageables en rseau et en lecture seule. /usr/bin/ Rpertoire contenant la plupart des commandes des utilisateurs et des logiciels installs. /usr/sbin/ Rpertoire contenant les commandes systmes non ncessaires l'amorage. Ces commandes ne sont normalement utilises que par l'administrateur systme. /usr/lib/ 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/lib64/ Sur les systmes 64 bits bass sur une architecture x86_64 (processeurs AMD Athlon64 ou ultrieurs, ou processeurs Intel avec jeu d'instruction EMT64), rpertoire quivalent au rpertoire /usr/lib/ pour les bibliothques 64 bits natives. La raison pour laquelle les bibliothques 64 bits natives de ces systmes n'est pas place dans le rpertoire /usr/lib/ est la mme que pour les bibliothques du rpertoire /lib64/. /usr/lib32/ Sur les systmes 64 bits natifs bass sur une architecture x86_64 et utilisant le rpertoire /usr/lib/ pour les bibliothques 64 bits natives, rpertoire contenant les bibliothques 32 bits. Les mmes prcautions d'usage que celles indiques pour le rpertoire /lib32/ s'appliquent ici. /usr/include/ Rpertoire contenant les fichiers d'en-ttes du systme pour le compilateur C/C++. Les fichiers de ce rpertoire sont utiliss pour raliser des programmes dans les langages de programmation C et C++. /usr/X11/ Rpertoire historique qui contenait l'environnement graphique X11 et ses applications sur les anciennes distributions. Dans les distributions rcentes (environnement X11 bas sur X.org de version 7.0 ou plus), X11 est prsent directement install dans le rpertoire /usr/, et ce rpertoire n'est plus conserv qu' titre de compatibilit sous la forme de liens symboliques. Ce rpertoire contient des sous-rpertoires bin/, lib/ et include/, o se trouvent les excutables de XWindow, les bibliothques et les fichiers d'en-ttes pour crer des programmes pour XWindow en C et C++. /usr/share/ Rpertoire contenant l'ensemble des donnes et des fichiers partags par les applications du systme. C'est ici que sont par exemple stockes les polices de caractres, les sons et les images utiliss par les environnements de bureau, les fonds d'cran, les fichiers d'aide ou encore les associations de fichiers avec leurs extensions. /usr/src/ Rpertoire contenant les fichiers 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. /usr/src/linux/ Sources du noyau de Linux. Il est vivement recommand de conserver les sources du noyau de Linux sur son disque, afin de pouvoir changer la configuration du systme tout moment. /usr/local/ Rpertoire contenant les programmes d'extension du systme indpendants de la distribution. Ce n'est toutefois pas le rpertoire d'installation des applications, que l'on installera en gnral dans le rpertoire /opt/. local ne signifie 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 qu'on ne trouve donc DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 103
Rpertoire Signification 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 qu'ils 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/ Rpertoire contenant les fichiers temporaires. Il est prfrable d'utiliser ce rpertoire plutt que le rpertoire /tmp/. /var/opt/ Rpertoire contenant les donnes variables des applications. /var/log/ Rpertoire contenant les traces de tous les messages systme. C'est dans ce rpertoire que l'on peut consulter les messages d'erreurs du systme et des applications. /var/spool/ Rpertoire contenant les donnes en attente de traitement. Les travaux d'impression en cours, les mails et les fax en attente d'mission, les travaux programms en attente d'excution sont tous stocks dans ce rpertoire. /var/locks/ 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 fichier de verrou dans ce rpertoire. /var/cache/ Rpertoire contenant les donnes de rsultats intermdiaires des applications. Les applications qui doivent stocker des rsultats intermdiaires doivent les placer dans ce rpertoire. /opt/ Rpertoire historique contenant les applications qui ne font pas rellement partie du systme d'exploitation. En particulier, sur les anciennes distributions, le gestionnaire de bureau KDE tait install dans le sous-rpertoire /opt/kde/, mais prsent il est considr comme partie intgrante du systme et est donc install directement dans le rpertoire /usr/ sur les distributions rcentes. /home/ Rpertoire contenant les rpertoires personnels des utilisateurs. Il est fortement recommand de placer ce rpertoire dans un systme de fichiers indpendant de ceux utiliss par le systme. Cela permet de faire des sauvegardes plus facilement, et de faire les mises jour du systme de manire sre, sans craindre de perdre les donnes des utilisateurs. /root/ Rpertoire contenant le rpertoire personnel de l'administrateur. Il est donc recommand que le rpertoire personnel de l'administrateur soit plac en dehors de /home/ pour viter qu'un problme sur le systme de fichiers des utilisateurs ne l'empche de travailler. Toutefois, il est important que l'administrateur puisse travailler mme si les rpertoires /root/ et /home/root/ ne sont pas prsents. Dans ce cas, son rpertoire personnel sera le rpertoire racine. /media/ Rpertoire rserv au montage des systmes de fichiers sur priphriques amovibles (CD-ROM, disquettes, etc.). Ce rpertoire peut contenir plusieurs sous- rpertoires pour chaque priphrique amovible, afin de permettre d'en monter plusieurs simultanment. Notez qu'il est assez courant de disposer de liens symboliques dans la racine rfrenant les principaux systmes de fichiers, afin d'en simplifier l'accs. Par exemple, il est courant d'avoir un rpertoire /floppy/ rfrenant le lecteur de disquette et un rpertoire /cdrom/ rfrenant le lecteur de CD-ROM. /mnt/ Rpertoire rserv l'administrateur pour le montage temporaire des systmes de DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 104
Rpertoire Signification fichiers lors de leur maintenance (disques d'installation, disques durs externes qui ne doivent pas tre manipulables par les utilisateurs, etc.). Ce rpertoire peut contenir plusieurs sous-rpertoires pour chaque priphrique hbergeant les systmes de fichiers en question, afin de permettre d'en monter plusieurs simultanment. Notez que ce rpertoire contenait historiquement les mmes entres que le rpertoire /media/, qui a t introduit rcemment afin de sparer les oprations de montage ralises dans un but purement administratif des oprations de montage ralises dans un contexte d'utilisation normale des systmes de fichiers sur priphriques amovibles. /lost+found/ Rpertoire contenant les donnes rcupres lors de la rparation d'un systme de fichiers endommag. Ces donnes sont crites par les utilitaires de vrification et de rparation des systmes de fichiers lorsqu'ils trouvent des informations qui ne peuvent tre rattaches aucun fichier existant, ainsi, il est possible de rcuprer ces informations si elles ne sont pas dans un tat de dtrioration trop avanc. /proc/ Rpertoire contenant le pseudo systme de fichiers du noyau. Ce pseudo systme de fichiers contient des fichiers permettant d'accder aux informations sur le matriel, la configuration du noyau et sur les processus en cours d'excution. /sys/ Rpertoire contenant le pseudo systme de fichiers des gestionnaires de priphriques. Ce pseudo systme de fichiers contient des fichiers permettant d'obtenir des informations sur l'ensemble des objets du noyau, en en particulier sur l'ensemble des priphriques de l'ordinateur. Ce systme de fichiers est appel recevoir une bonne partie des informations exposes par le systme de fichiers /proc/, dont le rle se restreindra sans doute fournir des informations plus gnrales et raliser la configuration des fonctions gnrales du systme. 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 fichiers version 2.3 ( FHS en anglais). Vous pouvez consulter ce document pour une description exhaustive du systme de fichiers de Linux. Vous avez pu constater que les rpertoires bin/, lib/, include/ et src/ apparaissent rgulirement dans la hirarchie du systme de fichiers. Cela est normal : les rpertoires sont classs par catgorie d'applications et par importance. Les rpertoires bin/ contiennent en gnral les programmes, et les rpertoires lib/ les bibliothques partages par ces binaires. Cependant, les rpertoires lib/ peuvent aussi contenir des bibliothques statiques, qui sont utilises lors de la cration de programmes. En gnral, tous les systmes Unix fournissent en standard un compilateur pour gnrer ces programmes. Dans le cas de Linux, ce compilateur est gcc (pour GNU C Compiler ). La cration d'un programme ncessite que l'on dispose des fichiers sources, qui contiennent le programme crit dans un langage de programmation, des fichiers d'en-ttes, qui contiennent les dclarations de toutes les fonctions utilisables, et des fichiers de bibliothques statiques, contenant ces fonctions. Ces diffrents fichiers sont stocks respectivement dans les rpertoires src/, include/ et lib/. Les notions de sources et de compilation seront dcrites en dtail dans le Chapitre 7. Chapitre 5 : Commandes Unix de base Table des matires
5.1. Login et dconnexion 5.2. Arrt et redmarrage du systme 5.3. Pages de manuel 5.4. Oprations de base sur les rpertoires 5.5. Notions sur les chemins Unix DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 105
5.6. Oprations de base sur les fichiers 5.7. Autres commandes utiles 5.8. vi, l'diteur de fichiers de base 5.9. Utilisation du shell bash Mais pour cela, il va falloir que vous appreniez les commandes Unix de base et la manire d'utiliser un systme Linux en ligne de commande (c'est--dire en mode texte, sans XWindow). 5.1. Login et dconnexion Comme il l'a dj t dit, Linux est un systme multi-utilisateur. Il faut donc que chacun s'identifie pour que le systme puisse fonctionner correctement. Cela est ralise lors de l'opration dite de login (du verbe anglais to log in , qui signifie s'enregistrer dans le systme). Le login consiste essentiellement taper son nom d'utilisateur, 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 d'accder au systme d'une autre manire, et la vrification du mot de passe fournit l'authenticit de l'utilisateur 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 identifier avec la ligne suivante : login: D'autres informations peuvent tre affiches avant le mot login, qui peuvent vous renseigner sur la nature du systme. Quoi qu'il en soit, vous devez taper votre nom d'utilisateur (que l'on appelle simplement login ), ou root si vous dsirez vous connecter en tant qu'administrateur. 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 n'aurez plus qu'une seule solution : dmarrer l'ordinateur partir d'une disquette systme, et faire le mnage dans le fichier de mots de passe. Cette opration n'est jamais trs agrable raliser. Conclusion : n'oubliez 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 (c'est--dire un terminal graphique). La procdure peut varier selon l'environnement utilis, mais le principe reste toujours le mme : il faut fournir son nom d'utilisateur 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 l'utilisateur local, plusieurs terminaux virtuels. Cela signifie qu'il est possible de se connecter plusieurs fois dans le systme dans des terminaux diffrents. Pour passer d'un terminal virtuel un autre, il suffit de taper les combinaisons de touches ALT+DROITE ou ALT+GAUCHE, o DROITE et GAUCHE sont respectivement les flches du curseur droite et gauche. Il est galement possible d'accder un terminal donn l'aide de la combinaison de touches ALT+Fn, o Fn est l'une 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 lorsqu'on est sous XWindow, les combinaisons ALT+Fn ont une autre signification. Elles DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 106
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 dfinie, spcialement pour XWindow : CTRL+ALT+Fn. Il suffit donc simplement d'utiliser la touche CTRL en plus de la touche ALT. L'utilisation des terminaux virtuels est trs pratique, mme pour un seul utilisateur. En effet, ceux-ci permettent de lancer plusieurs programmes simplement, raison d'un par terminal virtuel, et de s'y retrouver ainsi plus facilement. Pour ceux qui ne connaissent pas les systmes Unix, il est recommand de jouer un peu avec les terminaux virtuels afin de simuler la prsence de plusieurs utilisateurs. Ils auront ainsi un aperu de la puissance de ces systmes. Lorsqu'on a fini de travailler, il faut se dconnecter. Cette opration est trs simple pour les terminaux non graphiques, puisqu'il suffit de taper la commande suivante : logout Si d'aventure 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 l'environnement 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 l'environnement de travail, afin d'appeler 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 l'intrus. Bien entendu, ce genre de considration n'a pas autant d'importance pour un particulier que dans une entreprise ou une collectivit quelconque. 5.2. Arrt et redmarrage du systme Il faut bien comprendre que Linux, tout comme la plupart des systmes d'exploitation modernes, ne peut pas tre arrt en teignant directement l'ordinateur, comme on le faisait autrefois avec le DOS. En effet, la plupart des systmes d'exploitation utilisent une partie de la mmoire de l'ordinateur 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 qu'on appelle un tampon ( buffer en anglais), et elle sert acclrer les accs aux priphriques plus lents, que sont les disques durs et lecteurs de CD-ROM. Il va de soi qu'une requte de lecture sur des donnes dj situes en mmoire est infiniment plus rapide que si elles ne s'y trouvaient pas. Il est en revanche plus difficile de comprendre pourquoi les requtes d'criture doivent tre diffres. La raison est la suivante : le systme prfre diffrer l'criture physique sur le disque parce qu'une autre requte d'criture dans la mme zone du disque peut trs bien avoir lieu ultrieurement. Si les donnes qui n'ont pas t crites sont ainsi modifies par une requte ultrieure, il n'est 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 d'une 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 n'ont pas tre dplaces). Enfin, si les donnes qui doivent tre crites font l'objet d'une requte de lecture, il va de soi qu'elles 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 d'entres / sorties, ce qui en fait un systme extrmement performant. Le gain en performances peut facilement atteindre un facteur 3 ou 4. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 107
Le problme majeur est videmment que si l'on teint l'ordinateur brutalement, les donnes dont l'criture a t diffre sont perdues. Pire, parmi ces donnes, il est probable qu'il y ait des informations vitales pour le systme de fichiers, ce qui fait qu'il risque fort d'tre endommag. Les systmes de fichiers journaliss comme EXT3 et ReiserFS sont l'abri de ce type d'erreur en raison de l'accs transactionnel aux structures de donnes des systmes de fichiers qu'ils utilisent, et le systme parvient gnralement rparer les autres systmes de fichiers lors de la vrification qui est lance au redmarrage suivant de la machine, mais il est inutile de prendre des risques. Tout cela signifie qu'il est impratif de prvenir le systme avant de l'arrter, pour qu'il puisse crire les donnes situes dans ses tampons. L'arrt du systme est une opration qui est du ressort de l'administrateur. On ne peut donc le raliser que sous le compte root. Plusieurs commandes sont disponibles, les plus simples sont donnes ci- dessous : halt, qui permet d'arrter le systme. reboot, qui permet de le redmarrer. Ces commandes sont en fait des scripts permettant d'effectuer les oprations d'arrt 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 l'option -r permet de demander un redmarrage et non un arrt simple. Il est galement possible que votre gestionnaire de bureau vous donne le moyen d'arrter l'ordinateur par l'intermdiaire de l'interface graphique de X11. La technique utiliser dpend videmment de l'environnement 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 lorsqu'on appuie sur les touches CTRL+ALT+SUPPR simultanment dans un terminal virtuel. 5.3. Pages de manuel Maintenant que vous savez l'essentiel 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 d'obtenir de l'aide ! 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 afficher la page de manuel d'une commande, il suffit d'utiliser 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 afficher l'aide sur la commande cp, il suffit de taper :
man cp Lorsqu'une page de man est affiche, il est possible de faire dfiler son texte l'aide des touches du curseur. Pour quitter l'aide, il suffit d'appuyer sur la touche q. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 108
Les pages de man sont classes en groupes de pages thmatiques, chaque groupe tant identifi gnralement par un numro ou une lettre. Si la page de man affiche ne correspond pas celle dsire, c'est qu'une page homonyme d'un autre groupe a t utilise. Dans ce cas, il faut prciser l'identificateur du groupe de pages de manuel avant le nom de la page afficher : man groupe page
o groupe est l'identificateur du groupe auquel la page de manuel appartient. Les principaux groupes sont les suivants : Tableau 5-1. Groupes de pages de man Identificateur Type de pages de manuel 1 Commandes utilisateur 2 Appels systmes (programmation en C) 3 Fonctions de la bibliothque C 4 Description des fichiers spciaux 5 Description des fichiers de configuration 6 Jeux et programmes divers 7 Programmes systmes divers 8 Administration systme Si vous ne savez pas dans quel groupe se trouve une page de manuel, vous pouvez utiliser l'option -k, qui permet d'afficher l'ensemble des pages disponibles portant ce nom : man -k commande L'identificateur 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 l'aide 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 propos, qui recherchera toutes les pages de manuel qui contiennent un mot cl particulier. Ce programme s'utilise avec la syntaxe suivante : propos mot
o mot est le mot cl rechercher dans toutes les pages de manuel. La commande man est la commande d'aide standard sur tous les systmes Unix. Cependant, Linux utilise un grand nombre de commandes crites sous la licence GNU, et qui utilisent un format d'aide spcifique GNU. L'aide 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 d'info, car la commande que vous utilisez est sans aucun doute une commande GNU, qui a t fournie avec sa page d'information. Il est donc recommand de lire plutt la page d'information GNU. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 109
Le format d'aide GNU est plus riche que celui de man, puisqu'il permet de naviguer dans le systme d'aide l'aide de liens hypertextes. Ces liens sont organiss hirarchiquement, avec des chapitres et des sous-chapitres. Chaque chapitre dispose d'une forme de table des matires constitue de menus, qui permettent d'accder 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 d'aide de GNU : la touche de tabulation permet de passer au lien hypertexte suivant ; la touche n (pour Next ) permet de passer au chapitre suivant ; la touche p (pour Previous ) permet de revenir au chapitre prcdent ; la touche u (pour Up ) permet de remonter d'un niveau dans le systme d'aide et d'atteindre la table des matires rfrenant le chapitre courant. Enfin, la commande q permet de quitter le systme d'aide. 5.4. Oprations de base sur les rpertoires Ce paragraphe va vous dcrire les oprations de base qu'il faut savoir faire pour manipuler les rpertoires du systme de fichiers. La premire commande est videmment celle qui permet de lister le contenu d'un rpertoire. Elle dispose d'un grand nombre d'options : ls [options] [fichier]
o fichier est le nom d'un fichier ou d'un rpertoire que l'on dsire lister. Si ce paramtre est absent, ls affichera tous les fichiers du rpertoire courant. Les principales options sont -l, qui permet d'afficher des informations tendues (notamment les propritaires, les groupes, les droits, la taille et ventuellement les liens), et -a, qui permet d'afficher tous les fichiers, y compris les fichiers 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 n'est spcifi, cette commande change le rpertoire courant pour le rpertoire personnel de l'utilisateur. Par exemple, pour aller dans le rpertoire d'installation de XWindow, il faut taper la commande suivante :
cd /usr/X11 La notion de chemin sera dtaille dans le paragraphe suivant. cd est l'abrviation de l'anglais Change Directory . La troisime commande permet de crer un rpertoire : mkdir chemin
o chemin est le chemin spcifiant 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 l'abrviation de l'anglais MaKe DIRectory ). DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 110
La commande pour supprimer un rpertoire est la suivante : rmdir chemin Pour supprimer un rpertoire, il faut qu'il soit vide (c'est--dire qu'il ne contienne ni fichier, ni rpertoire). rmdir est l'abrviation de l'anglais ReMove DIRectory . Enfin, voici une commande dont vous ne vous servirez normalement que trs peu, voire pas du tout. Elle permet d'afficher le rpertoire courant : pwd Cette commande n'est a priori pas trs utile, car le shell affiche toujours le rpertoire courant sur la plupart des distributions. Cependant, le chemin affich par le shell tant relatif au rpertoire personnel de l'utilisateur lorsqu'on se trouve dans un sous-rpertoire de celui-ci, la commande pwd peut tre utile lorsqu'on dsire obtenir un chemin absolu sur le rpertoire courant. pwd est l'abrviation de l'anglais Print Working Directory . Cette commande est galement utilise par les scripts pour dterminer le rpertoire partir duquel ils sont excuts. 5.5. Notions sur les chemins Unix Les chemins Unix permettent de qualifier compltement un rpertoire ou un fichier sur le disque. Comme on l'a vu, ils utilisent pour cela les noms de ces rpertoires et de ces fichiers, et ils les combinent pour indiquer comment atteindre la cible dans le systme de fichiers. Sous Unix, le sparateur utilis pour sparer les diffrents constituants du nom est la barre oblique ( / ). Le rpertoire racine n'a pas de nom, et peut donc tre rfrenc par une barre oblique seule. Les chemins peuvent tre absolus (c'est--dire qu'ils peuvent partir du rpertoire racine) ou relatifs (c'est--dire quils peuvent partir du rpertoire courant). Si l'on 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 l'on est dans le rpertoire /usr/local/bin, on peut accder au rpertoire /usr/X11/bin avec les deux chemins suivants : /usr/X11/bin
ou :
../../X11/bin Le premier chemin est absolu, parce qu'il part directement du rpertoire racine. Le deuxime chemin est relatif, car il part du rpertoire courant. Note : Il va de soi que les chemins relatifs ne sont valides, sauf coup de chance, que dans le rpertoire dans lequel ils sont crits, alors que les chemins absolus sont toujours valables. En revanche, si des rpertoires sont dplacs ensemble, les chemins relatifs entre ces rpertoires restent valides, mais les chemins absolus deviennent faux. Toutefois, ces considrations ne concernent pas un utilisateur de base. La plupart des shells sont capables d'effectuer ce que l'on appelle la compltion automatique des commandes. La compltion automatique permet de n'crire qu'une partie des noms de fichiers 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 d'utiliser une touche spciale qui permet de demander au shell de le complter. Si vous utilisez le shell bash (bash DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 111
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 fichiers et des rpertoires qui commencent par ho dans le rpertoire racine. Normalement, il ne s'y trouve que le rpertoire /home/, et c'est ce nom que bash utilise. Il va de soi qu'il ne faut pas qu'il 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 l'erreur. En appuyant une fois de plus sur la touche de tabulation, bash affiche la liste des choix possibles et vous propose de terminer la ligne de commande en saisissant des caractres supplmentaires afin de rsoudre l'ambigut. La deuxime solution est d'utiliser les caractres gnriques du shell. Ces caractres permettent de dsigner n'importe quel caractre, ou n'importe quelle squence de caractres. Ils sont dsigns respectivement par un point d'interrogation ( ? ) et par un astrisque ( * ). Ainsi, si l'on 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 d'crire :
cd /?ome
et dans ce cas le caractre gnrique ? sera remplac par h . Encore une fois, il ne faut pas qu'il y ait ambigut. Dans le cas contraire, le comportement varie selon le shell. En gnral, il essaie de rsoudre l'ambigut au mieux en analysant la suite du chemin, et s'il ne peut pas, il affiche un message d'erreur. Note : Ces caractres gnriques sont interprts directement par le shell et non par la commande qui les reoit en paramtres. Tout nom de fichier contenant un caractre gnrique est remplac par la liste des fichiers qui correspondent au motif donn. S'il n'existe qu'un seul fichier dans cette liste, il est possible d'utiliser les commandes comme cd, qui ne prennent qu'un seul paramtre. Mais il est possible d'utiliser les commandes acceptant plusieurs paramtres, mme s'il y a plusieurs fichiers dans cette liste. Ainsi, la commande suivante : ls *txt
permet de lister tous les fichiers dont le nom se termine par txt . Il ne peut videment pas y avoir d'ambigut dans ce cas. Si on doit passer un paramtre comprenant l'un des caractres gnriques interprts par le shell une commande particulire, on devra prfixer les caractres gnriques d'un caractre d'chappement pour signaler au shell qu'il ne doit pas l'interprter. Ce caractre d'chappement est la barre oblique inverse DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 112
( \ ). Il est galement possible de passer les paramtres entre guillemets " , car le shell n'interprte pas les caractres gnriques dans les chanes de caractres. Par exemple, pour crer un rpertoire ?, on utilisera la commande suivante : mkdir \? Les noms de fichiers commenant par un tiret (caractre '-') posent galement des problmes avec la plupart des commandes, car ce caractre est utilis pour spcifier des options. Ce n'est pas le shell qui interprte ce caractre dans ce cas, mais le problme est le mme. La plupart des commandes utilisent l'option - (elle-mme introduite par un tiret, ce qui fait donc deux tirets accols) pour signaler que ce qui suit dans leur ligne de commande ne contient plus d'options, et ne doit donc plus tre interprt. Il suffit donc de faire prcder le nom du fichier par deux tirets pour arrter l'interprtation des options. Par exemple, pour afficher les informations relatives un fichier nomm -l , il faudrait utiliser la commande suivante : ls -l -- -l Enfin, sachez que le caractre '~' reprsente le rpertoire personnel de l'utilisateur courant. Il est donc trs facile d'accder aux fichiers et aux rpertoires de son rpertoire personnel (situ, rappelons-le, dans le rpertoire /home/). Par exemple, pour lister le contenu de son rpertoire personnel, on utilisera la commande suivante : ls -l ~ 5.6. Oprations de base sur les fichiers Vous aurez sans doute afficher le contenu d'un fichier. Pour cela, la commande la plus approprie est certainement la commande less : less fichier Cette commande affiche le contenu du fichier et vous permet de le faire dfiler avec les flches du curseur. Lorsque vous dsirez terminer la visualisation, il suffit de taper la touche q (pour quitter less). Pour information, le nom de la commande less provient d'un trait d'humour sur une commande Unix plus classique, la commande more. Cette commande effectue peu prs le mme travail que less, mais elle n'affiche le texte que page par page. Pour passer la page suivante, il faut appuyer sur la barre d'espace. Quant l'origine du nom de la commande more, c'est qu'elle affiche le mot more au bas de l'cran pour indiquer qu'il y a encore du texte visualiser, et qu'il faut appuyer sur la barre d'espace pour lire la suite. La commande less permet galement d'effectuer une recherche dans le fichier en cours d'dition. Pour cela, il suffit 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 fichier en cours de visualisation avec less, il suffit de taper : /local Lorsque vous voudrez rechercher l'occurrence suivante du motif de recherche, vous pourrez appuyer sur la touche n (pour Next en anglais). Pour rechercher l'occurrence prcdente, il suffit de taper la touche N (en majuscule, cette fois). Il est encore plus probable que vous aurez diter un fichier. Cette opration peut se faire relativement facilement grce un diteur simplifi, vi. Cet diteur n'est pas franchement ce qui se fait de plus DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 113
convivial, cependant, il existe sur toutes les plates-formes Unix d'une part, et il est suffisamment 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 d'un grand nombre de commandes et il ne serait pas opportun de les dcrire ici. En gnral, la cration d'un fichier se fait avec vi, bien que d'autres commandes puissent crer des fichiers. En revanche, pour supprimer un fichier, il n'existe qu'une seule commande : rm chemin
o chemin est le chemin complet permettant d'accder au fichier supprimer. Il est possible de spcifier plusieurs fichiers la commande rm. Dans ce cas, ils seront tous supprims. rm est galement capable de supprimer tous les fichiers d'un rpertoire, ainsi que ses sous-rpertoires. Dans ce cas, elle dtruit toute une branche de l'arborescence du systme de fichiers. Pour cela, il suffit d'utiliser l'option -r (pour rcursif ) avant le chemin du rpertoire supprimer. Attention ! : La commande rm ne demande aucune confirmation avant de supprimer les fichiers ! D'autre part, les fichiers supprims sont irrmdiablement perdus (il n'y a pas de commande undelete ou autre commande similaire). Vrifiez donc bien ce que vous avez tap avant de valider une commande rm (surtout si vous tes sous le compte root). Il peut tre judicieux de forcer la commande rm demander confirmation avant la suppression des fichiers, l'aide de son option -i. On pourra pour cela dfinir un alias rm -i pour la commande rm dans le fichier d'initialisation du shell (c'est--dire le fichier .bashrc pour le shell bash). La notion d'alias sera dcrite dans la Section 5.9.9. La copie d'un fichier se fait avec la commande cp, dont la syntaxe est donne ci-dessous : cp fichiers rpertoire
o fichiers est la liste des fichiers copier, et rpertoire est le rpertoire destination dans lequel ces fichiers doivent tre copis. Enfin, le dplacement des fichiers se fait avec la commande mv, comme indiqu ci-dessous : mv source destination
o source est le nom du fichier source et destination est le nom du rpertoire destination. Notez que mv est une commande trs puissante, puisqu'elle permet galement de dplacer des rpertoires et de renommer des fichiers et des rpertoires. Pour renommer un fichier ou un rpertoire, il suffit d'indiquer le nouveau nom de ce fichier ou de ce rpertoire la place de destination. 5.7. Autres commandes utiles Pour terminer ce petit cours d'Unix, nous allons dcrire quelques-unes des autres commandes d'Unix 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. Gestion des liens La commande pour crer un lien est ln. Cette commande utilise la syntaxe suivante : ln [-s] source lien
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 114
o source est le nom du fichier ou du rpertoire source auquel le lien doit se rfrer, et lien est le nom du lien. L'option -s permet de crer un lien symbolique. Par dfaut, ce sont des liens physiques qui sont crs. Rappelons qu'il est impossible de crer des liens physiques sur des rpertoires. Lorsqu'on liste des fichiers, on peut demander l'affichage d'informations complmentaires sur les liens. Pour cela, il suffit d'utiliser l'option -1 de la commande ls. Ainsi, la commande suivante : ls -l lien
permet d'afficher les informations sur le lien, et en particulier le fichier ou le rpertoire cible de ce lien. La suppression des liens se fait exactement comme celle d'un fichier. La destination n'est pas affecte en gnral, sauf si le lien est un lien physique et constitue la dernire rfrence au fichier point par le lien. Les liens symboliques n'ont pas de droits d'accs ni de propritaires, les informations de scurit de la cible sont utilises lorsqu'on accde au lien. 5.7.2. Recherche de fichiers Il vous sera sans doute ncessaire de rechercher des fichiers selon un critre donn dans toute une arborescence de rpertoires. Pour cela, vous utiliserez la commande find. Cette commande est trs puissante, mais dispose d'une 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 fichier rechercher. Ce nom peut contenir des caractres gnriques du shell, mais dans ce cas doit tre plac entre guillemets afin d'viter que ce dernier ne les interprte. find accepte d'autres options de recherche que le nom (partie -name de la ligne de commande), et peut effectuer d'autres actions que l'affichage du chemin des fichiers trouvs (partie -print ). Consultez les pages de manuel pour plus d'informations ce sujet. 5.7.3. Recherche d'un texte dans un fichier La recherche d'une chane de caractres dans un ou plusieurs fichiers peut se faire l'aide de la commande grep. Cette commande prend en premier paramtre le texte rechercher, puis la liste des fichiers dans lequel ce texte doit tre trouv : grep texte fichiers Le texte peut tre plac entre guillemets si ncessaire (en particulier, s'il contient des espaces ou des caractres interprts par le shell, comme * et ?). grep accepte un grand nombre d'options, qui ne seront pas dcrites ici. Consulter les pages de manuel pour plus d'information ce sujet. 5.7.4. Remplacement de texte dans les fichiers Le remplacement de texte dans un fichier peut tre effectu de manire automatique, c'est--dire sans avoir ouvrir le fichier dans un diteur, grce la commande sed (abrviation de l'anglais Stream Editor ). Cette commande est en fait un utilitaire de manipulation de flux de donnes, qui permet d'effectuer des traitements plus gnraux que le simple remplacement de texte, mais c'est malgr tout pour cette opration qu'elle reste la plus utilise. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 115
sed peut travailler la vole sur un flux de donnes textuelles, que ce flux provienne de l'entre standard ou d'un fichier. Par dfaut, il crit le rsultat de son travail sur le flux de sortie standard. Les oprations qu'il doit effectuer sur le flux de donnes peuvent tre spcifies de diffrentes manires, soit en fournissant un fichier script l'aide de l'option -f, soit directement sur la ligne de commande, avec l'option -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 fichier sur lequel sed doit travailler, et rsultat est le fichier devant recevoir le flux de donnes modifies. Notez que cette commande utilise une redirection du flux de sortie standard dans un fichier. 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 d'effectuer 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 d'options exprimant la manire dont le remplacement doit tre fait. Les options sont spcifies l'aide de simple caractres, les plus utiles tant sans doute g, qui permet d'effectuer un remplacement global (au lieu de ne remplacer que la premire occurrence du texte rencontre dans chaque ligne), et I, qui permet d'effectuer une recherche sans tenir compte de la casse des caractres. Par exemple, la ligne de commande suivante : sed -e "s/bonjour/bonsoir/g" test.txt > modif.txt
permet de remplacer toutes les occurrences de la chane de caractres bonjour par la chane de caractres bonsoir dans le texte du fichier test.txt, et d'enregistrer le rsultat dans le fichier modif.txt. Note : Il ne faut pas utiliser le mme nom de fichier pour le fichier source et le fichier de rsultat. En effet, sed lit le fichier source la vole, et effectuer une redirection sur ce fichier pendant son traitement provoquerait la perte irrmdiable de son contenu. Pour rsoudre ce problme, on pourra utiliser un nom de fichier temporaire, et craser le fichier original par ce fichier une fois la commande sed excute. 5.7.5. Compression et dcompression des fichiers Linux fournit un grand nombre de programmes de compression de fichiers. 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 compresser et dcompresser des fichiers avec gzip et bzip2 dans ce paragraphe. La compression d'un fichier se fait de manire lmentaire : gzip fichier
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 116
o fichier est le fichier compresser. Aprs avoir effectu son travail, gzip renomme le fichier compress en fichier.gz . La compression d'un fichier avec bzip2 utilise exactement la mme syntaxe, ceci prs qu'il faut remplacer gzip par bzip2. De plus, le nom du fichier compress porte l'extension .bz2 au lieu de .gz. Le fichier obtenu est donc nomm fichier.bz2 . La dcompression d'un fichier se fait l'aide de la commande suivante : gunzip fichier.gz
ou
bunzip2 fichier.bz2
selon qu'il a t compress avec gzip ou bzip2. Aprs dcompression, l'extension complmentaire .gz ou .bz2 est supprime du nom de fichier. 5.7.6. Archivage de fichiers L'archivage de fichiers se fait classiquement sous Unix avec le programme tar (abrviation de l'anglais Tape ARchiver ). Ce programme permet simplement de regrouper tous les fichiers qu'il doit archiver dans un seul fichier structur en blocs. Il a t initialement crit pour permettre des archivages sur bandes ou sur tout autre priphrique de stockage de masse, mais il est galement utilis pour crer des fichiers archives contenant toute une arborescence. La syntaxe de tar est trs simple : tar options archive [fichiers]
o options sont les options qui indiquent l'opration effectuer et comment elle doit tre ralise, archive est le nom de l'archive qui doit tre cre ou le nom du fichier de priphrique du priphrique d'archivage, et fichiers est la liste des fichiers archiver. Les options de tar que vous utiliserez le plus souvent sont les suivantes : cvf pour crer une archive ; vf pour lister le contenu d'une archive ; xvf pour restaurer le contenu d'une archive. Par exemple, pour archiver le contenu du rpertoire courant dans le fichier archive.tar, vous utiliserez la ligne de commande suivante : tar cvf archive.tar * De plus, pour extraire le contenu de l'archive archive.tar, vous utiliserez la commande suivante : tar xvf archive.tar Note : L'option z permet d'effectuer 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, l'option _ permet de compresser l'archive la vole avec bzip2. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 117
Si l'on utilise un signe ngatif ('-') la place du nom de l'archive, 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.7. Passage en mode superviseur Si vous tes prudent, vous avez sans doute cr un compte utilisateur juste aprs avoir install votre systme de base, et vous ne travaillez plus que dans ce compte. Cette technique est prudente, cependant, elle pose un problme vident : vous ne pouvez pas y faire votre travail d'administrateur. C'est pour cela que la commande su a t cre. Cette commande permet de changer son identit dans le systme : su [utilisateur]
o utilisateur est l'utilisateur dont on veut prendre l'identit. Par dfaut, si aucun utilisateur n'est spcifi, le changement d'identit se fait vers l'utilisateur root. Bien entendu, il va de soi que la commande su demande le mot de passe avant d'obtemprer... 5.7.8. Changement des droits des fichiers, du propritaire et du groupe Les mcanismes de droits d'accs ont dj t dcrits en dtail ci-dessus dans le chapitre concernant les notions gnrales sur Unix. Il peut tre judicieux de relire ce chapitre afin de comprendre les effets des commandes prsentes dans cette section. 5.7.8.1. Changement de propritaire et de groupe Le changement de propritaire d'un fichier ne peut tre ralis que par l'administrateur du systme. Cette opration se fait l'aide de la commande suivante : chown utilisateur fichier
o utilisateur est le nom de l'utilisateur qui doit devenir propritaire du fichier, et fichier est le fichier devant changer de propritaire. Le changement de groupe peut tre ralis par n'importe quel utilisateur, mais on ne peut donner un fichier qu' l'un des groupes dont on est membre. Cette opration se fait l'aide de la commande suivante : chgrp groupe fichier
o groupe est le nom du groupe qui doit tre affect au fichier, et fichier est le fichier devant changer de groupe. Bien entendu, l'administrateur peut affecter un fichier n'importe quel groupe d'utilisateur. 5.7.8.2. Modification des droits Unix sur les fichiers La commande permettant de changer les droits d'un fichier ou d'un rpertoire est la suivante : chmod droits fichier
o fichier est le fichier ou le rpertoire dont on dsire changer les droits, et droits est une chane de caractres permettant de spcifier les nouveaux droits. Cette chane commence par une lettre indiquant le groupe d'utilisateurs auquel le droit doit tre appliqu, d'un caractre + ou - indiquant si le droit doit tre ajout ou supprim, et d'une lettre indiquant le droit que l'on est en train de manipuler. La premire lettre peut prendre les valeurs suivantes : DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 118
u pour le champ utilisateur , c'est--dire le propritaire du fichier ; g pour le champ groupe , c'est--dire tous les utilisateurs faisant partie du groupe du fichier ; o pour le champ other , c'est--dire pour tous les utilisateurs qui ne sont ni propritaires, ni membres du groupe du fichier ; a pour tous les champs sans distinction, donc pour tous les utilisateurs. Les droits sont identifis par l'un des caractres suivants : r pour le droit de lecture ; w pour le droit d'criture ; x pour le droit d'excution ; s pour les bits setuid et setguid ; t pour le bit sticky. Ainsi, la commande suivante : chmod g+w exemple
permet de donner le droit d'criture sur le fichier exemple tous les membres du groupe auquel ce fichier appartient. 5.7.8.3. Utilisation des ACLs Si l'on veut donner des droits un utilisateur ou un groupe particulier, on pourra dfinir une ACL ( Access Control List ) sur le fichier ou le rpertoire, et affecter les droits unitairement. Ceci se fait simplement avec la commande setfacl, de la manire suivante : setfacl -m ACL fichier
o ACL est l'ACL affecter au fichier ou au rpertoire fichier. Les ACLs sont constitus d'une liste d'entres nommes des ACE ( Access Control Entries ). Les ACEs sont spares par des virgules et dfinissent chacune un droit. Chacun de ces droits doit tre spcifi de manire complte, en prcisant la classe d'utilisateur sur lequel il porte avec un mot-cl (user pour l'utilisateur propritaire, group pour les utilisateurs du groupe propritaire, ou other pour les autres utilisateurs), le nom de l'utilisateur ou du groupe si ncessaire, et les droits affects cet utilisateur ou ce groupe. Tous ces paramtres doivent tre spars par deux points (caractre ':'). Par exemple, pour ajouter les droits d'criture l'utilisateur alfred sur le fichier exemple, vous pourrez utiliser la commande suivante :
setfacl -m user:alfred:w exemple Si l'on ne spcifie aucun utilisateur avec la classe d'utilisateurs user dans une entre, cette entre se rfre automatiquement l'utilisateur propritaire du fichier ou du rpertoire. De mme, si l'on ne spcifie aucun groupe avec la classe d'utilisateurs group, l'entre se rfre au groupe auquel le fichier appartient. Fixer ces entres d'ACL sur un fichier avec ces deux syntaxes revient donc exactement utiliser chmod avec les droits Unix classiques ( un dtail prs que l'on verra ci-dessous pour le groupe). Les droits complets d'un fichier ou d'un rpertoire peuvent tre consults avec la commande getfacl. Cette commande affiche en commentaire les informations sur l'objet auquel elle s'applique, savoir son nom, son propritaire et son groupe, la suite d'un dize (caractre '#'). Suivent toutes les ACEs affectes cet objet. Les droits Unix classiques sont lisibles directement avec les entres user::, group:: et other:: respectivement pour l'utilisateur, les utilisateurs du groupe et les autres utilisateurs. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 119
Par exemple, si l'on affiche les ACLs associes au fichier exemple aprs la commande prcdente, on obtient ceci : # file: exemple # owner: batman # group: users user::rw- user:alfred:-w- group::r-- mask::rw- other::r-- Ds qu'une ACL nominative a t attribue un fichier, une ACL spciale est cre automatiquement. Il s'agit de l'ACL mask, qui, comme son nom l'indique, dfinit un masque de droits complmentaires pour tous les utilisateurs et les groupes ajouts nominativement l'ACL. Pour ces utilisateurs, les droits effectivement accords sont leurs droits respectifs, restreints aux droits prsents dans le masque. Le masque permet donc de restreindre les droits de tous les utilisateurs de la classe group, au sens large. Par exemple, si le masque contient les droits de lecture et d'criture, et que l'utilisateur alfred dispose des droits de lecture et d'excution sur le fichier, ses droits effectifs seront uniquement la lecture. Les droits effectifs sont indiqus en commentaire par getfacl pour les utilisateurs et les groupes s'ils ne sont pas gaux aux droits indiqus dans leurs entres respectives. Ds qu'il est dfini, le masque remplace l'entre du groupe du fichier pour les commandes classiques. Ainsi, ds qu'un masque est dfini dans l'ACL d'un fichier, les changements de droits sur le groupe effectus avec la commande chmod ne modifient plus que le champ de masque. Cela peut surprendre dans certaines situations. Par exemple, si l'entre de l'ACL dcrivant les droits du groupe du fichier ne donne aucun droit, les utilisateurs de ce groupe n'auront toujours aucun droit mme aprs un chmod g+rwx sur le fichier. En effet, cette dernire commande ne modifie que le masque. Il est donc ncessaire d'ajouter les droits sur le groupe du fichier explicitement avec setfacl, de la manire suivante : chmod g+rwx exemple setfacl -m group::rwx exemple
La premire commande modifie les droits sur le masque, et la deuxime ajoute les droits pour tous les utilisateurs du groupe. Notez bien que le masque ne s'applique pas pour la dtermination des droits du propritaire et des utilisateurs de la classe other. Par ailleurs, lorsque l'on affiche les droits tendus d'un fichier avec l'option -1 de la commande ls, les droits affichs pour le groupe du fichier sont les droits dfinis dans le masque lui-mme (mme si aucune entre d'ACL ne donne compltement ces droits un utilisateur ou un groupe). Cela permet donc de voir directement les droits les plus forts qui pourraient tre attribus sur ce fichier, ce qui est cohrent avec ce qu'attendent les outils Unix classiques. Il est possible de supprimer toutes les entres de l'ACL d'un fichier avec l'option -b de setfacl. Pour supprimer une entre spcifique de l'ACL, vous devrez utiliser l'option -x. Cette dernire option ne permet pas de supprimer les entres gnriques pour le propritaire et le groupe du fichier, ni celles des autres utilisateurs. Par exemple, pour retirer toutes les entres dfinies prcdemment sur le fichier exemple, on utilisera la commande suivante : setfacl -b exemple
Vous pourrez toutefois constater que getfacl continue d'afficher les entres gnriques user:: , group:: et other:: . DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 120
Les rpertoires disposent, en plus de leur ACL normale, d'une ACL par dfaut. L'ACL par dfaut d'un rpertoire est celle qui est applique tout nouveau fichier ou rpertoire crs dans ce rpertoire. De plus, les sous-rpertoires hritent de l'ACL par dfaut de leur parent. Les ACLs par dfaut sont modifiables avec l'option -d de setfacl et sont affiches avec le prfixe default: par getfacl. Note : Notez bien que de nombreux outils Unix classiques ne grent pas correctement la notion d'ACL (en particulier les gestionnaires de fichiers graphiques). La copie ou la modification d'un fichier peut donc provoquer la perte de son ACL, modifiant ainsi les droits des utilisateurs sur ce fichier. Les ACLs doivent donc tre utilises avec parcimonie et leur manipulation entoure du plus grand soin. 5.8. vi, l'diteur de fichiers de base Vous serez oblig, lorsque vous effectuerez la configuration de votre systme, d'diter les fichiers de configuration (classiquement, ces fichiers sont placs dans le rpertoire /etc/). Ces modifications peuvent tre ralises avec n'importe quel diteur a priori, et il est mme conseill d'utiliser votre diteur favori. Cependant, il faut savoir se servir de vi, parce que c'est le seul diteur qui sera toujours install, et qui fonctionnera en toutes circonstances. Le prix payer pour cette fiabilit est un nombre restreint de fonctionnalits. En fait, vi est trs puissant, mais il ne s'embarrasse pas de superflu, ce qui en fait certainement l'diteur le moins convivial du monde. Ce paragraphe vous donnera la liste des principales commandes de vi. Cette liste ne sera toutefois pas exhaustive, car vous n'utiliserez certainement pas vi dans la vie courante. Pour diter un fichier avec vi, il suffit de passer le nom de ce fichier en ligne de commande : vi fichier Il est possible de passer plusieurs fichiers 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 fichiers la fois, et qu'il n'est pas facile de passer de l'un l'autre. Par consquent, il est conseill de n'diter qu'un seul fichier la fois. vi est un diteur qui fonctionne dans plusieurs modes diffrents : le mode d'dition, dans lequel le texte peut tre modifi, le mode de commande, dans lequel des commandes particulires peuvent tre donnes, et le mode de visualisation, dans lequel le fichier ne peut tre que visualis. Par dfaut, vi est en mode de visualisation, et il faut utiliser une commande d'dition pour passer en mode d'dition. Quand on est en mode d'dition, on peut revenir au mode de visualisation en appuyant sur la touche Echap (ou Esc, selon votre clavier). Cette touche a aussi une signification dans le mode de commande : elle annule la saisie de la commande en cours. Par consquent, lorsqu'on est perdu et que l'on ne sait plus dans quel mode on se trouve (ce qui arrive fatalement un moment donn), il suffit d'appuyer sur cette touche. On sait alors qu'on 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 n'est pas bien configur, ces touches peuvent ne pas fonctionner. C'est 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 d'dition. Le passage en mode d'dition peut se faire avec l'une des commandes suivantes : DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 121
la touche i permet de passer en mode d'insertion (le texte saisi s'insre avant le caractre sur lequel le curseur est positionn) ; la touche a permet de passer en mode d'ajout de caractres (le texte saisi s'insre aprs le caractre sur lequel le curseur est positionn) ; la touche A permet de placer le curseur en fin de ligne et de passer en mode d'ajout de caractres ; la touche o permet de crer une nouvelle ligne aprs la ligne o se trouve le curseur et de passer en mode d'dition sur cette nouvelle ligne ; la touche O permet de crer une nouvelle ligne avant la ligne o se trouve le curseur et de passer en mode d'dition sur cette nouvelle ligne. La cration d'une 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 d'dition. Inversement, la commande J permet de supprimer un saut de ligne en fin de ligne et de placer ainsi le texte de la ligne suivante la suite du texte de la ligne courante. La suppression d'un 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 configur : la commande x permet d'effacer le caractre situ sous le curseur ; la commande dd permet d'effacer la ligne o se trouve le curseur ; la commande dw permet d'effacer le mot o se trouve le curseur. Le texte qui a t supprim est plac dans ce que l'on appelle un buffer. Le contenu du buffer peut tre insr n'importe quel endroit du fichier 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 l'emplacement destination. La commande u permet d'annuler 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 spcifiant ce nombre avant de les crire. Ainsi, pour supprimer 3 lignes, il suffira 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. Enfin, vi accepte un certain nombre de commandes gnrales lorsqu'il est en mode de commande. Ce mode est activ ds que l'on 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 fichier en cours d'dition a t modifi, vi refusera de se terminer sans l'enregistrer. Si l'on veut malgr tout sortir sans l'enregistrer, il faudra utiliser la commande :q! ; la commande :w permet d'enregistrer le fichier courant. Pour enregistrer ce fichier et quitter vi, la commande :wq peut tre utilise ; la commande :help sujet permet d'obtenir de l'aide sur le sujet sujet ; DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 122
la commande :!commande permet d'excuter 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 efficace d'utiliser un autre terminal virtuel. Comme vous l'avez constat, vi est rellement une horreur utiliser. Malgr tout, il permet de faire tout ce dont on a besoin pour diter un fichier. 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 l'aide de vi pour de plus amples informations. 5.9. Utilisation du shell bash Le shell est l'environnement utilisateur en mode texte sous Linux. C'est le programme qui se charge de lire et d'excuter les commandes que l'utilisateur saisit. Classiquement, le shell est utilis de manire interactive, c'est--dire que l'utilisateur dialogue avec le systme par l'intermdiaire du shell. Il saisit les commandes, et le shell les excute et affiche les rsultats. Le shell le plus couramment utilis sous Linux est sans aucun doute bash. En tout cas, c'est 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 l'abrviation de l'anglais Bourne Again SHell , ce qui signifie qu'il s'agit effectivement d'une 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. C'est en partie vrai, mais il faut savoir que les shells Unix sont extrmement puissants et que les interfaces graphiques ne permettent toujours pas, mme l'heure actuelle, de raliser toutes les tches faisables avec un shell. D'autre part, il est souvent plus efficace 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 confirmeront, que la souris n'est pas le priphrique d'entre le plus prcis et le plus facile utiliser pour manipuler les objets de l'environnement utilisateur. La plupart des programmeurs utilisent encore bon nombre de ce qu'on appelle des raccourcis clavier pour excuter des commandes, mme dans les environnements utilisateurs graphiques. Quoi qu'il en soit, le shell est bien plus qu'un interprteur de commande. Il s'agit rellement d'un environnement de programmation, permettant de dfinir des variables, des fonctions, des instructions complexes et des programmes complets, que l'on 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 bnfique ceux qui dsirent comprendre les scripts de configuration utiliss par leur distribution, ou tout simplement ceux qui sont curieux de nature. 5.9.1. Contrle des processus Un des avantages des lignes de commandes par rapport aux environnements graphiques est la facilit avec laquelle elles permettent de contrler les processus. Ce paragraphe dcrit les principales mthodes pour lancer et arrter un processus, ainsi que pour lui fournir les donnes sur lesquelles il doit travailler et rcuprer ses rsultats. 5.9.1.1. Lancement d'un programme en arrire-plan Le lancement normal d'un 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 DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 123
arrire-plan une commande dont la dure d'excution 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 : s'assurer que la commande aura toutes les informations ncessaires pour travailler sans intervention de l'utilisateur (ou, autrement dit, que la commande n'est pas interactive) ; ajouter une esperluette (caractre & ) la fin de la ligne de commande. Par exemple, la commande suivante : cp /cdrom/kernel/linux-2.6.6.tar.gz . &
copiera l'archive du noyau 2.6.6 du CD-ROM vers le rpertoire courant, et s'excutera en arrire-plan. Lorsqu'une commande est lance en arrire-plan, le shell affiche deux nombres qui permettront de l'identifier par la suite. Le premier nombre, indiqu entre crochets, est le numro de job du shell. Ce numro sert identifier 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 IDentifier ) dans le systme du processus matre du job. Le PID est un numro unique dans le systme, qui permet d'identifier de manire unique les processus en cours. Ces deux nombres permettront de manipuler les processus, avec les commandes que l'on verra plus tard. Il ne faut pas confondre les numros de job avec les numros de processus. Premirement, un numro de job n'est unique que dans un shell donn, et n'a aucune signification au niveau du systme complet, alors que le numro de processus est attribu par le systme chaque programme en cours d'excution. 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 l'utilisation d'une redirection du flux de sortie standard d'un processus vers le flux d'entre standard d'un autre processus. Le numro de processus affich par le shell lors du lancement d'une ligne de commande complexe reprsente le PID du processus matre de la commande, c'est--dire, en pratique, le dernier processus d'une srie de redirections ou le processus du shell excutant les commandes complexes. Cela signifie que dans tous les cas de configuration, ce PID est celui du processus qui contrle l'ensemble des oprations effectues par la ligne de commande. C'est donc par ce processus que l'on peut manipuler la commande complte, par exemple pour l'interrompre. Il est possible de retrouver le PID du processus matre d'une commande partir du numro de job correspondant du shell. Cela se fait simplement, en utilisant lexpression 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 prfix du caractre de pourcentage. 5.9.1.2. Listing des processus Il n'est pas ncessaire de retenir tous les numros de jobs et tous les PID des processus en cours d'excution. Il existe en effet des commandes permettant d'obtenir 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 suffit de taper la commande suivante : DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 124
jobs
qui affiche, dans l'ordre, le numro de job, l'tat du processus correspondant, et la ligne de commande. Une autre commande, plus bas niveau, permet d'obtenir des informations plus compltes directement partir du systme. Il s'agit 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 l'affichage de toutes les commandes en cours d'excution et non pas seulement les processus en cours d'excution dans le shell o la commande ps est excute, et a, qui permet d'obtenir l'affichage de toutes les commandes, pour tous les utilisateurs connects. Ces deux options peuvent tre cumules, et la commande suivante : ps ax
affiche donc toutes les commandes en cours d'excution sur le systme. Les informations les plus intressantes affiches par ps sont le PID du processus, qui est donn par le premier nombre affich, et la ligne de commande, qui est la dernire information affiche. 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 l'utilisateur, 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 qu'il a fait une faute et qu'il va tre termin. Cependant, ce n'est 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 n'entrerons pas en dtail dans la gestion des signaux ici, car cela nous emmnerait trop loin. Cependant, la manire d'envoyer un signal un processus partir du shell sera dcrite. L'envoi d'un signal se fait avec la commande kill, avec la syntaxe suivante : kill [-signal] PID
o signal est une option qui permet de prciser le signal qui doit tre envoy, et PID est le numro du processus qui doit le recevoir. Les numros de signaux les plus importants sont dcrits dans le tableau ci-dessous : Tableau 5-2. Principaux signaux Unix Numro de signal Signification 15 Signal de terminaison de processus. 9 Signal de destruction inconditionnelle de processus. 19 Signal de suspension de processus. 18 Signal de reprise d'excution d'un processus suspendu. Lorsquaucun signal n'est spcifi, le signal 15 de terminaison est utilis par dfaut. Ce signal demande au processus en cours d'excution de se terminer immdiatement. Il peut tre capt par le processus, pour lui donner une chance d'enregistrer les donnes sur lesquelles il travaillait et de librer DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 125
les ressources qu'il utilisait. Pour certains processus, cela ne fonctionne pas, et il faut utiliser le signal de destruction du processus l'aide de la commande suivante : kill -9 PID Attention cependant cette commande : le processus est immdiatement dtruit, sans autre forme de procs. Il peut donc s'ensuivre une perte de donnes, n'en abusez donc pas trop. 5.9.1.4. Arrt d'un 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 d'excution interactive (c'est--dire lorsqu'il n'a pas t lanc en arrire-plan). S'il a t lanc en arrire-plan, on peut soit le ramener en avant-plan (avec la commande fg, que l'on verra plus loin) avant d'utiliser CTRL+C, soit lui envoyer le signal de terminaison l'aide de la commande kill vue prcdemment. Dans le cas d'une ligne de commande, le signal de terminaison est transmis au processus matre de la ligne de commande, et est ensuite propag l'ensemble des processus fils de ce processus. Cela signifie que tous les processus invoqus dans le cadre de cette commande sont galement arrts. 5.9.1.5. Gel d'un processus Il est possible de geler un processus en cours d'excution, c'est--dire de le suspendre, sans pour autant l'arrter dfinitivement. 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 ) l'aide 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 l'ensemble des processus fils de ce processus. Cela signifie 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 n'importe quel processus que l'on a lanc. 5.9.1.6. Relancement d'un 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 n'est pas spcifi, le dernier processus stopp sera relanc en arrire-plan. fg est l'abrviation de l'anglais foreground , ce qui signifie avant-plan . Il faut attendre que ce processus se termine pour entrer de nouvelles commandes. Par consquent, on ne peut lancer en avant-plan qu'un seul processus. De mme, pour lancer un processus en arrire-plan, il faut utiliser la commande bg, qui est l'abrviation de l'anglais background . Cette commande s'utilise de la mme manire que la commande fg : bg [PID] DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 126
Le relancement d'un processus suspendu peut galement se faire en lui envoyant le signal 18 l'aide de la commande kill. 5.9.2. Redirections Pour pouvoir lancer un programme en arrire-plan, il est ncessaire qu'il n'ait pas besoin de demander des donnes l'utilisateur. En effet, lorsqu'il 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 affichage en provenance d'une commande en arrire-plan apparat sur la console tel quel, et risque de se mlanger avec l'affichage des autres programmes ou mme avec la commande en cours d'dition. C'est pour rsoudre ces problmes que le mcanisme des redirections a t introduit. 5.9.2.1. Principe de base Le mcanisme des redirections a pour but de transfrer les donnes provenant d'un flux vers les donnes d'un autre flux. Il se base sur la notion de descripteur de fichier, utilise par la plupart des systmes Unix. Un descripteur de fichier est un numro utilis par les programmes pour identifier les fichiers ouverts. Les descripteurs 0, 1 et 2 sont respectivement affects d'office au flux d'entre standard (nomm stdin ), au flux de sortie standard ( stdout ) et au flux d'erreur standard ( stderr ), qui en gnral apparat galement sur l'cran. Les descripteurs de fichiers d'un processus sont gnralement hrits par tous ses processus fils. Cela signifie que, lors de leur lancement, ces processus peuvent utiliser tous les descripteurs de fichiers mis leur disposition par leur pre. Dans le cas des lignes de commande, les processus fils sont les processus lancs par le shell, et les descripteurs de fichiers hrits sont donc les descripteurs de fichiers du shell. C'est de cette manire que le shell peut manipuler les descripteurs de fichiers des processus qu'il lance : il effectue d'abord les redirections sur ses propres descripteurs de fichiers, puis il lance le processus fils avec ces redirections actives. Le mcanisme est donc compltement transparent pour les processus fils. Le mcanisme des redirections permet en fait d'injecter dans un descripteur de fichier des donnes provenant d'un autre descripteur ou d'un fichier identifi par son nom, et d'envoyer les donnes provenant d'un descripteur de fichier dans un autre descripteur ou dans un fichier identifi par son nom. Si l'on utilise les descripteurs de fichiers des flux d'entre / sortie standards, on peut excuter n'importe quelle commande interactive en arrire-plan. 5.9.2.2. Redirections de donnes en entre Pour injecter des donnes provenant d'un fichier dans le descripteur de fichier n d'un processus, il suffit d'ajouter la ligne suivante la fin de la commande permettant de lancer ce processus : n<fichier
o fichier est le nom du fichier 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 fichier seront donc envoyes dans le flux d'entre standard du processus. Par exemple, supposons que l'on dsire utiliser une commande nomme search , et que cette commande demande un certain nombre d'informations lors de son excution. Si l'on sait l'avance les rponses aux questions qui vont tre poses, on peut crer un fichier de rponse (nomm par exemple answer.txt ) et alimenter la commande search avec ce fichier. Pour cela, on utilisera la ligne de commande suivante :
search < answer.txt DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 127
Il est galement possible d'injecter des donnes provenant d'un autre descripteur de fichier dans un descripteur de fichier. On utilisera pour cela la syntaxe suivante : n<&s
o n est toujours le descripteur de fichier du processus excuter dans lequel les donnes doivent tre injectes, et s est un descripteur de fichier contenant les donnes sources injecter. Par dfaut, si n n'est pas prcis, le flux d'entre standard du processus sera utilis. 5.9.2.3. Redirection de donnes en sortie Inversement, il est possible d'enregistrer les donnes crites par un processus dans un de ses descripteurs de fichier dans un fichier. Pour cela, on utilisera l'oprateur '>' avec la syntaxe suivante : n>fichier
o n est le numro du descripteur de fichier du processus enregistrer, et fichier est le nom du fichier dans lequel les donnes doivent tre stockes. Par dfaut, si n n'est pas spcifi, le descripteur du flux de sortie standard sera utilis (descripteur 1). Par exemple, si la commande prcdente affiche des rsultats et que l'on dsire les stocker dans le fichier result.txt , on utilisera la ligne de commande suivante :
search < answer.txt >result.txt Notez que cette commande dtruira systmatiquement le contenu du fichier result.txt et le remplacera par les informations provenant du flux de sortie standard du processus search . Il est possible de ne pas vider le fichier result.txt et d'ajouter les informations en fin de fichier, en utilisant l'oprateur '>>' la place de l'oprateur '>'. Ainsi, la commande suivante : search < answer.txt >>result.txt
aura pour effet d'ajouter la fin du fichier result.txt les informations affiches par le processus search . Le flux d'erreur standard, qui correspond normalement l'cran et qui permet d'afficher les messages d'erreur, peut tre redirig avec l'oprateur '2>', de la mme manire que l'oprateur '>' est utilis pour le flux de sortie standard (puisque c'est le descripteur de fichier utilis par dfaut par l'oprateur '>'). Par exemple, si l'on veut envoyer les messages d'erreurs ventuels de la commande prcdente vers le priphrique nul (c'est--dire le priphrique qui n'en 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 l'utilisateur : search <answer.txt >result.txt 2> /dev/null & Il est galement possible d'effectuer une redirection des donnes provenant d'un descripteur de fichier du processus vers un autre descripteur de fichier de ce processus. On utilisera pour cela la syntaxe suivante : n>&d
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 128
o n est le descripteur de fichier dont les donnes doivent tre rediriges, et d le descripteur de fichier destination. Cette syntaxe est souvent utilise pour rediriger le flux d'erreur standard vers le flux d'entre standard, lorsqu'on veut rcuprer les erreurs et les messages d'excution normale dans un mme fichier. Par exemple, si l'on veut rediriger le flux de sortie et le flux d'erreurs de la commande search dans un mme fichier, 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 affiches par la commande search : la premire redirige le flux de sortie standard vers un fichier, et la deuxime le flux d'erreur standard vers le flux de sortie standard. Notez que l'ordre des redirections est important. Elles sont appliques de gauche droite. Ainsi, dans la commande prcdente, le flux de sortie standard est redirig vers le fichier result.txt , puis le flux d'erreur standard est inject dans le flux de sortie standard ainsi redirig. Note : Il est galement possible d'utiliser un autre descripteur de fichier que les descripteurs des flux standards. Cependant, il est ncessaire, dans ce cas, d'ouvrir ce descripteur dans le shell avant de lancer la commande. Cela peut se faire l'aide de la syntaxe suivante : n<>fichier
o n est un numro de descripteur de fichier non encore utilis, et fichier est un nom de fichier. Ce nouveau descripteur de fichier pourra tre utilis dans les commandes prcdentes, afin de faire manipuler le fichier fichier par les processus fils de manire transparente. Les descripteurs de fichiers ouverts de cette manire le restent d'une commande sur l'autre dans le shell. Cela implique que toutes les donnes crites dans ces descripteurs de fichiers sont ajoutes automatiquement la fin des fichiers manipuls par ces descripteurs. Ce comportement est diffrent de la redirection vers un fichier effectue par l'oprateur '>', qui ouvre chaque fois le fichier en criture son dbut et qui supprime donc toutes les donnes dj existantes. Il n'y a donc pas d'oprateur '>>&' pour ajouter des donnes un descripteur de fichier, car cela n'a pas de sens. Les descripteurs de fichiers peuvent galement tre manipuls directement, par l'intermdiaire de fichiers virtuels du rpertoire /dev/fd/. chaque descripteur de fichier (y compris les descripteurs pour les flux d'entre/sortie standards !) y correspond un fichier dont le nom est le numro du descripteur. Par exemple, le fichier /dev/fd/2 correspond au flux d'erreur standard. En fait, le rpertoire /dev/fd/ est un lien symbolique vers le rpertoire /proc/self/fd/ du systme de fichiers virtuel /proc/. Ce systme de fichiers est gr par le noyau directement, et permet d'accder aux informations sur le systme et les processus. Il contient en particulier un sous-rpertoire portant le nom du PID de chaque processus existant dans le systme, et chacun de ces rpertoires contient lui- mme un sous-rpertoire fd/ o sont reprsents les descripteurs de fichiers ouvert par le processus correspondant. Le systme de fichiers /proc/ contient galement un lien symbolique self/ pointant sur le sous-rpertoire du processus qui cherche l'ouvrir. Ainsi, /proc/self/fd/ est un chemin permettant chaque processus d'accder ses propres descripteurs de fichiers. En pratique, la manipulation directe des descripteurs de fichiers n'est rellement intressante que pour les flux standards, dont les numros de descripteurs sont fixes et connus de tous les programmes. Pour les autres descripteurs, cette technique est souvent inutilisable ou inutile, sauf lorsqu'on utilise des programmes sachant manipuler des descripteurs de numros bien dtermins. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 129
5.9.2.4. Insertion de documents Il existe un dernier oprateur de redirection, qui n'est utilis en pratique que dans les scripts shell. Cet oprateur permet d'insrer directement un texte complet dans le flux d'entre standard, sans avoir placer ce document dans un fichier part. Cette technique permet donc de stocker des donnes avec le code des scripts shell, et de n'avoir ainsi qu'un seul fichier contenant la fois le script et ses donnes. Cet oprateur est l'oprateur '<<', il s'utilise 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 afin de signaler la fin du texte. Par exemple, il est possible de crer un fichier 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 l'on veut, et utiliser les fonctions d'ditions de ligne du shell si l'on veut. Pour terminer le fichier, il faut taper le mot "fin" tout seul, au dbut d'une ligne vide. fin 5.9.3. Les tubes Les redirections sont trs pratiques lorsqu'il s'agit d'injecter un fichier dans le flux d'entre standard d'un processus, ou inversement de rediriger le flux standard d'une commande vers un fichier, mais elles ont justement le dfaut de devoir utiliser des fichiers. Il est des situations o l'on dsirerait injecter le rsultat d'une commande dans le flux d'entre standard d'une autre commande, sans passer par un fichier intermdiaire. Cela est heureusement ralisable, grce ce que l'on appelle les tubes . 5.9.3.1. Syntaxe des tubes Pour rediriger le rsultat d'une commande dans le flux d'entre d'une autre commande, il faut utiliser l'oprateur '|'. Cet oprateur reprsente un tuyau canalisant les donnes issues d'une commande vers le flux d'entre standard de la commande suivante, d'o le nom de pipe en anglais (ce qui signifie tuyau ou tube ). L'oprateur tube s'utilise de la manire suivante : on crit la premire commande, qui doit fournir les donnes la deuxime commande ; on crit l'oprateur tube ; on crit la deuxime commande, qui doit lire les donnes provenant de la premire. La commande se trouvant la gauche de l'oprateur tube doit tre complte, avec ses autres redirections ventuelles. La redirection dans un tube s'effectue aprs les autres types de redirections vues prcdemment. Le systme contrle l'excution des processus qui se trouvent aux deux bouts d'un tube, de telle sorte que le transfert de donnes puisse toujours se faire. Si le processus source a trop de donnes, il est fig DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 130
par le systme d'exploitation en attendant que le processus consommateur ait fini de traiter les donnes dj prsentes. Inversement, si le processus source est trop lent, c'est le processus consommateur qui attendra patiemment que les donnes soient disponibles. Les tubes sont utiliss trs couramment, ne serait-ce que pour afficher page par page le contenu d'un 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 d'afficher page par page (et de revenir en arrire dans ces pages) la liste des fichiers du rpertoire courant. Note : ATTENTION ! Il se peut que vous obteniez parfois un message d'erreur de la part de l'interprteur de commande vous signalant bash: less: command not found , sans que cette erreur ne soit systmatique. Il s'agit d'un des gags les plus comiques que j'ai rencontr dans le monde Linuxien : en ralit, il s'agit d'une faute de frappe de votre part. En effet, certaines distributions utilisent le plan de clavier fr-latin1, et d'autres utilisent plan de clavier fr-latin9. Or, sur le plan de clavier fr-latin9, la combinaison de touches AltGr+Espace gnre une espace inscable qui, bien qu'elle soit totalement indiffrenciable visuellement de l'espace normale, n'est pas reprsente par le mme caractre. Or il est trs facile de maintenir la touche AltGr enfonce lorsqu'on tape une espace aprs un tube ! De ce fait, la ligne de commande est errone, puisque la commande situe droite du tube est prcde d'une espace inscable, et que ce caractre n'est pas compris par le shell... Par consquent, si vous rencontrez souvent ce problme, vous pouvez changer de plan de clavier, cesser de mettre des espaces aprs les tube, ou apprendre taper ! Prenons un exemple un peu plus complexe. Supposons que l'on veuille archiver et compresser un rpertoire. Il est possible d'archiver ce rpertoire avec la commande tar, puis de compresser le fichier archive rsultant : tar cvf archive.tar * gzip archive.tar Cette mthode est correcte, mais souffre d'un dfaut : elle utilise un fichier 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 l'un dans le flux d'entre de l'autre. Ainsi, il n'y a plus de fichier temporaire, et la place consomme sur le disque est minimale : tar cv * | gzip > archive.tar.gz La premire commande demande tar d'archiver tous les fichiers du rpertoire et d'envoyer le rsultat dans le flux standard de sortie. Le pipe redirige ce flux standard vers le flux d'entre standard de gzip. Celui-ci compresse les donnes et les met vers son flux standard de sortie, qui est lui-mme redirig vers le fichier archive.tar.gz. Aucun fichier temporaire n'a t utilis, et on a ainsi conomis l'espace disque de l'archive complte non compresse, c'est--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 compresser la vole les donnes archiver, permettant d'viter de se prendre la tte comme on vient de le faire. Pour cela, il suffit d'utiliser l'option z dans la ligne de commande de tar. Ainsi, la ligne de commande suivante fournit le mme rsultat : tar cvfz archive.tar.gz *
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 131
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 fichiers d'un systme de fichiers un autre. Vous ne pourrez pas y parvenir l'aide de la commande mv, car celle-ci ne fait que modifier la structure du systme de fichiers pour dplacer les fichiers et les rpertoires, elle ne peut donc pas fonctionner avec deux systmes de fichiers. Vous ne pouvez pas non plus utiliser la commande cp, car celle-ci ne prendra pas en compte les dates des fichiers, leur propritaire et leur groupe, ainsi que les liens symboliques et physiques. Il faut donc imprativement utiliser un programme d'archivage. La mthode suivre est donc de crer une archive temporaire, puis de se dplacer dans le rpertoire destination, et enfin d'extraire l'arborescence de l'archive : 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 l'archive 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 finalement tre dtruites... La vraie solution est de raliser un tube entre les deux processus tar invoqus. Dans ce cas, le transfert se fait simplement via la mmoire vive : cd source tar cv * | (cd destination ; tar xvf -) La commande utiliser est cette fois un peu plus complique, car la commande d'extraction des fichiers 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 l'extraction par tar de l'archive qui lui est transfre par le flux d'entre standard (reprsent ici par '-'). Ces deux commandes sont mises entre parenthses, car l'oprateur '|' du tube est prioritaire sur l'oprateur ';' de concatnation des commandes du shell. Si vous trouvez que cela est un peu compliqu, je vous l'accorde. Cependant, la commande qui utilise le tube consomme deux fois moins d'espace disque et est deux fois plus rapide que la commande qui n'en utilise pas. Je vous invite mesurer le gain de temps sur un rpertoire contenant un grand nombre de donnes (utilisez la commande time !). 5.9.3.2. Les tubes nomms Les tubes crs par l'oprateur '|' constituent ce que l'on appelle des tubes anonymes, car ils sont crs directement par le shell pour une commande donne. Il est possible de crer manuellement des tubes en leur donnant un nom, et de les utiliser a posteriori dans plusieurs commandes. Ces tubes constituent ce que l'on appelle des tubes nomms. En fait, les tubes nomms sont des fichiers spciaux, que l'on cre dans un systme de fichiers capable de les grer. Les seules oprations ralisables sont l'criture et la lecture, sachant que les donnes crites en premier seront forcment les premires donnes lues. C'est ce comportement qui a donn leur nom ces fichiers, que l'on appelle des FIFO (abrviation de l'anglais First In First Out ). De plus, la quantit de donnes en transit dans ces fichiers est souvent trs rduite, ce qui fait que ces donnes sont toujours places dans la mmoire cache du systme. Ainsi, bien qu'il s'agisse de fichiers, aucune criture ou lecture sur disque n'a lieu lors de l'utilisation d'un pipe. Les tubes nomms sont crs par la commande mkfifo, dont la syntaxe est la suivante : DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 132
mkfifo nom
o nom est le nom du tube nomm. Notez que cette commande chouera sur les systmes de fichiers incapables de grer les tubes nomms. Une fois cr, le fichier de tube peut tre utilis comme n'importe quel fichier dans les redirections que l'on a vues dans la section prcdente. Par exemple, la redirection suivante : ls | less
peut tre rcrite pour utiliser un tube nomm temporaire de la manire suivante :
mkfifo /tmp/tempfifo ls > /tmp/tempfifo less < /tmp/tempfifo La destruction d'un tube nomm se fait comme n'importe quel fichier, l'aide de la commande rm. 5.9.3.3. La commande tee La commande tee est un petit programme permettant d'enregistrer les donnes qu'il reoit dans son flux d'entre standard dans un fichier et de les renvoyer simultanment vers son flux de sortie standard. Elle est couramment utilise, en conjonction avec les tubes, pour dupliquer un flux de donnes. Sa syntaxe est la suivante : tee fichier
o fichier est le nom du fichier dans lequel le flux d'entre standard doit tre enregistr. Supposons par exemple que l'on dsire rediriger tous les messages (d'erreur ou non) de la commande ls /proc/1/* dans un fichier result.txt, tout en continuant les visualiser sur l'cran. Pour cela, on utilisera la commande suivante : ls -l /proc/1 2>&1 | tee result.txt
l'issue de cette commande, le fichier 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 d'appeler une autre commande, en passant en paramtre les donnes qu'elle reoit dans le flux d'entre 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 flux d'entre standard. Une fois cette ligne de commande construite, xargs l'excutera. Par exemple, la commande suivante :
ls l
peut tre excute galement de la manire suivante :
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 133
xargs ls
et en tapant la chane de caractres -l suivie du caractre de fin de fichier CTRL+D. La commande xargs est une commande extrmement utile lorsqu'elle est utilise conjointement avec les tubes, parce qu'elle permet d'utiliser le rsultat d'une commande en tant que paramtre pour une autre commande. Ce mcanisme est donc complmentaire de celui des pipes, puisque ceux-ci permettaient d'utiliser le rsultat d'une commande pour alimenter le flux d'entre standard d'une autre commande. Un exemple plus utile que le prcdent permettra de mieux comprendre comment on utilise la commande xargs. Supposons que l'on dsire trouver tous les fichiers d'une arborescence complte dont l'extension est .txt et contenant la chane de caractres test . La liste des fichiers de l'arborescence peut tre dtermine simplement l'aide de la commande find, et la recherche du texte dans les fichiers se fait naturellement l'aide de la commande grep. On utilisera xargs pour construire la ligne de commande pour grep, partir du rsultat fourni par la commande find : find -name "*.txt" | xargs grep -l "test"
Cette commande est plus simple et plus efficace que la commande quivalente :
find -name "*.txt" -exec grep -l "test" {} \; parce que grep n'est excut qu'une seule fois (alors que l'option -exec de la commande find l'excute pour chaque fichier trouv). 5.9.4. Manipulation des variables d'environnement Les systmes Unix permettent de dfinir un environnement d'excution pour chaque programme en cours d'excution. L'environnement est un ensemble de paramtres, que l'on appelle les variables d'environnement, qui permettent de modifier le comportement du programme. Ces variables contiennent une valeur de type chane de caractres, dont la signification est propre chaque variable. Il est d'usage que les noms des variables d'environnement soient crits compltement en majuscules, mais ce n'est pas une obligation. Chaque programme est susceptible de reconnatre un certain nombre de variables d'environnement qui lui sont propres, mais il existe galement des variables standards que tous les programmes utilisent. C'est notamment le cas de la variable d'environnement RATH, 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 fichier de ce programme dans chacun des rpertoires indiqus dans cette variable. Par dfaut, les programmes sont lancs avec l'environnement du programme qui les lance, c'est--dire dans la plupart des cas l'environnement d'excution du shell. Les programmes peuvent galement dfinir de nouvelles variables d'environnement, qui seront ainsi accessibles par les programmes qu'ils lanceront eux-mmes. Comme tout programme, le shell dispose d'un environnement, qu'il utilise pour stocker ses propres variables. En effet, comme nous l'avons dj signal plus haut, le shell est bien plus qu'un interprteur de commande : il est compltement programmable. Et en tant qu'interprteur d'un langage de programmation, il fournit la possibilit de dfinir des variables de ce langage. Les variables du shell sont donc galement des variables d'environnement, mais le shell ne les communique pas par dfaut aux programmes qu'il lance. Pour tre plus prcis, le shell utilise deux environnements diffrents : DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 134
son propre environnement, qui contient les variables d'environnement locales la session du shell en cours ; l'environnement d'excution, dont les variables d'environnement sont transmises aux programmes que le shell lance. Il est trs facile de dfinir une variable du shell. Pour cela, il suffit de lui affecter une valeur, l'aide de la syntaxe suivante : variable=valeur
o variable est le nom de la variable dfinir, et valeur est la valeur que l'on dsire lui affecter. Notez qu'il n'est pas ncessaire de fournir une valeur. Dans ce cas, la variable ainsi dfinie sera vide. Par exemple, la ligne suivante : BONJOUR="Bonjour tout le monde \!"
permet de dfinir la variable BONJOUR. Notez que la valeur est encadre entre guillemets, car elle contient des espaces. Notez galement que le caractre point d'exclamation ('!') est prcd d'un caractre d'chappement antislash ('\'), car il a une signification particulire pour le shell. Ce caractre d'chappement permet simplement de signaler au shell qu'il ne doit pas interprter le caractre qui le suit, et fait donc en sorte que le point d'exclamation fasse partie de la chanes de caractres affecter la variable. Bien entendu, le caractre antislash tant lui-mme un caractre spcial pour le shell, il doit lui-mme tre prfix d'un autre antislash si l'on dsire l'utiliser dans une chane de caractres. La valeur d'une variable peut tre rcupre simplement en prfixant le nom de la variable du symbole dollar ('$'). Ainsi, la commande suivante permet d'afficher le contenu de la variable BONJOUR : echo $BONJOUR Les variables ainsi dfinies ne font partie que de l'environnement du shell, elles ne sont donc pas accessibles aux programmes que le shell lance. Donc, si l'on relance un nouveau shell avec la commande suivante : bash
et que l'on 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 (c'est--dire celui qui est en cours d'excution) n'utilise 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 l'exporter dans l'environnement d'excution. Cela peut tre ralis avec la commande export : export variable
o variable est le nom de la variable du shell exporter dans l'environnement d'excution. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 135
La syntaxe prcdente exporte de manire permanente les variables du shell. Mais il existe galement une autre syntaxe, qui permet de ne dfinir des variables d'environnement que pour l'environnement d'excution d'une seule commande. Cette syntaxe consiste simplement prfixer la commande excuter par la dfinition 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 d'environnement BONSOIR. Cette variable ne sera dfinie que pour ce programme, si l'on quitte ce shell avec un exit, la variable BONSOIR ne sera plus dfinie. Une variable peut tre dtruite tout instant l'aide 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 l'ensemble des variables dfinies avec la commande set. Le tableau donn ci-dessous vous prsentera les variables d'environnement les plus utilises, que la plupart des programmes utilisent pour permettre l'utilisateur de modifier leur comportement : Tableau 5-3. Variables d'environnements courantes Nom Signification HOME Chemin du rpertoire personnel de l'utilisateur. USER Nom de login de l'utilisateur. Cette information est galement disponible au travers de la variable d'environnement LOGNAME. TERM Type de terminal utilis. La valeur de cette variable sert aux applications pour dterminer les caractristiques du terminal et ses fonctionnalits afin d'optimiser leur affichage. La valeur de cette variable est souvent linux sur les consoles Linux, et xterm dans les mulateurs de terminal graphiques sous X11. Nous verrons l'utilit de cette variable plus en dtail dans la Section 6.9.7. SHELL Chemin sur le fichier de programme du shell actuellement utilis. Sous Linux, il s'agit souvent du shell bash. RATH 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 d'une commande classique dans un rpertoire pour que l'utilisateur le lance sans s'en rendre compte). L_LIBRARY_RATH Liste des rpertoires dans lesquels les bibliothques dynamiques seront recherches si elles ne sont pas trouvables dans les rpertoires classiques des bibliothques de programme du systme. C_INCLUE_RATH Liste des rpertoires dans lesquels le compilateur C recherchera les fichiers d'en-tte lors de la compilation des fichiers sources C. Cette liste doit contenir les rpertoires additionnels, qui ne sont pas dj pris en compte automatiquement par le compilateur C. CRLUS_INCLUE_RATH Liste des rpertoires dans lesquels le compilateur C++ recherchera les fichiers d'en-tte lors de la compilation des fichiers sources C/C++. Cette liste doit contenir les rpertoires additionnels, qui ne sont pas dj pris en compte automatiquement par le compilateur C++. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 136
Nom Signification LIBRARY_RATH Liste des rpertoires dans lesquels les bibliothques utiliser lors de l'dition de liens des programmes doivent tre recherches. Cette variable n'est utilise que par les outils de dveloppement lors de la compilation de fichiers sources et elle ne doit pas tre confondue avec la variable d'environnement L_LIBRARY_RATH, qui indique la liste des rpertoires dans lequel l'diteur de liens dynamiques recherchera les bibliothques dynamiques utilises par les programmes lors de leur chargement. Les notions de fichiers sources et de compilation seront dtailles dans le Chapitre 7. TMRIR Rpertoire des fichiers temporaires. Par dfaut, le rpertoire des fichiers temporaires est le rpertoire /tmp/, mais il est possible d'en changer grce cette variable d'environnement. TZ Dfinition de la zone horaire de l'utilisateur. Le systme travaillant exclusivement en temps universel, chaque utilisateur peut dfinir sa propre zone horaire pour obtenir l'affichage des dates et des heures dans son temps local. Le format de cette variable d'environnement 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 l'heure universelle pour obtenir l'heure locale, le nom du fuseau horaire pour l'heure d't, le dcalage pour l'heure d't, et les dates de dbut et de fin de l'heure d't. Les dcalages horaires doivent tre exprims avec un '+' pour les fuseaux horaires placs l'ouest de Greenwich, '-' pour ceux situs l'est. Les dates de dbut et de fin de la priode d'heure d't peuvent tre exprims de deux manires diffrentes. La premire mthode est d'indiquer le numro du jour dans l'anne aprs la lettre 'J'. Ce numro ne doit pas tenir compte du 29 fvrier, mme pour les annes bissextiles. La deuxime mthode est d'indiquer le mois de l'anne, la semaine du mois et le jour de la semaine, spars par des '.', et aprs la lettre 'M'. Les mois sont compts de 1 12, les semaines de 1 5 et les jours de 0 6, 0 tant le dimanche. Seul le premier champ est obligatoire, et il est possible d'utiliser les noms de fuseaux horaires dfinis par la bibliothque C. En France, on utilise normalement le fuseau CES (temps d'Europe centrale). LANG Nom de la locale utiliser par dfaut pour les paramtres d'internationalisation des applications. Cette valeur sera utilise pour les paramtres qui n'en dfinissent 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 l'une des variables d'environnement dcrites ci-dessous. LC_MESSAGES Nom de la locale utiliser pour dterminer la langue des messages. La valeur par dfaut est spcifie par la variable d'environnement LANG. LC_TYRE Nom de la locale utiliser pour dterminer les rgles de classification des caractres. La classification des caractres permet de dire si un caractre est un chiffre ou non, s'il est en majuscule ou en minuscule, etc. La valeur par dfaut est spcifie par la variable d'environnement LANG. LC_COLLATE Nom de la locale utiliser pour dterminer les rgles de comparaison des caractres. La comparaison des caractres est utilise pour les tris lexicographiques (tri par ordre alphabtique par exemple). La valeur par dfaut est spcifie par la variable d'environnement LANG. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 137
Nom Signification LC_MONETARY Nom de la locale utiliser pour dterminer l'emplacement et le caractre reprsentant le symbole montaire du pays. La valeur par dfaut est spcifie par la variable d'environnement LANG. LC_NUMERIC Nom de la locale utiliser pour dterminer les conventions locales d'criture des nombres (sparateur dcimal, format de la virgule, etc.). La valeur par dfaut est spcifie par la variable d'environnement LANG. En rsum, le shell utilise les variables d'environnement du systme pour grer ses propres variables, et permet de les exporter vers l'environnement d'excution qu'il communique aux commandes qu'il lance. Un grand nombre de variables d'environnement classiques sont reconnues par les programmes. Elles servent paramtrer leur comportement. Nous reverrons ultrieurement quelques-unes de ces variables lors de la configuration du systme de base. 5.9.5. Caractre d'chappement et chanes de caractres Un certain nombre de caractres sont interprts par le shell d'une manire spciale. Nous en avons dj vu quelques-uns pour les redirections et les tubes, mais il en existe d'autres. Par consquent, il faut utiliser une syntaxe particulire lorsqu'on dsire utiliser un de ces caractres dans une commande du shell sans qu'il soit interprt par le shell. Pour cela, il suffit de faire prcder ces caractres du caractre d'chappement antislash (caractre de la barre oblique inverse, '\'). Ce caractre permet d'indiquer 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 d'un autre antislash, lorsqu'on veut l'utiliser en tant que caractre normal. Le caractre d'chappement antislash permet galement, lorsqu'il est plac en fin de ligne, de supprimer le saut de ligne qui le suit. Cela signifie qu'il permet de rpartir une commande trop longue sur plusieurs lignes, des fins 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. C'est pour cela que le shell permet de dfinir des chanes de caractres dont il ignore le contenu lors de l'analyse syntaxique. Ces chanes de caractres sont simplement donnes entre guillemets simples (caractre '). Par exemple, la commande suivante : MESSAGE='La syntaxe est A | B'
permet d'affecter la chane de caractres La syntaxe est A | B, contenant des espaces et le caractre | normalement utilis par le shell pour les tubes, dans la variable d'environnement 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 d'un caractre d'chappement. On veillera ne surtout pas confondre les guillemets simples (caractre ') avec les guillemets inverses (caractre `). Ces deux caractres se ressemblent en effet normment dans certaines polices de caractres, mais ont nanmoins une signification trs diffrente. Le premier sert dfinir des chanes DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 138
de caractres, et le deuxime excuter une commande et en inclure le rsultat dans une autre commande. Nous verrons plus loin comment utiliser ce type de guillemets. Les guillemets simples sont donc trs pratiques pour crire simplement une chane de caractres, mais ne permettent pas de bnficier des fonctionnalits de substitutions du shell, comme par exemple le remplacement d'une variable par sa valeur dans la chane de caractres. De plus, elles ne peuvent pas contenir de guillemets simples, puisque c'est leur caractre de terminaison. C'est pour ces raisons que le shell donne la possibilit de dfinir des chanes de caractres plus souples, l'aide 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 signification initiale. Il est donc possible, par exemple, d'utiliser des variables d'environnement dans les chanes de caractres de ce type : echo "Mon nom est $USER" Le caractre d'chappement 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 fin de la chane de caractres s'il n'tait pas prcd d'un antislash. Note : Remarquez que les guillemets et les caractres d'chappement ne sont utiliss que pour l'analyse de la ligne de commande. Une fois toutes les chanes de caractres et toutes les substitutions traites, les guillemets et les caractres d'chappement inutiles sont supprims. En pratique, ce sont tous les caractres d'chappement et les guillemets qui restent aprs traitement de la ligne de commande et qui ne font pas partie du rsultat d'une 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 l'excuter. 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 affich. 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 l'utilisation des guillemets permet de passer toute la phrase en un seul paramtre. On peut voir la diffrence en utilisant plus d'un espace entre chaque mot : les espaces superflus ne sont conservs que dans la premire commande. 5.9.6. Les substitutions L'une des fonctionnalits les plus puissantes du shell est sans doute sa capacit effectuer des substitutions d'expressions par leur valeur. L'une des substitutions les plus courantes est sans doute le remplacement d'une variable par sa valeur, mais le shell peut faire beaucoup plus que cela. Les lignes de commandes peuvent tre crites en utilisant diffrents types d'expressions spciales, qui seront remplaces par leur valeur par le shell avant l'excution de la commande. Ces expressions permettent de spcifier des motifs de chane de caractres, d'exprimer des chemins partiels sur des fichiers ou des rpertoires, de rcuprer la valeur des variables du shell, et de calculer des expressions mathmatiques, voire d'inclure le rsultat d'une autre commande dans la ligne de commande en cours. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 139
Les mcanismes des substitutions dcrits ci-dessous sont prsents par ordre de priorit dcroissante. Cela signifie que si une expression substituable contient elle-mme une autre expression substituable de priorit infrieure, cette expression sera remplace aprs la substitution de l'expression contenant. 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 d'un prfixe, suivi d'une partie variable, suivie d'un suffixe. La partie variable du motif est celle qui subira les substitutions pour gnrer une liste de chanes de caractres commenant par le prfixe suivi du rsultat de la substitution et se terminant par le suffixe. Cette partie variable doit tre spcifi entre accolades, et prend la forme d'une 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 qu'il s'agit l d'une factorisation. C'est rigoureusement exact. 5.9.6.2. Substitution du nom d'utilisateur Le caractre tilde ('~') est remplac par le nom de l'utilisateur courant ou, dfaut de nom, par le chemin sur le rpertoire personnel de cet utilisateur. Il est possible de spcifier 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 fichiers d'extension .txt dans le rpertoire personnel de l'utilisateur jean. 5.9.6.3. Remplacements de variables Comme il l'a dj t indiqu plus haut, la valeur des variables du shell et des variables d'environnement peut tre rcupre en prfixant le nom de la variable par le caractre dollar ('$'). En fait, cette criture est l'une des formes les plus simples que peuvent prendre les substitutions de paramtres. En effet, il est possible de remplacer l'expression 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 l'aide d'accolades. La syntaxe exacte complte de ce type de substitution est donc la suivante : ${expression}
o expression est l'expression qui dfinit 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 n'est pas dfinie. Pour cela, on utilisera la syntaxe suivante : ${variable:-valeur} DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 140
o valeur est la valeur par dfaut utiliser dans ce cas. Notez que la variable reste indfinie aprs la substitution. Pour fixer la valeur de la variable cette valeur par dfaut en plus d'effectuer la substitution, on utilisera plutt la syntaxe suivante :
${variable:=valeur}
valeur a toujours la mme signification dans cette syntaxe. Il est parfois prfrable d'afficher un message d'erreur plutt que de donner une valeur par dfaut lorsqu'une variable n'est pas dfinie. Cela peut se faire avec la syntaxe suivante : ${variable:?message}
o message est le message afficher dans le cas o la variable variable est non dfinie ou de valeur nulle. Si l'on veut tester si une variable est non dfinie et renvoyer une valeur spcifique si elle est dfinie, on utilisera la syntaxe suivante : ${variable:+valeur}
o valeur est la valeur renvoyer si la variable est dfinie. Si la variable n'est pas dfinie, la substitution sera faite avec la chane de caractres vide (l'expression complte sera donc supprime). Le shell permet galement de faire la substitution avec une sous-chane de la valeur de la variable, partir d'une position donne et d'une 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-points prcdents si on dcide de ne pas spcifier 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 l'on veut obtenir la longueur d'une 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 d'une variable est une chane de caractre prfixe d'une autre chane de caractres particulire. Le shell permet d'extraire la chane de caractres principale, en supprimant ce prfixe. Pour raliser cette opration, on utilisera l'une des syntaxes suivantes : ${variable#prfixe}
ou : ${variable##prfixe}
o variable est la variable contenant la chane de caractres traiter, et prfixe est le prfixe supprimer. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 141
En fait, le prfixe peut tre spcifi l'aide d'un 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 d'interprter ce motif, et donc plusieurs choix de prfixes possibles supprimer. La premire syntaxe devra tre utilise lorsqu'on dsire supprimer le plus petit prfixe possible correspondant au motif. La deuxime syntaxe, quant elle, permettra de supprimer le prfixe le plus long. Par exemple, si la variable VAR contient la chane de caractres abbbc, la commande suivante : echo ${VAR#a*b} affichera la chane de caractres bbc, car le plus petit prfixe correspondant au motif a*b est ab.
Inversement, la commande :
echo ${VAR##a*b} utilisera le prfixe 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 Secion5.9.7. Le shell fournit une syntaxe similaire pour extraire des suffixes de la valeur des variables. Cette syntaxe utilise simplement le caractre % au lieu du caractre #. Comme pour les prfixes, le fait de doubler ce caractre implique que le suffixe le plus long correspondant au motif sera utilis, alors que l'utilisation d'un seul % permet de choisir le suffixe le plus court. Ainsi, la commande : echo ${VAR%b*c} affichera la chane de caractres abb, alors que la commande : echo ${VAR%%b*c} n'affichera que a. Pour terminer ce tour d'horizon 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} affichera la chane de caractres adab. Ce remplacement n'est donc effectu qu'une seule fois. Si l'on veut que toutes les occurrences du motif soient remplaces par la chane de remplacement, il suffit de doubler le premier / : ${variable//motif/remplacement}
Dans les deux syntaxes, la prsence du champ remplacement est facultative. Cela permet de supprimer purement et simplement les sous-chanes de caractres qui correspondent au motif. La syntaxe des motifs sera dtaille dans la Section 5.9.7. Cependant, une prcision doit tre signale : si le motif commence par le caractre #, il sera obligatoirement recherch au dbut de la chane de caractres contenue dans la variable. De mme, si le motif commence par le caractre %, il sera obligatoirement recherch la fin de cette chane. Ces deux notations permettent d'obtenir le mme effet que les suppressions de prfixes et de suffixes prsentes plus haut. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 142
5.9.6.4. Substitution du rsultat d'une commande Le shell peut valuer une commande apparaissant dans une expression afin de la remplacer par son rsultat dans la commande appelante. 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 (c'est--dire ce qu'elle enverra ce rsultat sur le flux standard de sortie). Pour donner un exemple, la commande suivante :
kill `cat /var/pid/p.pid`
a pour rsultat de lancer un signal SIGTERM au processus dont le PID est stock dans le fichier /var/pid/p.pid. La commande cat est utilise pour afficher le contenu de ce fichier, et elle est substitue par ce contenu. En fin de compte, la commande kill est applique au PID affich 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 d'un antislash s'ils 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, puisqu'elle marque la fin de la commande). 5.9.6.5. valuation d'expressions arithmtiques En gnral, le shell ne manipule que des chanes de caractres. Cependant, il est capable d'valuer des expressions mathmatiques simples faisant intervenir des entiers. Pour cela, il faut utiliser la syntaxe suivante : $((expression))
o expression est l'expression valuer. Les expressions mathmatiques peuvent contenir tous les oprateurs classiques du langage C : addition, soustraction, multiplication et division. Il existe en plus un oprateur d'lvation 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 l'expression qui les utilise est vraie, et 0 dans le cas contraire. Les oprateurs disponibles sont ==, <, <=, >, >= et !=. Les tests peuvent tre composs l'aide des oprateurs && ( ET logique ) et || ( OU logique ). Les divers oprateurs d'affectation du langage C +=, -=, etc. sont galement disponibles. 5.9.6.6. Substitution de commandes Nous avons dj vu qu'il tait possible de rcuprer le rsultat d'une commande et de l'injecter dans le flux d'entre standard d'un processus par l'intermdiaire d'une pipe (cf. Section 5.9.3.2). Mais le shell DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 143
fournit une gnralisation de cette fonctionnalit sous la forme des substitutions de commandes. Ces substitutions permettent de lancer une commande et de remplacer son expression par une pipe nomme, grce auquel on peut communiquer avec le processus qui excute la commande. La syntaxe utilise par les substitutions de commande est similaire celle des redirections classiques : <(command)
ou :
>(command)
o command est la commande substituer. Note : Attention ne pas mettre d'espace entre le caractre de redirection et la parenthse ouvrante, faute de quoi le shell signalera une erreur. La premire syntaxe permet de lancer une commande en arrire-plan en redirigeant son flux standard de sortie vers un descripteur de fichiers du shell. Le rsultat de cette substitution est le nom du fichier /dev/fd/n, permettant de lire les donnes crites par la commande dans ce descripteur de fichier. En pratique, on utilise donc cette substitution en lieu et place d'un fichier d'entre pour une commande normale. La deuxime commande permet de lancer galement une commande en arrire-plan, mais en redirigeant le flux d'entre standard de cette commande cette fois. Il est alors possible de fournir les donnes ncessaires cette commande en crivant dans le fichier /dev/fd/n dont le nom est fourni par le rsultat de la substitution. Ces deux commandes permettent donc de simplifier l'usage des pipes nomms, en vitant d'avoir crer un fichier de tube nomm manuellement et d'avoir lancer les deux commandes devant se servir de ce tube pour communiquer. Ainsi, la commande suivante : cat <(ls)
est fonctionnellement quivalente la srie de commandes suivante :
mkfifo /tmp/lsfifo ls > /tmp/lsfifo cat /tmp/lsfifo rm /tmp/lsfifo
Les substitutions de commandes sont donc nettement plus pratiques et plus sres, car elles n'imposent pas la cration d'un fichier 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 signifie que les rsultats de substitutions sont analyss pour identifier les mots qu'ils contiennent, en se basant sur la notion de sparateur. Par dfaut, les sparateurs utiliss sont l'espace, le caractre de tabulation et le retour de ligne, mais il est possible de spcifier des sparateurs diffrents l'aide de la variable d'environnement IES (abrviation de l'anglais Internal Field Separator ). Par exemple, le rsultat de la commande ls dans la commande suivante : echo `ls` DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 144
est une chane de caractres contenant la liste des fichiers 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 fichiers renvoys par la commande ls. Au final, la commande echo est appele, avec comme paramtres ces noms de fichiers, raison d'un par paramtre. Les noms de fichiers sont donc affichs sur une seule ligne. Note : Ce dcoupage en mot est effectu automatiquement par le shell la suite des substitutions vues prcdemment. Cela signifie en particulier que s'il n'y a pas de substitution, il n'y 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 l'expression en cours de traitement, il interprtera la partie de l'expression contenant ces caractres comme un motif reprsentant des chemins de fichier Unix. Les caractres * et ? auront donc le comportement que l'on 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 fichiers 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 spcifies en indiquant le premier et le dernier caractre, spars par un tiret. Par exemple, la commande suivante : ls [a-c,m-t]*.txt
permet d'afficher tous les fichiers dont le nom commence par les lettres a, b, c et les lettres allant de m t, et dont l'extension 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 s'appliquera pas, par dfaut, sur le rpertoire courant et le rpertoire parent. Paramtrer bash pour qu'il prenne en compte ces rpertoires peut tre extrmement dangereux, surtout avec une commande telle que rm -f *, qui dans ce cas effacerait galement les rpertoires parents en plus du contenu du rpertoire courant ! 5.9.7. Les expressions rationnelles Les substitutions de variables et de noms de fichiers utilisent des motifs pour identifier des chanes de caractres. Ces motifs peuvent tre reconnus dans plusieurs chanes de caractres diffrentes, car ils contiennent une ou plusieurs parties variables qui pourront reprsenter chacune une sous-chane des chanes qui vrifient 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 dfinir les motifs de chanes de caractres dans le shell bash est un sous- ensemble d'un langage plus complexe permettant de dcrire ce que l'on appelle les expressions rationnelles (l'usage dit galement expressions rgulires ). Le langage des expressions rationnelles DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 145
est relativement compliqu, mais extrmement puissant. Ce langage permet d'identifier avec prcision des sous-chanes de caractres dans un chane de caractres l'aide des parties variables des expressions rationnelles, et permet ventuellement de remplacer ces sous-chanes par des chanes de substitutions. Malheureusement, la description des expressions rationnelles pourrait prendre plusieurs pages, aussi ne verrons-nous ici que les expressions utilisables dans les substitutions du shell bash. Comme vous l'avez sans doute dj devin au travers des exemples prcdents, le caractre '*' permet d'identifier une quelconque chane de caractres, y compris la chane vide. Utilis dans les expressions rationnelles, il constitue la partie variable principale de ces expressions. De la mme manire, le caractre '?' reprsente un et un seul caractre quelconque. Ce caractre sera donc utilis quand on dsirera contrler la taille de la partie variable d'une expression rationnelle, ventuellement en le rptant un certain nombre de fois. Les deux caractres de substitutions prcdents peuvent contenir n'importe quel caractre, ce qui peut parfois ne pas tre assez restrictif dans la dfinition d'un motif. Le shell fournit donc une syntaxe plus volue, permettant de dfinir 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 l'ensemble des caractres qui peuvent apparatre dans le motif ainsi dfini. Notez que dans le cas d'une suite de caractres, il suffit de spcifier le premier et le dernier caractre, et de les sparer par un trait d'union (caractre '-'). Ainsi, le motif suivant :
[a-egt]
reprsente n'importe lequel des caractres de 'a' 'e', plus les caractres 'g' et 't'. Note : Pour spcifier le caractre - lui-mme, il suffit de le placer tout seul au dbut ou la fin de la liste de caractres spcifie entre les crochets. De mme, pour spcifier le caractre ']' lui-mme (normalement utilis pour marquer la fin du jeu de caractres), il faut le placer au dbut de la liste, juste aprs le crochet ouvrant. Pour finir, sachez que le shell bash est galement capable de prendre en charge des expressions rationnelles plus complexes que celles prsentes ici. Cependant, ces expressions ne sont pas actives par dfaut, et ne sont donc accessibles qu'en 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 l'excution du programme, de raliser des boucles et de structurer l'ensemble d'un programme. Le shell n'chappe pas la rgle, et fournit la plupart des constructions classiques. Cette section a pour but d'exposer 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 d'un antislash), soit par un point-virgule. Les instructions peuvent tre pourtant trs complexes, car elles peuvent contenir des tubes et des redirections. En fait, une instruction peut peu prs tre dfinie comme tant une ligne de commande normale du shell. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 146
Le shell permet bien entendu de raliser des instructions composes, afin de regrouper plusieurs traitements dans un mme bloc d'instructions. La mthode la plus simple pour raliser un bloc d'instructions 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 d'instructions : { cd /tmp rm *.bak }
Notez que l'accolade fermante est considre comme une instruction part entire. Cela signifie que si l'on ne met pas l'accolade fermante sur une ligne indpendante, il faut faire prcder l'instruction prcdente d'un point-virgule. De mme, il faut le faire suivre d'un autre point-virgule s'il ne se trouve pas la fin d'une ligne. Les instructions des instructions composes cres l'aide des accolades sont excutes au sein du shell courant. Les variables qu'elles dfinissent, ainsi que les changements de rpertoires, sont donc toujours valides l'issue de l'excution de ces instructions. Si cela n'est pas dsirable, on pourra crer des instructions composes l'aide de parenthses. Les instructions seront alors excutes dans un autre shell, lanc pour l'occasion, et elles n'auront donc pas d'effet de bord imprvu dans le shell appelant. Par exemple, le rpertoire courant l'issue de l'instruction compose prcdente est le rpertoire /tmp/, alors que l'instruction compose suivante : ( cd /tmp rm *.bak )
ne change pas le rpertoire courant. Note : On ne confondra pas les instructions composes utilisant des parenthses et les substitutions de rsultat de commande. Les instructions composes renvoient le code d'erreur de la dernire instruction excute, alors que le rsultat des substitutions est ce que la commande a crit sur son flux de sortie standard. Le shell permet galement de raliser des instructions composes conditionnelles, o l'excution de chaque instruction de l'instruction compose est conditionne par le rsultat de l'instruction prcdente. Ces instructions composes sont dfinies l'aide 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 l'oprateur ||, la commande command2 n'est excute que si le code de retour de la commande command1 est non nul, ou, autrement dit, si cette commande ne s'est pas excute correctement. Inversement, avec l'oprateur &&, la commande command2 n'est excute que si la premire commande s'est excute correctement (et renvoie donc un code de retour nul). Par exemple, la commande suivante :
permet d'effacer tous les fichiers d'extension .txt, ou d'afficher le message d'erreur Aucun fichier supprimer s'il n'existe pas de fichier ayant une telle extension. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 147
Les instructions composes peuvent tre utilises comme n'importe quelle commande normale. En particulier, elles peuvent tre utilises dans des commandes plus complexes, par exemple comme destination d'un tube. C'est ce que faisait l'exemple 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 d'autres paramtres peuvent tre fournis par le processus appelant par l'intermdiaire de variables d'environnement et de descripteurs de fichiers. Le code de retour, quant lui, est un entier signalant si l'excution du processus s'est termine correctement ou si des erreurs ont eu lieu. Si les codes d'erreurs varient grandement d'un programme un autre, la valeur 0 signifie toujours, et ce quel que soit le programme, que l'excution s'est droule correctement. Il est possible de tester le code de retour d'une commande avec l'instruction if. La syntaxe la plus simple pour un test est la suivante : if commande ; then action fi
o commande est la commande dont on dsire tester le code de retour, et action est la commande excuter si ce code vaut 0 (c'est--dire, si la commande commande s'est excute correctement). Il peut paratre rducteur de ne pouvoir tester que le code de retour d'une commande. Mais en fait, c'est 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 qu'on lui passe, et d'ajuster son code d'erreur en consquence. Par exemple, pour tester l'galit d'une variable d'environnement avec une chane de caractres, on utilisera la syntaxe suivante : if [ $variable == valeur ] ; then action fi
Notez que dans cette syntaxe, le test effectu est une commande complte. Cela implique qu'il faut mettre une espace entre chaque paramtre, et en particulier entre le nom de la commande ([), le premier oprande ($variable), l'oprateur utilis (==), le deuxime oprande (valeur) et le caractre de marque de fin de test (]). La commande [ est capable d'effectuer tous les tests standards. Par dfaut, elle considre que les deux oprandes du test sont des chanes de caractres, et elle utilise l'ordre lexicographique pour les comparer. Les tests d'galit et d'ingalit sont effectus respectivement avec les oprateurs == et !=. Les oprateurs d'antriorit dans l'ordre lexicographique sont < et <=, et les oprateurs de postriorit sont > et >=. Notez que l'utilisation 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 d'chappement antislash. L'ordre lexicographique convient dans la plupart des cas, mais il n'est pas trs appropri pour la comparaison de valeurs numriques. Par exemple, le test suivant : if [ -1 \< -2 ] ; then echo "-1 est plus petit que -2" DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 148
fi
est vrifi, car le caractre 1 prcde le caractre 2 dans l'ordre lexicographique. La commande [ fournit donc la possibilit d'utiliser une autre syntaxe pour comparer les entiers. Cette syntaxe utilise les options 1 et g respectivement pour les tests d'infriorit stricte et de supriorit stricte, et les options 1e et ge respectivement pour les tests d'infriorit et de supriorit ou d'galit. Ainsi, le test :
if [ $i -gt 3 ] ; then echo "$i est suprieur 3" fi
permet de comparer la valeur entire de la variable i avec le nombre 3. Nous avons vu dans la Section 5.9.8.1 que les oprateurs || et && permettent de tester le code de retour d'une commande, et qu'en fonction de la valeur de ce code de retour, d'excuter 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 l'instruction 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 [ n'est excute que si le premier test est vrifi. L'utilisation de l'oprateur || se fait selon le mme principe. Il est bien entendu possible de regrouper plusieurs commandes de test ensemble, l'aide de parenthses. Comme dans la plupart des langages informatiques, l'instruction if peut prendre une forme plus complexe pour traiter les cas o le test n'est pas vrifi. Ainsi, pour excuter une action spcifique 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 l'action 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 l'on 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 d'optimisation, le shell peut simuler le comportement du programme [, et viter ainsi de le lancer chaque fois qu'il a faire un test. Cependant, le principe originel tait bien DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 149
celui dcrit ci-dessus. Cette description, bien que n'tant 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 d'avoir manipuler cette valeur directement, car les structures de contrle du shell telles que if permettent d'effectuer les actions qui s'imposent sans avoir la connatre. Pour ceux qui savent programmer en C, sachez que le code de retour est la valeur renvoye par la fonction C exi ou par l'instruction return de la fonction principale main. Les paramtres de la ligne de commande, quant eux, sont rcuprables par l'intermdiaire des paramtres de la fonction principale main. Il ne faut pas oublier que la fonction premire du shell est de permettre les manipulations de fichiers. Il n'est donc pas tonnant que la commande [ permette galement de raliser tous les tests imaginables sur les fichiers. Ces tests vont de l'existence d'un fichier au test de sa nature et de ses attributs, en passant par les tests sur l'identit de son propritaire et de 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 fichier sur lequel le test doit porter. Les principales options utilisables dans les tests sur les fichiers sont rcapitules dans le tableau ci- dessous : Tableau 5-4. Tests sur les fichiers Option Signification -e Test d'existence d'un fichier ou d'un rpertoire. -d Test d'existence d'un rpertoire. -f Test d'existence d'un fichier normal. -s Test d'existence d'un fichier et vrification que sa taille est non nulle. -L Test d'existence d'un lien symbolique. -b Test d'existence d'un fichier spcial de priphrique de type bloc (disque dur, CD-ROM, lecteur de cassettes, etc.). -c Test d'existence d'un fichier spcial de priphrique de type caractre (port srie, port parallle, carte son...). -p Test d'existence d'un tube. -r Test d'existence du fichier et d'accessibilit en lecture de ce fichier. -w Test d'existence du fichier et d'accessibilit en criture de ce fichier -x Test d'existence du fichier et de possibilit d'excution de ce fichier. -g Test d'existence du fichier et de prsence du bit setgid sur ce fichier. -u Test d'existence du fichier et de prsence du bit setuid sur ce fichier -k Test d'existence du fichier et de prsence du bit sticky sur ce fichier. -O Test d'existence du fichier et d'appartenance de ce fichier l'utilisateur effectif courant. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 150
Option Signification -G Test d'existence du fichier et d'appartenance de ce fichier au groupe effectif courant. -N Test d'existence du fichier et de modification de ce fichier depuis la dernire fois qu'il a t lu. Note : Ce tableau n'est pas exhaustif, mais les options les plus importantes et les plus utilises s'y trouvent. Vous pourrez vous rafrachir la mmoire sur les notions de bit setuid, setgid et sticky, ainsi que sur les notions d'utilisateur et de groupe effectifs en relisant la Section 4.2. La commande [ accepte galement les options -n et -o, qui permettent respectivement de tester si un fichier est plus rcent ou plus vieux qu'un autre, en se basant sur les dates de dernire modification de ces fichiers. Ces deux oprateurs s'utilisent avec la syntaxe suivante : if [ fichier1 option fichier2 ] ; then . . . fi
o fichier1 et fichier2 sont les deux fichiers sur lesquels la comparaison doit porter, et option est l'une des options -n ou -o. 5.9.8.3. Le branchement conditionnel Lorsqu'on veut effectuer diffrentes oprations selon la valeur d'une variable, l'instruction 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 spcifier quelle action doit tre prise pour chaque valeur de la variable. Le branchement conditionnel s'utilise de la manire suivante : case valeur in ( motif1 | motif2 | ... ) commande1 ;; ( motifn | motifn+1 | ... ) commande2 ;; . . . esac
o motif1, motif2... motifn+1 sont des motifs spcifiant 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 l'un de ses motifs correspondants. Une fois excute, la recherche se termine, et l'excution reprend la suite du branchement conditionnel. Par exemple ce branchement conditionnel : case $i in ( *.txt ) echo "$i est un fichier texte" ;; ( *.gz ) echo "$i est compress avec gzip" ;; ( *.tar ) echo "$i est une archive" ;; esac
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 151
affiche la nature du fichier 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 fin de la boucle, et action est l'instruction (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, l'instruction action est excute. L'instruction until utilise la mme syntaxe que l'instruction while : until commande ; do action done
ceci prs que l'instruction action est excute tant que la commande commande renvoie un code de retour non nul. L'instruction until utilise donc simplement le test inverse de celui de l'instruction while. Bien entendu, il est possible d'utiliser la commande [ pour effectuer des tests plus complexes que le simple test du code de retour d'une commande. Par exemple, la boucle suivante calcule la somme des dix premiers entiers : result=0 i=0 while [ $i -le 10 ] ; do result=$(($result + $i)) i=$(($i + 1)) done echo $result 5.9.8.5. Les itrations Les itrations sont des boucles qui s'excutent pour chaque lment d'un ensemble donn. Le shell gre les itrations par l'intermdiaire de l'instruction 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 l'itration, ensemble est l'ensemble des valeurs que peut prendre cette variable, et action est la commande (simple ou compose) excuter pour chaque valeur de cette variable. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 152
Le principe des itrations est trs simple. Pour chaque valeur indique dans l'ensemble des valeurs, la commande est excute, avec la valeur en question accessible dans la variable utilise pour l'itration. Par exemple, la commande suivante : for i in *.txt ; do mv $i ${i/%.txt/.doc} done
permet de renommer tous les fichiers portant l'extension .txt en fichier du mme nom, mais avec l'extension .doc. Il n'est pas ncessaire de prciser l'ensemble des valeurs que peut prendre la variable. Dans ce cas, l'ensemble utilis sera celui de tous les paramtres du script ou de la fonction. Nous verrons plus loin comment raliser des fonctions et des scripts, ainsi que la manire de rcuprer leurs paramtres. 5.9.8.6. Les ruptures de squence Il est parfois ncessaire de modifier l'ordre d'excution dans les boucles et les itrations du shell. Par exemple, il est souvent ncessaire de sortir de la boucle courante, soit parce qu'on ne peut plus la continuer dans de bonnes conditions, soit parce que le traitement est termin. C'est notamment le cas lorsqu'une erreur se produit, ou lorsqu'on recherche une valeur spcifique en itrant sur les valeurs possibles d'un ensemble. Le shell fournit donc les instructions break et continue, qui permettent respectivement de sortir de la boucle courante et de passer directement l'itration suivante. Ces deux commandes peuvent tre utilises aussi bien l'intrieur des boucles while et until que dans les itrations crites avec l'instruction for. Par exemple, le calcul de la somme des dix premiers entiers aurait pu tre crit de la manire suivante : result=0 i=0 while true ; do result=$(($result + $i)) i=$(($i + 1)) if [ $i ==11 ] ; then break ; fi done echo $result Les instructions break et continue peuvent prendre un paramtre entier indiquant le niveau d'imbrication de la boucle sur laquelle elles s'appliquent. Ce paramtre doit imprativement tre suprieur sa valeur par dfaut, c'est--dire 1. Ainsi, pour sortir directement d'une double boucle lorsqu'on 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 signifie que l'on peut crer des fonctions pour regrouper des sries d'instructions couramment excutes. La syntaxe permettant d'crire de telles fonctions est la suivante : function nom () { instructions } DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 153
o nom est le nom de la fonction, et instructions est la liste des commandes excuter dans cette fonction. Vous constaterez qu'il n'y a pas de dclaration des paramtres de cette fonction. C'est normal : les paramtres des fonctions sont passs implicitement dans les variables d'environnement $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 signifie que les paramtres du script ne sont pas accessibles dans le corps d'une fonction, puisqu'ils 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 l'excution de cette fonction. Si l'on veut dfinir des variables locales, on prcdera la dfinition 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 l'aide de l'instruction return. Par exemple, la fonction suivante calcule la somme des entiers de 0 la valeur de l'entier qu'elle reoit en paramtre : function somme () { local result=0 local i=0 while [ $i -le $1 ] ; do result=$(($result + $i)) i=$(($i + 1)) done return $result } Ce code d'erreur pourra tre rcupr par l'appelant dans la variable d'environnement $? : somme 10 echo $? 5.9.8.8. Les entres / sorties de donnes Tout langage de programmation qui se respecte dispose de possibilits d'entre / sortie pour permettre la communication avec l'utilisateur de manire interactive, et le shell n'chappe pas la rgle. Nous avons dj vu la commande echo dans bon nombre des exemples qui prcdaient, et vous avez sans doute devin qu'il s'agissait l de la commande qui permet d'afficher du texte l'cran. Son utilisation est des plus simples, puisqu'elle se contente d'envoyer sur le flux de sortie standard une chane de caractres contenant tous les paramtres qu'elle reoit, spars par des espaces. Nous ne nous attarderons donc pas sur cette commande, qui n'a pas d vous poser de problmes jusqu' prsent. Il ne nous reste donc plus qu' voir la manire de demander l'utilisateur de saisir une valeur. Avec bash, la demande de saisie des donnes se fait classiquement l'aide de la commande read. Cette commande lit une ligne sur le flux d'entre standard, la dcoupe en une ou plusieurs donnes et place DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 154
les rsultats dans les variables d'environnement qu'elle reoit en paramtre. La syntaxe de read est donc la suivante : read variable1 variable2 ... variablen
o variable1, variable2, etc. sont les noms des variables d'environnement dans lesquelles les rsultats de la saisie doivent tre placs. La commande read utilise les sparateurs indiqus dans la variable d'environnement IES pour dcouper la ligne lue dans le flux d'entre standard. Si le nombre de variables spcifi est infrieur au nombre de mots de cette ligne aprs dcoupage, les premires variables d'environnement 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 d'une ligne dans la variable d'environnement MOT et de placer le reste dans la variable RESTE. La commande read dispose d'une syntaxe simplifie, qui ne prend aucun paramtre. Dans ce cas, la ligne lue dans le flux d'entre standard est place telle quelle dans la variable d'environnement RERLY. Il est la charge du programmeur d'analyser son contenu. Le shell dispose galement d'une instruction volue permettant de raliser des menus simplifis : l'instruction select. Cette instruction construit un menu partir d'un certain nombre de choix, chaque choix tant prcd par un numro, et demande l'utilisateur de taper le numro de son choix. Elle affecte alors la valeur du choix correspondant une variable d'environnement, et excute une commande pour le traitement du choix. La syntaxe gnrale de l'instruction 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 l'utilisateur, 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 l'utilisateur est incorrect, la variable de contrle reoit la valeur nulle. Le programmeur peut rcuprer la valeur saisie par l'utilisateur dans la variable d'environnement RERLY et effectuer un traitement d'erreur appropri. L'instruction select est une boucle. Le menu est repropos aprs chaque excution de l'action action. La sortie de cette boucle ne peut se faire que si un caractre de fin de fichier (CTRL + D) est lu sur le flux d'entre standard, ou si une option de menu spcifique est propose pour quitter cette boucle. Vous trouverez un exemple de menu simplifi ci-dessous : select LU in A B C D Sortir; do case $LU in ("A") echo "Vous avez choisi A" ;; ("B") echo "Vous avez choisi B" ;; ("C") echo "Vous avez choisi C" ;; ("D") echo "Vous avez choisi D" ;; ("Sortir") break ;; esac DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 155
done 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 l'on en a besoin. D'autre part, la saisie d'une longue ligne de commande multiplie les risques de faire une faute de frappe et d'avoir corriger la commande. Cela peut au mieux faire perdre son temps l'utilisateur, et au pire l'nerver. Le shell fournit donc un mcanisme pour donner un nom simplifi aux commandes complexes : le mcanisme des alias. Les alias reprsentent en fait des chanes de caractres complexes, et sont remplacs automatiquement par le shell lorsqu'il analyse les lignes de commandes. C'est un mcanisme plus souple que celui des variables d'environnement, et qui permet de dfinir des macro- commandes plus facilement qu'avec les fonctions du shell. Pour crer un alias, vous devrez utiliser la syntaxe suivante : alias nom=chane
o nom est le nom de l'alias, 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 utilis simplement en tapant beep en ligne de commande. Vous pouvez visualiser la liste des alias existant simplement l'aide de la commande alias, appele sans paramtres. Je vous recommande de consulter cette liste, pour vous donner une ide des alias courants, qui se rvlent gnralement trs utiles. La suppression des alias se fait l'aide de la commande unalias. Sa syntaxe est la suivante : unalias nom
o nom est le nom de l'alias supprimer. Note : Les alias ne sont remplacs par la chane de caractres qu'ils reprsentent que lorsque le shell analyse la ligne de commande. Cela signifie que les dfinitions d'alias ne sont valides qu'aprs validation de cette ligne. On vitera donc de dfinir des alias dans la dclaration d'une instruction compose, car cet alias ne sera pas disponible l'intrieur de son propre bloc d'instructions. 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 l'instant, toutes les fonctionnalits de bash, aussi puissantes soient-elles, ne constituent que l'interface d'un interprteur de commandes puissant. Mais nous avons dit que le shell tait vritablement un langage de programmation. Cela signifie qu'il est possible d'crire des programmes complexes en langage shell, simplement en stockant plusieurs commandes dans un fichier. On appelle ces fichiers des scripts shell. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 156
L'criture d'un script shell n'est pas plus complique que de taper les commandes du programme les unes la suite des autres dans un shell interactif. La seule diffrence est que les scripts shell peuvent tre rejous plusieurs fois, recevoir des paramtres en ligne de commande et renvoyer un code de retour. Tout script shell est en fait un fichier texte sur lequel on a mis les droits d'excution. Il contient les diffrentes commandes qu'il doit excuter. Sa premire ligne est trs importante, elle permet d'indiquer au shell excutant quelle est la nature du fichier. La syntaxe de cette ligne est la suivante : #!shell
o shell est le chemin absolu sur le shell ou l'interprteur de commande capable d'excuter ce script. En pratique, pour bash, on utilisera toujours la ligne suivante :
#!/bin/bash Les paramtres des scripts shell sont accessibles exactement comme des paramtres de fonction. On rcuprera donc le premier paramtre avec l'expression $1, le deuxime avec l'expression $2, le troisime avec l'expression $3, etc. Le code de retour d'un shell pourra tre fix l'aide de la commande exit. Par exemple : exit 0
Ce code de retour pourra tre rcupr par l'appelant l'aide de l'expression $?. Nous n'irons pas plus loin dans la description du shell bash, car ce n'est pas le but de ce document. Vous pouvez vous rfrer un bon livre d'Unix 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 n'avons pas parl ici, chacun tant conu souvent pour raliser un certain type de tche (administration systme, manipulation de fichiers textes, cration de pages Web dynamiques, cration d'interfaces utilisateur en mode fentr, pilotage d'applications, etc.). Si vous vous y intressez, vous verrez que le sujet est rellement vaste et passionnant. Chapitre 6 : Administration du systme de base Table des matires
6.1. Sauvegarde de la configuration d'installation 6.2. Mise l'heure du systme 6.3. Gestion des utilisateurs et de la scurit 6.4. Gestion des paquetages 6.5. Notion de niveau d'excution et amorage du systme 6.6. Maintenance des systmes de fichiers 6.7. Gestion des volumes 6.8. Configuration des terminaux virtuels 6.9. Configuration de la console 6.10. Configuration de l'imprimante 6.11. Configuration du lancement automatique des tches 6.12. Gestion de l'nergie DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 157
Un certain nombre d'oprations que l'on peut faire avec un systme Unix ne rentre pas dans le cadre d'une utilisation quotidienne, mais est destine plutt l'administration du systme lui-mme. Ces oprations peuvent tre ralises l'aide de commandes Unix spciales, gnralement rserves l'administrateur du systme, ou peuvent tre ralises en modifiant les fichiers de configuration du systme. Il est trs probable que le programme d'installation ou le programme de configuration de votre distribution vous permette d'effectuer ces tches de manire relativement aise ou conviviale. L'utilisation de ces programmes est trs simple, puisqu'en gnral il suffit de rpondre quelques questions et les modifications sont effectues automatiquement pour vous. Il est fortement recommand de toujours essayer les programmes de ce type en premier lieu, car eux seuls connaissent les spcificits de chaque distribution. Cela dit, ces programmes ne peuvent pas tout prvoir, parce que Linux est un systme capable d'effectuer un grand nombre de tches trs diversifies d'une part, et parce que ce que vous voulez en faire personnellement ne correspond pas forcment un standard prdtermin d'autre part. Cette partie dcrira donc les commandes d'administration et de maintenance les plus importantes et le mcanisme gnral d'amorage des systmes Linux. Les principaux fichiers de configuration permettant de modifier le comportement du systme seront galement dcrits afin de permettre un usage courant de Linux dans de bonnes conditions. Les notions les plus avances concernant l'administration systme ne seront en revanche pas abordes, car cela dpasserait le cadre de ce document. Les lecteurs les plus intresss pourront toujours se rfrer un guide d'administration Unix. L'administration du systme est un peu moins sensible que son installation. En effet, les seuls risques que l'on encourt sont de dtruire les fichiers de configuration du systme, et donc de devoir les recrer manuellement. Il n'y a pas de manipulation de partitions ou de systme de fichiers crer, aussi le risque de perdre des donnes est-il nettement plus faible. Cependant, les oprations d'administration se feront sous le compte root, ce qui implique une prudence extrme. C'est pour cette raison que nous allons commencer par sauvegarder l'ensemble des fichiers de configuration, afin de pouvoir revenir l'tat initial aprs installation, sans repasser par la case dpart. 6.1. Sauvegarde de la configuration d'installation La sauvegarde de la configuration du systme est une opration facile raliser. En effet, tous les fichiers de configuration sont placs dans le rpertoire /etc/. Par consquent, il suffit de faire une archive des fichiers 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 l'administrateur systme. On notera que, pour certaines distributions, quelques fichiers de configuration 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 l'on a un gros problme avec la configuration de la machine, on peut revenir simplement la configuration utilise juste aprs l'installation du systme avec la simple commande suivante : tar xvfz /root/install.conf.tar.gz
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 158
commande que l'on excutera dans la racine du systme de fichiers. Cette commande crasera tous les fichiers existants par ceux de la sauvegarde. Les fichiers 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 l'on aura russi configurer le systme correctement et que, thoriquement, il n'y aura plus toucher aux fichiers de configuration. Cette sauvegarde devra tre place sur une disquette ou un support amovible que l'on conservera en lieu sr
6.2. Mise l'heure du systme Les systmes d'exploitation utilisent l'heure pour un certain nombre de tches. En particulier, les fichiers disposent de plusieurs dates (date de cration, date d'accs et date de dernire modification), qui sont utilises par diffrents programmes. Les programmes de sauvegarde en font videmment partie, parce qu'ils se basent sur les dates de modification des fichiers pour dterminer quels sont les fichiers 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 l'intgrer dans leurs documents. En clair, il est important que votre systme soit l'heure. En fait, il existe deux horloges dans votre systme. La premire horloge, qui est l'horloge de rfrence pour toutes les oprations effectues dans le systme, est l'horloge dite systme . Cette horloge est maintenue par le noyau grce un compteur qui est incrment rgulirement, sur la base d'une interruption matrielle. La prcision de ce compteur est a priori la mme que celle de l'interruption du timer matriel. Sur les PC, cette interruption a lieu, par dfaut, 18,6 fois par seconde, ce qui donne pour la plus petite unit de temps mesurable environ 1/20 de seconde (cependant, la plupart des systmes reprogramment la frquence de cette interruption 100 Hz environ). La deuxime horloge est l'horloge matrielle, qui est l'horloge qui maintient l'heure de votre ordinateur pendant qu'il est teint. Cette horloge est couramment appele l'horloge CMOS, parce qu'elle est gre par un composant CMOS qui stocke toutes les informations permanentes du BIOS. Pour rpondre immdiatement une question (dsormais sans objet), prcisons que Linux n'a aucun problme vis--vis des dates critiques du changement de millnaire. En effet, les systmes Unix n'utilisent qu'un 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 l'an 2000. En fait, le dbordement de ce compteur est prvu pour 2038, mais n'aura jamais lieu car l'apparition des processeurs 64 bits va porter, d'ici l, la taille de ce compteur 64 bits. Cela tant, il est possible que certaines applications mal crites n'utilisent pas ce format de date, et ne soient donc pas compatibles. Heureusement, ce cas de figure est trs rare sous Unix. Bien entendu, le problme reste entier si l'horloge matrielle de votre PC n'est pas compatible. Dans ce cas, la solution la plus simple est de rgler l'heure systme chaque dmarrage, manuellement ou l'aide de scripts de correction de la date renvoye par l'horloge matrielle. La valeur du compteur de l'horloge systme est toujours interprte en temps universel ( UTC en anglais, abrviation de Universal Time Coordinated ), c'est--dire le temps de rfrence valide dans le monde entier. Ce temps ne comprend pas les fuseaux horaires ni les rglementations concernant les heures d'hiver et d't. 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 simplifie beaucoup les choses. Notez galement que le fait de compter DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 159
le temps en secondes permet de s'affranchir des conventions de dcoupage du temps et des calendriers utiliss dans chaque pays. Bien entendu, les dates prsentes l'utilisateur doivent tre traduites en temps local, corrig des carts pour l'heure d't et l'heure d'hiver. Cela est ralis par tous les programmes qui doivent afficher 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 d't et d'hiver. La solution la plus simple pour rgler la date et l'heure de votre machine est donc de rgler l'horloge matrielle sur le temps universel, et de dfinir le fuseau horaire dans lequel elle se trouve, pour que le systme puisse calculer l'heure locale. Malheureusement, les systmes d'exploitation de Microsoft ne voient pas la chose de la mme manire. Ils attendent que l'horloge matrielle soit rgle l'heure locale. Par consquent, si Linux est install sur un ordinateur disposant dj de Windows, vous devrez rgler l'heure 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 l'heure locale et de la zone horaire. Cependant, cela a un inconvnient : il est ncessaire de mettre l'heure l'horloge systme en cas de dplacement de la machine, et chaque changement d'horaire d't ou d'hiver. Bien sr, Windows est suppos tre capable de mettre jour l'heure matrielle en observation avec l'heure d't / d'hiver . Mais il utilise pour cela des rgles qui sont fixes dfinitivement dans le systme et qui ne peuvent pas tre mises jour avec les rglementations locales (par exemple, la rgle de changement d'heure a t modifie en 1996, si bien que Windows 95 n'a jamais pu fonctionner correctement sur ce point...). Quoi qu'il en soit, la mise l'heure d'un systme Linux requiert la dfinition de la zone horaire, la mise l'heure du systme et la mise l'heure de l'horloge matrielle. La dfinition 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 dfinies 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 fin) et la diffrence entre le temps universel et le temps local lorsque cette rgle s'applique (gestion des horaires d't et d'hiver compris). Toutes ces rgles portent le nom de la zone gographique dans laquelle elles sont valides. Vous pourrez trouver des exemples de dfinitions de rgles (ainsi que l'historique des conventions concernant le temps) dans le rpertoire timezone des sources de la bibliothque C GNU. Les fichiers 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 dfinir la zone horaire active. Cette opration se fait dans les fichiers de dmarrage de votre systme, avec une commande similaire la suivante : zic -l zone
o zone est le chemin relatif du fichier de dfinition 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 fixe, il est possible de rgler l'horloge systme. Il existe deux solutions pour cela. La premire solution est d'utiliser la commande systme date. Cette commande, appele sans paramtres, permet d'obtenir la date systme, exprime en temps local. Mais elle permet galement de modifier la date et l'heure systme avec l'option -s. La syntaxe complte utilise est donne ci- dessous : DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 160
date -s "MM/JJ/AAAA HH:MM:SS" Il n'est pas ncessaire de prciser l'anne si celle-ci ne doit pas tre change. De mme, vous pouvez ne donner que l'heure, si la date du jour est correcte. En revanche, vous devez obligatoirement prciser l'heure si vous changez la date. Notez que l'heure doit tre donne en temps local, moins que l'option -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 l'heure exacte en appelant le 3699. La deuxime solution est celle qui est utilise au dmarrage du systme. Elle consiste initialiser l'horloge systme partir de l'horloge matrielle. Cette opration se fait normalement l'aide 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 L'option -s permet d'initialiser l'horloge systme partir de la date et de l'heure stockes dans l'horloge matrielle. C'est typiquement cette commande qui est utilise dans les scripts de dmarrage du systme. L'option -w permet de raliser l'opration inverse, c'est--dire sauvegarder la date et l'heure de l'horloge systme dans l'horloge matrielle. Elle n'est en gnral utilise qu'aprs avoir remis l'heure l'horloge systme. L'option -a permet, quant elle, de corriger l'avance ou le retard que l'horloge matrielle peut prendre. Ce dernier point mrite quelques explications complmentaires. En fait, l'horloge matrielle n'est pas extrmement prcise, et peut se dcaler petit petit de l'heure relle. Heureusement, ce dcalage est constant, ce qui fait qu'il est possible de le mesurer et de le prendre en compte. Le programme clock utilise le fichier /etc/adjtime pour enregistrer de combien est ce dcalage afin de pouvoir effectuer les corrections. Le principe de fonctionnement est le suivant : lors du premier rglage de l'horloge matrielle (avec l'option -w), il enregistre l'instant de ce rglage dans le fichier /etc/adjtime ; lors des rglages suivants, il calcule le temps qui s'est coul depuis le rglage prcdent, et le dcalage entre l'heure de l'horloge matrielle et l'heure laquelle celle-ci aurait d se trouver. Il enregistre ce dcalage et met jour la date de mise l'heure (pour pouvoir refaire ce calcul ultrieurement) ; lorsqu'on l'appelle avec l'option -a, clock ajuste l'horloge matrielle. Pour cela, il regarde la date courante, calcule le temps coul depuis la dernire mise l'heure ou le dernier ajustement, en dduit l'avance ou le retard de l'horloge matrielle, et la remet l'heure en consquence. Il enregistre galement la date de cet ajustement comme nouvelle date de mise l'heure, afin de ne pas faire deux fois l'ajustement pour cette priode la prochaine fois. De cette manire, il est possible de maintenir l'horloge systme une valeur proche de la ralit (sans ce genre de mcanisme, il est courant de prendre 5 minutes d'cart en trois ou quatre mois, ce qui est dj considrable). Les scripts d'initialisation de votre systme doivent donc certainement contenir au moins les deux lignes suivantes aprs le rglage de la zone horaire : # Ajuste l'horloge matrielle : clock -a # Initialise l'horloge systme : clock -s DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 161
Dans tous les cas, l'option -u permet d'indiquer que l'horloge matrielle est rgle en temps universel. Si votre machine ne dispose pas d'autre systme que Linux, il est recommand de procder ainsi et d'utiliser systmatiquement cette option. Note : Il est important de dfinir la zone horaire avec zic avant d'utiliser clock. En effet, si l'horloge matrielle est rgle en temps local, clock ne pourra pas dterminer l'heure en temps universel. D'autre part, clock initialise la structure de zone horaire interne noyau, que celui-ci utilise notamment pour l'criture des dates en temps local sur les systmes de fichiers FAT (Eh oui, les dates des fichiers des systmes de fichiers FAT sont enregistres en temps local...). Sachez galement que l'horloge 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 (n'oubliez pas que Linux peut fonctionner des mois sans interruption...). Si vous tes intress par la manire de resynchroniser l'horloge systme pour de telles configurations, vous devriez vous intresser la diffusion du temps sur le rseau Internet avec le protocole NTP ( Network Time Protocol ). En gnral, la resynchronisation de l'heure systme doit se faire progressivement afin de ne pas perturber la ligne du temps pour les applications. Cela peut tre fait avec le programme adjtimex. 6.3. Gestion des utilisateurs et de la scurit La rgle de scurit numro un sous Unix est de ne jamais travailler dans le compte root. En effet, ce compte dispose de tous les droits, et la moindre erreur de la part de l'utilisateur dans ce compte peut endommager non seulement ses propres donnes, mais galement l'ensemble du systme d'exploitation. De plus, le fait de ne pas travailler sous le compte root restreint un seul utilisateur les dgts que pourraient faire un ventuel virus ou programme dfectueux. L'une des premires tapes dans l'installation d'un systme est donc de crer un compte utilisateur normal, qui devra tre utilis pour le travail quotidien. Le compte root ne doit donc tre rserv qu'aux tches d'administration, et toute opration ralise sous cette identit doit tre contrle deux fois avant d'tre effectivement lance. Les programmes d'installation des distributions demandent donc toujours un mot de passe pour protger le compte root et le nom et le mot de passe pour au moins un compte utilisateur standard aprs une nouvelle installation. Le mot de passe root doit tre choisi avec un grand soin, surtout si l'ordinateur est susceptible d'tre connect Internet. En effet, la moindre erreur de configuration au niveau des services fournis par l'ordinateur, couple avec un mot de passe faible, risque de laisser votre ordinateur la merci de pirates mal intentionns. Ces mmes programmes d'installation peuvent tre utiliss par la suite pour ajouter de nouveaux utilisateurs dans le systme. Il est d'ailleurs recommand de les utiliser ds qu'une telle opration doit tre effectue. Cela dit, il est bon de connatre la manire dont les utilisateurs sont grs dans les systmes Unix, aussi une approche plus bas niveau sera-t-elle adopte dans cette section. 6.3.1. Mcanismes d'authentification des utilisateurs La scurit des systmes Unix repose fondamentalement sur les mcanismes d'authentification des utilisateurs. Ces mcanismes visent s'assurer que chacun est bien celui qu'il prtend tre, afin de donner chacun les droits d'accs aux diffrents services du systme en fonction de ses privilges. L'accs aux services du systme repose donc sur deux oprations essentielles : l'identification et l'authentification. L'opration d'identification consiste annoncer qui l'on est, afin de permettre au systme de dterminer les droits auxquels on a droit, et l'opration d'authentification consiste prouver qu'on est bien celui qu'on prtend tre. Le systme refuse ses services tout utilisateur inconnu (c'est--dire qui s'est identifi sous un nom inconnu) ou qui n'a pas pass avec succs la phase d'authentification. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 162
En interne, les systmes Unix identifient les utilisateurs par un numro qui est propre chacun, son UID (abrviation de l'anglais User IDentifier ), mais il existe une correspondance entre cet UID et un nom d'utilisateur plus humainement lisible. Ce nom est classiquement appel le login , en raison du fait que c'est la premire chose que le systme demande lorsqu'on cherche accder ses services, pendant l'opration dite de login. L'authentification des utilisateurs se fait classiquement par mot de passe, bien que d'autres mcanismes soient possibles en thorie. L'accs au systme se passe donc toujours de la manire suivante : le systme demande l'utilisateur son nom (c'est--dire son login) ; il demande ensuite son mot de passe ; il vrifie la validit du couple (login / mot de passe) pour dterminer si l'utilisateur a le droit de l'utiliser ; et, si l'utilisateur est connu et s'est correctement authentifi, le programme qui a ralis l'authentification prend l'identit et les privilges de l'utilisateur, fixe son environnement et ses prfrences personnelles, puis lui donne accs au systme. L'exemple classique de ces oprations est tout simplement l'opration de login sur une console : le programme getty de gestion de la console demande le nom de l'utilisateur, puis passe ce nom au programme login qui l'authentifie en lui demandant son mot de passe. Si l'authentification a russi, il prend l'identit de cet utilisateur et lance son shell prfr. La suite des oprations dpend du shell. S'il s'agit de bash, le fichier de configuration /etc/profile est excut (il s'agit donc du fichier de configuration dans lequel toutes les options communes tous les utilisateurs pourront tre places par l'administrateur), puis les fichiers de configuration ~/.bash_profile et ~/.bashrc sont excuts. Ces deux fichiers sont spcifiques chaque utilisateur et permettent chacun d'entre eux de spcifier leurs prfrences personnelles. Le fichier ~/.bash_profile n'est excut que lors d'un nouveau login, alors que le fichier ~/.bashrc est excut chaque nouveau lancement de bash. Bien entendu, ces oprations ncessitent que des informations relatives aux utilisateurs soient stockes dans le systme. Historiquement, elles taient effectivement stockes dans le fichier de configuration /etc/passwd. Cela n'est, en gnral, plus le cas. En effet, cette technique se rvle peu pratique lorsque plusieurs ordinateurs en rseau sont accds par des utilisateurs itinrants. Dans ce genre de configuration, il est courant de recourir un service rseau permettant de rcuprer les informations concernant les utilisateurs partir d'un serveur centralis. Plusieurs solutions existent actuellement (NIS, LDAP, etc.), mais elles fonctionnent toutes plus ou moins selon le mme principe. De plus, mme pour des machines isoles, le fichier /etc/passwd ne contient plus que les informations publiques sur les utilisateurs. Les informations utilises pour l'authentification sont dsormais stockes dans un autre fichier de configuration, qui n'est lisible que pour l'utilisateur root : le fichier /etc/shadow. La raison premire de procder ainsi est d'viter que des utilisateurs malicieux puissent casser les mots de passe. Note : Les mots de passe n'ont jamais t stocks en clair dans le fichier passwd. Le mcanisme d'authentification repose en effet sur une fonction sens unique gnrant une empreinte. Les fonctions de ce type ne disposent pas de fonction inverse, il n'est donc virtuellement pas possible de retrouver un mot de passe partir de son empreinte. Lorsqu'un utilisateur saisit son mot de passe, l'empreinte est recalcule de la mme manire que lorsqu'il l'a dfini initialement, et c'est cette empreinte qui est compare avec celle qui se trouve dans le fichier /etc/passwd ou le fichier /etc/shadow. Ainsi, il est ncessaire de connatre le mot de passe en clair pour authentifier l'utilisateur, mais aucun moment ce mot de passe n'est stock sur le disque dur. Cela dit, mme si la rcupration des mots de passe est quasiment impossible, la connaissance des empreintes des mots de passe peut tre d'une aide prcieuse. Un intrus potentiel peut essayer de calculer les empreintes de tous les mots de passe possibles et imaginables l'aide d'un dictionnaire ou de mots de passe probablement choisis par les utilisateurs peu inventifs, et comparer le rsultat avec ce DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 163
qui se trouve dans le fichier de mot de passe. S'il y a une correspondance, l'intrus pourra pntrer le systme et tenter d'utiliser d'autres failles pour acqurir les droits de l'utilisateur root. Cette technique, dite attaque du dictionnaire, est tout fait ralisable, d'une part parce que la puissance des machines actuelles permet de calculer un nombre considrable d'empreintes la seconde, et d'autre part parce que bon nombre de personnes utilisent des mots de passe triviaux (leur date de naissance, le nom de leur chien, etc.) facilement devinables et testables. Les systmes Unix utilisent deux techniques pour pallier ces problmes. La premire est de ne pas calculer l'empreinte du mot de passe tel qu'il est fourni par l'utilisateur, mais de la calculer avec une donne gnre alatoirement et stocke dans le fichier de mot de passe. Cette donne, que l'on appelle classiquement sel , jour le rle de vecteur d'initialisation de l'algorithme de gnration d'empreinte. Le sel n'est jamais le mme pour deux utilisateurs, ce qui fait que deux utilisateurs qui auraient le mme mot de passe n'auraient toutefois pas la mme empreinte. Cela complique la tche des attaquants qui utilisent la force brute, car ils doivent ainsi recalculer les empreintes pour chaque utilisateur. La deuxime technique utilise est tout simplement de ne pas laisser le fichier des empreintes accessible tout le monde. C'est pour cela que le fichier de configuration /etc/shadow a t introduit. tant lisible uniquement par l'utilisateur root, un pirate ne peut pas rcuprer les empreintes de mots de passe pour les comparer avec des empreintes de mots de passe prcalcules. Il doit donc essayer les mots de passe un un, ce qui peu en dcourager plus d'un, surtout si le systme se bloque pendant un certain temps aprs quelques tentatives infructueuses... La technique d'authentification par mot de passe peut paratre relativement primitive, l'heure o les cartes puce sont lgions et o l'on commence voir apparatre des scanners d'empreintes digitales. En fait, c'est une bonne solution, mais qui ne saurait en aucun cas tre exhaustive en raison des problmes mentionns ci-dessus. L'idal est donc d'utiliser plusieurs systmes d'authentification en srie, ce qui laisse libre cours un grand nombre de possibilits. Il est vident que la technique des mots de passe traditionnellement utilise sur les systmes Unix n'voluera pas aisment vers de nouveaux mcanismes d'authentification. C'est pour cela que les programmes devant raliser une opration d'authentification ou de gestion des utilisateurs de manire gnrale ont t modifis pour utiliser la bibliothque PAM (abrviation de l'anglais Pluggable Authentification Modules ). Cette bibliothque permet de raliser les oprations d'identification et d'authentification de manire externe aux programmes qui l'utilisent, et se base pour ces oprations des fichiers de configuration et des modules dynamiquement chargeables. Ainsi, grce la bibliothque PAM, l'administrateur peut dfinir avec prcision les diffrentes oprations ralises pour identifier et authentifier les utilisateurs, sans avoir modifier les programmes qui ont besoin de ces fonctionnalits. De plus, il est possible d'ajouter de nouveaux modules au fur et mesure que les besoins voluent, et de les intgrer simplement en modifiant les fichiers de configuration. De nos jours, la plupart des distributions utilisent la bibliothque PAM. Bien entendu, il existe des modules qui permettent de raliser les oprations d'identification et d'authentification Unix classiques, et ce sont ces modules qui sont utiliss par dfaut. Nous verrons le format des fichiers de configuration de la bibliothque PAM plus en dtail dans les sections suivantes. Note : Les mcanismes dcrits ici ne sont srs que dans le cadre d'une connexion sur un terminal local. Cela dit, il faut bien prendre conscience que la plupart des applications rseau sont de vritables passoires ! En effet, ils utilisent des protocoles qui transmettent les mots de passe en clair sur le rseau, ce qui implique que n'importe quel pirate peut les capter en moins de temps qu'il n'en faut pour le dire. Les protocoles applicatifs suivants sont rputs pour tre non srs et ne devront donc JAMAIS tre utiliss sur un rseau non sr (et donc, plus forte raison, sur Internet) : TELNET, qui permet d'effectuer des connexions distance : DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 164
FTP, qui permet de transfrer et de rcuprer des fichiers sur une machine distante ; POP3, qui permet de consulter son mail ; SMTP, qui permet d'envoyer des mails un serveur de messagerie ; X, qui permet aux applications graphiques d'afficher leurs fentres sur un terminal X. Cette liste n'est pas exhaustive mais regroupe dj les protocoles rseau des applications les plus utilises. La scurisation de ces protocoles ne peut se faire qu'en les encapsulant dans un autre protocole utilisant un canal de communication chiffr. L'un des outils les plus courant pour cela est sans doute ssh. Cet outil sera dcrit dans la Section 9.5.2.2 du chapitre traitant du rseau. 6.3.2. Cration et suppression des utilisateurs La cration d'un nouvel utilisateur est une opration extrmement facile. Il suffit simplement de lui crer un rpertoire personnel dans le rpertoire /home/ et de le dfinir dans le fichier de configuration /etc/passwd. Si votre systme utilise les shadow passwords, ce qui est probable, il faut galement dfinir cet utilisateur dans le fichier de configuration /etc/shadow. De plus, il faut ajouter cet utilisateur dans au moins un groupe d'utilisateurs dans le fichier /etc/group. Le fichier de configuration /etc/passwd est constitu de plusieurs lignes, raison d'une ligne par utilisateur. Chaque ligne est constitue de plusieurs champs, spars par deux points (caractre ':'). Ces champs contiennent respectivement le login de l'utilisateur, l'empreinte de son mot de passe, son identifiant numrique, l'identifiant numrique de son groupe principal, son nom complet ou un commentaire, le chemin de son rpertoire personnel et le chemin sur son interprteur de commandes favori. Si le champ du mot de passe contient un astrisque, le compte est dsactiv. S'il est vide, le mot de passe est stock dans le fichier /etc/shadow. Le fichier de configuration /etc/shadow a une syntaxe similaire celle de /etc/passwd, mais contient les champs suivants : le login de l'utilisateur, l'empreinte de son mot de passe, le nombre de jours depuis que le mot de passe a t dfini (compts partir du premier janvier 1970), le nombre de jours aprs cette date attendre avant que le mot de passe puisse tre chang, le nombre de jours au del duquel le mot de passe doit obligatoirement tre chang, le nombre de jours avant la date d'expiration de son mot de passe pendant lesquels l'utilisateur doit tre averti que son mot de passe va expirer, le nombre de jours attendre avant de dsactiver le compte aprs l'expiration du mot de passe, et le nombre de jours depuis que le compte est dsactiv, compts depuis le premier janvier 1970. Il est possible de supprimer l'obligation pour les utilisateurs de changer rgulirement de mot de passe en donnant un nombre de jours minimum suprieur au nombre de jours maximum avant le changement de mot de passe. Enfin, le fichier de configuration /etc/group, dans lequel les groupes d'utilisateurs sont dfinis, ne dispose que des champs suivants : le nom du groupe, son mot de passe (cette fonctionnalit n'est plus utilise), son identifiant numrique, et la liste des utilisateurs qui y appartiennent, spars par des virgules. Bien entendu, tous ces champs ne doivent pas tre modifis la main. La commande useradd permet de dfinir un nouvel utilisateur simplement. Cette commande suit la syntaxe suivante : useradd [-c commentaire] [-d rpertoire] [-e expiration] [-f inactivit] \ [-g groupe] [-G groupes] [-m [-k modle]] [-p passe] [-s shell] [-u uid [-o]] login DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 165
Comme vous pouvez le constater, cette commande prend en paramtre le login de l'utilisateur, c'est-- dire le nom qu'il devra utiliser pour s'identifier sur le systme, et un certain nombre d'options complmentaires. Ces options sont rcapitules dans le tableau suivant : Option Signification -c Permet de dfinir le champ commentaire du fichier de mot de passe. -d Permet de fixer le rpertoire personnel de l'utilisateur. -e Permet de fixer la date d'expiration du compte. Cette date doit tre spcifie au format AAAA-MM-JJ. -f Permet de dfinir le nombre de jours avant que le compte ne soit dsactiv une fois que le mot de passe est expir. La valeur -1 permet de ne jamais dsactiver le compte. -g Permet de dfinir le groupe principal auquel l'utilisateur appartient. Il s'agit souvent du groupe users. -G Permet de donner la liste des autres groupes auxquels l'utilisateur appartient. Cette liste est constitue des noms de chacun des groupes, spars par des virgules. -m Permet de forcer la cration du rpertoire personnel de l'utilisateur. Les fichiers du modle de rpertoire personnel stocks dans le rpertoire /etc/skel/ sont automatiquement copis dans le nouveau rpertoire. Si ces fichiers doivent tre copis partir d'un autre rpertoire, il faut spcifier celui-ci l'aide de l'option -' -p Permet de donner le mot de passe initial du compte. Cette option ne doit jamais tre utilise, car le mot de passe apparat dans la ligne de commande du processus et peut tre lue par un utilisateur mal intentionn. On fixera donc toujours le mot de passe initial de l'utilisateur l'aide de la commande passwd. -s Permet de spcifier le shell par dfaut utilis par l'utilisateur. -u Permet de spcifier l'UID de l'utilisateur. Cette valeur doit tre unique en gnral, cependant, il est possible de forcer l'utilisation d'un mme UID pour plusieurs utilisateurs l'aide de l'option -o. Cela permet de crer un deuxime compte pour un utilisateur dj existant. L'ajout d'un groupe se fait avec la commande groupadd, qui suit la syntaxe suivante, beaucoup plus simple que celle de useradd : groupadd [-g GID [-o]] nom
o nom est le nom du groupe et GID son numro. Il n'est normalement pas possible de dfinir un groupe avec un identifiant numrique dj attribu un autre groupe, sauf si l'on utilise l'option -o. De la mme manire, la suppression d'un utilisateur peut se faire manuellement en effaant son rpertoire personnel et en supprimant les lignes qui le concernent dans les fichiers /etc/passwd, /etc/shadow et /etc/group. Il est galement possible d'utiliser la commande userdel. Cette commande utiliser la syntaxe suivante : userdel [-r] login
o login est le nom de l'utilisateur. L'option -r permet de demander userdel d'effacer rcursivement le rpertoire personnel de l'utilisateur, ce qu'elle ne fait pas par dfaut. Il existe galement une commande groupdel pour supprimer un groupe d'utilisateurs (cette commande supprime le groupe seulement, pas les utilisateurs qui y appartiennent !). Note : Comme pour la plupart des autres oprations d'administration systme, il est fortement probable que l'outil de configuration fourni avec votre distribution dispose de toutes les fonctionnalits ncessaires l'ajout et la suppression des utilisateurs. Il est recommand d'utiliser cet outil, car il DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 166
peut effectuer des oprations d'administration complmentaires que les outils standards n'effectuent pas forcment, comme la dfinition des comptes mail locaux par exemple. 6.3.3. Description de la bibliothque PAM La bibliothque PAM permet de centraliser toutes les oprations relatives l'identification et l'authentification des utilisateurs. Ces tches sont en effet dportes dans des modules spcialiss qui peuvent tre chargs dynamiquement dans les programmes qui en ont besoin, en fonction de paramtres dfinis dans des fichiers de configuration. Le comportement des applications peut donc tre parfaitement dfini simplement en ditant ces fichiers. La bibliothque PAM permet une trs grande souplesse dans l'administration des programmes ayant trait la scurit du systme et devant raliser des oprations privilgies. Il existe dj un grand nombre de modules, capables de raliser une multitude de tches diverses et varies, et que l'on peut combiner loisir pour dfinir le comportement de toutes les applications utilisant la bibliothque PAM. Il est hors de question de dcrire chacun de ces modules ici, ni mme de donner la configuration des programmes qui utilisent PAM. Cependant, nous allons voir les principes gnraux permettant de comprendre comment les modules de la bibliothque sont utiliss. Initialement, toute la configuration de PAM se faisait dans le fichier de configuration /etc/pam.conf. Ce fichier contenait donc la dfinition du comportement de chaque programme utilisant la bibliothque PAM, ce qui n'tait pas trs pratique pour l'administration et pour les mises jour. Les informations de chaque programme ont donc t spares en plusieurs fichiers distincts, raison d'un fichier par application, tous stocks dans le rpertoire /etc/pam.d/. Il est fort probable que votre distribution utilise cette solution, aussi le format du fichier /etc/pam.conf ne sera-t-il pas dcrit. Certains modules utilisent des fichiers de configuration pour dterminer la manire dont ils doivent se comporter. Ces fichiers de configuration sont tous stocks dans le rpertoire /etc/security/. Les modules de PAM eux-mmes sont, quant eux, stocks dans le rpertoire /lib/security/. Le principe de fonctionnement est le suivant. Lorsqu'un programme dsire raliser une opration relative l'authentification d'un utilisateur, il s'adresse la bibliothque PAM pour effectuer cette opration. La bibliothque recherche dans le rpertoire /etc/pam.d/ le fichier de configuration correspondant cette application (il porte gnralement le nom de l'application elle-mme), puis dtermine les modules qui doivent tre chargs dynamiquement dans l'application. Si le fichier de configuration d'une application ne peut pas tre trouv, le fichier de configuration /etc/pam.d/other est utilis, et la politique de scurit par dfaut qui y est dfinie est utilise. Quel que soit le fichier de configuration utilis, chaque module est utilis en fonction des paramtres qui y sont stocks. Les modules peuvent, s'ils en ont besoin, utiliser leurs propres fichiers de configuration, qui se trouvent dans le rpertoire /etc/security/. Ces fichiers portent gnralement le nom du module avec l'extension .conf. Par exemple, le fichier de configuration du module limits, qui prend en charge les limites d'utilisation des ressources systme pour chaque utilisateur, est le fichier /etc/security/limits.conf. Les fichiers de configuration des applications sont constitus de lignes dfinissant les diffrents modules qui doivent tre chargs, le contexte dans lequel ils sont chargs, et comment doit se comporter l'application en fonction du rsultat de l'excution des oprations ralises par ces modules. L'ordre des lignes est important, puisqu'elles sont analyses les unes aprs les autres. Chaque ligne est constitue de trois colonnes. La premire colonne indique le cadre d'utilisation du module. La deuxime colonne indique le comportement que doit adopter la bibliothque PAM en fonction du rsultat renvoy par le module aprs son excution. Enfin, la troisime colonne donne le chemin d'accs complet au module, ventuellement suivi des options qui doivent lui tre communiques pour son excution. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 167
Les modules peuvent tre utiliss dans l'un des contextes suivants : auth, qui est le contexte utilis par les programmes qui demandent l'authentification de l'identit dutilisateur ; account, qui est le contexte utilis par les programmes qui dsirent obtenir des informations sur l'utilisateur (rpertoire personnel, shell, etc.) password, qui est le contexte utilis par les applications qui cherchent revalider l'authentification de l'utilisateur. Les programmes comme passwd par exemple, qui demandent le mot de passe de l'utilisateur avant d'en fixer un nouveau, sont susceptibles d'utiliser ce contexte ; session, qui est le contexte utilis par les applications lorsqu'elles effectuent les oprations de gestion d'ouverture et de fermeture de session. Ce contexte peut tre utilis pour raliser des tches administratives, comme l'enregistrement de l'utilisateur dans la liste des utilisateurs connects ou le chargement des prfrences personnelles de l'utilisateur par exemple. Une mme application peut dfinir plusieurs jeux de rgles pour plusieurs contextes diffrents, et certains modules peuvent tre utiliss dans plusieurs contextes diffrents galement. Cependant, lorsqu'une application ralise une demande la bibliothque PAM, cette demande n'est excute que dans le cadre d'un contexte bien dfini. Attention cependant, une mme application peut effectuer plusieurs oprations successivement dans des contextes diffrents. Par exemple, le programme login peut utiliser le contexte auh pour valider l'identit de l'utilisateur, puis le contexte accoun pour dterminer le rpertoire personnel de l'utilisateur, et enfin le contexte session pour enregistrer l'utilisateur dans le journal des utilisateurs connects. Le comportement de la bibliothque PAM en fonction du rsultat de l'excution des modules dpend de ce qui est spcifi dans la deuxime colonne des lignes de ces modules. Les options qui peuvent y tre utilises sont les suivantes : required, qui permet d'indiquer que le succs de l'opration effectue par le module est ncessaire pour que l'opration effectue dans le contexte spcifi dans la premire colonne de la ligne russisse. Un chec sur cette ligne ne provoque pas l'arrt de l'analyse du fichier de configuration, ce qui permet d'appeler d'autres modules, par exemple pour gnrer des traces dans les fichiers de traces du systme. Cependant, quel que soit le comportement des modules suivants, l'opration demande par le programme appelant chouera ; requisite, qui permet d'indiquer que le succs de l'opration effectue par le module est ncessaire, faute de quoi l'opration ralise par le programme appelant choue immdiatement. Les autres modules ne sont donc pas chargs en cas d'chec, contrairement ce qui se passe avec l'option required ; sufficient, qui permet d'indiquer que le succs de l'excution du module garantira le succs de l'opration demande par le programme appelant. Les modules suivants seront chargs malgr tout aprs l'appel de ce module, sauf s'il s'agit de modules de type required ; optional, qui permet d'indiquer que le rsultat du module ne doit tre pris en compte que si aucun autre module ne peut dterminer si l'opration est valide ou non. Dans le cas contraire, le module est charg, mais son rsultat est ignor. titre d'exemple, nous pouvons prsenter deux implmentations possibles du fichier de configuration par dfaut /etc/pam.d/other. Une configuration extrmement sre interdira l'accs toute fonctionnalit fournie par un programme n'ayant pas de fichier de configuration. Dans ce cas de configuration, on utilisera un fichier comme celui-ci : auth required /lib/security/pam_warn.so auth required /lib/security/pam_deny.so DOCUMENT SUR LINUX
Nous voyons que toutes les oprations de type authentification ou de revalidation de l'identit sont d'abord traces dans les fichiers de traces du systme, puis dclares comme interdites. Une telle configuration peut tre un peu trop restrictive car, en cas d'erreur dans un fichier de configuration d'une application, l'accs cette application peut tre interdit systmatiquement. Une autre configuration, plus permissive, cherchera utiliser les mcanismes d'identification et d'authentification Unix classiques. Cela se fait avec les modules pam_unix_auth, pam_unix_acct, pam_unix_passwd et pam_unix_session :
Les autres fichiers de configuration ne seront pas dcrits ici, car ils dpendent de chaque application et de chaque distribution. Vous pouvez consulter ceux qui sont installs sur votre systme si vous dsirez en savoir plus. Nous ne dcrirons pas non plus la syntaxe des fichiers de configuration des diffrents modules, car cela dpasserait largement le cadre de ce document. Cela dit, la plupart de ces fichiers sont parfaitement comments et leur modification ne devrait pas poser de problme particulier. titre d'exemple, on peut prsenter le cas du module de gestion des limites des ressources consommes par les utilisateurs. Si l'on dsire restreindre le nombre de processus que les utilisateurs peuvent lancer, on pourra ajouter la ligne suivante dans le fichier /etc/security/limits.conf : @users hard nproc 256
Il faudra galement demander le chargement de ce module dans les fichiers de configuration des applications fournissant un accs au systme. Pour cela, on ajoutera une ligne telle que celle-ci la fin de leur fichier de configuration :
session required /lib/security/pam_limits.so Il est galement possible de limiter le nombre de login de chaque utilisateur, la quantit de mmoire qu'il peut consommer, la dure de connexion autorise, la taille maximum des fichiers qu'il peut manipuler, etc. Vous trouverez de plus amples renseignements sur la configuration des modules de PAM dans le guide d'administration de PAM pour Linux, que l'on trouvera avec les sources de PAM. 6.4. Gestion des paquetages Il existe plusieurs systmes de gestion de paquetages, chaque distribution fournissant ses propres outils. Toutefois, les fonctionnalits de ces outils sont toujours de maintenir la liste des paquetages installs, et de permettre l'installation, la mise jour et la suppression de ces paquetages. Nous ne prsenterons ici que les systmes de paquetages des distributions les plus utilises. Si les outils de votre distribution ne sont pas dcrits dans cette section, ne vous alarmez pas, leur documentation vous permettra sans doute de trouver rapidement la manire de raliser les oprations lmentaires quivalentes. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 169
6.4.1. Le gestionnaire de paquetages rpm La plupart des distributions actuelles utilisent le format de fichier rpm ( Redhat Package Manager ) pour leurs paquetages. Ce format de fichier a t introduit par la distribution Redhat, mais a t licenci sous la licence GNU, ce qui a permis aux autres distributions de l'utiliser. Ces fichiers encapsulent tous les fichiers des paquetages, ainsi que des informations permettant de grer les dpendances entre les paquetages, leurs versions, la manire de les installer dans le systme, de les supprimer ou de les mettre jour facilement. Les fichiers rpm peuvent tre manipuls l'aide du programme rpm. Il est probable que le programme d'installation de votre distribution vous vite d'avoir manipuler cet outil vous-mme. Cependant, les principales commandes de rpm seront dcrites ici, afin que vous puissiez l'utiliser 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 l'option -i, qui permet l'installation d'un paquetage : rpm -i paquetage La mise jour d'un paquetage dj install se fait l'aide de l'option -U : rpm -U paquetage La suppression d'un paquetage se fait l'aide de l'option -e : rpm -e paquetage La commande permettant d'obtenir les informations (auteur, description, version) sur un paquetage contenu dans un fichier rpm est la suivante : rpm -qi -p paquetage Enfin, la commande pour lister tous les fichiers d'un paquetage contenu dans un fichier rpm est la suivante : rpm -ql -p paquetage Cette commande affiche les chemins complets, ce qui permet de savoir dans quel rpertoire chaque fichier sera install. Il existe beaucoup d'autres options disponibles. Cependant, leur description dpasserait le cadre de ce document. Vous pouvez toujours consulter la page de manuel rpm si vous dsirez plus d'informations. 6.4.2. Le gestionnaire de paquetages apt Les distributions bases sur la distribution Debian utilisent le gestionnaire de paquetages apt-get, qui est sans doute l'un des plus performants qui soit. Ce gestionnaire de paquetages permet d'installer, mettre jour et supprimer des paquetages en tenant compte des dpendances entre ceux-ci, et ce partir de n'importe quelle source. Ainsi, si l'on est connect en rseau, il est possible d'installer ou de mettre jour n'importe quel paquetage via le rseau. Dans le cas contraire, il faut rfrencer le DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 170
rpertoire contenant les paquetages pour que apt-get puisse les utiliser, ce aprs quoi les oprations sont exactement les mmes. La liste des localisations des paquetages est stocke dans le fichier de configuration /etc/apt/sources.list. Ce fichier contient une ligne par rfrentiel disponible. Le format gnral de ces lignes est le suivant : type site distribution sections
o type est le type du paquetage, site est l'emplacement du rfrentiel, distribution est le nom de la distribution, et sections une liste des sections dans lesquelles les paquetages pourront tre trouvs. Le type de paquetage le plus courant est deb, qui est utilis pour les paquetages binaires pour la distribution Debian. Par exemple, la ligne suivante permet de rfrencer le site principal de Debian aux tats-Unis :
deb http://http.us.debian.org/debian stable main contrib non-free Par dfaut, le fichier /etc/apt/sources.list contient les rfrences sur les principaux sites Internet de Debian. Si vous voulez installer des paquetages que vous avez tlchargs, il va vous falloir y rajouter une ligne telle que celle-ci : deb file:/base rpertoire/
o base est un rpertoire dans lequel vous devez placer un sous-rpertoire contenant vos paquetages, et rpertoire est le nom de ce sous-rpertoire. Vous pouvez bien entendu classer vos paquetages dans diffrents sous-rpertoires, du moment que vous ajoutez les lignes adquates dans le fichier sources.list. apt-get recherchera alors, dans chacun de ces sous-rpertoires, un fichier d'index contenant la liste des paquetages. Ce fichier doit tre nomm Packages.gz, et peut tre cr simplement en compressant le rsultat de la commande dpkg-scanpackages. La commande utiliser pour crer un tel fichier est la suivante : dpkg-scanpackages rpertoire /dev/null | gzip > rpertoire/Packages.gz
o rpertoire est le sous-rpertoire du rpertoire de base dans lequel vous avez plac vos paquetages binaires. Cette ligne de commande suppose que le rpertoire courant soit le rpertoire base spcifi dans la ligne que vous avez ajout dans le fichier sources.list. Dans le cas des CD-ROMs, la procdure est plus simple. En effet, l'utilitaire apt-cdrom permet de prendre en compte un CD-ROM de manire automatique, avec une simple commande telle que celle- ci : apt-cdrom -d rpertoire add
o rpertoire est le rpertoire servant de point de montage de votre CD-ROM. Cette commande ajoute la rfrence du CD-ROM dans le fichier /var/lib/apt/cdrom.list. Il n'existe pas de commande pour supprimer un CD-ROM de cette liste. Une fois les sources de paquetages dfinies, leur manipulation est lmentaire. Avant toute chose, il est ncessaire de mettre jour la liste des paquetages dans le systme de paquetages. Cette opration doit tre ralise de manire assez rgulire en gnral, car cette liste volue assez rapidement. Pour effectuer cette opration, il suffit simplement d'excuter la commande update d'apt-get : DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 171
apt-get update L'installation d'un paquetage se fait avec la commande install d'apt-get : apt-get install paquetage
paquetage est ici le nom du paquetage installer. Si ce paquetage est dj install et que l'on dsire le rinstaller, par exemple pour le rparer ou pour le mettre jour ajoutera l'option --reinsa11 :
apt-get --reinstall install paquetage La suppression d'un paquetage est toute aussi simple. Elle se fait videmment avec la commande remove : apt-get remove paquetage
Cette commande supprime le paquetage, mais ne dtruit pas les fichiers de configuration qu'il a install. Cela permet d'viter de perdre les ventuelles modifications que l'on pourrait y avoir apportes. Si l'on dsire supprimer ces fichiers galement, il faut ajouter l'option --purge :
apt-get --purge remove paquetage La mise jour de tous les paquetages existants se fait simplement avec la commande upgrade d'apt- get : apt-get upgrade
Cette commande ne permet pas toujours de rsoudre les nouvelles dpendances sur les paquetages. C'est pour cela que la commande dist-upgrade a t dfinie. Elle permet de mettre jour le systme complet (mais est videmment bien plus longue). Enfin, si vous dsirez obtenir des informations sur un paquetage, vous devez utiliser le programme apt-cache. Ce programme permet de rechercher un paquetage l'aide de mots-clefs, et d'afficher les informations compltes sur le paquetage. Par exemple, pour obtenir des informations sur un paquetage, il faut utiliser la commande suivante : apt-cache show paquetage
o paquetage est le nom du paquetage. De mme, pour obtenir la liste des paquetages qui se rapporte un mot-clef particulier, il faut utiliser la commande search d'apt-cache :
apt-cache search mot-cl
o mot-cl est le mot-cl que l'on doit rechercher dans les paquetages. 6.4.3. Le gestionnaire de paquetages pkgtool Les distributions bases sur la Slackware utilisent le gestionnaire de paquetages pkgtool. Celui-ci est beaucoup plus rudimentaire que les gestionnaires prsents prcdemment, car il ne prend pas en charge les dpendances entre les paquetages, et ne s'occupe pas de localiser les paquetages sur le rseau. Bien entendu, la manipulation des paquetages est trs simplifie, et il est du ressort de l'utilisateur de savoir ce qu'il fait. L'installation d'un paquetage se fait avec la commande installpkg : DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 172
installpkg paquetage
o paquetage est le nom du paquetage installer. La suppression d'un paquetage se fait avec la commande removepkg : removepkg paquetage Enfin, la mise jour d'un paquetage se fait avec la commande upgradepkg : upgradepkg paquetage
Cette commande supprime toutes les anciennes versions du paquetage aprs avoir install la nouvelle. La commande upgradepkg peut galement accepter en paramtre l'option --insa11-new, qui permet d'installer le paquetage s'il n'est pas encore install, et l'option --reinsa11, qui permet de rinstaller le paquetage s'il est dj install. Enfin, la Slackware fournit l'outil pkgtool, qui est un peu plus convivial utiliser que les outils en ligne de commande prcdents. Cet outil fournit une interface utilisateur en mode texte permettant d'installer, de supprimer, d'obtenir des informations sur les paquetages, ainsi que de reconfigurer le systme. 6.5. Notion de niveau d'excution et amorage du systme La plupart des systmes Unix disposent de plusieurs modes de fonctionnement, que l'on appelle des niveaux d'excution. Dans chaque niveau d'excution, un certain nombre de services sont accessibles. Ainsi, le lancement et l'arrt des services des systmes Unix peut se faire de manire groupe simplement en changeant de niveau d'excution. En gnral, il existe 7 niveaux d'excution, dont seulement trois fournissent des services bien dfinis pour quasiment toutes les distributions de Linux. Le niveau 0 correspond l'arrt du systme, et aucun service n'est disponible ( part le redmarrage de la machine bien entendu...). Le fait de passer dans le niveau d'excution 0 correspond donc arrter le systme. Le niveau 6 correspond au redmarrage de la machine. Le fait de passer dans le niveau d'excution 6 revient donc arrter et redmarrer la machine. Le niveau d'excution 1 correspond au mode de fonctionnement mono utilisateur (encore appel mode de maintenance). Ce niveau d'excution fournit les services de base pour un seul utilisateur (normalement l'administrateur du systme). Dans ce niveau d'excution, l'administrateur peut changer la configuration et effectuer les tches de maintenance les plus critiques (par exemple, vrifier le systme de fichiers racine). La signification des autres niveaux d'excution dpend de la distribution que vous utilisez mais en gnral le niveau d'excution 2 correspond au mode multi-utilisateur avec rseau mais sans XWindow, et les niveaux d'excution 3 et 4 correspondent au mode multi-utilisateur avec login graphique sous XWindow. Les autres niveaux restent votre disposition. Le programme en charge de grer les niveaux d'excution est le programme init. Ce programme est le premier programme lanc par le noyau aprs qu'il a t charg et dmarr par le gestionnaire d'amorage ( savoir, en gnral, LILO ou le GRUB). Ce programme ne peut pas tre dtruit ou arrt, et c'est rellement le processus pre de tous les autres dans le systme. Le rle fondamental d'init est de grer les changements de niveau d'excution et de lancer et arrter les services du systme en fonction de ces niveaux. Toutefois, il s'occupe galement de tches de base concernant la gestion des autres processus. En particulier, il permet de supprimer les processus zombies. Note : Un processus zombie est un processus qui vient de se terminer et dont aucun processus n'a lu le code de retour. De tels processus apparaissent gnralement lorsque leur processus pre se DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 173
termine avant eux car, gnralement, c'est toujours le processus pre qui lit le code de retour de ses processus fils. Il suffit d'utiliser la syntaxe suivante pour forcer le changement de niveau d'excution : init niveau
o niveau est le niveau d'excution atteindre. Cela dit, cette manire de faire est assez rare, car en gnral on n'a pas besoin de changer de niveau d'excution, sauf pour arrter et redmarrer la machine. Mais pour ces oprations, les commandes shutdown, halt et reboot sont dj disponibles. Le niveau d'excution dans lequel le systme doit se placer lors de son dmarrage peut galement tre prcis en paramtre du noyau lors du dmarrage. Vous devrez donc utiliser une commande semblable celle-ci : LILO boot:linux niveau si vous utilisez LILO, ou kernel noyau niveau si vous utilisez le GRUB pour dmarrer le noyau noyau Linux dans le niveau d'excution niveau. Ainsi, pour passer en mode monoutilisateur (c'est--dire le mode de maintenance), il suffit de taper la commande suivante l'amorage de LILO : LILO boot:linux 1 ou la commande suivante sur la ligne de commande interactive du GRUB : kernel /boot/vmlinuz 1 Note : Il est galement possible d'utiliser le paramtre single, qui est synonyme du niveau d'excution 1. Le comportement d'init est dfini dans le fichier de configuration /etc/inittab. Ce fichier contient la description des niveaux d'excution, le niveau par dfaut dans lequel le systme se place au dmarrage, et les actions qu'init doit effectuer lorsque certains vnements arrivent. En particulier, il est indiqu quels sont les scripts qui doivent tre excuts lors du changement de niveau d'excution. Il est fortement, mais alors trs fortement dconseill de toucher au fichier /etc/inittab pour des raisons bien videntes. Vous trouverez de plus amples renseignements dans les pages de manuel d'init et d'inittab. Lorsqu'on change de niveau d'excution, ainsi qu'au dmarrage du systme, init appelle des scripts de configuration pour effectuer les oprations de configuration du systme et de lancement et d'arrt des diffrents services. Comme on l'a vu, ces scripts sont spcifis dans le fichier /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 d'un niveau d'excution ; les scripts excuts lors de l'entre dans un niveau d'excution. Le script appel lors du dmarrage du systme est en gnral spcifi directement dans /etc/inittab. Vous pouvez y ajouter les commandes spcifiques votre systme, comme par exemple les commandes de configuration du matriel. Ce fichier n'est excut qu'une 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 d'excution sont souvent placs dans des sous-rpertoires du rpertoire rc.d ou init.d. Ils sont classs raison d'un rpertoire par niveau d'excution. Ces sous-rpertoires portent le nom de rc0.d, rc1.d, rc2.d, etc. pour les diffrents niveaux d'excution. En fait, un seul script est excut par init lorsqu'on change de niveau d'excution, et ce DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 174
script se charge d'excuter les bons scripts dans les sous-rpertoires de rc.d ou init.d. Classiquement, ce script principal est appel avec le numro du niveau d'excution en paramtre, et il commence par appeler les scripts de sortie du niveau d'excution courant, puis les scripts d'entre dans le nouveau niveau d'excution. La distinction entre les scripts d'entre 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 d'entre (ces deux lettres correspondent respectivement aux mots anglais Kill et Start ). De plus, l'ordre 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 fichiers de scripts, et que ceux-ci soient tous placs directement dans le rpertoire /etc/rc.d/ (ou /sbin/init.d/). La raison en est qu'un mme script peut tre utilis pour diffrents niveaux d'excution, et qu'il n'a donc pas de raison d'tre dans le rpertoire d'un niveau plutt que celui d'un autre. De mme, il est assez courant que chacun de ces scripts gre la fois l'entre et la sortie du niveau d'excution, selon le paramtre qu'il 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. Ce sont les deux paramtres que le script de contrle de changement de niveau d'excution (celui appel par init et enregistr dans /etc/inittab) utilisera lors de l'entre et de la sortie du niveau d'excution. Il existe d'autres paramtres, par exemple restart permet de redmarrer le service correspondant. De cette manire, vous pouvez ajouter ou supprimer des services simplement dans chaque niveau d'excution. Il suffit d'crire un fichier script capable de prendre en paramtre l'action 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 d'excution dans lequel passera le systme. La rdaction des scripts shells de configuration dpasse largement le cadre de ce document, de mme que la configuration du comportement du systme chaque changement de niveau d'excution. La description qui tait donne ici permet simplement d'avoir une ide plus claire de la manire dont le systme se comporte au dmarrage et l'arrt. Consultez la documentation de votre distribution pour plus de dtails ce sujet. 6.6. Maintenance des systmes de fichiers Cette section vous prsentera les oprations de base sur les systmes de fichiers, telle que leur cration, leur montage et dmontage, et leur vrification. Vous y trouverez galement la manire de monter automatiquement les systmes de fichiers les plus utiliss au dmarrage du systme, ainsi que la manire de monter la demande les systmes de fichiers amovibles. Vous verrez enfin comment raliser des agrgats de volumes et comment chiffrer vos systmes de fichiers. En revanche, la description des systmes de fichiers rseau sera donne dans le chapitre traitant de la configuration rseau. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 175
6.6.1. Cration des systmes de fichiers Nous avons vu lors de l'installation comment crer un nouveau systme de fichiers EXT2 sur une partition l'aide de la commande mke2fs. Cependant, Linux peut grer de nombreux autres systmes de fichiers, et leur cration peut se faire de manire tout fait semblable la cration d'un systme de fichiers EXT2. Pour chaque systme de fichiers, une commande spcifique est fournie afin de le crer. Toutefois, une commande gnrique de cration de systmes de fichiers permet d'uniformiser la manire de crer les systmes de fichiers, rendant ainsi inutile la connaissance de ces commandes spcifiques. Cette commande gnrique est la commande mkfs. Elle prend en paramtre le type de systme de fichiers crer, que l'on peut spcifier l'aide de l'option -. En fait, mkfs appelle systmatiquement la commande de cration du systme de fichiers spcifi en paramtre. Pour que cela fonctionne, il est ncessaire que cette commande ait un nom de la forme mkfs.type, o type est le nom du systme de fichiers. Ainsi, pour crer un systme de fichiers JFS (systme de fichiers journalis cr par IBM) sur la premire partition du premier disque SCSI, il suffit d'excuter la commande suivante : mkfs -t jfs /dev/sda1
En gnral, les commandes mkfs.type ne sont rien d'autre que des liens vers les programmes de cration spcifiques des systmes de fichiers. Les commandes de cration des systmes de fichiers peuvent prendre des options particulires, qu'il faut donc pouvoir leur fournir via mkfs. mkfs transfre donc toutes les options qu'il trouve aprs la spcification du type de systme de fichiers telles quelles aux programmes de cration spcifique des systmes de fichiers. La liste des options effectivement disponibles peut tre consulte dans les pages de manuel respectives de ces programmes. 6.6.2. Montage des systmes de fichiers Comme il l'a t vu dans le chapitre expliquant les gnralits sur Unix, les systmes de fichiers ne sont donc pas accessibles directement. Ils doivent en effet subir une opration que l'on nomme le montage avant de pouvoir tre utiliss. Le montage est donc l'opration qui consiste associer un rpertoire au point d'entre d'un systme de fichiers. Une fois mont, les donnes d'un systme de fichiers sont accessibles partir de ce rpertoire. L'opration de montage permet ainsi de raliser une abstraction du support des systmes de fichiers, qui peuvent se trouver aussi bien sur disque qu'en mmoire ou que sur un rseau. L'opration permettant de monter un disque suit la syntaxe suivante : mount [-t type] fichier base
o fichier est le fichier contenant le systme de fichiers monter (en gnral, il s'agit d'un fichier spcial de priphrique, mais ce peut galement tre une image disque), et base est le point de montage, c'est--dire le rpertoire partir duquel le systme de fichiers doit tre accd. L'option - permet d'indiquer le type du systme de fichiers. Notez qu'en gnral il n'est pas ncessaire de le prciser, car le noyau sait reconnatre la plupart des systmes de fichiers automatiquement. Pour information, les types de systmes de fichiers les plus utiliss sont les suivants : ext2, pour les systmes de fichiers EXT2 ; DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 176
ext3, pour les systmes de fichiers EXT3. Il est ncessaire d'avoir cr le journal du systme de fichiers au pralable, avec l'option -_ de la commande mke2fs ou de la commande tune2fs ; reiserfs, pour les systmes de fichiers ReiserFS ; iso9660, pour les CD-ROM (qu'ils soient avec extensions Joliet ou Rock Ridge ou en mode ISO 9660 pur) ; ntfs, pour les systmes de fichiers NTFS ; msdos, pour les systmes de fichiers FAT normaux ; vfat, pour les systmes de fichiers FAT32. Si le rpertoire de montage n'est pas vide, les fichiers qui s'y trouvent sont masqus par le systme de fichiers mont. Il est donc recommand de ne monter les systmes de fichiers que dans des rpertoires vides. Pour les supports de systme de fihciers amovibles, il arrive parfois que Linux ne puisse pas dterminer la gomtrie ou la table de partition du support de donnes. Par exemple, lorsque l'on insre une carte mmoire dans un lecteur de carte, Linux considre que le priphrique n'a pas chang (puisque le lecteur de carte est toujours branch) et ne relit donc pas les informations de la carte mmoire. Il peut donc tre ncessaire de demander explicitement au systme de relire la table de partition du priphrique. Cela peut tre ralis avec l'option --rereadp de la commande blockdev : blockdev --rereadpt priphrique
o priphrique est le fichier spcial de priphrique dont la table de partition doit tre relue. La commande mount peut prendre diverses options pour le montage des systmes de fichiers. Par exemple, elle permet de monter des systmes de fichiers en lecture seule, ou de monter des systmes de fichiers placs dans des images disques. Ces options sont introduites par l'option de ligne de commande -o, et doivent tre spares les unes des autres par des virgules. Par exemple, pour monter un systme de fichiers ISO9660 en lecture seule, on utilisera la ligne de commande suivante : mount -t iso9660 -o ro fichier base
Une autre option utile pour le montage des CD-ROMs est sans doute l'option session, qui permet d'indiquer le numro de la session monter dans le cas des CD-ROMs multisessions. Par exemple, pour monter la deuxime session d'un CD-ROM multisession, on utilisera une ligne de commande telle que celle-ci :
mount -t iso9660 -o ro,session=2 fichier base Le systme de fichiers EXT3 prend galement des options supplmentaires par rapport au systme de fichiers EXT2. Ces options permettent de contrler la manire dont la journalisation des oprations sur disque est ralise. Avec EXT3, le journal peut tre utilis pour stocker toutes les oprations concernant la structure de donnes mme du systme de fichiers (c'est--dire ce que l'on appelle les mta-donnes du systme de fichiers) et les oprations concernant les donnes des fichiers elles- mmes. La diffrence est importante et il faut bien la comprendre. Si l'on choisit de ne journaliser que les mta-donnes du systme de fichiers, les informations concernant les rpertoires, les fichiers et les droits d'accs seront toujours dans un tat cohrent. En revanche, les donnes stockes dans les fichiers eux-mmes peuvent tre a priori fausses la suite d'un redmarrage impromptu. Si, en revanche, on dcide de stocker galement les informations concernant les donnes des fichiers dans le journal, le contenu des fichiers sera galement garanti, au dtriment d'une perte de performances DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 177
notable. Le mode de fonctionnement utiliser est spcifi l'aide de l'option daa du systme de fichiers, qui doit donc tre fixe lors de l'opration de montage. Cette option peut prendre l'une des trois valeurs suivantes : journal, qui permet d'effectuer une journalisation complte des mta-donnes et des donnes des fichiers. Il est donc garanti que le contenu des fichiers est toujours cohrent, tout comme l'est le systme de fichiers. Cette option procure le maximum de scurit, mais c'est galement celle qui pnalise le plus les performances du systme (les donnes sont crites deux fois, une fois dans le journal, et une fois sur disque) ; ordered, qui est l'option par dfaut et qui permet de ne journaliser que les mta-donnes, mais qui garantit galement que les tampons d'criture sont vids avant chaque journalisation d'une opration disque. Tout comme avec l'option journal, il est garantit que le systme de fichiers est dans un tat cohrent. Les donnes des fichiers seront galement cohrentes avec les structures de donnes du systme de fichiers. Cependant, rien ne garantit que le contenu des fichiers sera lui aussi cohrent en interne, car mme si les donnes sont crites avant toute modification du systme de fichiers, aucun contrle n'est effectu pour que les critures soient ralises dans l'ordre dans lequel les applications les ont effectues. Cela dit, les performances sont meilleures qu'avec l'option journal, tout en garantissant une scurit quasi totale des fichiers ; writeback, qui permet de ne journaliser que les mta-donnes du systme de fichiers. Le contenu des fichiers peut donc tre incorrect, voire mme contenir des donnes alatoires la suite d'un arrt brutal du systme, mais le systme de fichiers est toujours dans un tat correct. Cette option permet donc simplement de rendre facultative la vrification et la rparation des systmes de fichiers EXT2 au redmarrage. Les performances sont quasiment aussi bonnes que pour le systme de fichiers EXT2. Enfin, il est possible de monter un systme de fichiers plusieurs fois, ventuellement avec des options diffrentes, dans diffrents points de montage. De mme, il est possible de monter une partie d'un systme de fichiers seulement dans un autre rpertoire, par exemple pour raliser un raccourci vers un sous ensemble du systme de fichiers hte. Vous pouvez consulter la page de manuel de la commande mount pour obtenir plus de dtail ce sujet. Vous pourrez trouver la liste des autres options acceptes par mount et par les systmes de fichiers dans la page de manuel mount. 6.6.3. Dmontage des systmes de fichiers Les systmes de fichiers sont grs de manire trs efficace par les systmes d'exploitation. Des mcanismes de copie en mmoire des donnes sont utiliss afin d'acclrer leur lecture, et les critures peuvent tre diffres pour tre regroupes et ainsi optimiser les transferts. De ce fait, l'tat du systme de fichiers sur le support n'est quasiment jamais exactement en phase avec celui du systme de fichiers en mmoire lorsqu'il est en cours d'utilisation. Il est donc ncessaire de signaler au systme d'exploitation que l'on dsire l'arrter avant de couper le courant, ou que l'on dsire retirer un lecteur amovible avant de le faire, afin qu'il puisse effectuer les synchronisations ncessaires. Ne pas le faire risquerait de provoquer des pertes de donnes irrmdiables. Cette opration s'appelle simplement le dmontage. Note : Bien entendu, les commandes d'arrt du systme se chargent (entre autres) de dmonter tous les systmes de fichiers avant d'teindre l'ordinateur. La commande permettant de dmonter un systme de fichiers est beaucoup plus simple que celle permettant de les monter, car aucune option n'est ncessaire. Il suffit en effet d'excuter l'une des commandes suivantes : DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 178
umount fichier ou umount base
Dans ces commandes, fichier reprsente le fichier contenant le systme de fichiers dmonter, et base est le rpertoire dans lequel ce systme de fichiers est mont. On peut utiliser l'un ou l'autre de ces paramtres, la commande umount se dbrouillera pour retrouver l'autre automatiquement. On notera qu'il est impossible de dmonter un systme de fichiers qui est en cours d'utilisation par quelqu'un. En particulier, il ne faut pas tre dans le rpertoire servant de point de montage pour pouvoir dmonter un systme de fichiers, car dans ce cas on est en train de l'utiliser. Faites bien attention l'orthographe de la commande umount, elle a perdu son 'n' depuis bien longtemps dj, et on ne l'a jamais retrouv. Si vous savez o il se trouve, faites-le savoir. Pour les supports de systmes de fichiers amovibles, le dmontage du systme de fichiers peut ne pas tre suffisant. En effet, il peut tre ncessaire d'arrter le priphrique correctement avant de l'jecter. C'est en particulier le cas pour les systmes de fichiers sur les clefs USB par exemple. Cette opration peut tre ralise l'aide de la commande eject : eject priphrique
o priphrique est le fichier spcial du priphrique jecter Cette commande ralise galement l'opration de dmontage sur les systmes de fichiers monts avant d'ejecter le disque. 6.6.4. Vrification des systmes de fichiers La vrification des systmes de fichiers est une opration que l'on ne devrait jamais avoir faire. Il y a plusieurs raisons cela. Premirement, si l'on arrte le systme correctement avant d'teindre la machine, et si l'on dmonte bien les systmes de fichiers avant de retirer les lecteurs amovibles, les systmes de fichiers sont normalement toujours dans un tat correct. Deuximement, les systmes de fichiers Unix sont rputs pour tre trs fiables. Troisimement, une vrification priodique est faite par le systme au bout d'un certain nombre de dmarrages. Quatrimement, si un systme de fichiers n'est pas dmont correctement avant l'arrt du systme, celui-ci sera vrifi automatiquement au dmarrage suivant, ce qui fait qu'il n'y a pas lieu de le faire soi-mme. Enfin, pour les systmes de fichiers journaliss tels que EXT3, JFS ou ReiserFS, cette opration peut tre ralise trs rapidement l'aide des informations qui sont stockes dans le journal des transactions du systme de fichiers. Toutefois, mme le meilleur systme du monde ne saurait tre l'abri des secteurs dfectueux du disque dur sur lequel il est install. Il est donc parfois ncessaire d'effectuer une vrification manuelle des systmes de fichiers, et il faut savoir le faire mme quand plus rien ne fonctionne. Un systme de fichiers ne se manipule que lorsqu'il est dmont. Cela pose videmment quelques problmes pour le systme de fichiers racine, puisqu'on ne peut pas accder aux outils de vrification sans le monter. Pour ce systme de fichiers, il n'y a donc que deux possibilits : soit on utilise une disquette de dmarrage contenant les outils de vrification et de rparation des systmes de fichiers ; soit on monte le systme de fichiers racine en lecture seule. La deuxime solution est la seule ralisable si l'on ne dispose pas de disquette de dmarrage. Par consquent, c'est cette mthode qui sera dcrite ici. La premire tape consiste passer en mode mono utilisateur, afin de s'assurer que personne ni aucun programme n'accde au systme de fichiers racine en criture. Pour cela, il suffit de taper la commande suivante : init 1 DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 179
qui fait passer le systme dans le niveau d'excution 1. On peut galement passer le paramtre sing1e au noyau lors de l'amorage du systme, comme il l'a t expliqu dans la section prcdente. Ensuite, il faut s'assurer que le systme de fichiers racine est en lecture seule, ce qui se fait avec la commande suivante :
mount -n -o remount,ro /
L'option remoun permet de dmonter et de remonter le systme de fichiers racine, et l'option ro indique qu'il doit tre remont en lecteur seule ( ro signifie Read Only ). Les options sont spares par des virgules (attention, il ne faut pas insrer d'espace). De plus, l'option -n indique mount qu'il ne doit pas crire dans le fichier /etc/mtab lorsqu'il aura remont le systme de fichiers, parce que ce fichier sera alors galement en lecture seule et qu'on ne pourra pas y crire. Ce fichier est utilis par mount pour mmoriser les systmes de fichiers qui sont monts, afin de pouvoir en donner la liste (ce que la commande mount fait lorsqu'elle est appele sans paramtres) et de permettre la commande umount de vrifier que les systmes de fichiers dmonter ne le sont pas dj. Note : Normalement, le noyau monte toujours le systme de fichiers racine en lecture seule lors de l'amorage. Ce sont les scripts de dmarrage du systme, lancs par init, qui le remontent en lecture / criture s'il est dans un tat correct. Il est donc fortement probable, si votre systme ne dmarre plus correctement, que le systme de fichiers racine soit dj en lecture seule aprs un dmarrage en mode de maintenance. La commande prcdente n'est donc dcrite qu' titre indicatif. Une fois le systme de fichiers racine mont en lecture seule, on peut utiliser le programme fsck afin de le vrifier et ventuellement le rparer. En ralit, ce programme ne fait rien d'autre que d'appeler un programme spcifique pour chaque systme de fichiers, de la mme manire que mkfs appelle des programmes spcifiques pour les crer. Par exemple, pour les systmes de fichiers EXT2 et EXT3, fsck appelle le programme fsck.ext (qui est un lien vers e2sfck). La ligne de commande utiliser pour vrifier un systme de fichiers avec fsck est la suivante : fsck -a fichier
o fichier est le fichier spcial du priphrique ou le fichier image contenant le systme de fichiers vrifier. Il faut donc, gnralement, spcifier la partition sur laquelle le systme de fichiers racine se trouve. L'option -a demande fsck d'effectuer les ventuelles corrections automatiquement en cas d'erreur sur le systme de fichiers ainsi vrifi, sans confirmation de la part de l'utilisateur. Il est galement possible de demander la vrification de tous les systmes de fichiers enregistrs dans le fichier de configuration /etc/fstab. Ce fichier contient la liste des systmes de fichiers les plus utiliss et leurs options respectives. Il suffit donc d'ajouter l'option -A : fsck -a A
Il n'est videmment plus ncessaire de spcifier le fichier spcial du priphrique contenant le systme de fichiers vrifier, puisque cette information est enregistre dans le fichier /etc/fstab. La syntaxe de ce fichier sera dcrite dans la section suivante. Si le disque dur contient des secteurs dfectueux, il peut tre ncessaire de les marquer comme tels dans les structures du systme de fichiers afin de ne pas les utiliser par la suite. De manire gnrale, la recherche de ces blocs peut tre faite l'aide du programme badblocks. Cette commande effectue un test de lecture de tous les blocs du disque sur lequel le systme de fichiers se trouve, et gnre une liste des blocs dfectueux. Vous pouvez l'appeler directement et fournir cette liste au programme e2fsck l'aide de son option -1, mais le plus simple est encore de demander e2fsck d'appeler DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 180
badblocks lui-mme. Pour cela, il suffit de lui passer l'option -c, ce qui se fait en faisant prcder cette option d'un double-tiret dans la ligne de commande de fsck : fsck -a -- -c priphrique Note : L'option -c est spcifique e2fsck et peut ne pas fonctionner avec d'autres systmes de fichiers. En particulier, certains systmes de fichiers ne sont pas capable de grer correctement les blocs dfectueux des disques durs. C'est le cas du systme de fichiers ReiserFS. Le programme badblocks peut galement effectuer un test d'criture sur le disque dur, si on lui communique l'option -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 fichiers contenant des donnes ! De manire gnrale, il vaut mieux prvenir que gurir, aussi est-il recommand d'utiliser la commande badblocks au moins une fois avant d'utiliser un systme de fichiers. Cette vrification peut tre ralise de manire automatique lors de la cration du systme de fichiers l'aide de l'option -c de la commande mke2fs. Une fois que vous aurez termin la vrification du systme de fichiers, vous pourrez le remonter en lecture et criture avec la commande suivante : mount -n -o remount,rw / Cette commande est similaire celle que l'on a vue pour monter le systme de fichiers en lecture seule, ceci prs que l'option rw est utilise la place de l'option ro. Cette option permet de remonter le systme de fichiers en lecture et en criture ( rw est l'abrviation de l'anglais Read Write ). 6.6.5. Configuration du montage des systmes de fichiers Le montage des systmes de fichiers peut devenir trs vite une opration assez fastidieuse. Heureusement, elle peut tre automatise au dmarrage pour les systmes de fichiers situs sur les disques fixes, et simplifie pour les systmes de fichiers amovibles. Pour cela, il faut enregistrer ces systmes de fichiers et leurs options de montage dans le fichier de configuration /etc/fstab. Ce fichier contient, entre autres, le rpertoire de montage, le type du systme de fichiers et le fichier de priphrique utiliser pour chaque systme de fichiers. De cette manire, il est possible d'utiliser la commande mount de manire simplifie, en ne prcisant que le rpertoire servant de point de montage ou le fichier spcial de priphrique. Le fichier /etc/fstab contient une ligne pour chaque systme de fichiers enregistr. Chaque ligne contient plusieurs champs spars par des espaces. Les informations suivantes sont enregistres dans ces champs : le fichier spcial permettant d'accder au systme de fichiers ; le rpertoire servant de point de montage par dfaut ; le type du systme de fichiers ; les options de montage pour ce systme de fichiers ; un entier indiquant si le systme de fichiers doit tre sauvegard ; un entier indiquant l'ordre que ce systme de fichiers doit avoir dans la liste des systmes de fichiers vrifier. Grce ces informations, l'emploi de la commande mount est plus simple : DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 181
mount priphrique ou mount rpertoire
o priphrique est le fichier spcial de priphrique contenant le systme de fichiers monter, et rpertoire est le rpertoire servant de point de montage indiqu dans le fichier /etc/fstab. Il est possible d'utiliser indiffremment le fichier spcial de priphrique ou le rpertoire du point de montage. Le type du systme de fichiers est l'un 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 : l'option defaults, qui permet de choisir les options par dfaut pour ce systme de fichiers ; l'option auto, qui permet de faire en sorte que le systme de fichiers soit mont automatiquement au dmarrage du systme ; l'option user, qui permet d'autoriser le montage de ce systme de fichiers par les utilisateurs ; l'option ro, qui permet de monter le systme de fichiers en lecture seule ; l'option rw, qui permet de monter le systme de fichiers en lecture et criture ; l'option exec, qui permet d'autoriser l'excution des fichiers excutables sur ce systme de fichiers si celui-ci ne supporte pas la notion de droit d'excution ; l'option acl, qui permet d'autoriser l'utilisation des ACLs ( Access Control List ) pour fixer les droits des utilisateurs sur les fichiers ; l'option uid=utilisateur, qui permet de spcifier le numro utilisateur de l'utilisateur propritaire du rpertoire racine de ce systme de fichiers ; l'option gid=groupe, qui permet de spcifier le numro groupe du groupe d'utilisateurs auquel le rpertoire racine du systme de fichiers appartient ; l'option mode=valeur, qui permet de fixer les droits sur le rpertoire racine du systme de fichiers monter. La valeur valeur est donne en octal ; l'option umask=valeur, qui permet de fixer les droits sur les fichiers qui ne sont pas grs par le systme de fichiers. La valeur valeur est donne en octal ; les options codepage=cp et iocharset=charset, qui permettent de fixer les tables de conversion des caractres pour les systmes de fichiers pour lesquels les noms de fichiers doivent tre transcods. Nous allons dtailler un peu quelques-unes de ces options. Par dfaut, les utilisateurs n'ont pas le droit de monter et de dmonter les systmes de fichiers. L'option 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, l'excution des fichiers excutables n'est par dfaut pas autorise sur les systmes de fichiers. Cette restriction permet d'viter l'excution de programmes placs sur des systmes de fichiers de systmes d'exploitation diffrents. Elle peut tre leve grce l'option exec. Tous les systmes de fichiers disposant de l'option auo seront monts automatiquement au dmarrage du systme par la commande mount -a. Les autres systmes de fichiers sont montables manuellement, avec les autres options indiques dans le fichier /etc/fstab. Les options ro et rw permettent d'indiquer mount si le systme de fichiers doit tre mont en lecture seule ou en lecture et criture. Les systmes de fichiers devant tre rpars doivent tre monts en lecture seule si l'on ne peut pas les dmonter (c'est le cas notamment du systme de fichiers racine). 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 spcifier le propritaire et le groupe du rpertoire racine du systme de fichiers monter. Par dfaut, c'est l'utilisateur root qui devient propritaire de ce systme de fichiers. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 182
L'option mode permet de spcifier les droits d'accs sur tous les fichiers du systme de fichiers monter. L'option umas' permet quant elle de fixer les droits qui ne sont pas grs par le systme de fichiers. Ce peut tre utile pour les systmes de fichiers FAT et FAT32. Il est ainsi possible de donner les droits de lecture et d'excution pour les fichiers de ces systmes avec une valeur de masque nulle. Cela permet de monter les systmes de fichiers FAT et FAT32 de telle sorte que tous les fichiers appartiennent l'utilisateur root par dfaut, et de donner cependant tous les droits tous les utilisateurs sur ces fichiers. On prendra garde ces options, car elles permettent quiconque d'crire des fichiers sous le nom de root, et donc constituent un grave dfaut dans la scurit du systme. Les options codepage et iocharse permettent de spcifier respectivement la page de codes et le jeu de caractres utiliss pour les systmes de fichiers qui ne stockent pas les noms de fichiers Unix nativement. En particulier, elles permettent de modifier la page de code et le jeu de caractres slectionns par dfaut dans la configuration du noyau pour les systmes de fichiers FAT. L'option codepage est utilise pour donner la page de codes utilise pour la conversion des noms de fichiers en noms de fichiers courts. En gnral, pour les systmes franais, la page de codes utilise est la page de codes 850. Il faut donc donner cette option la valeur cp850. L'option iocharse quant elle est utilise pour faire la conversion des noms de fichiers Unix en Unicode. Elle est utilise pour les systmes de fichiers VFAT, car ceux-ci stockent les noms de fichiers longs en Unicode. Pour la plupart des systmes, le jeu de caractres le plus appropri est sans doute le jeu de caractres ISO8859-1. Aussi faut-il gnralement donner cette option la valeur iso8859-1. Cette option n'est pas ncessaire pour les systmes de fichiers FAT purs, puisque ceux-ci ne savent pas grer les noms de fichiers longs. Les deux derniers champs de /etc/fstab spcifient des options pour des programmes annexes. L'avant- dernier contrle le comportement du programme de sauvegarde dump, et le dernier celui du programme de vrification de systme de fichiers fsck. Consultez les pages de manuel pour plus de dtails ce sujet. Si vous disposez de systmes de fichiers FAT ou FAT32, vous pourrez monter ces partitions automatiquement lors du dmarrage du systme. Comme les systmes de fichiers bass sur la FAT ne peuvent pas grer les droits des utilisateurs, vous allez devoir faire un choix pour fixer ces droits une valeur raisonnable. Vous pouvez par exemple donner le droit de lecture tous les utilisateurs, mais le droit d'criture uniquement l'administrateur systme. La ligne ajouter dans le fichier /etc/fstab sera alors la suivante : /dev/partition rpertoire vfat auto,exec,codepage=cp850,iocharset=iso8859-1 0 0 o partition est la partition contenant le systme de fichiers FAT, et rpertoire est le rpertoire servant de point de montage pour cette partition. Cette ligne permettra de monter automatiquement ce systme de fichiers en tant que FAT32 au dmarrage du systme. Les fichiers binaires seront excutables, bien qu'ils ne soient pas stocks sur un systme de fichiers EXT2. Si vous voulez laisser les droits d'criture aux utilisateurs, vous pouvez utiliser la ligne suivante la place de celle indique ci-dessus : /dev/partition rpertoire vfat auto,codepage=cp850,iocharset=iso8859-1,umask=0 0 0 Cette ligne permet de monter le systme de fichiers FAT en laissant les droits d'excution et d'criture aux utilisateurs. Cependant, aucun fichier excutable de ce systme de fichiers ne pourra tre lanc, car l'option exec n'a pas t prcise. Par ailleurs, certaines distributions spcifient des options incorrectes pour le systme de fichiers /dev/pts/ dans le fichier /etc/fstab. Veuillez vous assurer que la ligne utilise pour ce systme de fichiers est bien identique la ligne suivante : none /dev/pts devpts auto,gid=5,mode=620 0 0 Si ce n'est pas le cas, certains mulateurs de terminaux dvelopps rcemment ne fonctionneront pas correctement. Le systme de fichiers /dev/pts/ est en effet un systme de fichiers virtuel, gr DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 183
directement par le noyau, dans lequel des fichiers spciaux de priphriques utiliss par les mulateurs de terminaux sont placs. Si les droits ne sont pas correctement fixs sur le rpertoire racine de ce systme de fichiers, 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 qu'il faut que tout le monde ait les droits d'criture et de lecture sur le fichier spcial de priphrique /dev/ptmx pour que les utilisateurs non privilgis puissent utiliser ce systme de fichiers virtuel. Vous devrez galement ajouter le systme de fichiers virtuel /dev/shm/ dans votre fichier /etc/fstab. Ce systme de fichiers permet aux applications qui le dsirent d'utiliser des segments de mmoire partage de manire compatible avec la norme POSIX, par exemple pour raliser des communications inter-processus. Ce systme de fichiers permet en effet de crer des fichiers qui sont directement stocks dans la mmoire virtuelle et qui peuvent tre ouverts par plusieurs processus simultanment, ce qui permet d'utiliser les fonctionnalits classiques de partage de fichiers pour partager des zones de mmoire entre plusieurs processus. Ce type de communication peut tre utilis par des processus courants, aussi faut-il vous assurer que la ligne suivante se trouve bien dans la fichier fstab : tmpfs /dev/shm tmpfs defaults 0 0
Bien entendu, vous devrez crer le point de montage /dev/shm/ si celui-ci n'existe pas avant de monter ce systme de fichiers virtuels. Vous pouvez monter les systmes de fichiers virtuels du noyau, qui vous permettront d'obtenir des informations sur votre systme et d'en modifier le comportement, en ajoutant les deux lignes suivantes dans le fichier /etc/fstab : proc /proc proc defaults 0 0 sysfs /sys sysfs defaults 0 0
La premire ligne monte le systme de fichiers /proc/, qui contient tous les paramtres du noyau et permet de paramtrer son comportement, et la deuxime contient le systme de fichiers /sys/, qui contient une vue de tous les objets systmes grs par le noyau. Ce systme de fichiers n'est disponible qu'avec les versions 2.6 et plus du noyau. Ces deux lignes ne sont gnralement pas ncessaires, car ces systmes de fichiers sont monts automatiquement dans les scripts d'initialisation des distributions. Enfin, si vous utilisez des priphriques USB, il vous faudra galement monter le systme de fichiers virtuel /proc/bus/usb/ en ajoutant la ligne suivante dans le fichier fstab : none /proc/bus/usb usbfs defaults 0 0
Cette ligne doit tre place aprs celle qui effectue le montage du systme de fichiers virtuel /proc/. 6.6.6. Montage des systmes de fichiers la demande Les systmes de fichiers sur les supports amovibles ne peuvent pas tre monts automatiquement au dmarrage du systme, tant donn qu'ils ne sont pas forcment prsents ce moment. Les entres qui les dcrivent dans le fichier fstab doivent donc utiliser l'option noauo. De ce fait, l'utilisation des systmes de fichiers stocks sur les supports amovibles ncessite toujours un montage et un dmontage manuel, et mme si ces oprations sont simplifies, elles restent gnantes. Il est toutefois possible de faire en sorte que ces systmes de fichiers soient monts la demande, c'est dire ds qu'un accs est ralis dans les rpertoires de montage ddis ces systmes par un quelconque programme. Ainsi, il n'est plus ncessaire de monter ces systmes de fichiers manuellement. Le dmontage quant lui peut tre ralis automatiquement aprs un temps DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 184
d'inactivit, ou manuellement, lorsqu'on veut retirer le lecteur amovible. Notez que le dmontage reste vital si le systme de fichiers est accd en criture, car des donnes pourraient tre perdues si l'on supprime le lecteur avant qu'elles ne soient crites. Les oprations de montage et de dmontage sont ralises par un dmon, que le noyau appelle automatiquement ds qu'une opration susceptible de concerner un systme de fichiers amovible se produit. Ce dmon se nomme automount, et il s'appuie donc sur une fonctionnalit ddie du noyau Linux. Pour que le montage automatique des systmes de fichiers fonctionne, il faut activer soit l'option Kernel automounter support , soit l'option Kernel automounter version 4 support (also supports v3) du menu File systems du programme de configuration du noyau. 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 signifie ange en ralit. Le dmon se place donc en tant qu'intermdiaire entre Dieu (c'est--dire le noyau) et les hommes (c'est--dire les applications normales). Le terme daemon a t ensuite clairci et dfini comme l'acronyme de l'anglais Disk And Execution MONitor . Le dmon automount peut surveiller plusieurs points de montage, s'ils sont tous placs dans le mme rpertoire. Le noyau surveille simplement les accs sur les sous-rpertoires de ce rpertoire, et signale automount toutes les oprations susceptibles de ncessiter un montage de systme de fichiers. Les informations spcifiques aux points de montage doivent tre stockes dans un fichier de configuration, que l'on doit fournir automount en ligne de commande. Cette ligne de commande est donc typiquement de la forme suivante : automount -t dure rpertoire file fichier
o dure est la dure d'inactivit avant dmontage automatique du systme de fichiers, rpertoire est le rpertoire dont les sous-rpertoires seront utiliss comme points de montage des systmes de fichiers (il s'agit gnralement du rpertoire /mnt/), et fichier est le fichier de configuration pour les points de montage placs dans ce rpertoire. La dure d'inactivit doit tre spcifie en secondes, et la valeur par dfaut est de cinq minutes. Pour dsactiver le dmontage automatique, il suffit de spcifier une valeur nulle. Note : automount est capable d'utiliser d'autres mthodes de paramtrage des systmes de fichiers amovibles que des fichiers de configuration, principalement utilises dans le contexte du montage automatique des systmes de fichiers en rseau. Ces mthodes de paramtrage ne seront toutefois pas dcrites ici, vous pouvez consulter la page de manuel du dmon automount pour plus de dtails ce sujet. Les fichiers de configuration pour automount sont gnralement placs dans le rpertoire /etc/, et portent un nom de la forme auto.nature , o nature est la nature des systmes de fichiers dcrits par ce fichier. Par exemple, le fichier de configuration pour les lecteurs amovibles locaux pourrait s'appeler /etc/auto.local. Ce fichier de configuration est constitu de plusieurs lignes, raison d'une ligne par point de montage. Chaque ligne utilise la syntaxe suivante : rpertoire -options priphrique
o rpertoire est le sous-rpertoire du rpertoire spcifi en ligne de commande automount et devant servir de point de montage, options est la liste des options de montage du systme de fichiers, spares par des virgules, et priphrique est la localisation du systme de fichiers. Pour les lecteurs amovibles, il s'agit du fichier spcial de priphrique permettant d'y accder, prcd du caractre ':'. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 185
Par exemple, pour raliser le montage automatique du lecteur de CD-ROM et du lecteur de disquettes, vous devez ajouter deux lignes telles que celles-ci dans le fichier de configuration d'automount : cdrom -fstype=iso9660,ro :/dev/cdrom floppy -fstype=auto,umask=0 :/dev/fd0
Vous noterez que les options sont prcdes d'un tiret ('-'), et que les fichiers spciaux de priphrique sont prcds de deux points (':'). Une fois ce fichier dfini, vous n'aurez plus qu' lancer automount avec la ligne de commande suivante :
automount -t 60 /mnt file /etc/auto.local En gnral, les distributions lancent automatiquement le dmon automount au dmarrage, via le script d'initialisation rc.autofs. Ce script utilise le fichier de configuration /etc/auto.master pour dterminer les noms des fichiers de configuration fournir en paramtre aux dmons automount, ainsi que pour dterminer les options avec lesquelles ils doivent tre lancs. Ce fichier est constitu de lignes, raison d'une ligne par instance du dmon automount qui doit tre lance. Le format de ces lignes est le suivant : rpertoire fichier options
o rpertoire est le rpertoire spcifi en ligne de commande automount, fichier est le fichier de configuration, et option est la liste des options lui fournir. Par exemple, pour lancer automatiquement automount comme dans l'exemple prcdent, la ligne suivante devrait tre ajoute dans le fichier /etc/auto.master :
/mnt /etc/auto.local -t 60 Note : Vous noterez que lorsque les systmes de fichiers ne sont pas monts, le rpertoire contenant leurs points de montage est vide. De ce fait, les chemins sur ces rpertoires devront tre saisis explicitement pour forcer le montage des systmes de fichiers. Cela peut tre gnant lorsque l'on utilise les fonctionnalits de compltion automatique des shells, ou lorsqu'on cherche localiser un fichier dans un de ces rpertoires avec un gestionnaire de fichiers ou une bote de dialogue d'un programme graphique. Une solution pour rsoudre ce problme est de forcer une rfrence aux points de montage. Pour cela, il suffit de dfinir des liens symboliques sur les points de montage, et d'utiliser ces liens symboliques vers ces points de montage. Par exemple, on pourra dfinir les liens symboliques /cdrom et /floppy pour rfrencer les points de montage /mnt/cdrom et /mnt/floppy, et laisser automount monter les systmes de fichiers relatifs et crer les rpertoires des points de montage ds qu'on accdera aux liens symboliques. 6.7. Gestion des volumes Linux fournit des mcanismes trs puissants permettant de crer des fichiers spciaux de priphrique de type bloc virtuels, et d'indiquer les donnes qui seront accdes au travers de ces fichiers. Cela permet de manipuler des systmes de fichiers stocks sur un fichier. Linux permet galement de raliser des agrgats de volumes. Ces agrgats peuvent ensuite tre accds via diffrentes techniques, par exemple pour raliser de la rplication de donnes ou tout simplement pour simuler un priphrique de trs grande taille. Ils permettent galement de raliser la vole des oprations de chiffrement sur les donnes crites, et de les dchiffrer en lecture. Ainsi, ces mcanismes d'agrgation sont utiliss pour grer les volumes de manire beaucoup plus souple que les mcanismes de partitionnement classiques et pour crer des systmes de fichiers chiffrs l'aide des algorithmes cryptographiques du noyau. Nous allons prsenter tous ces mcanismes dans les sections suivantes. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 186
6.7.1. Gestion des fichiers images Linux permet de stocker des systmes de fichiers dans des fichiers image et de les manipuler de manire transparente, grce un mcanisme de priphriques de type bloc virtuel. Le principe est d'associer le fichier l'un de ces priphriques, et d'utiliser simplement le fichier spcial de priphrique correspondant comme un fichier spcial de priphrique de type bloc classique. Il est ainsi possible de construire une image de systmes de fichiers de manire tout fait transparente, et d'accder aux donnes stockes dans une image de CD-ROM de manire tout aussi facile. Les fichiers spciaux de priphrique utiliss pour manipuler les fichiers images sont les fichiers /dev/loopX, o X est un numro allant de 0 7. Ces fichiers ne sont utilisables que si l'option Loopback device support du menu Block devices a t active dans la configuration du noyau. L'association entre le priphrique de type bloc virtuel et le support des donnes peut tre ralise l'aide de la commande losetup. La syntaxe la plus simple de cette commande est la suivante : losetup /dev/loopX fichier
o loopX est le fichier spcial de priphrique de type bloc virtuel utiliser, et fichier est le fichier dans lequel les donnes de ce priphrique doivent tre stockes. Une fois cette association faite, on peut utiliser ce priphrique comme un vritable priphrique. Ainsi, pour crer un systme de fichiers dans un fichier image de 10 Mo, on procdera comme suit :
dd if=/dev/zero of=image bs=1024 count=10240 losetup /dev/loop0 image mkfs -t ext2 /dev/loop0 Note : La commande dd permet de copier un certain nombre de blocs, ici 10240 (option coun) de 1024 octets (taille indique par l'option bs) du fichier spcial de priphrique /dev/zero dans le fichier image. Cette commande a dj t prsente dans le chapitre d'installation pour raliser une copie du secteur de boot principal du disque dur. En ralit, les commandes de cration de systmes de fichiers peuvent galement crer directement les systmes de fichiers dans des fichiers images. La manire classique de procder a toutefois t prsente ici pour la bonne comprhension du mcanisme de gestion des fichiers images. Le montage d'un systme de fichiers plac dans l'image disque est ensuite ralisable de manire tout fait classique, en utilisant le fichier spcial de priphrique /dev/loopX adquat dans la commande mount. Toutefois, cette commande permet de raliser le montage d'une image de manire simplifie grce son option 1oop. Celle-ci permet de configurer le priphrique virtuel image de manire automatique avant de raliser le montage. Elle prend donc en paramtre le fichier spcial de priphrique virtuel utiliser, ainsi que le chemin sur le fichier image contenant le systme de fichiers. Ainsi, pour monter une image de CD-ROM, vous pouvez utiliser la commande suivante : mount -t iso9660 -o ro,loop=/dev/loop0 image /mnt/cdrom Lorsque l'on n'a plus besoin du priphrique de type bloc virtuel, il est possible de supprimer l'association avec le support de donnes simplement avec la commande suivante : losetup -d /dev/loopX
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 187
o X est toujours le numro du fichier spcial de priphrique virtuel. Lorsque l'on utilise l'option 1oop de la commande mount, cette opration est ralise automatiquement par la commande umount et ne doit plus tre effectue manuellement. 6.7.2. Agrgation de volumes Les agrgats de volumes de Linux permettent de construire un priphrique virtuel constitu d'un certain nombre de volumes de donnes. Ceux-ci peuvent tre regroups pour raliser un volume de grande taille, ou mis en parallle afin de rpliquer les donnes sur plusieurs disques par exemple. Il est donc possible, grce cette fonctionnalit, de regrouper plusieurs disques durs ou plusieurs partitions en une seule partition logique, ou au contraire de subdiviser de manire fine des partitions ou des disques existants. De mme, il est possible de prendre en charge au niveau logiciel les fonctionnalits RAID normalement disponibles uniquement avec du matriel spcialis. Nous ne prsenterons toutefois pas ces fonctionnalits ici. La ralisation des agrgats de volumes se fait l'aide de l'outil dmsetup. Cet outil peut tre rcupr sur le site de Redhat s'il n'est pas fourni avec votre distribution. Son installation se fait par compilation des sources, par excution des commandes suivantes dans le rpertoire des sources : ./configure make make install La principale commande de dmsetup est celle qui permet de crer un nouvel agrgat. Cela se fait simplement grce l'option creae : dmsetup create agrgat dfinition
o agrgat est le nom de l'agrgat et dfinition est le nom d'un fichier contenant la dfinition de cet agrgat. Si vous ne fournissez pas ce paramtre, dmsetup attendra que vous le dfinissiez en ligne de commande. La dfinition d'un agrgat se fait de manire gnrale l'aide de plusieurs lignes, raison d'une ligne par composante de l'agrgat. Chaque ligne a la forme suivante : dbut taille mthode arguments
dbut est le secteur de dbut de la plage de secteurs de l'agrgat qui seront stocks dans la composante. taille est le nombre de secteurs de cette plage. mthode est la mthode d'agrgation utilise, elle est suivie par des options qui lui sont spcifiques. La mthode la plus classique est sans doute linear, qui permet de stocker des donnes de l'agrgat dans les secteurs correspondants de la composante. Dans le cas de la mthode linaire, ces secteurs sont spcifis simplement avec le nom du fichier spcial de priphrique contenant les secteurs, et le numro du premier secteur partir duquel la composante sera stocke. Par exemple, pour crer un agrgat des deux partitions /dev/hda2 et /dev/hdb1, respectivement de tailles 16579080 et 59665410 secteurs, il suffit d'utiliser les deux lignes suivantes : 0 16579080 linear /dev/hda2 0 16579080 59665410 linear /dev/hdb1 0
On constatera que le secteur de dpart dans l'agrgat de la deuxime composante est le secteur suivant le dernier secteur dfini par la premire composante. De manire gnrale, il n'est pas possible de dfinir des trous dans un agrgat. La totalit des deux partitions est utilise dans cet exemple, pour DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 188
crer un volume de taille totale 40 Go environ (pour rappel, un secteur de disque dur fait 512 octets, les deux partitions de cet exemple font donc environ 8 et 32 Go). Une fois l'agrgat cr, un fichier spcial de priphrique portant le nom de l'agrgat doit apparatre dans le rpertoire /dev/mapper/. Ce fichier spcial de priphrique peut tre utilis comme n'importe quel fichier spcial de priphrique, pour y crer un systme de fichiers, pour le monter et pour le dmonter. Par exemple, pour crer un agrgat group0 avec les dfinitions prcdentes, il suffit d'excuter la commande suivante : dmsetup create group0 group0.def
o group0.def est le fichier contenant les deux lignes dfinissant les composantes vues ci-dessus. La cration et le montage du systme de fichiers se font ensuite avec les commandes suivantes :
mke2fs /dev/mapper/group0 mount /dev/mapper/group0 /mnt/group
o /mnt/group/ est le nom du rpertoire o le systme de fichiers agrg doit tre mont. Lorsqu'un agrgat n'est plus utilis, il peut tre supprim l'aide de l'option remove de dmsetup dmsetup remove agrgat
Cela ne supprime bien entendu pas les donnes, mais dtruit l'association entre les composantes de cet agrgat. Note : Les fonctionnalits d'agrgation de volumes ne sont disponibles que si les options Multiple devices driver support (RAID and LVM) , Device mapper support et Crypt target support du noyau ont t actives dans le menu Multi-device support (RAID and LVM) du programme de configuration du noyau. dmsetup utilise le fichier spcial de priphrique /dev/mapper/control pour communiquer avec le noyau. Vous devrez donc crer ce fichier si votre distribution ne le fournit pas. Pour cela, vous pouvez excuter le script devmap_mknot.sh fourni dans le rpertoire scripts/ des sources de dmsetup. Ce script permet galement de crer le rpertoire /dev/mapper/ si celui-ci n'existe pas. 6.7.3. Chiffrement des systmes de fichiers Il est possible de crer des systmes de fichiers chiffrs afin de garantir la confidentialit des donnes qui y sont stockes. Ces systmes de fichiers sont chiffrs la vole par le noyau avec des algorithmes de chiffrement trs puissants, que l'on paramtre avec une clef de chiffrement. Cette clef doit bien entendu rester secrte, faute de quoi tout ce travail de chiffrement devient inutile. Le chiffrement et le dchiffrement sont raliss de manire compltement transparente par le noyau lors des accs aux rpertoires et aux fichiers du systme de fichiers, qui apparat donc en clair lorsqu'on l'utilise. La diffrence est donc que le systme de fichiers reste illisible pour tous les autres ordinateurs, ou pour tous les autres utilisateurs s'ils n'ont pas la clef de dcryptage et que le systme de fichiers n'est pas mont (rappelons que le mcanisme des droits Unix permet un utilisateur d'interdire aux autres utilisateurs de consulter ses donnes). Pour crer un tel systme de fichiers, il est ncessaire de crer un volume agrg, et d'utiliser un algorithme de chiffrement comme algorithme d'agrgation. Ceci se fait simplement en indiquant que les composantes de l'agrgat utilisent la technique d'agrgation crypt. Cette technique est semblable la technique linear, ceci prs qu'elles permettent de chiffrer les donnes la vole. L'algorithme de chiffrement utilis peut alors tre spcifi et prendre en paramtre une clef prive, qui doit tre fournie DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 189
chaque fois que l'agrgat est redfini, faute de quoi les donnes resteront indchiffrables. Pour des raisons de scurit, un vecteur d'initialisation peut tre utilis afin de rendre plus difficiles les tentatives de dcryptage par la force brute. Ce vecteur d'initialisation est ajout la clef de chiffrement et permet ainsi d'obtenir des donnes chiffres diffrentes pour deux systmes de fichiers mme si les clefs utilises sont identiques. Dans l'implmentation actuelle, le vecteur d'initialisation utilis est le numro du secteur chiffr, ce qui n'est pas la panace tant donn que ce numro est prdictible, mais c'est dj mieux que rien. La technique d'agrgation crypt prend en paramtre l'algorithme de chiffrement utiliser, la clef prive utiliser pour chiffrer le volume agrg, un dcalage ajouter au numro du secteur pour dterminer le vecteur d'initialisation, le fichier spcial de priphrique sur lequel les donnes chiffres seront crites, et le numro du secteur de ce priphrique partir duquel les donnes seront crites. Les dcalages fournis permettent de n'utiliser qu'une partie d'un priphrique de type bloc pour stocker les donnes chiffres. En gnral, ces valeurs seront nulles, car les donnes sont souvent stockes sur la totalit du priphrique hte. Ainsi, la dfinition d'une composante de l'agrgat chiffr se fait selon la syntaxe suivante : dbut taille crypt algorithme clef dcalage priphrique origine
o dbut et taille dfinissent la composante dans l'agrgat, algorithme et clef l'algorithme de chiffrement et la clef prive utilise, dcalage le dcalage pour le vecteur d'initialisation, priphrique le fichier spcial de priphrique dans lequel les donnes chiffres devront tre crites, et origine le secteur de dpart dans ce priphrique partir duquel les donnes seront crites. Les algorithmes utilisables sont les algorithmes de chiffrement inclus dans la configuration du noyau, dont vous pourrez trouver la liste et les paramtres dans le fichier /proc/crypto. Pour chaque algorithme de chiffrement, vous pouvez indiquer si vous dsirez utiliser un vecteur d'initialisation ou non en ajoutant un suffixe leur nom. Le suffixe ecb signifie qu'il n'y a pas de vecteur d'initialisation, et le suffixe plain signifie que le vecteur utilis est le numro de secteur. Bien entendu, vous devriez utiliser plain, en attendant qu'une meilleure technique ne soit mise au point. Ainsi, le nom d'algorithme des-plain indique que l'algorithme DES doit tre utilis avec un vecteur d'initialisation. La clef de cet algorithme doit faire 64 bits (soit huit octets). Une fois l'agrgat dfini, celui-ci peut tre accd comme un priphrique de type bloc classique, via son fichier spcial de priphrique dans le rpertoire /dev/mapper/. La cration du systme de fichiers se fait de la mme manire que pour les autres fichiers spciaux de type bloc. Par exemple, pour chiffrer la partition /dev/hda2 (dont la taille est suppose tre de 10000000 blocs) avec l'algorithme AES, vous devrez dfinir l'agrgat suivant : 0 10000000 crypt aes-plain clef 0 /dev/hda2 0
o clef est une clef de taille comprise entre 16 et 32 octets. Si cet agrgat a t nomm cr0, vous pourrez ensuite crer le systme de fichiers simplement avec la commande suivante :
mkfs -t ext2 /dev/mapper/cr0
et le monter dans le rpertoire /mnt/secure/ avec une commande telle que celle-ci :
mount /dev/mapper/cr0 /mnt/secure Enfin, il est possible d'utiliser un fichier en tant que priphrique de stockage des donnes chiffres. Pour cela, il faut associer ce fichier un fichier de type bloc virtuel l'aide de la commande losetup. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 190
Ce fichier peut ensuite tre utilis pour dfinir un agrgat, comme n'importe quel autre fichier spcial de priphrique. 6.8. Configuration des terminaux virtuels Un terminal est, comme son nom l'indique, un quipement qui se trouve au bout d'une connexion un ordinateur et qui permet de travailler sur l'ordinateur. 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 l'ordinateur. Cette architecture permettait de partager une mme unit centrale avec plusieurs utilisateurs. De nos jours, la plupart des terminaux sont simplement d'autres ordinateurs du rseau, qui se connectent l'aide d'un programme que l'on appelle mulateur de terminal . L'mulateur de terminal se contente de simuler un terminal rel et permet de se connecter toute machine grant des terminaux clients. Du point de vue du systme, tous les utilisateurs sont connects via des terminaux, qu'ils soient physiques ou muls. Les connexions locales sont donc ralises par l'intermdiaire d'un terminal local, la console. La console est tout simplement le priphrique prenant en charge le clavier et l'cran. Ce priphrique est gr directement par le noyau, et mule un modle de terminal standard, le VT102. En fait, la console n'est utilise directement en tant que terminal de login qu'en mode monoutilisateur (c'est--dire en mode maintenance). En mode multi-utilisateur, la console est partage entre plusieurs terminaux dits virtuels , parce qu'ils simulent la prsence de plusieurs terminaux sur la mme console. Ces terminaux virtuels se partagent le clavier et l'cran, mais seulement un de ces terminaux peut accder la console chaque instant : celui qui traite les caractres saisis au clavier et qui ralise l'affichage. Pour pouvoir passer d'un 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 l'une des touches de fonction du clavier. Si l'on 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 lorsqu'on commence lancer plusieurs programmes en mme temps (cela ncessite videmment de se connecter plusieurs fois sur des terminaux diffrents). Bien entendu, la configuration du clavier et la police de caractres utilise sont communs tous les terminaux virtuels, puisqu'ils 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 dfinir d'autres terminaux, qu'ils soient graphiques ou non. Nous allons maintenant voir comment modifier le nombre de terminaux virtuels disponibles. L'utilisation des terminaux avec XWindow sera traite dans le chapitre traitant de la configuration de XWindow. Chaque terminal virtuel utilise un fichier spcial de priphrique du rpertoire /dev/. Le nom de ce fichier commence toujours par tty et est complt par le numro du terminal. Ainsi, le fichier spcial de priphrique /dev/tty1 correspond au premier terminal virtuel, accessible avec la combinaison de touches CTRL+ALT+F1, le fichier spcial de priphrique /dev/tty2 correspond au deuxime terminal virtuel, etc. Linux peut grer jusqu' 64 terminaux virtuels, cependant, il est ncessaire de dfinir d'autres combinaisons de touches pour accder aux terminaux 13 et suivants (puisqu'il n'existe que 12 touches de fonctions). Il serait possible d'utiliser les combinaisons de touches ALT+DROITE et ALT+GAUCHE pour les atteindre, mais d'une part ce ne serait pas trs pratique, et d'autre part, vous ne devriez pas avoir besoin de plus de quatre ou cinq terminaux virtuels. Nous n'utiliserons donc ici que les douze premiers terminaux virtuels. Les terminaux virtuels sont crs par le noyau la demande, ds qu'un processus cherche y accder. Ainsi, le systme n'alloue 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 n'est pas restreint DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 191
la simple connexion des utilisateurs. Par exemple, il est possible d'afficher un message sur un terminal simplement en crivant dans son fichier spcial de priphrique. Ainsi, si vous tapez la commande suivante sous le compte root : echo Coucou > /dev/tty11
la chane de caractres Coucou devrait apparatre sur le terminal virtuel 11. En gnral, les terminaux virtuels sont utiliss soit pour afficher les messages du systme, soit pour permettre aux utilisateurs de se connecter, soit pour XWindow. Les terminaux peuvent donc tre attribus diffrents programmes, selon l'emploi qu'on 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 suffit 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 dfinition des terminaux de login se fait donc dans le fichier de configuration /etc/inittab. Si vous regardez le contenu de ce fichier, 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 d'utilisateur sur les terminaux virtuels. Plus prcisment, getty initialise le terminal, demande le nom d'utilisateur et lance le programme login en lui fournissant le nom saisi, afin que celui-ci demande le mot de passe de cet utilisateur. Si vous dsirez rajouter des terminaux de login votre configuration, vous devrez donc rajouter des lignes de ce genre dans le fichier /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 d'excution dans lesquels cette ligne est valide. Ces numros doivent tre spcifis les uns la suite des autres, sans sparateur. Dans l'exemple donn ci-dessus, ces lignes sont valides dans les niveaux d'excution 2 5 compris, c'est--dire tous les niveaux d'excution classiques ; le troisime champ indique init des options pour le lancement du programme getty. Dans l'exemple donn ci-dessus, le programme getty doit tre relanc immdiatement ds qu'il se termine. Cela est le comportement dsir, puisque la terminaison de getty correspond la dconnexion de l'utilisateur courant, et qu'il faut laisser la possibilit de se reconnecter aux suivants ; le dernier champ indique le programme lancer et ses options de ligne de commande. Dans notre cas, il s'agit 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. L'opration est trs simple : il suffit de renumroter les lignes et les terminaux virtuels utiliss. Prenez garde cependant ne pas affecter getty un terminal utilis par XWindow. Il est recommand d'effectuer ces modifications dans le niveau d'excution 2 pour ne pas tre gn par XWindow. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 192
Une fois les modifications ajoutes, vous pourrez demander init de relire son fichier de configuration avec la commande suivante : init Q Ds lors, les nouveaux terminaux sont prts tre utiliss. 6.9. Configuration 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 configuration de celle-ci... Nous allons donc voir dans ce chapitre la manire de paramtrer le clavier et l'affichage du texte l'cran. Pour cela, il est ncessaire de bien comprendre les mcanismes mis en uvre pour le traitement des codes mis par le clavier d'une part, et pour l'affichage des symboles des lettres partir de leurs codes d'autre 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 l'allure des symboles affichs l'cran. Le plus simple pour comprendre le fonctionnement de la console est encore de voir les diffrentes tapes entrant en ligne de compte de l'appui sur une touche jusqu' l'action correspondant cet appui. Notez bien que cette action n'est pas forcment l'affichage d'une lettre l'cran : cela dpend de l'application qui a trait l'vnement correspondant l'appui 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 n'ont jamais t conus pour manipuler nativement du texte. Cela signifie qu'ils n'ont 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 afin 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. L'opration consistant effectuer cette association sur chaque caractre d'un texte constitue ce que l'on appelle l'encodage du texte. Plusieurs manires de raliser cet encodage ont t inventes, mais l'un des standards les plus utiliss est l'encodage ASCII. Lorsqu'il a t cr, l'encodage 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 suffisant pour toutes les langues occidentales. Cependant, le standard ASCII initial ne spcifiait que l'encodage 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, c'est--dire pour quasiment tout le monde. Il a donc fallu dfinir d'autres conventions que celle initialement utilise, afin d'associer des codes numriques aux caractres utiliss par les autres pays. Ces conventions constituent ce que l'on appelle les pages de codes. Chaque pays est donc susceptible d'utiliser une page de codes qui lui est spcifique. Par exemple, la page de codes 437 reprsente l'encodage utilis aux tats-Unis, et la 850 celle utilise en France. Historiquement, les pages de codes n'ont pas t immdiatement standardises, ce qui a conduit la prolifration de pages diffrentes et parfois incompatibles. Ainsi, les pages de codes utilises en France sont les pages de codes 850 sous DOS, 1252 sous Windows, ISO 8859-1 et ISO 8859-15 sous Unix. Ces deux dernires constituent la norme actuelle, et sont celles qui doivent tre utilises de DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 193
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 l'o franais) et le symbole de l'Euro. Le dfaut majeur de l'ASCII 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 n'est pas le cas de quelques autres pays, qui utilisent un nombre de symboles de trs loin suprieur 256. C'est 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 d'autres types d'encodages, plus riches, permettant de satisfaire aux besoins de tout le monde. Aprs des tentatives infructueuses d'encodages 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 n'utilise que 16 bits). Chaque caractre est reprsent par un nombre et un seul, comme pour l'ASCII. Cependant, avec ses 16 ou 32 bits, le jeu de caractres Unicode est suffisamment 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 dfinis dans la norme ISO 8859-1 (ce qui rend malheureusement non compatible la norme ISO 8859-15, plus complte). Les autres caractres sont affects d'autres plages de codes, qui sont parfaitement dfinies. Ainsi, l'utilisation d'Unicode permettra, terme, de n'avoir plus qu'une 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 l'utilisation d'Unicode prmature. Linux, quant lui, est capable de grer l'Unicode. Cependant, pour des raisons d'conomie de place, il ne l'utilise pas directement. Il prfre en effet utiliser l'encodage UTF-8 (abrviation de l'anglais Unicode Tranfer Format ). Cet encodage est un encodage taille variable, qui permet d'encoder les caractres Unicode avec de un six 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 l'unit centrale lorsqu'on appuie sur une touche. Certaines touches gnrent un seul code, d'autres peuvent en produire jusqu' une dizaine. Ces codes, que l'on appelle scancode, sont rcuprs par le pilote du clavier dans le noyau de Linux, et constituent le dbut du traitement des saisies clavier. Les scancodes permettent normalement de dterminer avec certitude l'vnement qui s'est produit, pour peu que l'on connaisse parfaitement le type de clavier utilis. Malheureusement, ils sont spcifiques chaque modle de clavier, et il est difficilement concevable pour un programme de prendre en charge les particularits de tous les claviers existants. De plus, qui peut prvoir aujourd'hui combien de touches les claviers du futur auront, et quels scancodes ceux-ci utiliseront ? Linux effectue donc un travail d'uniformisation en interprtant les scancodes et en les traduisant en dautres codes, les keycodes. Ces codes sont toujours les mmes, quel que soit le clavier utilis. Les keycodes simplifient le traitement des donnes provenant du clavier en dfinissant 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 d'un clavier virtuel uniforme et commun toutes les plates-formes. La gestion des vnements clavier par l'intermdiaire des keycodes est donc beaucoup plus aise, car il n'y 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 dfinie dans le pilote du clavier. La plupart des claviers courants sont pris en charge et, en gnral, peu de personnes ont besoin de modifier ce type d'information. Toutefois, afin de permettre l'intgration des DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 194
claviers futurs, il est possible de complter la table de conversion des scancodes en codes de touches virtuelles. L'interprtation des keycodes est une opration relativement complique et peu commode cause du grand nombre de dispositions de clavier existantes et, pour chaque type de clavier, des diffrentes dclinaisons existantes en fonction des langages des divers pays qui les utilisent. C'est pour cela qu'une autre association, qui permet de dfinir le comportement obtenir pour chaque combinaison de codes de touches virtuelles, a t introduite. Cette correspondance est dcrite dans un fichier que l'on appelle couramment le plan de clavier (ou keymap en anglais). Les keymaps contiennent donc, pour chaque touche ou combinaison de touches virtuelles utilise, la dfinition d'une action effectuer ou d'un code de caractre renvoyer. Ces codes sont renvoys en ASCII, cods selon la page de codes dfinie 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. C'est le cas, par exemple, des touches du curseur et des touches de suppression du clavier. Ces touches sont donc signales aux programmes l'aide de squences de codes appeles les codes d'chappement. Les codes d'chappement sont en ralit des squences de codes ASCII dont le premier est le code du caractre d'chappement Escape (dont le numro est 27, quelle que soit la page de codes utilise). Ces squences sont donc utilises typiquement pour signaler aux programmes qui les lisent qu'un traitement particulier doit tre effectu, comme par exemple le dplacement du curseur.
Figure 6-1. Traitements des entres clavier
Les programmes peuvent travailler n'importe lequel des trois niveaux de traitement que l'on vient de dcrire. Les programmes qui rcuprent directement les scancodes travaillent en mode raw (ce qui signifie en anglais que les donnes sont brutes ). Ils n'utilisent donc pas la traduction en codes de touches virtuelles et doivent ncessairement connatre les caractristiques physiques des claviers qu'ils veulent supporter. C'est 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 bnficier d'une plus grande portabilit (y compris avec d'autres systmes Unix que Linux). Dans ce cas, on dit qu'ils DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 195
travaillent en mode ASCII, ou xlate (abrviation de l'anglais translate , ce qui signifie traduction ). Note : En fait, la console peut galement travailler en Unicode, dans le mode UTF-8. Ce mode permet de travailler directement en Unicode, si vous le dsirez. Cependant, vous devrez vous 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 l'intermdiaire du fichier spcial de priphrique /dev/console. En fait, ces programmes ne savent pas qu'ils lisent les donnes du clavier local. Pour eux, ces donnes semblent provenir d'un terminal VT102, et ils traitent ces donnes comme celles provenant de n'importe quel terminal. Cela signifie que ces donnes semblent provenir d'une 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 n'est en gnral pas ncessaire de modifier ces paramtres, puisque la ligne de communication utilise est bien entendue idale (quitte tre virtuelle, autant tre idale, non ?). Gloups !? Que c'est compliqu ! C'est effectivement la rflexion que vous tes en droit de vous faire. Cependant, si l'on 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 n'y a rien dire. Grce aux keycodes, il n'est plus ncessaire de se soucier du modle de clavier utilis. Ensuite, grce aux keymaps, il est possible de faire l'association 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. Enfin, les applications qui grent les touches spciales du clavier peuvent interprter les codes d'chappement, 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 d'un terminal classique. Ils n'ont donc pas besoin de faire des hypothses sur l'origine des donnes, et leur programmation en est d'autant plus simple. Passons maintenant aux travaux pratiques. La commande kbd_mode permet de dterminer le mode de fonctionnement du clavier. Si vous l'essayez partir d'une console, vous verrez que le clavier est en mode ASCII. Inversement, si vous tapez cette commande partir d'une 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 l'option -s, elle permet d'afficher les scancodes lors de l'appui sur chaque touche. Vous pourrez constater que toutes les touches ne renvoient pas le mme nombre de codes. Vous pourrez utiliser l'option -' pour visualiser les keycodes renvoys par le noyau lors de l'appui et du relchement des touches. Enfin, si vous utilisez l'option -a, vous verrez les codes de touches ASCII. Vous pourrez constater que les touches spciales renvoient des squences de codes d'chappement. 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 d'chappement. 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, c'est comme si vous aviez tap Entre ! Le programme showkey ne peut pas tre lanc sous XWindow, parce que celui-ci gre lui-mme le clavier. showkey se termine de lui-mme au bout de dix secondes aprs la dernire frappe, ou lors de l'appui de la squence de touches CTRL+D s'il est en mode ASCII. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 196
6.9.3. Principe de fonctionnement de l'cran de la console Il est temps maintenant de passer au mcanisme d'affichage des caractres sur l'cran. Comme vous avez pu le voir dans les paragraphes prcdents, le fait d'appuyer sur une touche ne fait rien d'autre 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 l'cran (heureusement, comment taperiez-vous votre mot de passe l'abri des regards indiscrets sinon ?). En fait, l'affichage des caractres l'cran est un des paramtres de la ligne du terminal, que l'on nomme echo. Pour la plupart des programmes, l'cho automatique est dsactiv. Pour d'autres ce sont les applications qui, en fonction des codes qu'elles lisent sur la console, effectuent une action. Mais la majorit de ces actions ncessitent effectivement d'afficher des rsultats sur le moniteur. Pour raliser cela, les programmes crivent les donnes afficher dans le fichier spcial de priphrique de la console. Comme nous l'avons vu, la console de Linux se comporte comme un terminal local. Cela implique que les applications qui dsirent crire des donnes doivent les envoyer par la ligne de communication via laquelle elles sont connectes ce terminal. Tout comme les scancodes du clavier, les caractres envoys la console par les applications subissent un traitement impos par les paramtres de la ligne de communication virtuelle utilise. Bien entendu, ce traitement est encore une fois minimal, puisque cette ligne est idale. Notez que les programmes n'en savent absolument rien car, pour eux, tout se passe comme s'ils crivaient sur un terminal rel. Quoi qu'il en soit, le flux de caractres arrive au niveau du gestionnaire de la console aprs ce traitement de base. Comme nous l'avons dj dit plus haut, la console Linux mule un terminal VT102, et recherche donc les codes de contrle et les squences d'chappement de ces consoles. Ces codes d'chappement sont classiquement utiliss pour effectuer des oprations sur la console, comme par exemple le dplacement du curseur, la prise en compte de la couleur et des attributs des caractres affichs, l'effacement de l'cran, 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 d'chappement sont traits en tant que caractres normaux. Le gestionnaire de la console doit donc dterminer quel caractre doit tre imprim l'cran pour chaque code fourni par l'application. Cela n'est pas une opration facile, parce que les polices de caractres, qui contiennent la dfinition de la reprsentation graphique des caractres, n'utilisent pas forcment la page de codes active dans le systme. Cela signifie que les caractres dfinis dans la police n'apparaissent pas forcment dans le mme ordre que celui de la page de codes, et pour cause : une police peut parfaitement tre utilisable dans plusieurs pays diffrents ! Cela complique donc un peu plus les choses, puisqu'il faut utiliser une table de conversion entre la page de codes du texte afficher et l'encodage propre de la police. Afin de raliser cette conversion, le gestionnaire de la console Linux commence par convertir tous les caractres qu'il reoit en Unicode . Si la console est en mode UTF-8, cette opration est immdiate, car l'UTF-8 est un encodage Unicode. En revanche, si la console est en mode ASCII, cette opration ncessite l'emploi d'une table de conversion. Linux dispose de quatre tables de conversion : la premire table permet de faire la conversion entre la page de codes ISO 8859-1 et Unicode (cette conversion est, par dfinition, immdiate) ; la deuxime table permet de faire la conversion entre les codes graphiques des terminaux VT100 et Unicode ; la troisime table permet d'effectuer la conversion entre la page de codes 437 et Unicode ; et la quatrime et dernire table est rserve l'usage personnel de l'utilisateur. La dernire table est trs utile, car elle permet de dfinir 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 DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 197
par la console seront utiliss directement pour localiser les caractres dans la police de caractres. Cela ne peut fonctionner que si les applications utilisent le mme encodage que la police de caractres courante. Linux dispose de deux jeux de caractres, nomms respectivement G0 et G1, qui permettent de slectionner la table de conversion utiliser. Par dfaut, ces jeux de caractres pointent respectivement sur la premire et la deuxime table de conversion, mais cela peut tre modifi l'aide de codes d'chappement. Seul un jeu de caractres est actif un moment donn. Par dfaut, il s'agit 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, l'aide d'un 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 l'application sont donc convertis en Unicode (16 bits). Ils peuvent donc tre reconvertis aisment dans l'encodage utilis par la police de caractre charge en mmoire vido. Par dfaut, cette opration est triviale, et l'encodage cible est donc l'encodage ISO 8859-1, sauf si la quatrime table de conversion a t utilise. Dans ce cas en effet, l'encodage cible est le mme encodage que celui utilis par l'application (tout se passe donc comme si rien ne s'tait pass). Enfin, la dernire opration est tout simplement l'criture 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 affich.
Figure 6-2. Traitement des caractres pour l'affichage
Gloups !? Que c'est 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 l'encodage qu'il dsire, et grce un petit passage en Unicode, tous les caractres finissent par tre reprsents par le bon symbole l'cran... En fait, le passage par Unicode donne la possibilit de dfinir 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 l'utilisation de polices de caractres diverses et varies, sans avoir modifier les applications. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 198
6.9.4. Configuration du clavier Bien que les distributions modernes fournissent les outils ncessaires la configuration correcte du clavier, vous aurez peut-tre intervenir pour le personnaliser selon vos propres dsirs. La configuration du clavier comprend la dfinition des scancodes, la dfinition du plan de clavier, et le rglage de la vitesse de rptition et de la touche de verrou numrique. 6.9.4.1. Dfinition de scancodes La dfinition 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, c'est--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 n'y a donc pas lieu de dfinir leurs scancodes. Cependant, les claviers les plus rcents disposent de touches Internet ou Multimedia , qui ne sont pas encore reconnues par Linux en standard. L'utilisation de ces touches se traduit donc simplement par un message d'erreur dans les traces systmes. Si vous disposez d'un tel clavier, et que vous dsirez utiliser ces touches, vous allez devoir les dfinir dans la table des scancodes du noyau. Pour raliser cette opration, il faut avant tout dterminer les scancodes envoys par le clavier lors de l'appui sur la touche dfinir. Comme nous l'avons indiqu plus haut, les scancodes peuvent tre visualiss avec l'option -s de showkey : showkey -s Les scancodes sont exprims en hexadcimal, c'est--dire en base 16. Dans cette base, les lettres A F reprsentent les chiffres manquants la base 10, c'est--dire les chiffres ayant respectivement pour valeur 10, 11, 12, 13, 14 et 15. En gnral, le clavier envoie un scancode lors de l'appui 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 l'appui, 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 l'on 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 dfinition des premiers claviers PC, et qui ont sensiblement le mme rle qu'une touche dj prsente. C'est 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 prfixe 0xE0, qui indique qu'il s'agit d'une touche tendue. Par exemple, la touche CTRL de gauche (c'est--dire la premire touche de contrle qui ait t utilise) utilise le scancode 0x1D l'appui, et le scancode 0x9D au relchement. La touche CTRL de droite renvoie donc la squence suivante l'appui : 0xE0 0x1D
et la squence suivante au relchement :
0xE0 0x9D L'intrt de procder ainsi est que les vieux programmes, incapables de grer les codes de touches tendus, ignoraient purement et simplement le code 0xE0. Ainsi, ils confondaient les deux touches CTRL, ce qui est le comportement dsir. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 199
D'autres 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 simplifier le dplacement du curseur l'cran. Initialement, on n'utilisait 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 l'utilisation de la touche Flche Haute du pav numrique tait 0x48 si le verrou numrique n'tait 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 l'tat du verrou numrique. La touche Flche Haute tendue renvoie donc deux squences de scancodes diffrents selon l'tat du verrou numrique 0xE0 0x48 ou 0xE0 0x2A 0xE0 0x48. Lors du relchement, la squence suivante complexe 0xE0 0xC8 ou 0xE0 0xC8 0xE0 0xAA est mise selon l'tat du verrou numrique. Notez que l'tat du verrou numrique est maintenu en interne par l'lectronique du clavier, indpendamment de l'tat 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. Enfin, pour couronner le tout, certaines touches spciales utilisent une squence de scancodes spcifiques. Par exemple, la touche Pause ne renvoie que la squence 0xE1 0x1D 0x45 0xE1 0x9D 0xC5 l'appui. Elle utilise donc le prfixe 0xE1 au lieu de 0xE0, et simule l'appui et le relchement immdiat des touches CTRL + Verrou Numrique (ce qui tait la manire de provoquer la pause avant l'introduction 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 prfixe 0xE0. L'association d'un scancode inconnu un keycode se fait l'aide de l'utilitaire setkeycodes. Sa syntaxe est la suivante : setkeycodes scancode keycode
o scancode est le numro du scancode, exprim en hexadcimal et sans le prfixe 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 prfixe (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 l'appui : 0xE0 0x20
je peux lui associer le keycode 119 avec la commande suivante :
setkeycodes E020 119 Il va de soi qu'il faut s'assurer que chaque keycode n'est utilis qu'une fois ( moins, bien entendu, de vouloir que plusieurs touches aient le mme comportement). Pour cela, vous aurez sans doute besoin DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 200
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 affich en tte de la ligne. Les autres scancodes peuvent tre dduits en ajoutant le numro de la colonne dans laquelle se trouve chaque keycode au numro du scancode du premier keycode. 6.9.4.2. Dfinition d'un plan de clavier Comme nous l'avons expliqu dans les paragraphes prcdents, les plans de clavier dfinissent les associations entre les keycodes et les caractres ou les squences d'chappement renvoys par le clavier. Les plans de clavier permettent galement de dfinir des squences de composition, afin d'obtenir de nouveaux caractres en composant les actions de plusieurs touches. La dfinition d'un 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 '', l'aide des touches de majuscule et AltGr. La deuxime partie permet d'affecter des chanes de caractres certaines touches particulires. Cette partie peut contenir par exemple la dfinition de touches de raccourci pour les commandes les plus utilises. En pratique cependant, elles sont souvent utilises pour dfinir des squences d'chappement pour les touches de fonction et les touches du curseur, squences qui seront interprtes ensuite par les applications. Enfin, la dernire partie permet de dfinir les compositions de touches pour obtenir des caractres qui n'auraient t accessibles autrement que par des combinaisons de touches compliques. Pour chaque touche normale du clavier, il est possible de dfinir jusqu' 256 symboles diffrents. Ces symboles sont slectionns grce des touches de modification du comportement de base des autres touches, comme par exemple la touche Ctrl ou la touche Alt Gr. Linux est capable de grer des combinaisons de touches faisant intervenir jusqu' huit touches de modification diffrentes en plus de la touche affecte (remarquez qu'avec dix doigts, on peut encore y parvenir !). Ces touches sont rcapitules dans le tableau suivant : Touche de modification Valeur Description Shift 1 Touches de passage en majuscule (situes au dessus des touches Ctrl sur les claviers franais). altgr 2 Touche Alt Gr, situe droite de la barre d'espacement. control 4 Touches Ctrl, situes aux extrmits infrieures du clavier. alt 8 Touche Alt, situe gauche de la barre d'espacement. shiftl 16 Touche de majuscule de gauche. shiftr 32 Touche de majuscule de droite. ctrll 64 Touche Ctrl de gauche. ctrlr 128 Touche Ctrl de droite. Chaque touche dispose d'un code numrique qui est une puissance de deux. Lorsqu'elles 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 dfinir effectivement 256 symboles diffrents pour chaque touche du clavier. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 201
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 n'importe 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 n'est pas ncessaire d'aller jusque l. Les plans de clavier n'utilisent en pratique que les quatre premires touches de contrle, qui sont celles que vous connaissez. La dfinition des symboles accessibles pour une touche utilise la syntaxe suivant : keycode = symbole symbole symbole ...
o keycode est le keycode qui identifie la touche en question, et symbole est un des symboles accepts dans les plans de clavier. Vous pourrez obtenir la liste des symboles utiliss grce la commande suivante :
dumpkeys --long-info Vous pourrez voir par exemple les symboles A, B, C, etc. qui reprsentent les lettres classiques, ainsi que des symboles spciaux comme exclamdown, hyphen, cedilla, etc. pour les lettres non alphabtiques. Il existe galement des symboles pour les touches spciales comme Backspace, Delete, Escape. Enfin, le symbole VoidSymbol permet de signaler l'absence de symbole pour la combinaison de touches considre. En thorie, il faut dfinir la liste des 256 symboles accessibles pour chaque touche. Le premier symbole est donc le symbole obtenu par appui direct de la touche, le deuxime est celui obtenu par la combinaison Majuscule + Touche, le troisime celui de la combinaison AltGr + Touche, le quatrime par Majuscule + AltGr + Touche, etc. videmment, il est trs fastidieux de dfinir ces 256 possibilits. Pour simplifier le format des plans de clavier, il est possible de ne spcifier 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 s'ils sont tous VoidSymbol. Vous pouvez indiquer au dbut du plan de clavier les valeurs des combinaisons de touches de modifications 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 modifier que les symboles associs certaines combinaisons de touches. Cette syntaxe est trs utile lorsque vous ne dsirez modifier que quelques affectations de touches : modificateur keycode = symbole Dans cette syntaxe, modificateur est la liste des modificateurs devant intervenir dans la combinaison de touches, et keycode et symbole sont toujours le keycode de la touche et le symbole gnrer. Les modificateurs autoriss sont les noms des touches de modification indiques dans le tableau ci-dessus, plus le modificateur plain, qui signifie qu'aucune touche de modification n'est utilise. Par exemple, la ligne suivante : DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 202
plain keycode 16 = q
permet d'affecter le symbole q la touche A de votre clavier, et la ligne :
alt keycode 30 = a
permet d'affecter le symbole a la combinaison de touches Alt + Q (n'essayez surtout pas ces deux exemples, vous deviendriez fou). Note : Par dfaut, les symboles utilisables dans les plans de clavier sont les symboles du jeu de caractres ISO 8859-1. D'autres encodages sont utilisables, mais celui-ci convient parfaitement pour un clavier franais. Comme nous l'avons dit plus haut, la deuxime partie d'un plan de clavier permet d'affecter des chanes de caractres certaines touches. Cela est facilement ralisable, avec la syntaxe suivante : string symbole = "chane"
o symbole est le nom d'un 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 d'chappement :
\" Vous pouvez galement spcifier des caractres directement l'aide de leur valeur en base huit, l'aide de la syntaxe suivante : \0valeur
o valeur est la valeur du caractre. Bien entendu, l'antislash tant utilis comme caractre d'chappement, il doit lui-mme tre prcd d'un caractre d'chappement si l'on dsire l'utiliser dans une chane de caractres :
\\ Ainsi, si l'on veut faire en sorte que la touche F4 affiche la chane de caractres Coucou , il suffit d'utiliser la ligne suivante dans le plan de clavier : string F4 = "Coucou" Bien entendu, les chanes de caractres les plus utiles sont celles qui dfinissent les squences d'chappement pour les touches spciales. Par exemple, la dfinition de la touche Page Haut est la suivante : string PageUp = "\033[5~" Vous pouvez reconnatre ces squences d'chappement la prsence du caractre octal 033, soit 27 en dcimal, qui n'est rien d'autre que le caractre Escape dans le jeu de caractres ISO 8859-1. Ne vous inquitez par pour l'instant de la forme apparemment complique de ces squences d'chappement, nous verrons plus loin comment elles sont utilises. Enfin, les plans de clavier contiennent la dfinition des compositions. Les compositions de touches sont accessibles l'aide d'une touche spciale dite de composition, dont le symbole est Compose dans DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 203
le plan de clavier (il est donc ncessaire que ce symbole soit affect l'une des touches du clavier pour utiliser les compositions). Lorsqu'on 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 dfinit 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... D'une manire gnrale, vous pourrez trouver de plus amples renseignements concernant les plans de clavier dans la page de man keymaps. Il est long et difficile de crer un plan de clavier de toutes pices. Heureusement, encore une fois, cette description n'tait que didactique. Vous n'aurez certainement mme pas modifier votre plan de clavier (sauf si vous voulez faire des expriences), car des plans de claviers prdfinis sont fournis avec toutes les distributions. Ces plans de clavier sont en gnral stocks dans le rpertoire /usr/lib/kbd/keymap. Pour les claviers de PC franais, je vous conseille tout particulirement le plan de clavier fr-latin0.map.gz du sous-rpertoire i386/azerty. Ce plan de clavier permet d'accder toutes les touches utilises par le franais, plus la plupart des touches utilises en Europe. Il utilise l'encodage ISO 8859-15, afin d'avoir accs aux rares caractres manquants dans l'encodage ISO 8859-1. Le chargement d'un plan de clavier est trs simple. Il suffit de taper la commande suivante sous le compte root : loadkeys keymap
o keymap est le nom du fichier contenant le plan de clavier utiliser. Si l'on ne spcifie pas de fichier, loadkey attend que vous tapiez la spcification des touches directement. Vous pourrez valider en gnrant le caractre EOF (abrviation de End Of File , ce qui signifie Fin de fichier ) l'aide de la combinaison de touche CTRL + D, ou abandonner avec le classique CTRL + C. En gnral, les distributions utilisent la commande loadkey dans les fichiers d'initialisation du systme, pour charger le plan de clavier que vous avez choisi l'installation ds le dmarrage. Il est recommand de ne modifier le plan de clavier courant que par l'intermdiaire du programme de configuration du systme fourni avec votre distribution. 6.9.4.3. Modification des paramtres du clavier Il nous faut encore voir deux petits utilitaires permettant de fixer quelques paramtres du clavier pour finir notre tour d'horizon de ce priphrique. Le premier de ces outils permet de manipuler l'tat des diodes lumineuses qui indiquent si le verrou numrique, le verrou des majuscules ou l'arrt dfilement sont actifs. Cet utilitaire se nomme logiquement setleds, et il permet non seulement de fixer l'tat de ces diodes, mais galement l'tat du clavier. Rappelons en effet que les diodes peuvent tre dsynchronises par rapport l'tat rel du clavier. Ce cas de figure peut se produire si l'on passe d'un terminal X un terminal en mode console, tout simplement parce que les serveurs X ne savent pas comment dterminer l'tat du clavier sur une console afin de le restaurer. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 204
La syntaxe de setleds est la suivante : setleds -D num | caps | scroll
o num, caps et scroll sont des options permettant de prciser respectivement l'tat des verrous numriques, majuscules et dfilement. Ces options sont de la forme +num, -num pour le verrou numrique, et de forme similaire pour les autres verrous. Comme leur syntaxe l'indique, elles permettent d'enclencher ou de dsenclencher l'tat des verrous correspondants du clavier. L'tat 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. L'option - permet de rendre les changements permanents pour le terminal slectionn. Ainsi, si ce terminal est rinitialis, la modification sera conserve. C'est en gnral l'effet dsir. Sachez qu'il est galement possible d'effectuer une modification temporaire, et de ne modifier que l'affichage des diodes (sans changer l'tat des verrous). Il est recommand de placer les quelques lignes suivantes dans les fichiers d'initialisation de votre systme afin d'activer le verrou numrique pour tous les terminaux, si votre distribution ne vous permet pas de le faire par l'intermdiaire de son programme de configuration : INITTTY=`ls /dev/tty[1-9] /dev/tty1[0-2]` for tty in $INITTTY; do setleds -D +num < $tty done Ces lignes appellent la commande setleds sur les terminaux virtuels 1 12. Le deuxime utilitaire est kbdrate. Sa fonction est de fixer les paramtres de dlai d'attente avant rptition lorsqu'on maintient une touche enfonce, ainsi que la vitesse de rptition utilise une fois que ce dlai d'attente 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 d'attente avant le dbut des rptitions de la touche enfonce. L'option -s indique kbdrate de ne pas afficher de messages pendant l'excution de la commande. Les dlais d'attente spcifis peuvent tre de 250, 500, 750 ou 1000 millisecondes. Les taux de rptition utilisables vont de 2 30 caractres par seconde. Toutefois, les claviers ne peuvent pas accepter toutes les valeurs intermdiaires pour le taux de rptition. Vous trouverez la liste exhaustive des valeurs admissibles dans la page de manuel kbdrate. 6.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 l'affichage des textes anglais, car elle utilise la page de codes 437. Il est donc souhaitable, sinon recommand, de changer de police de caractres la fois pour bnficier d'un encodage adapt la langue franaise, et pour bnficier d'amliorations esthtiques ventuelles. Linux est fourni avec un certain nombre de fichiers de polices, qui sont normalement installes dans le rpertoire /usr/lib/kbd/consolefonts. Comme vous pourrez le constater si vous y jetez un coup d'il, 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 l'encodage ISO 8859-15, et contient donc tous les symboles utiliss en Europe. Il est recommand, mais non ncessaire, d'utiliser une des polices encodes en ISO 8859-1 ou en ISO 8859- DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 205
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 l'utilitaire setfont. La syntaxe de ce programme est trs simple : setfont police
o police est le fichier de police charger. Si vous ne spcifiez aucun fichier de police, la police par dfaut sera charge. Notez que les fichiers de polices peuvent utiliser un encodage particulier spcifique, qui ne correspond aucune des tables de conversion prdfinies du noyau. Pour ces polices, il est ncessaire de spcifier 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 dfinir les codes qui permettront d'accder directement aux caractres de la police. L'association entre les codes de caractres de l'application et leurs descriptions dans la police de caractres est donc ralise grce ces tables de conversion. Vous pouvez charger une table de conversion spcifique l'aide de l'utilitaire mapscrn. Cet utilitaire prend en ligne de commande un fichier contenant la table de conversion, et charge cette dernire dans la quatrime table de conversion du noyau (c'est--dire la table rserve l'utilisateur) : mapscrn fichier (o fichier est le fichier contenant la description de la table de conversion). Notez que l'utilitaire mapscrn charge la table de conversion, mais ne s'assure pas que le jeu de caractres courant utilise cette table. Par consquent, vous aurez sans doute utiliser les codes d'chappement \033(K et \033)K pour faire pointer respectivement les jeux de caractres G0 et G1 sur la quatrime table. Ces codes d'chappement peuvent tre saisis l'aide de la commande cat : cat Il vous faudra alors taper sur la touche Echap, puis saisir (K ou )K , at enfin signaler la fin de fichier avec un CTRL + D. Faites bien attentiol ce(que vous fates : en cas d'erreur, le jeu de caractres utilis peut rendre l'cran totalement illisible. Si cela devait se produire, vous devrez taper l'aveugle la commande reset. Cette table s'assure que le jeu de caractres actif est le jeu de caractres G0, et que celui-ci utilise la premare table de conversion. Voes pourrez galement recharger la police par dfaut l'aide 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 s'assure enfin que le jeux de caractres G0 soit actif et utilise cette table. Ainsi, l'utilisation de mapscrn est devenue facultative. La dernire tape dans la configuration 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 c'est elle qui indique l'emplacement des caractres de la police utiliser pour chaque code Unicode. Ces tables dpendent donc de l'encodage 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 : DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 206
loadunimap fichier
o fichier est un fichier de conversion appropri. Vous trouverez de tels fichiers dans le rpertoire /usr/lib/kbd/consoletrans. Les fichiers proposs permettent d'utiliser les polices de caractres encodes selon les encodages les plus courants. Bien entendu, certaines polices disposent de leur propre table d'encodage. Encore une fois, l'utilisation de loadunimap est rendue facultative par setfont, qui se charge d'effectuer tout le travail. C'est notamment le cas pour les polices fr-latin0.psfu.gz et fr-latin1.psfu.gz, dont le u en fin d'extension indique la prsence de la table de conversion Unicode. 6.9.6. Configuration des paramtres du terminal La configuration du gestionnaire de la console ne concerne proprement parler que les plans de clavier et les polices de caractres. Pour les applications, tout se passe comme si elles accdaient un terminal comme les autres, donc par l'intermdiaire d'une ligne de communication. En gnral, les lignes de communication utilises pour les terminaux sont des lignes srie, c'est--dire des lignes sur lesquelles les donnes sont envoyes sous la forme de petits paquets de 5 8 bits, et contrles par d'autres bits ventuellement facultatifs (bit de stop et bit de parit). Il va de soi que tous les terminaux ne sont pas identiques, et qu'un certain nombre de paramtres doivent tre dfinis tant au niveau des terminaux qu'au niveau des lignes de communication utilises. Ces paramtres peuvent tre fixs avec la commande stty. Leur nombre interdit ici une description exhaustive, d'autant plus que pour un terminal local, ils sont tous initialiss des valeurs par dfaut correctes, et vous n'aurez pas les modifier. 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 d'un terminal avec l'option -a de stty : stty -a Comme vous pourrez le constater, le nombre des options utilises est assez impressionnant. Sont dfinis, entre autres, les paramtres de vitesse de communication de la ligne (option speed), le format des donnes transfres sur la ligne (option parodd pour la parit impaire, option cs8 pour des paquets 8 bits, etc.), la gomtrie du terminal (options rows et co1umns), les caractres de contrle affects un certain nombre d'actions (comme, par exemple, le caractre ^Z , accessible par la combinaison de touches CTRL + Z, qui permet de suspendre l'excution du programme utilisant la ligne, et le caractre ^C , qui permet de le tuer) et des options de gestion des caractres transfrs (par exemple, echo fait en sorte que tout caractre entrant est immdiatement r-mis sur la console, ce qui permet de voir ce que l'on tape). Parmi ces paramtres, les plus intressants sont sans doute ceux dfinissant les actions associes aux diffrentes touches de contrle. Vous pourrez modifier ces paramtres avec la syntaxe suivante : stty action caractre
o action est l'une des actions gres par stty, comme par exemple susp pour suspendre le processus en cours, inr pour le tuer, etc. Remarquez que l'action 'i11 n'a rien voir avec la gestion des signaux des processus. Elle permet simplement d'effacer la ligne courante du terminal. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 207
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 l'alphabet, les chiffres et la ponctuation. Cependant, il n'en va pas de mme pour les codes d'chappement des terminaux. Comme nous l'avons vu, certaines touches sont programmes pour renvoyer des codes d'chappement dans le plan de clavier. Mais le gestionnaire de la console est galement capable d'interprter certains codes d'chappements, afin d'effectuer des actions spcifiques. Par exemple, les touches du curseur mettent des codes d'chappement spciaux, et il est du ressort de chaque programme de reconnatre ces codes et d'agir en consquence. De mme, les programmes peuvent envoyer des codes d'chappement la console pour dplacer le curseur affich, effacer l'cran, effectuer un dfilement, etc. Le malheur, c'est que les codes d'chappement utilisables diffrent selon les terminaux utiliss. Les terminaux les plus standards sont les terminaux VT100 et VT102 (la console Linux en fait partie). Cependant, les programmes ne peuvent pas savoir, a priori, quels codes d'chappement doivent tre utiliss pour effectuer telle ou telle action. C'est pour ces diverses raisons que les systmes Unix disposent d'une base de donnes de dfinition des terminaux. Cette base de donne contient tous les codes d'chappement que chaque type de terminal est capable de grer, dcrits d'une manire uniforme. Ainsi, les programmes dsirant grer correctement les terminaux n'ont qu' consulter cette base de donnes pour interprter et rcuprer les codes d'chappement utiliss par le terminal. Historiquement, la dfinition des terminaux tait ralise dans le fichier de configuration /etc/termcap. Ce fichier est obsolte et a t remplac par la base de donnes terminfo, que tous les programmes modernes doivent prsent utiliser. Cependant, le fichier de configuration /etc/termcap a t conserv par compatibilit avec les vieux programmes qui l'utilisent encore. Le fichier termcap comprend une ligne pour chaque type de terminal dcrit. Cette ligne est constitue d'un certain nombre de champs, spars par le caractre ':'. Le premier champ de chaque ligne contient la description du terminal que cette ligne dcrit. Les champs suivants sont des dfinitions des variables contenant les squences d'chappement du terminal. Les informations descriptives du terminal sont les suivantes : le nom abrg du terminal ; le nom complet du terminal ; les autres noms sous lesquels le terminal est galement connu ; la description dtaille du terminal (toujours en dernier). Ces informations sont spares les unes des autres par une barre verticale ('|'). Viennent ensuite les dfinitions des variables. Chaque variable est dfinie selon la syntaxe suivante : variable=squence
o variable est le nom de la variable, et squence est la squence d'chappement 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 d'galit est remplac par un caractre dise ('#'). Un certain nombre de variables peuvent tre dfinies pour chaque terminal. Ce sont ces variables qui sont utilises par les programmes pour retrouver les squences d'chappement du terminal. Par consquent, les noms de ces variables sont fixs une fois pour toutes, et elles reprsentent toujours la DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 208
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 fichier /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 l'aide du caractre de tabulation. Vous trouverez ci-dessous un exemple de dfinition de terminal : lx|linux|Console Linux:\ :do=^J:co#80:li#25:cl=\E[H\E[J:sf=\ED:sb=\EM:\ :le=^H:bs:am:cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:\ :ce=\E[K:cd=\E[J:so=\E[7m:se=\E[27m:us=\E[36m:ue=\E[m:\ :md=\E[1m:mr=\E[7m:mb=\E[5m:me=\E[m:is=\E[1;25r\E[25;1H:\ :ll=\E[1;25r\E[25;1H:al=\E[L:dc=\E[P:dl=\E[M:\ :it#8:ku=\E[A:kd=\E[B:kr=\E[C:kl=\E[D:kb=^H:ti=\E[r\E[H:\ :ho=\E[H:kP=\E[5~:kN=\E[6~:kH=\E[4~:kh=\E[1~:kD=\E[3~:kI=\E[2~:\ :k1=\E[[A:k2=\E[[B:k3=\E[[C:k4=\E[[D:k5=\E[[E:k6=\E[17~:\ :k7=\E[18~:k8=\E[19~:k9=\E[20~:k0=\E[21~:K1=\E[1~:K2=\E[5~:\ :K4=\E[4~:K5=\E[6~:\ :pt:sr=\EM:vt#3:xn:km:bl=^G:vi=\E[?25l:ve=\E[?25h:vs=\E[?25h:\ :sc=\E7:rc=\E8:cs=\E[%i%d;%dr:\ :r1=\Ec:r2=\Ec:r3=\Ec: Cette ligne permet de dfinir 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 d'chappement associs aux touches du curseur (variable ku, kd, kr et kl respectivement pour les touches haut, bas, droite et gauche). Par exemple, la variable cl donne la squence d'chappement utilisable pour effacer l'cran et faire revenir le curseur en haut gauche (squence d'chappement Esc [ H Esc [ J ). Comme il l'a dj t dit plus haut, la liste complte des variables peut tre obtenue en consultant la page de manuel termcap, et ce fichier ne sera pas dcrit plus en dtail ici. La base de donnes terminfo a t introduite pour combler certaines limitations du fichier termcap. Si le principe de fonctionnement est presque le mme, les informations fournies tiennent compte des terminaux plus rcents et de nouvelles fonctionnalits. Cela signifie en pratique que de nouvelles variables ont t dfinies pour dcrire les nouveaux terminaux. Inversement, certaines variables de termcap ont disparu parce qu'elles 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 n'est plus stocke dans un fichier de configuration en mode texte. Toutes les donnes sont dsormais stockes dans des fichiers binaires, qui peuvent tre gnrs l'aide du programme tic. Ces fichiers binaires sont usuellement placs dans les sous-rpertoires du rpertoire /usr/share/terminfo/. En fait, le nombre de fichiers de description est tellement grand qu'ils ont t regroups par ordre alphabtique. Ainsi, le rpertoire /usr/share/terminfo contient des sous-rpertoires dont les noms sont les premires lettres des fichiers de description, et chaque fichier de description est situ dans le rpertoire correspondant. Par exemple, le fichier 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 fichiers de description de terminaux peuvent tre placs un autre emplacement que l'emplacement par dfaut. Les bibliothques de programme utilisant les informations de terminfo cherchent en effet en premier dans le chemin rfrenc par la variable d'environnement TERMINEO, DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 209
puis dans le rpertoire .terminfo du rpertoire de l'utilisateur. Ce n'est que si ces deux recherches chouent qu'elles utilisent les informations du rpertoire par dfaut. Comme nous l'avons dit, les fichiers de description sont des fichiers binaires, qui ont t compils l'aide du compilateur tic. Cependant, vous pouvez parfaitement visualiser le contenu de ces fichiers ou comparer deux fichiers l'aide de l'utilitaire infocmp. Par exemple, vous pouvez visualiser sous une forme lisible les informations du fichier de description des terminaux Linux avec la commande suivante : infocmp linux Vous obtiendrez certainement un rsultat semblable ceci : #Reconstructed via infocmp from file: /usr/lib/terminfo/l/linux linux|linux console, am, bce, eo, mir, msgr, xenl, xon, colors#8, it#8, pairs#64, acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260i\316j\\ 331k\277l\32m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\\ 363z\362{\343|\330}\234~\376, 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 fichier /etc/termcap. Les principales diffrences sont que les diffrents champs sont spars par des virgules (',') au lieu du caractre deux points (':'), et qu'il est possible de les rpartir sur plusieurs lignes physiques (il est donc inutile d'utiliser le caractre antislash en fin de ligne physique pour indiquer la continuation de la ligne logique). De plus, le nom des variables utilises dans les fichiers terminfo n'est pas le mme a priori. Cependant, le principe d'utilisation de ces variables reste le mme, chacune d'entre elles permet de dfinir une des fonctionnalits gres par le terminal et de dfinir la squence d'chappement ncessaire l'obtention de cette fonctionnalit si DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 210
ncessaire. Vous pourrez trouver la liste exhaustive des variables utilisables dans la page de manuel terminfo. Le format des fichiers de configuration de terminfo ne sera donc pas dcrit plus en dtail dans ce document. Qu'ils 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 l'utiliser dans ces bases de donnes. C'est prcisment ce quoi sert la variable d'environnement 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 fixer 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 fichier termcap. Cette liste peut tre obtenue plus facilement pour terminfo, l'aide de l'utilitaire toe (abrviation de l'anglais Table Of terminfo Entry ). Bien entendu, vous n'aurez dfinir la valeur de TERM que si cette variable d'environnement n'est pas correctement dfinie, ce qui est trs rare. En fait, cela ne peut se produire que lors d'une 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 suffisante pour faire fonctionner correctement la plupart des applications. En particulier, les programmes qui utilisent les bibliothques de fonctions de manipulation des terminaux sont capables d'utiliser ces informations. C'est le cas par exemple de tous les programmes qui utilisent les bibliothques curses ou ncurses , car celles-ci s'appuient 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 configuration spcifique doit tre effectue, souvent pour chaque terminal, en prcisant les codes d'chappement utiliser dans leurs fichiers de configuration. On remarquera la prsence du shell bash , de l'diteur vi et du programme de pagination less dans cette catgorie de logiciels. Comme ce sont les logiciels les plus couramment utiliss, il est indispensable d'indiquer comment les configurer pour une utilisation correcte. 6.9.8.1. Configuration du clavier pour la bibliothque readline Un certain nombre d'applications, dont le shell bash , utilisent la libraire GNU readline pour obtenir les lignes de commandes saisies par l'utilisateur. Tous ces programmes peuvent donc tre configurs de la mme manire, grce au fichier de configuration de la bibliothque readline. Cette bibliothque recherche son fichier de configuration en premier l'emplacement indiqu par la variable d'environnement INRUTRC. Si cette variable d'environnement n'est pas dfinie, le fichier de configuration ~/.inputrc est lu pour dterminer les squences d'chappement utiliser. Il est donc recommand de crer un fichier de configuration gnral /etc/inputrc et de dfinir la variable d'environnement INRUTRC afin de dfinir des paramtres communs tous les utilisateurs. Vous pouvez galement recopier ce fichier 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 fichier inputrc : DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 211
# 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
# Redfinit les codes d'chappement pour l'mulateur de terminal xterm : $if term=xterm "\e[H": beginning-of-line "\e[F": end-of-line $endif Ce fichier commence par autoriser le traitement des caractres dont le bit meta , c'est--dire le huitime bit, est positionn. C'est 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 fichier dfinit les actions associes chaque code d'chappement du terminal. Le caractre d'chappement est reprsent ici par la chane de caractres \e . Comme les codes d'chappement sont diffrents pour la console et pour les mulateurs de terminaux de XWindow, il est ncessaire de les redfinir en fonction de la nature du terminal. Ce fichier prsente un exemple d'expression conditionnelle sur le nom du terminal, tel qu'indiqu dans la variable d'environnement TERM, afin de ne redfinir ces codes que pour ces terminaux. 6.9.8.2. Configuration du clavier pour vi L'diteur en ligne de commande vi n'est pas rput pour tre agrable utiliser. Cela provient essentiellement de sa distinction entre les modes de commande, d'dition et de visualisation. Mais cela n'est pas suffisant 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. L'diteur vim peut bien entendu tre parfaitement compatible avec vi afin ne pas drouter les habitus de vi. Mais il dispose en plus de fonctionnalits avances qui en font un outil extrmement configurable, 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 l'utiliser 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 configuration de vim sont stockes dans deux fichiers. Le premier fichier est le fichier de configuration commun tous les utilisateurs, vimrc. Ce fichier peut tre plac soit dans le rpertoire /etc/, soit dans le rpertoire /usr/share/vim/, selon votre distribution. Le deuxime fichier est le fichier DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 212
de prfrences personnelles de chaque utilisateur, et se nomme .vimrc. Il est normalement plac dans le rpertoire personnel de l'utilisateur. Plusieurs types d'options peuvent tre indiqus dans ces fichiers de configuration. Les premires associent les actions effectuer aux codes d'chappement gnrs par les touches du curseur. Les autres spcifient simplement le comportement de l'diteur et le paramtrage de ses principales fonctionnalits. Vous trouverez ci-dessous les principales options que vous pourrez ajouter votre fichier de configuration vimrc. Ces options rendront sans doute l'utilisation de vim beaucoup plus agrable. " Exemple d'options de configuration pour vim. " Notez que les commentaires sont introduits ici " par des guillemets anglais (") et non " par des dises ('#'), contrairement aux fichiers de configuration " de la plupart des autres applications.
" viter tout pris la compatibilit avec vi, qui est insupportable : set nocompatible
" Dfinir les touches du clavier :
" Gestion du curseur en mode de visualisation : map ^[OA k map ^[[A k map ^[OB j map ^[[B j map ^[OD h map ^[[D h map ^? h map ^H h map ^[OC l map ^[[C l map ^[[2~ i map ^[[3~ x map ^[[1~ 0 map ^[OH 0 map ^[[H 0 map ^[[4~ $ map ^[OF $ map ^[[F $ map ^[[5~ ^B map ^[[6~ ^F map ^[[E "" map ^[[G "" map ^[OE ""
" Gestion du pav numrique en mode de visualisation : map ^[Oo : map ^[Oj * map ^[Om - map ^[Ok + map ^[Ol + map ^[OM ^M map ^[Ow 7 DOCUMENT SUR LINUX
" Gestion du curseur dans les modes d'insertion 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 l'indentation automatique dans les fichiers C et C++ " (pour les programmeurs) : set cindent DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 214
" 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 fichier de configuration, dont le caractre de contrle ^[ , qui reprsente le caractre d'chappement. Ces caractres sont reprsents avec la notation classique ^C , o C est la lettre utiliser avec la touche CTRL pour obtenir ce caractre. Ces notations ne font que reprsenter les caractres de contrle, et doivent tre remplaces par les caractres qu'elles reprsentent dans le fichier de configuration. Pour saisir ces caractres spciaux, vous devrez passer en mode insertion dans vi, puis utiliser la combinaison de touches CTRL+V. Ce raccourci permet d'indiquer vi qu'il doit insrer les codes d'chappement directement issus du clavier, sans les interprter. Vous pourrez alors taper la squence de touches gnrant le caractre de contrle ou la squence d'chappement 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 d'chappement 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 d'chappement. Mais certaines options ne fonctionnent pas avec ces notations, et je vous les dconseille. Vous pouvez bien entendu ajouter d'autres options dans ce fichier de configuration. En pratique, toutes les options utilisables dans le mode de commande de vim peuvent tre fixes dfinitivement dans ce fichier. Vous obtiendrez de l'aide sur ces options grce la commande :help de vim. 6.9.8.3. Configuration du clavier pour less Le programme de pagination less est naturellement bien plus agrable utiliser que son anctre more, puisqu'il permet de revenir sur les pages dj consultes. Cependant, il peut le devenir encore plus si l'on s'arrange pour qu'il reconnaisse les touches du curseur. Le programme less lit ses informations de configuration dans un fichier binaire dont l'emplacement est spcifi par la variable d'environnement LESSKEY. Si cette variable d'environnement n'est pas dfinie, less utilise le fichier de configuration .less du rpertoire personnel de l'utilisateur. Ce fichier binaire contient les associations entre les squences d'chappement du terminal et les actions effectues par less. Il est gnr par le compilateur lesskey, partir d'un fichier de configuration textuel classique. Ce fichier de configuration comprend plusieurs sections, qui permettent de dfinir les touches utilises en mode de commande, les touches utilises en mode d'dition de lignes (par exemple dans une commande de recherche), et enfin les variables d'environnement utilises par less. Vous trouverez ci- dessous un exemple de fichier de configuration pour less. Vous trouverez de plus amples renseignements sur les actions qui peuvent tre associes aux squences d'chappement et aux caractres de contrle dans la page de manuel lesskey. DOCUMENT SUR LINUX
#line-edit \177 backspace ^H backspace \e[3~ delete \e[1~ home \e[H~ home \eOH home \e[4~ end \e[F~ end \eOF end \e[5~ up \e[6~ down \e[2~ insert \e[E insert \e[G insert \eOE insert \eOo insert : \eOj insert * \eOm insert - \eOk insert + \eOl insert + \eOM insert \eOw insert 7 \eOx insert 8 \eOy insert 9 \eOt insert 4 \eOu insert 5 \eOv insert 6 \eOq insert 1 \eOr insert 2 \eOs insert 3 \eOp insert 0 \eOn insert . DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 216
# Troisime section :
#env LESSCHARSET=latin1 Conformment un usage courant, les commentaires sont introduits par le caractre dise ('#') dans ce fichier de configuration. Cependant, certains commentaires sont utiliss pour identifier le dbut des trois sections du fichier. Il s'agit des commentaires #command , #line-edit et #env . Il ne faut donc surtout pas supprimer ces commentaires dans votre fichier de configuration. Encore une fois, le caractre d'chappement 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 fichier de configuration /etc/vimrc, ces notations peuvent tre utilises directement dans le fichier de configuration de less. Ce fichier de configuration pourra tre compil avec le programme lesskey afin de gnrer le fichier binaire utilis par less. Pour cela, il faudra simplement utiliser la syntaxe suivante : lesskey fichier
o fichier est le nom du fichier de configuration compiler. Le fichier binaire gnr est par dfaut celui rfrenc par la variable d'environnement LESSKEY. Si cette variable n'est pas dfinie, un fichier .less sera cr dans le rpertoire personnel de l'utilisateur. 6.9.9. Configuration de la souris L'installation 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). Aujourd'hui, 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 dfinit une interface standard pour toutes les souris. De plus, il permet de dgager un des ports srie, ce qui simplifie la configuration 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 l'on ne trouve quasiment plus prsent. Ces souris pouvaient se connecter sur des cartes spciales voire, parfois, sur la carte graphique. Pour que l'installation de la souris se fasse correctement, il faut s'assurer que les options concernant la souris ait bien t dfinies dans la configuration du noyau de Linux. Cela n'est pas ncessaire pour les souris srie. Vous pouvez consulter la Section 7.3 pour plus de dtails sur la configuration du noyau. Lorsque cette tape est faite, il ne reste plus qu' indiquer au programme de gestion de la souris quel type de souris il a affaire. Ce programme, nomm gpm, permet d'utiliser la souris en mode texte. La configuration de la souris pour XWindow sera vue dans le Chapitre 10. La configuration de gpm se fait normalement par l'intermdiaire du programme de configuration de votre distribution. Lorsqu'on n'utilise pas XWindow, gpm est lanc automatiquement au dmarrage. Il se peut que votre programme de configuration 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 d'une petite roue entre les deux boutons, et permettant de faire dfiler le contenu des fentres), le type de souris utiliser est imps2 et non DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 217
simplement ps2 . Pour avoir la liste des types de souris grs par gpm, il suffit 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 fichier spcial de priphrique grant votre souris. 6.10. Configuration de l'imprimante Il existe deux systmes d'impression concurrents sous Linux : LPRng ( Line Printer Next Generation ) et CUPS ( Common Unix Printing System ). LPRng est une volution du systme initial, LPR, qui est devenu trs vite obsolte en raison de l'volution des technologies d'impression. En effet, celui-ci a t conu l'poque o les imprimantes taient encore des imprimantes matricielles et ne pouvaient imprimer qu'en noir et blanc. CUPS, quant lui, a t cr pour fournir une infrastructure compltement nouvelle et pour s'affranchir des limitations de LPRng. C'est donc la solution d'avenir, mais il n'est pas rare de trouver encore des systmes bass sur LPRng. D'autre part, la compatibilit au niveau des commandes d'impression est assure par CUPS, ce qui fait que la prsentation de LPRng n'est pas superflue. Quelle que soit la technologie d'impression utilise, l'imprimante reste gnralement accessible par un port local. En effet, la plupart des imprimantes sont connectes sur le port parallle ou sur un port USB (les imprimantes professionnelles mises part, celles-ci disposant gnralement d'une interface rseau). Nous supposerons donc dans la suite de ce document que l'imprimante est connecte soit sur le port parallle (accessible via le fichier spcial de priphrique /dev/lp0), soit sur un port USB (accessible via le fichier /dev/usb/lp0). 6.10.1. Concepts de base de l'impression sous Unix La principale difficult lors de l'impression d'un document est de le convertir de son propre format de fichier vers un format de donnes que l'imprimante est capable de comprendre. Le problme ici est qu'il existe une multitude de formats de documents et une multitude d'applications qui peuvent les gnrer, d'une part, et, d'autre part, que chaque fabricant d'imprimantes a dvelopp ses propres jeux de commandes pour ses imprimantes. Il existe bien un standard pour les imprimantes laser avec le langage PostScript dvelopp par Adobe, mais ce langage n'est pas utilisable avec la majorit des imprimantes jet d'encre. De fait, la plupart des applications sont capables de gnrer un fichier PostScript lors d'une impression, mais ce fichier doit encore tre traduit dans le langage spcifique de l'imprimante effectivement installe. Il est donc toujours possible d'envoyer directement un fichier imprimer l'imprimante, en le recopiant directement sur le fichier spcial de priphrique de l'imprimante, mais cette technique suppose que ce fichier soit gnr directement dans le langage de l'imprimante. Ceci ne peut que compliquer les applications qui permettent l'impression, et les empcher de fonctionner ultrieurement avec de nouvelles imprimantes dont le langage leur sera inconnu. Cette technique ne convient donc, en gnral, que pour des fichiers textes simples. De plus, cette solution ne convient pas dans un systme multitche et multi-utilisateur, puisque un seul programme seulement peut accder l'imprimante un instant donn. Les systmes d'impression ont donc pour principal but de rsoudre ces problmes. La multiplicit des formats de fichiers et des langages d'imprimante est prise en charge par tout un jeu de programmes de DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 218
conversion que l'on appelle les filtres. Les filtres ne sont en fait rien d'autre que des programmes qui reoivent un fichier en entre et qui fournissent la traduction de ce fichier dans un autre format en sortie. Les systmes d'impression LPRNG et CUPS fournissent un certains nombres de filtres, qui peuvent tre agencs afin de permettre l'impression de n'importe quel fichier sur l'importe quelle imprimante. Enfin, en ce qui concerne le partage des ressources d'impression, les systmes d'impression utilisent gnralement un mcanisme de files d'attente ( spool en anglais). Tous les travaux d'impression soumis sont placs dans une file d'attente, et attendent leur tour pour tre envoys l'imprimante associe cette file. Une fois que l'impression est termine, les travaux sont supprims de la file. Ainsi, un seul programme accde l'imprimante : le sous-systme d'impression. Notez qu'il est gnralement possible de dfinir plusieurs files d'attentes sur une mme imprimante, selon la nature du travail effectuer. Par exemple, une file peut se charger des documents textes, et une autre des documents graphiques en couleur. Bien entendu, le sous-systme d'impression contrle tous les accs l'imprimante et assure qu'un seul document est en cours d'impression chaque instant. 6.10.2. Le systme d'impression LPRng Le systme d'impression LPRng est constitu d'un dmon nomm lpd et d'un jeu de commandes permettant de communiquer avec lui pour soumettre les travaux d'impression, visualiser ceux qui sont en attente ou en cours d'impression et les annuler. 6.10.2.1. Le mcanisme des filtres APSFILTER Sous Linux, le mcanisme de filtres de LPRng est gnralement APSFILTER. Ce mcanisme est profondment orient vers le langage de description de pages PostScript, initialement invent par Adobe et que nombre d'imprimantes laser comprennent. En fait, il s'agit d'un vritable langage de programmation, qui permet de programmer les priphriques dont la vocation est d'afficher ou d'imprimer des documents. Techniquement parlant, PostScript permet d'obtenir une qualit d'impression irrprochable, car c'est l'imprimante elle-mme qui dessine la page imprimer. APSFILTER utilise donc un premier jeu de filtres pour convertir les fichiers imprimer en PostScript s'ils ne sont pas dj dans ce format. Le langage PostScript apparat donc comme le langage d'impression universel, que toutes les imprimantes sont supposes comprendre... Le problme, c'est que ce n'est pas le cas. En particulier, les imprimantes jet d'encre ne comprennent gnralement pas le PostScript. Aussi APSFILTER utilise-t-il un second jeu de filtres, capables de convertir le PostScript dans le langage graphique de l'imprimante (si l'imprimante n'est pas une imprimante PostScript, bien entendu). APSFILTER utilise pour cela un interprteur PostScript . Un interprteur PostScript est un programme capable de comprendre les fichiers PostScript et de les convertir dans le format compris par l'imprimante. L'interprteur couramment utilis sous Linux est GhostScript, parce que c'est un logiciel libre (cependant, la version courante est toujours commerciale). Il est galement capable d'afficher les fichiers PostScript sous XWindow, et de grer la plupart des imprimantes du march. L'avantage 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, puisqu'ils n'ont qu'un seul format grer. Bon nombre d'applications gnrent directement des fichiers PostScript, qui sont donc envoys directement GhostScript pour l'impression dfinitive. Figure 6-3. Filtres d'impression et imprimantes PostScript DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 219
Comme on le voit, avec APSFILTER, le langage d'impression universel est le langage PostScript. Bien entendu, cela est idal si l'on dispose effectivement d'une imprimante PostScript, mais mme dans le cas contraire, les impressions se font parfaitement grce GhostScript. 6.10.2.2. Installation des filtres et configuration des files d'impression Les distributions modernes fournissent toutes un outil permettant d'effectuer la configuration du sous- systme d'impression. Il est videmment recommand d'utiliser ces outils, car le rsultat est assur et la vie en est d'autant plus facile. De plus, les distributions peuvent fournir des filtres complmentaires que seuls ces outils connaissent et sont capables d'installer. Si le jeu de filtres utilis de votre distribution est APSFILTER, vous pourrez installer votre imprimante manuellement en excutant le programme SETUP du rpertoire /usr/share/apsfilter/. Ce programme est rellement affreux utiliser car il s'agit en ralit d'un script, mais il effectue correctement son travail. Ds son dmarrage, il vous demande d'accepter la licence logicielle (la licence GPL avec une forte invitation envoyer une carte postale l'auteur, qui les collectionne). La question suivante est donc si vous dsirez obtenir l'adresse postale de l'auteur. Une fois ces deux questions passes, le programme d'installation commence rellement. Le programme vous demande de confirmer les droits sur le rpertoire des fichiers d'impression en cours, puis, si vous le faites effectivement, si vous dsirez complter le fichier de configuration de LPRNG /etc/printcap ou en crer un compltement nouveau. Vient ensuite le menu de configuration des imprimantes : Figure 6-4. Filtres d'impression et imprimantes PostScript DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 220
La premire option vous permet de choisir le pilote de l'imprimante, qui donc en gnral est un des pilotes fournis avec l'interprteur GhostScript. Vous devez slectionner le pilote de votre imprimante ou, dfaut, celui de l'imprimante qui s'en rapproche le plus. La deuxime option vous permet de slectionner l'interface de l'imprimante. Vous pourrez indiquer le port de l'imprimante ou, s'il s'agit d'une imprimante rseau, la manire d'y accder. Les autres options du menu quant elles sont relativement simples, et vous permettront respectivement de slectionner le format du papier, la qualit et le mode d'impression, ainsi que la rsolution de l'imprimante. Vous pourrez (et devriez) tester la configuration ainsi dfinie avec l'option 'T'. Si le rsultat vous convient, installez l'imprimante avec l'option 'I'. Vous pouvez installer plusieurs imprimantes ou plusieurs files d'impression pour la mme imprimante en rptant les tapes prcdentes. Au final, terminez l'installation avec l'option 'Q', et envoyez une carte postale l'auteur du logiciel. 6.10.2.3. Commandes d'impression La commande d'impression de LPRng est la classique commande lpr (abrviation de l'anglais off Line PRint , ce qui signifie impression diffre ). Cette commande est trs simple utiliser, comme le montre la syntaxe suivante : lpr fichier
o fichier est le nom du fichier imprimer. Cette commande se contente de placer le fichier imprimer dans un rpertoire affect la file d'attente des travaux d'impression. Le travail d'impression est ensuite effectu par le dmon lpd, qui fait passer chaque fichier imprimer travers la srie de filtres pour le convertir dans le langage de l'imprimante, puis qui alimente l'imprimante. La liste des travaux d'impression 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 l'abandonner l'aide de la commande lprm. Enfin, pour consulter et contrler l'tat des files d'impression, on peut utiliser la commande lpc. Cette commande peut prendre des options en ligne de commande afin de prciser l'opration effectuer. Par exemple, l'option saus permet d'obtenir l'tat de chacune des files d'impression. Les autres options permettent d'arrter le travail en cours, de le suspendre, de dsactiver l'imprimante pour les travaux suivants, et inversement de relancer les travaux d'impression sur cette file. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 221
6.10.2.4. Description du fichier /etc/printcap Le dmon lpd utilise le fichier de configuration /etc/printcap pour dterminer l'ensemble des files d'impression existantes et quels filtres doivent tre utiliss. Ce fichier est gnr automatiquement par les utilitaires des distributions ou, dfaut, par le script d'installation d'APSFILTER. Toutefois, comme il est bon de savoir ce qui se passe lorsqu'une commande d'impression est envoye au dmon lpd, une brve description de ce fichier sera faite dans cette section. Chaque file est dcrite par une ligne du fichier /etc/printcap et une seule. 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 d'chappement '\' la fin de chaque ligne, sauf la dernire. Le premier champ de la description d'une file d'attente est une liste des noms sous lesquels cette file sera connue. Les diffrents noms sont crits les uns la suite des autres, spars par une barre verticale (caractre '|'). Les champs suivants dcrivent l'imprimante utiliser, ainsi que les options gnrales de la file d'attente. Ces champs utilisent tous la mme syntaxe : option = valeur Il existe un grand nombre d'options, nombre d'entre elles sont facultatives. Cependant, il est impratif que le dmon lpd puisse trouver l'imprimante utiliser. Par consquent, il faut lui fournir au moins l'une des deux options suivantes : l'option lp permet de spcifier le fichier spcial de priphrique auquel l'imprimante est connecte ; les options rm et rp permettent de spcifier respectivement le nom d'un serveur d'impression distant ( remote en anglais) et de l'imprimante 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 dfini avec l'option sd. D'autres 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 spcifier la taille maximale des travaux d'impression soumis. Cette dernire option permet de fixer des quotas d'impression selon la taille des documents, afin de donner la possibilit aux autres documents d'tre imprims. Cette option utilise une syntaxe particulire : mx#taille
o taille est la taille maximale autorise, exprime en kilo-octets. Le fait de spcifier une taille nulle permet de supprimer ce contrle. L'exemple ci-dessous correspond la dfinition d'une file d'attente locale lmentaire : ascii|lp:lp=/dev/lp:sd=/var/spool/lpd/ascii:mx#0:sh Comme vous pouvez le constater, il n'y a aucune spcification des filtres d'impression utiliser dans cet exemple. Les travaux sont donc directement envoys l'impression, sans traduction pralable. Il est donc ncessaire qu'ils soient dj au format de l'imprimante. Si l'on veut utiliser des filtres d'impression, il faut utiliser l'une des options if, cf, df, gf, nf, rf, f ou vf. Chacune de ces DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 222
options permet de spcifier la ligne de commande d'un filtre d'impression spcifique. Le choix du filtre utilis pour un travail d'impression est effectu lors de l'appel la commande lpr, l'aide d'une option en ligne de commande. Le filtre if est le filtre par dfaut, il n'y a donc besoin d'aucune option pour l'utiliser. Les autres filtres peuvent tre slectionns respectivement avec les options -c, -d, -g, -n, -f, - et -v. Comme on le voit, le sous-systme d'impression ne reconnat pas automatiquement le format de fichier utilis. D'autre part, le nombre de filtres utilisables est limit 8, ce qui peut ne pas suffire tant donn la prolifration des formats de fichiers. Pour rsoudre ce problme, APSFILTER utilise un filtre gnrique (utilis en tant que filtre par dfaut) qui, lui, est capable de reconnatre le format du fichier imprimer et de le diriger vers un autre filtre ou une srie de filtres. Comme on l'a vu ci-dessus, l'ultime filtre utilis est en gnral l'interprteur GhostScript. Ainsi, il n'y a plus de limite sur le nombre de filtres utilisables, et les filtres sont slectionns automatiquement en fonction de la nature du document imprimer. 6.10.3. Le systme d'impression CUPS Le systme d'impression CUPS a pour but de remplacer LPRng et d'offrir de nouvelles fonctionnalits. En particulier, il est plus facile de configurer et d'ajuster les paramtres avancs des imprimantes. CUPS permet une meilleure intgration dans un rseau htrogne, car il implmente le protocole d'impression rseau IPP ( Internet Printing Protocol ), qui est devenu un standard de fait pour tous les systmes d'exploitation. Coupl au logiciel Samba, il permet galement d'accder aux imprimantes des postes Windows. CUPS est constitu du dmon cupsd, qui gre la fois les requtes d'impression effectues via le protocole d'impression IPP, qui est un protocole d'impression encapsul dans des requtes HTML (le langage de description de pages Web utilis sur Internet). Le dmon cupsd tend mme ce protocole d'impression pour prendre en charge des pages Web de configuration, ce qui permet de raliser l'administration du systme d'impression trs simplement par l'intermdiaire d'une interface Web. Il est ainsi possible de raliser la configuration et la gestion des imprimantes, ainsi que des groupes d'imprimantes sur lesquelles les travaux d'impression peuvent tre rpartis. Enfin, CUPS fournit les fonctionnalits de base du systme d'impression LPRng, en dfinissant automatiquement un fichier /etc/printcap correspondant sa propre configuration, et en fournissant un jeu de commandes lp classiques redirigeant tous les traveaux d'impression vers lui. CUPS utilise galement un nouveau systme de filtres, qui permettent d'viter de passer systmatiquement par le format d'impression PostScript. Plusieurs filtres peuvent tre utiliss pour passer par diffrents formats intermdiaires. Le choix de ces filtres est dtermin en fonction du cot de chaque conversion dans la chane de transformations du document vers le format final utilis par l'imprimante. On peut donc dire que CUPS est la fois plus facile configurer et plus performant que LPRng, tout en restant compatible avec lui pour les applications. 6.10.3.1. Le mcanisme des filtres de CUPS CUPS utilise une architecture lgrement diffrente de celle de LPRng. Son systme de filtres est plus complexe et plus puissant, et ne ncessite pas un passage oblig par le langage d'impression PostScript. En ralit, CUPS fournit tout un jeu de filtres lmentaires capables de transformer un document d'un format dans un autre. Tous ces filtres sont agencs pour effectuer la traduction complte du document imprimer dans le langage d'impression utilis par l'imprimante. Contrairement LPRng, les formats intermdiaires ne cette fois sont ni uniques, ni forcment du PostScript. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 223
Il est parfois possible de trouver plusieurs jeux de filtres distincts qui ralisent la conversion du document dans le langage d'impression destination, en passant par diffrents formats intermdiaires. CUPS doit donc effectuer un choix entre les diffrents jeux de filtres. Pour cela, il attribue un cot chaque conversion, et calcule le cot total de chaque jeu de filtres utilisable pour imprimer le document. Il choisit ensuite le jeu de filtres qui a le cot total minimal, et garantit ainsi les performances du systme d'impression. Bien entendu, certains de ces filtres utilisent le bon vieux GhostScript, et la plupart des gestionnaires d'imprimantes sont en ralit des drivers crs pour GhostScript ou pour le logiciel de retouche d'images The Gimp. CUPS requiert donc une version modifie de l'interprteur GhostScript, mais les distributions l'installent automatiquement et cela ne pose pas de problme. Au final, l'impression des documents est une opration trs facile, et l'utilisateur ne voit rien de toutes les transformations effectues sur les documents par le mcanisme des filtres. Enfin, contrairement LPRng, CUPS donne la possibilit de fournir des paramtres complmentaires sur les filtres d'impression, ce qui confre une grande souplesse au systme d'impression. C'est pour cette raison qu'il est recommand d'utiliser CUPS si l'on dsire faire des impressions couleur ou contrler finement les paramtres d'impression. 6.10.3.2. Configuration d'une imprimante CUPS La manire la plus simple de configurer CUPS est d'utiliser son interface Web. Celle-ci est accessible l'aide de n'importe quel navigateur Internet, en utilisant l'adresse http://localhost:631/admin. Lorsque l'on dsire se connecter au serveur Web de CUPS via cette interface, celui-ci exige une authentification de l'administrateur. Vous devrez donc vous identifier en tant que root pour effectuer la configuration du systme d'impression. La page Web affiche prsente trois zones permettant de raliser les principales oprations de configuration du systme d'impression. L'ajout d'une imprimante se fait en cliquant sur le bouton Add Printer . Ce bouton ouvre une autre page, dans laquelle il est possible de donner le nom de l'imprimante (champ Name ), son emplacement sur le rseau (champ Location ) et sa description (champ Description/ ). La description permet de dtailler la nature de l'imprimante et peut contenir n'importe quel texte. Le bouton Continue permet de passer l'cran suivant, qui fournit la liste des priphriques disponibles. Cette liste contient tous les fichiers spciaux de priphriques de votre systme, ainsi que les protocoles d'impression en rseau supports par CUPS. La page suivante permet de slectionner la marque de l'imprimante, et la suivante son modle. Le bonton Continue permet alors de terminer l'installation de l'imprimante. La configuration des imprimantes installes se fait en cliquant sur le bouton Manage Printers . L'cran qui s'affiche contient les boutons Print Test Page (impression d'une page de test), Stop Printer (suspension des impressions), Reject Jobs (interdiction de soumettre de nouveaux travaux d'impression), Modify Printer (modification de la dfinition de l'imprimante), Configure Printer (configuration avance de l'imprimante) et Delete Printer (suppression de l'imprimante). La fonctionnalit de configuration avance des imprimantes permet de fixer les valeurs des paramtres du pilote d'impression, comme la rsolution, la taille et le type de papier, ainsi que les paramtres de correction des couleurs. L'ajout d'un groupe d'imprimantes se fait en cliquant sur le bouton Add Class . Comme pour la dfinition des imprimantes, le formulaire qui apparat vous permet de dcrire le groupe d'imprimantes. L'cran suivant donne ensuite la possibilit d'indiquer les imprimantes qui font partie du groupe. Une fois un groupe d'imprimantes dfini, il est possible d'effectuer les tches d'administration le concernant l'aide du bouton Manage Classes . DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 224
6.10.3.3. Les fichiers de configuration de CUPS Les fichiers de configuration de CUPS sont gnralement placs dans le rpertoire /etc/cups/. Le fichier le plus important est sans doute le fichier cupsd.conf, qui contient tous les paramtres de configuration du dmon cupsd. Ces paramtres sont nombreux et bien dcrits dans la documentation de cups, que l'on peut obtenir simplement en ouvrant un navigateur sur l'adresse http://localhost:631/documentation.html. De plus, ce fichier est trs bien comment, aussi seules les options les plus importantes seront-elles dcrites ici. Les principales options concernent la scurit du systme d'impression. Normalement, le dmon d'impression cupsd ne doit pas fonctionner sous le compte root, pour viter de lui donner tous les droits. Pour cela, il change d'identit lorsqu'il dmarre et se place dans le compte utilisateur spcifi par l'option User. De mme, il se place dans le groupe utilisateur spcifi par l'option Group. Gnralement, les valeurs utilises pour ces deux options sont l'utilisateur lp et le groupe sys, ce sont donc leurs valeurs implicites. Une autre option particulirement importante est l'option Lisen. Cette option permet d'indiquer au dmon cupsd sur quelles interfaces rseau il doit se mettre en coute pour les clients dsirant s'y connecter. Il n'est gnralement pas conseill de laisser ouvert un port non utilis lorsqu'on se connecte Internet, aussi est-il recommand de configurer le dmon cupsd pour qu'il n'coute pas les requtes provenant d'autres machines que la machine locale. Pour cela, on utilisera la ligne suivante dans le fichier de configuration cupsd.conf : Listen 127.0.0.1:631 Cette commande permet de ne rpondre qu'aux requtes provenant de la machine locale, sur le port ddi au protocole d'impression IPP, savoir le port 631. Bien entendu, vous pourrez ajouter d'autres machines si vous disposez d'un rseau local, simplement en ajoutant d'autres options Lisen. Notez que l'usage de cette option est incompatible avec l'option Ror, qu'il faut donc commenter au pralable, faute de quoi cupsd ne rpondra aucune requte. Note : Comme on le verra dans le chapitre sur la configuration rseau, l'adresse rseau 127.0.0.1 reprsente soi-mme dans les communications rseau. Cela signifie ici que seuls les clients de la machine locale pourront utiliser le systme d'impression. Il est galement possible de fixer des droits sur les diffrents rpertoires de configuration de l'interface Web, ainsi que sur les rpertoires virtuels utiliss par le protocole IPP lorsque des requtes sont faites par les clients. Ainsi, il est possible de ne permettre l'impression que pour des clients qui vrifient certains critres. Les rgles dfinissant les droits d'accs aux rpertoires sont indiques dans des sections Location, dont la syntaxe est similaire celle des balises du langage XML. Par exemple, la section qui dcrit les droits d'accs au rpertoire de configuration /admin est typiquement de la forme suivante : <Location /admin> AuthType Basic AuthClass System Order Deny,Allow Deny From All Allow From 127.0.0.1 </Location> Vous constaterez que plusieurs informations sont donnes dans ce type de section. Premirement, le type d'authentification utilis est spcifi l'aide de l'option AuhType. Les diffrentes valeurs possibles pour cette option sont dcrites dans le tableau suivant : DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 225
Valeur Signification None Aucune identification n'est faite. Basic L'identification est ralise via les mcanismes d'authentification HTML classique. cupsd attend ici un nom d'utilisateur et un mot de passe Unix classiques, qui doivent donc exister dans le fichier /etc/passwd. Notez qu'avec ce mode d'authentification, le mot de passe est envoy en clair du navigateur Internet utilis pour raliser la connexion vers le serveur Web du dmon cupsd. Cela signifie que si la communication ne se fait pas en local, une tierce personne pourrait voir le nom d'utilisateur et le mot de passe en coutant les communications rsau. Ce mode d'authentification est donc extrmement dangereux. Digest L'identification se fait de la mme manire que pour le mode Basic, mais le nom de l'utilisateur et le mot de passe ne sont pas transmis en clair. Au lieu de cela, seules les signatures de ces informations, obtenues l'aide d'une fonction de chiffrement sens unique, sont transmises sur le rseau. Il n'est donc plus possible de dterminer le nom de l'utilisateur et son mot de passe en clair. De plus, les mots de passe utiliss ne sont pas forcment les mmes que ceux du systme, et ils sont stocks de manire indpendante dans le fichier passwd.md5 du rpertoire /etc/cups/. Ces mots de passe peuvent tre ajouts avec la commande lppasswd. Ce mode d'authentification est donc plus sr, notez toutefois qu'il reste possible pour un attaquant de se connecter avec le nom de l'utilisateur et son mot de passe chiffr une fois ceux- ci capturs. Pour chaque mthode d'authentification, il est possible de prciser le critre utilis pour vrifier les droits d'accs du client. Ce critre est fix par l'option AuhC1ass. Celle-ci peut prendre les valeurs suivantes : Valeur Signification Anonymous Aucun critre n'est utilis, tout le monde peut accder la page spcifie dans la directive Location. Il va de soi que l'utilisation de ce critre avec les autres modes d'authentification que None est absurde. User L'utilisateur authentifi doit tre un utilisateur du systme Unix sous-jacent. System L'utilisateur authentifi doit tre membre du groupe systme. Ce groupe est, par dfaut, le groupe sys, mais il peut tre modifi l'aide de l'option SysemGroup du fichier de configuration cupsd.conf. Group L'utilisateur authentifi doit tre membre du groupe spcifi par l'option AuhGroupName du fichier de configuration cupsd.conf. Ce groupe doit tre un des groupes du systme Unix sous-jacent, sauf si le mode d'authentification Digest est utilis. En effet, dans ce cas, le groupe de l'utilisateur doit tre celui stock avec son mot de passe dans le fichier de mots de passe de CUPS (c'est--dire le fichier /etc/cups/passwd.md5). Les mots de passe cups utiliss pour l'authentification dans le mode d'authentification Digest peuvent tre ajouts l'aide de la commande lppasswd. Cette commande permet galement de fixer le groupe de l'utilisateur lorsque le critre d'accs utilis est le critre Group. La syntaxe gnrale de cette commande est la suivante : lppasswd [-g groupe] -a utilisateur
o groupe est le nom de groupe de l'utilisateur (uniquement utilis pour le mode d'authentification Digest) et utilisateur est son nom d'utilisateur. l'issue de cette commande, lppasswd demande deux fois le mot de passe de l'utilisateur et met jour le fichier passwd.md5. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 226
La deuxime srie d'informations fournie dans les sections Location sont les droits sur les machines capables d'accder la page Web. L'option Order indique l'ordre d'valuation des directives suivantes. Il est recommand d'interdire en premier, et de regarder ensuite si la machine cliente a le droit de se connecter. C'est ce qui est fait dans l'exemple prcdent, avec les options Deny From All et Allow From 127.0.0.1 , qui indiquent que seule la machine locale a le droit de se connecter au serveur d'impression. 6.11. Configuration du lancement automatique des tches Il est possible de dclencher l'excution de certaines oprations intervalles rguliers sous Linux. Ces oprations sont dfinies pour le systme et pour chaque utilisateur. Elles sont enregistres dans des fichiers de configuration indiquant le moment o elles doivent tre dclenches, et quelle action elles doivent raliser. Les oprations dfinies pour le systme sont stockes dans le fichier de configuration /etc/crontab. Des commandes additionnelles peuvent tre dfinies dans les rpertoires /etc/cron.d/, /etc/cron.daily/, /etc/cron.weekly/ et /etc/cron.monthly/. Par ailleurs, les fichiers de configuration des utilisateurs sont stocks dans le rpertoire /var/cron/tab/, sous le nom de chaque utilisateur. Il est bien entendu possible d'diter ces fichiers en tant que root, mais ce n'est pas recommand. En effet, la commande crontab permet d'installer, de supprimer et de consulter les fichiers crontab de chaque utilisateur, et ce de manire sre. La commande crontab peut tre utilise pour afficher le contenu du fichier de configuration de l'utilisateur qui l'appelle, l'aide de l'option -l : crontab -l Elle permet galement de supprimer ce fichier, l'aide de l'option -r : crontab -r Enfin, l'option -e permet d'diter le fichier crontab, l'aide de l'diteur spcifi dans la variable d'environnement VISUAL ou EDITOR. Par dfaut, l'diteur vi sera utilis. En tant qu'administrateur du systme, il est possible de modifier les paramtres pour n'importe quel utilisateur. Pour cela, il faut prciser le login de l'utilisateur avec l'option -u. Il est recommand d'utiliser galement l'option -u si l'on a effectu un su, car la commande crontab peut ne pas pouvoir dterminer l'utilisateur qui l'a appel dans ce cas. Le format des fichiers crontab est suffisamment riche pour permettre de spcifier avec finesse les conditions d'excution des oprations programmes. En gnral, le dbut du fichier contient la dfinition de variables d'environnement utilises par crontab. La suite du fichier est rserve aux commandes programmes. Chaque programmation est ralise sur une ligne du fichier crontab. Les lignes contiennent 5 champs spcifiant la date et l'heure laquelle la commande doit tre excute, un nom d'utilisateur ventuel et la commande elle-mme. Le nom d'utilisateur ne doit tre spcifi que dans le fichier /etc/crontab, qui dfinit les commandes du systme. Il spcifie alors au nom de quel utilisateur la commande doit tre excute. Pour les fichiers crontab propres chaque utilisateur, il n'est bien entendu pas ncessaire d'indiquer ce nom. Les 5 champs de la partie dcrivant la date d'excution 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) ; DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 227
le mois (compris entre 0 et 12, ou indiqu par les trois premires lettres du nom du mois en anglais) ; le jour dans la semaine (compris entre 0 et 7, ou indiqu par les trois premires lettres du nom du jour en anglais). Les numros de mois 0 et 12 correspondent Janvier, et les numros de jours 0 et 7 correspondent au Dimanche. La commande sera excute chaque fois que le jour, le mois, l'heure et les minutes du systme correspondront avec ces 5 champs. Il suffit que l'une des spcifications du jour corresponde pour que la commande soit excute (c'est--dire qu'elle est excute une fois pour le jour du mois et une fois pour le jour de la semaine si ces deux champs sont spcifis). Il est possible d'utiliser un intervalle de valeurs pour chacun de ces champs, en indiquant la premire et la deuxime valeur, spares d'un tiret. Il est galement possible de faire une liste de valeurs et d'intervalles, en sparant chaque donne par une virgule. Si l'on veut spcifier toutes les valeurs possibles pour un champ, on peut utiliser le caractre '*'. Enfin, il est possible d'indiquer que la commande doit tre excute toutes les n valeurs pour chaque champ. Pour cela, il suffit de faire suivre le champ d'une barre oblique de division ('/') et du nombre n. Ainsi, si l'on trouve l'expression */3 pour les heures, la commande sera excute toutes les trois heures. La spcification de la commande doit tre faite sur une seule ligne. Le caractre de pourcentage ('%') a une signification spciale, sauf s'il est prcd d'un antislash ('\'). Les donnes qui suivent le premier pourcentage sont passes telles quelles dans l'entre 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 fichier file.txt et de rpondre 'y' la commande rm. Le caractre 'y' est pass ici dans le flux d'entre standard de rm. Comme vous pouvez le voir, le fichier /etc/crontab du systme permet de programmer des oprations priodiques, comme les sauvegardes, la destruction des fichiers temporaires, ou toute autre tche de maintenance. Ne vous tonnez donc pas si votre ordinateur semble s'activer tout seul rgulirement, heure fixe (par exemple, sur le coup de 11 heures ou minuit). C'est le fonctionnement normal de votre systme, qui s'occupe de toutes les tches mnagres qu'il s'est rserv pour une heure o normalement tout le monde dort... Les utilisateurs peuvent galement dfinir leur propre crontab pour effectuer les oprations priodiques quils dsirent. Par exemple, ils peuvent programmer une commande qui leur rappellera un rendez-vous. 6.12. Gestion de l'nergie 6.12.1. Gnralits sur la gestion de l'nergie La gestion de l'nergie sur les ordinateurs se fait classiquement via l'une des interfaces APM ou ACPI. APM (abrviation de Advanced Power Management ) est la plus vieille, et s'appuyait essentiellement sur le BIOS pour prendre en charge la gestion de l'nergie. Elle peut encore n'tre que la seule possibilit fonctionnelle sur la plupart des vieilles machines, mais est destine tre remplac par l'interface ACPI (abrviation de Advanced Configuration and Power Interface ), dveloppe par Intel. Cette nouvelle interface, bien que souffrant manifestement encore de quelques dfauts de jeunesse, est nettement plus souple. En effet, elle se base sur un tout autre principe qu'APM, DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 228
puisqu'elle permet cette fois de laisser le systme prendre en charge la gestion de l'nergie. tant donn que l'interface APM est voue disparatre, et sachant qu'on ne peut utiliser qu'une seule de ces interfaces, seule l'interface ACPI sera prsente dans ce document. Le principe de fonctionnement de l'ACPI est le suivant. Le BIOS contient une table dfinie par le fabricant de l'ordinateur qui dcrit le matriel fourni, et dfinit les oprations de base permettant de grer l'nergie. Ces oprations sont dfinies dans un langage standard spcifi par Intel. Le systme d'exploitation est en charge de lire ces informations et d'interprter les oprations dfinies dans la table ACPI. Ainsi, c'est bien le systme d'exploitation qui se charge de la gestion de l'ordinateur. L'implmentation de l'interprteur ACPI de Linux est l'implmentation de rfrence ralise par Intel. Dans le meilleur des mondes, il ne devrait donc y avoir aucun problme pour utiliser l'ACPI sous Linux. Malheureusement, bon nombre de BIOS fournis par les fabricants sont bogus et ne respectent pas la norme ACPI. En effet, l'implmentation ACPI de Microsoft est incorrecte et son interprteur accepte des erreurs de syntaxe que leur compilateur ACPI laisse passer (ce qui somme toute est cohrent, ils ne pouvaient pas faire moins sans que le rsultat ne cesse de fonctionner). Ce n'est pas le cas de l'interprteur ACPI de Linux puisque, par dfinition, elle ne peut se conformer celle de Microsoft et tre compatible bogue bogue. Le rsultat est, hlas, catastrophique, puisque les fonctionnalits ACPI de ces machines ne peuvent pas tre utilises totalement sous Linux. Microsoft aurait voulu exploiter sa position dominante et corrompre le standard d'Intel pour isoler les concurrents qu'il n'aurait pas fait mieux (avis personnel). La seule solution est de rcuprer la table ACPI du BIOS, de la dsassembler pour en obtenir le code source, et de tenter de la recompiler avec le compilateur d'Intel (pas celui de Microsoft). Les erreurs apparaissent donc et peuvent ainsi tre corriges. Une fois la table ACPI corrige, il faut soit convaincre le fabricant de l'ordinateur de mettre un nouveau BIOS disposition, soit paramtrer le noyau pour qu'il charge cette table au lieu de prendre celle du BIOS pour argent comptant. Corriger une table ACPI bogue est une opraiton extrmement technique et absolument hors sujet, et faire en sorte que le noyau l'utilise ncessitait de patcher les sources du noyau jusqu' la version 2.6.9. prsent, cela est faisable directement partir du programme de configuration du noyau, mais je n'en parlerais pas plus ici. Vous pouvez consulter le site web de l'ACPI pour plus de dtails ce sujet. Si vous rencontrez des problmes de ce type, je vous suggre de trouver un Linuxien confirm, ou de faire une croix sur les fonctionnalits ACPI qui ne sont pas oprationnelles sous Linux. 6.12.2. Configuration de la gestion de l'nergie La prise en charge des fonctionnalits de gestion d'nergie au niveau du noyau se fait simplement en activant les options correspondantes dans la configuration du noyau. Elles sont regroupes dans le menu Power management options (ACPI, APM) . Seules les plus intressantes sont listes ci- dessous : l'option Power Management support permet d'activer les fonctionnalits de mise en veille du systme sur disque. Il est possible ainsi de sauvegarder l'ensemble du systme sur la partition d'change du systme, et de le redmarrer et le restaurer (options Suspend-to-Disk Support et Default resume partition ). Cette option permet galement d'activer le menu de gestion de l'nergie par APM. le menu ACPI (Advanced Configuration and Power Interface) Support permet d'activer les fonctionnalits ACPI. Il donne accs l'option ACPI Support , qui elle-mme donne accs de nombreuses options pour les diffrents composants grant l'ACPI. le menu CPU Frequency scaling donne accs l'option CPU Frequency scaling . Cette option permet d'activer la gestion des fonctions d'conomie d'nergie des processeurs pour les portables. Ces processeurs sont en effet capables de changer de frquence d'excution pour, lorsque l'ordinateur est utilis pour des tches peu consommatrices de ressources, abaisser la consommation de l'ordinateur et augmenter l'autonomie du systme lorsqu'il fonctionne sur DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 229
batterie. Les sous-options permettent de spcifier les politiques de gestion de l'nergie ainsi que le type de processeur utilis. Les fonctionnalits ACPI prises en charge par le noyau sont exposes l'utilisateur au travers des systmes de fichiers virtuels /proc/ et /sys/. Le rpertoire /proc/acpi/ contient essentiellement un sous-rpertoire pour chaque composant ACPI pris en charge par le noyau. Dans chacun de ces sous-rpertoires, vous trouverez des fichiers contenant les informations courantes sur ces diffrents sous-systmes. Le sous-rpertoire /sys/power/ vous permettra quant lui de modifier le niveau d'conomie d'nergie utilis par votre ordinateur. En particulier, le fichier state vous permettra de le suspendre ou de le mettre en veille. Pour cela, il vous faut simplement crire le mode dsir dans ce fichier avec la commande echo : echo -n mode > /sys/power/state
o mode est le mode dsir. Vous obtiendrez la liste des modes accepts par Linux en lisant ce fichier avec la commande cat :
cat /sys/power/state En gnral, les modes standby, mem et disk sont disponibles. standby correspond la mise en veille simple de l'ordinateur. mem permet de raliser une suspension du systme en mmoire, et correspond donc un niveau d'conomie d'nergie suprieur. Enfin, disk permet d'teindre compltement l'ordinateur aprs avoir stock son tat dans la partition d'change. Cette commande correspond au niveau maximum d'conomie d'nergie. Note : Ces fonctionnalits sont relativement exprimentales et peuvent ne pas toutes fonctionner. Gnralement, seule la suspension sur disque semble fonctionner, souvent sous condition que certains gestionnaires de priphriques soient dchargs avant la mise en veille. Si vous disposez d'un portable, il est probable que votre processeur soit capable de fonctionner diffrentes frquences. Il est possible de lire la frquence courante et de la modifier par l'intermdiaire des fichiers du rpertoire /sys/devices/system/cpu/cpu0/cpufreq/. La frquence courante peut tre lue via le fichier cpuinfo_cur_freq. Il n'est pas possible de modifier directement cette valeur. Toutefois, le noyau donne la possibilit de la modifier via la politique de gestion d'nergie via le fichier scaling_governor. Les valeurs possibles pour ce fichier peuvent tre lues dans le fichier scaling_available_governors. Gnralement, les politiques disponibles sont powersave et performance. Ces politiques permettent respectivement de changer la frquence du processeur vers les frquences indiques dans les fichiers scaling_min_freq et scaling_max_freq. Ce sont donc dans ces fichiers que l'on pourra dfinir les frquences utilisables. La liste des frquences accessibles est fournie par le fichier scaling_available_frequencies. 6.12.3. Le dmon ACPI Le noyau expose les fonctionnalits de surveillance de l'ordinateur de l'interface ACPI via le fichier spcial de priphrique /proc/acpi/event. Ds qu'un vnement se produit (passage de l'alimentation sur batterie pour un portable, hausse anormale de la temprature du processeur, appui sur le bouton de mise en marche / arrt, etc.), une ligne signalant cet vnement est ajoute ce fichier virtuel. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 230
Les applications ne doivent pas lire ce fichier directement, cette tche tant normalement attribue au dmon acpid. Ce dmon surveille le fichier d'vnement du noyau et fournit un mcanisme de notification plus gnrique (c'est dire moins spcifique Linux) aux applications. Ainsi, les applications peuvent se connecter au dmon ACPI et tre prvenue des vnements que le noyau met. Le dmon ACPI permet aussi de programmer des actions en rponse aux vnements ACPI. Pour cela, il consulte les fichiers de configuration placs dans le rpertoire /etc/acpi/events/ et excute les actions qui y sont enregistres. Ces actions sont dfinies par des paires de lignes evnment / action permettant de renseigner, pour chaque type d'vnement, l'action effectuer. Les lignes de dfinition des vnements utilisent des expressions rationnelles pour slectionner les vnements ou les groupes d'vnements associs l'action. Les lignes d'action quant elles permettent d'indiquer la ligne de commande excuter en cas d'apparition de ces vnements. Par exemple, le fichier de configuration par dfaut capte l'ensemble des vnements ACPI et les passe aux scripts /etc/acpi/acpi_handler.sh l'aide de ces deux simples lignes : event=.* action=/etc/acpi/acpi_handler.sh %e
L'expression rationnelle utilise dans la ligne de dfinition des vnements signale que toute chane de caractres doit correspondre. L'action en rponse est l'excution du script acpi_handler.sh. La chane de caractres complte dfinissant l'vnement est passe en premier paramtre et est reprsente par le symbole %e. Si les vnements intressants taient tous les vnements concernant le bouton d'alimentation de l'ordinateur, l'expression rationnelle utilise aurait t la suivante : event=button power.*
Comme vous pouvez le constater, le format utilis pour les descriptions des vnements envoys par le noyau doit tre connu pour pouvoir crire les expressions rationnelles devant les slectionner. Ces descriptions sont envoyes par le script par dfaut acpi_handler.sh dans les fichiers de traces du systme. Vous pourrez donc les y trouver aprs avoir gnr les vnements ACPI corresondants. Pour donner un exemple, voici comment ce script peut tre modifi afin de faire en sorte que la fermeture du couvercle d'un portable le mette en veille immdiatement sur disque : #!/bin/sh
# Ajoute / la liste des sparateurs pour le dcoupage de la ligne de commande : IFS=${IFS}/ set $@
case "$1" in button) case "$2" in power) /sbin/init 0 ;; # Traite l'vnement de fermeture du couvercle : lid) # Vrifie que le couvercle est ferm : grep -q "close" /proc/acpi/button/lid/LID/state DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 231
if [ $? -eq 0 ] ; then # Met en veille prolonge l'ordinateur : /usr/sbin/suspend.sh disk fi ;; # Trace les vnements de type "bouton" non traits : *) logger "ACPI action $2 is not defined" ;; esac ;; # Trace tous les autres vnements non traits : *) logger "ACPI group $1 / action $2 is not defined" ;; Esac
Ce script capte l'vnement lid ( couvercle en anglais) et vrifie l'tat du capteur de fermeture du couvercle, accessible via le fichier d'tat /proc/acpi/button/lid/LID/state (l'emplacement de ce fichier peut varier selon les ordinateurs). Si ce fichier indique que le couvercle est ferm, le script utilitaire suspend.sh est appel pour mettre en veille l'ordinateur. Ce dernier script utilise le fichier /sys/power/state pour effectuer cette mise en veille : #!/bin/sh
# Stocke l'heure systme (pour mise jour de /etc/adjtime) : hwclock --systohc
# Suspend le systme et sur disque (mthode sre) : echo -n $1 > /sys/power/state
# Rtablit l'heure systme : hwclock --hctosys
Comme vous pouvez le constater, il est ncessaire de prendre en compte l'horloge systme avant et aprs une suspension. En effet, sans cela, l'horloge systme reprendrait exactement la date de la suspension lors du rveil. Le stockage de l'heure courante avant suspension est galement ncessaire, afin de maintenir le fichier de configuration /etc/adjtime cohrent. Note : Une autre solution aurait t de faire le test sur l'tat du bouton dans le script de suspension et d'appeler celui-ci directement en rponse l'vnement button lid .
Chapitre 7 : Notions de compilation et configuration du noyau Table des matires
7.1. Notions de base 7.2. Compilation de GCC 7.3. Compilation du noyau Linux Ce chapitre prsente les notions de base de compilation et de fichiers sources de programmes. Il est certain que le lecteur de ce document n'a pas forcment l'intention de programmer sous Linux, DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 232
cependant, il est ncessaire de connatre les notions qui vont tre dcrites ici. En effet, il n'est pas rare, voire il est mme courant, d'avoir recompiler une application lorsqu'on travaille avec Linux. Cela n'est pas tonnant, quand on sait que toute bonne installation passe par la recompilation du noyau de Linux ! La raison de cet tat de fait provient sans nul doute du fait que la licence GNU impose de fournir les fichiers sources aux utilisateurs d'une part, et que le langage C et Unix sont historiquement fortement lis. Nous allons commencer par donner la dfinition des notions de base et les tapes intervenant dans le processus de gnration des fichiers binaires des programmes. Nous verrons ensuite comment installer (et compiler !) la suite de compilateurs GCC du projet GNU, et nous prsenterons les tapes intervenant dans la compilation et l'installation d'un nouveau noyau. Ces informations pourront tre utiles pour la lecture du chapitre traitant de la configuration du matriel puisque, bien souvent, la prise en charge d'un priphrique ncessite la compilation de ses pilotes au niveau du noyau. 7.1. Notions de base 7.1.1. Dfinition des termes Le langage naturel est le langage que les tres humains utilisent pour communiquer, soit oralement, soit par crit. Le langage naturel est trs riche : il utilise des constructions grammaticales et syntaxiques complexes, et il dispose d'un vocabulaire trs tendu. Il permet donc d'exprimer la plupart des ides humaines, et c'est bien sa fonction. En revanche, il n'est pas rigoureux, dans le sens o il laisse la porte ouverte un grand nombre d'ambiguts. Ce qui n'est pas dit est souvent sous-entendu, et c'est donc pratiquement entre les mots que se trouve le sens du discours. Il n'est 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 l'on 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 d'un vocabulaire trs limit. La caractristique principale des langages formels est qu'ils 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 dfinissant une association entre les constructions d'un langage formel et un jeu de concepts limit, il est possible de donner une smantique un langage formel. Cette smantique donne la possibilit de qualifier de vraie ou de fausse les assertions crites dans le langage formel (on notera qu'une expression peut tre valide du point de vue de la syntaxe mais smantiquement fausse). Un langage formel permet donc d'exprimer avec prcision, sans aucune ambigut possible, une ide base sur les concepts qu'il utilise. Les notations mathmatiques constituent un langage formel par excellence. Note : Par exemple, l'expression mathmatique x=1 est toujours valide, c'est une simple quation. En revanche, elle n'est pas toujours vraie, cela dpend de la valeur de x. En particulier, si x reprsente 3, on a 3 = 1 , ce qui est valide, mais faux. Notez bien la diffrence. Un langage de programmation est un langage formel qui permet de dfinir les tches qu'un 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 qu'un programme ne fait que ce qui a t crit : ni plus, ni moins. Il faut donc tout dire DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 233
l'ordinateur quand on crit un programme, ce qui en gnral est relativement fatigant et compliqu. C'est le prix payer pour la rigueur de l'informatique : l'ordinateur ne se trompe jamais, parce qu'il ne fait qu'obir aux ordres donns dans un langage formel (donc prcis). Celui qui se trompe, c'est en gnral le programmeur, et assez couramment l'utilisateur. Note : Notez qu'un programme est un texte valide s'il vrifie la grammaire du langage formel dans lequel il est crit. Cela ne l'empchera pas de faire n'importe quoi si on l'excute. Un programme vrai est donc un programme syntaxiquement correctement crit et qui en plus fait ce que l'on dsire qu'il fasse. Il n'y en a pas beaucoup... surtout que dans bien des cas, on ne s'est jamais pos clairement la question de savoir ce que doivent faire les programmes que l'on crit ! Le C est un langage de programmation relativement simple, qui se trouve sur tous les types d'ordinateurs et de systmes d'exploitation. Les programmes sont plus difficiles crire en C que dans d'autres langages de programmation, mais ils sont plus performants. Le C est trs utilis pour crire les systmes d'exploitation : le noyau Linux lui-mme est crit en C. Le C++ est un langage plus volu, qui est driv du C. Il est beaucoup plus riche, et il permet d'crire 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 d'autres langages. Les programmes sont en gnral crits dans un certain nombre de fichiers. Ces fichiers sont appels les fichiers sources, du fait qu'ils sont l'origine du programme. Le texte de ces fichiers 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 n'est pas comprhensible tel quel par le matriel de l'ordinateur. Pour excuter un programme partir de son code source, il n'y a que deux solutions : disposer d'un autre programme, nomm interprteur, capable de lire le code source et d'effectuer les oprations dcrites dans le code source ; disposer d'un autre programme, nomm compilateur, capable de traduire le code source en langage binaire, qui sera alors directement excutable par l'ordinateur. Les programmes interprts sont fatalement relativement lents, puisque l'interprteur doit analyser en permanence les fichiers sources pour le traduire en opration excuter la vole.
Figure 7-1. Interprtation d'un programme DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 234
En revanche, les programmes compils sont beaucoup plus rapides l'excution, puisque la phase d'analyse du code source a t ralise au pralable et se fait en dehors de la phase d'excution. Ces programmes peuvent donc s'excuter nativement, sans tre ralenti par l'interprteur. Figure 7-2. Compilation et excution d'un programme
Note : Si vous avez bien suivi, on se trouve face au problme de l'uf 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 l'informatique, 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 d'erreurs que cela a pu gnrer, on comprend facilement pourquoi les compilateurs et les interprteurs font partie des tous premiers programmes qui ont t dvelopps... Dans les systmes Unix, les deux types de programmes existent. Les programmes interprts constituent ce que l'on appelle des scripts. Le systme utilise le shell pour les interprter. La plupart des oprations d'administration du systme utilisent des scripts, car il est toujours plus facile d'crire et de tester un script que d'crire 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 fin de compte effectuent le travail, et ils sont souvent appels partir de scripts. Nous avons dj vu des exemples de scripts lors de la configuration du systme. Pour l'instant, nous allons nous intresser au langage C et au processus de compilation. La compilation est l'opration qui consiste lire un fichier source et le traduire dans le langage binaire du processeur. Ce langage est absolument incomprhensible par les tres humains, cependant, DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 235
il existe un langage de programmation qui permet de coder directement le binaire : il s'agit de l'assembleur. En gnral, le processus de compilation gnre un fichier binaire pour chaque fichier source. Ces fichiers binaires sont nomms fichiers objets, et porte de ce fait l'extension .o (ou .obj dans les systmes Microsoft). Comme un programme peut tre constitu de plusieurs fichiers sources, il faut regrouper les fichiers objets pour gnrer le fichier excutable du programme, fichier que l'on appelle galement le fichier image en raison du fait que c'est le contenu de ce fichier qui sera charg en mmoire par le systme pour l'excuter et qu'il contient donc l'image sur disque des instructions des programmes en cours d'excution. L'opration de regroupement des fichiers objets pour constituer le fichier image s'appelle l'dition de liens, et elle est ralise par un programme nomm le linker (diteur de liens en franais). Ce programme regarde dans tous les fichiers objets les rfrences partielles aux autres fichiers objets et, pour chaque lien ainsi trouv, il complte les informations ncessaires pour en faire une rfrence complte. Par exemple, un fichier source peut trs bien utiliser une fonctionnalit d'un autre fichier source. Comme cette fonctionnalit n'est pas dfinie dans le fichier source courant, une rfrence partielle est cre dans le fichier objet lors de sa compilation, mais il faudra tout de mme la terminer en indiquant exactement comment accder la fonctionnalit externe. C'est le travail de l'diteur de liens, lorsqu'il regroupe les deux fichiers objets. Certains fichiers objets sont ncessaires pour tous les programmes. Ce sont notamment les fichiers objets dfinissant les fonctions de base, et les fonctions permettant d'accder au systme d'exploitation. Ces fichiers objets ont donc t regroups dans des bibliothques (galement couramment appeles librairies ), que l'on peut ainsi utiliser directement lors de la phase d'dition de liens. Les fichiers objets ncessaires sont alors lus dans la bibliothque et ajouts au programme en cours d'dition de liens. Les bibliothques portent souvent l'extension .a (ou .lib dans les systmes Microsoft). Figure 7-3. Processus de gnration d'un excutable
Malheureusement, la solution consistant stocker dans des bibliothques les fonctions les plus utilises souffre de la duplication du code contenu dans ces bibliothques dans tous les programmes, d'o une perte de place considrable. De plus, la mise jour d'une bibliothque ncessite de refaire l'dition de liens de tous les programmes qui l'utilisent, ce qui n'est pas ralisable en pratique. C'est pour cela que les bibliothques dynamiques ont t cres : une bibliothque dynamique n'est pas incluse dans les fichiers des excutables qui l'utilisent, mais reste dans un fichier spar. Les bibliothques sont regroupes dans un rpertoire bien dfini du systme de fichiers, ce qui permet de les partager entre diffrents programmes. Ainsi, la mise jour d'une bibliothque peut se faire sans avoir toucher tous les programmes qui l'utilisent. Le problme est cependant que l'dition de liens reste incomplte, parce que les rfrences aux objets des bibliothques dynamiques sont toujours externes. Il existe donc un programme spcial, l'diteur de liens dynamiques ( ld , pour Link Dynamically ), qui rsout les dernires rfrences incompltes lors du chargement de chaque programme. Les bibliothques dynamiques portent l'extension .so (pour Shared Object ), ou .dll dans les systmes Microsoft (pour Dynamic Link Library ). DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 236
videmment, le chargement des programmes est un peu plus lent avec les bibliothques dynamiques, puisqu'il faut raliser l'dition de liens dynamiques lors de leur lancement. Cependant, ce processus a t optimis, et les formats de fichiers binaires utiliss contiennent toutes les informations prcalcules pour faciliter la tche de l'diteur de liens dynamiques. Ainsi, la diffrence de performance est devenue peine dcelable. 7.1.2. Processus de gnration Classiquement, les fichiers sources C et C++ se divisent en deux grandes catgories : les fichiers d'en-tte, qui contiennent les dclarations des symboles du programme ; les fichiers C (ou C++), qui contiennent leurs dfinitions. Le fait de faire cette distinction entre la dclaration (qui consiste dire : telle chose existe ) et la dfinition (qui consiste dcrire la chose prcdemment dclare) permet de faire en sorte que l'on peut utiliser les fichiers objets sans avoir les fichiers sources. En effet, la dclaration permet de raliser les rfrences partielles dans les programmes, tandis que les fichiers objets contiennent bien entendu la dfinition binaire de ce qui a t dclar. Pour compiler un programme, on n'a donc rellement besoin que de trois types de fichiers : les fichiers de dclaration du systme et des bibliothques de base ; les fichiers des bibliothques de base eux-mmes ; les fichiers source (de dclaration et de dfinition) du programme compiler. En C et C++, les fichiers sources de dclaration portent l'extension .h (plus rarement .hpp pour les fichiers de dclaration C++), et les fichiers de dfinition portent l'extension .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 d'un programme peut ncessiter la cration d'un grand nombre de fichiers, tous plus ou moins dpendants les uns des autres. Pour pouvoir s'y retrouver plus facilement, les programmeurs utilisent un programme spcial : make. Ce programme est capable de raliser toutes les oprations ncessaires la cration des fichiers excutables d'un programme partir de ses fichiers sources. Pour cela, il utilise un fichier contenant la dfinition des oprations raliser, ainsi que la description des dpendances entre les diffrents fichiers sources. Ce fichier est appel le fichier makefile. Grce make, l'utilisateur de base que vous tes va pouvoir compiler la plupart des programmes sans avoir la moindre notion de programmation. En gnral, la compilation d'un programme passe par les tapes suivantes : rcupration des fichiers sources du programme ; configuration du programme pour l'environnement courant ; appel make pour la compilation ; appel make pour l'installation. La premire tape est lmentaire et va de soi. La deuxime tape se fait souvent en appelant un script dans le rpertoire d'installation des fichiers sources. Ce script se nomme souvent configure, et peut tre appel avec la ligne de commande suivante : ./configure
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 237
partir du rpertoire o se trouvent les fichiers sources. Ce script effectue tous les tests sur le systme et l'environnement de dveloppement, et gnre le fichier makefile. Le programme configure est en gnral fourni avec les logiciels GNU. Il permet de dterminer l'environnement logiciel et systme et de gnrer le fichier makefile et des fichiers d'en-ttes contenant la dfinition de quelques options du programme. Dans quelques cas particuliers, vous aurez utiliser des options de configure afin de prciser certains paramtres. L'option --host permet d'indiquer le type de la machine cible, dans le cas o configure ne parvient pas le dterminer automatiquement :
--host=machine
o machine est la description de votre machine. Pour les PC fonctionnant sous Linux, cette description est de la forme ix86-pc-linux-gnu , o le 'x' reprsente le numro de la gnration du processeur du PC. Par exemple, pour un Pentium ou un AMD K6, la description sera i586-pc-linux-gnu . L'option --enable-shared permet de gnrer des bibliothques dynamiques lors de la compilation. Cela procure un gain de place vident. Enfin, l'option --prefix permet de prciser le rpertoire de base dans lequel le programme sera install a priori. Cette option s'utilise de la manire suivante :
--prefix=rpertoire
o rpertoire est le rpertoire de base de l'installation. 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 prfixe convient, mais il est parfois ncessaire de le modifier. C'est en particulier le cas lorsque vous dsirez mettre jour un programme dj install et que votre distribution n'utilise pas le rpertoire par dfaut. Dans ce cas, il convient d'indiquer le rpertoire de base dans lequel ce programme a t install, afin de le remplacer au lieu de le dupliquer d'une part, et afin que les autres programmes puissent trouver la nouvelle version la place de l'ancienne d'autre part. La troisime tape est trs simple aussi. Il suffit de taper la commande suivante : Make
toujours dans le rpertoire o se trouvent les fichiers sources. Enfin, 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 fichier texte indiquant comment effectuer ces oprations dans le rpertoire des fichiers sources. Ce fichier porte souvent le nom de readme , install , 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 fichiers sources. Un dernier dtail cependant : la compilation est une opration trs gourmande en ressources. Cela signifie qu'elle peut consommer beaucoup de ressources processeur, de mmoire, de disque et de temps. Pour des gros programmes, il n'est pas rare de passer jusqu' une heure de compilation, mme sur une machine rcente. Notez galement que les facteurs limitants dans les compilations sont souvent la rapidit du processeur et du disque dur, ainsi que la quantit de mmoire vive disponible.
7.2. Compilation de GCC DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 238
La clef de vote du processus de compilation est bien entendu la suite de compilateurs GCC du projet GNU. Cette suite comprend un compilateur pour les languages C, C++, Objective C, Fortran, Java et Ada. La plupart des distributions fournissent ces outils sur leur CD d'installation, mais ne les installent pas par dfaut. Il est toutefois recommand d'installer au moins le compilateur C/C++ et les outils de dveloppement associs, ainsi que les fichiers d'en-tte des bibliothques de base du systme (bibliothque C, en-ttes de XWindow, des bibliothques utilitaires et des bibliothques de base des environnements graphiques Gnome et KDE). Le choix de la version de GCC utilise est extrmement important, car la stabilit et les performances du systme en dpendront directement. De plus, certains programmes exigeront une version spcifique du compilateur pour tre compils, soit parce qu'ils n'ont t tests qu'avec cette version par les dveloppeurs, soit parce qu'ils utilisent une fonctionnalit qui n'est disponible que dans les versions rcentes de GCC. Les versions de GCC les plus utilises sont actuellement les versions issues des branches 3.4 et 4.1. Il est dconseill d'utiliser les versions les plus rcentes (typiquement la version de la branche courante), car elles peuvent souffrir de bogues de jeunesse et elles peuvent tre trop strictes pour compiler des programmes qui ne sont pas tout fait la norme (en particulier au niveau du langage C++, qui peut avoir des constructions d'usage courant et nanmoins extrmement compliques). Ce document suppose que votre distribution utilise la version 4.1.2 de GCC, qui offre les avantages suivnats : elle permet de compiler de programmes pour les processeurs les plus rcents, tels que les IA- 64 d'Intel, les x86-64 d'AMD et les PowerPC d'IBM ; elle permet d'utiliser les instructions spcifiques des processeurs les plus rcents, mme d'architecture x86 ; elle gnre un code bien plus optimis que les versions prcdentes ; elle permet de rduire la visibilit des fonctions, variables et types non publiques des bibliothques, et donc de rduire l'empreinte des binaires aussi bien en mmoire que sur disque et de rduire le temps de chargement des programmes rcents ; la bibliothque standard C++ fournie avec cette version respecte nettement mieux la norme C++ que les versions antrieures, et elle permet d'utiliser les caractres Unicode dans les programmes C++. On prendra garde au fait que certaines distributions utilisent rgulirement des versions non stabilises des programmes de base tels que GCC, la bibliothque C ou le noyau. C'est en particulier le cas de la Redhat et de toutes ses drives, telle la Mandrake par exemple. Tout cela est fort dommageable, car les paquetages binaires de ces distributions sont systmatiquement incompatibles avec ceux des autres d'une part, et il est quasiment impossible d'envisager une compilation correcte d'un programme avec ces distributions d'autre part. En pratique, les possesseurs de distributions Redhat et drives s'abstiendront donc de faire une mise jour manuelle de GCC, de la bibliothque C ou mme du noyau, car les programmes installs sur leur machine risqueraient de ne plus fonctionner. Les utilisateurs de ces distributions devraient faire une mise jour complte de leur distribution dans ce cas. Note : En ce qui concerne les numros de version, il faut savoir que le dernier chiffre caractrise souvent le numro de correctif. Plus ce chiffre est lev, moins le programme a de chances de comporter de bogues. En pratique, on vitera gnralement d'installer systmatiquement les dernires versions des logiciels lorsque ces versions sont les premires d'une nouvelle srie. Ainsi, un programme de version x.y.0 est certainement peu fiable. Il faudra attendre au moins la version x.y.1 ou mieux la x.y.2, pour pouvoir l'utiliser sereinement. Sachez galement que le numro intermdiaire sert, pour certains logiciels, indiquer les versions de dveloppement. C'est par exemple le cas du noyau Linux, pour lequel les numros de version impairs correspondent aux versions de dveloppement et les numros pairs aux versions stables. Ce n'est pas le cas pour la bibliothque C ou GCC. De plus, certains logiciels utilisent un schma de version quatre chiffres, le dernier chiffre correspondant DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 239
gnralement aux correctifs mineurs n'entranant thoriquement aucune rgression. C'est galement le cas du noyau Linux depuis la version 2.6.8. Ainsi, dans un numro de version x.y.z.t, x reprsente gnralement la version majeure du logiciel (et n'est change qu'en cas d'incompatibilit majeure ou de refonte complte), y est le numro de la branche (une convention permettant de distinguer les branches de dveloppement des branches stables y est parfois applique), z est le numro de version dans la branche, et t le numro du patch regroupant les corrections de scurit ou de petite taille. 7.2.1. Prrequis moins que vous ne russissiez mettre la main sur une version de GCC dj compile pour Linux, vous ne disposerez que des sources. Les sources de GCC peuvent tre rcupres sur Internet sur le site de GCC. Ces sources sont fournies sous la forme d'une archive au format tar-gzip. Le nom de cette archive est gcc-3.4.4.tar.gz . Un autre prrequis est bien entendu que vous disposiez galement d'un compilateur C sur votre systme. Ce compilateur peut trs bien tre une ancienne version de GCC, mais il est impratif de disposer d'un 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 l'un des rpertoires de la variable d'environnement PATH, ou que la variable CC ait t dfinie avec le chemin absolu du compilateur. 7.2.2. Installation des sources Lorsque vous aurez install le compilateur C natif de votre systme, vous devrez dcompresser les sources de GCC. Cela doit se faire avec la commande suivante : tar xvfz archive
o archive est le nom de l'archive compresse contenant ces sources. Dans notre cas, ce doit tre gcc- 4.1.2.tar.gz. Cette commande a pour consquence de crer l'arborescence 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. 7.2.3. Configuration L'tape suivante est d'aller dans le rpertoire de compilation et de lancer le programme de configuration de GCC dans ce rpertoire. Cela peut tre ralis avec les commandes suivantes : cd objdir srcdir/configure [options] Comme on l'a vu ci-dessus, le programme de configuration configure peut recevoir des options en ligne de commande. Il est recommand de fournir l'option --enable-__cxa_atexit, qui permet de rendre GCC compatible avec la version 3 de la norme inter-vendeurs spcifiant le format des interfaces binaires pour les compilateurs C++, et donc de garantir la compatibilit binaire ascendante avec les versions futures de GCC. Cela vous permettra d'viter d'avoir recompiler toutes les bibliothques C++ lors des mises jours ultrieures de GCC. Il est galement recommand d'utiliser l'option --enable-long-long, qui ajoute le support du type de donnes long long, qui permet DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 240
de manipuler des donnes 64 bits sur les machines 32 bits comme les PC, ainsi que l'option -- enable-threads, qui permet d'ajouter le support des threads aux langages. Normalement, le programme de configuration 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 spcifier la machine hte l'aide de l'option --host. La ligne de commande pour la configuration sera alors la suivante : srcdir/configure --enable-__cxa_atexit \ --enable-long-long --enable-threads --host=configuration
o configuration est un triplet de la forme i686-pc-linux-gnu. Le nombre de compilateurs fournis avec la suite de compilateurs GCC est impressionnant. Cependant, seuls les compilateurs C et C++ sont rellement essentiels. Aussi est-il possible de ne prendre en charge que certains langages l'aide de l'option --enable-languages. Cette option doit tre suivie des noms des langages pour lesquels le compilateur doit tre cr, spars par des virgules. Ainsi, on peut n'installer que les compilateurs C/C++ et Java en ajoutant l'option suivante la ligne de commande : --enable-languages=c,c++,java Enfin, 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 d'installation de GCC. Normalement, GCC s'installe dans le rpertoire /usr/local/ ce qui fait qu'il ne remplace pas la version de votre distribution. Vous devez donc spcifier les rpertoires de base pour l'installation. Pour cela, il suffit d'ajouter les options suivantes : --prefix=/usr
la ligne de commande de configure. 7.2.4. Compilation La compilation de GCC peut ensuite tre ralise. Autant vous prvenir tout de suite : c'est une opration trs longue, qui de plus demande beaucoup d'espace disque. Il faut au moins prvoir 800 Mo d'espace disque, et presque trois heures sur une machine 500 Mhz. Cela est d au nombre de langages supports par les versions rcentes de GCC, la technique employe lors de sa compilation. La plupart des compilateurs C ne sont en effet pas capables de compiler GCC avec toutes ses fonctionnalits, aussi la compilation se droule-t-elle en trois tapes : une version allge de GCC est compile avec le compilateur natif du systme dans une premire passe ; cette version est utilise pour compiler la version complte de GCC ; la version complte est utilise pour se recompiler, afin de tester les diffrences entre les deux versions compltes. Ainsi, GCC se compile lui-mme ! Ces trois oprations peuvent tre excutes l'aide d'une seule commande : make bootstrap
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 241
Cette commande doit tre excute partir du rpertoire de compilation objdir. 7.2.5. Installation de GCC Lorsque la compilation s'est termine, vous pouvez installer GCC. Il est recommand de supprimer le compilateur que vous avec utilis pour compiler GCC, sauf si, bien entendu, il s'agissait dj de GCC. En effet, il n'est pas ncessaire de le conserver, puisque vous utiliserez dsormais GCC. L'installation de GCC est, encore une fois, trs simple : make install
Cette commande installe GCC ainsi que la bibliothque standard C++. 7.3. Compilation du noyau Linux La compilation du noyau est une spcificit des systmes libres, qui n'est possible que parce que l'on dispose des sources du noyau. Cependant, mme pour certains Unix commerciaux, il est possible d'effectuer une dition de liens, les modules du noyau tant fournis sous la forme de fichiers objets. La compilation ou l'dition de liens du noyau est une opration technique qui peut surprendre un habitu des systmes ferms que sont par exemple Windows ou OS/2. Cependant, elle permet d'obtenir 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 d'effectuer cette compilation : pourquoi conserver un monstre capable de grer des priphriques qui ne sont pas et ne seront jamais installs sur votre systme ? La compilation du noyau de Linux ncessite de disposer des sources du noyau fourni par votre distribution. En effet, la plupart des distributions modifient ces sources pour y ajouter des fonctionnalits ou des correctifs de scurit, ce qui permet de ne pas prendre le risque d'utiliser la dernire version officielle du noyau, qui peut ne pas tre considre comme stable car trop rcente. Parfois mme, ce sont des fonctionnalits non encore incluse dans le noyau officiel qui sont utilise par les distributions, ce qui rend l'utilisation du noyau gnrique impossible. Rien ne vous empche d'utiliser pour autant la dernire version officielle du noyau, mais vous vous exposerez au risque d'avoir un systme non fonctionnel, ou au moins diagnostiquer des problmes encore inconnus ou d'avoir mettre jour d'autres composants de votre distribution manuellement en raison des volutions que ce noyau peut avoir subi. Le noyau utilise des constructions spcifiques gcc et ne peut donc tre compil de manire fiable que par ce compilateur (mme si d'autres compilateurs compatibles avec GCC sont utilisables moyennant quelques efforts). Note : La documentation du noyau indique que la version de gcc utiliser pour le compiler est la version 3.2. La raison en est que les dveloppeurs du noyau eux-mmes changent rarement de compilateur, afin de ne pas avoir se proccuper d'ventuels bogues de celui-ci et ainsi de pouvoir se concentrer sur leur travail. La version 3.2 n'ayant pas de bogues majeurs, elle a t retenue, et les dveloppeurs principaux sont supposs utiliser cette version. Ainsi, le noyau est thoriquement test avec cette version, c'est la raison pour laquelle elle est recommande. Toutefois, les versions plus rcentes de GCC sont galement tout fait valables de manire gnrale, et parfois mme elles sont ncessaires pour les architectures les plus rcentes. Ainsi, les architectures 64 bits requirent au minimum GCC 3.4... Quoi qu'il en soit, il n'y a gnralement aucun problme compiler le noyau avec les versions rcentes de GCC, et en pratique on pourra utiliser la version installe dans le systme sans inquitude. La compilation du noyau n'est pas trs difficile. Elle ncessite cependant de rpondre correctement aux questions de configuration. Les erreurs peuvent tre multiples, et souvent fatales. Il est donc fortement conseill de disposer d'une disquette de dmarrage afin de rparer le systme en cas d'erreur. Par DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 242
ailleurs, il faut toujours conserver le dernier noyau utilisable en sauvegarde dans le rpertoire /boot/. Il faut galement ajouter une entre spcifiant ce noyau dans le programme de dmarrage (lilo), afin de pouvoir slectionner l'ancien noyau en cas d'erreur. Ces oprations seront dcrites en dtail plus loin. La compilation du noyau se passe en quatre tapes : installation des fichiers sources ; rponse aux questions de configuration ; compilation et installation du noyau ; compilation et installation des modules. 7.3.1. Installation des sources de Linux Les sources du noyau sont normalement fournies par votre distribution. Vous pouvez toutefois trouver les sources gnriques du noyau officiel sur le site kernel.org. Il est possible de rcuprer les sources compltes, sous la forme d'une archive compresse d'environ 43 Mo. Toutefois, si l'on dispose dj d'une version complte des fichiers sources, il est envisageable de ne tlcharger que les fichiers diffrentiels de cette version la version courante (ce que l'on appelle classiquement des patches ). Note : Les utilisateurs des distributions Redhat drives (telle que la Mandrake par exemple) doivent imprativement utiliser les sources fournies par leur distribution. En effet, les noyaux de ces distributions sont patchs mort pour utiliser des fonctionnalits non stabilises de la version de dveloppement du noyau de Linux, et sans lesquelles la plupart des programmes et la bibliothque C elle-mme ne fonctionneraient plus. Je dconseille aux utilisateurs de ces distributions de se lancer dans l'aventure d'une quelconque compilation d'un des composants systme. Il est recommand d'installer les sources du noyau dans un autre rpertoire que celui o se trouvent les fichiers sources de votre distribution, car ceux-ci contiennent les fichiers d'en-tte C qui ont t utiliss pour gnrer la bibliothque C du systme et sont donc ncessaires la compilation des programmes. Le remplacement des fichiers sources du noyau imposerait donc, en toute rigueur, de recompiler la bibliothque C du systme. Cette opration est extrmement technique, risque et longue, de plus, les fichiers d'en-tte du noyau voluent souvent et provoquent des incompatibili avec les programmes qui les utilisent. Les plus motivs trouveront toutefois en annexe la manire de procder pour recompiler la bibliothque C. Gnralement, les fichiers sources de Linux sont installs dans le rpertoire /usr/src/linux/. Certaines distributions font une copie des fichiers d'en-tte du noyau qui ont servi pour la gnration de la bibliothque C dans les rpertoires /usr/include/linux/, /usr/include/asm/ /usr/include/asm-generic. Si ce n'est pas le cas, il faudra viter d'craser le contenu du rpertoire /usr/src/linux/ lors de l'installation des sources du nouveau noyau. Une solution est par exemple d'installer les fichiers du noyau dans le rpertoire /usr/src/linux<version>/ et de ne pas toucher au rpertoire des sources originels /usr/src/linux/. Les commandes suivantes permettront d'extraire les sources dans le rpertoire ddi aux sources de Linux : cd /usr/src tar xvfz linux-2.6.13.2.tar.gz Si l'on dispose dj d'une version complte des fichiers sources, et que l'on dsire appliquer un patch, il faut dcompresser le fichier de patch avec la commande suivante : gunzip fichier.gz
o fichier.gz reprsente le fichier de patch compress (en supposant qu'il ait t compress l'aide de gzip). L'application du patch se fait de la manire suivante : DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 243
patch -p1 < fichier Cette commande doit tre lance partir du rpertoire des sources du noyau (par exemple /usr/src/linux-2.6.13.2/). Dans cette ligne de commande, fichier reprsente le nom du fichier de patch prcdemment dcompress, et l'option -p1 indique au programme patch d'utiliser les noms de rpertoires relatifs au rpertoire parent ( savoir le rpertoire contenant le rpertoire des sources du noyau, donc /usr/src/ dans notre cas). Si le patch doit tre appliqu depuis un autre rpertoire, il faudra ventuellement modifier l'option -px passe en paramtre au programme patch, o x est le nombre de niveaux de rpertoires ignorer pour l'application du patch. Consultez la page de manuel patch pour plus de dtails sur cette option. 7.3.2. Choix des options de configuration du noyau La configuration du noyau peut se faire l'ancienne avec la commande suivante : make config Cette commande pose une srie de questions auxquelles il faut pouvoir rpondre correctement du premier coup. On n'a pas le droit l'erreur ici, faute de quoi il faut tout reprendre zro. Il est nettement prfrable d'utiliser la version texte, qui fournit les options de configuration sous la forme de menus. Cela peut tre ralis avec la commande suivante : make menuconfig Certains prfreront l'une des versions X11 du programme de configuration, que l'on peut obtenir avec les commandes make xconfig ou make gconfig
Sachez cependant que certaines options ne sont toutefois pas correctement proposes dans ce mode, et que la version textuelle du programme de configuration reste recommande. Quelle que soit la mthode utilise, il faut rpondre par 'Y' (pour Yes ), 'N' (pour No ) ou 'M' (pour Module ) lorsque c'est possible. 'Y' et 'M' incluent la fonctionnalit courante dans le noyau, 'N' la supprime. 'M' permet d'utiliser la fonctionnalit en tant que module du noyau. En gnral, l'utilisation des modules permet d'allger 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 fichiers par exemple, ne doivent en aucun cas tre places dans des modules, car le systme ne pourrait alors pas dmarrer. Le choix des options de configuration est rellement trs large, car celles-ci couvrent un ensemble de fonctionnalits trs large. La description exhaustive de ces options est la fois fastidieuse et inutile, car vous n'utiliserez pas tous les gestionnaires de priphriques et toutes les fonctionnalits de Linux avec un mme ordinateur. Il s'agit donc de rpondre aux questions appropries pour votre configuration, mais de le faire avec rigueur : la moindre erreur de configuration peut empcher votre systme de fonctionner correctement, voire l'empcher de dmarrer tout simplement. Vous trouverez une description rapide des principales options de configuration dans l'Annexe A. Les options les plus utiles seront galement dcrites lorsque cela sera ncessaire dans le chapitre de configuration du matriel. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 244
7.3.3. Compilation et installation du noyau Une fois la configuration du noyau ralise, la compilation peut tre lance. Pour cela, il suffit de lancer la simple commande make dans le rpertoire /usr/src/linux. Une fois la compilation acheve, il faut installer le nouveau noyau. Cette opration ncessite beaucoup de prudence, car si le noyau nouvellement cr n'est pas bon, le systme ne redmarrera pas. C'est pour cela qu'il est conseill de conserver toujours deux versions du noyau, dont on est sr que l'une d'entre elle fonctionne parfaitement. En pratique, cela revient conserver la version originale du noyau install par votre distribution. Pour cela, il faut en faire une copie de sauvegarde. En gnral, le noyau est install dans le rpertoire /boot/ (ou dans le rpertoire racine pour les anciennes versions de Linux). Il porte souvent le nom de vmlinuz. Pour le sauvegarder, il suffit donc de taper par exemple la commande suivante : cp vmlinuz vmlinuz.old Il faut galement indiquer au gestionnaire d'amorage qu'il faut qu'il donne maintenant la possibilit de dmarrer l'ancienne version du noyau sous ce nouveau nom. Pour LILO, il suffit d'diter le fichier /etc/lilo.conf et d'y ajouter une nouvelle configuration. En pratique, cela revient dupliquer la configuration du noyau actuel et changer simplement le nom du noyau charger (paramtre image de la configuration dans /etc/lilo.conf) et le nom de la configuration (paramtre label ). Vous devrez aussi rajouter l'option prompt si elle n'y est pas dj, afin que LILO vous demande la configuration lancer chaque dmarrage. Dans notre exemple, le nom du noyau utiliser pour la configuration de sauvegarde sera vmlinuz.old. De mme, si la configuration initiale de Linux porte le nom linux , vous pouvez utiliser le nom oldlinux pour la configuration de sauvegarde. Une fois le fichier lilo.conf mis jour, il faut vrifier que l'on peut bien charger l'ancien systme. Pour cela, il faut rinstaller LILO et redmarrer la machine. La rinstallation de LILO se fait exactement de la mme manire que son installation, simplement en l'invoquant en ligne de commande : lilo Si LILO signale une erreur, vous devez corriger immdiatement votre fichier lilo.conf et le rinstaller. Pour le GRUB, la dfinition d'une nouvelle configuration se fait galement en dupliquant la configuration initiale et en changeant le nom de l'option de menu du GRUB et le chemin sur le fichier du noyau sauvegard. Veillez galement bien ajouter une option imeou pour avoir la moindre chance de slectionner la configuration lancer. Tout cela doit tre effectu dans le fichier de configuration /boot/grub/menu.lst. Contrairement LILO, il n'est pas ncessaire de rinstaller le GRUB pour que les modifications de ce fichier soient prises en compte au dmarrage suivant. Vous pourrez alors redmarrer la machine avec la commande suivante : reboot Le gestionnaire d'amorage utilis vous propose alors de choisir le systme d'exploitation lancer. Il faut ici slectionner la configuration de sauvegarde pour vrifier qu'elle est accessible et fonctionne bien. Le systme doit alors dmarrer en utilisant la copie sauvegarde du noyau. Si cela ne fonctionne pas, on peut toujours utiliser le noyau actuel en slectionnant le noyau initial et en corrigeant la configuration du gestionnaire d'amorage. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 245
Lorsque vous vous serez assur que le systme peut dmarrer avec la sauvegarde du noyau, vous pourrez installer le nouveau noyau. Son image a t cre par make dans le rpertoire /usr/src/linux/arch/i386/boot/, sous le nom bzImage. L'installation se fait donc simplement par une copie dans /boot/ en crasant le noyau actuel vmlinuz : cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz Il faut galement copier le fichier System.map du rpertoire /usr/src/linux/ dans le rpertoire /boot/ : cp System.map /boot Ce fichier contient la liste de tous les symboles du nouveau noyau, il est utilis par quelques utilitaires systmes. Si vous utiliser LILO, il vous faudra le rinstaller nouveau pour qu'il prennent en compte le nouveau noyau. Cela se fait avec la mme commande que celle utilise prcdemment : Lilo
Cette opration n'est en revanche pas ncessaire avec le GRUB. Encore une fois, il faut redmarrer la machine avec la commande suivante : Reboot
et vrifier que le nouveau noyau fonctionne bien. S'il ne se charge pas correctement, c'est que les options de configuration choisies ne sont pas correctes. Il faut donc utiliser le noyau sauvegard, vrifier ses choix et tout recommencer. Attention cependant, cette fois, il ne faut pas recommencer la sauvegarde du noyau puisque cette opration craserait le bon noyau avec un noyau dfectueux. Si le nouveau noyau dmarre correctement, il ne reste plus qu' installer les modules. 7.3.4. Compilation et installation des modules Si le systme a redmarr correctement, on peut installer les modules. Il n'est pas ncessaire de prendre les mmes prcautions pour les modules que pour le noyau. Il suffit donc ici de lancer la commande suivante dans le rpertoire /usr/src/linux/ : make modules_install Au pralable, il est recommand de dcharger tous les modules prsents en mmoire. Cela peut tre ralis l'aide de la commande modprobe et de son option -r. Les modules sont installs dans le rpertoire /lib/module/version/, o version est le numro de version du noyau courant. Il est possible que des modules d'autres versions du noyau existent dans leurs rpertoires respectifs. Si vous n'en avez plus besoin, vous pouvez les effacer. Attention cependant si vous avez install des modules additionnels non fournis avec le noyau dans ces rpertoires, vous pourriez encore en avoir besoin. Comme on l'a dj vu, les modules sont utiliss par le chargeur de module du noyau, grce la commande modprobe. Cette commande a besoin de connatre les dpendances entre les modules afin de les charger dans le bon ordre. Il faut donc imprativement mettre jour le fichier DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 246
/lib/modules/version/modules.dep chaque fois que l'on installe les modules, l'aide de la commande suivante : depmod -a Note : La commande depmod -a est excute automatiquement lors de l'installation des modules du noyau. Toutefois, elle devra tre excute manuellement si l'on installe des modules non fournis avec le noyau. Chapitre 8 : Configuration du matriel et des priphriques Table des matires
8.1. Gnralits sur le support matriel sous Linux 8.2. Configuration des priphriques de masse 8.3. Configuration des cartes filles 8.4. Configuration des ports de communication Ce chapitre prsente les concepts ncessaires l'installation de cartes filles additionnelles et la configuration des priphriques complmentaires sous Linux. La procdure d'installation des disques durs, graveurs, cartes son, cartes graphiques, cartes vido et cartes rseau sera donc dcrite, ainsi que la manire de les configurer pour obtenir un fonctionnement correct sous Linux. 8.1. Gnralits sur le support matriel sous Linux Comme il l'a dj t expliqu dans les chapitres prcdents, Linux gre la plupart des priphriques comme des fichiers spciaux. De plus, la plupart des gestionnaires de priphriques peuvent tre chargs dynamiquement, sous la forme de modules du noyau. Cette section prsentera donc les notions de base concernant les modules du noyau, les fichiers spciaux de priphriques, ainsi que leurs rles respectifs dans la configuration d'un nouveau matriel. La syntaxe utilise pour fournir des options au noyau lors de son amorage et les mcanismes de dtection du matriel et de chargement automatique des gestionnaires de priphriques seront galement prsents. 8.1.1. Modules du noyau Les modules du noyau sont des bibliothques que l'on peut charger dans le noyau lorsque celui-ci a besoin d'une 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 configures pour tre utilises sous la forme de modules. Dans le cas des pilotes de priphriques, les modules permettent de raliser un noyau gnrique et de prendre en charge dynamiquement les diffrents priphriques de l'ordinateur. Certains pilotes ne fonctionnent d'ailleurs que sous la forme de modules, aussi faut-il savoir les manipuler. Les modules sont galement fortement utiliss pour la configuration automatique des priphriques connectables chaud. 8.1.1.1. Chargement et dchargement des modules Les modules peuvent tre chargs manuellement l'aide 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 simples : DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 247
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 l'ordre des dpendances des modules. De cette manire, chaque module peut tre charg sans problmes, car toutes les fonctionnalits qu'il utilise sont dj prsentes dans le noyau lors de son chargement. La commande modprobe va chercher les informations de dpendances dans le fichier modules.dep, situ dans le rpertoire /lib/module/version/. Ce fichier utilise une syntaxe trs simple, et spcifie pour chaque module les modules dont il dpend. Bien qu'il puisse parfaitement tre crit la main, cela ncessiterait d'avoir une connaissance approfondie des modules du noyau. C'est donc pour cela que l'outil depmod a t crit. Cet outil permet de gnrer le fichier modules.dep automatiquement, pourvu qu'on l'appelle avec l'option -a en ligne de commande : depmod a
Il faudra donc appeler cette commande aprs chaque installation ou suppression de modules dans le systme. La liste de modules qui ont t chargs peut tre obtenue aisment avec la commande lsmod : lsmod Enfin, la commande rmmod permet de dcharger un module, avec la ligne de commande suivante : rmmod module
On prfrera cependant l'utilisation de la commande modprobe avec l'option -r pour dcharger les modules, car cette commande est capable de dcharger rcursivement les modules dont dpendait le module dcharger lorsqu'ils ne sont eux-mme plus utiliss. La syntaxe est alors la suivante :
modprobe -r module Note : En ralit, il n'est gnralement pas ncessaire de charger les modules du noyau manuellement pour les pilotes de priphriques. En effet, comme nous allons le voir dans les sections suivantes, Linux dispose de mcanismes permettant de raliser le chargement des modules de pilotes de priphriques automatiquement, lorsque ces pilotes sont dtects. Toutefois, il est possible que certains priphriques ne soient pas pris en charge par ces mcanismes (notamment les vieux priphriques ISA non Plug and Play). 8.1.1.2. Options des modules La plupart des modules peuvent prendre un certain nombre d'options lors de leur chargement. Ces options permettent de fixer certains paramtres, et dans le cas des pilotes de priphriques, de prciser la configuration matrielle utilise. Les options des modules peuvent tre spcifies en ligne de commande lors de l'appel de insmod ou de modprobe. Toutefois, il est possible d'enregistrer ces options de manire permanente l'aide du fichier de configuration /etc/modprobe.conf. Lors du chargement d'un module modprobe consulte en effet ce fichier et passe les paramtres indiqus au module charger. Afin de faciliter la maintenance du systme, modprobe consulte galement les fichiers de configuration situs dans le rpertoire /etc/modprobe.d/. Ainsi, les options spcifiques chaque module peuvent tre places dans un fichier de configuration ddi dans ce rpertoire. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 248
Le format de ces fichiers de configuration est assez simple, les options de chaque module se dfinissant sur une ligne commenantpar le mot cl options. Ce mot cl doit tre suivi du nom du module pour lequel ces options sont dfinies, lui-mme suivi des paramtres de chargement du module. La syntaxe est donc la suivante : options module paramtres
La liste des paramtres que l'on peut passer un module dpend bien videmment du module. Vous pouvez obtenir la liste des options supportes par un module l'aide de l'option -p de la commande modinfo :
modinfo -p module
Nous verrons par la suite des exemples de passage de paramtres pour les modules les plus courants. Les fichiers de configuration de modprobe permettent galement de dfinir la manire dont le chargement et le dchargement des modules doit tre fait. Pour cela, il permet de spcifier une ligne de commande complte pour ces oprations. Ces lignes de commandes sont introduites via les mots-clefs install et remove. La syntaxe de ces mots-cls est la suivante : install module commande remove module commande
o module est le nom du module charger ou dcharger, et commande est la ligne de commande de l'opration effectuer pour cela. Par exemple, si le port parallle est utilis pour accder un priphrique ncessitant une opration d'initialisation quelconque, celle-ci peut tre excute lors du chargement du module l'aide du mot cl install : install parport_pc modprobe parport_pc --ignore-install && initperiph
(En supposant que la commande initperiph permet d'initialiser le priphrique en question). videmment, ce type d'opration dpend du matriel connect sur le port parallle, mais le principe est l. Vous noterez que pour viter que la commande modprobe ne boucle sur elle-mme dans la commande indique par la directive install, l'option --ignore-install lui a t fournie. Dans le cas d'une directive remove, il faudrait utiliser l'option --ignore-remove. Dans la plupart des cas, la dfinition de ces commandes de chargement et de dchargement sont facultatives, car les modules utilisent gnralement un jeu de paramtres implicites qui permettent de les utiliser mme si le fichier de configuration modprobe.conf est absent. Vous pouvez visualiser ces options en renommant le fichier de configuration modprobe.conf et en tapant la commande suivante : modprobe c
Cette commande vous permettra galement de recrer un nouveau fichier de configuration si d'aventure vous perdiez celui fourni avec votre distribution. 8.1.1.3. Options des priphriques intgrs au noyau La plupart des fonctionnalits disponibles sous la forme de modules peuvent galement tre intgres directement dans le noyau, lors de la compilation de celui-ci. Il est vident qu'il n'est alors pas possible d'utiliser les fichiers de configuration de modprobe pour fixer les valeurs des diffrentes options que DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 249
ces fonctionnalits peuvent utiliser. En effet, ces paramtres doivent dans ce cas tre dfinis ds le dmarrage du systme, et il est ncessaire de les fournir ds le chargement du noyau en mmoire. Cela se fait, comme nous l'avons vu dans la Section 3.4.7, en fournissant au noyau les paramtres en question sur sa ligne de commande. Nous avons dj vu comment la quantit de mmoire de l'ordinateur pouvait tre passe au noyau l'aide de l'option mem si elle n'tait pas dtecte correctement. Il est possible de spcifier de la mme manire de nombreuses autres options, en particulier pour activer ou dsactiver certains gestionnaires de priphriques ou pour leur indiquer les paramtres du matriel. Les options fournies au noyau sur sa ligne de commande par le gestionnaire d'amorage sont lues par le noyau ds son dmarrage, afin de fixer les paramtres qu'elles dcrivent jusqu'au redmarrage suivant. Pour certaines fonctionnalits, ces paramtres peuvent toutefois tre modifis dynamiquement aprs le dmarrage, via le systme de fichiers virtuel /proc/. Il existe un grand nombre d'options, et leur syntaxe varie en fonction du sous-systme qui les utilise. Le fichier de documentation kernel-parameters.txt du rpertoire Documentation/ des sources du noyau vous donnera la liste complte de ces options. Nous verrons quelques-unes de ces options spcifiquement dans la suite du chapitre, lorsque nous dcrirons les paramtres des gestionnaires de priphriques. En revanche, les options des modules intgrs au noyau suivent toujours la mme syntaxe. Cette syntaxe est la suivante : module.paramtre=valeur
o module est le nom du module du noyau qui implmente la fonctionnalit lorsqu'elle est utilise sous la forme de module, paramtre est le nom de l'option de ce module du noyau telle qu'elle est donne par la commande modinfo, et valeur est sa valeur. Ainsi, si vous voulez intgrer une fonctionnalit d'un module dans le noyau, il suffit simplement d'ajouter les paramtres complmentaires dans la ligne de commande de celui-ci en fonction des options dfinies dans les fichiers de configuration de modprobe. Nous verrons la manire de procder plus loin dans ce chapitre. Note : Intgrer un pilote de priphrique directement dans le noyau peut tre intressant si ce priphrique est inamovible et que l'on ne veut pas avoir prendre en charge les modules. Toutefois, ce n'est pas une bonne ide lorsqu'on installe ce priphrique et qu'on cherche le configurer, ou si l'on dsire se rserver la possibilit de faire une mise jour de ce priphrique sans redmarrer l'ordinateur. En effet, il est souvent ncessaire de redmarrer pour prendre en compte de nouveaux paramtres lorsque le pilote de priphrique est intgr au noyau, alors que lorsqu'il est sous la forme d'un module, un simple dchargement et rechargement suffit. Par contre, lorsque votre configuration sera finie, vous pourrez parfaitement vous passez des modules et supprimer les modules des pilotes de priphriques dont vous ne disposez pas. Vous gagnerez ainsi de la place disque et potentiellement plusieurs dizaines de secondes au dmarrage de votre ordinateur si votre distribution recherche les nouveaux priphriques chaque dmarrage. 8.1.2. Les fichiers spciaux de priphriques 8.1.2.1. Gnralits La notion de fichier spcial de priphrique simplifie normment l'utilisation du matriel par les programmes d'application, puisque la plupart des oprations sur un priphrique reviennent simplement raliser une criture ou une lecture. videmment, l'criture sur un fichier spcial de disque permet d'enregistrer les donnes sur ce disque, et la lecture permet de les rcuprer. Mais cela DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 250
ne s'arrte pas l ! Par exemple, la communication avec le modem se fait simplement en crivant et en lisant les donnes sur le fichier spcial du port srie sur lequel le modem est connect. De mme, jouer un fichier son revient simplement l'crire dans le fichier spcial qui gre la carte son. Il est mme possible d'accder la mmoire vido par l'intermdiaire d'un fichier spcial de priphrique... Bien entendu, certaines fonctionnalits avances des priphriques ne peuvent pas tre accdes simplement par une criture ou une lecture dans un fichier spcial. Le systme fournit donc aux applications d'autres moyens d'accder ces fonctionnalits, par l'intermdiaire d'appels systmes spcifiques (pour ceux qui sont intresss par la programmation systme, cet appel systme est ralis par la fonction ioctl, dont le nom provient de l'abrviation de l'anglais Input / Output ConTroL ). videmment, cette mthode n'est utilise que par les programmes qui connaissent bien le fonctionnement du gestionnaire des priphriques, car ils doivent spcifier une requte que seul ce gestionnaire comprend en gnral. Quoi qu'il en soit, les requtes de ce type utilisent elles aussi un descripteur de fichier spcial de priphrique, ce qui fait que tous les accs au matriel ont lieu par l'intermdiaire de ces fichiers. Il existe deux principaux types de fichiers spciaux de priphriques. Le premier type correspond aux priphriques de type bloc, dont les donnes ne peuvent tre lues que par blocs (c'est 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 fichier spcial de priphrique est caractris par deux codes permettant d'identifier le type et le modle du priphrique auquel il donne accs. Ces deux codes portent le nom de code majeur et de code mineur. C'est par l'intermdiaire de ces codes que le noyau est capable de retrouver le gestionnaire de priphriques utiliser pour satisfaire aux requtes des clients qui accdent un fichier spcial de priphrique. Il y a donc, en gnral, une association unique entre ces codes et les gestionnaires de priphriques. Les fichiers spciaux de priphriques sont tous stocks dans le rpertoire /dev/. Selon votre distribution, ce rpertoire peut tre gr de manire totalement dynamique en fonction du matriel effectivement install sur votre machine, ou tre prrempli statiquement avec les fichiers spciaux de la plupart des priphriques rencontrs sur le march (y compris donc pour des priphriques inexistants sur votre machine). Nous allons voir dans les sections suivantes comment ces fichiers sont crs et utiliss par le systme en relation avec les pilotes de priphriques. 8.1.2.2. Le systme de fichiers virtuel udev 8.1.2.2.1. Prsentation Depuis la version 2.6 du noyau, Linux dispose d'une fonctionnalit permettant aux applications de dtecter l'apparition et la suppression des priphriques, que ceux-ci soient dtects au dmarrage du systme ou qu'ils soient branchs chaud une fois l'ordinateur allum. Cette fonctionnalit est principalement utilise par le sous-systme udev (abrviation de Userspace /dev ). Comme son nom l'indique, udev a pour principale fonction de prendre en charge la gestion du rpertoire /dev/, mais en ralit il est capable de faire beaucoup mieux que cela. En particulier, udev peut raliser les oprations suivantes lorsque le noyau signale la prsence d'un nouveau priphrique : chargement du module du pilote de priphrique si ncessaire ; si le priphrique requiert un firmware, chargement de celui-ci ; DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 251
cration du fichier spcial de priphrique et de ses alias ncessaires l'utilisation du priphrique ; excution des oprations d'initialisation complmentaires ou lancement des applications utilitaires associes au priphrique ; notification de la prsence du priphrique l'ensemble des autres programmes qui s'intressent la gestion du matriel (par exemple le gestionnaire de bureau). udev peut galement effectuer les oprations ncessaires la suppression d'un priphrique, ce qui est utile pour les priphriques amovibles. Ainsi, la dtection, la configuration et la notification dynamique de la prsence des priphriques Plug and Play est totalement automatise. Note : Le noyau, et donc udev, ne sont en ralit capables de dtecter que les priphriques connects au bus IDE, USB, PCMCIA, FireWire ou PCI. En effet, ces bus utilisent des technologies suffisamment rcentes et permettent la dtection, la configuration automatique et l'identification prcise des priphriques. De ce fait, seuls les pilotes de priphriques de ce type peuvent tre chargs automatiquement par udev. Les pilotes des priphriques plus anciens (priphriques ISA par exemple) ne peuvent tre chargs automatiquement, car ces priphriques ne sont dtects que si leur pilote est dj charg dans le noyau. Aussi est-il ncessaire de prcharger ces pilotes au dmarrage de l'ordinateur, ou de les intgrer directement dans le noyau, pour qu'ils soient reconnus automatiquement par le systme. udev permet de rsoudre plusieurs problmes concernant les fichiers spciaux de priphriques. Le plus vident pour l'utilisateur est que seuls les fichiers spciaux des priphriques effectivement prsents et pris en charge par un gestionnaire de priphrique apparaissent dans le rpertoire /dev/. Le rpertoire /dev/ n'a donc plus contenir les fichiers spciaux de priphriques pour tous les priphriques pris en charge par Linux. Il en est d'autant rduit, ce qui permet de le placer dans un systme de fichiers virtuel (c'est--dire un systme de fichiers gr par le noyau en mmoire). La plupart des distributions bases sur udev utilisent cette technique afin d'acclrer la phase de chargement du systme et les accs aux fichiers spciaux de priphriques par les applications, et d'viter de consommer inutilement de l'espace disque pour stocker des fichiers spciaux qui sont de toutes manires recrs dynamiquement chaque dmarrage. Un autre avantage d'udev est que les codes majeurs et mineurs des fichiers spciaux de priphriques peuvent prsent tre attribus dynamiquement par le noyau lorsque les gestionnaires de priphriques s'initialisent. Cela a plusieurs consquences : il n'y a plus besoin d'avoir recours une autorit centrale pour obtenir les valeurs de codes mineurs et majeurs, ceux-ci pouvant tre dtermins dynamiquement par le noyau ; il n'y a plus de risque de conflit entre deux priphriques, le noyau s'assurant de l'unicit des codes utiliss ; la limitation du nombre de priphriques due au nombre limit de codes majeurs et mineurs n'existe plus (il suffit de consulter la liste du fichier /usr/src/linux/Documentation/devices.txt pour constater qu'il reste peu de codes libres pour les priphriques venir). Enfin, udev permet de simplifier considrablement la configuration et l'utilisation du systme. Par exemple, il est possible de fixer de manire permanente le nom des fichiers spciaux des priphriques amovibles, et les environnements utilisateurs graphiques peuvent ragir l'apparition et la suppression des priphriques afin de permettre leur utilisation par l'utilisateur. 8.1.2.2.2. Principe de fonctionnements de udev Le principe de fonctionnement de udev est le suivant. Lorsque le noyau dtecte un changement dans la configuration matrielle, il signale ce changement via un canal de communication NetLink aux DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 252
applications qui s'y intressent. udev utilise le dmon udevd pour couter sur ce canal de communication, et il met chacun de ces vnements dans une file pour les traiter dans leur ordre d'apparition. Les vnements envoys par le noyau contiennent toutes les informations relatives au priphrique pour lequel le noyau a gnr un vnement. Ces paramtres comprennent, entre autres, la nature de l'vnement (apparition ou disparition d'un priphrique inconnu sur un bus, demande de chargement de firmware, notification de chargement ou de dchargement d'un pilote de priphrique, etc.). udevd utilise ces informations, ainsi que les informations sur le priphrique fournies par le noyau au travers du systme de fichiers /sys/, pour effectuer les oprations de chargement des modules de pilotes de priphrique, de chargement des firmware, et de cration des fichiers spciaux de priphriques. Note : Le dmon udevd excute les commandes udev selon l'ordre indiqu par le noyau via un numro de squence. Cette srialisation est ncessaire parce que le noyau est capable de gnrer plusieurs vnements simultanment pour les priphriques complexes, et qu'il faut s'assurer que les pilotes de priphriques parents sont bien initialiss avant de charger les pilotes des sous- priphriques. Ce cas peut se produire par exemple pour les cartes d'extension ou pour les hubs USB. Les anciennes versions de udev n'coutaient pas directement les vnements gnrs par le noyau. Le mcanisme utilis tait lgrement plus complexe et passait par un programme utilitaire nomm hotplug. Le noyau appelait ce programme chaque fois qu'un vnement se produisait au niveau de la configuration matrielle. Ce programme dterminait les modules de pilotes de priphriques charger, effectuait le chargement de ces modules, et initialisait les priphriques avec leur firmware si ncessaire. Puis, il envoyait les vnements au dmon udevd pour que celui-ci mette jour le rpertoire /dev/. Ce mcanisme a t abandonn au profit d'une gestion totalement intgre dans udevd en raison des mauvaises performances dues l'excution de l'utilitaire hotplug pour chaque vnement matriel. Le comportement que udev doit adopter dpend bien videmment de chacun des priphriques, ou du moins de la classe du priphrique pour lequel l'vnement se produit. Ce comportement est donc paramtrable l'aide des fichiers de configuration situs dans le rpertoire /etc/udev/ et /etc/udev/rules.d/. Ce dernier rpertoire contient en particulier les rgles qui permettent de dfinir les fichiers spciaux de priphriques qui doivent tre crs, les alias permettant de les nommer de manire constante, et les permissions que l'on doit leur affecter. Le rpertoire /etc/udev/ ne contient gnralement que le fichier de configuration principal d'udev, savoir le fichier udev.conf. Ce fichier permet d'indiquer le rpertoire cible dans lequel les fichiers spciaux de priphrique seront crs (paramtre udev_root, dont la valeur doit obligatoirement tre /dev/), le rpertoire contenant les fichiers de dfinition des actions prises par udev en fonction des diffrents vnements (paramtre udev_rules, dont la valeur est normalement /etc/udev/rules.d/), et le niveau d'erreur partir duquel les traces d'udev seront enregistrs dans le journal du systme syslog (paramtre udev_log). L'essentiel de la configuration rside toutefois dans les fichiers du rpertoire /etc/udev/rules.d/. Ces fichiers expriment, sous la forme de rgles permettant de slectionner les diffrents vnements provenant du noyau en fonction des informations de cet vnement, les actions entreprendre. Ce mcanisme est suffisamment gnrique pour permettre d'identifier de manire unique les priphriques et de raliser les actions dont udev a la charge. Les rgles sont dcrites raison d'une ligne par rgle dans les fichiers de configuration. L'action identifie par chaque rgle n'est excute que si l'vnement gnr par le noyau correspond aux critres de slection de la rgle. Certains mots cls permettent d'obtenir les informations sur l'vnement produit par le noyau, et d'autres mots cls permettent de dcrire les actions effectuer lorsque les critres de slection de l'vnement sont satisfaits. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 253
Par exemple, le mot cl ACTION identifie la nature de l'vnement. Le mot cl KERNEL donne le nom que le noyau donne au priphrique qui a gnr l'vnement, et DEVPATH le chemin du priphrique dans le systme de fichiers virtuel /sys/. Inversement, le mot cl NAME permet de paramtrer l'action de cration du fichier spcial de priphrique en dfinissant le nom de ce fichier, et OWNER, GROUP et MODE permettent de dfinir respectivement l'utilisateur propritaire, le groupe, et les droits d'accs ce fichier. Ainsi, les simples rgles suivantes : KERNEL=="mem", NAME="%k", GROUP="kmem", MODE="0640" KERNEL=="kmem", NAME="%k", GROUP="kmem", MODE="0640"
permettent de crer les fichiers spciaux de priphriques /dev/mem et /dev/kmem (qui donnent respectivement accs la totalit de la mmoire physique de l'ordinateur et la mmoire du noyau). Bien entendu, ces fichiers spciaux ne doivent tre accessibles que par l'administrateur, mais il est galement autoris que les utilisateurs du groupe kmem puissent y accder en lecture. Note : Notez bien que dans les dfinitions de rgle, le signe '==' est utilis pour indiquer une contrainte d'galit, alors que le signe '=' est utilis pour raliser une affectation, et constitue donc une partie de l'action de la rgle. D'autres mots cls sont disponibles. Ainsi, SYMLINK permet de dfinir des liens symboliques supplmentaires (par exemple /dev/modem ou /dev/mouse) rfrenant les fichiers spciaux de priphriques rels. Le mot cl PROGRAM permet d'excuter un programme avant que le fichier spcial de priphrique ne soit cr (gnralement pour dterminer le nom du fichier crer, justement), et le mot cl RUN permet d'excuter une commande aprs que le fichier spcial de priphrique a t cr (gnralement pour configurer le priphrique ou signaler sa prsence l'utilisateur). Vous trouverez de plus amples renseignements sur toutes ces rgles dans la page de manuel de udev, ainsi que dans la documentation fournie avec udev pour la rdaction de rgles personalises. Les fichiers du rpertoire /etc/udev/rules.d/ doivent tous avoir l'extension .rules. De plus, ces fichiers sont interprts dans l'ordre lexicographique de leur nom. Ainsi, il est d'usage de prfixer le nom du fichier par un numro indiquant l'ordre de priorit des rgles de ce fichier par rapport aux autres. Par exemple, les rgles du fichier 50-udev.rules (fichier de dfinition des rgles principales de udev) sont toujours lues avant les rgles du fichier 90-hal.rules (fichier de dfinition des rgles permettant d'envoyer les vnements concernant le matriel au dmon d'abstraction du matriel hald), car 50 est plus petit que 90 dans l'ordre lexicographique. Comme vous pouvez le constater, les fichiers de configuration de udev permettent de paramtrer de manire trs souple et trs prcise les actions effectuer lorsqu'un priphrique apparat ou disparat. Nous verrons dans les sections suivantes comment les principales actions sont ralises. La contrepartie de ce systme est tout de mme une certaine complexit dans la dfinition des rgles des fichiers de configuration d'udev, mais vous n'aurez gnralement pas vous en proccuper, car les distributions fournissent des fichiers de configuration adapts la plupart des usages. 8.1.2.2.3. Identification et chargement des pilotes de priphrique Gnralement, les priphriques modernes disposent d'identifiants qui leur sont propres et qui peuvent tre rcuprs par des mcanismes standards des bus modernes. Ces identifiants sont gnralement au nombre de deux, le premier tant un code spcifique au fabricant du priphrique, et le deuxime tant un identifiant de ce priphrique. Par exemple, vous pouvez visualiser les diffrents priphriques connects au bus PCI de votre ordinateur avec la simple commande lspci -nn. La commande lsusb vous donnera des identifiants similaires pour les priphriques USB. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 254
udev peut dterminer, l'aide des identifiants du matriel, quels sont les pilotes de priphriques capables de grer ce matriel. En effet, les fichiers sources de chaque module de pilote de priphrique contiennent une liste des identifiants des priphriques qu'ils prennent en charge. Lors de l'installation du module, la commande depmod extrait ces informations et les place dans un des fichiers situs dans le rpertoire d'installation des modules du noyau ( savoir /lib/module/version/, o version est le numro de version du noyau). depmod cre un fichier pour chaque type de priphrique. Ces fichiers ont tous un nom de la forme : module.typemap
o type est le type de priphrique. Par exemple, le fichier module.usbmap contient, pour chaque priphrique USB pris en charge par les modules installs, une ligne indiquant le nom du module et l'ensemble des identifiants du priphrique USB en question. Ainsi, lorsque le noyau indique udev l'apparition d'un nouveau priphrique, celui-ci consulte les fichiers d'association des modules aux priphriques pour dterminer quel module est capable de grer ce priphrique. Ce module est charg si ncessaire, et le gestionnaire de priphrique peut s'initialiser. Figure 8-1. Chargement des modules de pilotes de priphrique
Note : La table des priphriques pris en charge par certains modules peut ne pas tre complte ou jour. C'est gnralement le cas pour les nouveaux priphriques vendus par un fabricant qui utilisent une nouvelle rvision d'une puce lectronique que des anciens priphriques supports par un pilote utilisaient dj. Ainsi, lorsqu'un priphrique n'est pas reconnu immdiatement par les pilotes existants, vous pouvez tenter une recherche sur Internet avec les identifiants de priphriques tels qu'ils sont donns par lspci ou lsusb et identifier le pilote ncessaire pour ce priphrique. S'il en existe un, vous pouvez essayer d'ajouter les identifiants de votre priphrique dans les sources du pilote, le recompiler et l'installer nouveau. Si ce pilote vous permet d'utiliser effectivement ce priphrique de manire stable, vous pouvez alors demander au mainteneur du pilote d'ajouter les identifiants du priphrique dans la liste des priphriques supports. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 255
8.1.2.2.4. Chargement des firmwares Certains priphriques ncessitent un firmware (c'est--dire un micro logiciel pour les priphriques volus) pour fonctionner correctement. Ce firmware peut tre stock de manire permanente dans le priphrique dans une mmoire non volatile, ou devoir tre recharg chaque initialisation du priphrique. Dans ce cas, cette opration de chargement doit tre faite par le pilote de priphrique. Grce udev, il est possible de faire en sorte que cette opration se fasse automatiquement. Lorsqu'un pilote dsire charger le firmware dans le priphrique, il appelle une fonction du noyau qui gnre un vnement udev. udev prend alors en charge les oprations et localise le firmware, puis le fournit au noyau. Le pilote de priphrique peut alors effectuer le chargement effectif du firmware dans le priphrique. Pour cela, udev copie le fichier de firmware demand par le pilote de priphrique dans un fichier ddi cet effet dans l'entre du priphrique du systme de fichiers virtuel /sys/. Bien entendu, le chemin permettant de trouver les informations du priphrique dans le systme de fichiers virtuel /sys/ est fourni aux scripts de configuration d'udev via le mot cl EVRATH. Figure 8-2. Chargement des firmwares
En gnral, les fichiers de firmware sont fournis avec les pilotes de priphriques ou sont disponibles sur le site Web indiqu dans leur documentation. Ils doivent tre installs dans le rpertoire /lib/firmware/. Il est galement ncessaire d''activer l'option Hotplug firmware loading support du sous-menu Generic Driver Options du menu Device Drivers pour que cette fonctionnalit soit disponible. 8.1.2.2.5. Cration des fichiers spciaux de priphriques chaque priphrique dtect par un pilote de priphrique, le noyau gnre un vnement destination d'udev. Ces vnements indiquent le nom du priphrique tel qu'il est connu par le gestionnaire de priphrique, ainsi que les informations sur le priphrique dans le systme de fichiers /sys/. udev utilise ces informations pour dterminer les rgles qui indiquent quels sont les fichiers spciaux de priphriques utiliser. Si aucune rgle ne correspond, udev cre le fichier spcial de priphrique avec le nom utilis par le pilote de priphrique pour l'identifier. Dans le cas contraire, c'est le nom fourni dans les fichiers de configuration qui est utilis. De mme, les fichiers sont crs par dfaut au nom de l'utilisateur root, et seul cet utilisateur dispose des droits de lecture et d'criture sur ces fichiers. Enfin, si des liens symboliques sont dfinis dans les rgles appliques, ceux-ci sont crs. Par exemple, il est classique d'avoir un lien symbolique cdrom pointant vers le priphrique de type bloc grant le lecteur de CD. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 256
Figure 8-3. Cration des fichiers spciaux de priphriques
Les rgles d'udev sont gnralement fournies par les distributions et permettent de crer les fichiers spciaux de priphriques de manire gnrique, ainsi que les liens symboliques standards. De mme, bien que les interfaces rseau ne soient pas accdes par l'intermdiaire de fichiers spciaux de priphriques, les rgles udev sont galement appliques afin de les renommer sous un nom spcifique. 8.1.2.2.6. Persistance des fichiers spciaux de priphriques L'un des princpaux avantages d'udev est de permettre un nommage fixe des diffrents priphriques. Par exemple, si vous disposez de deux imprimantes, chaque imprimante se verra affecter un fichier spcial de priphrique ddi. Toutefois, il est possible qu'une de ces imprimantes ne soit pas disponible, ou pas allume. Dans ce cas, un dcallage des fichiers spciaux de priphriques peut se produire, ce qui peut tre gnant si une configuration spcifique doit tre faite pour la deuxime imprimante. De mme, vous pouvez disposer de plusieurs disques amovibles ou clefs USB, et il peut tre utile que les fichiers spciaux de ces priphriques aient un nom constant. udev permet tout cela, en faisant en sorte que les rgles des fichiers de configuration slectionnent les priphriques sur une de leurs caractristiques principales (par exemple, le nom de modle du priphrique). Pour fixer les ides et donner un exemple, supposons que l'on ait deux clefs mmoire USB de modles diffrents et que l'on dsire affecter de manire permanente des fichiers de priphriques chacune d'elle. Il suffit pour cela simplement de trouver un paramtre unique dans les identifiants de ces priphriques afin de les distinguer. La manire la plus simple pour obtenir la liste des paramtres d'un priphrique est d'utiliser la commande udevinfo. Pour obtenir la liste des attributs utilisables dans les rgles de udev, il faut utiliser l'option --attribute-walk. Le priphrique dont les attributs doivent tre rcuprs peut tre spcifi soit grce au nom de son fichier spcial de priphrique utilis par le noyau (avec l'option --name), ou avec son chemin dans le systme de fichiers /sys/. Note : La commande udevmonitor peut vous permettre de dterminer le chemin du priphrique dans le systme de fichiers /sys/. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 257
Par exemple, la commande suivante permet d'obtenir les informations sur un disque amovible connect sur le port USB et apparaissant sous le nom /dev/sdb : udevinfo --name=/dev/sdb --attribute-walk
Supposons que cette commande donne le rsultat suivant :
Udevinfo starts with the device specified by the devpath and then walks up the chain of parent devices. It prints for every device found, all possible attributes in the udev rules key format. A rule to match, can be composed by the attributes of the device and the attributes from one single parent device.
... Comme on peut le voir, les informations du priphrique /dev/sdb sont d'abord affiches. Viennent ensuite les informations des priphriques parents, donc en particulier les informations sur le disque physique (ici, un Western Digital WD800VE-00HDT0), et ainsi de suite (seules les deux premiers blocs d'information ont t recopis dans cet exemple, les suivants identifiant l'adaptateur USB et les composants du bus USB eux-mmes). DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 258
Ainsi, les informations spcifiques au matriel connect que l'on doit utiliser pour dfinir un fichier spcial de priphrique unique sont donnes dans le deuxime groupe d'information (relative au disque physique). Il est donc possible de dfinir la rgle udev suivante pour crer un fichier spcial de priphrique /dev/hd_externe ddi ce disque : SUBSYSTEMS=="scsi", ATTRS{model}=="WD800VE-00HDT0", NAME="hd_externe"
Notez cependant que l'on ne peut pas, dans une mme rgle udev mlanger des critres de slection utilisant des informations des diffrents groupes d'informations renvoys par udevinfo, parce que chaque groupe identifie un priphrique logique et un seul dans le noyau. Une fois vos rgles dfinies, vous pouvez les tester avec la commande udevtest. Cette commande prend en paramtre le nom du priphrique de plus haut niveau renvoy par udevinfo. Dans notre exemple, il s'agit de /block/sdb : udevtest /sys/block/sdb
Cette commande affichera l'ensemble des oprations que udev effectuerait si ce priphrique tait connect. Attention toutefois, les informations affiches proviennent d'une simulation, et peuvent tre incorrectes si des rgles udev utilisent des commandes externes, puisque en simulation ces commandes ne sont pas excutes. En pratique, les distributions font en sorte que les rgles de nommage des priphriques soient crites ou mises jour dynamiquement lors de la premire dtection du priphrique. Elles s'appuient pour cela sur des programmes utilitaires, gnralement situs dans le rpertoire /lib/udev/. Par exemple, le script /lib/udev/cdrom-symlinks.sh a pour but de crer le fichier de configuration /etc/udev/rules.d/75- optical-devices.rules, qui contient les dfinitions des liens symboliques sur les lecteurs de disque optique (CDROM et graveurs de CD par exemple). Note : Les scripts de gnration de rgles peuvent ne pas nommer les priphriques comme vous le dsirez (par exemple, le fichier spcial /dev/cdrom peut rfrencer votre graveur de CD, alors que le fichier spcial /dev/cdwriter un simple lecteur de CD. Dans ce cas, vous pourrez modifier directement le fichier de configuration 75-optical-devices.rules pour remettre les choses dans l'ordre. Si vous vous trompez, supprimez simplement ce fichier, il sera recr automatiquement au prochain redmarrage d'udev. 8.1.2.2.7. Notification des applications utilisateurs udev est galement livr avec un fichier de configuration contenant une rgle permettant de notifier les applications de haut niveau des apparitions et disparition des priphriques. Le mcanisme utilis se base ici sur le sous-systme HAL ( Hardware Abstraction Layer Daemon ). Ce sous-systme a pour principal but de fournir une interface unifie pour que l'ensemble des applications de haut niveau (par exemple les gestionnaires de bureau KDE et Gnome) puisse obtenir des informations sur les priphriques et tre notifies de toutes modification de la configuration matrielle. Toutes ces oprations sont implmentes au niveau du dmon hald. Ce dmon reoit les informations concernant les priphriques directement de udev, grce la rgle mentionne ci-dessus. Grce ces informations, il maintient une base de donnes des priphriques prsents et de leurs principales caractristiques. De plus, hald fournit une interface de programmation standard pour toutes les applications utilisateurs. Cette interface se base sur un protocole de communication standard, le protocole D-BUS. Ce protocole DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 259
a t dvelopp de manire commune avec les deux principaux environnements de bureau de Linux, savoir KDE et Gnome. Ainsi, les applications de ces environnements sont capables de grer les modificiations intervenant sur le matriel. Par exemple, le fait de brancher une clef USB ou un disque externe permet de demander l'utilisateur s'il veut le monter ou non. Note : Le protocole de communication DBUS a t conu de manire gnrique est n'a pas pour vocation de n'tre utilis que par HAL. En ralit, c'est tout un systme de communication inter processus de haut niveau et d'utilisation simplifie (par rapport aux systmes de composants lourds tels que CORBA par exemple). DBUS permet les communications entre les applications utilisateurs d'un mme utilisateur, ainsi que les communications transverses entre les applications systme. En pratique, ces communications sont gres par un dmon, dont une instance est lance pour le systme, et potentiellement une instance supplmentaire est excute pour chaque utilisateur. Les mcanismes de DBUS et de HAL ne sont d'intrt que pour les programmeurs et ne seront donc pas dtaills plus dans ce document. 8.1.2.2.8. Initialisation du systme Pour terminer cette description des mcanismes d'udev, signalons que le dmon udevd ne peut videmment pas couter les vnements du noyau avant qu'il ne soit lanc. Par consquent, les priphriques dtects par le noyau avant le dmarrage du dmon udevd ne sont pas tre dtcts automatiquement. Ce problme est gr au niveau des scripts de dmarrage des distributions, en rejouant les vnements matriels des priphriques dj dtects par le noyau. Cela se fait en appelant la commande udevtrigger. Cette opration est totalement prise en charge par les distributions, et vous n'avez normalement pas utiliser cette commande. 8.1.2.3. Gestion statique des fichiers spciaux de priphriques La gestion des priphriques et du rpertoire /dev/ par udev est utilise par la plupart des distributions rcentes. Toutefois, les anciennes distributions sont encore susceptibles d'utiliser un rpertoire /dev/ compltement statique, c'est--dire rempli l'avance avec les fichiers spciaux des priphriques les plus courants. Normalement, votre distribution fournit un rpertoire /dev/ relativement complet. Vous n'avez donc pas toucher au rpertoire /dev/. Cependant, si vous devez crer un fichier spcial de priphrique vous-mme, par exemple pour un gestionnaire de priphrique exotique non pris en charge par votre distribution ou non reconnu par le systme, vous devrez utiliser la commande mknod. Sa syntaxe est relativement simple : mknod fichier type majeur mineur
o fichier est le nom du fichier spcial de priphrique crer, type est une lettre indiquant le type du fichier spcial ('c' pour les fichiers de type caractre et 'b' pour les fichiers de type bloc), et majeur et mineur sont les codes majeur et mineur du priphrique. Je vous invite consulter la page de manuel de la commande mknod pour plus d'informations. Note : La liste des codes majeurs et mineurs dj affects des priphriques est donne dans le fichier /usr/src/linux/Documentation/devices.txt. Comme vous pouvez le constater, l'utilisation d'un rpertoire /dev/ statique impose donc de disposer d'une autorit centrale rgissant l'affectation des codes majeurs et mineurs aux gestionnaires de priphriques. De plus, la plupart des codes sont dj affects, ce qui est une des raisons pour laquelle le systme udev a t dvelopp. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 260
Lorsqu'une application tente d'accder un fichier spcial de priphrique, trois cas peuvent se prsenter : soit un pilote de priphrique capable de grer le priphrique est dj charg ; soit il n'existe aucun pilote capable de grer le priphrique, mais le noyau peut en trouver un ; soit le noyau est incapable de trouver un pilote pour ce priphrique. Dans les deux premiers cas, la requte de l'application est satisfaite, ventuellement aprs le chargement automatique du pilote de priphrique sous la forme de module. Dans le troisime cas, videmment, la requte est refuse. Ainsi, lors de l'ouverture d'un fichier spcial de priphrique par une application, le noyau vrifie s'il dispose d'un pilote de priphrique capable de grer ce priphrique, en s'appuyant sur les codes majeur et mineur du fichier spcial de priphrique. Si ce n'est pas le cas, il effectue un appel modprobe pour charger le module contenant ce pilote de priphrique. Le nom du module dont le noyau demande le chargement modprobe dpend du pilote et ne correspond pas forcment un nom de module existant. Par exemple, le module de gestion des ports parallles se nomme, sur les ordinateurs de type PC, parport_pc. Toutefois, lorsque le noyau dsire accder au port parallle, il n'utilise pas ce nom, mais plutt un nom gnrique, qui est le mme pour toutes les architectures matrielles supportes par Linux. Ce nom est parport_lowlevel. Ainsi, le noyau utilise la commande suivante pour charger le module de prise en charge du port parallle : modprobe -k parport_lowlevel
L'option -' permet d'indiquer modprobe qu'il est appel par le noyau, donc dans le contexte de chargement automatique des modules. modprobe doit donc faire la correspondance entre le nom de module demand par le noyau et le nom d'un module rel. C'est donc dans les fichiers de configuration de modprobe que cette correspondance est dfinie. Pour cela, un certain nombre d'alias peuvent tre dfinis pour identifier les 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 l'alias, et module est le nom du module rel. Lorsque la commande modprobe est appele avec le nom d'un alias en paramtre, elle commence par rechercher le nom du module rel dans ses fichiers de configuration, puis elle le charge en mmoire. Par exemple, pour charger le module parport_pc automatiquement lorsque le noyau a besoin d'accder au port parallle, on pourra ajouter la dfinition d'alias suivante dans le fichier modprobe.conf : alias parport_lowlevel parport_pc Figure 8-4. Chargement automatique des modules du noyau DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 261
Vous pouvez constater que le mcanisme d'alias permet de rendre le noyau indpendant des modules utiliss, puisque l'association entre le nom du module utilis par le noyau et le module rel et ses paramtres est maintenue dans des fichiers de configuration. L'inconvnient de cette mthode est en revanche qu'il faut connatre les noms de modules utiliss par le noyau pour chaque pilote et pour leurs fonctionnalits. Ces noms sont assez variables et dpendent de la fonctionnalit demande. En gnral, ce nom apparat dans les messages de traces du noyau lorsqu'il ne parvient pas localiser un module lors de son chargement automatique. Ces messages de traces peuvent tre affichs l'aide de la commande dmesg. Il est donc possible de dterminer la liste des modules que le noyau a tent de charger relativement facilement. Toutefois, cela n'indique pas forcment la fonctionnalit implmente par le module en question, et encore moins l'application qui a tent d'utiliser cette fonctionnalit. Il est heureusement beaucoup plus facile de savoir quelle est la fonctionnalit demande lorsque celle- ci a trait un priphrique de l'ordinateur. En effet, le nom de module utilis par le noyau pour chaque gestionnaire de priphrique est construit partir du type de fichier spcial de priphrique et de ses codes majeur et mineur. Ainsi, le noyau utilise un nom de module de la forme char-major-xxxx pour les priphriques de type caractre, et un nom de la forme block-major-xxxx pour les priphriques de type bloc. Les caractres xxxx identifient le code majeur de ce priphrique, plus rarement son code mineur. Il est donc facile de dduire le gestionnaire de priphrique ncessaire la gestion de ce fichier spcial de priphrique, et de dfinir l'alias permettant de faire la correspondance entre le nom du module utilis par le noyau et le module rel charger. Par exemple, pour les cartes son, le nom de module char-major-14 est utilis pour demander le chargement du module de gestion du son, parce que les cartes son utilisent toutes le code majeur 14. Il faut donc dfinir un alias sur ce nom de module vers le module du gestionnaire de cartes son. Comme on le verra dans la section traitant de la configuration des cartes son, ce module pourra lui-mme demander le chargement de modules complmentaires, en fonction de la carte son rellement utilise et des fonctionnalits demandes. Le numro de code mineur sera indiqu lors de ces oprations. Si vous devez modifier les fichiers de configuration de modprobe, sachez qu'il s'agit d'une 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 configuration. En gnral, vous trouverez les informations sur les entres ajouter ou modifier dans le fichier d'aide du module correspondant, que vous pourrez trouver dans les sources du noyau (dans le rpertoire /usr/src/linux/Documentation/). Quoi qu'il en soit, la modification des fichiers de configuration de modprobe peut gnrer de nouvelles dpendances entre les modules. Il est donc ncessaire d'excuter la commande depmod -a aprs chaque modification de ce fichier. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 262
8.2. Configuration des priphriques de masse Les priphriques de masse sont les priphriques permettant de manipuler de grandes quantit de donnes. Il s'agit gnralement des priphriques connects sur bus SCSI, des disques durs et lecteurs de CD/DVD, des graveurs et des scanners. 8.2.1. Configuration des priphriques SCSI Les priphriques de qualit sont gnralement connects sur bus SCSI, en raison des capacits de celui-ci en termes de dbit et de performances. En particulier, les disques durs SCSI restent privilgis sur les systmes haut de gamme comme les serveurs par exemple, parce que le bus SCSI permet d'utiliser plusieurs priphriques simultanment. Sous Linux, les priphriques SCSI sont accds par l'intermdiaire des fichiers spciaux de priphriques /dev/sdx pour les disques durs ou /dev/scdn pour les lecteurs ou les graveurs de CD- ROM, o x est la lettre dfinissant le disque dur et n est le numro du lecteur ou du graveur de CD- ROM. Les autres priphriques SCSI sont accds par l'intermdiaire des fichiers spciaux de priphriques SCSI gnriques, savoir les fichiers /dev/sgn. Notez que certains priphriques pourront tre utiliss par l'un ou l'autre de ces fichiers spciaux, selon la fonctionnalit laquelle on cherche accder. Par exemple, les programmes de gravage utilisent les fichiers spciaux de priphriques /dev/sgn pendant le gravage, alors que la simple lecture d'un CD avec un graveur se fait via le fichier spcial de priphrique /dev/scdn correspondant. La prise en charge des priphriques SCSI se fait au niveau du noyau pour les fonctionnalits de base. En ralit, la configuration des priphriques SCSI se restreint celle de la carte SCSI utilise. Les fonctionnalits de plus haut niveau sont relgues au niveau applicatif. Par exemple, la prise en charge des diffrents graveurs SCSI du march est ralise par les logiciels de gravage eux-mmes, de mme que la prise en charge des diffrents scanners l'est par les logiciels d'acquisition d'image. La gestion des contrleurs SCSI au niveau du noyau se fait par l'intermdiaire des options du menu SCSI support du programme de configuration du noyau. Outre l'option SCSI support que l'on activera bien videmment, ce menu comprend les options suivantes, que l'on choisira en fonction du type des priphriques SCSI utiliser : SCSI disk support , pour les disques durs SCSI, ainsi que pour certains priphriques de masse qui apparaissent comme des disques durs SCSI (c'est en particulier le cas pour les clefs USB et un grand nombre d'appareils photo numriques) ; SCSI tape support , pour les lecteurs de cartouches SCSI. Les possesseurs de lecteurs de cartouches OnStream SC-x0 devront plutt utiliser l'option SCSI OnStream SC-x0 tape support , car le gestionnaire de priphriques standard n'est pas capable de les prendre en charge ; SCSI CD-ROM support , pour les lecteurs de CD-ROM SCSI et pour les graveurs de CD- ROM IDE, si l'on dcide d'utiliser l'mulation SCSI avec certains logiciels de gravage (voir plus loin pour plus de dtails ce sujet) ; SCSI generic support , pour les autres priphriques dont l'utilisation requiert l'utilisation d'un programme applicatif spcifique. Il s'agit ici des graveurs de CD, des scanners et autres priphriques spciaux. Certains priphriques SCSI disposent de plusieurs numros d'units logiques sur leur bus. Il peut donc tre ncessaire, pour ces priphriques, d'activer l'option Probe all LUNs on each SCSI device afin de pouvoir les utiliser correctement. Les autres options ne sont pas essentielles, consultez leur aide pour plus de dtails leur sujet. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 263
En plus des options gnrales de la prise en charge du SCSI, il est impratif de slectionner le gestionnaire de priphriques capable de piloter votre contrleur SCSI. Cela peut tre fait dans le sous- menu SCSI low-level drivers . Vous devrez y activer la prise en charge pour votre matriel, aucune rgle ne peut donc tre dfinie ce niveau. Consultez la documentation de votre matriel pour dterminer le gestionnaire de priphriques adquat utiliser. Une fois la configuration du noyau effectue, vous n'avez plus qu' le compiler et l'installer pour pouvoir utiliser vos priphriques. La manire de procder a t dcrite en dtail dans la Section 7.3. 8.2.2. Configuration des disques durs IDE Les disques durs IDE ont longtemps souffert d'un gros dfaut par rapport aux disques SCSI : celui de ne pas pouvoir effectuer des oprations sans l'intervention du processeur. En effet, l'envoi des donnes aux disques se faisaient classiquement par de nombreuses critures dans les ports d'entre/sortie des contrleurs de disques, obligeant ainsi le systme consacrer une part importante des ressources processeur uniquement pour les accs disque. Ce dfaut a t corrig avec la monte en puissance du mode DMA (abrviation de l'anglais Direct Memory Access ). Le mode DMA des priphriques IDE existe depuis les tous dbuts de l'architecture PC, mais les premiers contrleurs DMA n'taient pas capables de suivre la cadence des disques durs, mme des plus anciens. Il n'a donc malheureusement pas t utilis pendant longtemps, jusqu' ce qu'une nouvelle technologie soit mise au point : l'Ultra DMA. La plupart des jeux de composants des cartes mres modernes sont prsent capables de grer l'Ultra DMA, dont les frquences de bus les plus courantes sont 33, 66 et 100MHz. Note : Mme si les interfaces IDE ont prsent rduit l'cart avec les interfaces SCSI au niveau du taux de transfert des donnes, elles ont toujours un train de retard par rapport elles. En effet, les priphriques SCSI sont d'une part capables de communiquer entre eux sur leur bus, dchargeant ainsi totalement le processeur de ce travail de transfert des donnes, et d'autre part capables de traiter plusieurs requtes d'affile sans l'intervention du processeur. Ces fonctionnalits dchargent le bus systme, mais sont galement extrmement utiles pour les systmes d'exploitation multitches. Ceux- ci peuvent en effet envoyer plusieurs commandes aux priphriques et effectuer d'autres traitements pendant qu'elles s'excutent en asynchrone. Les disques SCSI ont donc un taux d'occupation du processeur et du bus systme nettement moindre, et permettent aux systmes tels que Linux d'atteindre un degr de ractivit ingal avec les disques IDE classiques. Cela dit, les priphriques IDE cotent nettement moins cher que les priphriques SCSI, et c'est sans doute l la clef de leur succs. En gnral, Linux configure les contrleurs des disques durs de manire quasi optimale, et il n'est gnralement pas ncessaire de modifier leur paramtrage. Cependant, les contrleurs IDE peuvent tre configurs ou optimiss manuellement grce l'utilitaire hdparm. Comme son nom l'indique, cet utilitaire permet de modifier les paramtres des disques durs et des contrleurs IDE. Il permet galement de tester les performances de votre configuration, et peut donc servir d'outil de diagnostic trs utile. La mesure du dbit de votre sous-systme disque (sans les mcanismes de cache du systme) peut tre en effet ralise facilement avec la commande suivante : hdparm -t priphrique
o priphrique est le fichier spcial de priphrique de votre disque dur. Note : Si vous obtenez des valeurs infrieures ou gales 6 Mo/s, vous avez rellement un problme de configuration. Les premiers disques UltraDMA 33 peuvent atteindre facilement 8 10 Mo/s, les disques UltraDMA 66 atteignent facilement 17 22 Mo/s, et les disques les plus rcents en UltraDMA 100 peuvent aller encore bien au del. Faites bien attention ne pas utiliser l'option -T la place de l'option -. En effet, vous mesureriez le dbit dans le sous-systme disque complet de Linux, avec ses mcanismes de cache. Vous obtiendriez DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 264
alors des taux de transfert nettement plus grands (dix fois plus au moins), qui ne reprsenteraient pas le taux de transfert rel de votre interface IDE. L'utilitaire hdparm permet galement de fixer un certain nombre de paramtres des disques durs. Par exemple, l'activation ou la dsactivation de l'UltraDMA se fait simplement avec l'option -d. Cette option prend en paramtre un entier pouvant valoir 1 ou 0, selon que l'UltraDMA doit tre activ ou non. Cette option peut tre complte d'autres options d'optimisation pour les disques modernes, pour lesquels on peut galement prciser le mode de transfert utiliser. Ce mode peut tre indiqu l'aide de l'option -X, qui prend en paramtre un nombre dont la valeur est le numro du mode plus une constante identifiant le type de transfert utilis. Les transferts de type PIO (c'est dire le mode dans lequel le processeur effectue lui-mme les transferts par l'intermdiaire des ports d'entre / 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 signifie donc que les transfers se font en UltraDMA (constante 64), mode 2 (valeur 2). Note : Pour que l'UltraDMA soit utilisable, il faut bien entendu que les pilotes IDE de votre noyau Linux le grent. Gnralement, les noyaux des distributions en sont capables, mais si d'aventure ce n'tait pas le cas, vous devriez recompiler votre noyau. Les options activer dans le programme de configuration du noyau sont les options suivantes du menu ATA/IDE/MFM/RLL support : Generic PCI IDE chipset support du menu IDE, ATA and ATAPI Block devices ; Generic PCI bus-master DMA support ; Use PCI DMA by default when available . Vous devrez galement activer le support pour les jeux de composants utiliss par votre carte mre. L'utilitaire hdparm permet galement d'activer et de dsactiver le mode 32 bits de ces contrleurs l'aide de l'option -c. Comme pour l'option -d, l'option -c prend en paramtre un indicateur pouvant valoir 1 ou 0 et permettant d'activer 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 l'activez. Note : Prenez garde lorsque vous utilisez la commande hdparm. Si vous spcifiez 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 d'aventure cela se produisait, il faudrait attendre un peu de temps, jusqu' ce que le systme s'aperoive de la mauvaise configuration 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 afficher avec la commande dmesg. Sachez toutefois que le risque de corruption du systme de fichiers en cas de mauvaise configuration reste bien rel, et qu'il vaut mieux un systme lgrement plus lent qu'un 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 l'option -'1 dans la ligne de commande de hdparm. Par exemple, pour configurer 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 DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 265
Note : Prenez garde toutefois au fait que les rinitialisations du contrleur en cas d'erreur 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 configuration 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 configuration utilise, car elle sera excute systmatiquement chaque dmarrage. 8.2.3. Installation d'un graveur de CD/DVD Linux dispose de tous les logiciels permettant de graver des CD ou des DVD, 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 n'est pas encore possible d'utiliser le gravage par paquet, qui permettrait d'utiliser les graveurs de CD comme des priphriques de sauvegarde amovibles. Cette fonctionnalit est en effet encore l'tude, elle sera sans doute disponible sous peu. 8.2.3.1. Notions de base sur le gravage sous Linux Originellement, tous les graveurs de CD/DVD utilisaient l'interface SCSI. Ce n'est 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 on fait une belle perce et sont les plus courants actuellement. Les logiciels de gravage doivent donc toutefois tre capables d'utiliser n'importe quel type de graveur, ce qui n'est pas simple. Heureusement, le protocole de communication ATAPI n'est rien d'autre qu'un mode de transport de commandes SCSI pour les priphriques IDE, ce qui fait que les logiciels de gravage peuvent utiliser les deux types de priphriques de manire relativement gnrique. Les anciennes versions des logiciels de gravage ne permettaient d'utiliser que l'interface SCSI pour graver des CD. Il n'tait donc pas possible d'utiliser les graveurs IDE de manire native. Une couche d'mulation SCSI a donc t dveloppe dans Linux afin de simuler une interface SCSI pour les priphriques IDE, et de traduire la vole les commandes SCSI en commandes ATAPI. prsent, les logiciels de gravage sont tous capables d'utiliser nativement les graveurs IDE, et cette couche d'mulation n'est plus que trs rarement ncessaire. Elle ne sera donc pas dcrite plus en dtail ici. 8.2.3.2. Configuration du noyau L'utilisation des graveurs de CD/DVD ne requiert gnralement pas d'option particulire au niveau de la configuration. Autrement dit, si vous pouvez utiliser votre graveur comme un simple lecteur, alors vous pouvez galement l'utiliser pour graver. Cependant, il peut-tre intressant d'activer le support de certains systmes de fichiers pour utiliser correctement les lecteurs et les graveurs. Les principales options de configuration du noyau ayant trait aux lecteurs et aux graveurs de CD/DVD sont rcapitules ci-dessous : Loopback device support Cette option permet d'activer une fonctionnalit permettant d'utiliser un fichier comme un priphrique normal. Elle est trs utile pour tester les images de CD, car il suffit simplement de monter le fichier image comme un priphrique loopback . Il est donc recommand d'activer cette fonctionnalit, que l'on dispose d'un graveur SCSI ou IDE. Cette fonctionnalit peut tre active sous la forme de module ou non, la rponse recommande est 'Y'. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 266
Include IDE/ATA-2 CDROM support Cette option permet d'activer la gestion des lecteurs de CD IDE ATAPI. Vous devez rpondre cette question par 'Y' si vous disposez d'un graveur ou d'un lecteur IDE, ce qui est gnralement le cas. La rponse recommand est 'Y'. SCSI support Cette option permet d'activer la gestion des priphriques SCSI dans votre noyau. Il va de soi qu'il faut l'activer si vous disposez d'un graveur SCSI. Cette fonctionnalit peut tre active sous forme de module ou non. La rponse recommande est 'N'. SCSI CD-ROM support Cette option permet d'activer la gestion des lecteurs de CD SCSI. Il faut l'activer si l'on dispose d'un graveur SCSI. La rponse recommande est 'Y' si vous disposez d'un lecteur ou d'un graveur SCSI, et 'N' dans le cas contraire. Enable vendor-specific extensions (for SCSI CDROM) Cette option permet d'autoriser l'emploi d'extensions au protocole SCSI dfinies par les fabricants de matriels. Certains graveurs utilisent de telles extensions, c'est en particulier le cas des graveurs de CD HP. Toutefois, si vous ne disposez pas d'un tel graveur, il est peu probable que vous ayez activer cette fonctionnalit. La rponse recommande est donc 'N'. SCSI generic support Cette option permet d'utiliser les priphriques SCSI avec des commandes non standards, ce qui requiert l'emploi de programmes capables de communiquer directement avec les priphriques SCSI. C'est le cas pour les graveurs, qui seront pilots directement par les logiciels de gravage. Il faut gnralement activer cette fonctionnalit si l'on dispose de priphrique SCSI, aussi la rponse recommande est-elle 'Y' si l'on se trouve dans cette situation. Probe all LUNs on each SCSI device Cette option permet, lorsqu'on dispose de priphriques SCSI capables de grer plusieurs numros d'unit logiques, de leur demander tous ces numros. Ce type de priphrique est assez rare, et en gnral chaque priphrique n'utilise qu'un et un seul numro d'unit logique. Il ne faut donc pas, en gnral, activer cette fonctionnalit. La rponse recommande pour cette question est donc 'N'. ISO 9660 CDROM file system support Cette option permet de prendre en charge les systmes de fichiers des CD-ROMs. Il est impratif d'activer cette fonctionnalit, aussi la rponse recommande pour cette question est-elle 'Y'.
Microsoft Joliet CDROM extensions Cette option permet de prendre en charge les extensions Microsoft au systme de fichiers ISO 9660 (pour la gestion des noms longs du DOS). tant donn le nombre de CDs qui utilisent ces extensions, il est impratif d'activer cette fonctionnalit. La rponse recommande pour cette question est donc 'Y'. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 267
UDF file system support Cette option permet de prendre en charge les systmes de fichiers UDF, utilis par certains CD-ROMs gravs par paquets et par tous les DVDs. Il est impratif d'activer cette fonctionnalit, aussi la rponse recommande pour cette question est-elle 'Y'. Enfin, il faut choisir le pilote bas niveau permettant de grer son graveur de CD. Pour les graveurs IDE ATAPI il n'y a pas de pilote bas niveau inclure. Pour les graveurs SCSI, il faut choisir le pilote appropri de votre carte ou de votre contrleur SCSI. Une fois cette configuration effectue, il ne reste plus qu' compiler le noyau et les modules et les installer. La manire de procder a t dcrite dans la section traitant de la compilation du noyau. 8.2.3.3. Configuration des modules du noyau Vous aurez sans doute modifier le fichier de configuration /etc/modprobe.conf si vous avez activ certaines fonctionnalits SCSI sous la forme de modules, afin de charger les modules ncessaires lorsqu'une commande sera effectue sur l'un des fichiers spciaux de priphriques SCSI. Si toutes les fonctionnalits SCSI sont intgres au noyau, cette tape est bien entendue facultative. Les fichiers spciaux utiles pour les priphriques blocs SCSI sont les fichiers scdx et sgx, o x est le numro du priphrique. Les fichiers spciaux du premier groupe sont de type bloc, et permettent d'accder aux lecteurs de CD SCSI. Les fichiers du deuxime groupe en revanche sont de type caractre, et permettent d'accder aux priphriques SCSI de manire gnrique. Les codes majeurs pour ces deux groupes de fichiers spciaux sont respectivement 11 et 21, il faut donc ajouter les entres du fichier modprobe.conf pour les modules nomms block-major-11 et char-major-21. Normalement, ces entres sont dj prsentes dans le fichier fourni par votre distribution. 8.2.3.4. Installation des logiciels de gravage Lorsque le noyau aura t correctement configur et install, il ne vous restera plus qu' installer les logiciels de gravage. Les logiciels indispensables sont les suivants : cdrecord, qui permet de piloter le graveur de CD et d'effectuer les tches ncessaires pour le gravage ; mkisofs, qui permet de crer des images disques ISO 9660, ventuellement avec les extensions Joliet (CD Windows 95), Rock Ridge (CD Unix) ou HFS (CD Macintosh) ; cdda2wav, qui permet d'extraire les donnes numriques des CD audio ; cdrdao, qui permet de raliser des gravages bas niveau et en mode Disk At Once . Vous pourrez vrifier que votre configuration fonctionne correctement si vous disposez d'un priphrique SCSI ou si vous utilisez l'mulation SCSI 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. Cette commande ne fonctionne pas si vous utilisez un graveur IDE. 8.2.3.5. Utilisation des logiciels de gravage Nous allons prsent voir les commandes permettant de faire les principales oprations ayant trait au gravage des CDs. Bien que ce document soit consacr l'installation de Linux et non son utilisation, elles vous permettront de tester si tout fonctionne correctement. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 268
La copie directe d'un CD peut se faire avec la commande suivante : cdrecord -dummy -v dev=graveur speed=n -isosize /dev/source L'option dev permet de spcifier le priphrique du graveur utiliser. Cette option peut prendre en paramtre soit le fichier spcial de priphrique du graveur (par exemple /dev/hdc), soit un triplet de valeur permettant d'identifier un priphrique sur le bus SCSI (par exemple 0,1,0). La premire valeur reprsente le bus SCSI sur lequel le graveur est branch, la deuxime le numro de priphrique du graveur sur ce bus SCSI et la troisime son numro d'unit 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 si vous utilisez un graveur SCSI. Le numro d'unit logique est, dans la majorit des cas, 0. Le nombre n donn dans la ligne de commande prcdente doit valoir le facteur multiplicateur de la vitesse de gravage. Vous pouvez essayer avec des valeurs faibles pour commencer, afin d'tre sr que tout se passe bien. Le fichier de priphrique /dev/source quant lui reprsente le fichier spcial de priphrique du lecteur de CD utilis pour lire le CD-ROM. L'option -isosize permet de demander cdrecord de lire la taille de la piste graver dans le systme de fichiers ISO9660 du CD source. Enfin, l'option -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 suffit de supprimer cette option. Il va de soi que si vous ne disposez pas d'un 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/source of=image
o /dev/source est le fichier spcial de priphrique du lecteur utilis pour faire l'image, et image est le fichier image qui doit tre cr. Le gravage d'une image disque peut tre ralis avec la commande suivante : cdrecord -dummy -v dev=graveur speed=n -data image
o les options sont les mmes que dans les commandes prcdentes. Si vous dsirez crer une image disque partir des fichiers de votre disque dur, vous pouvez utiliser mkisofs. Ce programme permet de crer une image disque ISO9660, avec les extensions Rock Ridge pour activer les fonctionnalits des systmes de fichiers Unix (noms de fichiers plus longs, liens symboliques, droits d'accs...), et ventuellement les extensions Joliet utilises par les systmes Windows 95, Windows NT, Windows 2000 et XP (noms de fichiers longs Microsoft). Le prix payer pour cette amlioration est la perte de quelques centaines de kilo octets, ce qui est drisoire tant donn le gain en portabilit. La ligne de commande utiliser pour crer une image disque est la suivante : mkisofs [-J][-r | -R][-hfs | -apple] [-C dbut,fin [-M disque]] \ [-V "nom"] -o image rpertoires Les options -r ou -R, -J et -hfs ou -apple permettent respectivement d'utiliser les extensions Rock Ridge, Joliet ou HFS (pour les disques devant tre lus sur les Macintosh). Il est possible de faire des images disque hybrides, qui pourront tre lues sur plusieurs systmes d'exploitation diffrents. La seule contrepartie est la perte de quelques dizaines de kilo-octets, ce qui est drisoire. La distinction DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 269
entre l'option -r et l'option -R est que -r modifie les attributs des fichiers Unix afin 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 fichiers voient leurs valeurs fixes 0. L'option -V permet de fixer le nom du volume dans l'image. Il est possible de placer ce nom entre guillemets. Cette fonctionnalit est intressante si ce nom comprend des espaces. Il est possible de crer des CD multisessions condition de spcifier l'emplacement de cette session lors de la cration de l'image disque. Cela se fait avec l'option -C de mkisofs. Cette option prend en paramtre le numro du secteur de dbut et le numro du secteur de fin de la session la suite de laquelle la nouvelle session doit tre crite, spars par des virgules. Si l'on veut galement importer la session prcdente (c'est--dire permettre l'accs aux donnes des sessions prcdentes comme si elles taient galement prsentes dans la session crire), il faut utiliser l'option -M, laquelle il faut indiquer le fichier spcial de priphrique du lecteur contenant le disque dont la session doit tre importe. La dtermination des secteurs de dbut et de fin de la session prcdente peut tre difficile, mais cdrecord est capable d'obtenir cette information avec la commande suivante : cdrecord dev=graveur msinfo
Appel ainsi, cdrecord affiche les secteurs de dbut et de fin de la dernire session du disque du lecteur spcifi par son option dev, directement dans le format attendu par mkisofs. L'option -o de mkisofs permet de spcifier le nom du fichier image qui doit tre cr. Les paramtres suivant l'option -o constituent la liste des rpertoires et des fichiers qui doivent tre insrs dans le CD-ROM. Par dfaut, chaque rpertoire ou fichier indiqu en paramtre est plac dans le rpertoire racine du CD-ROM, et l'arborescence des sous-rpertoires est respecte. Cependant, il est possible de placer un des rpertoires ou fichiers indiqus en paramtre dans un autre rpertoire du CD-ROM, l'aide de la syntaxe suivante : destination=source
o destination est le rpertoire destination du CD-ROM, et source le rpertoire ou le fichier source ajouter l'image disque. De mme, il est possible d'exclure certains sous-rpertoires de l'image disque l'aide de l'option -x :
-x rpertoire
Les sous-rpertoires du rpertoire indiqu seront galement supprims de l'image disque. Vous pouvez tester votre image disque en la montant par l'intermdiaire du priphrique virtuel du noyau loopback. Il faut pour cela que vous ayez activ la gestion de ce priphrique dans la configuration du noyau. La commande utiliser est la suivante : mount -t iso9660 -o ro,loop=/dev/loop0 image /cdrom
o image est le nom de votre fichier image tester. Cette commande monte le systme de fichiers de cette image dans le rpertoire /cdrom. La commande umount peut tre utilise pour dmonter ce systme de fichiers de la manire habituelle. Lorsque votre image disque est satisfaisante, vous pouvez la graver avec la premire ligne de commande suivante : DOCUMENT SUR LINUX
Vous noterez la prsence de l'option -multi, qui permet de demander cdrecord de crer un disque multisession. Bien entendu, vous pouvez vous passer de cette option si votre disque n'est pas multisession. La cration d'une image disque ncessite d'avoir une place disque gale la taille de la session ajouter, ce qui peut tre contraignant. Sur les systmes suffisamment puissants, il est possible de crer l'image disque et de la graver la vole en crant un tube entre mkisofs et cdrecord. Dans ce cas, il ne faut pas donner de nom l'image disque dans la ligne de commande de mkisofs, et utiliser l'option - dans la ligne de commande de cdrecord pour lui demander de prendre les donnes sur son entre standard. Malheureusement, cette technique n'est pas utilisable facilement pour les disques multisessions, parce que la lecture des informations de la session prcdente peut se faire en mme temps que le dbut du gravage. Pour rsoudre ce problme, il faut utiliser l'option -waii de cdrecord, qui lui demande d'attendre l'arrive des premires donnes dans le tube avant d'ouvrir le fichier spcial de priphrique du graveur. La ligne de commande complte devient alors assez complexe, comme vous pouvez en juger : mkisofs -r -M priphrique -C `cdrecord dev=graveur -msinfo` \ fichiers | cdrecord -v dev=graveur speed=vitesse -multi -waiti - Les commandes prsentes ci-dessus ne permettent pas de travailler avec des CD audio. Pour extraire les donnes audio d'un CD, vous devrez utiliser le programme cdda2wav : cdda2wav [-H] -B nom [-tdbut[+fin]] -O wav dev=graveur L'option -H permet d'viter la cration des fichiers d'information .inf sur les pistes extraites par cdda2wav. L'option -B permet d'utiliser le nom nom complt d'un numro pour les fichiers son crs. Les pistes seront donc stockes dans des fichiers portant les noms nom_01, nom_02, etc. L'option -t permet d'indiquer la piste dbut et la piste fin afin de slectionner les pistes dont les donnes audio doivent tre extraites. Si la piste de fin n'est 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 n'est pas prcise, l'extraction commencera partir de la premire piste. L'option -O permet d'indiquer le type de fichier de sortie, wav indique ici que les fichiers crs seront au format WAV des fichiers son de Windows. Il est galement possible d'utiliser le type de fichier raw, avec lequel les fichiers seront prts tre gravs tels quels. Enfin, l'option dev permet de spcifier le priphrique utiliser pour lire les donnes audio. La syntaxe de cette option est la mme que celle utilise par cdrecord. Le gravage des pistes audio peut tre ralis avec la commande suivante : cdrecord -dummy -v dev=graveur speed=n -nofix -audio piste1.wav \ piste2.wav ... L'option -nofix permet ici d'viter de fermer la session. Elle doit tre utilise si l'on dsire rajouter des pistes audio sur le CD-ROM ultrieurement. Si, en revanche, elle est omise, cdrecord fermera automatiquement la session aprs l'criture de la dernire piste, et plus aucune donne ne pourra tre ajoute. La commande suivante vous permettra de fixer le disque a posteriori : cdrecord -dummy -v dev=graveur speed=n -fix Enfin, si vous disposez d'un graveur de CD rinscriptible, vous pourrez utiliser la commande suivante pour effacer un CDRW : DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 271
cdrecord -dummy -v dev=graveur -blank=fast
o graveur reprsente toujours le priphrique du graveur. Il est peu probable que vous ayiez utiliser ces commandes directement, car il existe de nombreux programmes graphique capable de les piloter de manire conviviale (k3b, gcombust, xcdroast, etc.). Il est vivement recommand d'en installer un et de l'utiliser. Ils sont relativement simples d'emploi et leur utilisation ne devrait pas poser de problme particulier. 8.3. Configuration des cartes filles Il existe un grand nombre de cartes filles sur le march, dont les plus courantes sont sans doute les cartes graphique, les cartes son et les cartes rseau. Toutes ces cartes permettent d'ajouter des fonctionnalits de manire modulaire une machine, en les enfichant dans les emplacements prvus cet effet sur la carte mre. Les cartes les plus vielles que l'on peut encore rencontrer sont les cartes ISA. La configuration de ces cartes a toujours t extrmement difficile, en raison des nombreux conflits matriels qu'elles provoquaient entre elles et avec les ressources de la carte mre. Le standard Plug and Play a t introduit pour limiter ces problmes par la suite, mais ce n'est qu'avec l'arrive des cartes PCI que l'on a enfin pu commencer brancher n'importe quoi n'importe comment dans un ordinateur (cela dit, ce n'est pas encore la panace parce que l'on est toujours oblig d'teindre l'ordinateur...). Enfin, les cartes graphiques ne se connectent plus de nos jours ni sur les ports PCI, ni sur les ports ISA, pour des raisons de performances et de dbit de donnes. Elles utilisent un port spcial, le port AGP. Cela ne pose cependant pas de problme de configuration spcial (du moins si l'on se contente d'une seule carte graphique). Ce chapitre traite de la manire de configurer les cartes ISA et PCI en gnral, et donne des informations plus dtailles pour chacun des types courants de cartes filles. 8.3.1. Gnralits sur les cartes ISA, Plug And Play et PCI L'architecture initiale des PC a trs mal vieilli et souffre actuellement de dfauts majeurs qui nuisent leur dveloppement. Sans parler des goulots d'tranglement 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. L'une des limitations majeurs de cette architecture est le nombre incroyablement restreint de lignes d'interruption permettant un priphrique de signaler au processeur qu'il a besoin de l'intervention de son gestionnaire pour poursuivre son travail, et la quasi absence des possibilits d'accs directs la mmoire, qui impose l'utilisation 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 d'extensibilit. En effet, qui dit ressource limit dit qu'il est impossible de connecter plus de priphriques intelligents que ce que l'architecture matrielle autorise. L'installation de plusieurs cartes ISA grant chacune une interruption ou un canal DMA tait rellement un casse-tte il y a encore peu de temps. C'est pour rsoudre ces problmes de configuration du matriel que le standard Plug and Play a t dvelopp. Ce standard tablit un protocole de communication matriel permettant au BIOS de configurer automatiquement les priphriques ISA en vitant les conflits sur les ressources partages (le plus souvent, les lignes d'interruption). Ce protocole a soulag bien des gens, mais suppose un support spcifique de la part du systme d'exploitation, puisque les paramtres matriels de chaque carte Plug and Play ne sont pas fixs d'un dmarrage l'autre de la machine. Il faut donc que le systme soit ou capable de rcuprer ces DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 272
paramtres, ou de refaire la configuration du matriel. Cette deuxime solution est souvent impose par le fait que bon nombre de BIOS sont bogus et effectuent une mauvaise configuration des cartes Plug and Play. Le Plug and Play a t une amlioration sensible, mais n'a pas rsolu les problmes concernant les ressources limites des PC. Heureusement, depuis l'avnement du bus PCI, ces limitations se sont estompes. En effet, le bus PCI permet non seulement aux priphriques de s'autoconfigurer et de se dclarer dans le systme PCI, mais galement de partager une mme ligne d'interruption et de prendre le contrle du bus mmoire. Ainsi, il n'y a virtuellement plus aucune difficult pour installer une carte PCI dans un ordinateur. De nos jour, on ne trouve quasiment plus de cartes ISA, et la plupart des cartes mres n'acceptent mme plus ces cartes. Mais ne croyez pas pour autant que le bus PCI soit idal, c'est loin d'tre le cas. En effet, il ne permet pas encore l'ajout et la suppression de cartes chaud (c'est--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 encore appel voluer. Le sous-systme PCI de Linux permet d'utiliser directement les cartes PCI, sans configuration particulire. Les priphriques ISA, en revanche, peuvent tre plus difficiles configurer. S'ils ne sont pas Plug and Play, il n'y a pas d'autre choix que de spcifier leurs paramtres matriels directement, soit lors de la compilation du noyau, soit l'aide d'options de boot lorsque le systme dmarre, soit l'aide d'options dans le fichier /etc/modprobe.conf si leur gestionnaire est compil sous forme de module. La premire solution est la plus technique, puisqu'elle ncessite de reconfigurer et de recompiler le noyau, les deux autres relvent de la configuration simple. Les cartes ISA Plug and Play constituent un cas part car, comme il l'a 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 configuration 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 configuration des cartes et d'allocation des ressources. La deuxime possibilit est d'effectuer la configuration 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 lorsqu'on dsire contrler finement les ressources alloues par les priphriques dans le systme. Si l'on dsire utiliser les fonctionnalits Plug and Play du noyau, il n'y a strictement rien faire. Linux se charge simplement d'initialiser automatiquement les cartes ISA Plug and Play lors du dmarrage du systme, de leur attribuer les paramtres matriels adquats, et de communiquer ces paramtres aux gestionnaires de priphriques. Il prendra galement en charge la gestion des conflits avec les autres priphriques, qu'ils soient ISA non Plug and Play ou PCI. Par consquent, vous n'aurez aucune configuration spcifique 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 configuration tellement spcifique qu'elle ncessite un paramtrage manuel. Dans ce cas, l'initialisation 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 d'initialisation du systme, mais ce n'est pas une obligation. Quoi qu'il en soit, comme l'attribution des ressources aux cartes est diffre, les gestionnaires de priphriques ne peuvent pas tre inclus dans le noyau. Il est donc ncessaire d'utiliser les modules du noyau pour ces gestionnaires. Les paramtres matriels pourront alors tre communiqus simplement ces gestionnaires lors du chargement des modules, l'aide d'options dans le fichier de configuration /etc/modprobe.conf. La configuration manuelle des cartes ISA Plug and Play se fait classiquement l'aide des outils isapnp . Parmi ces outils se trouve le programme isapnp, que l'on utilise pour initialiser les cartes DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 273
ISA Plug and Play. Cet utilitaire utilise les informations qui se trouvent crite dans le fichier de configuration /etc/isapnp.conf pour dterminer les plages d'entre/sortie, les canaux DMA et les lignes d'interruption utiliser pour chaque carte. La rdaction manuelle du fichier isapnp.conf n'est pas une tche aise. Heureusement, cela peut tre ralis automatiquement, l'aide d'un autre utilitaire nomm pnpdump. Celui-ci affiche la liste des diffrentes possibilits de configuration pour chaque priphrique ISA Plug and Play. Cette liste est affiche exactement sous une forme exploitable par isapnp, ce qui fait qu'il est trs simple de crer un fichier de configuration correct en faisant une redirection de sa sortie standard dans un fichier : pnpdump > /etc/isapnp.conf Le fichier de configuration ainsi cr contient les diffrentes configurations possibles. Cependant, elles sont toutes commentes, et aucun priphrique ISA ne sera configur sans intervention supplmentaire. Il va donc falloir diter ce fichier et retirer les commentaires devant les options de configuration qui vous intressent. Les lignes de commentaires commencent toutes par un caractre dise ('#'). Il suffit donc d'effacer ce caractre pour les dcommenter. Vous devez choisir les options dcommenter de telle manire qu'aucun conflit d'adresse, d'interruption ou de canal DMA n'existe dans votre systme. Pour chaque priphrique, plusieurs possibilits sont offertes, mais vous ne devez retirer les commentaires que devant les lignes d'une seule de ces possibilits. Les zones dcommenter sont clairement identifies dans le fichier isapnp.conf gnr par pnpdump, il vous suffit donc d'effectuer le choix de la configuration utiliser. Enfin, il ne faut pas oublier de retirer le commentaire devant la ligne suivante : (ACT Y)
la fin des diffrentes options de configuration pour chaque carte correctement configure, faute de quoi elle ne sera pas active lors de l'appel isapnp. En gnral, il est souhaitable d'appeler la commande isapnp chaque dmarrage du systme, dans un des scripts de dmarrage. Vous devrez donc inclure une ligne telle que celle-ci : /sbin/isapnp /etc/isapnp.conf
dans le fichier de dmarrage principal de votre systme. Ce fichier 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 l'appel cette commande l'aide d'une option de configuration modifiable l'aide de leur programme de configuration. Consultez la documentation de votre distribution pour plus de dtails ce sujet. Une fois que vous aurez dtermin la configuration correcte pour vos priphriques dans le fichier /etc/isapnp.conf, vous pourrez charger les modules du noyau grant ces priphriques. Cela peut ncessiter la modification du fichier /etc/modprobe.conf. Afin de limiter les risques d'erreur, vous devriez procder comme suit : dterminer le fichier spcial de priphrique utilis par les applications pour accder votre priphrique ; dterminer le nom du module que le noyau tentera de charger lorsqu'un programme tentera d'utiliser ce fichier spcial de priphrique ; rechercher la ligne dfinissant l'alias pour ce nom de module, afin de savoir quel est le module qui sera effectivement charg par modprobe. Vous pouvez galement trouver ce nom dans la documentation de la configuration du noyau pour le gestionnaire du priphriques que vous configurez, ou en regardant directement dans le rpertoire d'installation des modules /lib/modules/ ; DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 274
ajouter ventuellement la ligne options module paramtres permettant de spcifier les paramtres de chargement paramtres pour le module module ; ajouter ventuellement les lignes install et remove , permettant d'effectuer des actions complmentaires lors du chargement et du dchargement du module. Comme il l'a t indiqu dans la Section 8.1.1, la dtermination des noms de modules utiliss par le noyau pour les requtes de chargement automatique n'est pas facile. Vous aurez sans doute vous servir du type, du code majeur et du code mineur de ce fichier spcial de priphrique. Vous pourrez obtenir ces informations l'aide de la commande ls -l fichier, o fichier est le nom du fichier spcial de priphrique. Le type de ce fichier est indiqu dans le premier caractre des droits des fichiers. Le caractre 'c' indique que le priphrique est un priphrique de type caractre, et le caractre 'b' indique qu'il s'agit d'un priphrique de type bloc. Les numros de codes majeur et mineur quant eux sont indiqus juste aprs les informations concernant le propritaire et le groupe du fichier, gnralement gaux root . Quoi qu'il en soit, il est fortement recommand de lire la documentation du module grant votre priphrique Plug and Play. Cette documentation est en gnral situe dans le rpertoire /usr/src/linux/Documentation/. Pour tester si les modifications que vous avez effectues sont correctes, vous pouvez essayer de charger le module avec la commande suivante : modprobe module
o module est le nom du module charger. Vous pouvez galement vrifier que ce module se charge bien lorsqu'une requte sur le fichier spcial de priphrique correspondant est effectue, avec par exemple la commande suivante :
echo Coucou > /dev/priphrique
o priphrique est le fichier spcial de priphrique tester. Vous pouvez voir si le module s'est correctement charg en demandant la liste des modules chargs l'aide de la commande lsmod. Cette commande vous indique galement l'tat de chaque module, ainsi que le nombre de fois qu'il est utilis et par qui. Si un module est marqu uninitialized , vous avez de fortes chances de devoir redmarrer l'ordinateur et de revoir votre configuration, car un module qui se trouve dans cet tat est inutilisable et peut parfois mme refuser de se dcharger. 8.3.2. Configuration des cartes son 8.3.2.1. Fonctionnalits du matriel Les fonctionnalits fournies par les gestionnaires de son de Linux varient dans de larges proportions, selon le matriel utilis. La quasi totalit des cartes son grent bien entendu l'essentiel : la restitution de fichiers audio numriques. Les fonctionnalits des cartes son sont ce niveau relativement disparates : les diffrences vont du taux d'chantillonage utilis jusqu' la possibilit de les faire fonctionner en full duplex (enregistrement et lecture simultane) ou non. Cette dernire fonctionnalit est essentielle pour les applications de tlphonie sur Internet par exemple. De plus, trs peu de cartes son sont capables de grer la restitution des fichiers MIDI correctement (les fichiers MIDI sont des fichiers musicaux permettant de stocker les squences de notes jouer pour restituer le morceau, au lieu de stocker le son lui-mme sous forme numrique). La plupart des cartes son ne fournissent aucun support matriel pour cela, et la restitution des notes des fichiers MIDI se fait gnralement l'aide d'un synthtiseur logiciel. C'est en particulier le cas pour toutes les cartes son intgres sur les cartes mres des ordinateurs rcents. Les gestionnaires de priphriques de Linux ne DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 275
fournissent pas de synthtiseur logiciel, en revanche il existe plusieurs programmes permettant de lire les fichiers MIDI, moyennant une consommation plus ou moins importante des ressources de calcul de l'ordinateur. La plupart des cartes son bas de gamme disposent toutefois d'un synthtiseur en modulation de frquence (synthtiseur dit FM ), qui permet de simuler des notes d'instrument de musique, gnralement avec une qualit trs mdiocre. Certains pilotes de cartes son de Linux permettent d'utiliser ces synthtiseurs, mais ce n'est toujours pas la panace. En ralit, si l'on veut restituer correctement les notes des fichiers MIDI, il faut utiliser une carte son disposant de ce que l'on appelle une table d'chantillons. Ces tables permettent de stocker dans la mmoire de la carte son des chantillons de sons d'instruments de musique enregistrs en qualit numrique. La carte son peut ainsi reconstituer le son de toutes les notes de musique fidlement, avec une trs grande ressemblance avec l'instrument rel. Ces cartes sont bien entendu plus coteuses, mais la qualit sonore est incomparable ce niveau (les cartes SoundBlaster AWE et Live en particulier disposent de tables d'chantillons). Linux permet parfaitement d'utiliser ces cartes, et mme de charger de nouveaux jeux d'chantillons dans la mmoire de la carte pour changer la sonorit des instruments. Je ne saurais donc que trop vous conseiller de bien vous renseigner avant l'achat d'une carte son, car ce sujet n'est pas trs souvent pris en considration lors de l'achat. Bien entendu, si vous ne dsirez pas utiliser votre carte son dans ses derniers retranchements, vous pouvez vous contenter des cartes intgres sur les cartes mres. Dans les autres cas, renseignez-vous. 8.3.2.2. Configuration du noyau La plupart des cartes son vendues actuellement sont des cartes PCI, qui se configurent relativement aisment. Cependant, il existe encore un bon nombre de cartes son ISA, dont la configuration peut tre plus technique, surtout si elles ne sont pas Plug and Play. La premire tape lors de la configuration de votre carte son sera la slection du gestionnaire de priphriques utiliser dans le programme de configuration du noyau. En ce qui concerne les cartes son, les options de configuration se trouvent dans le menu Sound . Vous y trouverez deux jeux de pilotes : les pilotes ALSA ( Advanced Sound Linux Architecture ) et les pilotes OSS ( Open Sound System ). Les pilotes ALSA sont les plus modernes, et devront tre utiliss en priorit, car ils fournissent le plus de fonctionnalits. Les pilotes OSS sont des pilotes plus anciens, qui sont toutefois maintenus titre de compatibilit d'une part et, d'autre part, parce que certaines cartes son ne sont pas encore totalement prises en charge par les pilotes ALSA. Les pilotes OSS sont eux-mmes classs en deux catgories : les pilotes classiques (premire partie des options du menu) et les pilotes OSS purs. Ces derniers utilisent une spcification d'interface de programmation commune permettant l'accs aux cartes son, mais il n'y a pas de diffrence au niveau des applications pour l'utilisation de ces pilotes. Vous devez choisir le gestionnaire de priphriques ALSA ou OSS qui convient le mieux votre matriel. L'erreur la plus classique que l'on peut faire au niveau du choix du pilote est de supposer que l'on possde une carte compatible Sound Blaster alors que ce n'en est pas une. Je tiens prciser que quasiment aucune carte dite compatible sous Windows ne l'est sous Linux. La compatibilit sous Linux, c'est le fait d'avoir quasiment la mme lectronique ou du moins les mmes interfaces au niveau matriel. Sous Windows, la compatibilit n'existe qu'au niveau des interfaces fournies par le pilote de la carte son. Par consquent, il vous faut savoir exactement de quel nature est votre carte son, et non ce que vous avez retenu des arguments commerciaux du fabricant. Notez en particulier que certaines cartes Sound Blaster ne sont pas compatibles Sound Blaster (Creative Labs est renomm en ce qui concerne les incompatibilits entre les diffrents modles de cartes son). C'est notamment le cas pour les cartes sons SB64 PCI et SB128 PCI, qui sont en ralit des cartes son ESS1370 ou ESS1371, et dont l'lectronique est fabrique par la socit Ensoniq (cette socit a t rachete par Creative Labs, qui vend ces cartes en s'appuyant sur son image de marque et qui sme ainsi la confusion sur le DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 276
march). En conclusion, si vous ne voulez pas essayer plusieurs pilotes et recompiler le noyau jusqu' ce que vous trouviez le bon, renseignez-vous bien sur la nature de votre carte son (si possible avant de l'acheter, au moins afin de savoir exactement ce que vous aurez). Vous pouvez galement taper la commande lspci afin de voir les priphriques rellement prsents sur le bus PCI. La commande systme dmesg peut galement vous tre utile. Elle permet de rafficher la liste des messages de traces gnrs par le noyau, et vous y trouverez donc les messages relatifs la phase de dtection des priphriques. Lorsque vous aurez choisi le gestionnaire de priphriques adquat, vous aurez le choix entre le compiler l'intrieur du noyau (en choisissant l'option 'Y') ou le compiler sous forme de module (en choisissant l'option 'M'). Il est possible soit de charger ces pilotes en tant que module, soit de les intgrer au noyau. En gnral, il est prfrable d'utiliser les modules, car les programmes de configuration audio peuvent ainsi dtecter automatiquement les cartes son utilises. De plus, certaines fonctionnalits non essentielles sont souvent dsactives par dfaut par les pilotes, et doivent tre actives explicitement l'aide d'une option lors du chargement du module ou d'un paramtre fournir au noyau lors de son amorage. Les modules sont donc l aussi plus faciles utiliser, car ils viteront de redmarrer le systme chaque essai. Cependant, pour la plupart des paramtres matriels (en particulier les lignes d'interruptions, les ports d'entre/sortie et les canaux d'accs direct la mmoire), Linux dterminera automatiquement les valeurs correctes. Cette configuration n'est donc pas faire, et votre carte son fonctionnera gnralement immdiatement. Les vielles cartes son ISA qui ne sont pas Plug and Play devront gnralement galement tre intgres au noyau. En effet, pour ces cartes sons, la configuration logicielle est trs simple, puisqu'on ne peut pas les configurer du tout, et l'on n'a donc pas besoin de modules du tout. Bien entendu, il faut que vous ayez rsolu manuellement les conflits possibles de matriel de votre ordinateur en fixant les switchs adquats sur vos cartes filles, mais cela ne concerne pas Linux. Pour ces cartes, il faut gnralement indiquer au noyau les paramtres matriels (IRQ, DMA et ports d'entre/sortie) lors de la configuration. Il se peut toutefois que vous ne puissiez pas spcifier ces paramtres matriels dans les menus de configuration de Linux. Bien qu'en thorie il soit possible de modifier les fichiers sources de Linux directement pour indiquer ces paramtres, ce n'est pas la porte du commun des mortels. Par consquent, on utilisera malgr tout dans ce cas les modules du noyau, et les options matrielles seront indiques dans le fichier de configuration /etc/modprobe.conf. Notez que c'est galement de cette manire que vous devrez procder si vous dsirez configurer vous-mme l'allocation des ressources pour les cartes son ISA Plug and Play, ou, autrement dit, si vous prfrez utiliser l'outil isapnp au lieu des fonctionnalits Plug and Play du noyau. 8.3.2.3. Configuration des modules du noyau Si vous compilez les gestionnaires de son sous la forme de modules, vous devrez ajouter les alias et les options ncessaires leur chargement dans le fichier /etc/modprobe.conf. Les fichiers spciaux de priphriques utiliss ne sont pas les mmes pour les pilotes OSS et les pilotes ALSA. Les premiers utilisent les fichiers spciaux /dev/audio?, /dev/dsp? et /dev/mixer?, dont le numro de code majeur est 14, alors que les seconds utilisent les fichiers spciaux de priphriques /dev/aloadCn et /dev/aloadSEQ, ainsi que tous les fichiers spciaux de priphrique du rpertoire /dev/snd/, tous de numro de code majeur 116. Les pilotes ALSA tant galement capables de simuler le comportement des pilotes OSS par compatibilit, ils utilisent le numro de code majeur 14 galement. Lorsque le noyau dsire accder aux fonctionnalits d'ALSA ou d'OSS, il cherche donc charger, selon les fichiers spciaux de priphriques utiliss, les modules char-major-116 ou char-major-14. Le premier doit tre associ au module snd d'ALSA, alors que le second doit tre associ au module DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 277
soundcore. Ces modules prennent en charge respectivement les systmes de son d'ALSA et d'OSS. Le fichier /etc/modprobe.conf devra donc dfinir ces alias comme suit : # Permet le chargement des pilotes ALSA : alias char-major-116 snd
# Permet le chargement des pilotes OSS ou l'mulation des pilotes OSS par ALSA : alias char-major-14 soundcore Les systmes de son grs par ces modules permettent de prendre en charge plusieurs cartes son. Chaque carte son est bien entendu rfrence par le numro de code mineur du fichier spcial de priphrique utilis. Il faut donc dfinir, pour chaque carte son, le module du gestionnaire de priphrique de cette carte son. Cela se fait en dfinissant les alias pour les noms de modules gnriques snd-card-n pour ALSA et sound-slot-n pour OSS, o 'n' est le numro de la carte son. Par exemple, si l'on dispose d'une carte son SoundBlaster 128 avec les pilotes ALSA, le module utiliser est snd-ens1370 ou snd-ens1371 selon le modle (parce que ces cartes son sont en ralit des cartes Ensoniq). Le fichier de configuration /etc/modprobe.conf devra donc contenir les alias suivants : # La premire carte son est gre par le module snd-ens1371 : alias snd-card-0 snd-ens1371 alias sound-slot-0 snd-card-0
Si vous dsirez utiliser les pilotes OSS, le module utiliser pour ce type de carte se nomme es1371, ce qui fait que le fichier de configuration /etc/modprobe.conf se rduit dans ce cas :
# La premire carte son est gre par le module es1371 : alias sound-slot-0 es1371 Les modules des gestionnaires de priphriques peuvent prendre des options permettant de contrler les ressources matrielles et les fonctionnalits prises en charge. Vous pourrez trouver la liste des diffrents modules de pilotes de priphriques disponibles, ainsi que leurs options, dans la documentation fournie dans le rpertoire Documentation/sound/ des sources du noyau. Enfin, les pilotes de priphriques OSS n'implmentent pas forcment l'ensemble des fonctionnalits classiques des cartes son. Lorsqu'une de ces fonctionnalits est demande, le pilote peut donc demander le chargement d'un module complmentaire. Le nom utilis par le noyau pour ce module est sound-service-n-m , o 'n' est le code majeur du fichier spcial de priphrique de la carte son et m le code de la fonctionnalit utilise. Ces codes correspondent aux numros de codes mineurs des fichiers spciaux de priphriques permettant d'accder ces fonctionnalits. Ainsi, la valeur 0 correspond au mixeur (fichier spcial de priphrique /dev/mixer), la valeur 2 correspond au port MIDI (fichier spcial de priphrique /dev/midi), et les codes 3 et 4 au canal de la carte son (fichiers spciaux de priphriques /dev/dsp et /dev/audio). La liste des fichiers spciaux de priphriques utiliss par OSS peut tre consulte dans le fichier Documentation/devices.txt. Si vous utilisez les pilotes ALSA, vous devrez ajouter les alias suivants dans le fichier /etc/modprobe.conf afin de charger la demande les modules d'mulation des services OSS : # Charge les modules ALSA des services OSS : alias sound-service-0-0 snd-mixer-oss alias sound-service-0-1 snd-seq-oss alias sound-service-0-3 snd-pcm-oss alias sound-service-0-8 snd-seq-oss alias sound-service-0-12 snd-pcm-oss DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 278
8.3.2.4. Ajustage des paramtres audio avec ALSA Ces oprations vous permettront de faire fonctionner votre carte son pour toutes les oprations de base, savoir la lecture et l'enregistrement de fichiers son, le rglage du volume sonore et ventuellement la lecture des CD audio par l'intermdiaire de votre carte son (si, bien entendu, vous avez reli la sortie audio de votre lecteur de CD l'entre auxiliaire de votre carte son). Le rglage des paramtres de votre carte son peut tre ralis trs simplement si vous utilisez les pilotes ALSA. En effet, il existe une application en mode texte permettant de raliser ces rglages. Cette application se lance simplement avec la commande alsamixer Comme vous pouvez le constater, cette application prsente une interface trs simple, dans laquelle chaque canal de la carte son peut tre rgl indpendamment. Pour passer d'un canal l'autre, il suffit d'utiliser les flches droite et gauche, et pour rgler les volumes, d'utiliser les flches haut et bas du clavier. Vous pouvez galement rendre un canal compltement muet en appuyant sur la touche 'M'. Cette touche permet galement d'activer ou de dsactiver certaines fonctionnalits de votre carte son. Lorsque les rglages vous conviendront, vous pouvez simplement quitter alsamixer en appuyant sur la touche 'chap'. Les rglages raliss de cette manire ne sont pas permanents. Cela signifie que d'un redmarrage l'autre de la machine, les valeurs par dfaut seront reprises. ALSA fournit donc galement l'outil alsactl, qui permet d'enregistrer les paramtres des cartes son dans le fichier de configuration /etc/asound.conf. Pour cela, il suffit simplement d'appeler cette commande avec l'option store : alsactl store alsactl permet galement de restaurer les paramtres sauvegards, l'aide de son option restore. On aura donc tout intrt placer une ligne telle que celle-ci dans les fichiers d'initialisation de sa distribution, si ce n'est dj fait : alsactl restore Par ailleurs, pour les cartes son qui disposent d'un synthtiseur FM, il peut tre intressant d'activer cette fonctionnalit. Gnralement, les pilotes ALSA dsactivent cette fonctionnalit. Elle peut toutefois tre ractive en spcifiant le port d'entre / sortie du synthtiseur FM de la carte son l'aide de l'option fm_port. du module prenant en charge votre carte son. De mme, vous pourrez activer la gestion des pilotes MIDI en ajoutant l'option mpu_port et en indiquant le numro de port pour le port MIDI. Vous pouvez consulter le fichier de documentation Documentation/sound/alsa/ALSA- Configuration.txt des sources du noyau Linux pour plus d'informations ce sujet. En gnral, le numro de port utilis pour les synthtiseurs FM est le numro 0x388, et le numro du port MIDI est le 0x300. Par exemple, pour une carte son CMI, la ligne suivante pourra tre ajoute dans le ficher de configuration modprobe.conf : options snd-cmipci fm_port=0x388 mpu_port=0x300 Si vous dsirez compiler en dur le pilote de votre carte son, vous devrez fournir ces informations en ligne de commande l'amorage du noyau. Vous devez donc ajouter, pour chacun de ces paramtres, une option la ligne de commande du noyau. Par exemple, pour une carte son CMI, il faudrait ajouter les options suivantes dans le fichier de configuration du GRUB ou dans le fichier lilo.conf : snd-cmipci.index=0 snd-cmipci.fm_port=0x388 snd-cmipci.mpu_port=0x300
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 279
La premire option permet d'indiquer que cette carte son est la premire carte son du systme. Elle peut tre ncessaire si vous avez intgr dans le noyau des pilotes pour d'autres cartes son, relles ou virtuelles. Les autres options sont directement dduites de celles spcifies dans le fichier modprobe.conf. Enfin, vous aurez sans doute charger une banque de sons dans le pilote, que vous utilisiez une synthse FM ou une table d'chantillons. La manire de procder est toutefois diffrente selon la carte son utilise. Pour les cartes sons qui ne disposent que d'une mulation FM, il faut utiliser le programme sbiload. Ce programme est fourni avec les outils complmentaires d'ALSA, et disponible sur le site web du projet ALSA. Ce programme permet de charger dans le pilote les dfinitions des notes en modulation de frquence. La syntaxe est la suivante : sbiload -p65:0 --opl3 std.o3 drums.o3
Cette commande permet de charger dans le priphrique MIDI ALSA 65:0 les fichiers de dfinition de notes std.o3 et drums.o3. Ces fichiers sont fournis avec sbiload (pas dans toutes les versions toutefois). L'option --opl3 permet d'indiquer le format de ces fichiers. Quant l'option -p, elle permet d'indiquer le port MIDI dans le pilote ALSA. Les numros de ports disponibles peuvent tre obtenus avec la commande suivante :
sbiload -l Note : La commande sbiload ne fonctionne qu'avec les ports MIDI FM. Si le priphrique MIDI FM ne s'affiche pas, c'est que soit votre carte son n'en dispose pas, soit il n'a pas t activ dans le pilote et qu'il faut fournir l'option fm_port au module ou au noyau lors de son dmarrage, soit que le module snd-synth-opl3 n'a pas t charg. Pour les cartes son qui disposent d'une table d'chantillons, le programme utiliser est diffrent. Pour les cartes Sound Blaster AWE et Sound Blaster Live, ce programme se nomme sfxload. Ce programme peut tre trouv sur le site http://mitglied.lycos.de/iwai/awedrv.html. Vous trouverez galement les fichiers de patches utilisables avec les cartes son AWE sur ce site. Vous pouvez utiliser le fichier de dfinition des patches de Creative, que vous trouverez normalement soit sur une installation de Windows avec une carte son AWE, soit sur vos CD d'installation, soit sur Internet. Le fichier fourni par Creative se nomme synthgm.sbk. Pour charger les patches dans la mmoire de la carte, il suffit d'utiliser la commande suivante : sfxload /usr/lib/synthgm.sbk
(En supposant que le fichier 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 de prise en charge de votre carte son. 8.3.2.5. Fichiers MIDI et synthtiseurs logiciels Comme indiqu en introduction, la plupart des cartes son ne permettent pas de lire les fichiers MIDI au niveau matriel. Les fichiers MIDI sont des fichiers ne contenant que les partitions des morceaux enregistrs. Ils ne contiennent pas les donnes audio numriques comme c'est le cas pour les fichiers son classiques ou les pistes de CD audio. Cela explique leur taille rduite, mais pose un problme pour leur restitution. En effet, la lecture d'un fichier MIDI suppose que votre carte son dispose d'un jeu de sons numriss dans sa mmoire afin de pouvoir reconstituer le signal sonore partir des informations du fichier MIDI. Ces sons sont couramment appels des chantillons ( patches en Anglais), et ils peuvent tre enregistrs soit en dur dans la mmoire de la carte son, soit DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 280
chargs lors de son initialisation. Il va de soi que certaines cartes son ne disposent pas des fonctionnalits ncessaires la lecture des fichiers MIDI. Dans ce cas, il faut utiliser un programme externe capable de synthtiser le son partir d'chantillons enregistrs sur le disque dur et d'envoyer les donnes audio ainsi cres la carte son pour la lecture. Pour les cartes son ne disposant pas de la possibilit de lire les fichiers MIDI, il ne reste que la solution de l'mulation logicielle. Le meilleur synthtiseur logiciel sous Linux est incontestablement le logiciel Timidity. Timidity est un programme de lecture de fichiers MIDI trs complet, paramtrable et capable d'utiliser des banques de sons externes varies. De plus, le moteur de Timidity est utilis par de nombreux autres programmes, en particulier par le lecteur KMidi de KDE. L'auteur originel de Timidity ne le maintient plus. Cependant, d'autres programmeurs ont pris le relais et l'ont amlior pour en faire la version Timidity++. Cette dernire version peut tre trouve sur Internet sur le site de Timidity. L'archive que vous rcuprerez ne contient pas forcment le programme : il peut ne s'agir que des fichiers sources permettant de le gnrer. Les notions de fichiers 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. De plus, il est capable d'utiliser diffrentes interfaces pour lire et jouer les morceaux. En particulier, il peut tre utilis comme un serveur MIDI via ALSA afin que tous les programmes MIDI puissent y accder via linterface standard d'ALSA. De mme, il est capable de partager le canal audio de sortie de la carte son via le serveur de son aRts de KDE. Pour utiliser ces fonctionnalits, il faut configurer les sources avec la ligne de commande suivante : ./configure --prefix=/usr --enable-dynamic --enable-server \ --enable-interface=gtk,ncurse --enable-audio=arts,alsa,oss --enable-alsaseq Une fois cela fait, vous pourrez gnrer l'excutable avec la commande suivante : Make
et l'installer avec la commande :
make install
Cela installera Timidity dans le rpertoire /usr/bin/. La deuxime tape est bien entendu d'installer les fichiers 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. Cette collection a de plus l'avantage d'tre prconfigure pour l'emploi avec Timidity. Lorsque vous aurez install les fichiers de patches, vous devrez indiquer Timidity leur emplacement dans le systme de fichiers. Cette information doit tre stocke dans le fichier de configuration timidity.cfg du rpertoire /usr/share/timidity/. Vous pourrez vous inspirer du fichier fourni avec la collection de patches EAWPATS. Cependant, vous aurez modifier les chemins indiqus dans ce fichier, 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/lib/timidity . Notez que cette ligne est facultative et peut tre commente si vous n'avez pas dplac ce rpertoire. Le deuxime rpertoire est plus important, puisque c'est le rpertoire DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 281
d'installation des patches. Il s'agit cette fois de remplacer la ligne dir c:\eawpats par la ligne dir rpertoire , o rpertoire est le rpertoire o vous avez extrait les fichiers patches. Une fois que vous aurez termin ces modifications, vous pourrez lire un fichier MIDI simplement en utilisant la ligne de commande suivante : timidity fichier
o fichier est le nom du fichier MIDI lire. Si vous dsirez utiliser l'interface graphique de Timidity, vous n'avez qu' ajouter l'option -ig la ligne de commande prcdente. Enfin, si vous dsirez utiliser Timidity en tant que squenceur systme ALSA et permettre le mixage du flux audio qu'il produit avec les flux des autres applications par l'intermdiaire du serveur de son aRts de l'environnement de dveloppement de KDE, vous devrez utiliser les options -iA -OR -B2,8 - EFreverb=0. Les programmes MIDI devront ensuite se connecter sur le port MIDI 128:0 d'ALSA. L'installation de KMidi ne pose pas de problme particulier, puisqu'il est fourni avec KDE et que KDE est normalement inclus dans toute bonne distribution. La seule opration que vous ayez faire est simplement de modifier le fichier de configuration de KMidi pour lui indiquer l'emplacement des fichiers de patches. Or comme KMidi est bas sur les sources de Timidity, il utilise le mme fichier de configuration timidity.cfg que Timidity. Ce fichier est normalement situ dans le rpertoire /base/kde/share/apps/kmidi/config/, o base reprsente le rpertoire de base d'installation de KDE. Vous n'aurez donc qu' rpter les oprations faites sur le fichier de configuration de Timidity avec le fichier de configuration de KMidi. 8.3.3. Installation d'une carte graphique 3D De nos jours, toutes les cartes graphiques disposent d'une 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 n'existe 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 interfaces logicielles standards ont t dfinies. De toutes ces interfaces, Linux n'en gre qu'une seule : OpenGL. Cette interface a t dfinie par Silicon Graphics pour ses stations de travail haut-de-gamme et s'est impose comme tant la norme en la matire pour ce qui est de la 3D. Cette interface a l'avantage d'tre ouverte et disponible sur la plupart des systmes, qu'ils soient de type Unix ou non. La prise en charge de l'interface OpenGL est ralise deux niveaux sous Linux. La partie principale rside dans le serveur X qui, comme nous l'avons dj signal, n'est rien d'autre que le programme fournissant les services graphiques aux autres applications sous Unix. Cette partie est implmente par une extension de l'interface de programmation XWindow, que l'on 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 s'appuie donc pour cela sur un module du noyau, dont le but est de contrler les accs aux ressources matrielles et de garantir ainsi la stabilit globale du systme. La configuration des fonctionnalits 3D des cartes graphiques sous Linux ncessite donc d'intervenir la fois dans le noyau et au niveau du serveur X. Pour ce qui est du noyau, il faut tout d'abord s'assurer que les fonctionnalits d'accs direct au matriel sont bien supportes. Ces fonctionnalits sont couramment appeles DRI , ce qui est l'abrviation de l'anglais Direct Rendering Infrastructure . DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 282
Pour activer les fonctionnalits DRI, vous devrez, dans la configuration du noyau, valider l'option 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 X.org et par le noyau. En revanche, NVidia fournit un pilote pour Linux pour ces cartes, qui, bien qu'il n'utilise pas DRI, dispose galement d'un module du noyau et d'un module pour X.org. Quelle que soit votre carte graphique, vous aurez galement sans doute intrt activer le support du bus AGP dans le noyau, si bien sr votre carte graphique est une carte AGP. Pour cela, il suffit d'activer l'option /dev/agpgart (AGP support) dans le menu Character devices de la configuration du noyau, ainsi que le type de chipset utilis par votre carte mre. Une fois la configuration du noyau faite, vous pourrez le recompiler et l'installer. La manire de procder a t dcrite en dtail dans la Section 7.3. Vous devrez galement vous assurer que le fichier 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 qu'ils sont bien rfrencs dans le fichier modprobe.conf. La suite des oprations se passe alors au niveau de la configuration du serveur X de X.org. L'activation du support de l'AGP et d'OpenGL se fait simplement en rajoutant deux options dans le fichier de configuration /etc/X11/xorg.conf. 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 pilote fourni par NVidia pour X.org, il n'est pas ncessaire de demander le chargement du module DRI, car il ne l'utilise pas. Il est suppos ici que le serveur X utilis correspond bien la carte graphique et dispose des fonctionnalits 3D. Si ce n'est pas le cas, vous devrez sans doute rinstaller X.org. Les programmes utilisant OpenGL utilisent souvent une bibliothque complmentaire nomme GLUT. Cette bibliothque est fournie avec la couche d'mulation logicielle d'OpenGL MESA. Toutefois, la bibliothque GLUT n'est disponible que dans les programmes d'exemples de MESA. Vous devrez donc rinstaller MESA compltement si votre distribution ne fournit pas la bibliothque GLUT. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 283
8.3.4. Installation d'une carte d'acquisition vido Linux fournit toutes les fonctionnalits ncessaires la manipulation des flux de donnes vido par l'intermdiaire d'une interface de programmation nomme video4linux (ce qui se lit Video for Linux ). Linux est capable de grer la plupart des cartes d'acquisition TV du march et quelques-unes des cartes d'acquisition vido. Comme d'habitude, 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 lorsqu'on achte une carte d'acquisition TV. En pratique, quasiment toutes les cartes d'acquisition TV utilisent les circuits intgrs Bt848 ou un de leurs drivs, et Linux sait les grer sans problmes. Les cartes d'acquisition et de montage vido utilisent d'autres circuits plus puissants, dont les spcifications ne sont gnralement pas disponibles. Seule la configuration des cartes TV sera donc dcrite ci-dessous. Les applications, pour accder aux priphriques vido, utilisent l'un des fichiers spciaux de priphrique /dev/video*. Ces fichiers sont des fichiers 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 l'un de ces fichiers spciaux, qui sera utilis pour accder au priphrique vido par dfaut. Normalement, tous ces fichiers sont installs d'office dans le rpertoire /dev/ soit par les distributions, soit par udev au dmarrage du systme, et vous n'aurez donc gnralement pas les crer vous-mme. Le support de la vido sous Linux passe bien entendu par la configuration du noyau. Cette fois, il n'est pas certain du tout que le noyau fourni avec votre distribution supporte les cartes d'acquisition TV, aussi aurez-vous peut-tre recompiler vous-mme votre noyau. La manire de procder a t dcrite en dtail dans la Section 7.3. Sachez toutefois que les options valider dans la configuration du noyau se trouvent dans le menu Multimedia devices . Vous devrez activer l'option Video For Linux . Si vous compilez cette fonctionnalit sous la forme de module, celui-ci sera nomm videodev. Ce pilote se chargera de rpondre aux requtes du client sur les fichiers spciaux de priphrique /dev/video*. Lorsque vous aurez activ la fonctionnalit de vido pour Linux, vous aurez le choix des pilotes de cartes vido dans le sous-menu Video adapters . Il est recommand de compiler ces gestionnaires de priphriques sous la forme de modules, car il vous faudra sans doute spcifier des options afin d'adapter ces gestionnaires votre matriel. Note : La configuration des cartes bases sur la puce Bt848 (option de menu BT848 Video For Linux ) n'est accessible que si vous avez galement activ l'option I2C bit-banging interfaces du menu I2C support (lui-mme situ dans le menu Character devices ). De plus, le pilote prenant en charge les puces du type Bt848 ne prend pas en charge la gestion du son. Ces puces n'intgrent en effet pas de gestion du son, et ncessitent de brancher la sortie audio de la carte TV sur l'entre ligne d'une carte son. Toutefois, un mixeur est disponible. Celui-ci est pris en charge automatiquement pour les pilotes de son ALSA. Pour les pilotes OSS en revanche, un gestionnaire spcifique devra tre activ. L'option correspondante est l'option TV card (bt848) mixer support . Pour les puces Bt878, qui sont plus rcentes, une carte son intgre est fournie, et il existe un pilote complet ALSA et OSS, que l'on devra galement activer. Une fois le noyau recompil et install, il faut modifier les paramtres adapts votre matriel. En effet, bien que Linux soit parfaitement capable de dterminer les ressources requises par les cartes vido, il est rare que le matriel soit correctement identifi par les gestionnaires de priphriques. Cela est d au fait que les gestionnaires se basent plus sur les composants courants permettant de faire DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 284
l'acquisition 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, puisqu'il 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, et bien souvent le modle de tuner doit galement tre spcifi. Si vous avez compil les gestionnaires de priphriques sous forme de module, vous pourrez spcifier le type de carte et le type de tuner simplement dans le fichier de configuration /etc/modprobe.conf, l'aide des options du module du gestionnaire de priphrique adquat. Pour les cartes bases sur la puce Bt848, le gestionnaire de priphrique est pris en charge par le module bttv. Le type de carte peut lui tre communiqu l'aide de l'option card. Cette option peut prendre comme valeur un numro identifiant le modle de la carte. Les valeurs actuellement supportes sont indiques dans le fichier CARDLIST.bttv du rpertoire /usr/src/linux/Documentation/video4linux/bttv/. Le type de tuner quant lui doit tre spcifi l'aide de l'option uner. Cette option prend, elle aussi, une valeur numrique indiquant la nature du tuner utilis. Les valeurs supportes sont donnes dans le fichier CARDLIST.tuner. En pratique, il est fort probable que vous utilisiez le type de tuner 3, qui correspond au tuner Philips SECAM, car la France utilise le standard SECAM pour les missions TV. Ainsi, si vous disposez d'une carte MIRO PCTV (carte de type 1) base sur le tuner Philips SECAM, vous devriez avoir les lignes suivantes dans votre fichier modprobe.conf : # Nom du module de gestion de Video For Linux : alias char-major-81 videodev
# Nom du module utiliser pour le premier priphrique vido : alias char-major-81-0 bttv
# Options du module de gestion du Bt848 : options bttv card=1 tuner=3
Vous devrez bien entendu adapter ces lignes selon votre propre configuration. Si vous ne dsirez pas utiliser les modules du noyau, vous devrez fournir ces paramtres au gestionnaire de priphrique via la ligne de commande du noyau. Les options utiliser peuvent alors tre dduites des options du module, comme on l'a expliqu dans la Section 8.1.1.3. Pour notre exemple, ces paramtres seraient les suivants : bttv.card=1 bttv.tuner=3 Si vous avez compil les fonctionnalits de l'interface I2C sous forme de module (option de menu I2C bit-banging interfaces ), vous aurez galement ajouter ces lignes dans votre fichier de configuration modprobe.conf : # Nom du module de gestion des fonctionnalits I2C : alias char-major-89 i2c-dev
# Activation de l'agorithme 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 n'est ncessaire que pour les cartes bases sur la puce Bt848. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 285
Enfin, si vous utilisez les pilotes OSS pour la gestion du mixer de votre carte d'acquisition vido (ce qui est ncessaire pour les cartes vido bases sur les puces Bt848, parce qu'ALSA ne fournit pas de pilote pour ces cartes l'heure actuelle), vous devrez dfinir les alias ncessaires au chargement des modules de cette carte lors de l'accs aux priphriques audio. Par exemple, pour une carte base sur la puce Bt848, les alias suivants doivent tre ajouts dans le fichier de configuration modprobe.conf : # Charge le pilote de la carte vido en tant que deuxime carte son : alias sound-slot-1 bttv
# Charge le mixer de la carte son de cette carte : alias sound-service-1-0 tvmixer Note : Vous pouvez rencontrer quelques problmes lors de la configuration de votre carte TV. Gnralement, si vous n'obtenez aucune image, c'est que vous vous tes tromp de tuner. Revoyez dans ce cas l'option ype du module tuner. Si vous obtenez bien une image, mais pas de son, c'est sans doute que vous vous tes tromp dans le type de carte, ou que vous avez oubli d'inclure 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 configuration du noyau ou modifier la valeur passe l'option card du module bttv. Dans tous les cas, n'hsitez 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 fichiers spciaux de priphriques /dev/videoX. Le symptme classique est dans ce cas que tout fonctionne parfaitement sous le compte root, mais pas sous les comptes utilisateurs. Dans ce cas, on pourra rsoudre ces problmes en crant un groupe d'utilisateurs video, auquel appartiendront tous les utilisateurs ayant le droit d'utiliser la carte d'acquisition TV, et de changer le groupe des fichiers spciaux de priphriques /dev/videoX. Enfin, l'utilisation des cartes d'acquisition TV ncessite d'activer les fonctionnalits DGA ou Xv du serveur X. Ces fonctionnalits permettent aux programmes d'accder directement la mmoire vido, et donc de faire l'incrustation de l'image dcode par la carte TV dans la surface d'affichage d'un cran. La manire d'activer les fonctionnalits DGA et Xv sera prcise dans le chapitre traitant de la configuration du serveur X. 8.3.5. Configuration des cartes rseau Le support des cartes rseau est trs complet sous Linux et la prise en charge d'une nouvelle carte revient souvent simplement ajouter le gestionnaire de priphriques de cette carte dans la configuration du noyau. La plupart des cartes rseau sont des cartes Ethernet compatibles soit avec les cartes NE2000, soit avec les cartes 3COM, aussi suffit-il en gnral d'activer le gestionnaire de priphriques pour l'une de ces cartes pour qu'elle soit utilisable. La configuration des gestionnaires de priphriques se fait dans le menu Networking support de la configuration du noyau. Il faut activer l'option Network device support en premier lieu, puis slectionner le gestionnaire de priphriques appropri dans le sous-menu Ethernet (10 or 100Mbit) . Ce menu prsente en premier lieu les gestionnaires de priphriques pour les cartes ISA, et regroupe les gestionnaires de toutes les autres cartes dans les sous-options de l'option EISA, VLB, PCI and on board controllers . Vous aurez donc certainement activer cette option et la sous-option correspondante au gestionnaire de priphriques de votre carte rseau. Vous pouvez activer ces options sous la forme de module du noyau ou non, le plus simple tant ici de ne pas utiliser les modules afin d'avoir viter de complter le fichier de configuration /etc/modprobe.conf. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 286
La compilation du noyau elle-mme est dcrite en dtail dans la Section 7.3 et ne sera donc pas reprise plus en dtail ici. Remarquez galement que la prise en charge de la carte rseau par un gestionnaire de priphriques ne suffit en aucun cas l'utilisation de l'ordinateur en rseau. En effet, il faut galement configurer l'ensemble des paramtres rseau du systme, ce qui sera dcrit dans le Chapitre 9. Le nombre des fonctionnalits rseau de Linux interdit de les dcrire toutes ici, veuillez vous rfrer ce chapitre pour plus de dtails. 8.3.6. Configuration des adaptateurs Wifi Le Wifi (abrviation de l'anglais Wireless Fidelity est une technologie permettant de mettre plusieurs ordinateurs en rseau par ondes radio. La plage de frquences utilise est situe dans la gamme des micro-ondes (2.44 GHz) et est soumise une rglementation stricte dans de nombreux pays, car elle est en partie rserve aux applications militaires. En pratique, seuls certains canaux sont donc utilisables, et des drogations peuvent tre ncessaires pour une utilisation en extrieur. De plus, cette plage de frquences est la mme que celle utilise par de nombreux autres appareils sans fil, comme les tlphones portables. Les communications sont donc fortement perturbables par ces appareils, ainsi bien sr que par les fours micro-ondes. Enfin, du fait mme que ce sont des ondes radio, la confidentialit et la scurit des communications peuvent tre compromises. Note : Comme pour toute onde proche des 2.4 GHz, l'influence des ondes radio Wifi sur les corps organiques humides n'est pas neutre (la problmatique se pose bien entendu galement pour les tlphones portables). En effet, les effets sont strictement les mmes que ceux des ondes des fours micro-ondes : ces ondes sont la frquence propre des molcules d'eau, qui entrent donc en rsonnance en leur prsence (cette interaction est due la polarit de la molcule H2O, elle mme due son asymtrie - les atomes d'hydrogne et d'oxygne ne sont pas en ligne - et la diffrence d'elctrongativit entre les atomes d'hydrogne et d'oxygne qui la constituent). Les molcules d'eau restituent ensuite l'nergie de l'onde par diffusion de leur agitation molculaire dans les molcules avoisinantes, ce qui provoque une augmentation de temprature. On est donc en droit de se poser la question du danger de l'utilisation de ces ondes pour l'organisme. En gnral, les puissances mises restent trs faibles, et leur influence dcroit de manire inversement proporionnelle au carr de la distance l'metteur, ce qui fait que le danger est relativement rduit. Toutefois, titre personnel, et sans prtendre avoir fait la moindre tude sur le sujet, je vous invite la prudence lors de l'utilisation d'ordinateurs ou de tlphones portables, en raison mme de leur proximit (note : je n'ai pas de tlphone portable). Notez galement que la chaleur directe dgage par ces appareils par effet Joule est certainement la plus nocive, de mme que leur utilisation prolonge pour l'quilibre mental... Plusieurs normes de transmission ont t dfinies pour spcifier les interactions entre les appareils Wifi, ainsi que les technologies de chiffrement utilises. La norme la plus rpandue est la norme 802.11b, qui permet d'atteindre un dbit de 11 Mbits/s thorique sur des distances allant jusqu' 300 mtres en extrieur (quelques dizaines de mtres en intrieur). Toutefois, la plupart des adaptateurs Wifi implmentent galement la norme 802.11g prsent. Cette norme permet en effet une compatibilit ascendante avec les quipements 802.11b d'une part (elle utilise la mme plage de frquences), et en constitue une amlioration consquente puisque le dbit thorique est relev 54 Mbits/s d'autre part (30 Mbits/s rls). Notez qu'une autre norme concurrente du 802.11g a t dfinie, mais, n'tant pas compatible avec les quipements existants, elle n'a pas eu autant de succs. Il s'agit de la norme 802.11a, qui utilise une plage de frquence 5 GHz. Les problmes d'interfrences sont donc moindres, mais la porte est galement rduite (plus la frquence d'une onde radio est leve, plus sa porte est rduite et plus elle est susceptible d'tre bloque par des objets). Ces normes Wifi dfinissaient galement un mcanisme de scurit primitif, qui peut tre considr comme absolument inefficace de nos jours (il s'agit du WEP). En particulier, les algorithmes utiliss n'taient pas fiables du tout et peuvent tre casss simplement par coute du traffic pendant une priode de temps relativement courte. De ce fait, de nouveaux mcanismes de scurits ont t dfinis (notamment le WPA et le WPA2). Enfin, la norme 802.11i, encore peu rpandue, a pour but DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 287
d'amliorer la scurit des communications en utilisant un vritable procd cryptographique. Cette norme peut tre transpose pour les appareils 802.11g et 802.11a. Comme vous pouvez le constater, le terme Wifi cache bien des choses complexes, et le choix d'une technologie sur une autre peut tre assez difficile. Malgr tous ces inconvnients, la technologie Wifi est trs pratique, car elle permet de connecter simplement des machines sans s'emmler les pattes dans les cbles rseau. La plupart des ordinateurs portables vendus disposent maintenant d'un adaptateur rseau sans fil Wifi, et il est trs facile d'en connecter un un ordinateur de bureau, soit avec une carte fille, soit grce un adaptateur USB (il existe mme des clefs USB dont l'encombrement est rduit celui d'une gomme). Il est donc certain que ces technologies sont appeles se dvelopper et se gnraliser. Certains matriels Wifi ne sont pas supports nativement par Linux, soit parce que les constructeurs ne dsirent pas fournir les informations permettant aux dveloppeurs de faire un gestionnaire de priphrique libre, soit parce que les constructeurs n'ont eux-mmes pas le droit de divulguer la technologie utilise dans leurs appareils ou parce que les rglementation locales sur les missions radio leur impose de tenir secret les caractristiques de leurs appareils. Le choix d'un priphrique Wifi doit donc se faire avec prcaution. Vous pourrez consulter le site Web de Jean Tourrilhes pour savoir le matriel support par les diffrents pilotes disponibles. La prise en charge des priphriques Wifi ncessite d'activer le support du Wifi dans le noyau lui- mme. Cela peut tre fait en activant l'option Wireless LAN drivers (non-hamradio) & Wireless Extensions du menu Network device support du noyau. Cette option vous donnera galement accs aux options de configuration des pilotes de priphriques Wifi (sauf pour certains priphriques USB, qui sont accessibles dans les options de configuration des priphriques USB). Certains pilotes ne sont pas encore intgrs au noyau, et vous devrez peut-tre chercher sur Internet le pilote correspondant votre matriel. Plusieurs projets ont en effet t crs afin de prendre en charge le Wifi sous Linux. Vous trouverez galement sur le site de Jean Tourrilhes des liens vers les projets des pilotes pour les autres puces Wifi. Si aucun pilote Linux n'est disponible pour votre matriel, vous pourrez vous rabattre sur le projet NDISWrapper (http://ndiswrapper.sourceforge.net). Ce projet a pour but de simuler la couche rseau NDIS de Windows XP afin de pouvoir charger les gestionnaires de priphriques pour Windows fournis par les fabricants, et les duper en leur faisant croire qu'ils s'excutent bien sous Windows. Cette technique reste toutefois une magouille et ne rsout bien entendu pas le problme de la disponibilit de pilotes libres. L'installation des pilotes ne sera pas dtaille plus ici, car la manire de procder est spcifique chaque matriel. Dans le cas de NDISWrapper, l'installation se fait simplement en installant NDISWrapper lui-mme et en excutant la commande suivante : ndiswrapper -i driver.inf
o driver.inf est le fichier .inf du gestionnaire de priphrique pour Windows de votre matriel. Cette commande copie les fichiers ncessaires de ce gestionnaire de priphrique dans le rpertoire /etc/ndiswrapper/ et dfinit la configuration pour l'utilisation de ce priphrique. Une fois cela fait, le chargement du module ndiswrapper suffit pour charger le gestionnaire de priphrique :
modprobe ndiswrapper
Pour les autres gestionnaires de priphriques, il suffit gnralement galement de charger le module du noyau du pilote, et ventuellement de charger un firmware. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 288
Lorsque le pilote est charg, une nouvelle interface rseau wlanX apparat dans le systme, o X est le numro de l'interface rseau sans fil. Cette interface peut ensuite tre utilise comme n'importe quelle interface rseau, ceci prs qu'il faut au pralable configurer les paramtres du rseau sans fil. En particulier, il est ncessaire de spcifier le mode de fonctionnement, le canal utiliser et l'identifiant du rseau sans fil. Une clef de chiffrement des communications peut galement tre donne (cela ne garantit toutefois pas une scurit absolue, sauf en 802.11i). Les rseaux Wifi peuvent tre tablis de plusieurs manires. S'il s'agit de relier deux machines par Wifi, le mode de fonctionnement utilis le plus simple est le mode ad hoc . Dans ce mode, les deux machines peuvent communiquer directement, sans avoir recours une infrastructure quelconque. Inversement, si plusieurs machines doivent tre relies un rseau existant (ou simplement entre elles), il est ncessaire d'installer ce qu'on appelle un point d'accs , qui synchronisera les communications entre toutes ces machines. Dans ce cas, le mode de fonctionnement utilis est le mode manag . Le canal permet de spcifier la frquence utilise par les priphriques sans fil. Bien entendu, toutes les machines devant participer la communication doivent utiliser le mme canal. Le canal est donc un des paramtres essentiel du rseau. Il existe plusieurs canaux, mais en pratique, seuls quelques-uns peuvent tre utiliss librement en France. Il s'agit des canaux 10 (2457 MHz), 11 (2462 MHz), 12 (2467 MHz) et 13 (2472 MHz). Comme on peut tre amen crer plusieurs rseaux Wifi utilisant un mme canal, il est ncessaire de pouvoir les distinguer afin d'viter de mlanger les transmissions. Deux possibilits s'offrent alors l'utilisateur : soit on utilise ce qu'on appelle un numro de rseau virtuel ( Network ID ), soit on utilise un nom de rseau. La premire solution ne permet de dfinir qu'une cellule du rseau, alors que la deuxime permet de regrouper plusieurs de ces cellules et autorise un utilisateur passer d'une de ces cellules l'autre (une cellule est une zone gographique prise en charge par un point d'accs). Tous ces paramtres peuvent tre spcifis avec la commande iwconfig, sauf pour certains pilotes de priphriques non standards qui ncessitent des commandes spcifiques. La syntaxe gnrale de cette commande est la suivante : iwconfig interface options
o interface est le nom de l'interface rseau sans fil (par exemple wlan0), et options est la liste des options permettant de dfinir les paramtres du rseau sans fil. Les principales options sont rcapitules dans le tableau suivant :
Option Signification channel Numro du canal. mode Mode de fonctionnement. essid Nom de rseau. nwid Numro de rseau. key Clef de chiffrement WEP du rseau. Les modes de fonctionnement les plus courants sont le mode ad hoc pour le mode ad hoc, et le mode managed pour l'utilisation d'un point d'accs. La page de manuel de iwconfig vous donnera la liste des autres modes utilisables. Par exemple, pour configurer une interface sans fil sur le canal 11, en mode manag et avec un nom de rseau "MonWLAN", il faudra utiliser la commande suivante : DOCUMENT SUR LINUX
la suite de cette commande, l'interface wlan0 sera utilisable comme n'importe quelle interface rseau. Si vous dsirez dfinir une clef de chiffrement pour votre rseau sans fil, vous devrez utiliser l'option 'ey. L'utilisation du chiffrement peut tre facultative en Wifi, sauf si l'interface est configure pour n'accepter que les communications chiffres. L'option 'ey peut donc accepter, en plus de la clef de chiffrement (dont la taille est de 64 ou 104 bits, soit 8 ou 13 octets), un paramtre indiquant si le chiffrement est obligatoire ou non. Ce paramtre peut prendre la valeur open si le chiffrement est facultatif, restricted s'il est obligatoire, ou tout simplement off si le chiffrement doit tre dsactiv. Par exemple, pour imposer l'utilisation d'une clef de chiffrement sur l'interface wlan0, la commande suivante devra tre utilise : iwconfig wlan0 key restricted 74151B6DCD98D808
Comme vous pouvez le constater, la clef est fournie en hexadcimal (c'est--dire en base 16, les chiffres au dessus de 9 tant reprsents par les lettres A F). Pour sortir du mode chiffr, la commande suivante pourra tre utilise :
iwconfig wlan0 key off Sachez toutefois que le chiffrement WEP n'est pas fiable du tout, et qu'il ne faut pas se reposer dessus. Le chiffrement WPA, bien que n'tant pas encore support par tous les adaptateurs et tous les pilotes, est donc privilgier. Outre l'utilisation d'algorithmes de chiffrement plus volus, le chiffrement WPA permet de rengocier rgulirement les clefs de chiffrement utilises par les interlocuteurs. Sous Linux, cette ngociation priodique est la charge du dmon wpa_supplicant. Ce dmon prend en charge tous les aspects de la liaison Wifi, et rend par consquent obsolte l'utilisation de la commande iwconfig pour la configuration du rseau sans fil. En effet, cette configuration doit se faire dans le fichier de configuration /etc/wpa_supplicant.conf, dont vous trouverez un exemple ci-dessous : ctrl_interface=/var/run/wpa_supplicant network={ ssid="MonRezo" key_mgmt=WPA-PSK psk=1cc5a2db98bfd1387de265397772b9ea36e4d049e17fd1d660c014576d5e71a4 proto=WPA } L'option ctrl_interface permet de spcifier un rpertoire dans lequel wpa_supplicant placera des fichiers servant de canaux de communication avec des programes complmentaires permettant de le contrler et d'obtenir des informations sur l'tat de la liaison Wifi. La dfinition des paramtres des rseaux sans fil se fait ensuite dans une section network, comme vous pouvez le constater. Le nom du rseau est obligatoire. Il doit tre dfini avec l'option ssid. Le protocole de gestion de clef utilis peut ensuite tre spcifi avec l'option key_mgmt. Dans cet exemple, il a t choisi d'utiliser une clef secrte partage ( PSK , abrviation de Private Shared Key ) par toutes les machines connectes au rseau sans fil. Cette configuration est trs classique, et convient en particulier pour tous les modems routeurs sans fil que l'on peut trouver dans le commerce. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 290
La clef elle-mme doit tre spcifie avec l'option psk. Cette option peut prendre une chane de caractres ASCII entre guillemets (exactement comme on a donn le nom du rseau l'option ssid), ou une valeur hexadcimale. La commande wpa_password permettra de crer une telle valeur partir d'une chane de caractre et du nom du rseau. Enfin, l'option proto permet d'indiquer le protocole de chiffrement utilis. Dans le cas prsent, nous avons utilis le protocole WPA, qui rengocie les clefs rgulirement. Le protocole WPA2, intrinsquement plus sr, aurait pu tre utilis, mais n'a pas t choisi parce que les points d'accs les plus anciens ne savent pas grer ce protocole. Note : Il est possible de dfinir plusieurs rseaux sans fil dans le fichier de configuration, dans ce cas, wpa_supplicant utilisera le premier rseau dfini dans le fichier, en privilgiant les rseaux utilisant les protocoles de chiffrement les plus srs. Cet exemple de fichier de configuration ne prsente que le cas d'un rseau sans fil classique, dont les diffrentes machines partagent une mme clef secrte de chiffrement. Sachez toutefois que wpa_supplicatn sait grer des configurations plus compltes, dans lesquels des mcanismes de chiffrement plus volus et des serveurs d'authentification peuvent tre utiliss par exemple. Ces configurations ne seront pas abordes ici. Une fois le fichier de configuration des rseaux sans fil mis en place, il ne reste plus qu' lancer le dmon wpa_supplicant. Typiquement, la commande utiliser est la suivante : wpa_supplicant -Bw -c/etc/wpa_supplicant.conf -Dwext -iwlan0
Les options B et w permettent respectivement de faire passer le processus ainsi lanc en arrire plan, et de lui demander d'attendre que l'interface rseau utiliser soit cre, si elle ne l'est pas encore lors de son lancement. Le nom de cette interface est spcifi avec l'option i, et l'interface de programmation utilise est spcifie avec l'option . Dans le cas prsent, l'interface de programmation utilise est l'interface des extensions sans fil classique de Linux ( wext , abrviation de Wireless Extentions ). Enfin, l'option c permet de spcifier le fichier de configuration utiliser. Il s'agit ici du fichier que l'on vient de dcrire dans les paragraphes prcdents. Sachez enfin que la liste des rseaux sans fils disponibles peut tre rcupre avec l'option scan de la commande iwlist. Par exemple, la commande suivante vous affichera tous les rseaux sans fils disponibles via l'interface rseau wlan0, ainsi que leurs caractristiques : iwlist wlan0 scan
La commande iwlist accepte d'autres options, dont vous trouverez la liste et la description dans sa page de manuel. Pour finir, la commande iwconfig, utilise sans option, affiche la configuration des interfaces sans fil du systme. En particulier, vous y trouverez le mode de fonctionnement, le numro de canal et les identifiants du rseau, ventuellement la clef de chiffrement utilise, ainsi que la qualit du signal radio. La page de manuel de iwconfig vous donnera de plus amples informations sur la manire dont ces informations peuvent tre interprtes. 8.4. Configuration des ports de communication Les ports de communication sont les seuls moyens de communication de l'ordinateur avec d'autres appareils, et sont donc essentiels au mme titre que les rseaux. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 291
Historiquement, le plus vieux type de port de communication utilis est sans doute le port srie, qui permet de connecter une multitude de priphriques en raison de sa grande simplicit. Les ports parallles sont galement courants, et sont encore souvent utiliss pour connecter les imprimantes. Cependant, ces ports souffrent de dfauts indniables, dont l'un des principaux est sans doute le faible dbit de donnes qu'ils autorisent. Ils ne peuvent donc pas tre utiliss pour les applications les plus exigeantes. C'est pour cela que les ports USB (abrviation de l'anglais Universal Serial Bus ) et IEEE1394 (alias FireWire ) ont t invents. Cette section prsente la manire de configurer les diffrents ports de communication actuellement utiliss, savoir le port parallle, les ports srie standards, et enfin les ports USB et IEEE1394. 8.4.1. Prise en charge des priphriques ISA standards La plupart des PC disposent encore de priphriques d'entre/sortie standards ISA intgrs aux cartes mres, comme les ports sries et les ports parallles, mme s'ils ne permettent plus de brancher des cartes filles ISA. Il est donc encore ncessaire de prendre en charge ces fonctionnalits au niveau du noyau, mme si vous ne disposez d'aucun priphrique ISA. Pour cela, il suffit d'activer les options Plug and Play support et Plug and Play BIOS support du menu Plug and Play support de la configuration du noyau. Ces options permettent de prendre en charge les ressources Plug and Play des cartes mres, et donc de raliser la configuration automatique des ports parallles et srie de l'ordinateur. 8.4.1.1. Configuration du port parallle La configuration du port parallle sous Linux est relativement automatique. Il suffit en effet, dans le programme de configuration du noyau, d'activer les options Parallel port support , PC-style hardware , Use FIFO/DMA if available et IEEE 1284 transfer modes du menu Parallel port support . Si vous dsirez connecter une imprimante sur votre port parallle, ce qui est gnralement le cas, il vous faudra galement activer l'option Parallel printer support du menu Character devices . De mme, si vous dsirez connecter un disque dur, un lecteur de CD-ROM ou un lecteur de bande sur votre port parallle, vous devrez activer l'option Parallel port IDE device support du menu Block devices , ainsi qu'au moins une des sous-options pour le type de priphrique utiliser et un des modules de prise en charge des protocole de communication sur port parallle. Pour des raisons de compatibilit, le gestionnaire de ports parallles utilise par dfaut une interrogation priodique pour dterminer l'tat des ports. Cela consomme gnralement des ressources de calcul, mais c'est une technique fiable. Toutefois, si votre matriel le permet, il est possible de le configurer pour utiliser une interruption matrielle, et soulager ainsi le processeur de cette tche. Nous allons donc voir comment configurer le port parallle ci-dessous. Afin d'utiliser une interruption matrielle pour le port parallle, il est ncessaire de spcifier explicitement la ligne de cette interruption. Cela peut se faire avec l'option irq du module prenant en charge le port parallle. Sur les ordinateurs de type PC, le nom de ce module est parport_pc , mais, comme on l'a vu dans la Section 8.1.1, le noyau demande toujours le chargement du module parport_lowlevel pour des raisons de portabilit. Il faut donc dfinir un alias dans le fichier de configuration /etc/modprobe.conf. Outre la ligne d'interruption utiliser, le module parport_pc peut prendre en paramtre une autre option permettant d'indiquer le port d'entre / sortie qu'il doit utiliser pour accder au port parallle. Cette option est l'option io. En gnral, le port utilis est le port numro 378h et la ligne d'interruption est souvent la 7. Les options suivantes doivent donc tre dfinies dans le ficher modprobe.conf pour obtenir un fonctionnement optimal du port parallle sous Linux : DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 292
alias parport_lowlevel parport_pc options parport_pc io=0x378 irq=7 Dautres options pourront tre dfinies dans le fichier de configuration modprobe.conf pour prendre en charge les priphriques de type bloc connects sur port parallle. Cela est inutile pour les imprimantes connectes sur le port parallle. Si l'on dsire intgrer le gestionnaire de priphrique du port parallle dans le noyau et faire en sorte qu'il utilise les paramtres dtects automatiquement pour ce port, la solution la plus simple est de fournir l'option parport du noyau et de lui affecter la valeur auto : parport=auto
Cela activera automatiquement l'utilisation de la ligne d'interruption du port parallle. Les autres paramtres du port parallle peuvent tre trouvs dans le fichier kernel-parameters.txt de la documentation du noyau. 8.4.1.2. Configuration des ports srie Les ports srie fournis en standard sur les cartes mres sont dtects et configurs automatiquement par le noyau lorsque l'ordinateur dmarre. Pour que cela fonctionne, il suffit que l'option Standard/generic (8250/16550 and compatible UARTs) serial support du menu Character devices soit active. Cela dit, il se peut que votre ordinateur contienne un port srie non standard, ou que vous ayez slectionner des options spcifiques pour votre matriel. Il vous faudra, dans ce cas, activer les options complmentaires relatives aux ports srie dans le menu Character devices . Le noyau n'est, en gnral, capable d'initialiser que les ports srie standards intgrs dans les cartes mres (c'est--dire les ports COM1 COM4), auxquels on accde, sous Linux, par l'intermdiaire des fichiers spciaux de priphriques /dev/ttyS0 /dev/ttyS3. Pour les autres ports srie, il peut tre ncessaire de les initialiser manuellement, par exemple dans un fichier de configuration lanc au dmarrage du systme. Cette initialisation se fait l'aide de la commande setserial, dont la syntaxe simplifie est la suivante : setserial fichier [uart type] [port adresse] [irq ligne]
o fichier est le fichier spcial de priphrique permettant d'accder au port srie initialiser, type est le type de port srie utilis, adresse est son adresse d'entre / sortie et ligne est la ligne d'interruption qu'il utilise. La commande setserial dispose de nombreuses autres options. Je vous invite en lire la page de manuel pour les dcouvrir. Une fois le port srie correctement initialis, il est possible de fixer les paramtres de la ligne de communication avec la commande stty. Comme on l'a dj vu prcdemment, cette commande permet de fixer tous les paramtres des lignes de communication des terminaux et non seulement les paramtres des lignes srie, et elle dispose donc d'un grand nombre d'options. Nous n'allons nous intresser ici qu'aux options utiliss pour les lignes srie. La page de manuel de stty pourra tre consulte pour plus de dtails. La syntaxe utiliser pour lire les paramtres de communication d'une ligne srie est la suivante : stty -a -F priphrique
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 293
o priphrique est le fichier spcial de priphrique de la ligne. Si vous excutez cette commande, vous constaterez qu'un grand nombre d'information est donn. Les informations les plus utiles sont sans doute speed, qui donne la vitesse de la ligne srie, csN, qui donne le nombre N de bits de donnes par caractre, [-]parenb, qui indique si un bit de parit est utilis ou non (auquel cas le caractre '-' est prsent), [-]parodd, qui indique le type de parit utilise (paire ou impaire selon la prsence ou l'absence du caractre '-'), et [-]cstopb, qui indique le nombre de bits de stop utiliss (un ou deux selon la prsence ou l'absence du caractre '-'). L'option [-]crtscts indique si le contrle de flux matriel est utilis ou non. titre d'exemple, voici une sortie typique de la commande stty sur le premier port srie :
speed 9600 baud; rows 0; columns 0; line = 0; intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <indfini>; eol2 = <indfini>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0; -parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke Les mmes options peuvent tre utilses pour fixer les paramtres de la ligne de communication. La ligne de commande utiliser est alors la suivante : stty -F priphrique options Il existe une diffrence cependant : le paramtre permettant de fixer la vitesse de la ligne est dcompose en deux options ispeed pour le flux de donnes entrant et ospeed pour le flux de donnes sortant. On peut fixer la vitesse de la ligne avec l'option ispeed. Par exemple, pour faire passer la ligne de communication du deuxime port srie 115200 bauds, 7 bits de donnes, un bit de stop et une parit paire, il faut utiliser la ligne de commande suivante : stty -F /dev/ttyS1 ispeed 115200 cs7 -cstopb parenb parodd
Il est important de bien configurer les ports srie avec les mmes paramtres de ligne que ceux utiliss par les priphriques qui y sont connects pour que la communication se fasse correctement. 8.4.2. Installation des priphriques USB Bien qu'ayant eu quelques difficults ses dbuts, le port USB est dsormais en pleine expansion. Il s'agit d'une 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 pour l'USB 1.1, et de 480 Mbits/s pour l'USB 2.0 ; capacit de connexion des priphriques chaud et dtection automatique par le systme d'exploitation ; possibilit d'alimentation des priphriques par le bus lui-mme, vitant ainsi d'avoir des cbles supplmentaires pour les priphriques consommant peu d'lectricit. Tous ces avantages font que le bus USB est appel remplacer les ports srie que l'on connat, et que l'on n'utilise plus dsormais que pour les modems, les vieilles souris srie et quelques appareils extrieurs. Notez que la simplicit du port srie fera qu'il restera encore prsents sur bon nombre DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 294
d'appareils pour plusieurs annes encore, mais les priphriques informatiques risquent de s'en dtourner de plus en plus. La gestion de l'USB sous Linux se base profondment sur les mcanismes de dtection dynamique des priphriques connectables chaud. Les gestionnaires de priphriques sont donc gnralement des modules du noyau chargs automatiquement lorsque ces priphriques sont dtects. Il est toutefois galement possible d'intgrr ces gestionnaires au sein du noyau, et de laisser les oprations de configuration des priphriques (chargement du firmware, cration des fichiers spciaux de priphriques par udev et configuration du matriel) se faire via les mcanismes de gestion des priphriques amovibles. Linux est capable d'utiliser la plupart des priphriques USB existant actuellement sur le march. Au niveau du noyau, la configuration des priphriques USB se fait dans le menu USB support . Il faut simplement activer l'option Support for USB , slectionner un gestionnaire pour le port USB et choisir les gestionnaires des diffrents types de priphriques que l'on voudra connecter sur la machine. Il est impratif d'activer l'option USB device filesystem afin de permettres certains outils d'accder, via le rpertoire /proc/bus/usb/ du systme de fichiers virtuel /proc/, aux priphriques USB connects l'ordinateur. Ce systme de fichiers doit tre mont l'aide de la commande suivante : mount -t usbfs none /proc/bus/usb
pour pouvoir tre utilis. Il est galement possible de le monter automatiquement dans le fichier /dev/fstab. En fait, il existe trois types d'interfaces USB sur le march : les interfaces EHCI (abrviation ed l'anglais Enhanced Host Controler Interface ), qui prennent en charge l'USB 2.0, les interfaces UHCI (abrviation de l'anglais Universal Host Controller Interface ), spcifies par Intel et que les contrleurs de la plupart des cartes mres utilisent (chipsets Intel et VIA), et les interfaces OHCI ( Open Host Controller Interface ), spcifies par Compaq, et qui sont utilises par les chipsets Compaq et ALi principalement. Les ports USB 2.0 comprennent galement un port USB 1.1 UHCI ou OHCI, qui permet donc de connecter les anciens priphriques USB. La configuration de l'USB se restreint donc simplement la slection des pilotes ncessaires pour votre matriel (option EHCI HCD (USB 2.0) support si vous disposez d'un port USB 2.0, et le pilote UHCI UHCI HCD (most Intel and VIA) support ou le pilote OHCI OHCI HCD support ). Notez que le pilote EHCI ne gre que la partie USB 2.0 de votre contrleur USB, et que vous devez galement inclure le support UHCI ou OHCI pour pouvoir utiliser les priphriques USB 1.1. Comme vous pouvez le constater dans le menu de configuration 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 d'inclure ces fonctionnalits sous forme de modules afin de permettre le chargement dynamique des gestionnaires de priphriques. Cela est ncessaire pour la configuration des priphriques connects chaud dans le systme. Les options les plus importantes sont sans doute USB Audio support , pour la prise en charge des priphriques USB audio, USB Printer support , pour toutes les imprimantes USB et USB Mass Storage support , pour la prise en charge des clefs USB et de la majorit des appareils photos numriques. Les scanners USB sont pris en charge automatiquement par les logiciels et ne requirent pas de configuration particulire au niveau du noyau. Les priphriques d'entre tels que le clavier et la souris devront, si possible, tre inclus directement au sein du noyau afin d'viter de se retrouver sans clavier et sans souris au dmarrage, en cas de problme dans la configuration du systme. Notez qu'il existe deux types de pilotes pour les priphriques d'entre : un pilote gnral (option USB Human Interface Device (full HID) support), qui fonctionne DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 295
avec tous les priphriques d'entre du menu Input core support , et des pilotes simplifis (options du sous-menu USB HID Boot Protocol drivers ), que l'on utilisera pour raliser des systmes embarqus ou des noyaux lgers. Il est videmment recommand d'utiliser le premier pilote, si rellement le support du clavier USB est ncessaire (normalement, les claviers USB sont pris en charge par le BIOS de l'ordinateur et apparaissent exactement comme des claviers classiques pour le systme d'exploitation). Il est fortement recommand, si l'on dsire utiliser des priphriques USB, d'activer les fonctionnalits de chargement dynamique des modules, de gestion des priphriques connectables chaud et de chargement des firmware automatique de Linux. 8.4.3. Installation des priphriques IEEE1394 Le bus IEEE1394 (initialement dnomm bus FireWire) est un bus srie grande vitesse, capable de transfrer des donnes avec un trs grand dbit (400 mgabits par secondes). Ce bus peut tre utilis pour connecter de nombreux priphriques (disques dur et lecteurs de CDROM externes par exemple), mais sa principale utilisation reste pour les transferts de donnes vido provenant des camscopes numriques. Certaines cartes mres disposent d'un port IEEE1394 intgr, mais la plupart ncessitent l'ajout d'une carte fille PCI. La plupart de ces cartes sont vendues en tant que cartes de montage vido et disposent de deux ports IEEE1394 afin de permettre une entre et une sortie du flux vido. Le bus IEEE1394 dispose d'avantages indniables, puisqu'il permet de brancher et de dbrancher un priphrique chaud (c'est--dire sans redmarrer l'ordinateur), les donnes sont transfres en numrique (donc sans perte de qualit pour les squences vido), et de piloter les appareils qui y sont connects (ce qui permet de contrler par exemple un camscope partir d'un logiciel de montage vido). Il est galement possible d'utiliser le bus IEEE1394 pour connecter deux ordinateurs en rseau, bien que cette fonctionnalit soit encore exprimentale. Linux dispose des pilotes permettant d'utiliser les ports IEEE1394 de manire gnrique. Cependant, il faut bien le reconnatre, les logiciels spcifiques aux diffrents types d'appareils sont encore trs rares ou incomplets. Cet tat de fait est particulirement vrai en ce qui concerne les camscopes numriques, pour lesquels il n'existe quasiment aucun logiciel de montage vido dont la qualit s'approche de celle de ceux qui ont t dvelopps pour Windows. Cela dit, les autres priphriques tels que les disques durs et les lecteurs de CD-ROM externes sont mieux supports, et la configuration du port IEEE1394 peut tre ralise compltement en attendant que des logiciels plus volus ne voient le jour. Vous pouvez obtenir les dernires informations concernant le support des priphriques FireWire sous Linux sur le site de linux1394. 8.4.3.1. Configuration du noyau La prise en charge du bus IEEE1394 au niveau du noyau est ralisable par l'intermdiaire des options du menu IEEE 1394 (FireWire) support (EXPERIMENTAL) . Comme le support des priphriques IEEE1394 sous Linux en est encore ses balbutiements, ce menu ne peut tre accd que si l'on a activ l'option Prompt for development and/or incomplete code/drivers du menu Code maturity level options . Les principales options utilisables sont les suivantes : l'option IEEE 1394 (FireWire) support (EXPERIMENTAL) , qui est l'option principale qui active toutes les autres options. Il faut donc imprativement activer cette option et rpondre 'Y' ; l'option Texas Instruments PCILynx support , qui permet de prendre en charge les cartes IEEE1394 bases sur la puce PCILynx de Texas Instrument. Ce ne sont pas les cartes les plus couramment utilises, aussi la rponse recommande est-elle 'N'. Si vous activez cette option, vous pourrez configurer des paramtres complmentaires du gestionnaire de priphriques avec les options Use PCILynx local RAM (utilisation de la mmoire embarque sur la carte DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 296
PCI) et Support for non-IEEE1394 local ports (utilisation de fonctionnalits complmentaires non FireWire de ces cartes) ; l'option OHCI-1394 support , qui active la prise en charge des priphriques IEEE1394 compatible OHCI (abrviation de l'anglais Open Host Controller Interface), qui sont les priphriques les plus courants prsent. La rponse recommande est 'Y' ; l'option OHCI-1394 Video support , qui permet de prendre en charge les camras vido numriques. Cette option ajoute galement une fonctionnalit intressante qui permet aux programmes de partager les donnes avec le gestionnaire de priphriques directement. Cela permet d'viter qu'une copie de ces donnes ne soit ralise entre la mmoire du noyau et la mmoire de l'application et d'obtenir ainsi de meilleures performances. La rponse recommande est bien videmment 'Y'. Cette option n'est toutefois disponible que pour les priphriques OHCI ; l'option SBP-2 support (Harddisks, etc.) , qui permet de prendre en charge les disques durs et les lecteurs de DVD connects sur bus IEEE1394. Ces lecteurs apparaissent alors comme des priphriques SCSI standards et pourront tre monts via l'un des priphriques /dev/sdx ; l'option Raw IEEE1394 I/O support , qui permet aux applications de communiquer directement avec le bus IEEE1394 par l'intermdiaire d'un fichier spcial de priphrique. Cette option est ncessaire au bon fonctionnement de la plupart des applications IEEE1394 et la rponse recommande est donc 'Y' ; l'option Excessive debugging output , qui active l'mission de messages de traces pour toutes les donnes survenant sur le bus IEEE1394. Cette option saturera vos fichiers de traces trs vite et n'est rellement utile que pour les dveloppeurs, aussi faut-il rpondre 'N'. Comme pour tous les priphriques sous Linux, les fonctionnalits IEEE1394 du noyau seront accessibles par l'intermdiaire de fichiers spciaux de priphriques situs dans le rpertoire /dev/. Les fonctionnalits vido seront accdes par l'intermdiaire d'un fichier spcial de priphrique de type caractre et de code majeur 172. De mme, l'interface de donnes brute active par l'option Raw IEEE1394 I/O support est expose par l'intermdiaire d'un fichier spcial de priphrique de type caractre et de code majeur 171. Vous devrez donc crer ces fichiers spciaux l'aide des deux commandes suivantes : mknod /dev/raw1394 c 171 0 mknod -m 666 /dev/video1394 c 172 0
Le numro de code mineur est utilis pour distinguer les diffrents ports IEEE1394 prsents dans la machine. Les lignes de commandes prcdentes ne montrent que la manire de crer les fichiers spciaux de priphriques que pour le premier port IEEE1394. 8.4.3.2. Installation des bibliothques complmentaires Les fonctionnalits IEEE1394 peuvent tre utilises par les applications directement par l'intermdiaire des fichiers spciaux de priphriques /dev/raw1394 et /dev/video1394, mais quasiment aucune ne le fait. En effet, des bibliothques spcifiques ont t crites afin de fixer les interfaces de programmation de Linux avec ces applications. Il est donc ncessaire d'installer ces bibliothques pour pouvoir utiliser les priphriques IEEE1394. Il est encore rare que ces bibliothques soient installes par les distributions, certainement parce qu'elles sont encore en cours de dveloppement. Leur installation ncessite donc de les compiler soi- mme, ce qui est une tche facile si on sait le faire, mais qui peut effrayer un dbutant. Rappelons une fois de plus que le support des priphriques IEEE1394 sous Linux est encore exprimental. La bibliothque de programme la plus importante est celle qui permet d'utiliser la fonctionnalit d'accs direct aux priphriques IEEE1394 par l'intermdiaire du fichier spcial de priphrique /dev/raw1394. Les fichiers sources de cette bibliothque peuvent tre trouvs sur le site du projet DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 297
libraw1394. Une autre bibliothque utilise par les programmes vido est la bibliothque libavc1394. Cette bibliothque permet en effet aux programmes de piloter les camscopes numriques par l'intermdiaire du bus IEEE1394. Enfin, les programmes d'dition vido peuvent avoir besoin de la bibliothque libdv, qui permet de manipuler les donnes au format DV (c'est--dire le format de donnes utilis par la plupart des camscopes numriques). Cette bibliothque ne fait pas proprement parler partie des bibliothques permettant de communiquer avec les priphriques IEEE1394, mais elle est extrmement utile. La compilation de ces bibliothques se fait classiquement avec les commandes suivantes : ./configure --prefix=/usr make
partir du rpertoire des sources. Celui-ci pourra tre extrait des archives l'aide de la commande tar xzf archive, o archive est le nom de l'archive en question. Une fois compiles, les bibliothques pourront tre installes avec la commande :
make install
Ces oprations ne devraient pas poser de problme particulier. Consultez le Chapitre 7 pour plus de dtails sur ces oprations. Une fois ces bibliothques installes, vous devriez pouvoir installer et utiliser des applications ddies aux priphriques IEEE1394, comme dvgrab (outil de capture vido), kino ou broadcast2000 (outils d'dition de squences vido). Force est de reconnatre que ces programmes sont trs loin d'tre finis et rellement difficiles utiliser. Chapitre 9 : Configuration du rseau Table des matires
9.1. Notions de rseau TCP/IP 9.2. Configuration du rseau sous Linux 9.3. Configuration de la connexion Internet 9.4. Pare-feu et partages de connexion Internet 9.5. Configuration de la scurit du rseau 9.6. Configuration des fonctions serveur 9.7. Systmes de fichiers en rseau Linux est un systme d'exploitation fabriqu par l'Internet et pour l'Internet. Inutile de prciser que c'est l'un des meilleurs systmes pour grer et exploiter un rseau. Certains ne l'utilisent d'ailleurs que pour cela, et profitent de ses excellentes performances sur les petites machines afin de rcuprer du matriel autrement vou la casse. En fait, les fonctionnalits rseau de Linux sont si nombreuses que j'ai t oblig d'y consacrer un chapitre part entire. La configuration d'un 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 configurer les services rseau de toute machine connecte, et pas seulement les machines fonctionnant sous Linux. Il n'est en effet pas rare de trouver des rseaux de machines fonctionnant sur des systmes dont la configuration est suppose tre plus simple, mais dont l'organisation 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 configuration des rseaux locaux, puis celle des connexions DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 298
temporaires Internet. Les services rseau volus tels que le partage de connexion Internet et la cration d'un serveur de fichiers seront finalement traits en fin de chapitre. 9.1. Notions de rseau TCP/IP 9.1.1. Gnralits sur les rseaux Un rseau n'est en gnral rien d'autre qu'une interconnexion entre plusieurs machines qui leur permet d'changer 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 d'envoyer et de recevoir des informations est diffrente pour ces diffrents supports physiques, parce qu'elle 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. L'information la plus importante est sans doute celle permettant de connatre la machine destinataire du paquet. On l'appelle l'adresse de la machine cible, il s'agit gnralement d'un numro permettant de l'identifier de manire unique sur le rseau. En gnral, les paquets contiennent galement l'adresse de la machine source, afin qu'une rponse puisse lui tre envoye. Figure 9-1. Notion de paquet et d'adresse rseau
Du fait de la diversit des supports physiques de rseau, il n'est pas simple d'crire 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 l'infini le moindre programme et le rendrait inutilisable avec les nouveaux rseaux. Par consquent, cette tche ingrate a t relgue au plus profond des couches rseau spcifiques au support physique. Les applications quant elles utilisent un protocole de communication plus volu, dont le but est d'assurer l'interoprabilit des diffrents supports physiques. Ce protocole utilise toujours des paquets et une notion d'adresse, 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 s'appelle l'encapsulation d'un protocole dans un autre protocole. Figure 9-2. Encapsulation de protocoles DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 299
9.1.2. Le protocole IP Les machines Unix utilisent toutes le protocole de communication de bas niveau IP ( Internet Protocol ). Ce protocole a t invent pour permettre l'interconnexion d'un grand nombre de rseaux physiques diffrents (le nom d'Internet provient d'ailleurs 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 spcificits des diffrents rseaux physiques. Pour eux, il ne semble y avoir qu'un seul rseau physique, dont le protocole de communication de base est IP. Autrement dit, les applications qui utilisent le rseau se contentent d'utiliser le protocole IP, et n'ont plus se soucier de la manire dont il faut formater et transmettre les informations sur chaque support physique du rseau. Ce genre de dtail est laiss aux couches rseau de chaque machine et aux passerelles reliant les divers rseaux physiques. Comme il l'a dj t dit ci-dessus, le protocole IP utilise des adresses pour identifier 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 dfinissant une partie du rseau. Ces adresses sont utilises un peu comme les numros de tlphone : le premier octet dfinit le numro d'un super- rseau dans lequel le correspondant se trouve (ces super-rseaux sont appels les rseaux de classe A), le deuxime octet dfinit le numro du sous-rseau dans le super-rseau (ces sous-rseaux sont appels rseaux de classe B), le troisime octet dfinit 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 d'affecter des adresses similaires pour les diffrentes machines d'un rseau, et de simplifier ainsi la gestion de ce dernier. Elle dispose en revanche d'un inconvnient majeur : beaucoup d'adresses sont gaspilles, car il n'y a pas suffisamment de rseaux de classe A d'une part, et qu'on ne peut pas mlanger les machines de deux sous-rseaux dans un mme rseau de classe A d'autre part. Si l'on reprend la comparaison avec les numros de tlphone, il y a normment d'abonns 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 l'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 gographiques. C'est 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 d'adresses disponibles (alors qu'il y en a plein de libres mais inutilisables parce qu'elles se trouvent dans d'autres sous-rseaux !). Il va donc falloir effectuer une renumrotation d'ici peu, exactement comme il y en a dj eu dans le monde de la tlphonie... Note : Le protocole IPv6, qui remplacera le protocole IP classique (encore appel IPv4), a pour but de rsoudre les limitations du protocole IP utilis actuellement. Les adresses du protocole IPv6 sont codes sur 16 octets, ce qui rsoudra dfinitivement le problme du manque d'adresses. De plus, les services modernes que sont l'authentification de l'metteur, ainsi que la qualit de service (c'est--dire la garantie du dlai de transmission des donnes, garantie ncessaire pour transmettre de faon correcte les flux multimdia tels que le son et la vido en temps rel) sont fournis par IPv6. Bien entendu, Linux est dj capable d'utiliser IPv6 (combien de systmes peuvent aujourd'hui DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 300
l'affirmer ?) ! 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 difficilement concevable de crer un rseau aussi grand qu'Internet avec les autres protocoles existant sur le march... Les adresses IP sont donc parfaitement dfinies l'aide de leurs quatre nombres, que l'on note les uns la suite des autres et en les sparant d'un point. Comme on l'a 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 fixs, 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 fixs, et seuls les deux derniers nombres permettent de distinguer les diffrentes machines du rseau. Enfin, les rseaux de classe A n'ont de fix que leur premire composante, les autres sont libres. Il est donc clair qu'il 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 toute 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 dfinir la notion d'adresse de rseau, qui est l'adresse IP d'une machine du rseau dont les parties variables ont pour valeur 0. Par exemple, si une machine d'un rseau de classe C a pour adresse 192.168.1.15, alors l'adresse de son sous-rseau est 192.168.1.0. Cela signifie que toutes les machines de ce rseau auront une adresse de la forme 192.168.1.xxx . Un rseau n'appartient qu' une et une seule classe. Les adresses IP sont rparties sur les diffrentes classes de rseaux, selon la valeur des bits de poids fort de leur premier octet. Par exemple, les rseaux de classe A sont identifiables 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 n'existe 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 fix 1, et c'est 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 s'adresser des groupes d'ordinateurs en multicast) et ne doivent pas tre utilises. Il s'agit des adresses 224.0.0.0 255.255.255.255. Cette dernire adresse a une signification spciale et permet de s'adresser tous les ordinateurs d'un rseau. Il est possible de dterminer l'adresse du rseau auquel une machine appartient en utilisant ce qu'on 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 l'adresse dudit sous- rseau. Les composantes qui correspondent la valeur 0 dans le masque de sous-rseau n'en font pas partie, et varient pour chaque machine du rseau. Pour reprendre l'exemple prcdent, si une machine a pour adresse IP 189.113.1.15 et que son masque de sous-rseau est 255.255.255.0, alors l'adresse de son rseau est 189.113.1.0. Si le masque de sous-rseau avait t 255.255.0.0 (typiquement le masque d'un rseau de classe B), l'adresse du rseau aurait t 189.113.0.0. Comme on le voit, le masque de sous-rseau est utilis par le systme pour dterminer rapidement l'adresse de sous-rseau d'une machine partir de son adresse IP. On notera que certaines combinaisons d'adresses IP et de masques de sous-rseau sont invalides. Par exemple, les adresses affectes aux rseaux de classe C (comme DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 301
192.168.0.1 par exemple) ne peuvent pas avoir de masque de sous-rseau en 255.255.0.0, car cela impliquerait que cette adresse serait une adresse de rseau de classe B. Figure 9-3. Addresse IP et adresse de rseau
Les adresses IP ne sont pas attribues aux machines au hasard. Il est vident que chaque machine doit avoir une adresse unique, et que son adresse doit appartenir la plage d'adresses utilise pour le sous- rseau dont elle fait partie. Pour cela, les classes de rseau, ainsi que les adresses qu'ils utilisent, sont attribues par l'IANA, un organisme de gestion de l'Internet. Le rle de l'IANA (abrviation de l'anglais Internet Assigned Numbers Authority ) est essentiellement d'assurer l'unicit des adresses IP sur l'Internet. Cependant, certaines adresses sont librement utilisables pour les rseaux locaux qui ne sont pas connects directement l'Internet. Les paquets utilisant ces adresses sont assurs de ne pas tre transmis sur Internet. Ces adresses peuvent donc tre utilises par quiconque. Les plages d'adresse rserves sont les suivantes : Tableau 9-1. Plages d'adresses IP rserves pour un usage personnel Classe de rseau Adresses de rseau rserves A 10.0.0.0 B 172.16.0.0 172.31.0.0 C 192.168.0.0 192.168.255.0 Ainsi, un rseau de classe A (d'adresse 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 (d'adresses 192.168.0.0 192.168.255.0) sont disponibles. Vous pouvez donc les utiliser librement. Il est galement possible de configurer les machines pour qu'elles rcuprent leurs adresses IP auprs d'un serveur l'aide du protocole DHCP (abrviation de l'anglais Dynamic Host Configuration Protocol ). Cette technique est trs intressante quand on dispose d'un grand nombre de machines qui ne sont pas toujours toutes connectes un rseau. Il est donc possible de redistribuer les adresses IP d'un stock d'adresses en fonction des machines qui se connectent, et d'conomiser ainsi les prcieuses adresses. En revanche, elle n'est pas approprie pour les serveurs qui sont couramment accds par des postes clients, et qui doivent donc avoir une adresse IP fixe. Certaines adresses IP ont une signification particulire et ne peuvent pas tre attribues une machine. Par exemple l'adresse 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 d'autres adresses. De plus, les adresses dont les derniers nombres (c'est--dire les nombres qui ne font pas partie de l'adresse du rseau) se terminent par 0 ou 255 sont rserves pour l'envoi 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 n'a pas encore d'adresse fixe. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 302
Il est important de savoir que, par dfaut, une machine ne communiquera qu'avec les machines de son propre rseau. C'est dire que si une machine utilise l'adresse 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 l'adresse est de la forme 192.168.1.xxx. Elle ne pourra donc pas voir par exemple une machine dont l'adresse IP est 192.168.0.2. Cela ne signifie pas que l'on 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 n'empche de dfinir, 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 l'intermdiaire 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 n'ai pas de rseau, et quand je me connecte Internet, je peux y accder ! Et mme si j'avais un rseau, elles ne feraient certainement pas partie de mon rseau... . Explications : premirement, vous avez un rseau, mme si vous ne le savez pas. Toute machine appartient gnralement au moins son propre rseau virtuel, sur laquelle elle est la seule machine, et o elle a l'adresse 127.0.0.1 ; deuximement, effectivement, les machines qui se trouvent sur Internet n'appartiennent 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 d'accs Internet. C'est cet ordinateur qui se charge de faire le transfert de ces informations vers les machines situes sur Internet. C'est donc ici qu'intervient 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 d'autre, puisqu'elle 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 l'autre rseau. Figure 9-4. Notion de passerelle
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 303
Lorsque vous vous connectez Internet, vous ne faites rien d'autre que de crer un rseau (dont le support physique est la ligne tlphonique), et vous utilisez l'ordinateur 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 n'avez pas de rseau local) sont donc envoys sur le rseau constitu de votre connexion Internet et arrivent donc chez votre fournisseur d'accs, qui se charge ensuite de les transmettre aux autres ordinateurs. Notez que celui-ci peut transmettre ces paquets une autre passerelle laquelle il a accs et ainsi de suite, jusqu' ce que la destination soit atteinte. Dans le cas d'un particulier, le choix du rseau sur lequel les paquets doivent tre transmis est trs facile faire puisqu'en gnral un paquet est soit destination de la machine locale, soit destination d'une 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 qu'une machine ait le choix entre plusieurs passerelles diffrentes pour envoyer un paquet dont la destination n'est pas sur son propre rseau. Par exemple, les passerelles d'Internet peuvent tre elles- mmes connectes diffrents autres rseaux, qui sont eux-mmes connect s d'autres rseaux. Un paquet peut donc tre achemin de plusieurs manires sa destination, selon la topologie du rseau. L'ensemble des rseaux emprunts par un paquet dans son voyage constitue ce qu'on appelle sa route. Chaque passerelle contribue donc dterminer la route des paquets en choisissant, pour chaque paquet, l'interface rseau utiliser pour transmettre ce paquet. Ce choix est fait en suivant un certain nombre de rgles bases sur l'adresse destination des paquets. Par exemple, si une passerelle reoit un paquet dont l'adresse destination est 129.46.10.15, et qu'elle 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 l'un de ses rseaux, elle l'enverra une autre passerelle laquelle elle a accs. Le choix de cette passerelle est en gnral dtermin par des rgles de la forme suivante : Tous les paquets destins au sous-rseau 129.46.0.0 doivent tre envoys vers la passerelle 193.49.20.1 du rseau 193.49.20.0 . Notez qu' chaque tape de la route, seules les passerelles de l'tape suivante peuvent tre choisies comme relais. Ainsi, si la passerelle est connecte trois rseaux d'adresses respectives 192.168.1.0, 193.49.20.0 et 209.70.105.10, elle transfrera le paquet destination de 129.46.10.15 la passerelle 193.49.20.1. La transmission effective du paquet cette passerelle se fera ensuite selon le protocole rseau bas niveau utilis sur le rseau 193.49.20.0. Autrement dit, une passerelle est une machine qui, contrairement aux machines classiques, accepte de recevoir des paquets qui ne lui sont pas directement adresss, et de les traiter en les rmettant vers leur destination ou vers une autre passerelle, selon les rgles de routage qu'elle utilise. Les rgles utilises par les passerelles sont stockes dans ce qu'on appelle des tables de routage. Les tables de routage peuvent tre configures statiquement dans la configuration des passerelles, c'est-- dire initialises dans les fichiers de configuration et ne jamais tre modifies. Cette technique convient parfaitement pour les petits rseaux. Elle se rvle cependant insuffisante sur les passerelles d'Internet. En effet, si les rseaux emprunts par une route sont saturs, voire hors service, il peut tre intressant d'utiliser une autre route. Ces passerelles utilisent donc des tables de routage dynamiques, qui sont automatiquement mises jour en fonction de l'tat du rseau. Bien que Linux puisse parfaitement effectuer ce type de routage, c'est une configuration rserve un usage spcifique de Linux. Ce document ne traitera donc pas du routage dynamique. Figure 9-5. Notion de route DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 304
Le problme des adresses IP est qu'elles ne sont pas trs parlantes pour les tres humains : que peut donc signifier 192.147.23.2 ? Pas grand chose... C'est pour cela qu'on 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 qu'on appelle le domaine dans laquelle la machine se trouve. Ainsi, dans l'exemple prcdent, krypton est le nom d'une 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, l'toile Altar ne se trouve pas dans la galaxie d'Andromde, 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, l'extension .com indique clairement que le domaine est de nature commerciale (de surcrot, il s'agit sans doute d'une socit amricaine, l'extension .com tant rserve aux tats-Unis). De mme, l'extension .gov est utilise pour les organismes gouvernementaux amricains, et l'extension .edu pour les universits ou les coles amricaines. L'extension .org est utilise pour les organisations non commerciales. Enfin, les noms de domaines des autres pays que les tats-Unis utilisent quasiment systmatiquement une extension indiquant leurs pays d'origine. Ainsi, .fr reprsente la France, .uk les Royaumes-Unis, etc. Notez que la notion de domaine est a priori distincte de la notion de rseau. La question technique qui se pose avec ces conventions de nommage humaines est de savoir comment dterminer, partir d'un nom littral, l'adresse IP de la machine correspondante. Cette opration n'est pas simple, et en fait elle est effectue de deux manires : soit la machine locale demande une autre machine qu'elle connat d'effectuer la recherche de l'adresse du correspondant ; soit elle dispose d'une liste de noms et d'adresses lui permettant de dterminer directement les adresses de ses interlocuteurs. La premire solution utilise ce qu'on 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). L'opration qui consiste retrouver l'adresse IP d'une machine partir de son nom s'appelle la rsolution de nom de domaine. Il est vident que si le serveur de noms ne peut tre contact, il sera impossible d'utiliser les noms de machines. En revanche, il sera toujours possible d'utiliser leurs adresses IP directement, si on les connat. La deuxime solution ne souffre pas de ce dfaut, elle ncessite cependant de mettre jour la liste des noms sur tous les postes rgulirement, ce qui est beaucoup plus complexe que la gestion centralise d'un DNS. On ne l'utilisera donc que pour les petits rseaux. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 305
9.1.3. Le protocole TCP Nous avons vu que le protocole IP fournit les briques de bases de toute la communication rseau sous Unix (et Internet). Ses principales fonctionnalits sont le dcoupage des informations en paquets de taille suffisamment petite pour pouvoir transiter sur tous les types de rseaux physiques, la gestion des destinations des paquets l'aide des adresses IP, et le choix de la route permettant d'acheminer les paquets destination. En revanche, il est incapable d'assurer les services plus volus comme la gestion de l'ordre d'arrive des paquets et la gestion de la fiabilit du transfert des informations. C'est donc des protocoles plus volus, eux-mmes encapsuls dans IP, d'effectuer ces tches. L'un des protocoles les plus importants est le protocole TCP (abrviation de l'anglais Transfer Control Protocol ). Ce protocole se charge d'tablir les connexions entre deux ordinateurs, et assure la fiabilit des informations transmises et l'arrive des informations dans leur ordre d'envoi. Il existe d'autres protocoles, moins connus que TCP mais tout aussi importants. On retiendra en particulier les deux protocoles suivants : UDP (abrviation de l'anglais User Datagram Protocol ), qui permet d'mettre des datagrammes sur le rseau, qui sont de simples paquets de donnes (c'est un protocole semblable IP, destin aux applications) ; ICMP (abrviation de Internet Control Message Protocol ), qui est utilis essentiellement pour transmettre des messages de contrle du fonctionnement des autres protocoles (il est donc vital). Les services rseau des machines sont organiss en couches logicielles, qui s'appuient chacune sur la couche infrieure. Ainsi, TCP utilise IP, qui lui-mme utilise le pilote qui gre l'interface rseau. Du fait que ces couches s'appuient les unes sur les autres, on appelle souvent l'ensemble de ces couches une pile ( stack en anglais). Vous avez peut-tre dj entendu parler de la pile TCP/IP. Lorsqu'un service rseau d'une machine n'est plus accessible, il se peut que ce service rseau ait plant. Si tout un ensemble de services rseau ne fonctionne plus, c'est certainement une des couches logicielles qui est plante. Par exemple, une machine peut rpondre la commande ping (classiquement utilise pour tester les connexions rseau) et ne plus accepter la plupart des connexions rseau. Cela signifie simplement que la couche TCP ne fonctionne plus, et que la couche ICMP (utilise par ping) est toujours valide. videmment, si la couche IP tombe en panne, la machine ne sera plus accessible du tout, sauf ventuellement avec d'autres protocoles rseau compltement diffrents (IPX, Appletalk, etc.). Seuls les mcanismes du protocole TCP seront dtaills dans la suite de ce document. Le protocole TCP est en effet utilis par un grand nombre de services, ce qui en fait certainement le plus connu. Le protocole TCP utilise la notion de connexion. Une connexion est un canal de communication tabli entre deux processus par TCP. Comme les processus sont susceptibles d'utiliser plusieurs connexions simultanment, TCP fournit la possibilit de les identifier par un numro unique sur la machine, compris entre 0 et 65535. Chaque numro identifie ce qu'on 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 dfinis, et les serveurs qui fournissent ces services doivent bien entendu utiliser ces numros de ports. Ainsi, il est possible de dterminer de manire unique un programme serveur sur un rseau avec l'adresse IP de la machine sur laquelle il fonctionne et le numro de port qu'il coute pour les connexions extrieures. Les clients qui se connectent savent donc parfaitement quel service ils accdent lorsqu'ils choisissent le numro de port destination. Leur propre numro de port est en gnral choisi par le systme, afin d'viter tout conflit avec un autre processus de la mme machine. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 306
Figure 9-6. Connexions TCP
Une fois tablie, une connexion TCP permet d'effectuer des communications bidirectionnelles. Cela signifie que le client et le serveur peuvent tous deux utiliser cette connexion pour envoyer des donnes l'autre. 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 d'un port source (c'est--dire le port TCP de l'metteur), et d'un 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 l'a dj t dit, le protocole TCP s'assure que les informations transmises arrivent bon port (c'est le cas de le dire !). Pour cela, il utilise un mcanisme d'accuss rception, qui indiquent l'metteur si le destinataire a bien reu chaque paquet envoy. Si l'accus rception n'est pas reu dans un temps fix, le paquet est r-mis. Un paquet reu en double cause d'un retard dans la communication de l'accus rception est tout simplement ignor. La fiabilit des informations est galement assure. Cette fiabilit est ralise par un mcanisme de sommes de contrle. Si le rcepteur constate que la somme de contrle des donnes reues n'est pas celle que l'metteur a calcul, il rejette le paquet parce qu'il sait que les informations ont t corrompues pendant la transmission. Enfin, TCP s'assure que les informations mises en plusieurs passes sont bien reues dans leur ordre d'mission. 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 d'arrive des paquets est hautement dpendante de la route IP qu'ils prennent pour parvenir destination. Les paquets qui arrivent en avance sont donc mmoriss jusqu' ce que tous les paquets qui les prcdent soient reus. 9.1.4. Les protocoles de haut niveau TCP fournit donc les fonctionnalits requises pour la plupart des services rseau existant. Il est logique que ceux-ci s'appuient 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 flux de donnes changs. La plupart des services rseau dfinissent donc un protocole qui leur est propre. Il est d'ailleurs 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 fichiers), les serveurs Internet utilisent essentiellement le protocole HTTP ( Hyper Text Transfer Protocol , protocole de transfert d'hypertexte), le service de courrier lectronique utilise les protocoles POP ( Post Office Protocol ) pour la rception des courriers et SMTP ( Simple Mail Transfer Protocol ) pour leur envoi. Cette liste de protocoles n'est pas exhaustive, et de nouveaux services apparaissent rgulirement. Les protocoles de haut niveau ne seront donc pas dcrits dans ce document. Les protocoles de haut niveau transmettent, en gnral, toutes leurs donnes en clair sur le rseau. Cela comprend non seulement les donnes applicatives, mais galement les noms d'utilisateurs et les mots de passe. Toute personne ayant physiquement accs au rseau ou une machine par laquelle les paquets passent peut donc, s'il le dsire, rcuprer tous les mots de passe avec une simplicit extrme DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 307
(il existe mme des programmes spcialiss pour cela). Il est donc inconcevable d'utiliser tous ces protocoles sans prendre de prcautions particulires. Heureusement, il est possible d'encapsuler les protocoles dans un rseau virtuel qui, lui, transmet les donnes sous forme chiffre. L'outil le plus utilis de nos jours est ssh (abrviation de l'anglais Secure SHell ), qui permet de se connecter sur une machine et de travailler distance en toute scurit. Il en existe plusieurs implmentations, dont au moins une libre : OpenSSH. Nous verrons comment configurer et utiliser OpenSSH pour amliorer la scurit du rseau dans la Section 9.5.2.2. 9.2. Configuration du rseau sous Linux La configuration du rseau ncessite donc la configuration du protocole IP et des services TCP, UDP et ICMP (entre autres). Cette opration se fait en dfinissant l'adresse IP le masque de sous-rseau et les routes utiliser. Vient ensuite la configuration du nom de la machine locale, de son domaine, des noms de machines qu'elle peut rsoudre elle-mme et des serveurs de DNS qu'elle doit utiliser pour les autres noms. Il est quasiment certain que votre distribution dispose d'un outil permettant d'effectuer la configuration du rseau simplement. Connaissant prsent la signification des termes utiliss dans les rseaux TCP/IP, vous devriez pouvoir parvenir une configuration valide relativement simplement. Il est fortement recommand de consulter la documentation de votre distribution. Les commandes de configuration du rseau sont souvent appeles dans les scripts de dmarrage de la machine, ou dans les scripts de changement de niveau d'excution. 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 fichiers de configuration du rseau utiliss sous Linux. 9.2.1. Configuration statique des interfaces rseau La principale commande permettant de configurer le rseau est la commande ifconfig. Comme son nom l'indique ( InterFace CONFiguration ), elle permet de configurer les interfaces rseau de la machine. Il faut savoir qu'il existe plusieurs types d'interfaces rseau. Les plus courants sont les trois types d'interfaces suivants : l'interface loopback, qui reprsente le rseau virtuel de la machine, et qui permet aux applications rseau d'une mme machine de communiquer entre elles mme si l'on ne dispose pas de carte rseau ; les interfaces des cartes rseau (que ce soient des cartes Ethernet, TokenRing ou autres) ; les interfaces ppp, plip ou slip, qui sont des interfaces permettant d'utiliser les connexions srielles, parallles ou tlphoniques comme des rseaux. La configuration d'une interface comprend l'initialisation des pilotes ncessaires son fonctionnement et l'affectation d'une 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 l'interface rseau que vous voulez configurer, adresse est l'adresse IP que cette interface grera, et masque est le masque de sous-rseau que vous utilisez. Les interfaces que vous aurez configurer seront certainement des interfaces Ethernet, auquel cas vous devrez utiliser les noms eth0, eth1, etc. dans la commande ifconfig. Si vous dsirez configurer l'interface loopback, vous devrez utiliser le nom d'interface lo. Le paramtre up donn ifconfig lui indique que l'interface doit tre active. Cela signifie que ds que la commande ifconfig s'achvera, votre interface rseau sera active et fonctionnelle. On ne peut DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 308
faire plus simple... Bien entendu, il existe le paramtre inverse : down. Ce paramtre s'utilise tout simplement dans la commande ifconfig avec la syntaxe suivante : ifconfig interface down
o interface est toujours le nom de l'interface. Un exemple de configuration trs classique est le suivant : ifconfig eth0 192.168.0.1 netmask 255.255.255.0 up Note : Prenez bien garde, lorsque vous crivez vos adresses IP, ne pas rajouter de 0 supplmentaire devant les nombres qui la constituent. En effet, il existe une convention en informatique qui dit que les nombres prfixs d'un 0 sont cods en octal, c'est--dire en base 8. Il va de soi qu'une adresse IP code en octal n'utilise pas les mmes nombres que lorsqu'elle est exprime en dcimal, aussi prouveriez- vous quelques difficults 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 l'adresse IP qui ne fait pas partie de l'adresse de sous-rseau. Si vous dsirez utiliser une autre adresse (en gnral, l'alternative est de prendre l'adresse du sous-rseau), vous devrez utiliser l'option broadcas adresse dans la commande ifconfig. Cependant, le comportement par dfaut convient la plupart des rseaux. La commande de configuration donne en exemple ci-dessus sera alors : ifconfig eth0 192.168.0.1 netmask 255.255.255.0 broadcast 192.168.0.0 up Enfin, il est possible d'affecter plusieurs adresses IP certaines interfaces rseau. C'est en particulier le cas pour toutes les interfaces rseau classiques, mais bien entendu cela n'est pas ralisable avec les interfaces de type point point comme les interfaces des connexions ppp. Lorsqu'une interface dispose de plusieurs adresses, la premire est considre comme l'adresse principale de l'interface, et les suivantes comme des alias. Ces alias utilisent comme nom le nom de l'interface rseau principale et le numro de l'alias, spars par deux points (caractre ':'). Par exemple, si l'interface eth0 dispose d'un alias, celui-ci sera nomm eth0:0. Ainsi, pour fixer l'adresse d'un alias d'une interface rseau, on utilisera la syntaxe suivante : ifconfig interface:numro add adresse netmask masque
o interface est toujours le nom de l'interface, numro est le numro de l'alias, adresse est l'adresse IP attribuer cet alias, et masque est le masque de sous-rseau de cette adresse. La commande ifconfig est en gnral appele dans les scripts d'initialisation du systme, qui ont t gnrs par l'utilitaire de configuration rseau de votre distribution. Si vous effectuez un grep sur ifconfig dans le rpertoire /etc/rc.d/ (ou /sbin/init.d/, selon votre distribution), vous trouverez la commande de dmarrage du rseau. Il se peut qu'une variable d'environnement soit utilise la place de l'adresse IP que vous avez choisie. Quoi qu'il en soit, vous devez sans aucun doute avoir les lignes suivantes, qui permettent l'initialisation de l'interface loopback : ifconfig lo 127.0.0.1 netmask 255.0.0.0 up 9.2.2. Dfinition des rgles de routage La deuxime tape dans la configuration du rseau est la dfinition des rgles de routage. Il est possible de dfinir plusieurs rgles de routage actives simultanment. L'ensemble de ces rgles DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 309
constitue ce qu'on appelle la table de routage. La rgle utilise est slectionne par le noyau en fonction de l'adresse destination du paquet router. Chaque rgle indique donc un critre de slection sur les adresses, et l'interface vers laquelle doivent tre transfrs les paquets dont l'adresse destination vrifie cette rgle. La commande utilise pour dfinir 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 l'opration effectuer sur la table de routage. L'opration la plus courante est simplement l'ajout d'une rgle de routage, auquel cas add doit tre utilis. L'option suivante permet d'indiquer si le critre de slection des paquets se fait sur l'adresse du rseau destination ou plus restrictivement sur l'adresse de la machine destination. En gnral, il est courant d'utiliser la slection de toutes les adresses d'un mme rseau et de les router vers une mme interface. Dans tous les cas, adresse est l'adresse 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 l'aide de l'option nemas'. Enfin, interface est l'interface rseau vers laquelle doivent tre envoys les paquets qui vrifient les critres de slection de cette rgle. Par exemple, la rgle de routage utiliser pour l'interface loopback est la suivante : route add -net 127.0.0.0 netmask 255.0.0.0 lo Cette rgle signifie que tous les paquets dont l'adresse de destination appartient au sous-rseau de classe A 127.0.0.0 doivent tre transfrs vers l'interface loopback. Cela implique en particulier que les paquets destination de la machine d'adresse IP 127.0.0.1 (c'est--dire la machine locale) seront envoys vers l'interface 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 d'envoyer tous les paquets destination du rseau de classe C 192.168.0.0 vers la premire interface Ethernet. C'est typiquement ce genre de rgle qu'il faut utiliser pour faire fonctionner un rseau local. Il n'est normalement pas ncessaire d'ajouter les rgles de routage pour les rseaux auxquel la machine est connecte. En effet, la configuration d'une carte rseau l'aide de la commande ifconfig ajoute automatiquement la table de routage une rgle pour envoyer les paquets destination de ce rseau par l'interface rseau qui y est connecte. Cependant, la commande route devient rellement ncessaire lorsqu'il faut dfinir les passerelles utiliser pour l'envoi 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 l'adresse IP de la passerelle utiliser doit tre fournie. Pour cela, on utilise l'option gw (abrviation de l'anglais Gateway ). La syntaxe utilise est donc la suivante : route add [-net | -host] adresse netmask masque gw passerelle interface
o passerelle est l'adresse IP de la passerelle utiliser pour router les paquets qui vrifient les critres de cette rgle. Les autres paramtres sont les mmes que pour les rgles de routage classique. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 310
Par exemple, supposons qu'une machine soit connecte un rseau d'adresse 192.168.0.0, et que sur ce rseau se trouve une passerelle d'adresse 192.168.0.1 permettant d'atteindre un autre rseau, dont l'adresse 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 l'a dj vu, de communiquer avec toutes les machines du rseau local. La deuxime rgle permet d'envoyer la passerelle 192.168.0.1 tous les paquets destination du rseau 192.168.1.0. Inversement, si la passerelle utilise l'adresse 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 spcifier 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 qu'elles spcifient l'adresse du rseau destination. Il est videmment hors de question d'utiliser une rgle de routage diffrente pour toutes les adresses de rseaux possibles. Il est donc possible de dfinir ce qu'on appelle une passerelle par dfaut, qui n'est rien d'autre que la passerelle vers laquelle doivent tre envoys tous les paquets qui n'ont pas vrifi les critres des autres rgles de routage. La syntaxe utiliser pour dfinir la passerelle par dfaut est plus simple, puisqu'il n'est plus ncessaire de prciser les critres de slection : route add default gw passerelle interface
o la signification des paramtres passerelle et interface est inchange. Ainsi, pour reprendre l'exemple prcdent, supposons que la machine 192.168.0.47 dispose d'une connexion Internet et soit configure pour partager cette connexion avec les machines du rseau local. Pour que toutes les machines du rseau local puisse profiter de cette connexion, il suffit de demander ce que tous les paquets qui ne vrifient aucune autre rgle de routage soient envoys la passerelle 192.168.0.47. Cela se fait avec la rgle de routage suivante : route add default gw 192.168.0.47 eth0 9.2.3. Dfinition du nom de la machine La configuration du nom d'un ordinateur n'est pas proprement parler une opration indispensable, mais elle permet de le nommer de manire plus conviviale qu'en utilisant son adresse IP. La commande de base permettant de manipuler le nom de la machine locale est la commande hostname. Appele telle quelle, elle renvoie le nom actuel de la machine : hostname Cette commande permet galement de modifier ce nom, simplement avec la syntaxe suivante : hostname nom
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 311
o nom est le nom utiliser. Il est d'usage de n'utiliser que le nom de la machine, sans son domaine. Le nom de domaine est dtermin automatiquement par le systme partir des informations issues de la configuration de la rsolution des noms de domaine. Nous verrons cela dans le paragraphe suivant. Cette commande est donc trs simple utiliser, et elle est en gnral appele dans les scripts de dmarrage du systme. La plupart des distributions utilisent le fichier /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 ! 9.2.4. Rsolution des noms de domaine La commande hostname ne permet de fixer que le nom de la machine locale. Pour les autres machines du rseau, il faut mettre en place les mcanismes de rsolution de noms de domaine. Comme il l'a dj t indiqu au dbut de ce chapitre, il existe deux solutions pour trouver l'adresse IP d'une machine partir de son nom : la consultation d'une liste de noms stocke en local, soit l'interrogation d'un serveur de noms de domaine. Le fichier /etc/host.conf permet de dfinir le comportement du systme lors de la rsolution d'un nom. Sa structure est trs simple, puisqu'il y a une option de recherche par ligne. Dans la plupart des cas, les lignes suivantes sont suffisantes : order hosts,bind multi on Elles permettent d'indiquer que la recherche des noms pour leur rsolution doit se faire d'abord localement, puis par appel aux DNS si la recherche prcdente a chou. C'est en gnral le comportement dsir. La deuxime ligne permet de faire en sorte que toutes les adresses correspondant une machine soient renvoyes. Si l'on avait utilis l'option mu1ioff, seule la premire adresse IP trouve aurait t renvoye. La liste de noms locale est stocke dans le fichier /etc/hosts (cela explique le nom hosts utilis pour l'option order dans le fichier /etc/host.conf). Votre ordinateur connatra directement l'adresse IP de toutes les machines rfrences dans ce fichier. Il est bon de placer ici une entre pour les ordinateurs les plus couramment utiliss sur le rseau. Chaque entre commence par une adresse IP, et est suivie de la liste des noms de la machine possdant cette adresse, spars par des espaces. Pour ceux qui ne disposent pas de rseau local, ce fichier doit tre relativement simple : seule la ligne affectant l'adresse 127.0.0.1 la machine locale (appele localhost ) doit s'y trouver. 127.0.0.1 localhost De la mme manire, le fichier /etc/networks contient les adresses des rseaux. Ce fichier 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 fichier se rduit sa plus simple expression pour ceux qui n'ont pas de rseau local, puisqu'il ne contiendra tout au plus qu'une entre pour le rseau loopback , sur lequel se trouve l'adresse de retour 127.0.0.1. Cette entre aura donc la forme suivante : loopback 127.0.0.0 La configuration des serveurs de noms est en revanche une opration ncessaire si l'on dsire accder des machines dont on ne connat que le nom. Le fichier de configuration utilis est cette fois le fichier /etc/resolv.conf. Sa structure est encore une fois trs simple, avec une option par ligne, chaque option tant introduite par un mot cl. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 312
Le mot cl domain permet d'indiquer 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 spcifier une liste de noms de domaines ajouter par dfaut aux noms de machines non compltement qualifis. Les lments de cette liste doivent tre spars par des espaces. La recherche d'une machine dont le nom ne comprend pas la partie de nom de domaine s'effectue en ajoutant au nom de la machine les noms des domaines indiqus ici, jusqu' ce que la rsolution du nom en adresse IP russisse. Cette recherche commence bien entendu par le nom de domaine local, s'il a t dfini. Il est donc recommand d'indiquer 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 l'adresse de la machine krypton , la requte au DNS se fera avec le nom compltement qualifi krypton.andromede.galaxie . Vous tes bien entendu libre d'ajouter d'autres noms de domaines pour le cas o la rsolution de nom chouerait sur ce domaine. Enfin, l'option nameserver est essentielle, puisqu'elle 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, d'adresse 192.168.0.10, et un secondaire, d'adresse 192.168.0.15, vous utiliserez la ligne suivante : nameserver 192.168.0.10 192.168.0.15 Cette ligne est videmment obligatoire, faute de quoi la rsolution des noms de machines en adresse IP chouera pour toute machine qui ne se trouve pas dans votre fichier /etc/hosts. 9.2.5. Utilisation des protocoles DHCP et BOOTP Gnralement, la gestion des adresses IP des machines devient rapidement une tche difficile sur les grands rseaux, pour trois raisons. Premirement, il faut toujours s'assurer que chaque machine dispose bien d'une adresse qui lui est propre, ce qui peut tre difficile si l'on ne s'organise pas en consquence. Deuximement, il faut que les fichiers /etc/hosts de toutes les machines soient jour, ce qui ncessite un travail proportionnel au nombre de machines administres. Enfin, le nombre d'adresses IP disponibles peut se rduire, ce qui peut devenir gnant terme. Afin de rsoudre ces problmes de configuration rseau, le protocole DHCP (abrviation de l'anglais Dynamic Host Configuration Protocol ) a t dfini. Il s'agit d'un protocole qui permet aux machines connectes sur un rseau d'interroger un serveur d'adresses du rseau capable de grer une liste d'adresses et de les affecter dynamiquement aux machines du rseau. En fait, ce protocole permet de fournir plus d'informations 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 configuration rseau des machines ds leur dmarrage : le protocole BOOTP (abrviation de l'anglais BOOTstrap Protocol ). Ce protocole est videmment plus lger que DHCP, mais permet aux machines d'obtenir dynamiquement leur configuration rseau ds leur dmarrage, avant mme que ne soient monts les systmes de fichiers. Ce protocole est donc particulirement utile pour faire dmarrer des machines sans disque, pour lesquelles le systme de fichiers racine est mont en NFS. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 313
La manire la plus simple de configurer les protocoles DHCP et BOOTP sur un poste client est d'utiliser les fonctionnalits d'auto-configuration du noyau. Cependant, il est galement possible d'effectuer cette configuration au niveau utilisateur l'aide de programmes complmentaires. Les deux sections suivantes dcrivent ces deux techniques. 9.2.5.1. Autoconfiguration des clients DHCP et BOOTP La configuration des protocoles DHCP et BOOTP ne comporte aucune difficult particulire lorsque l'on utilise les fonctionnalits d'autoconfiguration du noyau. Ces fonctionnalits tant prises en charge au niveau du noyau, il va vous falloir recompiler un nouveau noyau pour en bnficier. Cette opration en revanche est relativement technique, et doit tre faite avec soin. La manire de procder a t dcrite en dtail dans la Section 7.3. L'option activer pour permettre l'utilisation du protocole BOOTP est l'option IP: kernel level autoconfiguration du menu Networking options . Cette option vous permettra de slectionner le protocole d'auto-configuration rseau que le noyau devra utiliser lors de son amorage. Vous devrez alors choisir l'option IP: DHCP support (NEW) ou l'option IP: BOOTP support (NEW) pour activer respectivement les protocoles DHCP et BOOTP. Note : Vous remarquerez qu'il existe galement un autre protocole d'auto-configuration du rseau au dmarrage : le protocole RARP. Ce protocole fournit les mmes services que le protocole BOOTP, mais est plus ancien. Il n'est donc plus conseill de l'utiliser, 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, l'installer et redmarrer la machine. Lors du dmarrage, le noyau doit chercher un serveur DHCP ou un serveur BOOTP sur le rseau local pour effectuer la configuration 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 fichiers racine mont en NFS lors du dmarrage. 9.2.5.2. Configuration d'un client DHCP au niveau utilisateur Il est galement possible de configurer les clients DHCP au niveau utilisateur, l'aide de programmes complmentaires. Comme sur la plupart des machines Unix, le programme utiliser est le programme dhclient. Ce programme est gnralement lanc dans les scripts de dmarrage des machines, et envoie des paquets de demande de configuration sur le rseau l'adresse de diffusion gnrale 255.255.255.255. Ces paquets sont donc susceptibles d'tre captes par toutes les machines du rseau, mais seuls les serveurs DHCP y rpondent. Les rponses obtenues sont alors analyss par dhclient, qui configure en consquence l'interface 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 l'adresse IP de la machine et son masque de sous-rseau. Il est toutefois possible de donner plus d'informations, 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 configuration automatique des postes itinrants ou susceptibles de redmarrer souvent. Par consquent, ces adresses sont fournies dans le cadre d'un bail, dont la dure maximum est fixe par le serveur. Ds que le bail obtenu par un client expire, celui-ci doit chercher le renouveler. C'est encore le programme dhclient qui s'en charge. C'est la raison pour laquelle celui-ci passe en arrire-plan aprs avoir configur l'interface pour la premire fois : il attend la fin des baux de la machine sur laquelle il tourne et cherche les renouveler. Si un client ne renouvelle pas ce bail (parce qu'il est arrt par DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 314
exemple), le serveur DHCP peut rutiliser son adresse IP et l'affecter une autre machine. Bien que les serveurs DHCP s'efforcent gnralement de conserver les adresses IP des clients chaque bail, un client configur par DHCP ne peut donc pas considrer que son adresse IP restera toujours la mme. C'est la contrepartie de la flexibilit. Si aucun serveur DHCP ne peut tre contact lors du dmarrage, dhclient abandonne temporairement et ressaie au bout d'un temps alatoire. Au bout d'un certain nombre d'essais non fructueux, il peut dcider de configurer les interfaces rseau avec les adresses IP des anciens baux obtenus par la machine. Pour cela, il mmorise dans le fichier de configuration /var/db/dhclient.lease les adresses IP de ces anciens baux. Ce fichier est priodiquement rcrit avec la liste des adresses des baux valides afin d'viter qu'il ne se remplisse ad vitam eternam. Bien entendu, les postes clients ne peuvent pas choisir leurs adresses IP sans vrification d'unicit. Dans le cas de l'absence de serveur DHCP (et donc d'autorit centrale), les clients qui dmarrent interrogent les machines dj prsentes sur le rseau pour dterminer si l'adresse qu'ils 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 d'un rseau, les postes clients peuvent toujours travailler ensemble sans conflit d'adresses IP. Comme vous pouvez le constater, le comportement de dhclient est relativement complexe et dpend de nombre de paramtres. Tous ces paramtres peuvent tre dfinis dans le fichier de configuration /etc/dhclient.conf. Ce fichier contient en particulier les diffrentes dures intervenant dans le choix des adresses IP, comme par exemple la dure minimale d'un bail, les dures entre chaque tentatives de configuration, 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 fichier de configuration 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 fichier dhclient.conf soit vide. Si toutefois vous dsirez en savoir plus, vous pouvez consulter la page de manuel dhclient.conf. La configuration DHCP pour les postes clients se rduit donc l'essentiel : le lancement de dhclient. Celui-ci s'utilise avec la syntaxe suivante : dhclient interface0 [interface1 [...]] o interface0, interface1, etc., sont les interfaces rseau qui doivent tre configures par DHCP. On ne peut donc pas faire plus simple... Note : Sous Linux, le programme dhclient utilise les fonctionnalit d'accs direct aux cartes rseau et de filtrage des paquets. Ces deux fonctionnalits peuvent tre actives dans la configuration du noyau l'aide des options Packet socket , Packet socket: mmapped IO et Socket Filtering du menu Networking options . L'option IP: multicasting de la liste des options du protocole IP devra galement tre active. Le dtail de la configuration et de la compilation du noyau a t vu dans la Section 7.3. Le programme dhclient est assez factieux depuis quelques versions. S'il refuse obstinment de fonctionner, vous devrez sans doute vous rabattre vers le programme dhcpcd, beaucoup plus simple, mais galement beaucoup plus fiable. La plupart des distributions utilisent de dernier en lieu et place de dhclient. Consultez la documentation de votre distribution pour dterminer la solution qu'elle utilise. 9.2.6. Dfinition des protocoles de haut niveau Comme nous l'avons vu plus haut, le protocole IP fournit les mcanismes de base pour la transmission des paquets. Plusieurs protocoles de plus haut niveau ont t dfinis pour fournir des services valeur DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 315
ajoute, qui satisfont donc plus aux besoins des applications. Tous ces protocoles sont encapsuls dans le protocole IP, ce qui signifie 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 identificateur numrique qui lui est propre, et qui permet aux services rseau d'interprter les donnes des paquets. Tout comme les adresses IP, ces numros identifiant les protocoles ne sont pas trs intressants pour les humains, qui leur prfre videmment le nom du protocole. Certains programmes rseau utilisent donc ces noms pour identifier les protocoles. Pour leur permettre de faire l'association entre ces noms et les identificateurs numriques, le fichier /etc/protocols est utilis. Le format de ce fichier est trs simple. Il contient une ligne pour chaque protocole, constitue du nom du protocole, de la valeur de son identificateur, et des autres noms que ce protocole peut avoir (c'est-- dire ses alias). Parmi ces protocoles, les plus importants sont les suivants : Nom Numro Alias ip 0 IP icmp 1 ICMP tcp 6 TCP udp 17 UDP Comme on le voit, le protocole IP dispose lui-mme d'un identificateur de protocole (qui vaut 0 en l'occurrence). Cet identificateur est un identificateur de pseudo protocole , parce qu'IP est en fait le protocole de base. ICMP est identifi par le numro 1, TCP par le numro 6 et UDP par le numro 17. Il existe beaucoup d'autres protocoles, qui ne seront pas dcrits ici. Bien entendu, le fichier /etc/protocols fourni avec votre distribution doit dj contenir la dfinition de la plupart des protocoles. De la mme manire, la plupart des ports TCP et UDP sont affects des services bien dfinis, et certains programmes rseau peuvent chercher faire la correspondance entre les noms de ces services et les numros de ports. Cette correspondance est stocke dans le fichier de configuration /etc/services. Les informations concernant les services sont donnes raison d'une 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 l'extrait donn ci-dessous : Service Port/Protocole ftp 21/tcp telnet 23/tcp smtp 25/tcp DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 316
Service Port/Protocole pop3 110/tcp irc 194/tcp irc 194/udp Comme vous pouvez le constater, ces services n'ont pas d'alias. Ces informations sont donnes uniquement titre d'exemple. Il va de soi que le fichier /etc/services fourni avec votre distribution contient la dfinition d'un grand nombre de services, et vous n'aurez en gnral pas y toucher. 9.2.7. Les super-dmons inetd et xinetd La plupart des services rseau sont grs par des programmes qui s'excutent 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 lorsqu'un 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 finir par consommer une part non ngligeable des ressources systme. C'est pour cette raison que les super-dmons inetd (de l'anglais InterNET Daemon ) et xinetd (de l'anglais eXtended INETD ) ont t crs. Ces dmons sont l'coute des demandes de connexion des clients pour les autres services rseau, et ne lancent ceux-ci que lorsqu'un client se connecte sur leurs ports. Une fois lancs, les vritables dmons reprennent la main et communiquent directement avec leurs clients. Ainsi, inetd et xinetd coutent les ports pour tout le monde, et sont la plupart du temps les seuls fonctionner. Les ressources systme sont donc conomises et les services rseau sont dmarrs et arrts la demande. Le super-dmon xinetd est appel remplacer inetd, qui lui est beaucoup plus ancien et nettement moins souple. En pratique, un seul de ces super-dmons doit tre dmarr sur une machine (il est inutile de les lancer tous les deux, car les clients ne peuvent se connecter qu' un seul d'entre-eux de toutes manires). Les deux sections suivantes dcrivent la configuration de ces super-dmons. 9.2.7.1. Le super-dmon inetd Le super-dmon inetd laisse de plus en plus la main au nouveau super-dmon xinetd qui est beaucoup plus puissant, mais reste toutefois trs utilis sur de nombreuses machines. Sa description n'est donc pas inutile, car toutes les distributions n'utilisent pas encore xinetd. Le super-dmon inetd utilise le fichier de configuration /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 qu'il doit lancer lorsqu'une telle connexion arrive. Ce fichier est structur en lignes, dont chacune dcrit un des services que le dmon inetd prend en charge. Les informations donnes sur ces lignes sont les suivantes : le nom du service (tel qu'il est dfini dans la premire colonne du fichier /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) ; le protocole rseau utilis ( tcp ou udp ) par ce service ; DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 317
l'un des mots cls wait ou nowait, qui permettent d'indiquer si inetd doit attendre la fin de l'excution du dmon grant le service ou s'il peut attendre de nouvelles requtes de la part des clients ; le nom de l'utilisateur au nom duquel le dmon grant ce service doit fonctionner (en gnral, c'est l'utilisateur root) ; le chemin sur le fichier excutable de ce dmon ; les ventuels paramtres en ligne de commande pour ce dmon, en commenant par l'argument 0, qui doit toujours tre le nom du fichier excutable du programme lui-mme. Par exemple, la ligne suivante permet de lancer le dmon telnetd sur toute requte via le protocole TCP pour le service telnet : telnet stream tcp nowait root /usr/sbin/in.telnetd in.telnetd Il est suppos ici que le dmon en charge de ce service peut tre lanc avec le programme /usr/sbin/in.telnetd. Le dmon inetd est capable de fournir lui-mme un certain nombre de services de base, et il n'est pas ncessaire de fournir un dmon pour ces services. Dans ce cas, il faut utiliser le mot cl internal la place du nom du fichier 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 fichier de configuration /etc/inetd.conf dfinisse les services comme indiqu dans cette section. En effet, un programme intermdiaire en charge d'assurer des contrles de scurit est souvent intercal entre inetd et les dmons grant les services. Nous verrons ce que fait exactement ce programme dans une prochaine section. 9.2.7.2. Le super-dmon xinetd Le super-dmon xinetd utilise un autre fichier de configuration que celui du super-dmon inetd. Pour xinetd, la dfinition des services mis disposition des clients se fait dans le fichier de configuration /etc/xinetd.conf. Toutefois, contrairement au fichier inetd.conf, le fichier xinetd.conf peut inclure d'autres fichiers de configuration et rfrencer des rpertoires contenant les fichiers de configuration spcifiques aux services. Ainsi, la configuration des services est beaucoup plus modulaire et se fait plus facilement. En pratique, il est d'usage de dfinir les options par dfaut pour tous les services dans le fichier de configuration /etc/xinetd.conf, et de dcrire les diffrents services dans des fichiers complmentaires stocks dans le rpertoire /etc/xinetd.d/. Ce rpertoire est alors inclus directement dans le fichier xinetd.conf l'aide de la directive includedir ddie cet usage. Les fichiers de configuration de xinetd sont constitus de sections permettant de dcrire les services pris en charge, ou tout simplement les options par dfaut applicables tous les services. La forme gnrale de ces sections est la suivante : service { option oprateur valeur [valeur [...]] option oprateur valeur [valeur [...]] ... }
o service est le nom du service (ou defaults pour les options par dfaut), option est un mot-cl identifiant une des options de ce service, et oprateur est l'un des oprateurs '=' (pour la dfinition de DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 318
la valeur d'une option ou l'crasement de sa valeur prcdente), '+=' (pour complter la liste de valeurs d'une option) ou '-=' (pour supprimer une valeur de la liste de valeurs d'une option). Les valeurs des options peuvent tre multiples, et leur nature dpend des options utilises. Les principales options utilisables dans ces sections sont les suivantes : Option Signification id Identificateur du service, pour le cas o plusieurs sections devraient tre dfinies pour un mme service. Cette possibilit est utilise lorsque l'on dsire fournir des options diffrentes pour un mme service. L'entre choisie (et donc le jeu d'options choisi) dpend dans ce cas de critres dfinis par exemple sur l'interface rseau ou sur les adresses des clients. type Permet d'indiquer la nature du service dcrit par cette section. Gnralement, cette option n'a pas tre donne, sauf lorsque l'on veut forcer la mthode d'implmentation d'un service. Par exemple, il est possible de donner la valeur INTERNAL cette option pour utiliser l'un des services implments par xinetd en interne. server Permet de donner le chemin sur l'excutable du dmon prenant en charge le service dcrit. server_args Permet de donner les paramtres en ligne de commande du dmon prenant en charge le service. Notez que, contrairement ce qui se fait avec inetd, il ne faut gnralement pas donner le nom de l'excutable en premier argument dans cette option. Cette rgle peut toutefois tre rendue fausse en ajoutant la valeur NAMEINARGS dans l'option flags dcrite ci-dessous. socket_type Le type de canal de communication utilis ( stream ou dgram , comme pour inetd). protocol Le protocole rseau utilis par le service ( tcp ou udp , comme pour inetd). port Le port sur lequel le service peut tre trouv. Cette option est facultative. Si elle n'est pas indique, le numro de port utilis sera celui indiqu dans le fichier de configuration /etc/services pour le service en cours de configuration. wait L'indicateur de capacit du dmon grer plusieurs connexions simultanment. Les valeurs que l'on peut donner cette option sont yes et no , respectivement pour indiquer que le dmon peut grer plusieurs connexions simultanment ou non. Dans ce dernier cas, le dmon xinetd lancera plusieurs instances du dmon grant le service si plusieurs clients cherchent se connecter simultanment. Le nombre maximum d'instance peut toutefois tre contrl l'aide des options insances et per_source dcrites ci-dessous. flags Les paramtres permettant de contrler diffrents aspects du service. Les options les plus courantes sont IDONLY , qui permet de n'autoriser que les connexions provenant de machines disposant d'un serveur d'identification des clients, NORETRY , qui permet d'viter de ressayer de lancer le dmon du service si le lancement prcdent a chou, et NAMEINARGS, qui permet d'indiquer que le nom de l'excutable doit tre spcifi en premier paramtre dans l'option server_args. user Le compte utilisateur dans lequel le dmon prenant en charge le service doit tre lanc. Cette option ne peut bien entendu pas tre utilise pour les services grs en interne par xinetd. interface L'interface laquelle le service est attach. Cette option permet de dfinir plusieurs configurations pour un mme service et d'affecter ces diffrentes DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 319
Option Signification configurations des interfaces rseau distinctes. Pour l'heure, seul l'adresse IP de l'interface rseau peut tre spcifie grce cette option, ce qui impose d'avoir des adresses IP fixes. only_from La liste des adresses des machines autorises se connecter. Il est possible de spcifier les adresses IP explicitement ou l'aide d'une adresse et d'un masque de sous-rseau. Les noms de domaines peuvent galement tre utiliss. Dans ce cas, le nom n'est pas transform en adresse IP. Au contraire, c'est l'adresse du client qui est retransforme en nom de machine pour vrifier s'il a le droit de se connecter. Notez que l'absence de ce champ indique que, par dfaut, l'accs est accord toutes les machines (sauf celles explicitement interdites de connexion par l'option no_access dcrite ci-dessous). En revanche, la prsence de ce champ mais sans valeur permet d'interdire l'accs toutes les machines. no_access La liste des adresses des machines qui n'ont pas le droit de se connecter. Les adresses peuvent tre spcifies de la mme manire que pour l'option on1y_from. Si une adresse vrifie les critres des deux options on1y_from et no_access, c'est l'option dont le critre est le plus prcis qui est choisie. access_times La priode pendant laquelle le service est accessible. Cette priode peut tre exprime sous la forme d'une liste d'intervalles heure:minute-heure:minute . instances Permet d'indiquer le nombre maximum d'instances d'un mme dmon que xinetd peut lancer. Cette option permet donc de spcifier un nombre de connexions maximum pour chaque service. per_source Permet d'indiquer le nombre maximum d'instances d'un mme dmon que xinetd peut lancer pour un mme client (identifi par son adresse IP). Cette option permet donc de limiter le nombre de connexions d'un client, de manire indpendante du nombre de connexions total donn par l'option insances. cps Permet de limiter dans le temps le nombre de connexions entrantes pour un service, afin d'viter les attaques par dni de service. Cette option prend deux paramtres, le premier tant le nombre maximum de demandes de connexion par seconde que xinetd peut accepter. Si ce nombre est dpass le service est dsactiv pendant le nombre de secondes indiqu par le deuxime paramtre. disabled Permet de dsactiver globalement des services, en indiquant leurs noms en paramtre. Par dfaut, aucun service n'est dsactiv. Cette option ne peut tre utilise que dans la section defaults, car elle permet de dsactiver globalement et rapidement un ensemble de services. enabled Permet de donner la liste des services pris en charge. Cette option fonctionne de manire similaire l'option disab1ed, ceci prs qu'elle fonctionne en logique inverse. L'absence de cette option implique l'activation de tous les services, sauf ceux qui sont lists dans l'option disab1ed. En revanche, ds que cette option est dfinie, seuls les services lists sont dmarrs. Tout comme l'option disab1ed, cette option ne peut tre utilise que dans la section globale defaults. disable Permet de dsactiver les services de manire unitaire. Cette option est utilise dans les sections des services, afin d'indiquer de manire plus fine qu'avec les options enab1ed et disab1ed s'ils doivent tre activs ou non. Cette option peut prendre deux valeurs : yes ou no . La premire permet de dsactiver le service et la deuxime de le garder fonctionnel. Notez que les options enab1ed et disab1ed ont priorit l'option disab1e. Ainsi, un service dsactiv par l'une de ces options ne peut pas tre ractiv en attribuant la valeur no l'option disab1e. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 320
Option Signification log_type Mthode d'enregistrement des vnements du dmon xinetd. Il est possible d'utiliser le dmon syslog pour enregistrer les vnements de connexion et de dconnexion des utilisateurs, ou directement un fichier texte. Dans le premier cas, il faut utiliser la valeur SYSLOG suivie de la classe d'enregistrement (gnralement daemon) et du niveau de trace (gnralement info). Dans le deuxime cas, il faut spcifier la valeur FILE et indiquer les limites basse et haute de la taille du fichier au del desquelles un avertissement est gnr, puis les traces sont arrtes. log_on_success Informations enregistres lors de l'acceptation d'une connexion. xinetd peut enregistrer diffrentes informations lorsqu'une nouvelle connexion est accepte. Ces informations sont indiques grce la liste des mots-cls spcifis par cette option. Les mots-cls utilisables sont PID , pour enregistrer l'identifiant de processus du dmon qui traitera la requte, HOST , pour enregistrer le nom de la machine cliente, USERID , pour enregistrer le nom de l'utilisateur (si celui-ci peut tre obtenu par le service d'identification de sa machine), EXIT , pour enregistrer la terminaison du dmon qui traite la requte, et DURATION , pour enregistrer la dure de la connexion. log_on_failure Informations enregistres lors d'un refus de connexion. Les informations enregistres lors d'un refus de connexion peuvent tre spcifies l'aide de cette option, de la mme manire que les informations de connexion peuvent tre enregistres l'aide de l'option 1og_on_success. Les mots-cls utilisables avec cette option sont ATTEMPT , pour signaler simplement que la tentative a chou, HOST , pour enregistrer le nom de la machine depuis laquelle la tentative a t effectue, et USERID , pour enregistrer le nom de l'utilisateur tel qu'indiqu par le service d'identification de sa machine. Toutes les options disponibles ne sont pas dcrites dans le tableau prcdent. Vous pourrez obtenir de plus amples renseignements en consultant la page de manuel xinetd.conf. La section defaults permet de dfinir les options par dfaut applicables tous les services. Les options qui y sont dfinies peuvent toutefois tre redfinies ou prcises l'aide des oprateurs =, += et -= dans les sections des diffrents services. Les options utilisables dans la section defaults et que l'on a vu ci-dessus sont les options bind, 1og_ype, 1og_on_success, 1og_on_fai1ure, insances, per_source, on1y_from, no_access, disab1ed et enab1ed. Gnralement, le fichier /etc/xinetd.conf ne contient que la section default et une ligne d'inclusion du rpertoire /etc/xinetd.d/, dans lequel se trouvent les fichiers de configuration des diffrents services. L'exemple suivant prsente donc un fichier xinetd.conf typique : # Dfinition des options par dfaut : defaults { # On interdit la connexion tout le monde par dfaut : only_from =
# On dsactive les services internes : disabled = echo time daytime chargen discard
# On dsactive les services d'administration de xinetd : disabled += servers services xadmin
# On limite le nombre d'instances total des services : DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 321
instances = 15
# On dfinit les rgles de suivi des connexions : log_type = FILE /var/log/servicelog log_on_success = HOST PID USERID DURATION EXIT log_on_failure = HOST USERID RECORD }
# Inclusion des fichiers de configuration des services : includedir /etc/xinetd.d L'exemple suivant prsente la dfinition du service telnet situe dans le fichier de configuration /etc/xinetd.d/telnet : service telnet { socket_type = stream # Le numro de port et le protocole utiliss peuvent tre omis # car ils sont dj dfinis dans /etc/services.
server = /usr/sbin/in.telnetd user = root wait = no only_from = localhost disable = no } Note : xinetd n'inclue pas les fichiers contenant un point (caractre '.') ni ceux finissant par un tilde (caractre '~'). En particulier, on vitera de mettre une extension aux fichiers de configuration des services, puisque dans ce cas ils contiendraient un point et ne seraient pas lus. 9.3. Configuration de la connexion Internet Les connexions Internet font partie des connexions rseau temporaires permettant de relier deux machines. La machine locale se connecte en effet au serveur du fournisseur d'accs Internet via la ligne tlphonique. Bien entendu, ce serveur est considr comme la passerelle par dfaut pour tous les paquets destination d'Internet. Ce type de connexion a de particulier que les adresses IP des deux machines sont, en gnral, dtermines dynamiquement, lors de l'tablissement de la connexion. La configuration rseau des connexions Internet se fait donc lgrement diffremment de la configuration d'un rseau local normal. Heureusement, tous les dtails de la configuration rseau sont pris en charge automatiquement. 9.3.1. Le protocole PPP Les connexions Internet utilisent le protocole PPP (abrviation de l'anglais Point to Point Protocol ), qui permet deux ordinateurs d'changer des paquets TCP/IP au travers d'un canal de communication simple (donc, en particulier, au travers d'une ligne tlphonique en utilisant un modem). Ce protocole est gr par le noyau et par le dmon pppd. Il permet d'effectuer la ngociation initiale entre les deux machines, ce qui comprend notamment l'identification, l'authentification et l'attribution des adresses IP. Le dmon pppd ne gre pas le modem directement, car il est suppos tre utilisable sur d'autres 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 qu'il permet de dialoguer directement avec le modem). Le DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 322
programme chat ne connat pas les diffrents types de modems qui existent sur le march, il se contente d'excuter des scripts qui dcrivent les informations envoyer au modem et les rponses attendues en retour. Cela permet de reporter la configuration spcifique aux modems dans des scripts de connexion. L'criture de ces scripts ncessite bien entendu de connatre les commandes que votre modem est capable de comprendre. Notez galement qu'il est indispensable ici que votre modem soit un vrai modem (qu'il 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 d'une connexion est donc l'initialisation du modem et l'tablissement de l'appel tlphonique par le programme chat, puis le dmarrage du dmon pppd. Celui-ci effectue la connexion sur le serveur du fournisseur d'accs et dtermine l'adresse 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. L'identification et l'authentification peuvent se faire de diffrentes manires selon le fournisseur d'accs Internet utilis. Un certain nombre de fournisseurs exige l'authentification lors de l'appel tlphonique, avec un mcanisme de login classique. Pour ces fournisseurs, l'authentification est faite par le programme chat, auquel il faut communiquer le nom d'utilisateur et le mot de passe. D'autres fournisseurs utilisent un protocole d'authentification spcifique. Pour ceux-ci, l'authentification est ralise directement par le dmon pppd, une fois que la ligne a t tablie. Les deux principaux protocoles d'authentification sont PAP (abrviation de l'anglais Password Authentification Protocol ) et CHAP (abrviation de Challenge Handshake Authentification Protocol ). PAP ralise l'authentification 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 dfi. Le serveur envoie une requte contenant son nom, et le client doit s'identifier et authentifier 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 d'accs Internet. Si vous avez le choix, utilisez de prfrence le protocole CHAP, car il n'envoie jamais de mot de passe en clair sur la ligne tlphonique. La configuration de l'accs Internet pour un fournisseur d'accs requiert donc la configuration du rseau, la configuration de ppp, la configuration de chat et l'criture des scripts de connexion. Ces tapes seront dtailles ci-dessous. Nous supposerons dans la suite que vos paramtres de connexion sont les suivants : Paramtre Valeur Fournisseur d'accs Internet www.monfai.fr Nom de domaine monfai.fr Adresse du DNS 192.205.43.1 Numro de tlphone 08 36 76 30 18 Nom de login jdupont Mot de passe gh25k;f Nom de serveur (pour PAP et CHAP) serveurfai Note : Les informations donnes dans le tableau ci-dessus sont fictives et ne servent qu' donner un exemple. Vous devez bien entendu les remplacer par les valeurs vous concernant en chaque endroit o DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 323
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 d'accs refuseront de vous donner toutes ces informations, sous prtexte qu'ils vous fournissent un kit de connexion pour Windows. Ce n'est 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' identifier la connexion. 9.3.2. Cration d'une connexion Internet La premire tape dans la cration d'une connexion Internet est avant tout l'ajout des serveurs DNS du fournisseur d'accs votre configuration rseau. Cela n'est pas toujours ncessaire, car il est possible de configurer le dmon pppd pour qu'il demande au fournisseur d'accs les adresses IP des DNS de celui-ci lors de l'tablissement de la connexion. Cependant, il est plus facile d'utiliser le mcanisme de connexion la demande si l'on indique les adresses des DNS du fournisseur d'accs dans la configuration rseau. Pour l'exemple de connexion utilis ici, vous devez simplement ajouter les lignes suivantes dans le fichier /etc/resolv.conf : search monfai.fr nameserver 192.205.43.1 Si vous ne connaissez pas les adresses de DNS de votre fournisseur d'accs, vous pourrez l'obtenir en regardant dans les traces du noyau lors de l'tablissement d'une connexion. Nous verrons cela en dtail plus loin. La deuxime tape est d'crire un script de numrotation pour le programme chat. Ce script pourra tre plac dans le rpertoire /etc/ppp/peers/, et pourra tre nomm monfai.chat par exemple. Son contenu sera le suivant : REPORT CONNECT ABORT ERROR ABORT BUSY ABORT VOICE ABORT "NO CARRIER" ABORT "NO DIALTONE" "" ATZ OK AT&F1 OK ATM0L0DT0836763018 CONNECT "" Ce script contient le programme que chat doit excuter pour appeler le fournisseur d'accs Internet. Il indique toutes les erreurs possibles susceptibles de faire chouer l'opration, puis il envoie les commandes d'initialisation 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 d'accs Internet. Note : Dans les scripts pour chat, il est possible d'utiliser indiffremment l'apostrophe simple, l'apostrophe double ou aucune apostrophe si la chane attendue de la part du modem ou lui envoyer ne contient aucun espace. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 324
Si d'aventure ce script ne fonctionne pas, vous serez sans doute oblig de demander au programme chat d'afficher tous les messages envoys et reus par le modem. Cela se fait normalement avec les options -v et -s. Vous verrez alors les messages en provenance du modem, ce qui vous permettra de dterminer comment modifier ce script. Si votre fournisseur d'accs Internet utilise un mcanisme de login classique, vous devez faire l'identification directement dans le script chat. En gnral, le serveur du fournisseur d'accs 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 d'utilisateur. Le serveur demande alors le mot de passe avec une chane telle que password: , demande la suite de laquelle le script chat doit envoyer votre mot de passe. Ce n'est 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 qu'il n'est 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 l'ordinateur distant. De plus, il se peut que la premire lettre soit en majuscule ou en minuscule, selon le fournisseur d'accs Internet que vous utilisez. Il en va de mme pour la demande de mot de passe ( password: ). Si, en revanche, votre fournisseur d'accs utilise le mcanisme d'authentification PAP ou CHAP, vous ne devez pas ajouter ces lignes, car le serveur n'enverra pas la chane de caractres login: . Il tentera de communiquer directement avec votre dmon pppd pour raliser l'authentification. Bien entendu, les dfis lancs par le serveur sont simplement constitus de la demande du login et de la demande du mot de passe correspondant ce login. Le dmon pppd utilisera alors les secrets stocks dans le fichier /etc/ppp/pap-secrets ou le fichier /etc/ppp/chap-secrets pour rpondre ces dfis, selon que le protocole utilis par le serveur du fournisseur d'accs est PAP ou CHAP. C'est donc dans ces fichiers que vous devrez enregistrer votre login et votre mot de passe. Le format de ces fichiers est trs simple. Les deux fichiers 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 l'identification et l'authentification se fasse correctement. Comme on le voit, le nom du serveur est indiqu dans ce fichier : 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 d'identifier des utilisateurs, mais des machines. Cependant, pour votre fournisseur, votre machine est identifie par votre login, et il faut donc indiquer ce nom comme nom de machine cliente dans les fichiers pap-secrets et chap-secrets. Le nom de serveur n'est pas utilis pour la connexion. Il ne sert qu' dterminer quel secret doit tre utilis pour une connexion donne. Comme la plupart des gens n'ont qu'un seul fournisseur d'accs 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. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 325
Pour les connexions Internet, il est souvent impossible de connatre a priori l'adresse 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 fichiers de secrets de PAP ou de CHAP, vous pourrez crire le script de connexion Internet. Ce script est trs simple : #!/bin/sh # Script de connexion Internet
# Effectue le mnage : rm -f /var/spool/uucp/LCK* /var/lock/LCK* /var/run/ppp*.pid
# tablit la connexion : /usr/sbin/pppd /dev/modem 115200 connect "/usr/sbin/chat -v \ -f /etc/ppp/peers/monfai.chat" defaultroute usepeerdns \ ipcp-accept-remote ipcp-accept-local Prenez garde crire la ligne excutant pppd et la ligne des options en une seule ligne, sans saut de ligne. Notez que le caractre '\' plac en fin de ligne permet d'indiquer que la commande se poursuit sur la ligne suivante. Ce script commence par faire le mnage sur les fichiers ventuellement laisss par les anciennes connexions, et appelle pppd en lui demandant d'utiliser la connexion tablie par le programme chat avec la vitesse maximale de connexion indique. Lorsque la connexion est tablie, le serveur du fournisseur d'accs est enregistr comme passerelle par dfaut dans la table de routage du noyau. L'envoi et la rception des paquets IP en direction de l'Internet se fera donc en passant par cette passerelle. Les adresses de DNS du fournisseur d'accs sont galement rcupres et ajoutes dans le fichier /etc/ppp/resolv.conf. Vous pourrez les dterminer simplement en consultant les fichiers de log de votre distribution dans le rpertoire /var/log/. Les deux dernires options permettent d'autoriser le serveur du fournisseur d'accs fixer les adresses IP locales et distantes. Dans ce script de connexion, le programme chat est appel avec le script de numrotation pour chat que l'on a dj crit. Si l'on dsire voir exactement ce qui se passe, on peut ajouter l'option -s la commande d'excution 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 fichier spcial de priphrique /dev/modem pour la communication. Il va de soi que si ce fichier spcial n'existe 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 l'identification et l'authentification. Si vous utilisez l'un des protocoles PAP ou CHAP, il faut demander pppd d'effectuer 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, afin de prciser le nom du serveur et le nom d'utilisateur pour l'identification. 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 \ DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 326
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 '\'. L'option noauh signale qu'il n'est pas ncessaire que le serveur du fournisseur d'accs s'authentifie en tant que tel (ce n'est pas ncessaire, car les fournisseurs d'accs ne jouent pas vraiment aux pirates du web), et les deux options suivantes permettent respectivement d'indiquer le nom de ce serveur ainsi que le nom d'utilisateur utiliser pour le login. Lors de l'authentification, le dmon pppd lira le fichier de secret du protocole choisi par le fournisseur d'accs pour trouver le mot de passe utiliser. Notez encore une fois qu'il est facultatif de prciser le nom du serveur du fournisseur d'accs si vous avez utilis le caractre gnrique '*' dans les fichiers de secrets pour PAP et CHAP. Il est possible de faire en sorte que la connexion Internet s'tablisse automatiquement ds qu'un programme cherche utiliser une adresse devant passer par la route par dfaut. Toute demande destination d'une machine dont l'adresse est inconnue localement provoque dans ce cas l'tablissement de la connexion Internet. Pour cela, il suffit simplement : d'ajouter l'option 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 d'activer galement la dconnexion automatique, faute de quoi vous risqueriez de rester connect involontairement. Cela se fait simplement en ajoutant l'option id1en 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 : L'interface rseau est automatiquement cre lorsqu'on lance le dmon pppd avec l'option demand. Par consquent, le dmon pppd dfinira automatiquement une adresse IP locale pour cette interface et une adresse IP distante pour la passerelle par dfaut. Malheureusement, ces adresses peuvent changer d'une connexion une autre. En effet, la plupart des fournisseurs attribuent les adresses IP en fonction du modem qui rpond au client qui appelle et, en gnral, la connexion ne se fait pas toujours sur le mme modem (il peut y avoir plusieurs modems pour un mme numro de tlphone). C'est pour cela qu'il faut ajouter les options ipcp-accep-remoe et ipcp- accep-1oca1 pour indiquer pppd de modifier ces adresses lorsqu'il tablira la connexion. Le problme, c'est que les connexions TCP/IP utilisant ces adresses seront systmatiquement casses la suite de ce changement. C'est en particulier le cas pour le programme qui a initi l'tablissement de la liaison PPP. C'est pour cette raison qu'il est recommand de demander une adresse IP fixe son fournisseur d'accs lorsqu'on veut utiliser la connexion la demande. Hlas, ce service peut faire l'office d'une facturation supplmentaire. Mme si l'on utilise l'option usepeerdns dans la ligne de commande de PPP, il est recommand de rajouter les adresses des DNS dans le fichier /etc/resolv.conf. En effet, en l'absence de DNS, les noms de domaine ne seront pas rsolus et aucune requte vers l'extrieur ne se fera. Par consquent, la route par dfaut ne sera pas utilise, et pppd n'tablira donc pas la connexion automatiquement. Notez que si vous dfinissez les DNS dans le fichier /etc/resolv.conf, vous pouvez vous passer de l'option usepeerdns dans la ligne de commande de pppd. Si vous dsirez procder de cette manire, vous devrez vous assurer que l'ordre spcifi pour la rsolution des noms dans le fichier /etc/host.conf est bien le fichier /etc/hosts (option hoss) 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 spcifies dans le fichier d'options /etc/ppp/options du dmon pppd. Cela peut permettre de simplifier les scripts de connexion. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 327
Si l'on n'utilise pas les mcanismes de connexion / dconnexion automatiques, on devra se dconnecter manuellement. Pour cela, rien de plus simple : il suffit de dtruire le dmon pppd. Cela peut tre ralis automatiquement avec le script suivant : #!/bin/sh # Script de terminaison de la connexion PPP #
# Dtermine la connexion fermer (fournie sur la ligne de commande, # ppp0 par dfaut) : if [ "$1" = "" ]; then DEVICE=ppp0 else DEVICE=$1 fi
# Teste si la connexion indique est active : if [ -r /var/run/$DEVICE.pid ]; then
# Dtruit le processus ppp correspondant (son PID est stock # dans /var/run/) : kill -INT `cat /var/run/$DEVICE.pid`
# Effectue le mnage : if [ ! "$?" = "0" ]; then rm -f /var/run/$DEVICE.pid echo "ERREUR: Un fichier de PID rsiduel \ a d tre effac manuellement" exit 1 fi rm -f /var/spool/uucp/LCK* /var/lock/LCK* echo "La connexion PPP sur $DEVICE a t ferme correctement..." echo
# Termine le script : exit 0 fi
# La connexion indique n'est pas active : echo "ERREUR: Il n'y a pas de connexion PPP sur $DEVICE" exit 1 9.3.3. Connexion l'ADSL Les connexions ADSL ne requirent pas d'appel tlphonique vers un modem du fournisseur d'accs. Elles s'tablissent donc d'une manire diffrente, gnralement bien plus simple. Toutefois, la manire de procder dpend des fournisseurs d'accs et de la nature de votre modem ADSL. Il est donc difficile de dcrire de manire gnrique la manire dont une connexion ADSL se met en place sous Linux. Seules les grandes lignes seront donc indiques dans ce paragraphe. Sachez pour commencer qu'il existe trois types de modems ADSL : les modems USB, les modems Ethernet simples, et les modems routeurs. Les premiers sont connects votre ordinateur via un cble USB. Les deuximes utilisent plutt un cble rseau Ethernet classique. Les modems routeurs quant eux sont des modems ADSL coupls d'un switch et, de plus en plus souvent, d'un point d'accs sans fil Wifi. Ces modems sont intressants, car ils permettent de connecter plusieurs ordinateurs Internet via DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 328
la mme ligne, et ces ordinateurs peuvent tre mis en rseau directement en les cblant au modem routeur l'aide de cbles Ethernet, et via un rseau sans fil Wifi pour les modems avec point d'accs. En gnral, les modems USB requirent des pilotes de priphriques spcifiques chaque type de modem. Ce n'est pas le cas des modems Ethernet et des modems routeurs, puiqu'ils se connectent directement votre carte Ethernet par un cble Ethernet (droit ou crois selon votre modem). Par consquent, si votre carte rseau est prise en charge par Linux (ce qui est fort probable), vous n'aurez absolument aucun problme pour vous connecter Internet avec un modem Ethernet, alors que les pilotes USB pour Linux sont rarement dvelopps avec srieux par les fabricants de modem (ayant essuy les pltres avec le modem Sagem Fast800 fourni par Free ses clients et particip au dbogage de celui-ci, je suis bien plac pour le savoir). De plus, les modems USB ne permettent pas de partager la connexion Internet entre plusieurs ordinateurs, fonctionnalit trs intressante dans le cadre d'un petit rseau familial ou si vous disposez d'un ordinateur fixe et d'un portable. Enfin, les modems Ethernet sont aliments, alors que les modems USB utilisent l'alimentation du port USB, ce qui dans 50% des cas provoque des instabilits de la connexion Internet, si ce n'est de l'ordinateur lui-mme. Il est donc vivement conseill de choisir un modem routeur ou, dfaut, un modem Ethernet si vous en achetez un ou si votre fournisseur d'accs Internet vous en propose. La plupart des modems volus des offres multiples (tlphone + Internet et ventuellement TV) distribus de nos jours sont gnralement des modems routeurs, et disposent souvent d'une possibilit de point d'accs Wifi. Note : Mme si, comme nous le verrons plus loin, Linux est parfaitement capable de raliser un partage de connexion Internet, l'achat d'un routeur domestique ou, pour simplifier l'installation, d'un modem routeur prenant tout en charge, reste intressant. En effet, ces appareils, prenant totalement en charge la connexion Internet, rendent la configuration de l'accs Internet triviale au niveau de l'ordinateur. De plus, ils peuvent fournir des services complmentaires, tels que la configuration dynamique des ordinateurs clients par le protocole DHCP, ou encore le relai de serveur de nom avec un mini serveur DNS, acclrant ainsi de manire non ngligeable le temps de rponse lors de la navigation. De plus, et c'est sans doute l'un des plus gros avantages, les modems routeurs peuvent jouer le rle d'un pare-feu naturel ds lors que la fonction de partage de connexion Internet est active. En effet, mme si un seul ordinateur est connect au modem routeur, celui-ci doit utiliser un jeu d'adresses IP prives pour votre rseau local, car votre fournisseur ne vous attribuera qu'une seule adresse IP lors de la connexion. Or, les adresses prives utilises de ce type ne sont pas, par dfinition, routables sur Internet. Par consquent, du point de vue d'Internet, seul le modem routeur est visible : aucun de vos ordinateurs n'est accessible ! Il est donc quasiment impossible un pirate et encore moins un virus de passer au travers de cet appareil, sauf le pirater en premier lieu. Dans tous les cas, cela complique srieusement les choses, et le type de protection fourni par ces appareils est donc extrmement fiable. Ne serait-ce que pour cet aspect des choses, je vous recommande vivement l'utilisation de ce type d'appareil (surtout si vous avez un ordinateur qui fonctionne sous Windows). Mme si vous utilisez un modem USB, il apparatra gnralement comme une interface Ethernet dans le systme. L'installation des pilotes pour les modems USB tant extrmement spcifique, cette tape ne sera pas dcrite plus en avant ici. La suite du document suppose donc que vous disposiez d'un modem Ethernet, ou que votre modem soit accessible par l'intermdiaire d'une interface Ethernet simule par le pilote du modem. Lorsque vous aurez branch votre modem et que vous pourrez y accder via son interface Ethernet, vous devrez tablir la connexion avec votre fournisseur d'accs. Cela dpend encore une fois du fournisseur d'accs, et parfois mme, pour un mme fournisseur, de la rgion dans laquelle vous vous trouvez. Gnralement, deux mthodes sont utilises pour tablir la connexion : DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 329
soit les communications se font de manire totalement transparente via l'interface Ethernet du modem, auquel cas la connexion s'tablit aussi facilement que si vous vous connectiez un rseau Ethernet classique ; soit les communications sont encapsules dans le protocole de communication PPP, via un protocole du type PPPoE ( PPP over Ethernet ) ou PPPoA ( PPP over ATM ), auquel cas vous devrez utiliser le dmon pppd pour tablir la connexion. Dans le premier cas, la configuration est simpliste. Il suffit d'utiliser l'interface Ethernet du modem comme interface de sortie dans la route par dfaut, et ventuellement de mettre un client DHCP l'coute sur cette interface si le fournisseur d'accs utilise ce protocole pour attribuer les adresses IP de ses clients. La manire de procder est dcrite dans la section traitant de DHCP. Cette technique est celle utilise par le fournisseur d'accs Free en France en zone dgroupe. Pour ce fournisseur, les adresses IP fournies tant fixes en zone dgroupe, la connexion Internet se rsume donc aux deux commandes suivantes : ifconfig eth0 adresse up route add default eth0
o adresse est l'adresse IP que votre fournisseur d'accs vous a attribue. La connexion Internet se fait donc dans ce cas comme la configuration d'une simple carte rseau. Dans le deuxime cas, le plus simple est d'utiliser le protocole d'encapsulation PPPoE. Comme son nom l'indique, ce protocole permet d'encapsuler les paquets de la liaison PPP avec votre fournisseur Ethernet directement dans des trames Ethernet, qui peuvent ensuite tre envoyes via l'interface Ethernet du modem. Cette solution peut tre mise en place avec l'outil rp-pppoe de la socit Roaring Penguin, ou directement avec un gestionnaire PPPoE au niveau du noyau. La mise en place d'une connexion avec rp-pppoe est rellement trs simple. En effet, un fichier d'options pour PPP nomm pppoe.conf et des scripts de connexion et dconnexion adsl-start et adsl- stop, permettant de lancer le dmon pppd avec les bonnes options et dans le bon contexte pour tablir la connexion, sont fournis. Les seules oprations faire sont dans ce cas de s'assurer que les identifiants de connexion (login et mot de passe) fournis par votre fournisseur d'accs sont bien enregistrs dans les fichiers pap-secrets et chap-secrets, et que le fichier pppoe.conf y fait bien rfrence (au niveau de l'option USER). La manire de procder ayant dj t dcrite ci-dessus, elle ne sera pas dtaille outre mesure. L'utilisation du gestionnaire PPPoE du noyau est encore plus directe, car il suffit simplement dans ce cas de lancer le dmon pppd en lui demandant de travailler avec l'interface rseau du modem. Pour utiliser ce gestionnaire, vous devez activer, outre le support de PPP, l'option PPP over Ethernet (EXPERIMENTAL) dans les options de configuration du noyau. Une fois les identifiants de connexion crits dans les fichiers pap-secrets ou chap-secrets, la connexion Internet se fera simplement avec la commande suivante : pppd interface
o interface est le nom de l'interface rseau du modem. Note : Il est recommand de limiter la taille des paquets en rception et en mission 1492 octets, afin de prendre en compte les frais ds l'encapsulation PPPoE. Pour cela, il suffit de placer les options suivantes dans le fichier d'options de pppd : mtu 1492 mru 1492 DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 330
Il est impratif de mettre en place un pare-feu si vous disposez d'une connexion ADSL. La manire de procder est dcrite dans la Section 9.4. 9.3.4. Les autres outils de connexion Vous en savez suffisamment 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, d'envoyer et recevoir des courriers lectroniques ( mails ), de naviguer ( surfer ) et de lire les groupes de discussions ( news ). Cependant, l'utilisation de ces outils ne sera pas dcrite ici, car il en existe trop pour que l'on puisse tous les prsenter. Heureusement, ces outils sont prvus pour tre trs simples d'emploi et leur configuration ne pose rellement aucun problme. 9.3.5. Configuration d'un cache de DNS La rsolution des noms de domaines est une opration dont le cot est loin d'tre ngligeable au niveau du temps de connexion aux serveurs, si ce n'est au niveau de la bande passante utilise. En effet, il est relativement courant qu'une page Web fasse de multiples rfrences des machines inconnues et dont les adresses doivent tre rsolues. De ce fait, la rsolution des noms de domaines peut parfois se mesurer en secondes, surtout si les serveurs de noms des fournisseurs d'accs sont surchargs, ce qui arrive trs couramment, mme pour les clients des offres ADSL 20Mbits/s. De plus, il est courant qu'un internaute reste toujours sur le mme site pendant qu'il navigue sur Internet. Il peut donc tre trs intressant de disposer d'un cache local pour les requtes DNS. Un tel cache permet de mmoriser les interrogations faites par les programmes clients (essentiellement les navigateurs Web) et surtout les rponses renvoyes par le serveur de nom du fournisseur d'accs. Ainsi, lorsqu'un client effectue une requte sur un nom de domaine pour lequel il a dj fait une requte auparavant (par exemple lors de l'accs la page prcdente), la rponse de cette requte set accessible immdiatement, puisqu'elle se trouve dans le cache local. Ce mcanisme permet donc de rduire sensiblement les temps de connexions aux machines situes sur Internet : seule la premire connexion prend le temps habituel, et toutes les autres sont acclres. Note : Les mcanismes de caches sont trs souvent utiliss en informatique pour permettre d'obtenir rapidement des informations habituellement difficiles obtenir, mais qui varient trs peu. Du fait de leur quasi constance, il est en effet possible de les copier dans une mmoire locale. Par exemple, les caches sont utiliss au niveau des disques durs, dans les processeurs pour accder aux donnes en mmoire, et au niveau du rseau. Ils permettent d'augmenter considrablement les performances, au dtriment d'une plus grande complexit des oprations d'criture des donnes, puisque celles-ci invalident les donnes des caches et doit forcer leur mise jour. En pratique, la mise en place d'un cache de DNS consiste installer un petit serveur de nom local sur la machine, qui rpond toutes les requtes des applications clientes. Ce petit serveur est lui-mme client des serveurs de noms effectifs qui se trouvent sur Internet. L'idal est dans ce cas simplement de s'adresser aux serveurs de noms du fournisseur d'accs Internet, afin de bnficier de son propre cache et de sa bande passante pour les requtes intermdiaires. C'est exactement ce que se propose de faire le programme DNSmasq. La configuration de DNSmasq se fait essentiellement au niveau du fichier de configuration /etc/dnsmasq.conf. Ce fichier est constitu d'une srie d'options auxquelles une valeur est affecte, les lignes commenant par un signe dize tant des commentaires. Le fichier suivant peut vous servir d'exemple, sachant que les options sont toutes commentes dans le fichier fourni par dfaut : DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 331
# Exemple de fichier de cache de DNS :
# Fichier de dfinition des serveurs de noms en amont : # Si on utilise ppp pour se connecter : #resolv-file=/etc/ppp/resolv.conf
# Si on utilise DHCP directement : resolv-file=/var/dhcp/resolv.conf
# Adresses des serveurs utiliss par les socits et les fournisseurs d'accs # tordus qui ont mis en place une entre par dfaut pour capter toutes les requtes # sur les noms de domaines incorrects et qui redirigent leurs clients vers des sites # publicitaire au lieu de renvoyer une erreur comme la ntiquette l'impose :
# Verisign (ils se sont calms rcemment) : bogus-nxdomain=64.94.110.11
# Mon fournisseur dbile : # bogus-nxdomain=adresse.du.site.publicitaire Ce fichier d'exemple ne montre que les options rellement ncessaires. L'option reso1v-fi1e permet d'indiquer au dmon dnsmasq o trouver les adresses des serveurs DNS amont (c'est--dire ceux du fournisseur d'accs en pratique). Il faut indiquer ici un fichier qui contient les lignes nameserver donnant les adresses de ces serveurs. Comme nous allons le voir ci-dessus, il ne faut pas spcifier ici le fichier /etc/resolv.conf du systme, car nous allons le modifier. Au contraire, il faut indiquer un fichier dans lequel les outils de connexion rseau (client DHCP ou dmon pppd par exemple) enregistrent les adresses des serveurs de noms du fournisseur d'accs. Par exemple, lorsqu'une connexion est tablie avec le dmon ppp, celui-ci enregistre les serveurs DNS primaires et secondaires du fournisseur d'accs dans le fichier /etc/ppp/resolv.conf. Il suffit donc de rfrencer ce fichier dans l'option reso1v-fi1e. En revanche, si la connexion s'tablit directement grce au protocole DHCP, il faut configurer le client DHCP du systme pour qu'il enregistre les adresses des serveurs DNS dans un fichier autre que le fichier /etc/resolv.conf du systme. Ici, nous utilisons le fichier /var/dhcp/resolv.conf. Par exemple, si votre distribution utilise le client DHCP dhcpcd, il suffit de lui ajouter l'option -e/var/dhcp pour que ce fichier soit cr dans le rpertoire /var/dhcp/ au lieu du rpertoire /etc/. L'option bogus-nxdomain est un palliatif une tentative de dtournement des requtes DNS que certaines socits effectuent pour obtenir un profit publicitaire direct ou des statistiques comportementales sur les internautes. Ces socits redirigent en effet toutes les requtes mal formes ou mal orthographies vers un de leur serveur Web, ce qui leur permet d'obtenir des informations sur les sites accds, d'afficher une page de publicit, ou encore faire une redirection directe vers un site suppos intresser l'internaute. Bien entendu, ce comportement est pour le moins cavalier, car l'internaute ne comprend pas forcment pourquoi il tombe sur un site inconnu alors qu'il demandait l'adresse d'un autre site. D'autre part, ces redirections perturbent le bon fonctionnement de certains outils qui s'attendent explicitement trouver une erreur en cas d'chec de rsolution de nom. Il n'y a malheureusement pas grand chose faire pour faire revenir la raison ces socits ( part porter plainte, passer la concurrence, ou plus mchamment bombarder leurs serveurs DNS de requtes invalides avec un programme, ce que je vous dconseille de faire vivement...). En revanche, dnsmasq peut dtecter ces redirections et gnrer une erreur de rsolution de nom classique. Pour DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 332
cela, il suffit d'identifier l'adresse IP du serveur cible de la redirection, et de l'indiquer dnsmasq l'aide de l'option bogus-nxdomain. Ainsi, lorsque dnsmasq reoit une rponse rfrenant ces serveurs, il renvoie directement une erreur aux programmes clients. Une fois que vous aurez configur et lanc le dmon dnsmasq, vous devrez encore indiquer au systme qu'il devra interroger ce dmon pour effectuer les rsolutions des noms de domaines. Comme il l'a dj t indiqu dans les sections prcdentes, cela se fait simplement en ajoutant une ligne nameserver rfrenant la machine locale dans le fichier de configuration /etc/resolv.conf : nameserver 127.0.0.1 Note : Le dmon dnsmasq ne permet de cacher que les rsultats des requtes DNS. Or, de nombreux fichiers qui ne changent quasiment jamais, comme les images de fond, les logos et les pages statiques, sont rcuprs de multiples fois lorsqu'un internaute navique sur des pages Web. Il est donc trs intressant de mettre galement ces fichiers en cache. Nous verrons comment raliser cela dans la section suivante. 9.3.6. Installation d'un proxy HTTP Lors d'une connexion Internet, bon nombre d'informations sont changes entre le serveur et le client. En particulier, lorsqu'on navigue, un certain nombre d'images et d'informations plus ou moins lentes tlcharger transitent systmatiquement. Or la plupart des gens visitent rgulirement les mmes sites, dont seulement quelques pages sont modifies 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 modifies. Cette question prend encore plus de sens lorsqu'on 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 l'engorgement du lien partag inutilement. C'est pour rsoudre ce genre de problme que les programmes que l'on nomme proxies ont t dvelopps. Un proxy n'est rien d'autre qu'un programme qui s'intercale entre des clients et un serveur. Il a pour principale fonction de mmoriser les rponses les plus courantes renvoyes par le serveur, afin de rpondre la fois plus rapidement aux clients et d'viter 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 afin de soulager une liaison trop faible. Le principe de fonctionnement d'un proxy est le suivant. Les navigateurs utiliss par les clients se connectent, en temps normal, directement sur le port 80 des serveurs Web. Leur configuration doit tre modifie 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. Lorsqu'il peut le faire, il renvoie les donnes qu'il 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, afin de laisser la place aux donnes qui sont le plus souvent demandes et qui changent le moins. Pour utiliser un proxy, il faut donc modifier la configuration des navigateurs des clients, afin de donner l'adresse de la machine sur laquelle le proxy fonctionne, ainsi que le port sur lequel il peut tre contact (gnralement, c'est le port 8080). Note : Il est galement possible d'utiliser les mcanismes de translation d'adresse du noyau pour rendre l'utilisation du proxy transparente aux clients. La manire de procder sera dcrite dans la section traitant des mcanismes de filtrage du noyau. Il existe plusieurs proxies sur le march, mais le plus utilis sous Linux est sans doute squid. C'est un logiciel performant, puissant et libre, fourni avec la plupart des distributions modernes. Sa DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 333
configuration peut tre relativement technique, mais nous n'allons pas entrer dans tous les dtails. Il s'agit simplement ici de donner un aperu des fonctionnalits disponibles. squid utilise le fichier de configuration /etc/squid.conf pour lire ses options de fonctionnement. Ce fichier contient en particulier les informations concernant le rseau, une liste de rgles indiquant qui a le droit de lui demander des pages Web, et l'emplacement du cache dans lequel les donnes du cache seront enregistres. L'option la plus importante dans ce fichier de configuration est sans doute cache_dir, qui indique l'emplacement 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 l'arborescence du cache. La signification de ces deux nombres doit tre explique un peu plus en dtail. Par dfaut, squid essaie de rpartir tous les objets qu'il place dans le cache de manire uniforme dans plusieurs rpertoires, afin d'acclrer les temps de recherche sur ces objets lorsqu'un client les demande. Il utilise cette fin 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 c'est 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 d'objets que le nombre de rpertoires peut lui-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 spcifi dans l'option cache_dir indique le nombre de rpertoires du premier niveau, et le deuxime nombre indique le nombre de sous-rpertoires dans chacun de ces rpertoires. En gnral, on utilise respectivement les valeurs 16 et 256 : cache_dir /var/squid/cache 100 16 256
Cette ligne permet de cacher 100 Mo, en rpartissant les objets dans 4096 rpertoires rpartis en 16 groupes de 256 rpertoires. Les options suivantes spcifient les paramtres rseau du cache : l'option hp_por indique le port TCP que les clients doivent utiliser pour accder au proxy ; l'option fp_user permet de donner l'adresse email utiliser comme mot de passe dans les connexions FTP anonymes ; l'option cache_peer permet d'intgrer le proxy local dans une hirarchie de proxies. Les proxies peuvent en effet tre organiss dans une structure arborescente. Lorsqu'un proxy d'un niveau ne dispose pas d'une 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 l'anglais Inter Cache Protocol ). En gnral, les petits rseaux ne disposent que d'un seul proxy, l'option cache_peer est donc souvent utilise de la manire suivante : cache_peer pre parent port port_icp options DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 334
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 l'option defau1, qui spcifie les valeurs par dfaut des options, et no-query, qui permet de dire au cache de ne pas utiliser le protocole ICP (dans ce cas, le paramtre port_icp sera inutilis) ; L'option prefer_direc permet d'indiquer au proxy s'il doit chercher avant tout rcuprer lui-mme les donnes qui lui manquent (valeur on) ou s'il doit contacter d'abord son proxy pre (valeur off). Si l'on a spcifi un proxy pre l'aide de l'option cache_peer, on aura intrt utiliser la valeur off ; L'option dns_chi1dren permet de donner le nombre de processus en charge de cacher les requtes sur les DNS. squid peut en effet lancer des serveurs de cache de DNS permettant d'optimiser les temps d'accs aux pages Web. Plus le rseau local est important, plus il faudra de tels processus, afin 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 fichier de configuration squid.conf. Par dfaut, squid n'autorise personne accder au cache. Il est donc ncessaire de donner les droits ncessaires pour permettre aux machines de votre rseau d'accder au cache. La gestion de la scurit se fait par l'intermdiaire de ce que l'on appelle des ACL (abrviation de l'anglais Access Control List ). Une ACL est simplement un critre permettant de classifier les requtes que le proxy reoit. Ces critres sont dfinis l'aide du mot cl acl, suivi du nom de la liste, suivi lui-mme d'un critre que toutes les requtes concernes par cette ACL devront vrifier. Les critres sont eux-mmes exprims l'aide d'un 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 filtrer les requtes par les adresses des machines qui les ont mises, en indiquant l'adresse de leur rseau, donne sous la forme adresse/masque ; dst, qui permet de filtrer les requtes par leurs adresses destination ; port, qui permet de slectionner les requtes s'adressant sur les ports fournis en paramtres ; proto, qui permet de spcifier 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 n'est pas exhaustif, mais il permet d'avoir une ide des capacits de filtrage des requtes dont dispose squid. Vous trouverez ci-dessous quelques exemples pratiques de dfinitions d'ACL : # ACL caractrisant toutes les machines : acl all src 0.0.0.0/0.0.0.0
# ACL dfinissant les machines d'un 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 : DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 335
acl safe_ports port 80 21 443 563 70 210 1025-65535
# ACL dfinissant les requtes de connexion : acl connect method CONNECT La dfinition 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 l'action prise pour les requtes vrifiant cette rgle, et ACL une liste d'ACL permettant de spcifier les requtes concernes par cette rgle. La ressource la plus utilise est sans doute le protocole HTTP, que l'on peut spcifier l'aide du mot cl http_access. Les actions peuvent tre l'acceptation (mot cl allow) ou le refus (mot cl deny) de la requte. Enfin, les requtes concernes par une rgle sont celles qui appartiennent toutes les ACL de la liste d'ACL 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 l'action oppose la dernire rgle spcifie. En pratique, il est plus sage de toujours indiquer une politique par dfaut pour toutes les requtes restantes, par exemple en utilisant l'ACL all dfinie ci-dessus. L'exemple de jeu de rgles de scurit donn ci-dessous convient pour un rseau local d'adresses 192.168.0.0. Vous pouvez bien entendu modifier les options de scurit comme bon vous semble. Encore une fois, rappelons que le fichier de configuration de squid est trs bien document et que sa lecture est relativement facile. Je ne saurais que trop vous recommander de le consulter si vous dsirez en savoir plus. 9.4. Pare-feu et partages de connexion Internet Supposons qu'une machine situe sur un rseau local ait 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 DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 336
dfinition des rgles de routage si toutes les machines ont une adresse IP attribue par l'IANA. 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 qu'a fortiori elles ne recevront jamais de paquets provenant d'Internet. Heureusement, il existe une technique nomme masquerading, base sur un mcanisme de translation d'adresse ( NAT en anglais, abrviation de Network Address Translation ), qui permet de modifier les paquets mis destination d'Internet la vole afin 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 dautres ordinateurs d'un rseau local est un jeu d'enfant sous Linux grce cette technique. Il faut toutefois bien se rendre compte que le fait de 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 d'intrusion. Lorsqu'on utilise des adresses IP dynamiques, il est relativement difficile d'accder des machines du rseau local, sauf si la passerelle expose des services internes au reste du rseau. En revanche, si les adresses utilises sont fixes et valides sur Internet, le risque devient trs important. Par ailleurs, une machine Linux connecte sur Internet ouvre toujours des ports indsirs, mme si elle est bien configure. Par exemple, il est impossible d'empcher le serveur X d'couter les demandes de connexion provenant d'Internet, mme s'il est configur pour toutes les refuser. La configuration d'un ordinateur connect Internet doit donc se faire avec soin dans tous les cas, et l'installation d'un pare-feu est plus que recommande (un pare-feu , ou firewall en anglais, est un dispositif qui consiste protger un rseau local du feu de l'enfer d'Internet, sur lequel tous les crackers sont supposs grouiller). Les paragraphes suivants exposent les mcanismes de filtrage de paquets rseau de Linux, qui sont utilises tant pour dfinir les rgles de protection contre les intrusions indsirables sur un rseau par l'intermdiaire d'une passerelle que pour effectuer des traitements sur les paquets. Cependant, de tous ces traitements, nous ne verrons que la translation d'adresse, car c'est sans doute celui que la plupart des gens cherchent utiliser. 9.4.1. Mcanismes de filtrage du noyau Linux est capable de filtrer les paquets circulant sur le rseau et d'effectuer des translations d'adresses depuis la version 2.0. Cependant, les techniques utilises ont t profondment remanies dans la version 2.4.0 du noyau, et une architecture extensible a t mise en place et semble rpondre tous les besoins de manire simple : Netfilter. Netfilter est simplement une srie de points d'entre dans les couches rseau du noyau au niveau desquels des modules peuvent s'enregistrer afin d'effectuer 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 d'intervenir de manire souple et n'importe quel niveau. Un certain nombre de modules permettant d'effectuer les traitements les plus courants sont fournis directement dans le noyau, mais l'architecture Netfilter est suffisamment souple pour permettre le dveloppement et l'ajout des modules complmentaires qui pourraient tre dvelopps par la suite. Les fonctionnalits fournies par ces modules sont regroupes par domaines fonctionnels. Ainsi, les modules permettant de raliser des pare-feu se chargent spcifiquement de donner les moyens de filtrer les paquets selon des critres bien dfinis, et les modules permettant d'effectuer des translations d'adresses ne prennent en charge que la modification des adresses source et destination des paquets la vole. Afin de bien les identifier, ces fonctionnalits sont regroupes dans ce que l'on appelle des tables. Une table n'est en fait rien d'autre qu'un ensemble cohrent de rgles permettant de manipuler les paquets circulant dans les couches rseau du noyau pour obtenir une fonctionnalit bien prcise. Les tables les plus couramment utilises sont les tables filter , mangle et nat , qui permettent DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 337
respectivement de raliser des pare-feu, de marquer les paquets pour leur appliquer un traitement ultrieur, et d'effectuer des translations d'adresses. Les diffrentes tables de NetFilter s'abonnent chacune aux points d'entre qui sont ncessaires pour implmenter leur fonctionnalit, et les paquets qui passent au travers de ces points d'entre doivent traverser les rgles dfinies dans ces tables. Afin de faciliter la dfinition des rgles stockes dans les tables, les rgles sont regroupes dans des listes de rgles que l'on appelle communment des chanes. Chaque table dispose donc toujours d'une chane de rgles prdfinie pour chacun des points d'entre de Netfilter qu'elle utilise. L'utilisateur peut bien entendu dfinir de nouvelles chanes et les utiliser dans les chanes prdfinies, ces chanes apparaissent alors simplement comme des sous-programmes des chanes prdfinies. Les rgles des tables de Netfilter permettent de spcifier les paquets qui les vrifient, selon des critres prcis, comme par exemple leur adresse source ou le type de protocole qu'ils 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 d'une machine considre comme non sre si l'on veut faire un pare-feu. On pourra aussi envoyer ces paquets dans une autre chane, qui peuvent indiquer d'autres rgles et d'autres traitements. Les critres de slection de paquets des rgles de filtrage se basent sur les informations de l'en-tte de ces paquets. Rappelez-vous que chaque paquet de donnes mis sur le rseau transporte avec lui des informations ncessaires au fonctionnement du dit rseau, entre autres les adresses source et destination du paquet. Ce sont sur ces informations que la slection des paquets est effectue dans Netfilter. Dans le cas d'un 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 l'on a charg des modules complmentaires dans NetFilter. Par exemple, le numro de port TCP peut faire partie des critres de slection d'une rgle et donc de diffrencier le trafic des diffrents services rseau. Les traitements que l'on peut appliquer un paquet sont galement fournis par des modules de Netfilter. 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 : l'enregistrer, pour analyse ultrieure ; le rediriger vers un port local, pour traitement par un programme ddi (par exemple, par un serveur proxy) ; l'accepter, l'abandonner ou le rejeter directement (le rejet se distingue de l'abandon par l'mission d'une notification hte inaccessible la machine ayant mis le paquet) ; le modifier et, en particulier, effectuer une translation d'adresse ou le marquer pour le reconnatre dans un traitement ultrieur ; l'envoyer dans une autre chane pour effectuer des vrifications complmentaires ; le faire sortir immdiatement de la chane courante. De plus, les statistiques tenues par le noyau pour la rgle ainsi vrifie sont mises jour. Ces statistiques comprennent le nombre de paquets qui ont vrifi cette rgle ainsi que le nombre d'octets que ces paquets contenaient. Lorsqu'un paquet arrive la fin d'une chane (soit parce qu'il n'a pas t rejet ou dtruit par une rgle de filtrage de pare-feu, soit parce qu'il ne correspond aux critres d'aucune rgle, ou soit parce qu'il est arriv ce stade aprs avoir subi des modifications), 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 prdfinie, il n'y a plus de chane appelante, et le sort du paquet est dtermin par ce qu'on appelle la politique de la chane prdfinie. La politique ( policy en anglais) des chanes prdfinies indique donc ce que l'on doit faire avec les paquets qui arrivent en fin de chane. En gnral, on utilise une DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 338
politique relativement stricte lorsqu'on ralise un pare-feu, qui rejette par dfaut tous les paquets qui n'ont pas t accepts explicitement par une rgle de la chane. Note : Certains paquets peuvent tre dcoups en plusieurs paquets plus petits lors de la traverse d'un rseau. Par exemple, un paquet TCP un peu trop gros et initialement encapsul dans un seul paquet IP peut se voir clat en plusieurs paquets IP. Cela peut poser quelques problmes aux rgles de filtrage, puisque dans ce cas les donnes spcifiques TCP (par exemple les numros de ports) ne sont disponibles que sur le premier paquet IP reu, pas sur les suivants. C'est 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 qu'elle reoit. 9.4.2. Translations d'adresses et masquerading Nous avons vu que grce aux mcanismes de filtrage du noyau, il est possible de modifier les paquets la vole. Il peut tre intressant de modifier un paquet pour diverses raisons, les trois plus intressantes tant sans doute de le marquer l'aide d'un champ spcial dans son en-tte afin de le reconnatre ultrieurement, de modifier sa priorit pour permettre un traitement privilgi ou au contraire placer en arrire plan ce type de paquet (librant ainsi les ressources rseau pour d'autres types de connexion), et de modifier ses adresses source et destination, pour effectuer une translation d'adresse. Nous allons nous intresser plus particulirement aux diffrentes formes de translations d'adresses dans la suite de cette section. Une translation d'adresse n'est en fait rien d'autre qu'un remplacement contrl des adresses source ou destination de tous les paquets d'une connexion. En gnral, cela permet de dtourner les connexions rseau ou de simuler une provenance unique pour plusieurs connexions. Par exemple, les connexions Internet peuvent tre dtournes vers un proxy fonctionnant sur la passerelle de manire transparente, en modifiant les adresses destination des paquets mis par les clients. De mme, il est possible de simuler un seul serveur en remplaant la vole les adresses source des paquets que la passerelle envoie sur Internet. On distingue donc deux principaux types de translations d'adresses : les translations d'adresse source et les translations d'adresse destination. Parmi les translations d'adresse source se trouve un cas particulier particulirement intressant : le masquerading . Cette technique permet de remplacer toutes les adresses source des paquets provenant des machines d'un rseau local par l'adresse de l'interface de la passerelle connecte Internet, tout en conservant une trace des connexions rseau afin d'acheminer 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 d'adresses IP fournies par l'IANA. Lorsqu'une machine du rseau local envoie un paquet destination d'Internet, ce paquet est achemin vers la passerelle, qui est la route par dfaut. Celle-ci commence par modifier l'adresse source de ce paquet et mettre sa propre adresse la place, puis le transfre vers la machine du fournisseur d'accs. Tous les paquets mis par les machines du rseau local semblent donc provenir de cette passerelle, et seront achemins normalement destination. En fait, la complication provient des paquets de rponse, puisque les machines situes sur Internet croient que la machine avec laquelle elles communiquent est la passerelle. Ces paquets sont donc tous envoys la passerelle directement, et celle-ci doit retrouver la machine du rseau local laquelle ils sont destins. Cette opration est ralise de diffrentes manires selon les protocoles utiliss, et elle suppose que la passerelle conserve en permanence une trace des connexions rseau effectues par les machines du rseau local. Pour TCP, ce suivi de connexion est ralis en modifiant 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 lorsqu'elle en reoit un provenant d'Internet. Par exemple, si une machine locale fait une connexion Internet, la passerelle alloue un DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 339
nouveau numro de port pour cette connexion et modifie tous les paquets sortants comme ayant t mis par la passerelle elle-mme, sur ce port. Lorsque l'autre machine prenant part la connexion, situe sur Internet, envoie un paquet de rponse, celui-ci sera destination de la passerelle, avec comme port destination le port allou cette connexion. La passerelle peut donc retrouver, partir de ce port, l'adresse de la machine destination relle, ainsi que le port source que cette machine utilisait initialement. La passerelle modifie 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 d'Internet, comme si la connexion avait t directe. Notez bien que la passerelle ne modifie pas les adresses source des paquets provenant d'Internet, elle ne fait que les racheminer vers la bonne destination.
Figure 9-7. Translation d'adresses avec suivi de port TCP
Ainsi, le masquerading est un mcanisme compltement transparent pour les machines du rseau local. En revanche, pour les machines de l'Internet, il ne semble y avoir qu'un 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, d'o le nom de masquerading. Tout ce travail effectu par la passerelle ncessite un traitement spcifique sur chaque paquet qu'elle 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 DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 340
Linux, mme sur les plus petites machines (386 et 486). Vous voil rassurs, et peut-tre aurez-vous trouv d'ici peu une utilit l'un de ces dinosaures qui tranent encore dans votre garage... 9.4.3. Trajet des paquets dans le code de Netfilter Il existe cinq points d'entre au total pour les modules de Netfilter dans le code des couches rseau IP de Linux. chacun de ces points d'entre, les paquets sont soumis aux diffrentes chanes des tables qui s'y intressent. Comme on l'a dj dit plus haut, chaque table dispose d'une chane prdfinie pour chacun des points d'entre auxquels elle s'intresse. Le nom de ces chanes prdfinies est le nom du point d'entre au niveau duquel elles sont appeles. Les paragraphes suivants dcrivent ces cinq points d'entre, ainsi que l'ordre dans lequel les chanes des diffrentes tables sont traverses par les paquets. Les paquets rseau provenant de l'extrieur sont d'abord contrls par le noyau afin de dtecter les erreurs les plus simples. Les paquets mal forms ou corrompus sont systmatiquement limins ce niveau, avant mme d'atteindre le code de Netfilter. Les autres paquets commencent alors leur trajet dans les couches de plus haut niveau. C'est ce moment l qu'ils rencontrent le point d'entre PREROUTING. Les rgles des chanes PREROUTING des tables mangle et nat sont appliques ce moment. Ces chanes prcdent le code de routage, qui est en charge de dterminer le trajet que le paquet devra suivre par la suite partir de l'adresse destination des paquets. C'est donc dans ces chane que l'on pourra entre autres modifier l'adresse destination des paquets, si l'on veut faire une translation d'adresse destination. Cette opration se fait typiquement dans la table nat. Les paquets qui passent le point d'entre PREROUTING sont ensuite orients par le code de routage de Linux. S'ils sont destination de la machine locale, ils rencontrent un autre point d'entre : le point d'entre INPUT. Les rgles des chanes INPUT des tables mangle et filter sont excutes ce moment. C'est donc ce niveau que l'on peut empcher un paquet d'entrer dans le systme, ce qui se fait naturellement dans la table filter. Les autres paquets doivent tre transfrs vers une autre machine, souvent par une autre interface rseau. Ils atteignent donc le point d'entre FORWARD. Ce point d'entre permet de contrler les paquets qui transitent au travers d'une passerelle. Les paquets y traversent les chanes FORWARD des tables mangle et filter, cette dernire tant justement ddie au filtrage des paquets qui transitent par la passerelle. Les paquets qui sont accepts par les chanes FORWARD retournent ensuite dans le code de routage du noyau, afin de dterminer l'interface rseau par laquelle ils doivent tre rmis. Une fois cela ralis, ils sont prts tre rmis, mais ils doivent auparavant traverser les chanes des tables abonnes au point d'entre POSTROUTING. Il s'agit bien sr des chanes POSTROUTING des tables mangle et nat. C'est dans cette dernire chane que se font les translations d'adresse source. Enfin, les paquets mis par la machine locale destination de l'extrieur doivent imprativement passer par le point d'entre OUTPUT, qui excute les chanes OUTPUT des tables mangle, nat et filter. C'est donc ce niveau que l'on pourra modifier les adresses destination des paquets de la machine locale avant leur routage et effectuer le filtrage des paquets sortants, dans les chanes OUTPUT des tables nat et filter. Les paquets qui se rvlent avoir le droit de sortir traversent alors de code de routage, puis, tout comme les paquets qui ont t transfrs, passent par le point d'entre POSTROUTING. Figure 9-8. Trajet des paquets dans le code de filtrage DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 341
9.4.4. Configuration du noyau et installation des outils Les fonctionnalits de Netfilter sont toutes fournies par le noyau lui-mme, aussi leur configuration doit-elle se faire au niveau du noyau. La manire de procder pour configurer le noyau a t indique dans le paragraphe traitant de la compilation du noyau. Les options activer pour mettre en place les fonctionnalits de filtrage des paquets et de translation d'adresse sont les suivantes : Network packet filtering (replace ipchains) , pour activer les fonctionnalits de filtrage 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 filtrage ; Connection tracking (required for masq/NAT) (menu IP: Netfilter Configuration ), 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 d'adresses ; IP tables support (required for filtering/masq/NAT) , pour permettre la gestion des tables de Netfilter ; Packet filtering , pour inclure le support de la table filter . Cette option est ncessaire pour raliser un pare-feu ; REJECT target support , pour permettre le rejet des paquets (par dfaut, seul l'abandon des paquets est fourni dans le code de filtrage) ; Full NAT , pour inclure la table nat de Netfilter. Cette option est ncessaire pour raliser un partage de connexion Internet ; MASQUERADE target support , pour permettre le masquerading afin 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 d'un paramtre global permettant de contrler le routage des paquets IP d'une 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 afin de pouvoir utiliser votre passerelle Linux. Cela peut tre ralis en crivant la valeur 1 dans le fichier /proc/sys/net/ipv4/ip_forward du systme de fichiers virtuel /proc/ : DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 342
echo "1" > /proc/sys/net/ipv4/ip_forward La manipulation des chanes et la manipulation des rgles de Netfilter se fait grce l'outil iptables. Cette commande doit normalement avoir t installe par votre distribution. Toutefois, si ce n'est pas le cas, vous pouvez la compiler manuellement. Pour cela, il vous faudra rcuprer l'archive des sources d'iptables. Cette archive peut tre trouve sur Internet. La version courante est la 1.2.9, aussi l'archive se nomme-t-elle iptables-1.2.6a.tar.bz2. L'installation d'iptables ne pose pas de problme particulier en soi. Vous devrez d'abord dcompresser l'archive avec les deux commandes suivantes : bunzip2 iptables-1.2.9.tar.bz2 tar xf iptables-1.2.9.tar
puis modifier le fichier Makefile pour dfinir les rpertoires d'installation dans les variables LIBIR, BINIR et MANIR. 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 l'installation avec la commande make install. 9.4.5. Utilisation d'iptables Il est possible, grce iptables, d'effectuer toutes les oprations d'administration dsires sur les chanes des tables de Netfilter. Vous pourrez donc crer des nouvelles chanes, les dtruire, dfinir les politiques par dfaut, ainsi que manipuler les rgles de ces chanes (en ajouter, en supprimer ou en remplacer une). En fait, iptables dispose d'un grand nombre d'options, 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 filtrage du noyau. 9.4.5.1. Manipulation des chanes Toutes les options peuvent tre utilises avec toutes les tables gres par le noyau. La table sur laquelle une commande s'applique peut tre prcise l'aide de l'option -. Si cette option n'est pas fournie, la table utilise par dfaut sera la table filter, qui est celle qui est normalement utilise pour dfinir des rgles de filtrage des paquets dans un pare-feu. La cration d'une nouvelle chane se fait simplement avec l'option -N : iptables [-t table] -N chane
o chane est le nom de la chane crer. Il est interdit d'utiliser un des mots cls rservs par iptables. En pratique, il est recommand d'utiliser des noms de chanes en minuscules, car les chanes prdfinies sont en majuscules. Une chane peut tre dtruite avec l'option -X : iptables [-t table] -X chane Une chane ne peut tre dtruite que lorsqu'elle ne contient plus de rgle. De plus, il est impossible de dtruire les chanes prdfinies d'une table. Vous pouvez lister l'ensemble des rgles d'une chane avec l'option -L : iptables [-t table] -L chane DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 343
Enfin, il est possible de supprimer toutes les rgles d'une chane avec l'option -E : iptables [-t table] -F chane
o chane est le nom de la chane dont on veut supprimer les rgles. 9.4.5.2. Manipulation des rgles La syntaxe gnrale pour ajouter une rgle dans une chane est la suivante : iptables [-t table] -A chane [-s source] [-d destination] [-p protocole] [-i itfsource] [-o itfdest] [-j cible]
o : table est la table dans laquelle se trouve la chane manipule (par dfaut, il s'agit de la table filter) ; chane est le nom de la chane laquelle la rgle doit tre ajoute ; source est l'adresse source du paquet ; destination est l'adresse destination du paquet ; protocole est le protocole du paquet (spcifi avec son numro de port ou par le nom du protocole tel qu'il est dclar dans le fichier /etc/services) ; itfsource est le nom de l'interface rseau source par laquelle le paquet doit arriver ; itfdest est le nom de l'interface destination par laquelle le paquet doit sortir ; et cible est la cible des paquets qui vrifient les critres de slection de la rgle. Chacun des paramtres plac entre crochets dans la syntaxe est facultatif, mais il faut au moins qu'un critre de slection soit donn (sur les adresses source ou destination, ou sur le port ou l'interface). Les adresses source et destination peuvent tre indiques directement par le nom des machines (comme par exemple www.monrezo.com ) ou par leurs adresses IP. Vous pouvez spcifier directement toutes les adresses d'un rseau avec la syntaxe rseau/masque . Il est galement possible d'utiliser 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 spcifier toutes les adresses possibles (dans ce cas, l'adresse donne pour le rseau n'est 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 Netfilter qui ont t compils. Les principales cibles sont les suivantes : ACCEPT, pour accepter le paquet qui vrifie le critre de slection de la rgle ; DROP, pour liminer purement et simplement le paquet ; REJECT, pour rejeter le paquet (en signalant l'erreur la machine mettrice). Cette cible n'est 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 prdfinies ; REDIRECT, pour rediriger le paquet sur une autre machine, souvent la machine locale. Cette cible n'est utilisable qu'avec la table nat, car il s'agit d'une translation d'adresse. On ne peut l'utiliser que dans les chanes PREROUTING et OUTPUT et les chanes utilisateur appeles partir de ces chanes ; DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 344
SNAT, pour permettre la modification de l'adresse source du paquet. Cette cible n'est bien entendu accessible qu'au niveau de la table nat. Comme la modification de l'adresse source n'a de signification 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 modification de l'adresse destination du paquet, afin par exemple de le dtourner vers une autre machine que celle vers laquelle il devait aller. Cette cible n'est accessible que dans la table nat, et n'est utilisable que dans les chanes PREROUTING et OUTPUT ainsi que dans les chanes utilisateur appeles partir de ces chanes ; MASQUERADE, pour effectuer une translation d'adresse sur ce paquet, dans le but de raliser un partage de connexion Internet. Cette cible n'est accessible que dans la chane POSTROUTING de la table nat, ainsi que dans les chanes utilisateur appeles partir de cette chane. Toute autre spcification de destination doit tre le nom d'une chane utilisateur, avec les rgles de laquelle le paquet devra tre test. Si aucune cible n'est spcifie, aucune action n'est prise et la rgle suivante est traite. Cependant, les statistiques de la rgle sont toujours mises jour. La suppression d'une rgle d'une 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 d'utiliser l'option - avec les mmes options que celles qui ont t utilises lors de l'ajout de la rgle, si l'on trouve cela plus pratique. Enfin, la politique d'une chane, c'est--dire la cible par dfaut, peut tre fixe avec l'option -P : iptables -P chane cible
o chane est l'une des chanes prdfinie, et cible est l'une des cibles ACCEPT ou DROP. Remarquez que l'on ne peut pas dfinir de politique pour les chanes cres par l'utilisateur, puisque les paquets sont vrifis avec les rgles restantes de la chane appelante lorsqu'ils sortent de la chane appele. 9.4.6. Exemple de rgles Ce paragraphe a pour but de prsenter quelques-unes des rgles les plus classiques. Le but est ici de prsenter les principales fonctionnalits d'iptables et de raliser un pare-feu simpliste. 9.4.6.1. Exemple de rgles de filtrage Les rgles de filtrage peuvent tre utilises pour mettre en place un pare-feu afin de protger votre rseau. La dfinition des rgles de filtrage constitue bien souvent l'essentiel du problme, et ncessite bien entendu de parfaitement savoir ce que l'on veut faire. De manire gnrale, la rgle d'or en matire de scurit informatique est de tout interdire par dfaut, puis de donner les droits au compte- gouttes. C'est exactement ce que permet de faire la politique des chanes. On dfinira donc toujours la politique par dfaut des chanes pour utiliser la cible DROP. Cela peut tre ralis simplement avec les trois commandes suivantes : # Dfinition de la politique de base : iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT DROP
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 345
# Suppression des rgles existantes : iptables -F INPUT iptables -F FORWARD iptables -F OUTPUT Ces rgles commencent par dfinir les politiques de base pour toutes les tables en blindant la machine pour qu'elle ne laisse rien entrer, ne rien passer et ne rien sortir. Toutes les rgles des tables sont ensuite dtruites. 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 l'utilisation normale de votre systme. Le minimum est d'autoriser la machine communiquer avec elle-mme, ce qui implique d'autoriser les paquets provenant de l'interface loopback entrer et sortir : # Communications locales : iptables -A INPUT -d 127.0.0.0/8 -i lo -j ACCEPT iptables -A OUTPUT -s 127.0.0.0/8 -o lo -j ACCEPT Si l'on dispose d'un rseau local, il peut galement tre utile d'autoriser toutes les connexions avec les machines de ce rseau : # Connexions au rseau local : iptables -A INPUT -s 192.168.0.0/24 -i eth0 -j ACCEPT iptables -A OUTPUT -s 192.168.0.1 -o eth0 -j ACCEPT Comme vous pouvez le constater, ces rgles ne permettent l'entre des paquets prtendant provenir du rseau local (c'est--dire les paquets ayant comme adresse source une adresse de la forme 192.168.0.0/24) que par l'interface rseau connecte au rseau local (dans notre exemple, il s'agit de l'interface rseau eth0). De mme, seule la machine locale ( laquelle l'adresse 192.168.0.1 est suppose tre affecte) peut mettre des paquets sur le rseau local. Notez que ces rgles sont beaucoup trop restrictives pour permettre un accs Internet (et, a fortiori une intrusion provenant d'Internet...). Il est donc ncessaire d'autoriser les connexions vers les principaux services Internet. Pour cela, il faut ajouter les lignes suivantes : # Autorise les communications sortantes # pour DNS, HTTP, HTTPS, FTP, POP, SMTP, SSH et IPSec : iptables -A OUTPUT -o ppp0 -p UDP --dport domain -j ACCEPT iptables -A OUTPUT -o ppp0 -p TCP --dport domain -j ACCEPT iptables -A OUTPUT -o ppp0 -p TCP --dport http -j ACCEPT iptables -A OUTPUT -o ppp0 -p TCP --dport https -j ACCEPT iptables -A OUTPUT -o ppp0 -p TCP --dport ftp -j ACCEPT iptables -A OUTPUT -o ppp0 -p TCP --dport pop3 -j ACCEPT iptables -A OUTPUT -o ppp0 -p TCP --dport smtp -j ACCEPT iptables -A OUTPUT -o ppp0 -p TCP --dport ssh -j ACCEPT iptables -A OUTPUT -o ppp0 -p AH -j ACCEPT iptables -A OUTPUT -o ppp0 -p ESP -j ACCEPT
Il est suppos ici que la connexion Internet se fait via le dmon pppd, et que l'interface rseau que celui-ci a cr se nomme ppp0. Vous pouvez constater que les rgles prsentes jusqu'ici se basaient uniquement sur les adresses source et destination des paquets, ainsi que sur les interfaces rseau par lesquelles ils entraient et ressortaient. Vous voyez prsent que l'on peut raliser des rgles beaucoup plus fines, qui se basent galement sur les protocoles rseau utiliss (que l'on peut slectionner avec l'option -p) et, pour chaque protocole, sur des critres spcifiques ces protocoles (comme les ports source et destination, DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 346
que l'on peut slectionner respectivement avec les options --spor et --dpor). Vous pouvez consulter la page de manuel d'iptables pour plus de dtails ce sujet. Certains protocoles requirent plusieurs connexions TCP/IP pour fonctionner correctement. La connexion est amorce avec une premire connexion, puis une deuxime connexion est tablie aprs ngociation. C'est en particulier le cas pour le protocole FTP, qui utilise une connexion de contrle et une connexion pour le transfert des donnes. De plus, le protocole FTP peut fonctionner dans deux modes distinct (respectivement le mode dit actif et le mode dit passif ), selon que c'est le serveur contact qui tablit la connexion de donnes ou que c'est le client qui l'tablit vers le serveur. Ces connexions additionnelles ne doivent bien entendu pas tre filtres, pour autant, on ne sait pas avec prcision le port qui sera choisi pour elles, car ce port fait partie de la ngociation lors de l'tablissement de la connexion. Heureusement, Netfilter dispose d'un mcanisme de suivi de connexions capable d'analyser les donnes protocolaires (si le protocole n'est pas chiffr, bien entendu). La solution est donc de lui indiquer qu'il doit laisser les paquets relatifs aux connexions tablies au niveau protocolaire. La rgle utiliser est la suivante : # Autorise l'tablissement des connexions protocolaires additionnelles : iptables -A OUTPUT -o ppp0 -m state --state ESTABLISHED,RELATED -j ACCEPT Vous dcouvrez ici l'option --mach, qui permet de slectionner des paquets selon certains critres. Le critre choisi ici est bien entendu l'tat des connexions. Des options complmentaires peuvent tre fournis ce critre l'aide de l'option --sae. Dans le cas prsent, nous acceptons tous les paquets sortants qui appartiennent une connexion tablie (paramtre :ESTABLISHED ) ou qui a t amorce partir d'une autre connexion dj tablie (paramtre RELATED ). Les rgles prcdentes permettent la machine locale de se connecter Internet, mais la connexion ne s'tablira malgr tout pas, car aucun paquet rponse n'a le droit d'entrer. Il est donc ncessaire d'autoriser l'entre des paquets rponse provenant des serveurs auxquels on se connecte. Toutefois, il ne faut pas tout autoriser. Seuls les paquets relatifs aux connexions dont la machine locale est initiatrice doivent tre autoriss. Cela est ralisable encore une fois grce au mcanisme de suivi de connexions de Netfilter. Pour notre exemple, la simple rgle suivante suffit : # Autorise les paquets entrants pour les connexions # que l'on a tablies : iptables -A INPUT -i ppp0 --match state --state ESTABLISHED,RELATED -j ACCEPT
Elle dit que les paquets entrants des connexions tablies et des connexions relatives aux autres connexions sont autoriss. Tous les autres paquets seront refuss. Si vous dsirez laisser un service ouvert vers Internet, vous devrez ajouter des rgles complmentaires qui autorisent les paquets entrant et sortant destination du port de ce service. Par exemple, si vous voulez laisser un accs SSH ouvert, vous devrez ajouter les deux rgles suivantes : # Autorise les connexions SSH entrantes : iptables -A INPUT -i ppp0 -p TCP --dport ssh -j ACCEPT iptables -A OUTPUT -o ppp0 -p TCP --sport ssh -j ACCEPT Enfin, il peut tre utile d'accepter certains paquets du protocole ICMP, qui permet de contrler l'tat des liaisons. En particulier, il faut pouvoir recevoir les paquets indiquant qu'une machine n'est pas accessible, faute de quoi certaines connexions impossibles risqueraient d'tre trs longues dtecter. De plus, il peut tre intressant de pouvoir envoyer des demandes de rponse aux machines pour vrifier leur prsence. Les rgles suivantes pourront donc tre ajoutes : # Autorise les paquets ICMP intressants : DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 347
iptables -A OUTPUT -p ICMP --icmp-type echo-reply -j ACCEPT iptables -A INPUT -p ICMP --icmp-type echo-request -j ACCEPT iptables -A OUTPUT -p ICMP --icmp-type echo-request -j ACCEPT iptables -A INPUT -p ICMP --icmp-type echo-reply -j ACCEPT iptables -A INPUT -p ICMP --icmp-type destination-unreachable -j ACCEPT
Notez qu'il n'est thoriquement pas ncessaire de rpondre aux paquets echo-request. Je vous ai toutefois laiss les deux rgles pour le cas o le fournisseur d'accs utiliserait ces requtes pour dterminer si la liaison reste correcte. 9.4.6.2. Exemple de partage de connexion Internet Le masquerading est un cas particulier de translation d'adresse source. En effet, celle-ci est couple un suivi des connexions afin d'effectuer la translation d'adresse destination des paquets de rponse renvoys par les serveurs sur Internet pour les acheminer vers la machine du rseau local qui a initi la connexion. En pratique, seule la chane POSTROUTING de la table nat sera utilise pour le masquerading, parce que c'est ce niveau que la translation d'adresse est effectue. La mise en uvre du masquerading se fait extrmement simplement, puisqu'il suffit de spcifier que tous les paquets du rseau local sortant de l'interface rseau connecte sur Internet doivent subir le masquerading. En gnral, l'interface de la connexion Internet est une interface PPP, aussi la rgle utiliser est-elle simplement la suivante : # Effectue la translation d'adresses : iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o ppp0 -j MASQUERADE
Cette rgle permet de raliser la translation des adresses des machines du rseau local et destination d'Internet. Remarquez que les paquets provenant de la machine locale ne subissent pas le masquerading, car c'est compltement inutile. Il faut ensuite autoriser les paquets provenant des machines du rseau local traverser la passerelle. Cela se fait avec des rgles similaires celles vues dans la section prcdente, mais adaptes pour tre utilises dans la chane FORWARD de la table filter : # Autorise le trafic DNS, HTTP, HTTPS, # FTP, POP, SMTP et SSH au travers de la passerelle : iptables -A FORWARD -s 192.168.0.0/24 -i eth0 -o ppp0 -p UDP --dport domain -j ACCEPT iptables -A FORWARD -s 192.168.0.0/24 -i eth0 -o ppp0 -p TCP --dport domain -j ACCEPT iptables -A FORWARD -s 192.168.0.0/24 -i eth0 -o ppp0 -p TCP --dport http -j ACCEPT iptables -A FORWARD -s 192.168.0.0/24 -i eth0 -o ppp0 -p TCP --dport https -j ACCEPT iptables -A FORWARD -s 192.168.0.0/24 -i eth0 -o ppp0 -p TCP --dport ftp -j ACCEPT iptables -A FORWARD -s 192.168.0.0/24 -i eth0 -o ppp0 -p TCP --dport pop3 -j ACCEPT iptables -A FORWARD -s 192.168.0.0/24 -i eth0 -o ppp0 -p TCP --dport smtp -j ACCEPT iptables -A FORWARD -s 192.168.0.0/24 -i eth0 -o ppp0 -p TCP --dport ssh -j ACCEPT
# Autorise l'tablissement des connexions protocolaires additionnelles : iptables -A FORWARD -s 192.168.0.0/24 -i eth0 -o eth0 --match state \ --state ESTABLISHED,RELATED -j ACCEPT
# Autorise le trafic en retour pour les connexions tablies par les clients : iptables -A FORWARD -i ppp0 -d 192.168.0.0/24 --match state \ --state ESTABLISHED,RELATED -j ACCEPT
# Autorise le trafic ICMP : DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 348
iptables -A FORWARD -p ICMP --icmp-type echo-request -j ACCEPT iptables -A FORWARD -p ICMP --icmp-type echo-reply -j ACCEPT iptables -A FORWARD -p ICMP --icmp-type destination-unreachable -j ACCEPT Enfin, le routage des paquets tant, par dfaut, dsactiv sous Linux, il faut le ractiver. Si votre distribution ne le fait pas, vous aurez donc 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. Certains routeurs et certaines passerelles d'Internet sont bogus et ne rpondent pas correctement aux messages ICMP. Cela a pour consquence, entre autres, que la taille maximum des paquets transmis via la passerelle peut ne pas tre dtermine correctement. En effet, les clients de la passerelle utiliseront gnralement la taille maximum utilisable pour communiquer avec la passerelle, et cette taille peut malheureusement tre suprieure la taille maximum des paquets pour atteindre certains sites Web. Les messages d'erreurs ICMP tant filtrs, personne ne peut s'en apercevoir, et certaines connexions peuvent rester bloques ad vitam eternam. Pratiquement parlant, cela se traduit par l'impossibilit, pour certains clients bnficiant du partage de connexion Internet, d'accder certains sites Web ou certains gros fichiers d'une page (images par exemple). Pour pallier ce problme Linux propose une technique approximative, dont le but est de fixer une option des paquets TCP d'tablissement de connexion, afin de limiter la taille des paquets suivants de la connexion la taille maximum dtermine pour la route vers les ordinateurs cibles. Ainsi, les clients se limitent d'eux-mme, pourvu que la taille maximum des paquets de la route soit correctement dtermine, bien entendu. Il est recommand d'activer cette fonctionnalit, ce qui se fait l'aide de la commande suivante : # Restreint la taille des paquets des connexions TCP # lors de leur tablissement : iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS -o ppp0 \ --clamp-mss-to-pmtu
Cette rgle un peu complique permet de modifier le champ MSS ( Maximum Segment Size ) des paquets d'tablissement des connexions TCP (paquets disposant des flags TCP SYN ou RST) qui traversent la passerelle, et de forcer ce champ la valeur de la taille maximum des paquets sur le chemin ( Path Maximum Transmission Unit dans l'option --c1amp-mss-o-pmu). 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 redfinir systmatiquement. Cela peut tre ralis dans les scripts de dmarrage de votre systme. Vous pouvez galement utiliser les commandes iptables-save et iptables-restore pour sauvegarder toutes les chanes et leurs rgles dans un fichier et les restaurer au dmarrage. N'oubliez pas que votre passerelle doit dfinir une route par dfaut pour que tous les paquets qui ne sont pas destins au rseau local soient envoys par l'interface rseau connecte Internet. Cette route par dfaut est tablie automatiquement lorsque vous vous connectez Internet l'aide de PPP. Dans les autres cas, vous aurez la dfinir manuellement. 9.4.7. Configuration des clients La configuration des autres machines du rseau est trs simple. Vous devrez tout d'abord dfinir la machine possdant la connexion Internet comme passerelle par dfaut de tous vos postes clients. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 349
Cette opration peut se raliser de diffrentes manires selon le systme d'exploitation utilis par ces machines. Sous Linux, il suffit d'utiliser la commande suivante : route add default gw passerelle eth0
O passerelle est l'adresse de votre passerelle vers Internet sur le rseau local. Cette commande suppose que l'adaptateur rseau utilis est eth0 La deuxime tape est ensuite de donner accs aux postes clients au DNS de votre fournisseur d'accs. Cela permettra en effet d'utiliser 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 suffit d'ajouter les adresses IP des serveurs de noms de domaine de votre fournisseur d'accs dans le fichier de configuration /etc/resolv.conf. Si les clients ont des difficults accder certaines pages Web, c'est que le MTU ( Maximum Transmission Unit , taille maximum des paquets rseau) est trop lev. Ceci se corrige gnralement tel qu'on l'a indiqu dans la dfinition des rgles de la passerelle. Toutefois, si les ordinateurs qui bnficient du partage de connexion Internet continuent d'avoir des problmes, c'est que le MTU de la route permettant d'accder aux sites Web posant problme n'a pas pu tre dtermin correctement. Dans ce cas, il faut le trouver soi-mme, et le fixer dans la configuration rseau des clients. Pour cela, le plus simple est d'utiliser la commande ping avec son option -s sur les clients, avec plusieurs tailles de paquets possible. La taille maximum est de 1500 octets sur Ethernet. En gnral, une taille de 1400 octets convient : ping -s 1400 adresse
Une fois le MTU correctement dtermin, il suffit de fixer cette valeur lors de la configuration des interfaces rseau des clients :
ifconfig interface mtu taille
interface reprsente ici l'interface configurer, et taille la taille maximum trouve l'aide de ping. Note : La taille effective du MTU est en ralit la taille fournie la commande ping plus vingt-huit octets, car les paquets utiliss contiennent toujours l'en-tte ICMP en plus des donnes gnres par ping. 9.5. Configuration de la scurit du rseau La scurit d'un rseau n'est pas quelque chose prendre la lgre, surtout lorsqu'on commence transmettre des donnes personnelles sur le rseau. Internet n'est absolument pas sr, car nombre de personnes curieuses, peu discrtes ou franchement mal intentionnes ont un accs privilgi aux machines qui s'y trouvent. Il est donc essentiel de prendre les problmes scuritaires trs au srieux, d'autant plus que Linux est un systme disposant d'un grand nombre de fonctionnalits serveur. Bien qu'il soit impossible de raliser un systme sr 100%, la situation actuelle est franchement catastrophique et si cela continue comme cela, la seule chose de sre, c'est qu'on va aller droit dans le mur. Entre ne rien faire du tout et se fixer un niveau de scurit raisonnable permettant de limiter les dgts, il y a un grand pas. Cette section n'a donc pas pour but de vous transformer en expert en scurit (n'en tant pas un moi-mme, je serais bien incapable d'en crire une ayant cet objectif), mais de vous prsenter les principes de base et le minimum requis pour laisser les mauvaises surprises aux autres. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 350
L'un des principes de base de la scurit est de ne faire confiance personne. Ce n'est pas un comportement paranoaque, mais simplement du bon sens : la plupart des surprises dsagrables dans le monde environnant proviennent du mauvais jugement des personnes. De plus, mmes des personnes de bonne foi peuvent tre manipules par un tiers sans qu'elles s'en rendent compte. Partant de se constat, et quand bien mme on serait capable de garantir la fiabilit d'un systme 100%, il est ncessaire de limiter et de cloisonner les services fournis, et d'en restreindre l'accs aux personnes habilites. Cela est d'autant plus important que la plupart des dmons ont besoin d'avoir les privilges du compte root pour s'excuter. Cela peut tre dramatique si d'aventure une personne mal intentionne dcouvrait le moyen de les dtourner de leur fonction initiale et de leur faire accomplir des tches au nom de l'administrateur. Bien entendu, les dmons sont des programmes trs bien crits, qui vrifient gnralement toutes les requtes demandes par les clients avant de les satisfaire. Cependant, tout programme peut comporter des failles et laisser ainsi un accs indsir au sein du systme. Autant liminer directement le problme en ne lanant que les services rellement ncessaires sur votre machine. De plus, il va de soi que lorsqu'il y a un loup dans la bergerie, tout peut aller trs mal trs vite. La scurit doit donc tre mise en place en profondeur, c'est--dire que l'on ne doit pas ngliger la scurisation d'un rseau local sous prtexte qu'il est protg par des dispositifs en amont. En effet, ces dispositifs peuvent trs bien tre dfaillants, et dans ce cas, l'intrus se retrouve directement en terrain conquis. C'est pour cela qu'il faut prvoir plusieurs remparts pour se protger. En outre, rien n'est jamais fig dans le domaine de la scurit. De nouvelles attaques sont dveloppes rgulirement, et de nouvelles failles sont dcouvertes dans les logiciels quasiment quotidiennement. Il est donc ncessaire de raliser un tant soi peu de veille et de mettre jour les systmes rgulirement. Enfin, la scurit ne peut se concevoir que dans un contexte global, en prenant compte l'environnement dans lequel on se trouve. Il est tout fait inutile d'utiliser des systmes d'authentification par analyse de code gntique pour protger des documents ultra sensibles, si ces documents peuvent tre sortis simplement par les poubelles. En rsum, les principes fondamentaux de la scurit sont les suivants : il faut limiter le nombre des services lancs au strict minimum ; il faut en restreindre l'accs aux seules personnes autorises ; il faut tre proactif, se tenir au courant et mettre jour les logiciels ds l'apparition des correctifs de scurit ; il faut prvoir plusieurs systmes de scurit ; il faut prendre en compte les problmes de scurit de manire globale. De tous ces points, nous ne traiterons ici que ceux qui concernent un systme de particulier. La mise jour des logiciels et des antivirus reste bien entendu extrmement importante (surtout si des machines Windows sont places sur le rseau), mais n'appelle pas beaucoup de commentaires. La description de la ralisation d'un pare-feu a galement dj t faite dans la section prcdente. Nous ne prsenterons donc que la manire de limiter les services lancs et l'accs ces services. Cela n'est toutefois pas suffisant pour dormir tranquille car, et c'est sans doute l l'un des plus gros problmes, la plupart des protocoles rseau ne chiffrent pas leur donnes et laissent passer toutes les informations en clair sur le rseau, y compris les mots de passe ! Nous verrons donc galement les principales techniques de cryptographies existantes afin de rendre les communications plus sres. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 351
9.5.1. Limitation des services et des accs 9.5.1.1. Rduction du nombre des services Les services rseau d'un systme Linux sont nombreux, mais la plupart du temps inutiles pour l'emploi que l'on veut faire de son ordinateur. Par consquent, il vaut mieux tout simplement ne pas les proposer au monde extrieur, simplement en ne lanant pas les dmons correspondants. Pour cela, il suffit de commenter les lignes des services inutiles dans le fichier /etc/inetd.conf ou d'ajouter une ligne disable = true dans les fichiers de configuration des services inutiles du rpertoire /etc/xinetd.d/ si votre distribution utilise le super-dmon xinetd. Faire le mnage dans ces fichiers et dans les fichiers d'initialisation du rseau rduit donc de 90% les risques d'une intrusion dans votre systme. 9.5.1.2. Dfinition de rgles de contrle d'accs Restreindre le nombre de services accessibles n'est toutefois pas suffisant, il faut galement restreindre le nombre des personnes et des machines auxquels les services rseau restants sont proposs. Sur une machine de particulier, l'quation est souvent simple : personne ne doit pouvoir s'y connecter par le rseau, pour quelque service que ce soit ! Bien entendu, certains particuliers possdent un rseau priv et devront donc affiner cette rgle pour ne permettre les connexions que sur le rseau local. Il faut donc tre capable d'empcher les accs provenant de certaines machines, considres comme peu fiables. La rgle est encore une fois trs simple : doit tre considre comme dangereuse tout machine trangre au rseau local. La manire de procder dpend du super-dmon utilis. En effet, alors que xinetd permet de dfinir les adresses des machines autorises se connecter de manire prcise, inetd ne permet pas de le faire lui-mme et requiert l'aide d'un autre dmon, le dmon tcpd. 9.5.1.2.1. Restrictions d'accs avec tcpd Le principe de fonctionnement du dmon tcpd est le suivant : il s'intercale entre le super-dmon inetd et les dmons que celui-ci est suppos lancer lorsqu'un client le demande. Ainsi, il lui est possible d'effectuer des vrifications de scurit primaires, principalement bases sur les adresses IP des clients. Comme vous pouvez sans doute le constater dans le fichier /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 l'autorisation, ainsi que les paramtres communiquer ce dmon. L'accs quasiment tous les services est donc contrl par tcpd. tcpd utilise les deux fichiers de configuration /etc/hosts.allow et /etc/hosts.deny pour dterminer si une machine a le droit d'accder un service donn. Le premier de ces fichiers indique quelles sont les machines autorises utiliser certains services locaux. Le deuxime fichier 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 fichiers est identique. Il est constitu de lignes permettant de dfinir les rgles d'accs 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 d'adresses 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. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 352
Une rgle dfinie par une de ces lignes est utilise ds qu'une des machines indiques dans la liste des machines tente une connexion l'un des services de la liste des services. Si la rgle se trouve dans le fichier /etc/hosts.allow, la connexion est autorise et le service est lanc par tcpd. Si elle se trouve dans le fichier /etc/hosts.deny, la connexion est systmatiquement refuse. Si aucune rgle n'est 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 d'interdire la connexion toutes les machines d'un domaine en ne donnant que le nom de domaine (prcd d'un point). Enfin, 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 l'ensemble des dmons dans la liste des dmons. Par exemple, le fichier /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 n'est accepte, ce qui est un comportement sain. Les machines ayant le droit de se connecter doivent tre spcifies au cas par cas dans le fichier /etc/hosts.allow, comme dans l'exemple suivant : # Exemple de fichier /etc/hosts.allow : telnetd, ftpd : LOCAL Cela permet d'autoriser les connexions telnet et ftp pour toutes les machines du rseau local uniquement. Vous trouverez de plus amples renseignements sur le fonctionnement de tcpd dans la page de manuel hosts_access(5). Note : Comme vous pouvez le constater si vous comparez les lignes du fichier de configuration /etc/inetd.conf utilisant tcpd et celles qui ne l'utilisent pas, la liste des paramtres passs tcpd par inetd est diffrente de celle utilise pour les dmons lancs directement. En effet, elle ne comprend pas le nom de tcpd lui-mme, alors que pour les dmons, elle contient le nom du dmon en premier paramtre. Cette diffrence provient du fait que le premier argument pass en ligne de commande est le nom du programme lui-mme, sauf pour tcpd. En effet, tcpd suppose que ce paramtre contient le nom du dmon dont il contrle l'accs, 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 vrifie pour les adresses autres que les adresses des rseaux considrs comme srs (par exemple le rseau local), car le protocole IP n'inclut aucun mcanisme d'authentification. Par consquent, n'importe qui peut tenter de communiquer avec votre machine au nom d'une autre machine (technique nomme IP spoofing en anglais), qu'il aura au pralable mis hors d'tat de se manifester (par exemple par une attaque de type DoS, Denial of Service en anglais). tcpd tente par dfaut de contrler ce genre de pratique en vrifiant que le nom indiqu par la machine qui se connecte correspond bien l'adresse IP qu'elle utilise. Ainsi, pour passer cette protection, il faut d'abord infecter un DNS. Cependant, ce genre d'attaque (dite d'interposition) reste courant, surtout sur les rseaux dont les DNS sont insuffisamment protgs (une tude rcente a montr que c'tait le cas de trois DNS sur quatre en France). Par consquent, vous ne devez pas vous reposer uniquement sur tcpd et les techniques de pare-feu si vous devez crer un site rellement sr. En particulier, vous devriez vous intresser aux rseaux virtuels et au chiffrement des donnes, choses que l'on dcrira dans la Section DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 353
9.5.2.2. Le protocole Ipv6 intgrera des mcanismes d'authentification et sera donc nettement plus sr. Bien entendu, cela dpasse le cadre de ce document. Le dmon tcpd peut galement tre utilis avec le dmon xinetd. Toutefois, une telle utilisation est superflue, tant donn que xinetd permet de dfinir ses propres rgles de contrle d'accs. 9.5.1.2.2. Restrictions d'accs avec xinetd Le super-dmon xinetd intgre d'office un mcanisme de contrle d'accs similaire celui utilis par tcpd. Grce aux options on1y_from et no_access, il est possible de spcifier pour chaque service les machines qui sont autorises l'utiliser, ou inversement les machines qui doivent tre explicitement rejetes. Il faut toutefois prendre garde au fait que, comme pour tcpd, ne rien dire signifie accepter les connexions provenant de toutes les machines. La rgle d'or est donc, encore une fois, de tout interdire par dfaut et d'autoriser au compte-gouttes les accs aux services ouverts. Pour cela, il suffit d'ajouter la ligne suivante : only_from =
dans la section de dfinition des options par dfaut de xinetd. Avec cette ligne, contrairement ce qui se passe si rien n'est spcifi, les accs ne sont autoriss qu' partir d'aucune machine. Autrement dit, ils sont toujours interdits. Il faut ensuite redonner les droits sur les machines autorises service par service. Ainsi, les connexions par telnet peuvent tre autorises sur le rseau local (suppos sr) grce la ligne suivante : only_from += 192.168.0.0/24 127.0.0.1
dans la section dcrivant le service telnet de la configuration de xinetd. On prendra garde galement au fait que xinetd implmente quelques services internes permettant de l'administrer par le rseau. Il est vident que ces services doivent tre dsactivs. Ces services sont respectivement les services servers, sercices et xadmin. Leur dsactivation se fait classiquement en ajoutant la ligne suivante : disabled = servers services xadmin
dans la section defaults du fichier de configuration /etc/xinetd.conf. 9.5.1.3. Contrle des utilisateurs au niveau des services Certains services ne peuvent pas tre supprims compltement, tout simplement parce que l'on peut en avoir besoin. Dans ce cas, il faut au moins s'assurer que l'accs ces services n'est autoris que pour les utilisateurs qui en ont rellement besoin. La rgle est cette fois que l'utilisateur root ne doit pas avoir accs aux services rseau par une connexion non locale. En effet, un pirate attaque toujours par le rseau et, mme s'il arrive trouver le mot de passe d'un utilisateur normal, il lui restera encore pas mal de boulot pour trouver le mot de passe de l'utilisateur root (attention cependant, si vous tes dans cette situation, il vaut mieux ragir trs trs vite). Le service le plus sensible est bien entendu le service de login. Il est possible de fournir le service de login aux connexions extrieures, et il est vident que cela constitue dj un point d'entre pour qui peut trouver un mot de passe valide. Il est impratif ici d'interdire une telle connexion l'utilisateur root. Il reste toutefois concevable que cet utilisateur puisse se connecter sur la console locale (c'est-- DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 354
dire, avec votre clavier et votre cran...). Il est donc ncessaire de choisir les terminaux partir desquels l'utilisateur root pourra se connecter. Ces informations sont stockes dans le fichier de configuration /etc/securetty. Le format de ce fichier est trs simple, puisqu'il est constitu de la liste des terminaux partir desquels l'utilisateur root peut se connecter, raison d'un terminal par ligne. Un fichier de configuration /etc/securetty typique contient donc la liste des terminaux virtuels de la machine : # Exemple de fichier /etc/securetty tty1 tty2 tty3 tty4 tty5 tty6 Il est fortement dconseill de placer dans ce fichier les autres terminaux (en particulier, les terminaux srie ttyS0 et suivants). Un autre service sensible est le service de tlchargement de fichiers. Il est recommand d'interdire aux utilisateurs privilgis les transferts de fichiers par FTP. En effet, si une personne parvient accder au systme de fichiers, il peut supprimer tous les mcanismes de scurit. De la mme manire que l'on a interdit l'utilisateur root de se connecter sur les terminaux distants, il faut lui interdire (ainsi qu'aux autres comptes sensibles) les connexions par FTP. Cette opration peut tre ralise en ajoutant le nom de chaque utilisateur sensible dans le fichier de configuration /etc/ftpusers. Ce fichier a la mme structure que le fichier securetty, puisqu'il faut donner un nom d'utilisateur 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 fichier /etc/ftpusers fourni avec cette distribution est donc, en gnral, appropri. 9.5.2. Chiffrement des communications Les protocoles rseau de haut niveau ne garantissent en gnral pas la confidentialit des donnes qu'ils transmettent sur le rseau, ce qui signifie qu'elles peuvent tre lues par tout le monde. Ils nen garantissent pas non plus l'intgrit, chacun pouvant les modifier volont et fausser ainsi la communication. Ces dfauts sont incurables, car ils sont en ralit inhrents au protocole IP lui-mme. En effet, ce protocole a t conu initialement pour assurer l'acheminement des informations, et les protocoles de haut niveau bass sur lui se contentent gnralement de la garantie de livraison. Note : La confidentialit des donnes est le fait que seules les personnes autorises peuvent y accder. L'intgrit des donnes est le fait que les donnes n'ont pas t altres ou modifies de manire non autorise. Enfin, l'authenticit des donnes est le fait que les donnes sont certifies comme provenant bien de celui qui prtend en tre l'metteur. Gnralement, le moyen le plus sr pour garantir la confidentialit des donnes est de les chiffrer de telle sorte que seuls les destinataires autoriss puissent les dchiffrer et donc y accder. C'est pour cette raison que la cryptographie, ou science du chiffrement, est souvent utilise pour rsoudre les DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 355
problmes de scurit informatique. Mais la cryptographie fournit galement les techniques ncessaires pour assurer l'intgrit des donnes, gnralement en calculant une empreinte ou condens cryptographique des donnes. En effet, les algorithmes de calcul des empreintes sont conus pour fournir des rsultats trs diffrents mme si les donnes ne sont modifies que trs lgrement. Ainsi, si une personne mal intentionne modifie un tant soit peu les donnes, le recalcul de l'empreinte associe indiquera tout de suite la supercherie. Enfin, l'authenticit des donnes peut tre assure en faisant en sorte que leur metteur puisse prouver son identit. Cela se fait gnralement en exigeant qu'il puisse rpondre une question dont on sait que lui seul connat la rponse. Toute la difficult est alors de trouver un systme d'authentification o celui qui pose la question ne doit lui-mme pas en connatre la rponse (faute de quoi celui qui pose la question pourrait se faire passer pour celui qui doit rpondre !). Note : Il est vident que pour garantir la confidentialit et l'authenticit des donnes, il faut garantir l'authenticit des interlocuteurs. En effet, sans cela, une tierce personne pourrait s'intercaler entre deux interlocuteurs et faire croire chacun qu'il est l'autre. Mme dans un canal de communication chiffr, cette personne serait en mesure de dchiffrer les messages dans les deux sens, voire mme de les modifier et d'en recalculer les empreintes. Cette technique d'interposition s'appelle l'attaque du man in the middle ( l'homme du milieu en Franais) Il est donc ncessaire, du fait des faiblesses des protocoles rseau standards, de recourir des solutions cryptographiques pour fournir les services de confidentialit, d'authenticit et d'intgrit des donnes. Parmi ces solutions, les plus utilises sont sans doute le protocole SSH (abrviation de l'anglais Secure SHell ) et l'extension IPSec au protocole IP. Cette extension a initialement t dveloppe pour le successeur du protocole IP, savoir le protocole IPv6, mais a galement t adapte pour fonctionner avec l'implmentation actuelle d'IP. 9.5.2.1. Principes de base de cryptographie Tout d'abord, commenons par quelques dfinitions, beaucoup d'articles disponibles actuellement utilisant un vocabulaire imprcis. Le chiffrement (galement appel tord cryptage), est l'opration qui consiste transformer une information en clair en une information code afin d'viter qu'elle ne puisse tre utilise par une personne non autorise. Le dchiffrement est l'opration inverse du chiffrement, qui permet donc de retrouver l'information initiale partir de l'information code. Le dcryptage est l'opration qui consiste dchiffrer une information sans y tre autoris. La cryptographie est la science qui se charge d'tudier la manire de chiffrer les informations. La cryptoanalyse est l'tude des moyens de dcryptage. Cette science va de paire avec la cryptographie, puisqu'elle permet de dterminer la fiabilit des techniques mises en uvre pour le chiffrement. Enfin, un pirate (galement appel cracker ) est une personne dsirant s'introduire de manire illicite dans un systme, ou dsirant dtourner une application de son contexte d'utilisation normal. Il ne faut pas confondre les crackers avec les hackers, qui sont des personnes extrmement comptentes en informatique et qui ne font rien de mal (par exemple, les dveloppeurs du noyau Linux sont souvent des hackers). Il existe un grand nombre de techniques de cryptographie, qui sont plus ou moins efficaces. La premire technique, qui est aussi la plus simple et la moins sre, est celle qui consiste utiliser un algorithme de chiffrement rversible (ou une une paire d'algorithmes ayant un effet inverse l'un de l'autre) pour chiffrer une information. Dans ce cas, la scurit des donnes est assujettie au maintien au secret de l'algorithme utilis. Il est vident que ce type de technique n'est pas utilisable avec les logiciels dont les sources sont diffuses (comme Linux), puisque l'algorithme est alors connu de tout le monde. C'est galement la technique la moins sre, parce qu'il est en gnral trs facile de dterminer cet algorithme. Un exemple d'un tel algorithme est le codage classique qui consiste dcaler toutes les lettres de l'alphabet (A devient B, B devient C, etc.). DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 356
Une autre technique se base sur un algorithme connu de tout le monde, mais dont l'effet est paramtr par une clef tenue secrte. Le dchiffrement des informations ne peut se faire que si l'on connat cette clef. Les algorithmes de ce type sont souvent qualifis de symtriques , en raison du fait que la clef utilise pour le dchiffrement est la mme que celle utilise pour le chiffrement. Cette technique n'est satisfaisante que dans la mesure o les personnes qui communiquent peuvent s'changer cette clef de manire sre. La clef utilise ne devant tre connue que des personnes autorises participer la communication, cet change doit se faire soit de visu, soit dans un canal dj chiffr (mais dans ce cas, il faut changer la clef de dchiffrement du canal, et on se retrouve devant le problme de l'uf et de la poule), soit l'aide d'un protocole d'change de clef sr. Les algorithmes de ce type sont galement connus sous le nom d'algorithmes clef secrte en raison de cette particularit. Il existe un grand nombre d'algorithmes clef secrte, les plus connus tant DES, AES et IDEA. Figure 9-9. Algorithme de chiffrement symtrique
La technique la plus sre actuellement, et aussi la plus ruse, est d'utiliser un algorithme de chiffrement asymtrique. la diffrence des algorithmes symtriques, les algorithmes asymtriques utilisent deux clefs diffrentes et duales pour le chiffrement et le dchiffrement. Ces algorithmes se basent sur des fonctions mathmatiques dont la fonction inverse est extrmement difficile dterminer sans une information galement difficile calculer. Cette information fait office de clef permettant de retrouver l'information en clair. Toute la ruse ici est que la clef servant au dchiffrement peut ne plus tre change du tout, ce qui supprime la ncessit de raliser un change de clefs gnralement risqu. En fait, seule la clef de chiffrement doit (et peut sans crainte) tre publie. C'est en raison de cette proprit que les algorithmes asymtriques sont galement appels algorithmes clef publique. Le principe des algorithmes asymtriques est le suivant. Une clef publique, utilise pour chiffrer les informations, est fournie tout le monde, et seul celui qui dispose de la clef prive associe cette clef publique peut dchiffrer le texte. Toute personne qui dsire communiquer avec le propritaire de la clef publique utilise celle-ci pour chiffrer les informations qu'il doit lui transfrer. Ainsi, du fait que seul le destinataire dispose de la clef de dchiffrement (sa clef prive), il est le seul pouvoir rcuprer ces informations. Il est donc possible d'changer des informations de manire sre avec tous les intervenants en utilisant simplement leurs clefs publiques respectives. Aucun change d'information sensible n'est effectu en clair. Les algorithmes clef publique les plus connus sont RSA et DSA. Figure 9-10. Algorithmes de chiffrement asymtriques DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 357
La gestion des clefs des algorithmes clef publique est techniquement laborieuse, de mme que les calculs mis en uvre par les algorithmes utiliss. Il est donc courant d'amorcer une communication avec un algorithme clef publique, comme RSA par exemple, puis de l'utiliser pour changer une clef secrte permettant de poursuivre la communication avec un algorithme symtrique. Il existe galement des algorithmes spcialiss dans les changes de clefs dans un canal non sr, comme par exemple l'algorithme Diffie Hellman. Enfin, il existe des algorithmes de chiffrement sens unique qui ne permettent pas de retrouver l'information initiale, mais qui sont utiliss pour calculer une empreinte des informations transfrer. Cela permet d'identifier l'information de manire unique. Ces algorithmes sont donc souvent utiliss pour garantir l'intgrit des donnes diffuses dans un environnement peu sr. Pour cela, celui qui ralise la diffusion chiffre un condens des informations diffuses avec sa clef prive. Tout le monde peut donc dchiffrer ce condens avec la clef publique de cette personne, et vrifier que le message qu'ils reoivent a bien la mme empreinte. Chacun a donc la certitude que le message provient bien de son auteur, car toute modification du message changerait son empreinte d'une part, et il est impossible de chiffrer cette nouvelle empreinte sans connatre la clef prive de l'expditeur. Les algorithmes de calcul d'empreinte les plus connus sont MD5 et SHA. Note : Notez que les algorithmes de chiffrement clef publique ncessitent toujours que l'on soit sr que l'on utilise la bonne clef publique pour s'adresser une personne. Or, rien ne nous garantit que la clef publique d'une personne diffuse sur le rseau provienne bien de cette personne ! Il est donc toujours ncessaire d'changer les clefs publiques de main main, avec vrification de l'identit de la personne avec qui l'change se fait. Il est galement possible de recourir une tierce personne digne de confiance et dont on connat dj la clef publique pour garantir que la clef que l'on reoit est bien celle de la personne qui prtend en tre le propritaire. On peut ainsi construire ce qu'on appelle un rseau de confiance , dans lequel chacun sait que quelqu'un en qui il a confiance, directement ou indirectement, a authentifi ses interlocuteurs. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 358
Bien entendu, tout cela est contraignant. Mais, contrairement aux algorithmes de chiffrement clef secrte, il n'est pas grave de perdre les clefs changes avec les algorithmes asymtriques, puique ces clefs sont destines tre publiques... 9.5.2.2. Utilisation de SSH SSH est en ralit un protocole de communication rseau chiffr coupl d'une suite d'outils permettant de l'utiliser. SSH a t initialement dvelopp par une socit commerciale, qui diffusait les outils en Open Source et gratuitement pour les particuliers. Ces outils n'taient toutefois absolument pas libres. Une implmentation libre a donc t dveloppe pour le systme FreeBSD, puis porte pour les autres systmes d'exploitation, dont Linux. Cette implmentation est celle qui est utilise par la plupart des distributions actuellement, il s'agit de OpenSSH . Nous ne dcrirons ici que l'utilisation d'OpenSSH. Pour garantir la confidentialit des donnes, SSH utilise des techniques de cryptographie avances. Ces techniques permettent de s'assurer que personne ne peut lire les informations qui circulent sur le rseau d'une part, et de garantir l'authentification des machines auxquelles on se connecte d'autre part. De plus, SSH permet de rediriger les protocoles rseau non chiffrs dans son propre canal de communication, et rsout donc la plupart des problmes de scurit. SSH a donc pour but premier de remplacer les applications non sres permettant de se connecter distance sur une machine ou d'y excuter des commandes. Les applications ainsi rendues obsoltes sont, entre autres, telnet, rlogin et rsh. Enfin, SSH est galement utilisable pour chiffrer automatiquement les connexions X11, ce qui permet d'utiliser l'environnement graphique X Window distance en toute scurit. Note : Officiellement, il est interdit d'utiliser en France des techniques de chiffrement aussi pousses que celles mises en uvre par SSH, sauf demander une drogation. Il y a de fortes pressions pour permettre la lgalisation de ces techniques, mais elles n'ont pas encore abouti. Plus prcisment, le gouvernement a pris position pour une libralisation de l'usage de la cryptographie, mais la loi n'a pas encore t vote. Les sinistres vnements du 11 novembre 2001 risquent fort de retarder encore, si ce n'est de compromettre, cette libralisation. En effet, l'argument principal des opposants cette lgalisation est qu'elle permettrait aux truands de chiffrer leurs communications. L'argument est bien entendu fallacieux : comme s'ils attendaient d'en avoir le droit pour le faire... En fait, il existe une implmentation gratuite (mais non libre) de SSH qui a t dclare et qui peut donc tre utilise en France. Il s'agit de la version de Bernard Perrot, nomme SSF , que l'on pourra trouver l'adresse http://perso.univ-rennes1.fr/bernard.perrot/SSF/index.html. Si vous dsirez absolument tre sans reproche vis vis de la loi actuellement en vigueur en France, vous devriez remplacer la version d'OpenSSH fournie avec votre distribution (dont l'usage est donc illgal) par SSF. Sachez cependant que SSF restreint la taille des clefs de sessions 128 bits seulement d'une part (condition sine qua non pour qu'on puisse l'utiliser), qu'il n'est pas utilisable commercialement, et qu'il est susceptible de ne pas tre jour en ce qui concerne les correctifs de bogues et les failles de scurit que l'on a pu trouver rcemment dans SSH ou OpenSSH. La scurit apporte par SSF est donc trs relative, mais c'est mieux que rien du tout. Il existe deux versions du protocole rseau SSH, qui ont tous deux t adopts en tant que standards. La premire version souffrait d'un trou de scurit majeur, qui depuis a largement pu tre utilis. Il ne faut donc surtout pas utiliser cette version et se rabattre systmatiquement sur le protocole SSHv2. Ce protocole permet de garantir l'authentification des machines et des utilisateurs et est nettement plus fiable. Aucune attaque n'a permis de le casser ce jour, sachez toutefois qu'il existe encore des points douteux dans ce protocole qui permettraient, en thorie, de parvenir s'immiscer dans une communication ou d'en dcrypter une partie. Sachez galement que les diffrentes implmentations de SSH, aussi bien libres que commerciales, sont soumises au mme rgime que les autres programmes : elles peuvent avoir des bogues et des DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 359
trous de scurit qu'un attaquant peut utiliser. De nombreuses attaques ont t dcouvertes ces derniers temps, aussi est-il recommand de s'assurer que l'on dispose de la dernire version d'OpenSSH. La dernire version stable est la 3.7.1p1 (les versions antrieures doivent tre vites tout prix). Cela dit, mener une attaque contre SSH relve le niveau de difficult nettement au dessus de ce qui est ncessaire pour pntrer un systme qui ne l'utilise pas. 9.5.2.2.1. Principes de base de l'authentification SSH La grande difficult dans les mcanismes d'authentification est d'tre capable de prouver son identit sans fournir suffisamment d'information pour que quelqu'un d'autre puisse se faire passer pour soi par la suite. La technique du mot de passe utilise par les systmes Unix est absolument insuffisante pour des communications rseau, car elle requiert justement de fournir ce mot de passe. Mme si les mots de passe ne sont pas stocks en clair sur la machine (ce qui est la moindre des choses), il est possible de se faire passer pour une tierce personne. En effet, les mcanismes d'authentification comparent souvent une empreinte du mot de passe avec l'empreinte stocke dans les fichiers de dfinition des mots de passe, mais rien n'empche un intrus de capter cette empreinte et de l'utiliser directement pour s'authentifier si l'on utilise la mme technique en rseau. Il n'a mme pas besoin de connatre le mot de passe en clair (cette technique est connue sous le nom d'attaque par rejeu , car l'attaquant se contente dans ce cas de rejouer la squence d'authentification). Une solution contre le rejeu est de demander la personne que l'on cherche authentifier de chiffrer un message alatoire avec son mot de passe ou son empreinte, et de vrifier que le rsultat qu'il renvoie est bien celui attendu, en chiffrant le mme message de son ct. Cette technique est toutefois toujours vulnrable l'attaque de l'homme du milieu, et elle souffre de l'norme dfaut que l'on doit stocker l'empreinte de son mot de passe sur tous les ordinateurs auxquels on dsire se connecter. Cela multiplie d'autant les points de faiblesse : si un pirate s'introduit sur une seule machine, il obtient toutes les empreintes des mots de passe et peut donc se faire passer pour tout le monde ! SSH ne transmet donc ni les mots de passe, ni leurs condenss, en clair sur le rseau. Il tablit d'abord un canal de communication chiffr l'aide d'un des algorithmes d'change de clef (la technique utilise dpend de la version utilise du protocole SSH). Une fois le canal chiffr tabli, la machine serveur est authentifie l'aide de sa clef publique. Pour que cela fonctionne, il faut bien entendu que la clef publique de la machine serveur soit connue du client et ait t authentifie comme tant bien celle de ce serveur. Inversement, le client peut tre authentifi par le serveur. SSH fournit plusieurs possibilits pour cela, les deux plus courantes tant l'authentification par mot de passe et l'authentification par un algorithme clef publique. L'authentification par mot de passe est strictement la mme que celle utilise pour le login Unix classique, la diffrence prs que les informations du mot de passe sont transmises dans le canal chiffr, vers un serveur authentifi. La scurit de ce mot de passe est donc garantie, et l'attaque de l'homme du milieu de fonctionne plus. Ce type d'authentification permet donc d'utiliser SSH exactement comme les commandes classiques rsh ou telnet. L'utilisation de SSH est donc compltement transparente pour les utilisateurs. Cela dit, il est possible de faciliter encore plus l'authentification des clients tout en augmentant le niveau de scurit, en utilisant galement l'authentification par clef publique pour les utilisateurs. Dans ce mode d'authentification, chaque utilisateur dispose galement d'un couple de clefs prive et publique. Les clefs publiques de ces utilisateurs sont diffuses dans les comptes des utilisateurs au niveau du serveur. Ainsi, il n'est plus ncessaire de fournir un mot de passe, car le serveur peut authentifier l'utilisateur du seul fait qu'il est le seul connatre sa clef prive. La connexion est donc automatique (une fois le serveur correctement configur, bien entendu) et aucun change d'information sensible comme le mot de passe n'est ralis (mme si le fait que cet change tait ralis dans un canal chiffr par SSH tait dj une bonne garantie). DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 360
Les clefs prives et publiques sont bien entendu stockes sur disque, dans les fichiers de configuration des serveurs et des clients. Il va de soi que si les clefs publiques peuvent tre lues, il est impratif que les clefs prives ne soient lisibles que par leurs propritaires. Les droits d'accs sur les fichiers de configuration doivent donc tre fixs de manire correcte pour garantir la scurit du systme. En fait, le point faible du mcanisme d'authentification des clients est toujours au niveau des utilisateurs, qui peuvent perdre leur clef prive ou la communiquer d'autres sans mme savoir qu'ils font une erreur fondamentale (de la mme manire qu'ils peuvent choisir un mot de passe trop facile trouver ou simplement le communiquer une tierce personne). C'est pour cela qu'il est possible de chiffrer les clefs prives avec un algorithme de chiffrement symtrique. L'utilisateur doit, dans ce cas, fournir une phrase clef chaque fois qu'il dsire raliser une connexion SSH. 9.5.2.2.2. Compilation et installation d'OpentSSH Comme nous l'avons dit plus haut, il est recommand d'utiliser la dernire version d'OpenSSH, savoir la version 3.7.1.p1. Il est probable que votre distribution fournisse une mise jour sur son site, et il est recommand d'utiliser ces mises jours. Si, toutefois, vous dsirez effectuer l'installation partir des fichiers sources, vous pourrez procder comme suit. Il vous faudra rcuprer l'archive des fichiers sources en premier lieu sur le site OpenSSH. Pour Linux, il faut prendre l'archive 3.7.1p1, le 'p' signifiant ici qu'il s'agit d'un portage des sources pour Linux. Une fois cela fait, vous pourrez excuter la commande suivante dans le rpertoire des sources : ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-tcp-wrappers --with-pam
Cette commande permet de configurer OpenSSH pour qu'il remplace la version existante dans votre systme. Elle indique galement que le support du dmon tcpd doit tre activ, ainsi que celui des modules d'authentification PAM (options --wih-cp-wrapppers et --wih-pam ). Bien entendu, si votre distribution n'utilise pas ces fonctionnalits, vous devez supprimer ces options. La compilation et l'installation en soi ne posent pas de problme particulier. Pour les raliser, il vous suffira d'excuter les deux commandes suivantes : make make install
Vous constaterez que le programme d'installation gnre automatiquement des fichiers de clefs publiques et prives pour votre machine. Nous verrons dans les sections suivantes comment ces clefs peuvent tre utilises. Note : Vous devrez crer un compte utilisateur sshd non privilgi avant d'installer SSH. Ce compte est en effet utilis par le dmon sshd pour raliser les communications rseau une fois la phase d'authentification ralise. Cela permet de garantir que, mme en cas d'exploitation d'une ventuelle faille de scurit du dmon sshd, l'accs la machine sera extrmement limit. 9.5.2.2.3. Configuration d'OpenSSH ct serveur OpenSSH utilise un dmon nomm sshd pour prendre en charge les requtes de connexion de la part des clients. Ce dmon est l'coute des demandes de connexion et effectue les oprations d'authentification du serveur auprs des clients. Il vrifie galement les droits du client avant de le laisser utiliser la connexion chiffre. Le dmon sshd utilise un fichier de configuration gnral /etc/sshd_config et plusieurs fichiers contenant les clefs publiques et prives de la machine pour les diffrents protocoles cryptographiques DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 361
utiliss par les clients. Les protocoles disponibles sont le protocole RSA pour la version 1 du protocole SSH, et les protocoles RSA et DSA pour la version 2. Comme il existe deux fichiers pour les clefs du serveur (un premier fichier lisible par tous les utilisateurs, pour la clef publique, et un fichier lisible uniquement par l'utilisateur root, pour la clef prive), il peut exister au total six fichiers de clefs. Ces fichiers sont nomms respectivement /etc/ssh_host_key et /etc/ssh_host_key.pub pour les clefs prives et publiques du protocole de version 1, et /etc/ssh_host_rsa_key, /etc/ssh_host_rsa_key.pub, /etc/ssh_host_dsa_key et /etc/ssh_host_dsa_key.pub respectivement pour les algorithmes RSA et DSA du protocole SSH de version 2. Normalement, les fichiers de clefs du serveur ont t crs automatiquement lors de l'installation de SSH. Cependant, si vous installez SSH partir d'une archive de distribution, ils peuvent ne pas tre prsents, et vous devrez gnrer ces clefs vous-mme. Pour cela, il faut utiliser la commande ssh- keygen, dont la syntaxe est la suivante : ssh-keygen [-t type]
o type est le type de clef gnrer pour le protocole de version 2. Les types disponibles sont rsa et dsa. Pour le protocole de version 1, il ne faut pas utiliser l'option -, les clefs gnres tant forcment des clefs RSA. Lorsque l'on invoque la commande ssh-keygen, celui-ci demande le chemin du fichier dans lequel la clef prive doit tre crite. Le fichier contenant la clef publique aura le mme nom, mais portera l'extension .pub. Vous devez donc saisir le chemin du fichier correspondant au type de clef gnr. ssh-keygen demande ensuite le mot de passe utiliser pour le chiffrement de la clef prive. Dans le cas d'un serveur, il ne faut pas utiliser de mot de passe, car dans ce cas le dmon sshd ne pourrait pas accder la clef prive de la machine. Il faut donc, dans ce cas, valider simplement sans rien taper. Une fois les fichiers de clefs du serveur gnrs, vous pouvez vous intresser au fichier de configuration sshd_config. Ce fichier de configuration contient un certain nombre d'options qui indiquent les paramtres que le dmon doit utiliser. Vous trouverez ci-dessous un exemple de fichier de configuration : # Paramtres de connexion : Port 22 ListenAddress 0.0.0.0 KeepAlive yes
# Protocoles utilisables : Protocol 2
# Chemin sur les fichiers de clefs : HostKey /etc/ssh_host_rsa_key HostKey /etc/ssh_host_dsa_key
# Paramtres des messages de traces : SyslogFacility AUTH LogLevel INFO
# On dfinit les modes d'authentification utilisables :
# Authentification par clef publique : RSAAuthentication no PubkeyAuthentication yes
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 362
IgnoreRhosts yes RhostsRSAAuthentication no HostbasedAuthentication no
# Authentification par mot de passe : PasswordAuthentication no PermitEmptyPasswords no
# Options gnrales :
# L'utilisateur root ne doit pouvoir se loguer qu'en local : PermitRootLogin no
# Utilise le compte non privilgi sshd # pour les communications rseau : UsePrivilegeSeparation yes
# On n'autorise la connexion que pour les utilisateurs dont # les fichiers de configuration sont correctement protgs : StrictModes yes
# Encapsulation automatique du protocole X : X11Forwarding yes X11DisplayOffset 10
# Affichage des informations habituelles au login : PrintMotd no PrintLastLog yes Comme vous pouvez le constater, un grand nombre d'options sont disponibles. Les options Ror et LisenAddress permettent de dfinir l'adresse IP sur laquelle le dmon sshd se mettra en attente de demandes de connexion, ainsi que le port TCP utilis pour cela. L'adresse 0.0.0.0 signifie ici qu'il doit se mettre en attente sur toutes les adresses de la machine. L'option KeepA1ive permet de demander au dmon de vrifier rgulirement que la liaison est toujours valide, afin de fermer les connexions automatiquement en cas d'arrt du client. L'option Rrooco1 permet de spcifier les versions utilisables du protocole SSH. La version 1 tant obsolte, on spcifiera systmatiquement la valeur 2 ici. L'option HosKey permet, comme son nom l'indique, de donner les noms des fichiers contenant les clefs pour les diffrents protocoles d'authentification. Les options Sys1ogEaci1iy et LogLeve1 permettent d'indiquer le type et le niveau des messages de traces gnrs par le dmon sshd dans le fichier de traces du systme. Viennent ensuite les options spcifiques aux diffrents modes d'authentification. Les options RSAAuthentication et PubkeyAuthentication permettent d'activer et de dsactiver l'authentification par clef publique des clients, respectivement pour les protocoles SSH de version 1 et 2. Les options IgnoreRhoss, RhossRSAAuhenicaion et HosbasedAuhenicaion permettent de contrler un protocole d'authentification bas sur l'identit des machines. Ce type d'authentification n'a pas t prsent car il est extrmement peu sr, et il faut imprativement dsactiver ces fonctionnalits. Enfin, les options RasswordAuhenicaion et RermiEmpyRasswords permettent d'activer ou de dsactiver l'authentification par mot de passe. Vous tes libre d'utiliser ou non ces fonctionnalits. Le fichier de configuration peut galement contenir des options complmentaires. Les plus importantes pour la scurit sont sans doute RermiRooLogin et SricModes, qui permettent d'interdire la connexion par le rseau l'utilisateur root d'une part, et d'interdire la connexion aux DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 363
utilisateurs qui n'ont pas bien fix les droits d'accs sur leurs fichiers de configuration personnels dans leur compte local (il est donc impossible de garantir que ces fichiers n'ont pas t trafiqus par d'autres utilisateurs pour accder leur compte). L'option UseRrivi1egeSeparaion permet de demander au dmon sshd de n'effectuer les communications rseau que dans le compte spcial sshd, compte auquel on n'affectera que le minimum de droits. Cette technique permet de protger le systme contre l'exploitation d'une ventuelle faille de scurit dans le dmon sshd. L'option X11Eorwarding permet d'activer l'encapsulation automatique du protocole X et peut tre relativement pratique. Le numro de display auquel les utilisateurs devront connecter leurs applications sera alors dcal du nombre indiqu par l'option X11isp1ayOffse. Cette option est utile pour viter les conflits avec les serveurs X locaux. Vous trouverez de plus amples informations sur le protocole X11 et l'environnement graphique dans le Chapitre 10. Enfin, les options RrinMod et RrinLasLog permettent de spcifier les informations affiches par le dmon sshd lorsque la connexion des clients est accepte. Il existe bien d'autres options, vous pourrez obtenir de plus amples renseignements dans la page de manuel du dmon sshd. 9.5.2.2.4. Utilisation d'OpenSSH ct client Les clients peuvent se connecter un serveur SSH l'aide de la commande ssh. Cette commande s'utilise exactement de la mme manire que les commandes rsh ou rlogin. La syntaxe de la commande ssh est la suivante : ssh [-l nom] machine [commande]
ou :
ssh nom@machine [commande]
o nom est ici le nom d'utilisateur utiliser pour la connexion, et machine la machine distante. Si aucun nom d'utilisateur n'est spcifi, le nom de l'utilisateur sur la machine local est pris par dfaut. Il est possible d'excuter une commande sur la machine distante en la spcifiant aprs le nom de la machine. Si aucune commande n'est spcifie, un shell interactif est lanc. Selon le mode d'authentification du client choisi par le serveur, il peut tre ncessaire ou non de dfinir des clefs pour le client. Tout comme pour les clefs publiques et prives d'un serveur, la gnration de ces clefs se fait l'aide de la commande ssh-keygen. Cependant, contrairement ce qui se passait pour le serveur, les chemins par dfaut proposs pour stocker les clefs sont ici corrects, et il est vivement recommand de saisir un mot de passe pour chiffrer la clef prive. Les fichiers de clefs gnrs par ssh-keygen sont les fichiers identity et identity.pub pour le protocole d'authentification RSA de la version 1 du protocole SSH, et les fichiers id_rsa, id_rsa.pub, id_dsa et id_dsa.pub respectivement pour les protocoles RSA et DSA de la version 2 du protocole SSH. Tous ces fichiers sont stocks dans le rpertoire .ssh/ du rpertoire personnel de l'utilisateur qui les gnre. Il va de soi que les fichiers des clefs prives ne doivent pas tre lisibles pour les autres utilisateurs, et que les fichiers des clefs publiques ne doivent pas pouvoir tre crits si l'on veut viter qu'un usurpateur prenne notre place sur notre propre machine. Afin de bnficier de l'authentification des serveurs auxquels on se connecte, il faut placer les clefs publiqes de ces derniers dans le fichier .ssh/known_hosts. Si, lors d'une connexion un serveur, la clef publique de celui-ci n'est pas connue, ssh vous le signalera. Il indiquera un message d'erreur indiquant que le serveur auquel on se connecte n'est pas forcment celui qu'il prtend tre, et affiche un condens de sa clef publique. Vous devrez vous assurer que ce condens est bien celui de la clef publique du serveur auquel vous vous connectez, et ce par un moyen sr (dplacement physique et connection en local par exemple). Si vous acceptez cette clef, ssh la placera pour vous dans votre fichier known_hosts, ce qui vous permettra de vous connecter par la suite en toute quitude. Attention, le DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 364
fichier known_hosts ne doit pas tre accessible en criture aux autres utilisateurs, car dans ce cas un pirate pourrait capter toutes vos communications ! Si le mode d'authentification utilis est le mot de passe, ssh vous demandera de saisir le mot de passe du compte distant. Dans ce cas, ssh se comporte exactement comme rsh, ceci prs que votre mot de passe ne circulera pas en clair sur le rseau (quel progrs !). Si, en revanche, le mode d'authentification utilis est une authentification par clef publique, alors vous devrez avoir dfini vos clefs prives et publiques. Pour que le dmon sshd de la machine distante accepte la connexion, vous devrez placer vos clefs publiques dans le fichier authorized_keys du rpertoire ./ssh/ du rpertoire du compte distant. Cela permettra au dmon sshd de s'assurer que c'est bien vous qui vous connectez. Attention, le fichier authorized_keys ne doit pas tre accessible en criture, faute de quoi un autre utilisateur de la machine distante pourrait se connecter en votre nom. Il est galement impratif de raliser l'criture soi-mme dans ce fichier par un moyen sr (dplacement physique). En aucun cas la communication de votre clef publique l'administrateur distant ne pourra tre considre comme un moyen sr pour crire cette clef : en effet, un pirate pourrait tout aussi bien lui demander d'crire sa propre clef dans votre fichier ! Vous constaterez qu'un certain nombre de prcautions doivent tre prises pour les manipulations de clefs. Comme il l'a dj t indiqu plus haut, le point faible est bel et bien l'authentification des clients. Cela concerne en premier lieu le client bien entendu, dont le compte peut tre pirat, mais c'est aussi un trou de scurit norme pour le serveur, car une fois le loup dans la bergerie, il peut faire beaucoup de dgts et chercher accrotre ses droits (jusqu' devenir root) par d'autres techniques. 9.5.2.2.5. Cration d'un tunnel SSH L'un des principaux avantages de SSH est qu'il est possible de l'utiliser pour encapsuler n'importe quel protocole rseau TCP dans le canal de communication d'une connexion scurise. Un tel canal est communment appel un tunnel , en raison du fait qu'il est utilis par les informations sensibles pour traverser un rseau non sr. Grce aux tunnels SSH, il est possible d'utiliser tous les protocoles classiques sans avoir s'inquiter de la confidentialit des informations transmises. SSH permet mme de raliser cette opration automatiquement pour le protocole X du systme de fentrage X Window, ce qui est trs commode si l'on dsire afficher localement les fentres graphiques des programmes lancs sur le serveur. Encapsuler le protocole X dans SSH est donc extrmement ais. En effet, il suffit simplement de donner la valeur yes l'option X11Eorwarding dans le fichier de configuration du serveur /etc/sshd_config et dans le fichier de configuration des clients (les valeurs par dfaut pour tous les utilisateurs peuvent tre dfinies dans le fichier de configuration /etc/ssh_config et tre redfinies par chaque utilisateur dans le fichier config de leur rpertoire .ssh/). Si ces options sont actives, SSH se charge de fixer la variable d'environnement ISRLAY de la machine distante un serveur X virtuel de cette machine. Les programmes X se connectent alors ce serveur, et celui-ci effectue automatiquement le transfert des communications vers le serveur X du client. Il ne faut donc pas, quand on utilise SSH, modifier manuellement la variable d'environnement ISRLAY. Vous trouverez plus d'information sur X Window dans le Chapitre 10. Pour les autres protocoles, les oprations ne sont pas ralises automatiquement par SSH. Il faut donc tablir un rseau priv virtuel manuellement. Le principe est le suivant : les programmes clients sont paramtrs pour se connecter sur un port local diffrent de celui utilis habituellement pour leur protocole. Ainsi, ils ne s'adressent pas directement au serveur distant, mais plutt un proxy local tabli par SSH pour l'occasion. Ce proxy tablit un canal de communication chiffr avec le dmon sshd de la machine distante. Toutes les informations du protocole encapsul passent alors par le canal chiffr, et le dmon sshd de la machine distante retransmet ces informations au service distant auquel le client devait se connecter. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 365
Tout ce mcanisme ne fonctionne que parce qu'il est possible de rediriger les clients sur un port rserv par SSH sur leur machine locale. Cette redirection peut tre initie aussi bien du ct serveur que du ct client, lors de la connexion. Du ct du client, la redirection de port peut tre ralise avec la commande suivante : ssh -Llocal:serveur:port machine [commande]
o local est le port de la machine locale auquel il faudra se connecter pour accder au service distant, fonctionnant sur le port port de la machine serveur. Cette commande ouvre une session SSH sur la machine machine (qui, normalement, est la mme que serveur), et ralise la redirection du flux destin au port local dans le canal de cette session. Il faut bien comprendre que cette redirection se fait en plus de la connexion SSH, et que la syntaxe donne ci-dessus ouvre une connexion sur la machine distante (ou excute la commande spcifie en paramtre, s'il en est spcifie une). Si l'on dsire simplement tablir un tunnel, on peut refermer la session juste aprs avoir lanc le programme qui doit utiliser ce tunnel. En effet, SSH maintient le tunnel ouvert tant qu'un programme dtient une connexion sur le port redirig. On peut aussi excuter une commande sleep sur un dlai arbitraire, qui permettra de se connecter sur le port redirig et qui se terminera automatiquement. Du ct serveur, la syntaxe est similaire. Cette fois, la commande permet d'indiquer le port que le client devra utiliser pour accder un service non scuris du serveur. La syntaxe utiliser est la suivante : ssh -Rport:client:local machine [commande]
o port est le port que le client devra utiliser, client est la machine cliente, et local est le port local utilis par le service que l'on veut exposer de manire scurise au client. Encore une fois, cette commande ouvre une connexion SSH, il faut donc spcifier la machine laquelle on se connecte (en l'occurrence, le client). Une commande peut tre spcifie de manire optionnelle, s'il n'y en a pas, un shell sera lanc sur la machine distante. Note : Prenez bien conscience que SSH ne s'assure du chiffrement que des donnes transmises sur le rseau. Si la machine cliente ou la machine serveur ne sont pas correctement configures, un pirate peut espionner les communications rseau internes cette machine. Pour viter ce type de risque, il faut utiliser des protocoles rseau eux-mmes chiffrs. Autrement dit, une fois sorti du tunnel SSH, vous vous exposez nouveau aux risques d'intrusion. Il existe d'autres mthodes de tunneling sous Linux, qui sont sans aucun doute plus ergonomiques que SSH. En effet, non seulement les tunnels SSH ne peuvent pas tre crs automatiquement (ils ncessitent une connexion), mais en plus les connexions SSH se terminent ds que le dernier client disparat. En fait, les fonctionnalits de SSH sont un plus, mais elles ne sont pas destines remplacer des solutions plus adaptes pour raliser des tunnels. Vous trouverez plus d'informations sur les rseaux privs virtuels ci-dessous. 9.5.2.3. Utilisation d'IPSec Le protocole IPSec est une extension du protocole IP qui permet de rpondre aux besoins d'authentification et de confidentialit, grce aux techniques de cryptographie. Les principes utiliss sont les mmes que pour SSH, mais ils sont mis en pratique au plus bas niveau, ce qui fait que tous les protocoles de haut niveau en bnficient automatiquement. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 366
9.5.2.3.1. Fonctionnement d'IPSec IPSec dfinit des protocoles complmentaires permettant d'encapsuler les donnes transfres dans les paquets IP et assurant les services d'authentification et de confidentialit. Le protocole AH (abrviation de l'anglais Authentication Header ) permet, comme son nom l'indique, d'assurer que les machines sont bien celles qu'elles prtendent tre. Cela permet de supprimer tous les risques d'attaque de l'homme du milieu. Le protocole AH permet galement d'assurer l'intgrit des donnes. En revanche, il n'en assure pas la confidentialit. Le protocole ESP (abrviation de l'anglais Encapsulating Security Payload ) permet d'assurer cette confidentialit. En revanche, contrairement ce que de nombreuses documentations affirment, il ne permet pas d'assurer l'authenticit des interlocuteurs, ce qui fait que la confidentialit peut tre brise par une attaque de l'homme du milieu. Il est donc ncessaire d'utiliser les deux protocoles si les interlocuteurs ne sont pas authentifis de manire physique. Ces deux protocoles permettent galement de prvenir les attaques par rejeu au niveau protocolaire, car ils utilisent un numro de squence dont la prdtermination est trs difficile pour chaque paquet chang. Note : En ralit, le protocole ESP peut galement assurer l'authenticit des donnes, mme s'il ne permet pas d'assurer l'authenticit des interlocuteurs. Cette fonctionnalit peut tre utile si l'authenticit des machines est assure par un autre mcanisme. Toutefois, cette condition n'est gnralement pas vrifie et il faut utiliser le protocole AH pour authentifier les machines. De ce fait, le mcanisme d'authentification d'ESP est rarement utilis. AH et ESP peuvent tre utilises dans deux modes diffrents : le mode transport et le mode tunnel. Le mode transport est le mode de communication natif, dans lequel les en-ttes des protocoles AH et ESP sont insrs entre l'en-tte IP et ses donnes. De ce fait, les protocoles de haut niveau sont simplement encapsuls dans les protocoles AH et ESP. Le mode tunnel, quant lui, permet de crer un rseau virtuel complet, en encapsulant la communication entre les interlocuteurs dans un canal chiffr. Ce sont donc les paquets IP de la communication qui sont eux-mmes encapsuls dans les protocoles AH et ESP. IPSec utilise les algorithmes de cryptographie symtriques pour assurer ces fonctionnalits. Par exemple, l'authenticit des machines et l'intgrit des donnes sont garanties par le protocole AH grce la gnration de condenss cryptographiques paramtrs par une clef prive. Seule les machines partageant cette clef peuvent donc communiquer avec ce protocole, et toute modification des donnes serait dtecte lors de la vrification de la signature. De mme, ESP assure la confidentialit des donnes en les chiffrant avec un algorithme de chiffrement clef prive. Chaque canal de communication IPSec peut utiliser ses propres paramtres. Bien entendu, il est hors de question de transfrer ces paramtres (et encore moins les clefs prives utilises !) dans chaque paquet IP ! IPSec identifie donc ces paramtres par un numro d'identification (appel Security Parameter Index , SPI en abrg), grce auquel chaque interlocuteur peut retrouver les paramtres de la connexion chiffre. L'association entre le SPI et ces paramtres est appele une SA (abrviation de l'anglais Security Association ). Les associations de scurit sont stockes sur chaque machine dans une base de donnes que l'on appelle la SAD (de l'anglais SA Database ). Les associations de scurit ne permettent que de dfinir la manire dont les communications doivent tre protges. Cela dit, une machine n'est pas oblige de chiffrer toutes ses connexions, et l'on peut parfaitement vouloir ne chiffrer les communications qu'entre deux machines, ou que pour certains protocoles. Il est donc galement ncessaire de dfinir quelles communications doivent tre chiffres. Cela se fait grce une politique de scurit ( Security Policy en anglais, SP en abrg). Les politiques de scurit sont galement stockes dans une base de donnes sur chaque machine, base de donnes que l'on appelle la SPD (abrviation de SP Database ). DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 367
Bien entendu, la dfinition des clefs secrtes, des associations et des politiques de scurit peut devenir une opration trs lourde sur de grands rseaux. En effet, il est ncessaire de dfinir des clefs prives pour chaque couple de machines. Par consquent, un protocole de gestion des clefs et des associations de scurit a t dfini pour automatiser l'tablissement des connexions. Ce protocole est le protocole ISAKMP (abrviation de l'anglais Internet Security Association and Key Management Protocol ). Comme SSH, ce protocole s'appuie sur les algorithmes de cryptographie asymtriques pour changer les clefs prives et dfinir les associations de scurit de manire sre avec des machines authentifies. Ainsi, grce ce protocole, seules les politiques de scurit et les couples de clefs publiques / prives des machines doivent tre dfinis. Les associations de scurit et les clefs prives n'ont plus tre manipules. 9.5.2.3.2. Configuration manuelle d'IPSec en mode transport La configuration manuelle d'IPSec reste intressante, car elle permet de bien saisir la manire dont les oprations se droulent. Elle se fait simplement en dfinissant les SAs et les SPs sur chaque machine, l'aide de l'outil setkey. Cet outil peut tre retrouv sur le site Web consacr IPSec. Les associations et les politiques de scurit peuvent tre spcifies directement en ligne de commande si l'on lance setkey avec l'option -c. Toutefois, la manire la plus simple de charger les associations et les politiques dans les bases de donnes du systme est de les dfinir dans un fichier de configuration et de demander setkey de le lire en lui fournissant le chemin sur ce fichier l'aide de l'option -f. En gnral, ce fichier de configuration est plac dans le rpertoire /etc/ et se nomme ipsec.conf. Les commandes acceptes par setkey sont nombreuses. Le fichier de configuration d'exemple suivant vous en donnera un apperu : #!/usr/sbin/setkey -f
# Vide la base de donnes des SAs : flush;
# Vide la base de donnes des SPs : spdflush;
# Dfinit les SAs pour le protocole AH : # add source dest protocole SPI algo clef add 170.20.57.31 170.20.58.40 ah 0x200 \ -A hmac-md5 0x848255320c7fd11b6082f9628f078af7; add 170.20.58.40 170.20.57.31 ah 0x201 \ -A hmac-md5 0xcd23ef4b73ea54b626d16092293a298a;
# Dfinit les SAs pour le protocole ESP : # add source dest protocole SPI algo clef add 170.20.57.31 170.20.58.40 esp 0x300 \ -E 3des-cbc 0xe6933d365096e13be514ea1d881d87371100b15119e2ffb9; add 170.20.58.40 170.20.57.31 esp 0x301 \ -E 3des-cbc 0xb2b630c9e9692c36d248b7206bda17c47f772f96290ac05f;
# Dfinit les politiques : # spadd source dest protocole -P politique # politique = direction action regles # regle = ipsecp/mode/options/niveau # options = rgles de dfinition des tunnels # niveau = use ou require DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 368
spdadd 170.20.57.31 170.20.58.40 any -P out ipsec esp/transport//require ah/transport//require;
spdadd 170.20.58.40 170.20.57.31 any -P in ipsec esp/transport//require ah/transport//require; Ce fichier permet de dcrire les associations de scurit utilises pour communiquer entre deux machines d'adresses 170.20.57.31 et 170.20.58.40, ainsi que la politique de scurit de la machine 170.20.57.31. Bien que largement comment, ce fichier requiert quelques explications complmentaires. Tout d'abord, la premire ligne permet de considrer ce fichier comme un fichier excutable, dont l'interprteur est la commande setkey elle-mme. Les deux lignes suivantes permettent de vider les bases de donnes contenant les associations et les politiques de scurit. Attention, cela a pour consquence de dsactiver compltement IPSec, les services rseaux qui doivent tre protgs ne doivent donc pas tre lancs lorsque ce fichier est interprt. Viennent ensuite les dfinitions des associations de scurit utilises par les protocoles AH et ESP. Ces associations doivent tre dfinies strictement de la mme manire sur les deux machines pour lesquelles la liaison est scurise. Elles sont simplement ajoutes la base de donnes des associations l'aide de la commande add de setkey. Cette commande prend en paramtre les adresses IP source et destination des machines intervenant dans la communication scurise, suivies du nom du protocole pour lequel l'association est dfinie ( savoir, ah ou esp), suivi de l'identifiant de l'association (le SPI ), et pour finir des options relatives au protocole. Les options des protocoles dpendent videmment de ceux-ci. Le protocole AH n'accepte que l'option -A, qui permet de spcifier l'algorithme d'authentification utiliser (ici, l'algorithme MD5). ESP quant lui peut galement accepter l'option -E, qui permet de spcifier un algorithme de chiffrement des donnes. Il est inutile de spcifier un algorithme d'authentification pour ESP si l'on utilise galement le protocole AH, comme c'est le cas ici. Il est galement possible de n'utiliser que le protocole ESP et de lui demander de raliser la fois l'authentification et le chiffrement des communications. Toutefois, comme on l'a dit plus haut, cela ncessite d'avoir dj une authentification des machines (ce qui n'est pas assur en gnral, une adresse IP pouvant tre vampirise par un pirate). Les algorithmes utilisables sont varis et dpendent des options que vous avez spcifis dans la configuration du noyau. Ceux utiliss ici sont relativement frquents, savoir MD5 pour l'authentification et le triple DES pour le chiffrement. Vous remarquerez que ces algorithmes ont besoin d'une clef secrte pour fonctionner. Dans le fichier d'exemple prcdent, cette clef est spcifie en hexadcimal (c'est--dire en base 16). La taille des clefs dpend de l'algorithme utilis. Pour MD5, il vous faudra utiliser une clef de 16 octets, et pour le triple DES, une clef de 24 octets. Les clefs de cet exemple ont t gnres par lecture du fichier spcial de priphrique /dev/random, dont le but est de fournir des donnes alatoires, avec la commande suivante : dd if=/dev/random count=n bs=1 | xxd ps
o n est le nombre d'octets crer. Bien entendu, ces clefs devant rester secrtes, le fichier de configuration ipsec.conf ne doit pas tre accessible en lecture aux autres utilisateurs que l'administrateur. Note : Vous remarquerez que les associations de scurit utilisent deux clefs prives distinctes pour les deux directions du flux de donnes entre les machines qui communiquent par IPSec. Cela n'est pas une obligation, on peut trs bien utiliser la mme clef pour les deux directions. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 369
Comme il l'a dj t indiqu, dfinir les associations de scurit ne suffit pas pour scuriser les communications. En effet, il est galement ncessaire de dfinir la politique de scurit. Cela est ralis l'aide de la commande spdadd. Cette commande prend en paramtre l'adresse source et l'adresse destination, le protocole ou le port qui doit tre scuris (any signifiant que toutes les communications doivent tre scurises), et la politique de scurit elle-mme. Cette politique permet d'indiquer la direction du trafic rseau (in signifiant le trafic entrant et out signifiant le trafic sortant), et ce que l'on doit faire des donnes. L'option ipsec indique qu'elles doivent tre scurises par IPSec. L'option discard permet d'interdire le trafic entre les machines, et l'option none permet d'autoriser ce trafic et de laisser les communications se faire classiquement. Si l'on indique qu'IPSec doit tre utilis, il faut indiquer, respectivement pour AH et ESP, le mode de fonctionnement (ici, transport) et le niveau de scurit exig. La valeur utilise est gnralement require, ce qui permet de n'accepter les communications que si elles se font par IPSec. Vous trouverez le dtail des autres options dans la page de manuel de setkey Ainsi, la premire ligne spdadd du fichier donn en exemple ci-dessus indique que tout le trafic sortant de 170.20.57.31 et allant vers 170.20.58.40 doit tre encapsul en mode transport dans les protocoles AH et ESP, en utilisant les associations de scurit dfinies prcdemment. De mme, la deuxime ligne spdadd indique que tout le trafic entrant dans 170.20.57.31 et en provenance de 170.20.58.40 doit tre scuris par IPSec. Vous constaterez que les adresses IP sources et destination sont inverses dans les deux commandes, parce que la direction indique est inverse et que l'on ne peut pas dfinir, sur la machine 170.20.57.31, les rgles appliquer sur la machine 170.20.58.40. Bien entendu, sur la machine 170.20.58.40, ces directions devront tre changes. Ainsi, pour reprendre l'exemple, les lignes permettant de dfinir la politique de scurit sur cette machine doivent tre les suivantes : # Dfinit la politique de scurit sur 170.20.58.40 : spdadd 170.20.57.31 170.20.58.40 any -P in ipsec esp/transport//require ah/transport//require;
spdadd 170.20.58.40 170.20.57.31 any -P out ipsec esp/transport//require ah/transport//require; Note : Pour que les communications se fassent par IPSec, il est ncessaire que vous laissiez passer le trafic AH ou ESP au travers de votre pare-feu. Le protocole AH utilise le numro de protocole 51 et le protocole ESP le numro 50. 9.5.2.3.3. Configuration manuelle d'IPSec en mode tunnel La configuration d'IPSec en mode tunnel est similaire celle utilise pour le mode transport. Elle est toutefois lgrement plus complique, puisqu'il est ncessaire de spcifier les adresses des passerelles entre lesquelles le tunnel sera tabli. Le fichier de configuration suivant donne un exemple de dfinition de tunnel IPSec utilisant les adresses 192.168.20.1 et 192.168.20.2, entre deux machines d'adresses 170.20.57.31 et 170.20.58.40 : #!/usr/sbin/setkey -f
# Vide la base de donnes des SAs : flush;
# Vide la base de donnes des SPs : DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 370
spdflush;
# Dfinit les SAs pour les en-ttes : # add source dest protocole SPI algo clef add 170.20.57.31 170.20.58.40 ah 0x200 -m tunnel -A hmac-md5 0x848255320c7fd11b6 082f9628f078af7; add 170.20.58.40 170.20.57.31 ah 0x201 -m tunnel -A hmac-md5 0xcd23ef4b73ea54b62 6d16092293a298a;
# Dfinit les SAs pour les paquets : # add source dest protocole SPU algo clef add 170.20.57.31 170.20.58.40 esp 0x300 -m tunnel -E 3des-cbc 0xe6933d365096e13b e514ea1d881d87371100b15119e2ffb9; add 170.20.58.40 170.20.57.31 esp 0x301 -m tunnel -E 3des-cbc 0xb2b630c9e9692c36 d248b7206bda17c47f772f96290ac05f;
# Dfinit les politiques : # spadd source dest protocoles politique # politique = direction action regles # regle = ipsecp/mode/options/niveau # options = rgles de dfinition des tunnels # niveau = use ou require spdadd 192.168.20.2 192.168.20.1 any -P in ipsec esp/tunnel/170.20.58.40-170.20.57.31/require ah/tunnel/170.20.58.40-170.20.57.31/require;
spdadd 192.168.20.1 192.168.20.2 any -P out ipsec esp/tunnel/170.20.57.31-170.20.58.40/require ah/tunnel/170.20.57.31-170.20.58.40/require; Ce fichier commence par dfinir les associations de scurit dcrivant comment le trafic rseau doit se faire entre les machines 170.20.57.31 et 170.20.58.40. La premire diffrence avec le mode transport est l'utilisation de l'option -m, qui prend en paramtre le mode de communication. Ici, il est demand que tout le trafic IP, et non pas les communications elles-mmes, soit encapsul dans les protocoles AH et ESP. Cela a effectivement pour effet de faire un tunnel IP over IPSec . La deuxime diffrence provient ensuite de la dfinition des politiques de scurit. prsent, ces politiques ne portent plus sur les vritables adresses rseau des machines ( savoir 170.20.57.31 et 170.20.58.40), mais sur les adresses des interfaces rseau permettant d'accder au tunnel (respectivement 192.168.20.1 et 192.168.20.2). De plus, les informations de routage pour le trafic dans le tunnel sont spcifies dans les rgles de la politique : il doit passer dans le tunnel IPSec tablit entre 170.20.57.31 et 170.20.58.40. Note : Du fait que les communications doivent tre transfres via le tunnel IPSec, il est ncessaire d'autoriser le routage sur les deux machines du tunnel. Cela se fait en autorisant le routage au niveau du pare-feu et en excutant la commande suivante : echo 1 > /proc/sys/net/ipv4/ip_forward Les directions indiques dans les politiques correspondent la machine 170.20.57.31. Bien entendu, ces directions devront tre inverses sur la machine 170.20.58.40 pour rendre la communication symtrique. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 371
9.5.2.3.4. Autoconfiguration avec ISAKMP La configuration manuelle d'IPSec est ralisable pour l'tablissement d'un tunnel ou pour le chiffrement des connexions entre deux ou trois machines, mais au del de ce nombre, elle devient trs vite lourde et contraignante. En effet, il est ncessaire de dfinir une clef prive de communication pour chaque couple de machine, ce qui peut faire un grand nombre de clefs. Par exemple, pour un rseau de trois machines, pas moins de six clefs AH et ESP sont ncessaires (douze si ces clefs ne sont pas utilises pour les deux sens du trafic) ! C'est pour cette raison que le protocole d'change de clef ISAKMP a t dvelopp. Ce protocole utilise le port 500 du protocole UDP pour dfinir les associations de scurit "utiliser pour les connexions IPSec, et de les renouveler rgulirement afin d'accrotre la scurit des communications. En effet, utiliser toujours la mme clef dans une association de scurit peut permettre un attaquant de la calculer en observant certains paquets rseau dont il peut deviner une partie du contenu, comme par exemple les paquets de demande de connexion TCP. Pour l'tablissement des associations de scurit, le protocole ISAKMP utilise plusieurs phases. La premire phase permet d'tablir une association de scurit de contrle entre les deux machines, par l'intermdiaire de laquelle les autres associations de scurit seront tablies. La deuxime phase est l'tablissement des associations de scurit utilises pour les communications. La premire phase peut tre ralise selon plusieurs modes d'authentification. Le mode principal est le mode le plus sr. Le mode agressif est plus conome en terme de trafic rseau, mais il n'est pas utilisable de manire fiable en pratique. Dans chacun de ces modes, plusieurs techniques d'authentification sont utilisables mais, en raison d'erreurs de conception du protocole ISAKMP, seul l'authentification base sur les mcanismes de clefs publiques est fiable. De ce fait, le protocole ISAKMP fonctionne de manire tout fait similaire OpenSSH, puisqu'il commence par tablir une association de scurit prive partir des clefs publiques et prives, puis il utilise ce canal chiffr pour effectuer les changes des associations de scurit IPSec des communications. Dans ce type de configuration, il n'est plus ncessaire de dfinir qu'un couple de clefs prive et publique par machine. Note : Pour ceux qui sont intresss par les problmes de scurit, les autres mcanismes d'authentification proposs par le protocole ISAKMP sont : l'authentification par signature, qui est sujette l'attaque de l'homme du milieu ; et l'authentification par secret partag. Ce dernier type d'authentification est trs problmatique, car il ne rsout pas le problme de la gestion des clefs d'une part, et il requiert de connatre l'identit des machines qui se connectent d'autre part. Cela implique que les adresses IP des machines qui se connectent soient fixes dans le mode principal, et que les informations d'identit soient transfres sur le rseau pour viter d'avoir connatre ces adresses IP dans le mode agressif. Cela n'est pas le plus grave, le mode agressif transfrant galement des donnes chiffres dont on connat le contenu sur le rseau, permettant ainsi un attaquant de faire une attaque par dictionnaire et de trouver le secret partag. Sous Linux, le protocole ISAKMP est implment par le dmon racoon. racoon utilise des certificats x509 pour authentifier les machines, aussi vous faudra-t-il en gnrer pour chacune de vos machines. Les certificats x509 sont des fichiers contenant l'identit d'une personne ainsi que sa clef publique, ce qui permet donc de l'authentifier de manire fiable condition que l'on soit sr quen le certificat provient bien d'elle. Pour s'assurer de cela, il est courant de faire signer le certificat par une autorit de certification en laquelle on a confiance et dont le rle est de bien s'assurer que la personne qui demande la signature de son certificat est bien celle qu'elle prtend tre (moyennant finances bien entendu). Il est possible de signer soi-mme ses propres certificats, ce qui ne rsout bien sr pas le DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 372
problme de l'authenticit du certificat, mais permet au moins de s'assurer qu'il n'a pas t modifi par une tierce personne. Cela suppose bien entendu que le problme du transfert de l'empreinte du certificat vers le destinataire est rsolu. Les certificats peuvent tre crs et manipuls l'aide de l'outil OpenSSL, dont la ligne de commande est malheureusement relativement complexe. La cration d'un nouveau certificat se fait typiquement avec la commande suivante : openssl req -new -nodes -newkey rsa:1024 -sha1 \ -keyform PEM -keyout machine1.private -outform PEM -out requete.pem
Cette commande permet de crer une requte de certification d'une clef publique RSA de 1024 bits avec l'algorithme de gnration de condens SHA1, et de stocker la clef prive correspondante dans le fichier machine1.private. La requte elle-mme est stocke dans le fichier requete.pem. Des informations permettant de vous identifier vous seront demandes, et seront incluses dans la requte de certification. La cration du certificat se fait ensuite simplement, en signant la requte de certification. Nous pouvons le faire nous-mme, en signant la requte avec la clef prive que l'on vient de crer. Pour cela, il faut utiliser la commande suivante : openssl x509 -req -in requete.pem \ -signkey machine1.private -out machine1.public
Une fois cette opration effectue, vous pouvez vous dbarrasser du fichier de requte de certification (c'est--dire du fichier requete.pem). Vous disposerez alors d'un couple de clef prive/publique dans les fichiers machine1.private et machine1.public. Une fois que vous aurez cr vos clefs pour toutes vos machines, vous pourrez les distribuer sur vos diffrentes machines. Chaque machine doit bien entendu disposer de sa clef prive, ainsi que de l'ensemble des clefs publiques des autres machines. L'change des clefs publiques est l'opration sensible, puisqu'il s'agit de s'assurer que les clefs reues sont bien celles que l'on a mises. Pour cela, on pourra utiliser un condens de la clef et s'assurer que ce condens est bien le mme aprs change. Attention toutefois, il faut tre certain que le condens soit chang de manire sre. OpenSSL vous permet d'obtenir un condens de vos clefs publiques avec la commande suivante : openssl dgst clef.public
o clef.public est la clef dont on dsire obtenir le condens. Le dmon racoon utilise le fichier de configuration /etc/racoon.conf pour dcrire la manire dont les diffrentes phases de la ngociation des associations de scurit doivent tre faites. Il est possible de dfinir des options diffrentes pour diffrents clients, identifis par leurs adresses IP. Toutefois, en raison de l'utilisation courante des adresses IP dynamiques, une configuration implicite doit souvent tre donne. Vous trouverez ci-dessous un exemple de fichier de configuration racoon.conf : path certificate "/etc/ssl/certs"; remote anonymous { exchange_mode main; certificate_type x509 "neptune.public" "neptune.private"; verify_cert off; my_identifier asn1dn; peers_identifier asn1dn; DOCUMENT SUR LINUX
sainfo anonymous { pfs_group modp1024; encryption_algorithm 3des; authentication_algorithm hmac_md5; compression_algorithm deflate; } La premire ligne indique le chemin du rpertoire dans lequel les fichiers de clefs publiques des clients se trouveront, ainsi que les fichiers de clefs publique et prive de la machine locale. La section remote permet de dfinir les options d'authentification d'un client pendant la premire phase du protocole ISAKMP. Le mot-cl anonymous indique ici que tous les clients pour lesquels une section remote plus spcifique n'est pas disponible devront utiliser cette section. C'est donc la section utiliser pour tous les clients disposant d'une adresse IP dynamique. La dfinition de la premire phase du protocole contient les directives suivantes : la directive exchange_mode, qui indique le mode de fonctionnement utiliser pendant cette phase (le mode principal est choisi ici, parce que c'est le seul qui soit rellement sr) ; la directive certificate_type, qui permet d'indiquer que le mcanisme d'authentification utilise des certificats X509 (grce l'option x509) ; la directive verify_cert, qui permet d'indiquer si les certificats manipuls doivent tre vrifis auprs d'une autorit de certification ou non (la configuration prsente ici ne le permet pas, car nous avons sign nous-mme nos certificats) ; les directives my_identifier et peers_identifier, qui indiquent la manire dont les machines sont identifies (leur option asn1dn indique que les informations qui ont t demandes lors de la cration des certificats des machines sont utilises pour retrouver leurs certificats) ; et enfin, la directive proposal, qui permet de fournir les paramtres cryptographiques utiliss pour l'association de scurit de contrle ngocie pendant la premire phase du protocole ISAKMP. Les paramtres de l'association de scurit de contrle permettent de spcifier l'algorithme de chiffrement et l'algorithme de gnration des signatures (directives encryption_algorithm et hash_algorithme respectivement), ainsi que la mthode d'authentification des machines (utilisation du protocole RSA, directive authentication_method). La directive dh-group permet de fournir un paramtre l'algorithme d'change de clefs Diffie Hellman, utilis lors de l'change des clefs prives. La section sainfo permet de dfinir les paramtres des associations de scurit ngocies pendant la deuxime phase du protocole ISAKMP. Son format est semblable la section de dfinition de l'association de scurit de contrle vue prcdemment. Toutefois, une diffrence importante est que la mthode d'authentification est prsent base sur un secret partag et non plus sur le mcanisme des clefs publiques et prives des machines. De ce fait, l'algorithme de gnration de signatures utilis par le protocole AH ncessite une clef secrte change pendant la premire phase. Ce n'est donc plus un simple algorithme de gnration d'empreintes. La directive hmac_md5 permet d'utiliser un algorithme MD5 modifi pour tre paramtr par la clef secrte. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 374
Vous noterez que toutes ces informations permettent de dfinir la manire dont les associations de scurit doivent tre gnres. Cependant, ces associations de scurit ne sont pas forcment utilises : il faut pour cela dfinir la politique de scurit. Cette opration peut bien entendu se faire avec setkey. Le fichier de configuration ipsec.conf d'un serveur ressemble alors celui-ci : spdadd 0.0.0.0/0 serveur any -P in ipsec esp/transport//require ah/transport//require;
spdadd serveur 0.0.0.0/0 any -P out ipsec esp/transport//require ah/transport//require;
Les fichiers de configuration ipsec.conf des clients devront avoir des directions de trafic inverses. Vous noterez que les adresses spcifies pour les clients utilisent des plages d'adresses dans les commandes d'ajout de rgles de politique de scurit. En effet, on ne sait a priori pas quelles sont les adresses de ces clients, car ils auront gnralement une adresse IP alloue dynamiquement. La seule adresse connue est en gnral celle du serveur, rfrence ici par le nom de machine serveur. Si l'adresse du serveur est elle-aussi dynamique, la configuration est plus contraignante, car il faut que toutes les communications se fassent par IPSec (et les clients ne peuvent plus se connecter qu'aux serveurs qu'ils connaissent). Il est galement possible de demander racoon de dfinir lui-mme la politique de scurit, lorsque des tentatives de connexion on lieu. Cela peut tre ralis l'aide de la directive generate_policy de la section remote. Une fois le fichier de configuration racoon.conf dfini, il ne reste plus qu' lancer racoon. Ceci peut se faire avec la commande suivante : racoon -f /etc/racoon.conf
L'option -f permet de lui indiquer le fichier de configuration qu'il doit utiliser. Si vous dsirez lancer racoon en avant-plan pour pouvoir dboguer votre configuration, vous pouvez utiliser -E, et augmenter le niveau de traces avec l'option -d. 9.6. Configuration des fonctions serveur En gnral, les gens ne voient Internet que du point de vue client en terme d'architecture client / serveur. Cela signifie qu'ils se contentent de se connecter Internet, et n'utilisent que des logiciels clients qui communiquent avec des serveurs situs sur Internet. Ce mode d'utilisation est de loin le plus courant et celui qui convient la majorit des gens, qui n'ont en gnral mme pas conscience de l'existence du monde des serveurs. Cependant, il est parfois ncessaire de mettre en place des petits serveurs, sans forcment tre un fournisseur d'accs 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 l'on doit laisser allum pour une raison ou une autre, afin de raliser une opration de maintenance. Il est galement possible de faire une liaison PPP entre deux ordinateurs par un cble srie pour changer des donnes, ou pour relier par l'intermdiaire du rseau tlphonique deux rseaux spars physiquement. Cette section prsente donc les techniques de base permettant de paramtrer Linux pour accepter les communications entrantes, tant pour satisfaire aux demandes de connexion distantes que pour tablir une liaison PPP. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 375
9.6.1. Paramtrage des connexions extrieures Nous avons vu dans la Section 6.8 que le programme en charge de demander l'identification des utilisateurs sur les terminaux de login tait le programme getty. Ce programme ne permet aux utilisateurs que de s'identifier. Lorsque quelqu'un saisit son nom, getty se contente de lancer le processus login pour que celui-ci ralise l'authentification de l'utilisateur en lui demandant son mot de passe. En fait, getty peut trs bien lancer un autre programme que login si l'identification n'est pas ncessaire sur le terminal qu'il gre, mais, en gnral, il faut identifier les utilisateurs. Le programme getty est donc le point d'entre 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 (c'est d'ailleurs ce pour quoi il a t conu l'origine). En particulier, il est possible de lancer un processus getty sur une ligne srie, afin de permettre l'utilisation de terminaux rels connects sur le port srie correspondant. La ligne srie sur laquelle le processus getty fonctionne n'est 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 l'aide d'un logiciel d'mulation de terminal. Il existe plusieurs logiciels permettant d'appeler un ordinateur distant et d'muler 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 c'est un logiciel libre. En fait, il existe plusieurs variantes de getty, spcialises pour des usages spcifiques, et permettant de faciliter le paramtrage du fichier de configuration /etc/inittab, dans lequel sont dfinis les terminaux disponibles. Les distributions de Linux sont souvent fournies avec les versions suivantes : mingetty, qui est un getty simplifi, couramment utilis pour les terminaux virtuels ; mgetty, qui est une version spcialement conue pour tre utilise sur les lignes srie connectes un modem. mgetty est en particulier capable d'initialiser les modems, de dcrocher automatiquement la ligne lorsqu'il y a un appel, et de grer les principales commandes des modems compatibles Hayes ; agetty, qui est une version complte de getty, utilisable aussi bien sur les lignes srie (avec ou sans modem) que pour les terminaux virtuels. On utilisera de prfrence cette version si l'on dsire proposer une connexion par l'intermdiaire d'un cble null-modem. Note : Les cbles null-modem sont des cbles srie symtriques, qui permettent de relier deux ordinateurs par l'intermdiaire de leurs ports srie. Ces cbles peuvent tre trouvs chez la plupart des revendeurs de matriel informatique (vous pouvez galement en fabriquer un vous-mme si vous avez du temps perdre). Connaissant les diverses possibilits de ces programmes, proposer un service de connexion extrieur est relativement simple. Il suffit en effet de rajouter dans le fichier de configuration /etc/inittab les lignes permettant de lancer les programmes getty sur les bonnes lignes. Par exemple, pour offrir une connexion modem sur le deuxime port srie (couramment appel COM2), on ajoutera la ligne suivante : S1:23:respawn:/usr/sbin/mgetty -n 3 -s 38400 ttyS1 Cette commande indique init que mgetty doit tre relanc chaque fois qu'il se termine dans les niveaux d'excution 2 et 3. Il doit prendre le contrle de la ligne srie utilise par le fichier spcial de priphrique /dev/ttyS1, utiliser la vitesse de communication de 38400 bauds sur cette ligne (option - s) et ne dcrocher qu'au bout de la troisime sonnerie (option -n). Vous pouvez bien entendu ajuster ces options en fonction de vos besoins. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 376
En revanche, si l'on dsire offrir une possibilit de connexion sur un port srie par l'intermdiaire d'un cble null-modem, on utilisera plutt le programme agetty. La ligne ajouter dans le fichier /etc/inittab sera alors : S1:123:respawn:/sbin/agetty -L 38400 ttyS1
Notez que les options sont quelque peu diffrentes. La vitesse de la ligne est donne directement, et l'option -L indique que la ligne srie utilise est locale et ne gre pas le signal de porteuse CD (abrviation de l'anglais Carrier Detect ) habituellement utilise pour dtecter les coupures tlphoniques. Encore une fois, vous pouvez adapter ces commandes selon vos besoins. N'hsitez pas consulter les pages de manuel des programmes mgetty et agetty pour obtenir plus de renseignements. Note : Vous pouvez tester vos connexions srie l'aide de l'mulateur de terminal minicom. S'il est install sur votre distribution, vous pourrez le lancer simplement en tapant la commande minicom. Si vous l'utilisez sur une connexion directe (c'est--dire par un cble null-modem), vous devrez utiliser l'option -o, afin d'viter que minicom n'envoie les codes d'initialisation 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 l'aide 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 modifier la vitesse d'un port srie l'aide de la commande stty. Par exemple, pour configurer le port srie COM2 la vitesse de 115200 bauds, vous devez taper la commande suivante : stty -F /dev/ttyS1 ispeed 115200 9.6.2. Configuration des liaisons PPP Le protocole PPP utilis par les fournisseurs d'accs Internet est, comme son nom l'indique ( 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 d'un serveur PPP n'est pas plus complique que celle d'un client. Les liaisons PPP sont donc couramment utilises pour relier deux rseaux distants par l'intermdiaire des lignes tlphoniques. Lorsque nous avons prsent la configuration des accs Internet, nous avons utilis des options spcifiques ce cas de figure afin de grer le fait que les paramtres rseau sont imposs par le fournisseur d'accs. Dans le cas d'un serveur, ces paramtres ne sont pas ncessaires, puisque nous sommes cette fois la place du fournisseur d'accs. En revanche, certains paramtres supplmentaires devront tre spcifis, notamment pour configurer le modem afin d'accepter 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 qu'une seule connexion la fois. Cette technique peut paratre lourde, mais en fait elle est relativement pratique, car elle permet de spcifier des options spcifiques chaque ligne srie. Comme d'habitude, ces options peuvent tre spcifies sur la ligne de commande de pppd, mais elle peuvent galement tre enregistres dans un fichier de configuration. Le fichier de configuration global /etc/ppp/options est gnralement utilis pour stocker les options communes toutes les lignes srie. Les options spcifiques chaque ligne sont enregistres quant elles dans les fichiers options.ttySx, o ttySx est le nom du fichier spcial de priphrique utilis pour accder cette ligne. L'usage de ces fichiers de configuration permettent de simplifier notablement les lignes de commandes utilises pour lancer pppd. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 377
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 spcifier l'adresse IP qu'il utilisera pour l'interface PPP et l'adresse IP qu'il donnera au client lors de l'tablissement de la liaison ; le script chat utilis ne doit pas composer un numro, mais initialiser le modem pour qu'il rponde aux appels entrants. Les adresses IP sont spcifies en ligne de commande l'aide de la syntaxe suivante : locale:distante
o locale est l'adresse IP de l'interface PPP du serveur, et distante est l'adresse IP que le client recevra lorsqu'il se connectera. Ces deux adresses peuvent appartenir au mme rseau (auquel cas le lien PPP constitue un rseau en soi) ou non (le lien PPP constitue alors pas un pont entre deux rseaux distincts). Ainsi, l'option suivante :
192.168.30.1:192.168.31.1
indiquera pppd que l'adresse IP de l'interface PPP locale sera 192.168.30.1, et que les clients qui se connecteront sur la ligne correspondante devront recevoir l'adresse 192.168.31.1. Notez que les adresses utilises ici font partie des adresses IP rserves pour les rseaux locaux. Ce n'est pas ce que font les fournisseurs d'accs Internet en gnral, car ils disposent d'un ensemble d'adresses IP relles redistribuables, mais les adresses rserves sont parfaitement utilisables. Le seul cas o cela pourrait tre gnant serait si l'on voulait faire passer les adresses des deux passerelles de la liaison PPP sur Internet, mais les paquets utilisant ces adresses ne circulent justement que sur cette liaison ( moins que les passerelles ne se trouvent sur des rseaux locaux et utilisent des adresses de ces rseaux pour la liaison PPP, auquel cas, de toutes manires, il faudrait utiliser la technique du masquerading pour connecter ces rseaux sur Internet). Le script d'initialisation du modem, quant lui, peut tre spcifi l'aide de l'option ini de pppd. Cette option fonctionne exactement comme l'option connec que l'on a utilise pour tablir la liaison tlphonique dans la Section 9.3.2. La diffrence est ici que l'on ne cherche pas composer un numro de tlphone, mais plutt initialiser le modem pour qu'il dcroche automatiquement la ligne lorsqu'il reoit un appel. Il existe malheureusement plusieurs dialectes de langages de commandes utiliss par les modems. En gnral, chaque modem dispose donc de ses propres commandes, et il faut consulter sa documentation pour savoir leurs syntaxes. Malgr cela, ce n'est pas trop gnant, car la plupart des modems sont compatibles avec le standard Hayes, dont les commandes sont bien connues. Pour l'initialisation d'un modem pour un serveur, les commandes d'initialisation suivantes seront trs utiles : Commande Signification ATS0=n Dcrochage automatique si n vaut 1, manuel si n vaut 0. AT&C1 Activation du contrle de la ligne CD ( Carrier Detect ) pour signaler les raccrochages des clients. Cette commande n'est utile que si l'option modem est passe en paramtre pppd sur sa ligne de commande. AT&K3 Activation du contrle de flux matriel (pour optimiser les changes de donnes entre le modem et l'ordinateur). Cette option ncessite d'utiliser l'option crscs dans la ligne de commande de pppd. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 378
Au final, 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 fichier 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 fichier du script chat devant servir l'initialisation du modem. L'option deach permet de demander pppd de se dtacher du terminal courant, afin que l'on puisse le lancer en arrire plan. Vous trouverez ci-dessous un script chat d'exemple, permettant de spcifier les options vues ci- dessus : "" ATZ OK ATS0=1 OK AT&C1 OK AT&K3 OK "" Note : Vous remarquerez qu'il n'est pas ncessaire, contrairement ce que l'on a vu lors de la configuration d'un client PPP, de spcifier le nom de l'utilisateur et le protocole d'identification et d'authentification utilis. Cela est normal, car le serveur n'a pas s'identifier auprs de la machine cliente en gnral (il peut bien entendu le faire s'il 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 d'exiger que les clients s'identifient et s'authentifient l'aide de l'un des protocoles PAP ou CHAP. Pour cela, il suffit simplement d'ajouter les noms des clients et leurs secrets respectifs dans les fichiers de secrets /etc/ppp/pap-secrets et /etc/ppp/chap-secrets, et d'ajouter l'une des options require-pap ou require-chap sur la ligne de commande du dmon pppd. Remarquez que le format des fichiers pap-secrets et chap-secrets est le mme aussi bien pour les connexions entrantes que pour les appels vers l'extrieur. Cela signifie que l'on doit donner d'abord le nom du client, ensuite le nom du serveur, et ensuite son secret et enfin la liste des adresses IP que les clients peuvent utiliser. Remarquez galement que la colonne spcifiant la liste des adresses IP ne doit pas rester vide lorsqu'on dsire crer un secret pour le serveur. En effet, pppd se base sur l'adresse IP de la machine distante et sur le nom du client pour dterminer le secret utiliser lors de l'authentification. Cependant, si l'on 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 signifie 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 s'appelle jdupont, on utilisera la ligne suivante : #Client Serveur Secret Adresses jdupont monserveur gh25k;f * Lorsque la liaison PPP est tablie, le dmon pppd configure l'interface rseau correspondante. Le protocole utilis par dfaut est bien entendu le protocole IP. En gnral, il est ncessaire de configurer cette interface afin de spcifier les rgles de routage permettant au client d'envoyer et de recevoir des paquets. Lors de l'tablissement de la liaison, le dmon pppd ajoute donc automatiquement une rgle de routage pour indiquer que tous les paquets destination de l'adresse du client doivent passer par l'interface ppp de la liaison courante. Cette rgle convient dans la majorit des cas, et en tout cas pour les fournisseurs d'accs Internet, car le client ne dispose que d'une seule machine. En revanche, si la liaison PPP est utilise pour relier deux rseaux, les rgles de routages par dfaut ne suffiront plus, car DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 379
des paquets destination de toutes les machines du rseau distant doivent tre envoys via l'interface ppp (et inversement). Pour rsoudre ces petits problmes, on devra complter ou modifier les scripts /etc/ppp/ip-up et /etc/ppp/ip-down. Ces deux scripts sont appels par le dmon pppd respectivement lors de l'tablissement 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 l'tablissement d'une connexion en tant que client. Leur modification devra donc tre entoure d'un soin extrme. Afin de distinguer les diffrents cas d'utilisation, ces scripts sont appels avec les paramtres suivants : Paramtre Signification $1 Nom de l'interface rseau (par exemple, ppp0 . $2 Nom du fichier spcial de priphrique de la ligne srie utilise (par exemple, ttyS0 ). $3 Vitesse de la ligne srie. $4 Adresse IP locale de l'interface rseau. $5 Adresse IP du client. $6 Paramtre complmentaire, que l'on peut passer au script l'aide de l'option ipparam de pppd.
Un script classique fait un test sur le nom de l'interface 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 d'exemple que vous pouvez bien entendu modifier soit directement, soit l'aide de leur outil de configuration. Le dmon pppd se termine chaque fois que la liaison PPP se termine. Ce comportement est normal pour un client, mais ce n'est pas gnralement ce que l'on cherche faire pour un serveur. Il faut donc relancer pppd rgulirement chaque fois qu'il se termine. Cela peut tre ralis en ajoutant sa ligne de commande dans le fichier de configuration /etc/inittab dans les niveaux d'excution adquats. Comme init impose une taille rduite sur les lignes de commandes des programmes qu'il peut lancer, il est ncessaire d'utiliser les fichiers d'options de pppd. Par exemple, si l'on veut assurer le service PPP pour une ligne entrante sur le deuxime port srie dans les niveaux d'excution 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 fichier d'options /etc/ppp/options.ttyS1 :
# Initialisation du modem : init "/usr/sbin/chat -v -f /etc/ppp/client.ttyS1 # Protocole d'authentification : require-pap # Contrle de la ligne tlphonique : modem # Contrle de flux matriel : crtscts DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 380
9.6.3. Liaison de deux ordinateurs par un cble srie La connexion entre deux ordinateurs par l'intermdiaire d'un cble srie est un cas particulier des liaisons PPP. Les techniques utilises sont les mmes, mais plusieurs simplifications importantes peuvent tre faites : les deux ordinateurs sont relis directement par un cble null-modem, et aucun modem ne s'intercale pour compliquer les choses. Par consquent, on peut supprimer les scripts chat d'initialisation et de connexion ; on a le contrle physique sur les deux ordinateurs, ce qui implique que les mcanismes d'identification et d'authentification sont superflus. Il est donc inutile de prciser les secrets PAP ou CHAP sur chaque machine ; il n'y a que deux ordinateurs relier, donc les rgles de routages sont lmentaires ; enfin, les adresses choisies sont connues d'avance et peuvent tre spcifies de manire symtrique sur le client et le serveur. Il dcoule de ces simplifications que l'tablissement d'une liaison PPP au travers d'un cble null- modem est une opration trs facile. Comme vous allez le constater, le protocole PPP est effectivement symtrique. Sur le serveur , il suffit 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 (fichier spcial de priphrique /dev/ttyS0) en utilisant la vitesse de 115200 bauds (vitesse maximale gnralement supporte par les ports srie des ordinateurs), en utilisant l'adresse IP locale 192.168.30.1 et l'adresse IP distante 192.168.31.1. Le dmon pppd doit se dtacher du terminal, car il est lanc en arrire plan. Enfin, le contrle de flux matriel est utilis (option crscs). La commande sur le client est absolument symtrique, puisque seules les adresses locales et distantes sont interverties : pppd /dev/ttyS0 115200 192.168.31.1:192.168.30.1 detach crtscts &
Bien entendu, le port srie utilis peut tre diffrent de celui du serveur, mais il est impratif que les deux ports srie soient configurs pour utiliser les mmes paramtres de communication (vitesse, nombre de bits de donnes, bit de parit, bit d'arrt). Vous aurez donc peut-tre utiliser la commande stty pour fixer ces paramtres sur le serveur et sur le client. Une fois ces deux commandes lances, la connexion PPP est tablie. Le dmon pppd ajoute alors automatiquement une rgle de routage pour acheminer les paquets d'un ordinateur l'autre. Vous n'aurez donc pas modifier les scripts /etc/ppp/ip-up et /etc/ppp/ip-down. Comme vous pouvez le constater, l'utilisation de PPP pour relier simplement deux ordinateurs n'est pas une opration trs complique... 9.6.4. Configuration d'un serveur DHCP Le protocole DHCP est gr, au niveau serveur, par le dmon dhcpd. Ce dmon se configure par l'intermdiaire du fichier de configuration /etc/dhcpd.conf, dans lequel se trouvent les dfinitions des rseaux configurer, ainsi que les diffrentes informations qui doivent tre communiques aux clients. Ce fichier de configuration peut contenir plusieurs dclarations de rseau diffrentes, chacune tant introduite par le mot cl subnet. Ces dclarations permettent de dfinir les options pour les clients de diffrents rseaux de manire indpendante, mais si certaines de ces options sont communes tous vos DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 381
sous-rseaux, vous pouvez les factoriser en tte du fichier dhcpd.conf. Par exemple, le fichier de configuration suivant : # Exemple de fichier de configuration dhcpd.conf : default-lease-time 600; max-lease-time 86400; option subnet mask 255.255.255.0;
permet de configurer les deux rseaux 192.168.1.0 et 192.168.53.0 en spcifiant un masque de sous- rseau gal 255.255.255.0 et une dure de bail d'adresse IP par dfaut de 10 minutes (option default- lease-time) et maximale d'un 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 fichier de configuration dhcpd.conf n'est pas bien complique. Le mot cl subnet doit tre suivi de l'adresse du rseau sur lesquels les clients configurer 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 spcifie par le mot cl range suivi de l'adresse de dbut et de l'adresse de fin de la plage. Il est galement possible d'attribuer des adresses fixes certaines machines, avec la syntaxe suivante : hardware ethernet 08:00:2b:4c:59:23; fixed-address 192.168.1.101;
o les mots cls hardware ethernet introduisent l'adresse Ethernet de l'interface rseau de la machine cliente, et o fixed-address spcifie l'adresse IP que cette machine doit utiliser pour cette interface. Enfin, un grand nombre d'options peuvent galement tre spcifies, par exemple pour dfinir 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 fichier de configuration adapt votre installation, il ne vous restera plus qu' lancer le dmon dhcpd. Celui-ci utilise la syntaxe suivante : dhcpd interface0 [interface1 [...]]
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 382
o interface0, interface1, etc., sont les interfaces rseau utilises pour accder aux rseaux configurer en DHCP. Ces interfaces doivent tre configures avec des adresses de rseau pour lesquelles il est possible de trouver une section subnet correspondante dans le fichier de configuration /etc/dhcpd.conf. Enfin, la commande de dmarrage du dmon dhcpd pourra tre place dans les fichiers d'initialisation du serveur DHCP. Note : Le dmon dhcpd utilise les fonctionnalits d'accs direct aux cartes rseau et de filtrage des paquets du noyau Linux pour couter sur le rseau les demandes de configuration par DHCP des clients. Par consquent, vous devrez activer ces options dans la configuration du noyau si ce n'est 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 l'option IP: multicasting dans la liste des options pour le protocole IP afin de permettre au dmon d'effectuer des missions de paquets en mode broadcast. Le dtail de la configuration et de la compilation du noyau a t vu dans la Section 7.3. 9.7. Systmes de fichiers en rseau L'une des utilits principales d'un rseau est de permettre le partage des fichiers entre plusieurs ordinateurs. Cela ncessite de disposer d'un systme de fichiers rseau sur les machines qui dsirent accder des fichiers d'une autre machine, et d'un programme serveur sur les machines ainsi accdes par les clients. Il existe deux grands standards de protocole pour les systmes de fichiers en rseau. Le premier standard fonctionne quasiment exclusivement sous Unix, il s'agit du protocole NFS (abrviation de l'anglais 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 l'anglais Server Message Block ), qui a t introduit par Microsoft pour les systmes DOS et Windows. Les deux protocoles sont incompatibles, et si les deux solutions fonctionnent parfaitement en environnements homognes, il est assez difficile de faire communiquer les deux types de systmes. Les principaux problmes proviennent de l'impossibilit d'utiliser le protocole rseau NetBIOS d'IBM sur les machines Unix, et des limitations des systmes Microsoft en ce qui concerne la gestion des utilisateurs, les droits d'accs et les liens symboliques. De plus, la diffrence de gestion des fins de lignes dans les fichiers textes entre Unix et les systmes Microsoft pose des problmes qui peuvent difficilement tre rsolus de manire systmatique. Malgr ces limitations, les machines fonctionnant sous DOS ou Windows peuvent accder aux systmes de fichiers 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 fiabilit et des performances honntes. L'utilisation 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 difficults. La principale difficult est ici la ncessit d'encapsuler NetBIOS dans le protocole TCP/IP. En effet, le protocole SMB utilise les messages NetBIOS, protocole qui n'est pas gr nativement par les machines Unix. Dans tous les cas, des logiciels complmentaires sont ncessaires. 9.7.1. Installation d'un serveur de fichiers NFS L'installation d'un serveur NFS est la solution de prdilection pour le partage des fichiers sous Unix. Il faut savoir cependant que NFS n'offre pas des performances remarquables d'une part, et qu'il ouvre des brches dans la scurit du systme d'autre part. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 383
Comme il l'a t dit ci-dessus, l'installation d'un serveur NFS requiert l'utilisation de programmes spcifiques. 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 fichiers NFS, et nfsd effectue les requtes d'accs aux fichiers pour les clients. Par ailleurs, ces deux dmons utilisent les mcanismes d'appels de procdure distance RPC (abrviation de l'anglais 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 l'excution 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 identifi par un numro de programme unique, ainsi qu'un numro de version. Lorsqu'ils dmarrent, les serveurs s'enregistrent dans le systme en prcisant le port sur lequel ils couteront les requtes. Les clients peuvent alors interroger le systme distant pour demander le port sur lequel ils trouveront un serveur donn, partir du numro de programme et du numro de version de celui-ci. Il existe donc un service RPC particulier, nomm portmapper , qui fournit aux clients qui le demandent les numros de port des autres serveurs. Bien entendu, le portmapper doit tre toujours contactable, ce qui implique qu'il utilise systmatiquement le mme numro de port. Par convention, le portmapper est identifi 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 fichiers passent donc par le lancement de ces trois dmons : le dmon portmapper, le dmon mountd et le dmon nfsd. Les fichiers 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 fichiers, il est probable que votre distribution fasse le ncessaire dans ses scripts de dmarrage. Note : Il est prvu d'intgrer les fonctionnalits de serveur NFS dans le noyau de Linux. Cependant, le serveur de fichiers du noyau n'est pas encore finalis, et ne sera donc pas dcrit ici. Une fois les dmons lancs, vous pourrez configurer les systmes de fichiers exports par votre serveur. Ces systmes de fichiers sont en fait de simples rpertoires que vous mettez disposition de certaines machines. La liste de ces rpertoires est place dans le fichier de configuration /etc/exports. Chaque ligne de ce fichier 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 d'utiliser les caractres gnriques '?' et '*' afin de spcifier des groupes de machines. Des options peuvent tre utilises pour chaque machine, l'aide de la syntaxe suivante : DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 384
machine(options)
o machine est l'une des entres de la liste de machines d'une ligne du fichier 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 fichiers sont exports par dfaut avec un identificateur d'utilisateur qui est celui qui possde le fichier sur la machine serveur. Or il est tout fait possible que cet identificateur ne correspond pas au mme utilisateur sur tous les clients. Cela signifie que les utilisateurs des machines clientes peuvent parfaitement avoir accs des fichiers qui ne leur appartient pas sur le serveur. Ce problme est fondamental, aussi faut-il le prendre en considration srieusement. NFS fourni plusieurs solutions pour assurer la scurit sur les systmes de fichiers exports. La premire, qui est aussi la plus restrictive, est d'attribuer les fichiers exports un utilisateur ne disposant de quasiment aucun droit (opration que l'on nomme souvent squashing de l'utilisateur ). Cet utilisateur spcial est l'utilisateur nobody , dont l'identificateur est 65534 par dfaut. Ainsi, tous les clients accdent ces fichiers au nom de l'utilisateur nobody, et ne peuvent donc pas modifier les fichiers du serveur. Le squashing de l'utilisateur 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 l'identificateur des utilisateurs du client partir de leur nom. Ainsi, chaque fichier est export avec l'identificateur de l'utilisateur qui porte le mme nom que celui qui possde le fichier 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 d'une part, et un attaquant potentiel peut utiliser le dmon ugidd pour obtenir la liste des utilisateurs de la machine cliente d'autre part (ce qui constitue dj la moiti du travail pour s'introduire dans le systme de la machine cliente). Cependant, cette solution est trs pratique pour les rseaux dont on contrle chaque machine, condition de restreindre l'accs au dmon ugidd au serveur uniquement, par exemple en ayant recours tcpd. La troisime solution est de dfinir sur le serveur l'association entre les identificateurs des utilisateurs du serveur et les identificateurs du client, ce pour chaque machine cliente. Cette technique est sre, mais nettement plus complique mettre en uvre. Enfin, la dernire solution est d'utiliser les services d'information du rseau NIS (abrviation de l'anglais Network Information Service ), qui permettent de dfinir un certain nombre d'informations de manire globale sur un rseau. En particulier, il est possible de centraliser la dfinition des utilisateurs et des mots de passe. Cette solution est trs lourde mettre en uvre, puisqu'elle ncessite de configurer NIS au pralable. Elle n'est donc mise en place que sur les grands rseaux, et un particulier n'a pas de raisons d'y recourir ( moins de vouloir explorer ces mcanismes bien entendu). Nous n'en parlerons donc pas. Toutes ces techniques peuvent tre actives l'aide d'options fournies dans la liste des options pour chaque machine dclares dans le fichier de configuration /etc/exports. Les options utilises sont dcrites ci-dessous : l'option all_squash permet d'exporter tous les fichiers comme appartenant l'utilisateur nobody. C'est l'option la plus sre, mais aussi la plus restrictive ; l'option map_daemon permet d'utiliser le dmon ugidd, qui doit tre lanc sur les machines clientes et accessibles du serveur. L'accs aux rpertoires exports sera refus si ce dmon ne DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 385
peut tre contact par le serveur NFS. C'est certainement la solution la plus pratique pour un particulier ; l'option map_static=fichier permet d'utiliser un fichier de correspondance des identificateurs des utilisateurs du serveur NFS sur les identificateurs des utilisateurs de la machine cliente. Comme on peut le voir, cette dernire option permet de dfinir spcifiquement, pour chaque machine, la correspondance des identificateurs d'utilisateurs. Le fichier fourni en paramtre l'option map_saic contient un certain nombre de lignes, chacune dfinissant l'association entre les identificateurs d'utilisateurs de la machine distante et les identificateurs de ces utilisateurs sur le serveur. Ces lignes sont introduites l'aide 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 d'identificateurs : # client serveur uid 0-99 - uid 500-1000 1000 gid 0-49 - gid 50-100 1000 Dans l'exemple donn ci-dessus, les utilisateurs ayant un identificateur compris entre 0 et 99 inclus seront associs l'utilisateur nobody (ils subissent le squashing ). Il en est de mme pour les groupes allant de 0 49. En revanche, les utilisateurs dont les identificateurs vont de 500 1000 sur la machine cliente se voient respectivement considrs comme les utilisateurs d'identificateur 1000 1500 par le serveur NFS. De mme, les groupes d'identificateurs 50 100 sont considrs comme les groupes d'identificateurs 1000 1050. L'exemple qui suit va permettre d'claircir un peu ces notions. Il montre comment les trois types de contrle des identificateurs 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 l'utilisateur 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 fichier /etc/nfs/192.168.5.2.map utilis dans la troisime ligne dfinit 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 DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 386
Les informations stockes dans le fichier /etc/exports sont prises en compte lors de l'excution de la commande exportfs. Cette commande est gnralement excute chaque dmarrage de la machine dans les scripts de dmarrage du systme, avec l'option -a. Cette option permet d'exporter tous les systmes de fichiers rfrencs dans /etc/exports, tout comme la commande mount utilise cette option pour monter tous les systmes de fichiers au dmarrage. chaque modification du fichier /etc/exports, il est ncessaire de signaler cette modification au dmon mountd. Cela peut tre fait simplement l'aide de la commande suivante : exportfs -a 9.7.2. Configuration d'un client NFS Une fois la configuration du serveur NFS effectue, il ne reste plus qu' configurer 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 d'une machine fonctionnant sous Linux. Du point de vue du client, les fichiers accds par NFS sont considrs comme des fichiers normaux d'un systme de fichiers classique. Ils sont donc grs directement par le noyau, en tant que systme de fichiers part entire. L'utilisation de NFS est donc directe, pour peu que l'on ait activ les fonctionnalits NFS dans le noyau. Encore une fois, vous devrez modifier la configuration du noyau si celui fourni avec votre distribution ne gre pas les systmes de fichiers NFS (ce qui est fort peu probable). La seule fonctionnalit activer, en plus de la gestion du rseau bien entendu, est l'option NFS filesystem support du menu Network File Systems (ce menu est un sous-menu du menu Filesystems si vous utilisez la configuration en mode texte). Lorsque le noyau sera compil et install, il sera capable d'utiliser les systmes de fichiers NFS nativement. Vous n'aurez donc pas besoin des dmons nfsd et mountd, tout sera pris en charge par le noyau. Cependant, si le serveur exporte ses rpertoires avec l'option map_daemon, il sera ncessaire de lancer le dmon ugidd sur la machine cliente (le fichier excutable se nomme rpc.ugidd et se trouve dans le rpertoire /usr/sbin/). Il est conseill de lancer ce dmon partir d'inetd, en l'encapsulant l'aide du dmon tcpd. Le montage d'un systme de fichiers NFS se fait classiquement, avec la commande mount. Il suffit simplement ici de prciser le type de systme de fichiers nfs avec l'option -, et d'utiliser la syntaxe suivante pour le fichier 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 fichiers NFS dans le rpertoire /mnt :
mount -t nfs \ mon.serveur.nfs:/mon/rpertoire/export /mnt Le systme de fichiers NFS accepte des options permettant d'optimiser les transferts d'informations. Ces options peuvent tre fournies en ligne de commande mount l'aide de l'option -o. Les plus utiles sont sans doute rsize, qui permet de fixer la taille des blocs de donnes transfrs pour la lecture des fichiers, et wsize, qui permet de fixer cette taille pour l'criture des fichiers. Il est recommand d'utiliser des paramtres raisonnables afin d'viter des erreurs de transfert et des pertes de DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 387
donnes. La valeur par dfaut est 1024, mais il est recommand d'utiliser des blocs de taille 8192 pour obtenir de meilleures performances. Ainsi, la commande prcdente 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 fichiers pour trouver les valeurs optimales. 9.7.3. Installation d'un serveur de fichiers 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. L'installation d'un serveur SMB requiert en effet l'utilisation de deux dmons qui prennent en charge les services fournis par les serveurs de fichiers SMB. Ces dmons utilisent tous deux le fichier de configuration 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 d'utiliser le systme de fichiers SMB du noyau. Ces dmons, ainsi que tous les outils ncessaires l'utilisation 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 d'utilisation. Elle est normalement fournie avec toutes les distributions. La version actuelle est la 3.0.3. Si ce n'est pas celle fournie avec votre distribution, il est fortement recommand d'effectuer une mise jour. L'installation de Samba ne pose pas de problme particulier. Nous ne la dcrirons donc pas ici. Sachez cependant qu'elle 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 fichiers sont fournis avec Samba et restent ncessaires. Comme on l'a vu ci-dessus, le protocole SMB se base sur le protocole de bas niveau NetBIOS. NetBIOS est un protocole trs primitif, qui n'utilise pas un mcanisme d'adressage semblable celui de la plupart des protocoles modernes. Chaque machine est identifie sur le rseau par un nom unique, qu'elle doit dclarer avant de pouvoir utiliser les ressources du rseau. Tout nouvel arrivant sur le rseau signale donc aux autres qu'il dsire utiliser son nom, afin de dterminer si ce nom est dj pris ou non par une autre machine. L'un des plus gros dfauts de NetBIOS est tout simplement qu'il n'est pas routable tel quel, et qu'il est impossible de structurer un rseau en se basant seulement sur les noms NetBIOS. C'est pour cette raison que l'on encapsule souvent NetBIOS dans un protocole plus volu capable de traverser les routeurs, comme TCP/IP par exemple. C'est 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 configurs pour encapsuler NetBIOS dans TCP/IP. L'utilisation de TCP/IP est de toutes manires fortement recommande si l'on veut raliser un rseau un tant soit peu srieux, et les versions rcentes de Windows utilisent galement cette technique. Outre les noms d'ordinateurs, le protocole NetBIOS permet de dfinir des groupes d'ordinateurs, qui contiennent tous les ordinateurs supposs changer des informations couramment. Un ordinateur ne peut faire partie que d'un seul groupe, mais il peut galement ne faire partie d'aucun groupe s'il le dsire. Ces groupes d'ordinateurs sont crs uniquement en fonction du travail qu'ils 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 d'un groupe, un peu comme le DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 388
protocole TCP/IP permet d'utiliser des adresses de diffusion. Dans le monde Windows, ces groupes de machines sont plus couramment dnomms des workgroup , et il n'y a en fait aucune diffrence technique. Pour le protocole SMB, chaque ordinateur du rseau doit faire partie d'un groupe bien dfini, bien que ce ne soit pas une ncessit au niveau de NetBIOS. Lorsqu'un groupe de travail possde une base de donnes centrale permettant de raliser l'authentification des utilisateurs lors des accs aux machines par le rseau, on dit qu'il s'agit d'un domaine. En pratique, un domaine n'est donc rien d'autre qu'un groupe de travail dont fait partie un ou plusieurs serveurs d'authentification. Il existe plusieurs types de serveurs de domaine. Un serveur primaire est un serveur central, sur lequel se fait la gestion globale des utilisateurs. Outre un serveur primaire, un domaine peut galement contenir un ou plusieurs serveurs de sauvegarde si ncessaire. Comme leur appelation l'indique, ces serveurs sont capables de remplacer le serveur primaire en cas de dfaillance de celui-ci. Ils maintiennent donc une copie des tables d'utilisateurs, et la synchronisent rgulirement avec celle du serveur primaire. Enfin, un domaine peut contenir des serveurs membres, qui sont comme des serveurs de sauvegarde, ceci prs qu'ils 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. Afin 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 configur en tant que serveur WINS (abrviation de l'anglais Windows Internet Name Server ), afin 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 qu'un 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 l'option -, 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 d'effectuer la gestion des utilisateurs et des partages. Il doit tre lanc galement avec l'option - si l'on veut qu'il dmarre en tant que dmon. Ce dmon est normalement install au mme endroit que nmbd : /usr/sbin/smbd -D Vous pourrez ventuellement faire en sorte que ces dmons soient lancs automatiquement en modifiant 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 fichiers Unix. Le protocole SMB ne supporte d'ailleurs qu'une partie infime de ces fonctionnalits. De plus, la gestion des droits sur les fichiers exports par un serveur de fichiers Windows se base gnralement sur le modle de scurit des d'ACLs ( Access Control List ), plutt que sur le modle de scurit Unix classique. Samba peut donc tre configur pour utiliser le support des ACLs natif des systmes de fichiers Linux, ainsi que pour utiliser les modles de scurit primitifs des anciennes versions de Windows. La premire difficult rsoudre concerne la gestion des droits d'accs aux fichiers des partages. Sous Unix, chaque fichier et chaque rpertoire dispose de droits d'accs, et seuls les utilisateurs autoriss peuvent les manipuler. Dans le monde Windows, il n'y a quasiment pas de notion d'utilisateur, et en DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 389
gnral pas de gestion de la scurit. Seuls Windows NT/2000/XP disposent de ces fonctionnalits, condition qu'ils utilisent des systmes de fichiers NTFS et que le type de partage utilis le permette. En fait, la gestion de la scurit se fait de manire globale, pour tous les fichiers d'un partage. Il existe principalement deux modes de contrle d'accs aux partages SMB : le contrle d'accs au niveau ressource, qui se fait partir d'un mot de passe unique pour la ressource, sans tenir compte de l'utilisateur qui cherche y accder ; le contrle d'accs au niveau utilisateur, qui ncessite de fournir un nom d'utilisateur et un mot de passe. Le contrle d'accs au niveau utilisateur ncessite de se trouver dans un domaine, et non dans un simple Workgroup. Il faut donc disposer d'un serveur de domaine afin de raliser l'authentification des utilisateurs qui cherchent accder ces ressources. Pour des raisons commerciales, Microsoft s'est arrang pour que seuls Windows NT, Windows 2000 et Windows XP serveur puissent servir de contrleurs de domaine, ce qui fait qu'il est impossible d'utiliser le contrle d'accs au niveau utilisateur sur un rseau ne disposant que de machines sous Windows 95, 98, ou NT/2000/XP client (heureusement, Samba est capable de servir de contrleur de domaine, cependant, nous ne verrons pas ce type de configuration). Il va de soi que le contrle d'accs au niveau utilisateur est la seule solution rellement sre du point de vue de la scurit. Pour couronner le tout, les partages ne permettent que de fixer les droits de lecture et d'criture pour celui qui accde aux fichiers du partage. Les droits d'excution n'ont pas de signification sous Windows puisque, contrairement aux fichiers Unix, le type des fichiers est dtermin par leur extension. Les notions de scurit des partages sont donc profondment diffrentes de celles utilises par Unix, surtout pour le contrle d'accs au niveau ressource, puisqu'aucun nom d'utilisateur n'est requis lors de l'authentification ! Mais ce n'est pas tout. Les fichiers Unix appartiennent tous un utilisateur et un groupe d'utilisateurs, chose qui n'a pas de signification pour Windows. De plus, les systmes de fichiers Unix font la distinction entre les majuscules et les minuscules dans les noms de fichiers, ce que ne fait pas Windows. Et ils disposent de la notion de liens physiques et symboliques. Autant de problmes qui doivent tre grs par Samba. Note : Le fait de ne pas disposer des informations concernant les droits des utilisateurs sur les fichiers accds par SMB n'empche pas le serveur de fichiers de contrler les accs effectus par le client. Si par exemple, un fichier est marqu comme tant en lecture seule, aucun client ne peut y crire, mme par l'intermdiaire d'un partage accd en lecture et criture. Pour rsoudre tous ces problmes, Samba dispose d'un grand nombre d'options, qui peuvent tre utilises dans le fichier de configuration /etc/samba/smb.conf. Ces options permettent d'indiquer la manire dont l'authentification doit tre faite, les droits avec lesquels les fichiers sont accds ou crs, les utilisateurs au nom desquels les fichiers sont crs, et le comportement suivre lorsqu'un 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 l'excellent livre Using Samba de Robert Eckstein, publi aux ditions O'Reilly. Une version en ligne de ce livre est fournie avec les sources de Samba et complte ainsi la documentation officielle de ce programme. La plupart des distributions fournissent un fichier de configuration /etc/samba/smb.conf contenant la plupart des options par dfaut, plus quelques exemples de configuration. Par exemple, les rpertoires des utilisateurs sont souvent exports par dfaut. Vous pourrez bien entendu modifier ce fichier de configuration. Il est donc peut-tre ncessaire de donner quelques prcisions. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 390
Le fichier smb.conf est structur en sections permettant de fixer les paramtres de diffrentes fonctionnalits du logiciel. Chaque section est introduite par son nom, donn entre crochets. Certaines sections sont spcifiques Samba et d'autres permettent de dfinir les partages que vous dsirez crer. Les paramtres dfinis dans les sections se prsentent sous la forme de couple paramtre = valeur , o paramtre est le nom d'un 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 fixe les paramtres globaux de Samba, ainsi que les valeurs par dfaut des paramtres des autres sections. La section [global] suivante peut servir d'exemple : [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 d'utilisateurs Windows # et les noms Unix : username map = /etc/samba/usermap
# Dfinit le compte Unix utiliser pour invit : guest ok = no guest account = nobody
# Dfinit les paramtres rseau : socket options = TCP_NODELAY interfaces = eth0 bind interfaces only = yes Cette section commence par dfinir le nom NetBIOS du serveur et sa description. Par dfaut, le nom utilis par Samba est le nom de domaine Unix de la machine, mais vous pouvez changer ce nom comme bon vous semble. Vous avez d remarquer que dans la description de la machine (mot cl server string), la version de Samba est rcupre avec %v. En fait, Samba dfini 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 l'utilisateur qui se connecte, etc. Toutes ces variables sont dcrites dans la page de man du fichier 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 s'agit du groupe de travail monrezo . Viennent ensuite les options de scurit. Le mot cl security permet de dfinir le mode de contrle d'accs aux partages mis disposition des clients par le serveur Samba. La valeur user indique que ce contrle d'accs 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 d'accs au niveau ressource, si l'on utilise la valeur share. Dans ce cas, Samba essaiera de retrouver l'utilisateur qui cherche se connecter partir de son mot de passe. Il faut donc DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 391
ajouter dans ce cas une ligne telle que celle-ci dans la section globale ou dans l'une des sections dfinissant 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 d'utilisateur est fourni par le client pour accder cette ressource, ce nom est utilis directement. Samba mmorisera galement ce nom pour les demandes d'accs ultrieures la ressource partage. Cet algorithme n'est pas trs sr, car un utilisateur peut se connecter par hasard au nom d'un autre. Aussi n'est-il pas recommand d'utiliser le contrle d'accs 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 n'tant pas sr, Microsoft a dcid d'adopter une nouvelle technique, dans laquelle les mots de passe transfrer sont chiffrs 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 configuration, l'aide de l'option encrypt password. Cependant, si vous dcidez d'activer le chiffrement des mots de passe, vous devrez galement crer un fichier de mots de passe pour les clients SMB. L'emplacement de ce fichier est indiqu avec l'option smb passwd file. Le format du fichier de mot de passe de Samba ressemble fortement celui du fichier de mot de passe Unix /etc/passwd. Vous pourrez trouver dans la documentation de Samba une description dtaille de ce fichier. Cependant, la chose la plus importante, c'est bien sr de pouvoir ajouter des entres pour chaque utilisateur dans ce fichier. Cette opration se fait avec l'utilitaire smbpasswd. Excute sous le compte root, la commande suivante permet d'ajouter un utilisateur et de dfinir son mot de passe : smbpasswd -a utilisateur
o utilisateur est le nom de l'utilisateur dont on veut crer un nouveau mot de passe. L'utilisateur peut bien entendu changer son mot de passe avec smbpasswd. Il est possible que les noms des utilisateurs Windows ne soient pas identiques leurs logins sur la machine serveur de fichiers. En fait, il est mme possible que plusieurs utilisateurs utilisent un mme compte, cr uniquement pour les partages SMB. Samba fournit donc la possibilit d'utiliser un fichier de correspondance entre les noms des utilisateurs avec l'option username map. Le format du fichier de correspondance est trs simple, puisqu'il est constitu de lignes dfinissant chacune une association entre un nom de login Unix et un nom d'utilisateur Windows. Ces lignes utilisent la syntaxe suivante : login = utilisateur
o login est le nom de login de l'utilisateur sur la machine Unix, et utilisateur est le nom qu'il utilisera pour accder aux partages. L'option guest ok permet d'autoriser les connexions sans mot de passe sous un compte spcial, que l'on nomme le compte invit. Pour cela, il suffit de lui affecter la valeur yes. Cette option peut tre fixe no dans la section de configuration globale, et redfinie dans les sections spcifiques de certains partages. Dans tous les cas, les connexions qui s'effectuent en tant qu'invit doivent utiliser un compte utilisateur Unix classique. Ce compte peut tre dfini l'aide de l'option guest account, en gnral, l'utilisateur nobody utilis par NFS est le plus appropri. Enfin, il est possible de dfinir des paramtres rseau dans la section de configuration globale. Ces paramtres rseau permettent de fixer des options de scurit complmentaires et des options d'optimisation. L'option 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 DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 392
interfaces only prend la valeur yes. Ces options conviennent parfaitement pour un rseau local de particulier. L'option socket options quant elle permet de dfinir les paramtres de fonctionnement des communications TCP. L'option TCP_NODELAY indique au systme d'envoyer les paquets TCP ds que Samba le demande, sans chercher en regrouper plusieurs pour optimiser la taille des paquets. Cette option acclre significativement le fonctionnement des programmes tels que Samba, qui utilise beaucoup de petits paquets pour envoyer des requtes ou des rponses. Sans cette option, le systme chercherait regrouper ces paquets, mme si Samba n'en a pas d'autres envoyer, et ralentirait ainsi inutilement les transferts de donnes. Chaque partage fourni par le serveur SMB dispose galement d'une section, dont le nom est le nom utilis pour ce partage. Ces sections sont beaucoup plus simples que la section global, comme le montre l'exemple suivant : [Donnes] # Donne le chemin sur le rpertoire utilis par ce partage : path = /usr/share/samba/donnes
# Description du partage : comment = Disque de donnes
# Nom de volume Windows : volume = SMB-LNX
# Options d'accs : writeable = yes guest ok = yes Comme vous pouvez le constater, l'option path permet de dfinir le rpertoire utilis pour stocker les fichiers 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 fichiers. L'option comment donne la description du partage, telle qu'elle 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 spcifi l'aide de l'option volume. Enfin, les options d'accs utilises dans cet exemple permettent d'autoriser l'criture dans les fichiers de ce partage, et d'autoriser les accs en tant qu'invit (c'est--dire sans mot de passe). Samba dispose d'une fonctionnalit intressante afin de dfinir automatiquement un partage pour chacun des rpertoires personnels des utilisateurs dclars dans le serveur. Lorsqu'un client cherche accder un partage qui n'est pas dfini par une section qui lui est propre, Samba tente de le localiser un rpertoire personnel d'utilisateur portant ce nom. S'il le trouve, il utilisera ce rpertoire pour effectuer le partage automatiquement. Les paramtres de ce partage automatique sont dfinis dans la section [homes], dont vous trouverez un exemple ci-dessous : [homes] comment = Rpertoires personnels browsable = no writable = yes L'utilisation de l'option browsable = no ici sert simplement indiquer qu'il ne doit pas apparatre de partage nomm homes. En effet, ce qui est dsir ici, c'est d'exposer les noms des rpertoires personnels des utilisateurs, pas le partage homes lui-mme. Les autres options sont les mmes que pour les partages normaux. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 393
La section [homes] peut poser quelques problmes, puisqu'elle partage galement le compte root. Cela n'est certainement pas le comportement dsir. Il est mme fortement recommand d'interdire les connexions pour les utilisateurs privilgis du systme. Cela peut tre ralis en utilisant l'option invalid users : invalid users = root bin daemon adm sync shutdown \ halt mail news uucp operator gopher En fait, il est conseill de placer cette option dans la section [global], afin d'interdire les connexions de ces utilisateurs sur tous les partages. Enfin, Samba fournit une fonctionnalit comparable la section [homes] pour les imprimantes partages. Il est en effet capable d'analyser le fichier de configuration /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 suffit d'ajouter les lignes suivantes dans la section [global] du fichier smb.conf : [global] # Dfinit le type d'impression utilis (bsd ou cups) : printing = bsd
# Lit la dfinition des imprimantes installes dans /etc/printcap # (type de commande BSD uniquement) : printcap name = /etc/printcap load printers = yes La premire ligne indique Samba le type de commande utiliser pour raliser une impression. Si vous utilisez le systme d'impression BSD, vous devez fixer l'option printing bsd. Si vous utilisez CUPS, la valeur utiliser est cups. 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 d'exemple : [printers] comment = Imprimantes browseable = no printable = yes writeable = no guest ok = no path = /tmp create mode = 0700 L'option browseable a ici la mme signification que dans la section [homes]. On ne dsire en effet pas qu'un partage portant le nom printers apparaisse dans les voisinages rseau des machines Windows ! En revanche, l'option printable permet d'indiquer clairement que ces partages sont des imprimantes. Il est vident que l'on ne peut pas crire sur une imprimante, l'option writeable est donc fixe no. Enfin, les impressions ne sont autorises que pour les utilisateurs identifis, et l'utilisateur invit n'a pas le droit de soumettre un travail d'impression. Le mcanisme utilis par Samba pour imprimer un document est le suivant. Lorsqu'un client demande une impression sur une des imprimantes partages, Samba copie le fichier que le client lui envoie en local. Ce fichier est ensuite communiqu au gestionnaire d'impression Unix, en l'occurrence lpr sous DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 394
Linux. Celui-ci imprime le fichier et le supprime du disque. Dans la section [printers], l'option path permet d'indiquer dans quel rpertoire les fichiers temporaires envoys par les clients doivent tre stocks. Il est tout fait cohrent de les placer dans le rpertoire /tmp comme dans l'exemple donn ci- dessus. Enfin, il est logique de protger ces fichiers contre les autres utilisateurs. Cela est ralis l'aide de l'option create mode, qui fixe les droits de ces fichiers 0 pour tout le monde, sauf pour le compte root, leur cration. Ainsi, seuls les programmes fonctionnant sous le compte root (donc Samba et la commande lpr) peuvent lire, crire et effacer ces fichiers. Il est bien entendu possible de dfinir les imprimantes manuellement, raison d'une section par imprimante. Ce type de configuration ne sera toutefois pas dcrit ici. Toute modification du fichier de configuration de Samba implique de la signaler aux dmons smbd et nmbd. Cela peut tre ralis en leur envoyant un signal SIGHUP. Vous devrez donc taper les commandes suivantes : killall -HUP smbd killall -HUP nmbd Comme on peut le voir, le fichier de configuration smb.conf n'est pas trs compliqu, mais utilise un grand nombre d'options. Heureusement Samba fournit l'outil de configuration SWAT (abrviation de l'anglais Samba Web Administration Tool ), qui permet d'effectuer la configuration de Samba graphiquement. Comme son nom l'indique, SWAT joue le rle de serveur Web, et peut tre utilis avec n'importe 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 fichier de configuration /etc/services : swat 901/tcp Vous devrez galement ajouter une ligne dans votre fichier /etc/inetd.conf, afin que le dmon inetd puisse lancer SWAT automatiquement lorsqu'un client cherche l'utiliser 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 modification de inetd.conf l'aide de la commande :
killall -HUP inetd Vous pourrez alors accder la configuration graphique de SWAT l'aide d'un navigateur Web, en utilisant simplement l'URL suivante : http://localhost:901 SWAT demandera bien entendu le nom de l'utilisateur root et son mot de passe pour permettre la modification du fichier smb.conf. Notez qu'il est fortement dconseill de laisser la possibilit de raliser une connexion Web sur le compte root, et que vous ne devriez pas autoriser les connexions non locales sur le port TCP 901. L'utilisation de SWAT ne pose pas vraiment de problmes et ne sera donc pas dcrite plus en dtail ici. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 395
9.7.4. Configuration d'un client SMB L'utilisation des volumes partags par l'intermdiaire du protocole SMB sous Linux est trs simple. Elle se fait exactement comme pour NFS : il suffit simplement de monter le volume dans un rpertoire vide de l'arborescence de votre systme de fichiers. Pour que cela puisse tre ralisable, il faut bien entendu que le noyau supporte le systme de fichiers SMB. Ce systme de fichiers est considr par le noyau exactement comme le systme de fichiers NFS : il s'agit d'un systme de fichiers rseau. Vous pourrez donc activer le support de ce systme de fichiers l'aide de l'option de configuration 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 configuration en mode texte). La compilation du noyau et son installation ont t dcrites en dtail dans la Section 7.3. Lorsque vous aurez configur et install ce noyau, vous pourrez monter les volumes partags par des serveurs de fichiers SMB (qu'il s'agisse de serveurs Linux ou Windows) exactement comme n'importe quel systme de fichiers, et accder leurs ressources. Malheureusement, la commande moun du systme ne supporte pas encore compltement le systme de fichiers SMB. Elle utilise donc un programme complmentaire nomm smbmoun, fourni avec la distribution de Samba. Notez bien que ce programme ne fait pas officiellement partie de Samba, il est seulement fourni en tant qu'utilitaire complmentaire pour Linux. Bien qu'il fasse galement partie d'un paquetage indpendant, il est recommand d'utiliser la version fournie avec Samba. Cela signifie 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 modifie un jour pour intgrer toutes les fonctionnalits de la commande smbmount, ce qui rendra inutile l'installation de Samba sur les postes clients. Quoi qu'il 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 fichiers 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 d'une manire gnrale), et que vous pouvez utiliser indiffremment les majuscules ou les minuscules. L'utilisation des slashs la place des antislashs dans le nom du partage est due au fait que l'antislash 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, l'antislash est galement un caractre d'chappement dans les chanes de caractres, et est utilis pour introduire des caractres spciaux. tant lui-mme un caractre spcial, il doit lui aussi tre prcd d'un antislash d'chappement ! 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. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 396
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 suffit de crer dans le rpertoire /sbin/ un lien symbolique mount.smbfs vers la commande smbmount. Lorsqu'on utilisera la commande mount avec le type de systme de fichiers smbfs, celle- ci 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 l'utiliser comme un systme de fichiers classique. Lorsque vous aurez fini de l'utiliser, vous pourrez simplement le dmonter, avec la commande smbumount : smbumount /mnt Il est galement possible d'utiliser la commande systme classique umount, mais cela ncessite de repasser sous le compte root, ou de fixer le bit setuid sur l'excutable de umount, ce qui est un norme trou de scurit. La commande smbumount en revanche peut tre setuid, car elle vrifie que l'utilisateur ne cherche dmonter que les partages qu'il a lui-mme mont. Les partages au niveau ressource ne prennent pas en compte la notion d'utilisateur et de groupe d'utilisateurs des systmes de fichiers Unix classiques. Par consquent, le propritaire et le groupe des fichiers accds par un partage de ressources sont fixs par dfaut l'utilisateur qui a effectu le montage et son groupe. Cela est naturel et ne pose pas de problmes pour la plupart des utilisateurs, mais peut tre gnant lorsqu'on monte un partage en tant que root pour le compte d'un autre utilisateur. Pour rsoudre ce problme, il est possible de prciser le nom de l'utilisateur et son groupe l'aide des options uid et gid de la commande smbmount : smbmount partage rpertoire -o uid=utilisateur,gid=groupe
o utilisateur et groupe sont respectivement les noms ou les numros de l'utilisateur et du groupe auquel les fichiers 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 l'aurez 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 fichiers SMB. Pour Windows, il s'agit du mot de passe attribu au partage. Pour les serveurs de fichiers Samba, il s'agit du mot de passe de l'utilisateur au nom duquel se fait le partage, ou du mot de passe SMB enregistr dans le fichier de mots de passe smbpasswd de Samba. Dans tous les cas, ce mot de passe est demand, mme s'il est vide. La commande smbmount peut accepter une option password, qui permet de prciser ce mot de passe. Cependant, il est fortement dconseill de l'utiliser, et ce pour deux raisons. Premirement, le mot de passe apparat en clair lorsqu'il est saisi, et la ligne de commande peut tre vue par n'importe quel utilisateur avec la commande ps. Cela pose donc un problme de scurit vident. Deuximement, l'option password n'est pas reconnue par la commande mount, et ne peut donc tre utilise qu'avec smbmount. C'est pour cela qu'une autre solution a t propose, bien qu'encore imparfaite : dfinir le nom d'utilisateur et le mot de passe dans la variable d'environnement USER. Pour cela, il suffit d'utiliser l'une des commandes suivantes : export USER=utilisateur%secret export USER=utilisateur/workgroup%secret
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 397
o utilisateur est le nom d'utilisateur classique, workgroup est le groupe de travail et secret le mot de passe sur le partage monter. Cette technique n'est pas non plus trs sre, et n'est en aucun cas pratique. Une autre solution, plus sre, est de dfinir les paramtres d'identification et d'authentification de l'utilisateur dans un fichier et de fournir ce fichier en paramtre la commande smbmount l'aide de l'option credenia1s : smbmount partage rpertoire -o credentials=fichier
o fichier est le fichier contenant l'identification de l'utilisateur. Ce fichier utilise la syntaxe suivante :
username = utilisateur password = secret
o utilisateur est le nom de l'utilisateur et secret son mot de passe. Cette technique est la technique recommande pour raliser le montage de partages SMB directement dans le fichier de configuration /etc/fstab, car c'est la seule qui permette de ne pas avoir saisir le mot de passe ni d'avoir le dfinir en clair dans une ligne de commande. Chapitre 10 : Installation de XWindow Table des matires
10.1. Gnralits sur XWindow 10.2. Installation de X.org 10.3. Configuration de X.org 10.4. Utilisation du pilote frame buffer du noyau 10.5. Configuration des terminaux X 10.6. Paramtrage des applications et ressources X 10.7. Gestion de la scurit sous XWindow 10.8. Gestion des polices de caractres 10.9. Problmes classiques rencontrs Ce chapitre dcrit la manire de procder pour installer et configurer X.org, une implmentation libre de XWindow drive du projet XFree86. Il indique galement comment installer le serveur X pour le pilote de frame buffer du noyau. L'installation des polices Truetype, qui sont si chres aux utilisateurs de Windows et des Macintosh, est galement traite. En revanche, il ne dcrira pas comment configurer les gestionnaires de fentres ni les gestionnaires de bureau, car ces oprations sont spcifiques celui que vous choisirez d'une part, et spcifiques vos desiderata d'autre part. Pour cela, vous devrez commencer vous dbrouiller tout seul, lire les pages de manuel et poser les questions qu'il faut aux personnes qu'il faut. Mais ne paniquez pas, si vous tes arriv jusqu'ici, c'est que vous commencez savoir vous dbrouiller. Vous ne devriez plus trop avoir de problmes pour tirer de Linux tout ce dont vous avez besoin... 10.1. Gnralits sur XWindow Il est ncessaire de bien comprendre ce qu'est XWindow pour pouvoir le configurer et l'utiliser. Son architecture se distingue en effet fortement de celle des environnements graphiques des systmes classiques comme Windows, OS/2 ou Macintosh, et ces diffrences se traduisent dans la manire de l'utiliser. La principale diffrence entre XWindow et les autres environnement graphiques est qu'il s'agit d'un environnement graphique distribu sur un rseau. La notion de base de XWindow est que l'application DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 398
qui effectue le traitement ne ralise pas elle-mme la gestion de l'environnement graphique. Comme on l'a dj vu, cette tche est prise en charge par le serveur X, qui est un processus indpendant. L'application est donc cliente du serveur X, qui lui fournit les services graphiques dont elle a besoin. Cette sparation a plusieurs consquences : premirement, l'environnement graphique est isol des fautes des applications qui l'utilisent. Ainsi, ce n'est pas parce qu'une application a plant en plein cran qu'on ne peut pas rduire sa fentre et accder nouveau au bureau sous-jacent. Inversement, une application est isole des erreurs potentielles du serveur X, et peut poursuivre son traitement mme si celui-ci s'est termin. Par exemple, un processus de gravage de CD peut terminer le CD en cours mme s'il a perdu son interface graphique ; deuximement, les clients doivent tablir une connexion avec le serveur. Cette connexion est ralise par l'intermdiaire du rseau. Cela implique naturellement que les mcanismes de scurit lis au rseau sont applicables pour toutes les applications dsirant se connecter au serveur X. XWindow fournit par ailleurs des mcanismes de scurit complmentaires, et les ressources graphiques ne peuvent tre utilises que par les processus qui y sont autorises ; enfin, comme le client et le serveur X sont deux processus distincts et qu'ils communiquent par l'intermdiaire d'une connexion rseau, rien n'interdit de lancer le client et le serveur X sur deux machines distinctes. Ainsi, tout processus dport peut afficher ses donnes en local (et inversement). Chaque client doit donc se connecter au serveur X avec lequel il dsire travailler. En pratique, il n'existe souvent qu'un seul serveur X sur une machine, mais cela n'est pas une obligation. Par exemple, une mme machine peut disposer de deux cartes graphiques et de deux crans, et faire tourner deux serveurs X distincts. Une autre possibilit est d'utiliser les deux crans avec un seul serveur X pour faire un cran virtuel beaucoup plus grand. Enfin, il est tout fait concevable de lancer plusieurs fois un mme serveur X, mme si l'on ne dispose que d'une seule carte graphique et d'un seul cran, afin de pouvoir utiliser plusieurs terminaux X virtuels. Comme on le voit, l'architecture client/serveur de XWindow lui apporte une trs grande flexibilit. Les serveurs X utilisent la notion de display pour grer l'affichage. En fait, un display est constitu d'un clavier, d'une souris et d'un ou plusieurs crans. Le display est donc l'extension de la notion de terminal pour XWindow. Notez bien qu'il est possible d'utiliser plusieurs crans sur le mme terminal X. Cependant, un serveur X ne peut prendre en charge qu'un seul terminal X sur une machine, et chaque display est gr par un serveur X qui lui est propre. Si l'on veut utiliser plusieurs terminaux X sur une mme machine, il est ncessaire de lancer plusieurs serveurs X, raison d'un par terminal. Les clients qui dsirent se connecter un serveur X doivent donc indiquer le display avec lequel ils dsirent travailler. Le systme XWindow se chargera d'tablir la connexion avec le serveur X en charge de ce display. Les displays sont spcifis avec la syntaxe suivante : machine:display Comme on le voit, la prsence du champ machine confirme que XWindow est bien un systme graphique rseau. Il peut contenir directement le nom de la machine ou son adresse IP. Si ce champ est absent, le serveur contact sera l'un des serveurs X de la machine locale, avec un protocole de communication optimis. Le champ display quant lui est un numro permettant d'identifier le display de la machine en question qui doit tre utilis. C'est ce champ qui dterminera le serveur X qui sera utilis, dans le cas o plusieurs serveurs X fonctionnent sur la mme machine. Un display pouvant avoir plusieurs crans, il est possible de spcifier l'cran sur lequel l'affichage doit tre ralis. Pour cela, il suffit de suffixer le nom du display par un point suivi du numro de l'cran : machine:display.cran DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 399
o le champ cran spcifie le numro de l'cran de ce display sur lequel l'affichage doit avoir lieu. Ce champ sera rarement utilis en pratique, car il est assez rare de disposer de plusieurs crans. Il peut donc tre omis, la valeur par dfaut utilise est dans ce cas 0 (pour le premier et unique cran du display). Figure 10-1. Notion de display
Une fois la connexion tablie, les programmes clients continuent d'indiquer XWindow le display qui doit tre utilis pour chaque opration graphique effectuer. Il est donc possible pour un programme de rpartir son affichage sur plusieurs crans, voire de communiquer avec plusieurs serveurs X et donc de grer plusieurs displays simultanment, ventuellement sur des machines diffrentes. Ce genre de programme est cependant assez rare, et ne se trouve en pratique que dans le monde de la conception assiste par ordinateur, la visualisation d'images mdicales et l'architecture. Les programmes classiques se contentent d'un seul display et effectuent toutes leurs oprations sur un mme cran. En revanche, il est possible de configurer les serveurs X pour utiliser automatiquement plusieurs crans pour un mme display, afin de raliser un cran virtuel gigantesque. Le display utilis pour un programme doit donc souvent tre fix par un paramtre de sa ligne de commande. L'option utilise est -display, avec la syntaxe suivante : programme -display nom
o programme est le programme excuter, et nom est le nom du display tel qu'il a t dcrit ci- dessus. Par exemple, la commande suivante :
xterm -display :0
permet de lancer le programme xterm et de raliser l'affichage sur le display :0 (sur l'cran par dfaut) de la machine locale. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 400
Vous pouvez cependant vous passer de l'option -display, condition de dfinir la variable d'environnement DISPLAY pour fixer le display par dfaut. Vous pouvez fixer la valeur de cette variable l'aide d'une commande telle que celle-ci : export DISPLAY=:0.0
(si vous utilisez bash). Dans cet exemple, le serveur X utiliser se trouve sur la machine locale, le display porte le numro 0, et l'cran utiliser est le numro 0. En gnral, cette variable d'environnement est fixe la valeur du display courant lorsqu'on est connect sous XWindow. Par consquent, vous pouvez lancer vos programmes sans avoir vous proccuper du display qu'ils doivent utiliser. En revanche, vous serez oblig de prciser le display utiliser lorsque vous lancerez une application distance en voulant avoir l'affichage en local. Bien entendu, vous devrez au pralable donner les droits l'utilisateur distant sur votre display local, faute de quoi les mcanismes de scurit de XWindow lui interdiront de se connecter (message d'erreur Can't open display ). Nous verrons plus loin la manire dont XWindow gre la scurit. 10.2. Installation de X.org Il existe actuellement deux implmentations libres de XWindow : l'implmentation historique, XFree86, et une branche de XFree86 cre rcemment pour des raisons politiques, X.org. Cette duplication est de au fait que beaucoup de dveloppeurs n'ont pas eu le sentiment que leurs requtes taient prises en compte par l'quipe de dveloppement de XFree86, qui est reste trs conservatrice pendant de longues annes. Ces problmes ont mme provoqu des querelles intestines au sein de l'quipe de XFree86. N'ayant pu se mettre d'accord, les diffrentes parties ont dcid de dvelopper leur propre version de XWindow sparment. ces problmes s'est ajout un changement de licence du projet XFree86 qui, bien que restant libre, n'a pas t du got de tout le monde. C'tait en quelque sorte la goutte qui a fait dborder le vase. J'ai pris le parti de dcrire X.org dans ce document, bien que j'estime que l'on doive encore rendre crdit l'quipe de XFree86. Je considre en effet que les reproches qui sont faits au projet XFree86 sont justifis (lenteur du projet, intgration et mises jour des composants annexes trop lente, refus d'intgration des modifications ncessaires aux autres projets utilisant XFree86, organisation du projet monolithique et sans volont de le rendre plus modulaire, entre autres problmes). De plus, il semble que les principales distributions et constructeurs de matriel informatique aient dcid de suivre cette voie. Enfin, je considre que le changement de licence de XFree86 n'tait pas ncessaire et relve de la tentative de putsch de la part de l'quipe de dveloppement actuelle d'une part, et n'a t faite que pour des raisons politiques d'autre part. Il n'est pas certain que les deux projets subsistent l'avenir, seul l'avenir dira qui avait raison. Bien que dvelopps par des quipes diffrentes, XFree86 et X.org sont bass sur les mmes sources et sont donc totalement compatibles. Cela ne durera pas forcment, car X.org est appel voluer diffremment et plus vite que XFree86, mais l'heure actuelle, les deux produits n'ont pas eu le temps de diverger suffisamment pour crer des incompatibilits. Les seules diffrentes se situent donc au niveau des noms des commandes et des fichiers de configuration, qui ont t renomms dans X.org pour bien se distinguer de XFree86. Par consquent, si votre distribution utilise XFree86, vous n'aurez que trs peu d'adaptations faire pour lire ce chapitre. L'installation de XWindow a t pendant longtemps une tche ardue et risque. prsent, il est possible d'installer et de configurer cet environnement relativement facilement, et en prenant beaucoup moins de risques que par le pass. La plupart des distributions installent XWindow et le configurent automatiquement, ce qui fait que vous n'aurez gnralement rien faire. Les informations de ce DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 401
chapitre ne vous seront donc utiles que pour comprendre comment effectuer des modifications dans la configuration du systme. En fait, les seules difficults que vous pourrez rencontrer rsident dans le choix du pilote utilis par le serveur X pour prendre en charge votre carte graphique et dans sa configuration. L'essentiel de ces oprations rside donc dans ces deux points stratgiques : il faut disposer d'un pilote adapt sa carte graphique pour le serveur X ; si l'cran utilis est relativement ancien (cran cathodique non compatible avec le protocole DDC), il vous faudra ventuellement connatre les caractristiques de votre matriel (essentiellement les frquences de balayage horizontales et verticales supportes par votre moniteur). Le premier point est quasiment assur de nos jours, car la plupart des cartes graphiques vendues sur le march de nos jours sont des cartes de marque Intel (surtout pour les puces graphiques intgres au chipset), nVidia et ATI. Des pilotes sont disponibles pour la plupart des modles de ces fabricants. En fait, vous devrez essentiellement choisir entre les pilotes libres fournis avec X.org, gnralement plus stables mais ne supportant pas forcment les dernires cartes graphiques ou la totalit des fonctions 3D, et les pilotes propritaires fournis par le fabricant, qui ne supportent souvent pas les anciennes cartes ou qui ne sont pas compatibles avec tous les noyaux, qui sont parfois relativement instables (surtout les pilotes AMD et, dans une moindre mesure, les pilotes nVidia des anciennes cartes) mais qui donnent accs l'ensemble des fonctions 3D. Note : En fait, seul Intel joue le jeu des pilotes libres, bien qu'ATI semble nouveau considrer la question depuis son rachat par AMD. NVidia quant lui fournit des pilotes propritaires de trs bonne qualit et la prise en charge des cartes NVidia sous Linux est excellent. Toutefois, cette socit s'est toujours oppos ce qu'un pilote libre existe ( tel point qu'elle a mme fait pression pour que le code source du pilote 2D de X.org soit crypt). vous de faire votre choix en fonction de vos contraintes financires, matrielles et morales... Si d'aventure vous ne disposez d'aucun serveur X adapt votre matriel (matriel trop rcent pour lequel le constructeur lui-mme n'a pas encore fourni le pilote), vous pourrez vous rabattre sur le pilote VESA, qui fonctionne avec toutes les cartes graphiques compatibles avec le standard VESA. Toutefois, ce pilote ne vous fera bnficier d'aucune acclration graphique, mme 2D. Pour ce qui est du deuxime point, l'avnement des crans plats a simplifi considrablement la donne : non seulement ces crans ne supportent plus qu'une seule rsolution, mais la notion de balayage n'a plus de sens non plus. Ces crans fournissent galement les informations ncessaires aux pilotes de cartes graphiques permettant de dterminer les modes graphiques supports. Toutefois, si votre cran est un vieil cran cathodique, vous aurez peut-tre connatre ses caractristiques techniques. Pour cela, il suffit souvent de regarder la fiche techniques de l'cran. Bien entendu, cela suppose de l'avoir conserve. Si ce n'est pas le cas, il faut esprer que les programmes d'installation connaissent la marque et le modle du matriel. Il reste toujours la possibilit de demander des renseignements des personnes qui ont galement ce type de matriel (c'est l qu'Internet peut tre utile). Les informations les plus importantes sont les plages de frquences horizontales et verticales du moniteur, ainsi que les dures des signaux de synchronisation horizontale et verticale. Sans ces informations, vous ne parviendrez peut-tre pas installer XWindow. Rassurez-vous cependant, les programmes de configuration de XWindow connaissent la plupart des moniteurs prsent, ce qui fait qu'ils sont capables d'crire les fichiers de configuration correctement sans que vous ayez spcifier les paramtres du moniteur.
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 402
10.3. Configuration de X.org La configuration de X.org commence avant tout par l'installation du serveur X. Un mme serveur X peut prendre en charge plusieurs cartes graphiques sur une mme machine, pourvu qu'il dispose des pilotes adquats. Inversement, il est possible de lancer plusieurs serveurs X, chacun utilisant sa propre carte graphique, ou partageant la mme carte si la machine n'a qu'un seul terminal X. X.org fournit un unique serveur X, qui prend en charge tous les types de cartes graphiques l'aide de pilotes spcifiques. Dans une installation normale, ces pilotes sont fournis sous forme de modules de ce serveur. Les pilotes peuvent ainsi tre chargs dynamiquement par le serveur X, selon la configuration du systme. Cette architecture permet un mme serveur X de charger plusieurs pilotes pour plusieurs cartes graphiques, afin de grer les configurations disposant de plusieurs crans connects des cartes graphiques de diffrents types. Il est donc ncessaire que les modules prenant en charge vos cartes graphiques soient installs, ce qui est normalement toujours le cas. Par convention, le nom du serveur X est toujours X. Comme le nom du fichier programme du serveur X de X.org est Xorg (on s'en serait dout...), il doit exister un lien symbolique /usr/bin/X qui pointe vers le fichier /usr/bin/Xorg. Ce lien est, encore une fois, normalement toujours prsent sur les systmes correctement configurs. Une fois XWindow install, la suite de la configuration de X.org se fait uniquement dans le fichier de configuration xorg.conf. Ce fichier est classiquement stock dans le rpertoire /etc/X11/. Normalement, vous ne devez pas crer ce fichier vous-mme. Votre distribution doit au moins vous en fournir un par dfaut et, souvent, elle dispose d'un outil de configuration de X.org convivial qui fera quasiment tout le travail pour vous. Ce genre d'outil est de plus capable de configurer X.org pour les pilotes spcifiques fournis avec les distributions (il n'est pas rare que les socits ditrices de distributions dveloppent des serveurs X pour les nouvelles cartes graphiques). Lisez donc votre documentation pour plus de dtails ce sujet. Vous pouvez galement utiliser les programmes de configuration fournis avec X.org, qui vous permettront de gnrer ce fichier. Il existe trois possibilits pour gnrer un fichier de configuration xorg.conf. La premire mthode est de demander directement au serveur X de dtecter le matriel prsent sur votre machine et de gnrer le fichier xorg.conf correspondant. La deuxime mthode, qui est aussi la plus sre, est d'utiliser le programme xorgconfig. Il s'agit d'un outil fonctionnant en mode texte, qui est effroyablement peu pratique utiliser. Enfin, un autre outil, beaucoup plus convivial, est en cours de dveloppement. Il s'agit de xorgcfg. Cet outil permet de gnrer et de modifier les fichiers xorg.conf de manire conviviale, soit en mode texte avec des menus, soit en mode graphique. Lorsque cet outil sera termin, la configuration de X.org sera beaucoup plus aise. Encore une fois, je ne saurai que vous recommander d'utiliser l'outil de configuration fourni avec votre distribution. 10.3.1. Gnration automatique du fichier xorg.conf Le serveur X de X.org est capable de dtecter le matriel install sur une machine et de gnrer un fichier de configuration xorg.conf adapt ce matriel. Pour cela, il suffit simplement de le lancer avec l'option -configure sous le compte root, comme dans l'exemple suivant : Xorg configure
l'issue de cette commande, le serveur X crira un fichier xorg.conf.new dans le rpertoire personnel de l'utilisateur root. Cependant, le fichier de configuration ainsi gnr n'utilisera que les options de configuration les plus sres et devra souvent tre rvis compltement. En pratique, seuls les paramtres de la carte graphique et de la souris seront correctement dtects. Il ne faut donc utiliser cette fonctionnalit que DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 403
dans le but d'obtenir un squelette de fichier xorg.conf, que l'on personnalisera ensuite. Ce fichier pourra tre copi dans le rpertoire /etc/X11/ sous le nom xorg.conf une fois qu'il aura t corrig. 10.3.2. Utilisation de xorgconfig Comme il l'a t indiqu plus haut, xorgconfig est un programme fonctionnant en mode texte exclusivement. Son principe de fonctionnement est trs simple : il pose une srie de questions sur votre matriel, puis il gnre un fichier xorg.conf gnrique pour votre matriel. Vous pourrez ensuite partir de ce modle pour personnaliser votre configuration et pour prciser les paramtres que xorgconfig ne prend pas en charge. Le principal problme de xorgconfig est qu'il ne laisse pas droit l'erreur. La moindre faute de frappe ou la moindre hsitation est prise comme une rponse valide, et il est impossible de revenir en arrire. Cela est d'autant plus nervant que dans ce cas, il ne reste plus qu'une solution, qui est de tout recommencer partir du dbut. Aprs trois ou quatre erreurs, on finit par faire extrmement attention ce que l'on tape. Lorsqu'on lance xorgconfig, il commence par afficher un message indiquant qu'il va crer un nouveau fichier de configuration xorg.conf que l'on pourra utiliser par la suite comme point de dpart pour paramtrer son systme XWindow. Il faut valider pour passer ce message et commencer la configuration proprement dite. La premire question que xorgconfig pose est le type de la souris que vous voulez utiliser. Il existe un grand nombre de types de souris sur le march, cependant seuls deux types sont rellement courants. Initialement, les souris se connectaient sur le port srie des ordinateurs. Ces souris, dites souris srielles, taient relativement rpandues et sont gnralement rfrences sous le terme de compatible Microsoft . Il faut donc utiliser l'option Microsoft compatible (2-button protocol) pour ces souris. Notez que certaines souris srielles utilisent un protocole diffrent pour grer un troisime bouton. Si vous disposez d'une telle souris, il faut choisir l'option Mouse Systems (3- button protocol) . Plus rcemment, le port PS/2 est apparu pour les claviers et les souris. Ce port permet de grer directement la plupart des souris actuelles, et il est probable que votre souris soit une souris PS/2. L'option utiliser est cette fois l'option PS/2 Mouse . Il faut surtout ne pas confondre les souris PS/2 avec les souris bus (que l'on peut utiliser avec l'option Bus Mouse ), qui sont des souris relativement peu rpandues et qui utilisaient des bus spciaux. Les autres options sont rserves des souris peu rpandues. Si vous en utiliser une, vous devez choisir l'option correspondante. Notez que les souris molette connectes sur le port PS/2 utilisent un protocole de communication lgrement diffrent de celui que les autres souris PS/2 utilisent. Malheureusement, xorgconfig ne propose pas d'option pour ces souris, et une intervention manuelle dans le fichier de configuration xorg.conf est ncessaire pour les configurer. La manire de procder sera dtaille dans la Section 10.3.4. La question suivante demande si vous dsirez activer la fonctionnalit d'mulation d'un troisime bouton pour les souris deux boutons. Cette mulation permet d'utiliser les nombreux programmes pour XWindow qui ncessitent d'utiliser une souris trois boutons. Le clic sur le troisime bouton est alors simul en appuyant sur les deux boutons de la souris simultanment. Il est trs vivement recommand de rpondre par 'y' cette question si votre souris ne dispose que de deux boutons. En revanche, si elle dispose de plus de trois boutons, ou si elle dispose d'une roulette, il faut rpondre par la ngative. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 404
xorgconfig demande ensuite le port sur lequel votre souris est connecte. Ce port est gnralement le port /dev/ttyS0 pour les souris srielles et /dev/psaux pour les souris PS/2. Les distributions crent souvent un lien symbolique /dev/mouse sur le port effectivement utilis par la souris, si bien que la rponse par dfaut utilise ce port. C'est la rponse recommande, validez donc pour passer la question suivante. Vient ensuite la slection du type de clavier. Encore une fois, un certain nombre de modles de claviers ont t vendus sur le march. Cependant, seuls quelques-uns sont rellement rpandus. En France, on trouve essentiellement les claviers internationaux 102 touches et 105 touches, auxquels correspondent les rponses Generic 102-key (Intl) PC et Generic 105-key (Intl) PC . Si vous utilisez un clavier Microsoft Natural Keyboard, choisissez l'option Microsoft Natural . Vous devrez ensuite indiquer la disposition de ce clavier. Il faut videmment choisir l'option French . xorgconfig demande alors de saisir un nom de variante pour le clavier choisi. Comme le clavier franais n'est dclin que sous une seule variante, vous pouvez simplement valider pour passer la suite de la configuration du clavier. xorgconfig vous propose alors de modifier des paramtres additionnels du clavier (emplacement des touches modificatrices telles que les touches de majuscule, de contrle et de jeu de caractres alternatif, tat des diodes, etc.). En gnral, cela n'est pas ncessaire et vous pouvez rpondre 'n' cette question. La partie difficile vient ensuite. xorgconfig vous le signale avec un message indiquant que les informations de synchronisation horizontale et verticale sont extrmement importantes pour configurer correctement les modes vido. La signification de ces valeurs vous sera dcrite plus loin en dtail, pour l'instant, contentez-vous de rcuprer le manuel de votre moniteur et recherchez ses caractristiques prcises. Validez ensuite pour passer la question suivante. xorgconfig vous demande alors la plage de frquences horizontales que votre moniteur est en mesure d'accepter. Il propose un certain nombre de choix standards, qui correspondent aux diffrents types de moniteurs existant sur le march. Cependant, ces valeurs sont les plus mauvaises, car il est fort probable que votre moniteur sache faire mieux que ce que les standards imposent. Vous devez donc soit accepter une des plages de valeurs proposes, soit saisir la plage correspondant exactement votre moniteur l'aide de l'option Enter your own horizontal sync range . Si vous choisissez cette dernire option, vous devrez ensuite saisir la plage de valeurs des frquences horizontales de votre moniteur. Ne les inventez pas, cela ne marchera pas. Saisissez les vraies valeurs. La mme question est alors pose pour la plage de frquences verticales. Encore une fois, vous pouvez choisir l'une des plages proposes selon le type de votre moniteur, ou saisir vous-mme la plage de frquences cite dans ses caractristiques techniques l'aide de l'option Enter your own vertical sync range . l'issue de cette question, xorgconfig vous demande de saisir le nom du moniteur que vous venez ainsi de configurer. Ce nom est arbitraire, il ne sert que pour l'identifier de manire lisible par la suite. Entrez, par exemple, le nom du modle de l'cran dont vous disposez. La question suivante vous demande simplement si vous dsirez choisir votre carte graphique dans la liste des cartes graphiques supportes par X.org. Il est recommand de rpondre par l'affirmative en tapant 'y'. xorgconfig affiche alors la liste des cartes gres, qui est assez longue. En fait, elle se prsente sur plusieurs pages, et il faut appuyer sur la touche Entre pour passer d'une page la suivante. Si vous avez pass une page de trop, vous tes bon pour passer toutes les pages pour revenir la premire, avant d'aller sur la page contenant votre carte graphique. Lorsque vous aurez trouv votre carte, choisissez l'option correspondante et validez. Si votre carte n'est pas prsente dans la liste, cela ne signifie pas qu'elle n'est pas supporte par X.org. En effet, chaque pilote est capable de prendre en charge un type de puce lectronique, et il arrive que DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 405
plusieurs cartes graphiques soient bases sur une lectronique provenant d'un mme fabricant. C'est la raison pour laquelle les pilotes de X.org portent gnralement le nom des puces utilises par les cartes. Par consquent, si vous ne trouvez pas votre carte dans la liste, vous pouvez essayer de spcifier le pilote correspondant l'lectronique de votre carte. Dans le pire des cas, vous pourrez quasiment toujours utiliser le pilote gnrique VESA, qui permet de piloter toutes les cartes graphiques compatibles avec les standards VESA 2.0. Cependant, vous ne bnficierez d'aucune acclration matrielle avec ce pilote. Les questions qui suivent dpendent fortement de la carte slectionne. En effet, chaque carte peut avoir besoin d'un certain nombre de paramtres complmentaires pour fonctionner. Encore une fois, ces paramtres sont, normalement, indiqus dans le mode d'emploi de votre carte graphique ou, au pire, sur les composants de la carte eux-mmes. Une des questions courantes concerne la quantit de mmoire vido dont cette carte dispose. Pour cette question, les choix les plus courants sont proposs, mais vous pouvez galement spcifier vous-mme cette quantit l'aide de l'option Other . L'unit est ici le kilo-octet, pensez donc bien multiplier par 1024 le nombre de mga-octet de mmoire vido de votre carte graphique avant de saisir la valeur. Lorque la configuration de la carte graphique sera termine, xorgconfig vous demandera de saisir le nom de cette carte. Encore une fois, ce nom est arbitraire, mais vous devriez saisir un nom cohrent avec votre modle. xorgconfig vous propose alors de modifier l'ordre d'utilisation des modes graphiques pour chaque profondeur de couleur. Cet ordre doit tre spcifi en donnant les numros des diffrents modes, les uns aprs les autres, et en ne les sparant pas par des espaces. Par exemple, le nombre 432 slectionnera les modes 4, 3 et 2, soit les modes 1024x768, 800x600 et 640x480. Notez que l'ordre des numros est important, c'est l'ordre dans lequel ces modes seront choisis lorsqu'on basculera de l'un l'autre. Lorsque vous aurez saisi les modes graphiques utiliser et leur ordre d'apparition, xorgconfig vous proposera d'utiliser un cran virtuel de taille suprieure la rsolution physique du plus grand des modes graphiques choisi. Cela signifie que la rsolution de l'affichage sera suprieure celle de votre cran, et que XWindow fera dfiler automatiquement l'image affiche lorsque la souris sortira de la portion d'image visible. Il est en gnral conseill de rpondre par la ngative cette question, car cela peut tre facilement droutant. Cependant, c'est une affaire de got, et vous tes libre d'accepter ce comportement. Notez que quelle que soit la rponse que vous donnerez, XWindow utilisera comme rsolution logique la rsolution du plus grand mode que vous avez slectionn. Par consquent, ce mcanisme de dfilement sera encore utilis pour les modes graphiques de rsolution infrieure, avec comme taille d'cran virtuel la taille du mode ayant la rsolution la plus grande. Lorsque vous aurez configur tous vos modes graphiques, vous pourrez passer la suite en choisissant l'option The modes are OK, continue. . xorgconfig vous demande alors le nombre de couleurs utiliser par dfaut lorsque vous dmarrez en mode graphique. Choisissez bien, car il ne sera pas possible de changer cette valeur une fois que l'environnement graphique sera lanc. Vous pourrez bien entendu la modifier manuellement, mais il vous faudra relancer le serveur X aprs cela. La plupart des cartes graphiques modernes supportent les modes graphiques 16 millions de couleurs, la rponse recommande est donc 24 bits (16 million colors) . Enfin, la dernire question est tout simplement si vous dsirez enregistrer le fichier xorg.conf correspondant aux options que vous avez choisies. Il faut bien entendu rpondre par 'y', ou sinon vous devriez vous demander pourquoi vous tes en train de lire ceci... Le fichier xorg.conf gnr est gnralement fonctionnel, mais parfaitement amliorable. Le format de ce fichier sera dcrit en dtail dans la Section 10.3.4. Si vous l'ouvrez, vous constaterez que xorgconfig a ajout un nombre impressionnant de commentaires pour vous aider dans vos exprimentations. Bien entendu, vous trouverez galement des informations complmentaires dans la page de manuel xorg.conf. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 406
10.3.3. Utilisation de xorgcfg La manire la plus agrable d'effectuer la configuration de X.org est sans nul doute d'utiliser l'utilitaire xorgcfg. Ce programme permet aussi bien de crer un fichier de configuration xorg.conf initial que de modifier une configuration existante de manire graphique. Il dispose galement d'un mode texte, qui reprend les mmes questions que xorgconfig, mais d'une manire plus conviviale, l'aide d'un systme de menus. 10.3.3.1. Configuration en mode graphique Lorsqu'on lance xorgcfg, celui-ci commence par regarder si la variable d'environnement ISRLAY est dfinie ou non. Si elle est dfinie, il tente de se connecter au serveur X grant ce display afin de permettre l'dition du fichier de configuration xorg.conf du systme. Notez qu'il ne permet pas de modifier le fichier xorg.conf utilis par le serveur X auquel il se connecte si celui-ci utilise un autre fichier que le fichier du systme : le serveur X n'est utilis par xorgcfg que pour son affichage. Si, en revanche, la variable d'environnement ISRLAY n'est pas dfinie, xorgcfg considre que XWindow n'est pas install sur la machine locale et appelle le serveur X avec l'option -configure afin de gnrer un nouveau fichier xorg.conf. Il lance ensuite le serveur X dtect et utilise ce serveur pour permettre la modification du fichier xorg.conf ainsi cr. son dmarrage, il vrifie que la souris est correctement configure. Si tel n'est pas le cas, il propose d'utiliser les touches du curseur du pav numrique pour dplacer le pointeur de la souris, ainsi que les touches /, * et - respectivement pour le premier, le deuxime et le troisime bouton de la souris. Je dconseille fortement d'essayer d'effectuer la configuration dans ces conditions, car ce n'est rellement pas utilisable. Dans ce cas de figure, on cherchera plutt utiliser l'interface en mode texte de xorgcfg, que nous prsenterons dans la section suivante. L'interface de xorgcfg en mode graphique est trs simple. La partie suprieure de la fentre comprend un menu avec deux entres. La premire entre permet de choisir les diffrentes parties intervenant dans la configuration. La deuxime entre (intitule Expert Mode ) donne accs quant elle un mode de paramtrage permettant d'diter directement les proprits du fichier xorg.conf. Ce mode de fonctionnement est rserv aux utilisateurs avertis et ne sera pas dcrit ici.
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 407
La premire entre de menu comprend plusieurs options. L'option Configure Layout permet d'effectuer la configuration gnrale du display. L'option Configure Screen permet de configurer la disposition des diffrents crans d'un mme display les uns par rapport aux autres. Elle n'est rellement utile que dans le cas des configurations plusieurs crans. L'option Configure Modeline donne la possibilit de configurer les diffrents modes graphiques de chaque configuration. Enfin, l'option Configure AccessX permet de spcifier les options des diffrents priphriques d'entre. Ces deux options de menus sont rserves aux utilisateurs expriments et ne seront pas dcrites dans ce document. L'essentiel de la configuration se fait dans l'cran affich lorsque l'option Configure Layout est choisie. Cet cran est constitu d'une barre d'icnes permettant d'ajouter les diffrents priphriques la configuration courante : souris, claviers, cartes graphiques et moniteurs. Il n'est possible d'diter qu'une seule configuration la fois, la configuration courante peut tre slectionne l'aide du bouton situ dans la partie infrieure gauche de la fentre. Le corps de la fentre elle-mme contient une reprsentation de cette configuration, avec les diffrents priphriques utiliss et les relations qui existent entre eux. En cliquant avec le bouton droit de la souris sur ces lments, vous pouvez faire apparatre un menu contextuel concernant cet lment. Ce menu peut contenir l'option configure , qui donne accs une bote de dialogue permettant d'diter les proprits de l'lment, l'option option , qui permet d'ajouter des options gnrales cet lment, les options enable et disable , qui permettent d'activer ou de dsactiver l'lment en question dans la configuration, et l'option remove , dont le but est de supprimer l'lment concern. Une configuration typique comprend au moins une souris, un clavier, une carte graphique et un moniteur. Il est recommand d'ajouter les lments de la configuration dans cet ordre, afin d'viter d'avoir revenir plusieurs fois sur certains de ces lments. La bote de dialogue ouverte par l'option configure sur une souris comprend un champ contenant l'identificateur de cette souris, la liste des fichiers spciaux de priphriques pour la slection du fichier spcial de priphrique auquel la souris est connecte, la liste des protocoles grs par X.org et un bouton permettant d'activer l'mulation du troisime bouton pour les souris deux boutons. Gnralement, les souris sont connectes soit sur le port srie (fichier spcial de priphrique /dev/ttyS0 ou /dev/ttyS1), soit sur le port PS/2 (fichier spcial de priphrique /dev/psaux). Les principaux protocoles grs par X.org sont les suivants : Microsoft : C'est le protocole utilis par la plupart des souris connectes sur le port srie. Ce type de souris est de plus en plus rare actuellement, ne choisissez cette option que si vous disposez de ce type de souris ; IntelliMouse : C'est le protocole utilis par les souris molette connectes sur le port srie. N'utilisez pas ce protocole pour les souris molette connectes sur le port PS/2, la souris ne fonctionnerait pas. PS/2 : C'est le protocole qui convient pour la majorit des souris connectes sur un port PS/2. Notez toutefois que ce n'est pas le cas des souris molette Logitech et Microsoft ; IMPS/2 : DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 408
C'est le protocole des souris molette connectes sur port PS/2. Malheureusement, ce protocole n'est pas propos par xorgcfg. Il est donc impossible de configurer une souris de ce type avec cet utilitaire, sauf passer dans le mode expert. La configuration utiliser pour ce type de souris sera dcrite dans la Section 10.3.4. Lorsque vous aurez configur votre souris, vous pourrez utiliser le bouton Apply changes pour prendre en compte les changements si vous avez modifi les paramtres de la souris courante. Ds lors, vous devriez avoir une souris fonctionnelle, et vous pouvez l'activer avec l'option enable du menu contextuel. Lorsque la souris est active, un lien apparat entre l'unit centrale de l'ordinateur et cette souris dans la fentre de xorgcfg. La bote de dialogue ouverte par l'option configure du menu contextuel des claviers comprend, comme la bote de dialogue des proprits des souris, un champ permettant de saisir le nom de ce clavier dans la configuration. Vous pouvez galement choisir le modle de clavier et sa disposition en fonction de sa langue. Pour les claviers franais, le modle utiliser est gnralement celui des claviers internationaux 102 ou 105 touches, et la disposition utiliser est la disposition French . Lorsque vous aurez configur le clavier correctement, vous pourrez appliquer les changements avec le bouton Apply changes . Vous pourrez galement activer le clavier dans la configuration courante l'aide de l'option enable du menu contextuel du clavier. Un lien entre ce clavier et l'unit centrale doit alors apparatre dans la fentre principale de xorgcfg. La bote de configuration des cartes graphiques contient le champ habituel pour donner un nom la carte et la liste des cartes graphiques reconnues automatiquement par X.org. Si votre carte ne se trouve pas dans cette liste, vous devrez choisir le pilote utiliser. En gnral, les pilotes portent le nom de la puce lectronique sur laquelle la carte graphique est base. Si aucun pilote n'est adapt pour votre carte, vous pourrez malgr tout utiliser un des pilotes gnriques vga ou vesa. Enfin, dans le cas o plusieurs cartes graphiques sont installes dans l'ordinateur, vous devrez spcifier l'adresse de la carte sur le bus PCI/AGP. N'oubliez pas d'activer la carte graphique l'aide de l'option enable du menu contextuel lorsque vous aurez fini la configuration. La bote de dialogue des moniteurs permet de spcifier un nom pour le moniteur ainsi que ses plages de frquences horizontales et verticales. Vous pouvez aussi slectionner la carte graphique laquelle ce moniteur est connect. La liste ne propose que les cartes graphiques que vous avez configures prcdemment. Les moniteurs n'ont pas besoin d'tre activs, car ils sont lis aux cartes graphiques. Une fois la configuration gnrale dfinie, vous pouvez, si elle contient plusieurs crans, spcifier la disposition relative de ces crans l'aide de l'option Configure Screen du menu principal de xorgcfg. Cette option affiche les diffrents crans dans la fentre de xorgcfg, et vous pouvez les faire glisser pour les disposer comme vous le dsirez. Enfin, l'option de menu principal Configure Modeline vous permettra de dfinir de nouveaux modes graphiques et de les ajuster. Cet cran fournit les mmes fonctionnalits que l'utilitaire xvidtune, que l'on dcrira en dtail dans la Section 10.3.6. Cet cran ne sera donc pas trait plus en dtail ici. Lorsque vous quittez xorgcfg, il vous propose d'enregistrer le fichier de configuration /etc/X11/xorg.conf correspondant la configuration que vous venez de dfinir. Vous pouvez spcifier un autre nom si vous le dsirer, afin d'enregistrer ces paramtres dans un autre fichier. xorgcfg demande galement si vous dsirez sauvegarder la configuration du clavier, pour le cas o vous auriez modifi les paramtres des priphriques d'entre. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 409
10.3.3.2. Configuration en mode texte xorgcfg permet galement d'effectuer la configuration de X.org en mode texte, l'aide d'une interface base sur un systme de menus. Bien que ce mode de fonctionnement soit en mode texte, il permet d'effectuer les mmes tches que xorgconfig d'une manire beaucoup plus conviviale. Pour lancer xorgcfg en mode texte, il suffit simplement de lui passer l'option -exmode en ligne de commande : xorgcfg textmode
Lors de son dmarrage, xorgcfg affiche un cran d'accueil que vous pouvez passer en validant l'option Ok . xorgcfg affiche ensuite son menu principal, qui comprend des entres pour ajouter des souris, claviers, moniteurs et cartes graphiques. Ce menu contient galement une entre Configure screen , qui permet d'associer les cartes graphiques aux moniteurs, et une entre Configure layout , qui permet de configurer le display en spcifiant le clavier, la souris et les diffrents crans utiliser.
Le menu de configuration de la souris permet d'ajouter, de supprimer et de modifier des souris. L'ajout d'une souris ncessite de saisir un identificateur pour la souris, le protocole que cette souris utilise et si le troisime bouton doit tre simul ou non. xorgcfg demande galement le fichier spcial de priphrique utiliser pour accder cette souris. Notez que xorgcfg ne permet pas de choisir le protocole IMPS/2 utilis par les souris molette connectes sur le port PS/2, ce type de souris ne peut donc pas tre configur avec cet outil. De la mme manire, le menu de configuration du clavier demande de saisir un identificateur lorsqu'on ajoute un nouveau clavier. Le type de clavier est galement demand, ainsi que sa disposition. Pour les claviers franais, il faut utiliser les claviers internationaux 102 ou 105 touches. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 410
La configuration des moniteurs permet de spcifier un identificateur pour le moniteur, ainsi que les plages de frquences horizontales et verticales. La configuration des cartes graphiques quant elle permet galement de spcifier un identificateur pour la carte, et de choisir le type de carte dans la liste des cartes prises en charge par X.org. Si votre carte n'est pas liste, vous devrez choisir l'option ** Unlisted card ** et indiquer le pilote utiliser pour cette carte. Ce pilote porte gnralement le nom de la puce lectronique sur laquelle cette carte est conue, mais vous pouvez galement utiliser les pilotes gnriques vga et vesa pour les cartes graphiques compatibles avec ces standards. Enfin, xorgcfg vous propose de spcifier l'adresse de la carte sur le bus PCI/AGP, pour le cas o vous auriez plusieurs cartes installes sur la mme machine. Les identifiants donns aux moniteurs et aux cartes sont utiliss dans le menu de configuration des crans, qui demande quelle carte et quel moniteur sont utiliss pour chaque cran. La profondeur de couleur par dfaut est galement demande, ainsi que la liste des modes graphiques grs par cet cran. Notez que l'interface en mode texte de xorgcfg ne permet pas de dfinir de nouveaux modes graphiques, pour cela, il faut recourir l'interface en mode graphique ou diter manuellement le fichier de configuration xorg.conf. Enfin, le menu de configuration gnral permet de dfinir, de modifier et de supprimer les displays. Chaque display doit contenir une rfrence une souris, un clavier et un ou plusieurs crans. Remarquez encore une fois que l'interface en mode texte de xorgcfg ne permet pas de prciser la disposition relative des crans les uns par rapport aux autres. Pour cela, vous devrez utiliser l'interface en mode graphique ou diter manuellement le fichier de configuration de X.org. Lorsque vous aurez fini la configuration de X.org, vous pourrez l'enregistrer l'aide du menu Write xorg.conf and quit . Ce menu vous demande le chemin complet sur le fichier de configuration crire. Vous pouvez spcifier un autre fichier que le fichier de configuration du systme si vous dsirez l'diter et le modifier manuellement de manire indpendante. 10.3.4. Description du fichier xorg.conf Les fichiers gnrs par les outils de configuration de X.org sont, comme nous l'avons dj prcis, des fichiers devant servir de point de dpart pour raliser votre configuration. Normalement, ils permettent de dmarrer le serveur X et de travailler dans de bonnes conditions, toutefois, il est possible d'amliorer sensiblement la qualit de l'affichage et l'ergonomie du systme en mettant un peu la main la pte. Cette section entreprend donc de dcrire la structure du fichier de configuration xorg.conf et les principales options que l'on peut utiliser. D'autre part, il peut tre instructif de connatre la nature des informations que ce fichier contient, et quelles sont les consquences des choix effectus dans les utilitaires de configuration. 10.3.4.1. Structure gnrale du fichier xorg.conf Le fichier xorg.conf est constitu d'un certain nombre de sections contenant chacune les options pour une partie de l'architecture de X.org. La configuration de X.org est un sujet ardu, aussi seules les principales sections du fichier xorg.conf seront dcrites dans ce document. Vous pouvez vous rfrer la page de manuel xorg.conf et la documentation de X.org pour plus de dtails ce sujet. Certaines sections peuvent tre dfinies plusieurs fois, avec diffrents jeux d'options chaque fois, afin de permettre la dfinition de plusieurs configurations. Bien entendu, lorsqu'un serveur X tourne, une seule configuration est utilise. Cette configuration est spcifie soit directement en ligne de commande lors du lancement du serveur X, soit en indiquant une configuration par dfaut dans le fichier de configuration. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 411
D'autres sections sont globales, et contiennent les options de configuration gnrales du serveur X. Ces options concernent typiquement l'environnement dans lequel il est suppos fonctionner, et les options qui ne dpendent pas de la configuration utilise. La premire section globale est la section Files , qui porte relativement mal son nom, car au lieu de fichiers, elle indique les chemins vers les diffrentes ressources que le serveur X peut utiliser. Ces ressources comprennent les polices de caractres, l'emplacement des modules complmentaires et l'emplacement des fichiers de dfinitions de couleurs. La deuxime section globale est la section ServerFlags . Cette section contient les options gnrales utiliser par dfaut pour tous les serveurs X. Elles permettent d'activer ou de dsactiver certaines fonctionnalits ou extensions non standards. Ces options fournissent des valeurs par dfaut, elles peuvent tre modifies pour chaque serveur X de manire indpendante si ncessaire. La troisime section globale est la section Module . Cette section contient les commandes de chargement des diffrents modules du serveur X, lorsque ce serveur est compil sous forme modulaire. Chaque module gre une certaine partie des fonctionnalits, et celles-ci peuvent donc tre actives ou dsactives au niveau de cette section. Viennent ensuite les sections de configuration des displays. Ces sections dcrivent chacune un des aspects du display, et peuvent apparatre en de multiples exemplaires. Le premier type de section de configuration des displays regroupe toutes les sections qui dfinissent les priphriques d'entre de donnes (clavier, souris, table de digitalisation, etc.). Ces sections sont toutes nommes InputDevice . Le deuxime type de section de configuration contient la dfinition des adaptateurs graphiques. Ces sections permettent de donner les renseignements ncessaires pour la configuration des diffrentes cartes graphiques installes sur le systme. Elles sont toutes nommes Device . Viennent ensuite les sections Monitor qui, comme leur nom l'indique, permettent de dfinir les caractristiques physiques des diffrents moniteurs utilisables. Encore une fois, il peut exister plusieurs sections de ce type, pour dfinir plusieurs moniteurs dans les configurations multi-ttes. Normalement, chaque moniteur est, en fonction de ses capacits, capable de grer diffrents modes graphiques. Les sections Monitor peuvent donc contenir des dfinitions de modes graphiques, mais ce n'est pas la technique recommande. En effet, il est possible d'utiliser plusieurs moniteurs avec des modes graphiques identiques, aussi X.org donne-t-il la possibilit de dfinir les modes graphiques en dehors des sections Monitor (ce n'est toutefois pas une obligation). Dans ce cas, les modes graphiques seront dfinis dans des sections nommes Modes , et celles-ci seront rfrences par les sections des moniteurs qui les utilisent. Les moniteurs sont faits pour tre branchs sur des cartes graphiques. Comme on l'a vu ci-dessus, il est possible de dfinir plusieurs sections Device et plusieurs sections Monitor , afin de dcrire plusieurs cartes graphiques et plusieurs moniteurs. Il faut donc spcifier quels moniteurs sont connects quelles cartes graphiques. C'est exactement le rle des sections Screen . Pour X.org, un cran n'est donc rien d'autre qu'un couple fonctionnel moniteur / carte graphique. Notez que certaines cartes graphiques haut de gamme peuvent prendre en charge plusieurs crans. Dans ce cas, il faudra dfinir plusieurs sections Device pour la mme carte graphique, et spcifier les ports de sortie dans les options de ces sections. Enfin, il ne reste plus qu' dfinir le display lui-mme. Nous avons dj dfini la notion de display ci- dessus comme tant le regroupement d'un clavier, d'une souris et d'un ou plusieurs crans. Ces associations sont donc dfinies dans des sections nommes ServerLayout . Une section de ce type DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 412
contient donc ncessairement une rfrence une section InputDevice pour le clavier et une section InputDevice pour le priphrique de pointage, et une ou plusieurs sections Screen pour les crans utiliss par le serveur X. Dautre part, comme leur nom l'indique, les sections ServerLayout permettent galement de spcifier la disposition relative des crans les uns par rapport aux autres, dans le cas des configurations multi-ttes. Figure 10-2. Structure du fichier xorg.conf
Nous allons prsent dcrire un peu plus en dtail les diffrentes sections qui ont t prsentes ici. Toutes ces sections sont introduites par le mot cl Section suivi du type de la section, indiqu entre guillemets, et se terminent toutes par le mot cl EndSection . Entre ces deux balises, un certain nombre d'informations peuvent tre spcifies, et peuvent mme tre regroupes en sous-sections. tant donn le grand nombre d'options qui peuvent tre indiques dans les sections du fichier xorg.conf, seules les plus classiques seront dcrites ci-dessous. 10.3.4.2. Section Files La section Files , contient les chemins vers les ressources utiliss par X.org. Ce peut tre les rpertoires de polices de caractres, les rpertoires d'installation des modules du serveur X, ou encore des chemins indiquant l'adresse et le port de serveurs de polices sur un rseau. Cette section est donc DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 413
relativement riche de renseignements pour le serveur X. Un exemple typique de section Files est donn ci-dessous : Section "Files" RgbPath "/usr/share/X11/rgb" FontPath "/usr/share/fonts/local" FontPath "/usr/share/fonts/misc" FontPath "/usr/share/fonts/75dpi" FontPath "/usr/share/fonts/100dpi" ModulePath "/usr/lib/modules" EndSection Les chemins indiqus sont des chemins Unix classiques, et sont introduits par les mots cls FontPath , RgbPath et ModulePath respectivement pour les chemins sur les rpertoires de polices, les rpertoires de fichiers de dfinition de couleurs et les rpertoires d'installation des modules. Cependant, comme on le verra plus loin, l'accs aux serveurs de polices se fait l'aide d'une syntaxe de chemin particulire. 10.3.4.3. Section ServerFlags Cette section regroupe les principales options globales de tous les serveurs X. Ces options sont gnralement introduites l'aide du mot cl Option , suivi du nom de l'option entre guillemets, lui- mme suivi d'une ventuelle valeur pour cette option, elle aussi entre guillemets. Par exemple, l'option : Option "DontZap"
permet d'empcher que l'utilisateur puisse utiliser la combinaison de touches CTRL+ALT+BACKSPACE (en temps normal, cette combinaison de touches a pour consquence de tuer le serveur X, et de forcer la dconnexion de toutes les applications en cours de fonctionnement). De mme, l'option : Option "Dont Zoom"
dsactive les combinaisons de touches CTRL+ALT+PLUS et CTRL+ALT+MINUS, o PLUS et MINUS sont respectivement les touches plus et moins du pav numrique. Ces deux combinaisons de touches sont normalement utilises respectivement pour passer d'un mode vido au suivant ou au prcdent. Il existe beaucoup d'autres options gnrales du serveur X. Les plus intressantes sont sans doute les options BlankTime , StandbyTime , SuspendTime et OffTime , qui permettent de contrler les dures des conomiseurs d'crans matriels. Vous trouverez la description des autres options dans les fichiers xorg.conf gnrs automatiquement, et bien entendu dans la page de manuel xorg.conf. 10.3.4.4. Section Module Cette section contient la liste des modules que les serveurs X doivent charger lorsqu'ils dmarrent. Ces modules peuvent tre spcifis de deux manires diffrentes, une abrge et une plus complte. La forme abrge utilise le mot cl Load , suivi du nom du module entre guillemets. Par exemple, la ligne suivante permet de demander le chargement du module de gestion des polices TrueType : Load "freetype" DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 414
La forme complte utilise une sous-section, introduite par le mot cl SubSection suivi du nom du module entre guillemets, et se terminant par le mot cl EndSubSection . Ces sous-sections ont la mme structure que les sections normales, et permettent de spcifier des options pour le module l'aide du mot cl Option . Par exemple, les extensions du serveur X peuvent tre charges l'exception de l'extension DGA l'aide de la sous-section suivante : SubSection "extmod" Option "omit X.org-DGA" EndSubSection Note : L'extension DGA permet aux applications d'accder directement la mmoire vido de la carte graphique. La dsactiver accrot donc la scurit du systme, mais peut empcher certaines applications de fonctionner correctement. C'est le cas des jeux, et surtout des programmes de tlvision sous XWindow. Par consquent, il est probable que vous vouliez laisser ces extensions actives. Dans ce cas, il suffit simplement de ne pas spcifier l'option omi de l'exemple prcdent. Outre les modules freetype et extmod donns dans les exemples prcdents, vous pourrez peut-tre utiliser les modules dri et glx. Ces modules permettent respectivement d'activer les fonctionnalits DRI (abrviation de l'anglais Direct Rendering Infrastructure ) du noyau et le support de la 3D par OpenGL. Les diffrentes cartes capables de grer les fonctionnalits DRI sont celles listes dans la configuration du noyau, que l'on a dj vue dans la Section 7.3. Notez toutefois que ces fonctionnalits ne sont indispensables pour utiliser le module glx que pour ces cartes. En particulier, les cartes graphiques bases sur les puces NVidia peuvent utiliser le module glx sans charger le module dri, car le pilote fourni par NVidia utilise un autre mcanisme. 10.3.4.5. Section InputDevice Les sections InputDevice permettent de dcrire tous les types de priphriques d'entre. En pratique, il s'agira souvent de claviers et de souris, mais il est galement possible de connecter des priphriques plus exotiques tels que les joysticks et les tablettes de dessin. Les sections InputDevice doivent tre nommes avec un identificateur unique, introduit par le mot cl Identifier . Ce mot cl doit tre suivi du nom de la section, donn entre guillemets. C'est ce nom qui sera utilis pour rfrencer la section dans les sections ServerLayout pour dfinir les diffrents displays. La nature du priphrique d'entre est ensuite spcifie par la valeur de l'option Driver . En pratique, on utilisera quasiment toujours Keyboard ou Mouse, qui correspondent bien videmment aux pilotes pour les claviers et les souris. La suite des options de la section InputDevice est fonction de la nature du pilote utilis. Les options les plus courantes pour un clavier sont donnes dans l'exemple suivant : Section "InputDevice" Identifier "Clavier 1" Driver "Keyboard"
# L'option suivante permet de spcifier le dlai # avant rptition (en millisecondes) et la vitesse # de rptition une fois ce dlai pass (en caractres # par seconde) : Option "AutoRepeat" "500 30"
# L'option suivante indique que la dfinition de clavier DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 415
# utiliser est celle de X.org : Option "XkbRules" "xfree86"
# L'option suivante indique que le modle de clavier # utilis est un clavier 105 touches : Option "XkbModel" "pc105"
# L'option suivante indique que la disposition # des touches est celle d'un clavier franais : Option "XkbLayout" "fr"
EndSection De mme, vous trouverez ci-dessous un exemple typique de section InputDevice pour une souris : Section "InputDevice" Identifier "Souris 1" Driver "Mouse"
# L'option suivante indique que la souris est # une souris de type PS/2 : Option "Protocol" "PS/2"
# L'option suivante indique le fichier spcial # de priphrique utiliser pour cette souris : Option "Device" "/dev/psaux"
# L'option suivante indique le nombre de boutons # de la souris : Option "Buttons" "2"
# L'option suivante demande X.org d'muler # le troisime bouton de la souris par clic # simultan des deux boutons : Option "Emulate3Buttons"
EndSection Note : Pour les souris molette connectes sur port PS/2, vous devrez choisir le protocole IMPS/2 au lieu du protocole PS/2 et indiquer que la souris a 5 boutons. De plus, vous devrez ajouter l'option ZAxisMapping dans la section InputDevice de votre souris, et lui donner la valeur 4 5 . Cette option permet de rediriger la rotation de la molette sur les vnements des boutons 4 et 5 de la souris. De cette manire, vous pourrez utiliser votre molette dans toutes les applications qui grent ces deux boutons. 10.3.4.6. Sections Device Les sections Device contiennent les descriptions des cartes graphiques utilises. Ces descriptions n'indiquent absolument pas quel est le serveur X utilis : elles ne contiennent qu'une description du matriel. Notez, encore une fois, qu'il est possible de dfinir plusieurs sections Device , qui pourront tre utilises dans les sections Screen associant les cartes graphiques aux moniteurs. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 416
Tout comme les sections InputDevice , les sections Device doivent disposer d'un identificateur unique, afin de pouvoir les rfrencer dans les sections Screen qui les utilisent. Cet identificateur est introduit par le mot cl Identifier et suivi d'un nom indiqu entre guillemets. Les sections Device peuvent contenir un certain nombre d'options permettant de caractriser la carte graphique et de prciser ses capacits (mmoire, rapidit, adresse sur le bus PCI, etc.). Toutes ces options sont bien entendu spcifiques aux diffrentes cartes graphiques, et ne seront pas dcrites en dtail ici. L'option la plus importante est sans doute l'option Driver , qui permet d'indiquer le pilote que le serveur X devra charger pour piloter cette carte graphique. C'est ce niveau qu'il faut surtout ne pas se tromper, puisque la moindre erreur ferait chouer le dmarrage du serveur X. En gnral, les pilotes portent le nom du chipset utilis par la carte graphique, si bien qu'il n'est pas difficile de dterminer la valeur exacte utiliser. X.org fournit galement deux pilotes gnriques vga et vesa, permettant respectivement de prendre en charge les cartes graphiques compatibles avec le standard VGA ou compatibles avec le standard VESA 2.0. Sachez cependant que ces pilotes ne disposent d'aucune acclration matrielle, et que leurs performances sont donc bien infrieures aux pilotes spcialiss pour chaque carte graphique. Vous trouverez ci-dessous un exemple de section Device typique : Section "Device" Identifier "Carte 1" VendorName "CHAINTECH" BoardName "TORNADO I7000"
# Cette option indique au serveur X qu'il doit # charger le module i740_drv pour piloter cette # carte graphique : Driver "i740"
# Cette option indique la quantit de mmoire # vive dont cette carte dispose (en ko) : VideoRam 8192 EndSection Note : Les options des sections Device ne sont pas trs compliques utiliser. Cependant, quelques-unes peuvent poser des problmes lorsqu'on ralise des configurations multi-ttes (c'est-- dire des configurations disposant de plusieurs crans). Dans la majorit des cas, il faut installer plusieurs cartes graphiques dans le PC pour pouvoir utiliser plusieurs crans. En gnral, on utilise une carte AGP et une ou plusieurs cartes PCI. Il va de soi qu'il faut que chaque pilote utilise la bonne carte, aussi faut-il indiquer, dans chaque section Device , l'adresse de la carte dcrite par la section. Cette adresse est dfinie l'aide de l'option BusID . Cette option permet de retrouver la carte graphique sur les diffrents bus systmes. Les cartes AGP utilisant le mme mcanisme d'adressage que les cartes PCI, on utilisera la syntaxe suivante : "PCI:bus:priphrique:fonction"
o bus est le numro du bus PCI sur lequel se trouve la carte graphique, priphrique est le numro du priphrique sur ce bus, et fonction est le numro de la fonction utiliser pour accder ce priphrique. Vous pouvez utiliser la commande lspci pour afficher les caractristiques des diffrents bus PCI de votre machine et dterminer les valeurs utilises par vos cartes graphiques. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 417
Certaines cartes graphiques haut de gamme disposent de plusieurs contrleurs vido et sont donc capables de grer plusieurs crans. Pour ces cartes graphiques, le principe de fonctionnement est le mme : il faut crire une section Device pour chaque contrleur vido existant. Cependant, tant donn que toutes ces sections s'adressent la mme carte graphique, il est impossible de les distinguer par l'intermdiaire de l'option BusID . Dans ce cas, on utilise alors l'option Screen , suivie du numro du contrleur vido que la section dcrit. Ce numro doit tre donn juste aprs l'option Screen , sans guillemets. La numrotation des contrleurs vido commence 0. C'est cette valeur qui est utilise pour toutes les cartes graphiques ne disposant que d'un seul contrleur vido. 10.3.4.7. Sections Monitor Les sections Monitor contiennent les informations descriptives des crans. Notez qu'il est possible de dfinir plusieurs sections Monitor , pour plusieurs crans potentiels. Cependant, chaque section Screen devra utiliser un moniteur et un seul. Les sections Monitor sont certainement les sections les plus importantes du fichier xorg.conf. Elles contiennent en effet toutes les informations concernant les moniteurs et tous les paramtres des modes graphiques utiliss par ces moniteurs. Ces informations sont utilises par le serveur X pour programmer les signaux vido que la carte graphique envoie au moniteur. Il est donc vident que chaque section Monitor est spcifique un modle de moniteur donn, et que la dtermination des valeurs qui doivent y tre crites requiert une bonne connaissance du fonctionnement de ce moniteur et de ses caractristiques physiques. Vous trouverez une description gnrale du fonctionnement des moniteurs dans les paragraphes qui suivent. Il est impratif de bien les assimiler si vous dsirez crer ou modifier une section Monitor , car si les informations qui y sont stockes sont errones, le moniteur correspondant risque d'tre gravement endommag. Si votre moniteur est un cran plat, le moniteur affiche directement les informations dans son mode vido natif. La configuration des modes graphiques au niveau de la carte graphique n'a donc que peu d'influence : seuls la rsolution et le nombre de couleurs sont utiliss ici, et l'cran s'adapte aux signaux horizontaux et verticaux fournis par la carte graphique dynamiquement pour reconstituer l'image afficher dans sa rsolution native (moyennant une image plus ou moins nette et des couleurs plus ou moins prcises). De ce fait, tous les rglages par dfaut sont gnralement valides, et la section Monitor peut donc tre rduite sa plus simple expression. En revanche, pour les tubes cathodiques, les signaux envoys par la carte graphique sont trs importants. C'est rellement elle qui dfinit le mode graphique. Les informations temporelles des signaux horizontaux et verticaux, ainsi que le nombre de couleurs utiliss, sont essentiels pour dfinir le mode vido, tant en rsolution qu'en nombre de couleurs utiliss, ou encore en frquence de rafrachissement de l'image. La dfinition des modes vido dans ce cas est plus complexe, sauf si les modes dfinis par dfaut vous conviennent. Le principe de fonctionnement des tubes cathodiques utiliss dans les moniteurs est trs simple : chaque instant, un faisceau d'lectrons gnr par un canon lectrons vient frapper un point d'une plaque phosphorescente situe juste derrire la vitre du moniteur. L'nergie cintique des lectrons du faisceau est transforme en lumire par le phosphore en ce point, qui reste ainsi lumineux tant que le faisceau frappe ce point. Comme un seul faisceau est utilis pour tous les points de la plaque phosphorescente, il faut dplacer le faisceau de point en point pour pouvoir tous les clairer. Cela a bien entendu pour consquence que les points ne restent lumineux que pendant un temps trs court. Cependant, nous percevons la luminosit de ce point pendant un temps beaucoup plus long, en raison de la rmanence des cellules de l'il. Les points de l'cran semblent donc tre tous allums en mme temps, bien qu' chaque instant un seul d'entre eux soit atteint par le faisceau d'lectrons. Nous voyons ainsi l'image complte du moniteur. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 418
Le dplacement du faisceau d'lectrons est assur par un champ magntique gnr par des bobinages magntiques l'arrire du tube cathodique. Le faisceau balaye l'cran ligne par ligne, de gauche droite (en regardant le moniteur de face). chaque fois qu'il atteint le bord gauche, il retourne rapidement vers le dbut de la ligne suivante, sur le bord droit du moniteur. Ce retour se fait simplement en modifiant brusquement le champ magntique qui dirige le faisceau. Il va de soi que le faisceau d'lectrons est coup pendant ce retour de balayage, car s'il ne l'tait pas, on le verrait traverser l'cran de droite gauche et perturber ainsi l'image. De plus, le champ magntique n'est pas facilement contrlable lorsque le retour du faisceau commence. Par consquent, il est ncessaire que ce retour se fasse un certain temps aprs que le bord droit ait t teint. Si ce n'tait pas le cas, l'image serait dforme prs des bords du moniteur. Le faisceau lectronique continue donc de balayer l'cran sur une petite zone aprs le bord de l'image, sans mettre de lumire. Cette zone s'appelle le blanking horizontal. De mme, le faisceau lectronique retourne rapidement en haut de l'cran ds qu'il en atteint le bas. Pour les mmes raisons que pour les retours de balayage horizontal, le faisceau doit tre teint un peu avant et pendant la modification du champ magntique lors des retours de balayage vertical. La zone ainsi parcourue par le faisceau aprs le bord de l'image s'appelle le blanking vertical. Note : Il est possible d'utiliser d'autres mthodes de balayage que celle dcrite ci-dessus. En particulier, les modes graphiques entrelacs ne suivent pas ce principe. Dans ces modes, seulement une ligne sur deux est balaye chaque gnration d'image. Les lignes paires sont d'abord affiches pour une premire image, puis les lignes impaires sont affiches pour l'image suivante. Ces modes graphiques taient utiliss lorsque les moniteurs n'taient pas suffisamment rapides pour afficher une image complte sans que l'on puisse voir le balayage du faisceau d'lectrons. De nos jours, il est dconseill d'utiliser ces modes, car l'image a tendance trembler du fait de l'cart de luminosit alternatif entre les lignes paires et impaires de l'cran. Les limitations techniques de la technologie des tubes cathodiques imposent une limite suprieure pour la vitesse de balayage, et une limite infrieure pour la dure des retours de balayage horizontal et vertical, ainsi que pour la dure minimale du blanking. Les caractristiques techniques des tubes sont donc souvent spcifis en terme de frquences de balayage et de dures des signaux de synchronisation. Les vieux moniteurs ne pouvaient supporter qu'un nombre limit de frquences de balayage, que l'on qualifiaient alors de fixes . De nos jours, les crans multisynchrones acceptent toutes les frquences comprises dans une plage de valeur, et s'adaptent donc aux frquences des signaux mis par les cartes graphiques. La frquence de balayage vertical utilise dans un mode graphique donn constitue le taux de rafrachissement de l'cran, c'est--dire le nombre de fois que l'image de l'cran est affiche par seconde. Il est vident qu'un taux de rafrachissement trop faible ne permet pas d'avoir une image agrable regarder, car elle semble trembler ou clignoter. Un tube cathodique de bonne qualit est donc un tube qui permet d'utiliser de hautes frquences verticales. Comme il est ncessaire d'afficher toutes les lignes pour afficher une image complte, il va de soi qu'un bon tube doit galement tre capable d'afficher les lignes rapidement, et donc accepter des frquences de balayage horizontal leves. Typiquement, les frquences de balayage horizontal sont environ mille fois plus leves que les frquences de balayage vertical, puisque chaque ligne peut contenir environ mille pixels. La sensibilit au taux de rafrachissement dpend des personnes et de l'emploi que l'on fait du tube. Les tubes destins tre regards de loin peuvent utiliser des frquences beaucoup plus faibles que les tubes de proximit. Ainsi, les tlvisions affichent 25 images par seconde (en fait, elles affichent 50 demi-images par seconde, car elles utilisent l'entrelacement). En revanche, ce taux de rafrachissement est trs insuffisant pour les moniteurs d'ordinateurs, o la limite infrieure est de 60 Hz. Le standard VESA exige des taux de 72 Hz ou plus pour que l'image soit agrable regarder, mais de nombreux crans supportent facilement 85 Hz ou plus de nos jours. Certaines personnes ne sont cependant pas dranges par des taux aussi faibles que 60 Hz. Il est bon de savoir quel taux de rafrachissement vous DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 419
convient, car un balayage insuffisant peut fatiguer vos yeux, mme sans que vous en soyez conscient. Et cette fatigue se traduit toujours un jour ou un autre par des maux de tte inexpliqus... Ne vous vantez donc pas de voir le balayage, c'est un grave handicap par rapport ceux qui ne le voient pas et qui donc ont moins de maux de tte que vous ! Vous pouvez utiliser la mthode suivante pour dterminer si le taux de rafrachissement est suffisant pour vous. Commencez par afficher une image blanche sur la totalit de la surface visible de votre moniteur. Puis rglez la luminosit du moniteur son maximum. Placez-vous ensuite de biais par rapport votre moniteur, et regardez en face de vous. Concentrez ensuite votre attention sur l'image de l'cran, sans le regarder directement (regardez-le en coin ). Normalement, vous devez percevoir l'image avec les cellules latrales de la rtine, qui donnent une image moins prcise que les cellules centrales, mais qui sont plus sensibles aux mouvements (ces cellules nous servent en quelque sorte d'antennes). Ces cellules sont donc plus aptes percevoir les variations rapides de luminosit de l'image dues au balayage du faisceau lectronique. Si l'image semble clignoter, c'est que le taux de rafrachissement de l'cran est insuffisant. Sinon, vous tenez le bon taux, ne le lchez pas. Certaines caractristiques techniques des tubes cathodiques influent sur les autres et permettent donc de modifier le taux de rafrachissement. Il est vident que si la dure du retour du faisceau est importante, l'cran ne peut pas gnrer beaucoup d'images par seconde. Par consquent, plus la dure du retour de balayage est longue, moins bon peut tre le taux de rafrachissement. Il en va de mme pour la dure du blanking. Les bons crans disposent donc souvent de retours de balayage rapides et de courtes dures de blanking. Mais diminuer ces dures ncessite une lectronique plus prcise au niveau du contrle des champs magntiques dirigeant le faisceau d'lectrons. Il est galement vident que la rsolution du mode graphique influe sur le taux de rafrachissement. Si la rsolution est leve, il y a plus de pixels afficher au total sur chaque ligne de l'cran. vitesse de balayage des pixels fixe, le temps ncessaire pour balayer une ligne est donc plus grand. Et comme il y a plus de lignes afficher, le temps ncessaire pour gnrer une image complte est plus grand, et le taux de rafrachissement est plus faible. Donc, si le test dcrit dans le paragraphe prcdent vous indique que votre taux de rafrachissement est trop faible, vous pouvez tenter de baisser la rsolution. Note : Notez que la profondeur de couleur utilise n'intervient absolument pas dans le taux de rafrachissement. Cette profondeur n'est un facteur limitant qu'au niveau de la carte graphique, qui peut ne pas avoir assez de mmoire pour afficher un mode de grande rsolution avec toutes les couleurs dsires ou ne pas avoir une lectronique assez rapide pour traiter toutes les donnes une vitesse raisonnable. Le signal vido mis par la carte graphique contient toutes les informations dont le moniteur a besoin pour gnrer l'image. Ces informations spcifient bien entendu l'intensit du faisceau d'lectrons, mais aussi les signaux de synchronisation qui contrlent les retours de balayage horizontal et vertical. Ce sont les informations de synchronisation que les sections Monitor du fichier xorg.conf contiennent. On comprend donc l'importance de ces informations pour la qualit de l'image, aussi bien en terme de stabilit qu'en termes de taux de rafrachissement. Les sections Monitor sont constitues grosso modo de deux parties. La premire partie contient les caractristiques gnrales de l'cran, telles que son nom, son modle et le nom de son fabricant. Elle contient galement les plages de frquences de balayage horizontal et vertical. La deuxime partie contient les dfinitions des modes graphiques, raison d'une ligne par mode graphique utilisable. La documentation de X.org appelle ces lignes des lignes de mode ( modelines en anglais). Il est vident que les informations fournies dans les lignes de mode sont trs sensibles, et dterminent tous les paramtres du mode graphique : rsolution, position et taille de l'image sur l'cran, taux de rafrachissement. La premire partie d'une section Monitor ressemble ceci : DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 420
Section "Monitor" Identifier "Moniteur 1" # Marque et modle du moniteur (informations facultatives) : VendorName "SONY" ModelName "MULTISCAN 100ES" # Plage de frquence horizontale (information capitale) : HorizSync 30-70 # Plage de frquence verticale (information capitale) : VertRefresh 50-120 Le mot cl Identifier permet de donner un nom la section Monitor . Ce sera ce nom que l'on utilisera plus loin dans la section Screen pour indiquer que l'on dsire utiliser ce moniteur. Les mots cls VendorName et ModelName permettent de donner la description du moniteur. Les informations stockes ici n'ont aucun effet sur la configuration du moniteur et sont simplement indicatives. En revanche, les plages de frquences horizontales et verticales indiques respectivement aprs les mots cls HorizSync et VertRefresh sont d'une importance capitale. Elles donnent les plages de frquences auxquelles le moniteur peut travailler, et servent contrler la validit des lignes de mode donnes dans la deuxime partie de la section Monitor . Il est donc important de donner ici les valeurs exactes, que vous trouverez normalement dans la fiche technique de votre moniteur (cette fiche est souvent imprime la fin du mode d'emploi). Pour les moniteurs multisynchrones, les plages de frquences utilisables peuvent tre donnes par leurs frquences minimale et maximale, spares d'un tiret. Les frquences fixes peuvent tre spcifies simplement avec une seule valeur. Il est possible de spcifier plusieurs frquences fixes et plusieurs plages de frquences en les sparant par des virgules. L'unit utilise pour les frquences horizontales est le kilohertz, et celle utilise pour les frquences verticales est lHertz. La deuxime partie de la section Monitor contient les lignes de mode, raison d'une ligne de mode par mode graphique que le moniteur est capable d'afficher. En gnral, une ligne de mode ressemble ceci : Modeline "1024x768" 92.96 1024 1064 1240 1352 768 768 778 802
Mais il existe cette une autre syntaxe, beaucoup plus claire car elle diffrencie les diffrentes valeurs donnes dans la ligne prcdente :
Mode "1024x768" DotClock 92.96 HTimings 1024 1064 1240 1352 VTimings 768 768 778 802 EndMode La premire valeur indique entre guillemets dans les lignes de mode est le nom du mode graphique. Comme on le verra plus tard, c'est ce nom qui est utilis pour spcifier les modes graphiques utilisables dans la section Screen . La deuxime valeur est la frquence de base des signaux mis par la carte graphique. Cette vitesse est exprime en MHz et reprsente le nombre de pixels par seconde que le faisceau lectronique du moniteur balaye. Les quatre valeurs suivantes fixent les paramtres horizontaux du mode graphique : rsolution horizontale, pixel partir duquel le signal de synchronisation pour le retour de balayage horizontal commence, pixel auquel ce signal s'arrte et longueur totale de la ligne en pixel, blanking compris. De mme, les quatre dernires valeurs fixent les paramtres verticaux du mode graphique, savoir rsolution verticale, ligne de dbut et ligne de fin du signal de synchronisation pour le retour de balayage vertical, et nombre de lignes total du mode graphique. On notera que les informations concernant le signal de synchronisation du balayage horizontal sont toutes multiples de 8. Cette contrainte est impose par le matriel de la plupart des cartes graphiques. D'autre part, l'unit utilise pour ces valeurs est le pixel. Il faut donc se baser sur la DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 421
frquence de base indique au dbut de la ligne de mode pour les convertir en temps. Les informations concernant le signal de synchronisation vertical, quant elles, sont exprimes en nombre de lignes. Elles peuvent ne pas tre multiples de 8. La conversion en temps se calcule cette fois partir de la frquence de base et de la longueur totale d'une ligne horizontale pour ce mode graphique. Enfin, il est possible de rajouter des options complmentaires la fin des lignes de mode pour prciser le fonctionnement du mode graphique, l'aide du mot-clef Flags . L'option la plus courante tant sans aucun doute Interlace , qui permet de crer des modes entrelacs. L'option Doublescan quant elle permet de faire en sorte que chaque ligne est affiche deux fois de suite. Elle permet de crer des modes graphiques de faible rsolution, qui utilisent des frquences de balayage trop faibles pour les moniteurs actuels. Vous pourrez trouver les autres options dans la page de manuel xorg.conf. La section Monitor se termine, comme toute section du fichier xorg.conf, par une ligne de fin de section : EndSection Comme vous vous en tes aperu, les donnes stockes dans les lignes de mode sont assez techniques. Quelques explications complmentaires ne seront donc pas de trop pour comprendre l'influence de ces paramtres et pour crer de nouvelles lignes de mode. Pour commencer, la frquence de base de la ligne de mode doit videmment tre gre par la carte graphique. Vous pouvez dterminer la frquence de base maximale en regardant les informations affiches par le serveur X adapt cette carte lorsqu'il dmarre. Cette information est toujours juste, mme si les lignes de mode crites dans votre fichier xorg.conf ne conviennent pas et que le serveur X ne dmarre pas correctement. La ligne contenant cette frquence maximale est semblable celle-ci : Maximum allowed dot-clock: 163.000 MHz Cette frquence de base peut tre gnre par la carte graphique, mais il n'est pas certain qu'elle soit supporte par le moniteur. En effet, les moniteurs ne sont pas capables de grer les frquences de base au del d'une certaine limite. La gamme de frquences qu'ils acceptent est ce que l'on appelle leur bande passante. La frquence de base doit donc tre dans cette bande passante, c'est--dire qu'elle doit tre infrieure la frquence maximale que le moniteur peut grer. La bande passante de votre moniteur est normalement indique dans sa fiche de spcifications techniques. Si toutefois ce n'est pas le cas, vous pouvez vous faire une ide de la frquence la plus leve de cette bande passante en regardant la rsolution maximale qu'il peut afficher et en consultant ce tableau : Tableau 10-1. Frquence maximale des moniteurs Rsolution Frquence maximale 640x480 25 800x600 36 1024x768 65 1280x1024 110 1600x1200 185 Les valeurs des frquences indiques dans ce tableau sont les plus petites valeurs constates pour l'ensemble des moniteurs grs par X.org. On peut donc supposer que votre moniteur gre ces frquences, et certainement mme de plus hautes. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 422
La rsolution du mode graphique est donne par la premire des quatre valeurs des paramtres horizontaux et verticaux dans la ligne de mode. Ainsi, dans la ligne de mode exemple donne ci- dessus, la rsolution horizontale est de 1024 et la rsolution verticale est de 768. Sachez que vous tes parfaitement libre d'utiliser des rsolutions non standards, en crivant les lignes de mode correspondantes. Dans l'exemple donn ci-dessus, il s'agit simplement du mode graphique 1024x768. Notez, encore une fois, que la profondeur de couleur n'intervient absolument pas dans les paramtres du moniteur. Ils n'interviennent que dans les composants de la carte graphique qui sont chargs de gnrer les signaux vidos pour le moniteur. La quatrime valeur des paramtres horizontaux donne la longueur totale des lignes physiques dans ce mode. Cette longueur comprend bien entendu la partie visible de l'image, mais galement la partie due au blanking horizontal. Rappelons que le blanking est la partie balaye par le faisceau alors qu'il est teint, ce qui comprend la partie balaye pendant la dure du signal de synchronisation horizontal. Dans l'exemple donn ci-dessus, le blanking a une longueur gale 1352-1024 pixels, soit 328 pixels. La quatrime valeur des paramtres verticaux fixe de mme le nombre de lignes total du mode, en tenant compte des lignes du blanking vertical. Comme vous pouvez le constater dans la ligne de mode exemple, le pixel auquel le signal de synchronisation commence n'est pas le dernier pixel visible. En effet, il y a 40 pixels d'cart entre le dernier pixel visible (en l'occurrence, le pixel 1024) et le pixel auquel le signal de synchronisation horizontal commence (le pixel 1064). Cet espace fait partie du blanking, il sert de marge pour viter les perturbations dues au retour de balayage et pour positionner l'image sur l'cran. Cette zone noire se trouve au del du bord droit de l'image affiche. Elle est suivie par la zone qui serait balaye pendant la dure du retour de balayage si le faisceau poursuivait sa route au lieu de revenir sur le bord gauche. Cette zone se termine au pixel indiqu par la troisime valeur (1240 dans notre exemple). Ce pixel est donc toujours positionn sur le point le plus droite que le moniteur peut afficher. Par consquent, la taille de la partie du blanking situ la droite de l'image est gale au numro du pixel o le signal de synchronisation horizontal se termine moins le nombre de pixels affichs. Dans notre exemple, cette partie de blanking a une taille de 1240-1024 pixels, soit 216 pixels. La taille de la partie du blanking horizontal situ la gauche de l'cran est donc logiquement gale la longueur totale de la ligne (1352) moins le pixel o le signal de synchronisation se termine (1240), ce qui donne 112 pixels. Vous voyez ainsi que l'on peut dcaler l'image vers la gauche en augmentant les valeurs de dpart et de fin du signal de synchronisation. Inversement, on peut dcaler l'image vers la droite en diminuant ces valeurs. Le mme raisonnement peut tre appliqu aux paramtres verticaux du mode graphique. Le blanking vertical comprend les lignes balayes avant et aprs le signal de synchronisation, ainsi que les lignes balayes pendant le temps o ce signal est gnr. La dernire ligne de ce signal est, encore une fois, la ligne la plus basse que le moniteur peut afficher. On peut donc dplacer l'image vers le haut ou vers le bas en jouant sur les valeurs de dpart et de fin du signal de synchronisation vertical dans les paramtres verticaux du mode graphique.
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 423
Figure 10-3. Paramtres des lignes de mode
En augmentant le nombre de pixels physiques pour chaque ligne et en conservant la mme rsolution, la largeur de l'image visible est rduite. En effet, la proportion de la partie visible de l'image sur la largeur totale de l'cran est d'autant plus faible que le nombre de pixels physiques des lignes est grand. Le mme raisonnement peut tre appliqu sur les paramtres verticaux. L'image peut donc tre agrandie ou rduite horizontalement et verticalement en jouant sur la longueur totale des lignes et sur la hauteur totale de l'image. Si l'on veut que l'image reste centre, il faut galement dcaler les points de dbut et de fin des signaux de synchronisation, pour que la proportion du blanking place de part et d'autre de l'image reste constante. Il faut bien comprendre que la modification des paramtres de synchronisation et de la longueur totale de la ligne est soumise de fortes contraintes. Il faut s'assurer que les dures des signaux de synchronisation et du blanking restent dans les limites de ce que peut accepter le moniteur. De plus, le nombre de points balays au total est videmment le produit de la longueur totale des lignes et du nombre de lignes total du mode. frquence de base fixe, cela revient dfinir le taux de rafrachissement, puisque plus il y a de pixels balayer dans chaque image, moins il est possible d'afficher d'images par seconde. Cela n'est pas gnant si vous pouvez augmenter la frquence de base. Par contre, si vous avez atteint la limite de votre carte graphique, ou la limite de bande passante de votre moniteur, vous serez limit dans le taux de rafrachissement si vous devez rduire les dimensions de l'image affiche. Vous devez vous en doutez prsent : l'criture d'une ligne de mode est un sport trs difficile. La technique utiliser est itrative. Vous pouvez tourner en rond pendant un certain temps, si vous ne savez pas vous y prendre. La premire des choses faire est de choisir la dimension de l'image que vous dsirez obtenir. Cette dimension va fixer la largeur totale et le nombre de lignes total qui seront utiliss pour ce mode graphique. Vous pouvez toujours partir des lignes de mode utilises pour les DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 424
modes graphiques VESA pour un moniteur semblable au vtre. Une fois que vous aurez ces valeurs, vous pourrez essayer de faire monter le taux de rafrachissement en augmentant la frquence de base. Vous aurez peut-tre redimensionner et recentrer l'image sur le moniteur. Les quatre contraintes respecter lorsque vous augmentez la frquence de base sont bien entendu la dure du blanking horizontal et vertical, la dure des signaux de synchronisation et les plages de frquences horizontales et verticales acceptes par votre moniteur. Il est probable que vous aurez accrotre l'cart entre les valeurs de dbut et de fin des signaux de synchronisation, car leur dure peut baisser dangereusement lorsque la frquence de base augmente. Malheureusement, cela peut vous limiter dans la possibilit de centrer l'image sur votre moniteur. Une image dont les bords ne sont pas rectilignes ou pas nets est un signe indiquant que le signal de synchronisation n'est pas suffisamment long. Si vous ne vous en sortez pas, c'est que vous essayez d'atteindre un taux de rafrachissement trop lev. Si vous dsirez fabriquer un mode graphique de rsolution non standard, vous ne trouverez pas forcment une ligne de mode pouvant servir de point de dpart. Dans ce cas, il va vous falloir crer cette ligne de mode ex-nihilo. Vous trouverez dans le fichier de documentation VideoModes.doc de X.org les explications permettant de crer une ligne de mode correcte partir des caractristiques de votre moniteur. Pour les moniteurs multisynchrones, la technique suivante peut tre utilise. La premire tape est de trouver la bande passante de votre moniteur et les plages de frquences horizontales et verticales utilisables par votre moniteur. Ces donnes sont trs souvent fournies dans la documentation du moniteur. Par exemple, pour un moniteur Sony Multiscan 100ES, ces plages de frquences sont les suivantes : Horizontales (kHz) Verticales (Hz) Frquence minimale 30 50 Frquence maximale 70 120 La deuxime tape est de choisir la rsolution que l'on dsire utiliser. Supposons que l'on veuille utiliser une rsolution intermdiaire entre 1024x768 et 800x600 sur ce type d'cran 15 pouces. Prenons par exemple 904x678. Notez que la rsolution horizontale est divisible par 8, et que la rsolution verticale est gale aux trois quarts de cette dernire. Ce rapport permet simplement de conserver la proportion de 4/3 des crans d'ordinateurs. Pour pouvez cependant choisir un autre rapport si vous le dsirez. Vous devez ensuite dterminer les longueurs totales des lignes en pixels et le nombre total de lignes, blanking compris. C'est cette partie qui est la plus difficile, elle ncessite de connatre les dures minimales des signaux de synchronisation horizontaux et verticaux. Ces donnes sont hlas rarement fournies par les fabricants. Heureusement, on peut s'en passer en pratique, car tous les crans cathodiques utilisent la mme technologie. En gnral, la longueur totale d'une ligne est gale la rsolution horizontale divise par 0,8, et le nombre total de lignes est gal la rsolution verticale augmente de 5%. Pour notre mode graphique, le calcul est donc le suivant : longueur totale des lignes = 904 pixels / 0,8 = 1130 pixels hauteur totale de l'image = 678 lignes * (1+5/100) = 678 lignes * 1,05 = 711,9 lignes. La longueur totale des lignes n'est pas multiple de 8, nous devons donc l'arrondir 1136. De mme, la hauteur totale de l'image doit tre arrondie 712 lignes. Nous disposons prsent des premires et dernires valeurs des paramtres horizontaux et verticaux de la ligne de mode. Les paramtres intermdiaires, qui fixent le dbut et la fin des signaux de retour de balayage, doivent tre choisis de telle sorte que ces signaux commencent un peu aprs le dbut du blanking et se terminent un peu avant le dbut de la gnration de l'image suivante. En pratique, on DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 425
peut couramment considrer qu'une marge de 32 40 pixels est suffisante pour les signaux de synchronisation horizontaux, et qu'il faut 0 10 lignes pour les signaux de synchronisation verticaux. L'cart entre le dbut et la fin de ces signaux doit tre suffisamment grand pour garantir leurs dures minimales exiges (mais a priori inconnues) par votre moniteur. Dans notre exemple, nous pouvons donc choisir les paramtres suivants : HTimings 904 944 1096 1136 VTimings 678 683 707 712 Il reste dterminer la frquence de base utiliser. Le but est bien entendu d'obtenir le taux de rafrachissement le plus lev possible, donc la frquence de base la plus leve, tout en restant dans les limites de la carte graphique et du moniteur. La contrainte la plus forte en gnrale est la frquence maximale de balayage horizontal. Dans notre cas, l'cran est capable de travailler 70 kHz au plus, c'est--dire d'afficher 70000 lignes par seconde. Comme notre mode graphique utilise 712 lignes physiques au total, cela nous donne un taux de rafrachissement de 70000/712, soit environ 98 images par seconde. Bien entendu, il faut contrler que cette frquence est bien dans la plage de frquences verticales du moniteur. C'est bien le cas ici, puisqu'il peut supporter des frquences allant jusqu' 120 Hz. En gnral, il faut prendre la plus petite de ces valeurs comme taux de rafrachissement initial. Une fois le taux de rafrachissement dtermin, nous devons calculer la frquence de base utiliser. Pour afficher 98 images de 710 lignes de 1125 pixels par seconde, nous calculons cette frquence de la manire suivante : 98 * 712 * 1136 = 79,26 MHz Encore une fois, il faut contrler que la carte graphique peut gnrer un signal de cette frquence et que celle-ci est bien infrieure la bande passante du moniteur. Dans le cas contraire, il faudrait encore une fois se limiter la plus petite de ces valeurs. La plupart des cartes graphiques rcentes peuvent monter au moins jusqu' 150MHz, et l'cran Sony Multiscan 100ES a une bande passante bien suprieure cette valeur. Nous pouvons donc conserver cette frquence de base, et obtenons donc la ligne de mode suivante : Mode "904x678" DotClock 79.26 HTimings 904 944 1096 1136 VTimings 678 683 707 712 EndMode Cette ligne de mode a peu de chances d'tre satisfaisante sans retouches, mais elle peut servir de point de dpart pour la recherche de la ligne de mode idale. En gnral, les paramtres tant choisis proches de l'optimum, l'image sera bien trop grande ou dforme sur les bords. Vous devrez donc faire des ajustements manuels pour vous rapprocher, petit petit, d'une ligne de mode utilisable. Vous pourrez utiliser l'utilitaire xvidtune pour cela. Cet utilitaire est un utilitaire fourni avec X.org, qui permet de modifier les dimensions et la position de l'image interactivement. Cet utilitaire fonctionne directement sous XWindow, et permet donc d'avoir un aperu de l'image avec les paramtres modifis. Vous trouverez une description plus dtaille de la manire d'utiliser xvidtune dans la Section 10.3.6. Seul le redimensionnement de l'image modifie le nombre total de lignes et leur longueur totale. En particulier, la rduction de la taille de l'image accrot la taille totale des lignes et leur nombre, ce qui entrane la baisse du taux de rafrachissement. chaque fois que vous rduisez l'image, vous pourrez recalculer le taux de rafrachissement et la frquence de base ncessaire pour atteindre ce taux, tout en veillant ne dpasser ni les limites de votre carte graphique, ni celles de votre moniteur. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 426
Ainsi, aprs quelques modifications de la ligne de mode dans xvidtune et rajustements de la frquence de base, la ligne de mode suivante peut tre obtenue : Mode "904x678" DotClock 79.82 HTimings 904 920 1104 1144 VTimings 678 679 710 712 EndMode Cette ligne de mode permet d'obtenir un affichage correct en 904 par 678, avec un taux de rafrachissement de 97.99 Hz, ce qui est plus qu'honorable. On constate que la premire ligne de mode utilisait une dure de balayage vertical trop petite, ce qui provoquait des dformations sur les bords de l'image. Si vous voulez approfondir le sujet, vous pouvez lire les formules mathmatiques donnant les relations entre les diffrents paramtres techniques influant sur la gnration des images dans l'Annexe C. Ces formules sont donnes titre indicatif, elles ne vous donneront pas les caractristiques techniques de votre cran. Encore une fois, je ne saurais trop vous recommander d'utiliser les outils fournis avec votre distribution... 10.3.4.8. Sections Modes Gnralement, les lignes de mode sont dfinies pour un moniteur donn, car l'apparence de l'image dpend des caractristiques physiques de chaque moniteur. Par consquent, ces lignes sont dfinies la plupart du temps dans les sections Monitor . Cependant, il peut tre utile de regrouper toutes les lignes de mode d'un type de moniteur donn dans une section part, afin de structurer et d'organiser le fichier xorg.conf. Pour cela, on crira des sections Modes , qui n'auront donc pas d'autre rle que de contenir une ou plusieurs lignes de mode, et qui seront rfrences dans les sections Monitor des moniteurs qui dsirent utiliser ces lignes de mode. L'intrt de regrouper toutes les lignes de mode dans une section Modes apparat clairement ds que plusieurs sections Monitor utilisent les mmes lignes de mode. Ce peut tre le cas pour des moniteurs d'un mme fabricant ou possdant des caractristiques techniques similaires. Le format des sections Monitor est trs simple, puisqu'elles ne contiennent qu'un identificateur, introduit comme l'accoutume par le mot-clef Identifier suivi du nom de la section entre guillemets, et les lignes de mode elles-mmes. La syntaxe de ces lignes est exactement la mme que celle qui est utilise dans la section Monitor et ne sera donc pas dcrite plus en dtail ici. Vous trouverez ci-dessous un exemple de section Modes : # Exemple de section Modes : Section "Modes" Identifier "Modes Standards" Modeline "640x480" 50.00 640 656 720 832 480 480 489 501 Modeline "800x600" 72.80 800 816 928 1040 600 600 610 626 Modeline "1024x768" 92.00 1024 1076 1252 1344 768 772 782 806 EnsSection 10.3.4.9. Sections Screen Les sections Screen permettent de regrouper les moniteurs et les cartes graphiques pour effectuer l'affichage des crans d'un display, et d'indiquer les modes graphiques que l'on dsire utiliser parmi tous les modes que le moniteur indiqu sait grer, pour chaque profondeur de couleur. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 427
Les sections Screen sont, comme les sections Monitor , constitues de deux parties. La premire partie spcifie les informations gnrales de l'cran, savoir essentiellement la carte graphique et le moniteur utiliser. La deuxime partie quant elle permet de prciser, pour chaque profondeur de couleur utilisable avec cet cran, les rsolutions des modes graphiques utilisables ainsi que les paramtres des rsolutions virtuelles. Voici trouverez ci-dessous un exemple de section Screen : Section "Screen" Identifier "Ecran 1" Device "Carte 1" Monitor "Moniteur 1" DefaultDepth 24 SubSection "Display" Depth 24 Modes "1024x768" "800x600" "640x480" EndSubSection SubSection "Display" Depth 16 Modes "1024x768" "800x600" "640x480" EndSubSection SubSection "Display" Depth 8 Modes "1024x768" "800x600" "640x480" EndSubSection EndSection L'option Identifier permet, comme d'habitude, de nommer la section Screen courante. Le nom doit tre indiqu entre guillemets, la suite du mot cl Identifier . C'est ce nom qui sera utilis dans les sections ServerLayout pour rfrencer les crans du display. Le mot-clef Device indique la section Device utiliser pour obtenir les informations sur la carte graphique qui gre l'affichage de cet cran. Il doit tre suivi du nom qui a t spcifi aprs le mot-clef Identifier dans la section Device correspondante. De mme, le mot-clef Monitor indique la section Monitor utiliser pour obtenir les informations sur le moniteur courant. Enfin, le mot-clef DefaultColorDepth indique la profondeur de couleur utilise par dfaut au dmarrage de XWindow. Comme nous le verrons plus loin, une autre profondeur de couleur que celle-ci pourra tre utilise en passant un argument sur la ligne de commande du serveur X. Comme vous pouvez le voir, la section Screen contient une ou plusieurs sous-sections Display . Ce sont ces sous-sections qui indiquent les paramtres de l'cran spcifiques chaque profondeur de couleur utilisable. Les sous-sections Display contiennent les informations suivantes : la profondeur de couleur considre, exprime en bits par pixels aprs le mot-clef Depth ; la liste des modes graphiques utilisables avec cette profondeur de couleur, rfrencs par le nom de leur ligne de mode, aprs le mot-clef Modes . Plusieurs modes peuvent tre spcifis, en donnant leurs noms respectifs, spars par des espaces. des informations complmentaires concernant les rsolutions virtuelles pour les modes dans lesquels la rsolution logique de l'cran est suprieure la rsolution rellement utilise. Ces paramtres indiquent la rsolution logique de l'cran virtuel, ainsi que le positionnement de l'image affiche par l'cran physique dans cet cran virtuel. Vous trouverez de plus amples informations sur ces options dans la page de manuel xorg.conf. 10.3.4.10. Sections ServerLayout Le dernier type de section, qui regroupe toutes les informations des sections vues prcdemment, est le type des sections ServerLayout . Comme leur nom l'indique, les sections de ce type fournissent les DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 428
informations concernant la disposition des crans d'un display. Cependant, dans la plupart des cas, les displays n'ont qu'un seul cran, et il est vident que la disposition de cet cran est triviale dans ce cas. Il peut exister plusieurs sections ServerLayout dans le fichier xorg.conf. En effet, ce fichier peut tre utilis par plusieurs serveurs X qui peuvent tourner simultanment sur la mme machine (que l'on ait plusieurs cartes graphiques ou non). Chaque serveur X peut donc utiliser une section ServerLayout . La section utilise par dfaut est la premire que le serveur X trouvera dans le fichier xorg.conf, mais il est possible de lui demander d'en utiliser une autre l'aide d'une option en ligne de commande. Toutefois, encore une fois, la plupart des machines ne disposent que d'un seul cran, et mme si l'on lance plusieurs serveurs X, il n'y a ici besoin que d'une seule section ServerLayout . Les sections ServerLayout indiquent surtout au serveurs X quels sont les priphriques d'entre utiliser (au moins un clavier et une souris) en plus de l'cran ou les crans du display. Ce sont donc ces sections qui dfinissent compltement un display donn. L'exemple donn ci-dessous prsente une section ServerLayout simple : Section "ServerLayout" Identifier "Serveur 1" Screen "Ecran 1" InputDevice "Clavier 1" "CoreKeyboard" InputDevice "Souris 1" "CorePointer" Option "BlankTime" "5" EndSection Les sections ServerLayout disposent d'un nom qui permet de les identifier. Ce nom est le nom qui sera utilis dans la ligne de commande du serveur X si plusieurs sections ServerLayout sont dfinies. Il doit tre indiqu, comme d'habitude, la suite du mot-clef Identifier , entre guillemets. Les sections ServerLayout doivent ensuite indiquer au moins un cran pour le display qu'elles dcrivent. Les crans sont introduits l'aide du mot-clef Screen , suivi de l'identificateur de la section Screen utiliser. Si plusieurs crans doivent tre utiliss, il est possible de spcifier la position des crans les uns par rapport aux autres l'aide d'options complmentaires, qui sont spcifies la suite de l'identificateur de l'cran. Ces options permettent de positionner les crans relativement les uns aux autres, ou de manire absolue en prcisant leurs coordonnes dans le systme de coordonnes de l'cran virtuel. Les options les plus simples utiliser sont les options RighOf, LefOf, Above et Be1ow, qui permettent d'indiquer respectivement que l'cran courant est situ droite, gauche, au dessus ou en dessous de l'cran dont l'identificateur est spcifi juste aprs. Par exemple, si l'on veut rajouter un deuxime cran la section prcdente, et que cet cran doit tre situ droite du premier cran, on ajoutera simplement la ligne suivante : Screen "Ecran 2" RightOf "Ecran 1" La section ServerLayout doit ensuite contenir au moins une rfrence un clavier et une rfrence un priphrique de pointage. Ces rfrences sont introduites l'aide du mot-clef InputDevice , suivie de l'identificateur de la section InputDevice utiliser. Le serveur X doit interprter les vnements provenant des diffrents priphriques d'entre correctement. Il faut en particulier lui indiquer quels sont les priphriques principaux l'aide de l'option CoreRoiner pour la souris principale et l'option CoreKeyboard pour le clavier principal. Seuls les priphriques d'entre principaux seront utiliss en tant que clavier et en tant que souris. Enfin, comme vous pouvez le voir dans l'exemple donn ci-dessus, il est possible d'utiliser des options spcifiques pour chaque section ServerLayout . Ces options sont les mmes que celles utilises dans la section ServerFlags . Vous pouvez donc ici spcifier une autre valeur que celles indiques DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 429
dans cette section, afin de prciser le comportement d'un serveur spcifique. Dans l'exemple donn ci- dessus, l'conomiseur d'cran a t rgl pour s'activer au bout de 5 minutes. 10.3.5. Informations utilises lors du dmarrage de X.org Les informations stockes dans le fichier de configuration xorg.conf sont utilises par X.org pour dterminer la manire dont l'affichage doit se faire. Lorsque le serveur X dmarre, il commence par rechercher la section ServerLayout qu'il doit utiliser pour dterminer les principales options du display. Par dfaut, il utilisera systmatiquement la premire section ServerLayout du fichier xorg.conf. Cependant, il est possible de lui demander d'en utiliser une autre, l'aide de l'option de ligne de commande -1ayou, suivie de l'identificateur de la section utiliser. Le serveur X initialise alors tous les crans du display et prend en charge les priphriques d'entre. Pour chaque cran, il choisit la profondeur de couleur indique dans la variable DefaultDepth de la section Screen et tente de l'utiliser. Cependant, il est possible de choisir une autre profondeur de couleur l'aide de l'option -deph, suivie de la profondeur de couleur utiliser, spcifie en bits par pixels. Remarquez que dans le cas des configurations plusieurs crans, il n'est possible de spcifier qu'une seule profondeur de couleur. Il faut donc que toutes les sections Screen des crans utiliss contiennent une sous-section Display pour la profondeur de couleur choisie. Une fois la profondeur de couleur dtermine, le serveur X choisit pour chaque cran la premire rsolution indique dans la liste des modes de la sous-section Display dont la profondeur de couleur correspond celle utilise. Il tente alors de passer l'adaptateur graphique dans ce mode graphique, en utilisant pour cela la ligne de mode correspondante cette rsolution pour piloter le moniteur. Il est possible, lorsque XWindow fonctionne, de changer cette rsolution avec les combinaisons de touches CTRL+ALT+PLUS et CTRL+ALT+MINUS (PLUS et MINUS tant les touches + et - du pav numrique). Ces deux combinaisons de touches permettent respectivement de passer d'une rsolution la suivante ou la prcdente dans la liste des modes spcifis dans la sous-section Display . Pour chaque mode choisi, la ligne de mode correspondante la rsolution de ce mode est utilise pour gnrer les signaux destination du moniteur. Note : La rsolution virtuelle de l'cran n'est pas modifie lorsqu'on change de rsolution physique. Elle est toujours gale la plus grande des rsolutions disponibles dans la section Display utilise. Seule la rsolution physique de l'affichage est modifie. Vous pourrez dplacer la zone d'affichage en dplaant la souris, et faire dfiler ainsi tout l'cran. Il est impossible de changer la profondeur de couleur utilise sans redmarrer le serveur X. Les seuls changements accepts sont ceux concernant les rsolutions graphiques listes dans la sous-section Display pour la profondeur de couleur courante. 10.3.6. Utilisation de xvidtune xvidtune est un petit utilitaire permettant de rgler les paramtres d'affichage de chaque mode graphique. Grce lui, vous pourrez ajuster la taille de l'image horizontalement et verticalement, ainsi que sa position par rapport aux bords du moniteur. xvidtune se lance simplement, en tapant son nom en ligne de commande : xvidtune Ds qu'il dmarre, il commence par afficher une fentre d'avertissement, pour vous prvenir qu'un usage par une personne non avertie peut provoquer de srieux dommages au moniteur. En effet, il permet de modifier les paramtres de synchronisation horizontale et verticale du moniteur pour ajuster DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 430
l'image. Si vous choisissez de mauvais paramtres, vous pouvez sortir des spcifications techniques de votre moniteur, ce qui pourrait fort bien l'endommager. Fort heureusement, la plupart des moniteurs modernes disposent de mcanismes de scurit qui les empchent de gnrer l'image lorsque ces paramtres sont incorrects. Par consquent, il est assez rare d'avoir des problmes avec cet utilitaire, d'autant plus qu'il effectue des contrles avant toute tentative douteuse. Vous pouvez donc valider en toute confiance, mais soyez malgr tout averti des risques potentiels. Rappelons que le serveur X peut tre arrt n'importe quel moment l'aide de la squence de touches CTRL+ALT+BACKSPACE. L'cran de xvidtune se compose de quatre parties. La partie suprieure gauche permet de rgler les paramtres horizontaux du mode graphique, savoir la largeur de l'image et sa position par rapport aux bords verticaux du moniteur. La partie suprieure droite permet de rgler les paramtres verticaux, savoir la hauteur et la position par rapport aux bords horizontaux du moniteur. La partie infrieure droite contient les informations essentielles sur le mode vido courant. Enfin, la partie infrieure gauche contient les boutons permettant de choisir les actions effectuer. Les paramtrages horizontaux et verticaux du mode graphique peuvent tre modifis trs simplement. Les boutons Left et Right permettent de centrer l'image horizontalement, et les boutons Wider et Narrower permettent d'ajuster sa largeur. De mme, les boutons Up et Down influent sur le centrage vertical, et les boutons Shorter et Taller ajustent sa hauteur. Vous pouvez tester les modifications apportes tout instant l'aide du bouton Test . Il est mme recommand d'essayer rgulirement les paramtres choisis et de procder pas pas. Lorsque les paramtres conviennent, ils peuvent tre appliqus immdiatement l'aide du bouton Apply . Si vous dsirez gnrer une ligne mode valide pour la configuration courante, par exemple afin de modifier votre fichier de configuration xorg.conf, vous pouvez cliquer sur le bouton Show . La ligne de mode sera affiche sur le terminal partir duquel vous avez lanc xvidtune. Vous pourrez alors la recopier dans le fichier xorg.conf la place de la ligne de mode du mode graphique en cours d'utilisation. Il est possible de changer le mode graphique courant en cliquant sur les boutons Next et Prev . Ils permettent de passer en revue tous les modes graphiques qui ont t enregistrs dans le fichier xorg.conf par xorgconfig ou xorgcfg. Une fois que vous aurez ajust tous les modes graphiques et que vous les aurez enregistrs l'aide du bouton Apply , vous pourrez quitter xvidtune en cliquant sur le bouton Quit . Notez que le bouton Apply valide les choix en cours, mais ne les enregistre pas dans le fichier xorg.conf. Vous devez reporter manuellement dans le fichier xorg.conf les paramtres du mode courant, tels qu'ils sont prsents par la commande Show . 10.4. Utilisation du pilote frame buffer du noyau Si par malheur votre carte graphique n'est gre par aucun des pilotes de X.org (cas relativement exceptionnel), vous serez sans doute oblig d'utiliser le pilote vesa. Ce pilote permet d'utiliser toutes les cartes compatibles avec le standard VESA 2.0 (c'est--dire la plupart des cartes graphiques, mais il existe des exceptions notables). Il existe une alternative ce pilote, qui se base sur les fonctionnalits frame buffer du noyau de Linux. Cette fonctionnalit permet d'utiliser Linux compltement en mode graphique, en fournissant un accs linaire direct la mmoire vido de la carte graphique grce au fichier spcial de priphrique /dev/fb0. Il existe un pilote X.org pour le frame buffer du noyau, qui permet donc de dmarrer le serveur X en s'appuyant compltement sur le noyau. L'avantage du frame buffer du noyau est que mme les consoles en mode texte feront leur affichage en mode graphique (cela est aussi un inconvnient du point de vue des performances). En revanche, vous ne pourrez pas changer de rsolution une fois que le systme aura dmarr. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 431
Pour accder la mmoire vido, le noyau se base galement sur l'interface de programmation du standard VESA 2.0, qui est gre par le BIOS de la plupart des cartes graphiques rcentes. Cela signifie galement que vous ne disposerez pas d'acclration matrielle en gnral, sauf pour quelques cartes graphiques courantes reconnues par le noyau. 10.4.1. Configuration du noyau et installation du pilote La mise en uvre du pilote pour le frame buffer se fait videmment dans la configuration du noyau. Les options activer sont toutes dans le menu Console drivers . En plus de l'option VGA text console , vous devez imprativement activer Video mode selection support . Cette option vous permettra de choisir le mode VESA utiliser lors du dmarrage de l'ordinateur. Vous devrez galement cocher l'option Support for frame buffer devices (EXPERIMENTAL) (cette option ne vous sera propose que si vous avez valid l'option Prompt for development and/or incomplete code/drivers du menu Code maturity level options ). Les options suivantes du gestionnaire du frame buffer du noyau devront galement tre actives : VESA VGA graphics console (cette option permet d'utiliser un mode graphique VESA indiqu au dmarrage pour l'affichage de la console) ; Advanced low level driver options (NEW) (cette option vous permet de prciser la structure de la mmoire vido dans les diffrents modes graphiques utiliss avec le frame buffer) ; 8 bpp packed pixels support , 16 bpp packed pixels support , 24 bpp packed pixels support et 32 bpp packed pixels support (ces options correspondent aux diffrentes structures de la mmoire vido qui sont utilises par les modes graphiques VESA) ; Select compiled-in fonts (NEW) (cette option vous permet de choisir les polices de caractres qui seront utilises par la console) ; VGA 8x8 font et VGA 8x16 font (ces deux polices sont les polices standards utilises par la console). Il faut ensuite vrifier que le fichier spcial de priphrique /dev/fb0 a t cr par le programme d'installation de votre distribution. Si ce n'est pas le cas, vous devez le crer l'aide de la commande mknod. Le numro de priphrique majeur de ce fichier est 29. Le numro mineur utiliser est le numro du priphrique. Par exemple, le fichier spcial de priphrique /dev/fb0 porte les numros 29 et 0, le fichier /dev/fb1 porte les numros 29 et 1, etc. Ces fichiers sont tous de type caractre, la ligne de commande pour crer un de ces fichiers est donc la suivante : mknod fbn c 29 n
o n est le numro du fichier spcial de priphrique crer. Il est galement recommand de crer un lien symbolique /dev/fb vers /dev/fb0 afin d'assurer la compatibilit avec de vieux programmes utilisant ce nom pour accder au fichier spcial de priphrique du gestionnaire du frame buffer du noyau. Une fois ces oprations ralises, vous devez compiler le noyau et l'installer, en suivant la mthode dcrite dans la partie dcrivant la compilation du noyau. Lors du redmarrage du systme, vous pourrez passer l'option suivante au noyau pour prciser le mode graphique VESA utiliser : vga=mode
o mode est le numro du mode graphique dsir. Les numros valides sont indiqus dans le tableau donn ci-dessous :
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 432
Tableau 10-2. Numros des modes graphiques VESA Couleurs Rsolution 640x480 800x600 1024x768 1280x1024 1600x1200 256 769 771 773 775 796 32768 784 787 790 793 797 65536 785 788 791 794 798 16,8M 786 789 792 795 799 Si tout se passe correctement, votre systme devrait dmarrer dans le mode graphique indiqu et afficher le logo de Linux (un pingouin nomm Tux , pour ceux qui ne le sauraient pas encore). Lorsque vous aurez dtermin le mode graphique qui vous convient, vous pourrez modifier le fichier de configuration de Lilo et spcifier le numro de ce mode dans la ligne vga=... . De cette manire, votre systme redmarrera automatiquement dans ce mode graphique. 10.4.2. Configuration du serveur X Les manipulations prcdentes n'ont pas grand intrt si vous ne dsirez travailler qu'avec la console. En effet, l'affichage en mode graphique est beaucoup plus lent que l'affichage en mode texte, et l'affichage du pingouin Tux au dmarrage ne vous apportera pas grand chose. C'est pour cela que l'tape suivante est normalement de configurer le serveur X de X.org pour le pilote frame buffer, afin d'utiliser l'environnement graphique XWindow et son systme de fentrage. La configuration du serveur X est lmentaire. Il faut avant tout s'assurer que l'on dispose bien du pilote permettant au serveur X d'utiliser l'interface /dev/fb0. Ce pilote se nomme fbdev, et utilise un autre module spcifique au systme d'exploitation nomm fbdevhw. Il faut ensuite modifier ou crer le fichier xorg.conf pour utiliser ce pilote. Les seules sections modifier pour utiliser le pilote frame buffer sont la section Device et la section Screen . La section Device est rduite sa plus simple expression, puisque tous les paramtres sont fixs par le mode VESA choisi au dmarrage d'une part, et parce que le serveur X ne saurait pas les exploiter d'autre part. Il suffit donc simplement d'indiquer que le pilote utiliser est le pilote fbdev, et de donner l'adresse de la carte vido sur le bus l'aide du mot-clef BusID : Section "Device" Identifier "Carte 1" Driver "fbdev" BusID "PCI:1:5:0" EndSection
Vous pourrez dterminer l'adresse de votre carte graphique l'aide de la commande lspci, ou en demandant au serveur X de scanner les bus PCI en lui passant l'option -scanpci en paramtre :
X.org -scanpci La section Screen est elle aussi trs simplifie, puisque le seul mode graphique utilisable est le mode choisi au dmarrage de la machine. La liste des modes utilisables peut donc tre franchement omise, ou se rduire la valeur spciale default : Section "Screen" Device "Carte 1" DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 433
Monitor "Moniteur 1" DefaultDepth 16 SubSection "Display" Depth 16 Modes "default" EndSubSection EndSection Notez qu'il est impratif que la profondeur de couleur de la sous-section Display soit la mme que celle du mode VESA indiqu au dmarrage. Prenez garde ne pas utiliser une profondeur de couleur trop leve, car cela dgraderait encore un peu plus les performances. Par ailleurs, comme aucun mode n'est spcifi dans la section Screen , les lignes de mode des sections Monitor sont prsent facultatives. Ces sections peuvent donc tre simplifies galement. Une fois ces modifications ralises, vous devrez pouvoir dmarrer XWindow simplement avec la commande startx. Vous disposerez alors de toutes les fonctionnalits de XWindow, avec des performances quelques peu infrieures celles que vous auriez avec un serveur X adapt votre carte graphique. Il est conseill de suivre l'actualit de X.org afin de savoir si un tel serveur est en cours de dveloppement et, si oui, d'en rcuprer une version finale ds que possible. 10.5. Configuration des terminaux X Nous avons vu dans le chapitre de configuration du systme de base que la connexion des utilisateurs se faisait par l'intermdiaire d'un terminal. La plupart des terminaux sont en mode texte, mais il est galement possible d'utiliser des terminaux graphiques sous XWindow. Les terminaux de ce type sont logiquement appels terminaux X . Si le niveau d'excution par dfaut de votre systme est le niveau associ au dmarrage sous XWindow (ce niveau est en gnral 3, 4 ou 5 selon les distributions), XWindow est lanc ds le dmarrage de la machine et la demande de connexion se fait via un cran graphique. Dans ce cas, vous vous connecterez directement par l'intermdiaire de ce terminal X. Le principe de fonctionnement des terminaux X n'est pas exactement le mme que celui que nous avons vu pour les terminaux virtuels (voir la Section 6.8). En effet, les terminaux X ne sont pas grs par les processus getty et login classiques, mais par un programme spcifique nomm xdm (abrviation de l'anglais X Display Manager ). 10.5.1. Principe de fonctionnement de xdm Contrairement ce qu'il fait avec les processus getty, init ne lance qu'un script d'initialisation de XWindow lorsqu'il passe dans le niveau d'excution correspondant. Ce script a pour tche essentiellement le dmarrage du dmon xdm. C'est ce dmon qui est en charge de grer les connexions sur tous les serveurs X qu'il peut trouver, en proposant la fentre de login et en permettant ainsi l'utilisateur de s'identifier et s'authentifier. En gnral, xdm lance lui-mme le serveur X de la machine locale, et surveille son excution. Lorsque l'utilisateur se dconnecte, le serveur X se rinitialise, et xdm affiche une nouvelle fentre de connexion. Cependant, xdm est galement capable d'utiliser des serveurs X distants (qui sont donc dj lancs), afin de permettre la connexion d'utilisateurs sur des terminaux X dports. Enfin, il est possible de le configurer pour qu'il se signale sur un rseau, afin que les serveurs X fonctionnant sur ce rseau puissent lui demander une connexion. Les serveurs X capable de se connecter xdm de cette manire doivent comprendre le protocole XDMCP (abrviation de l'anglais XDM Control Protocol ). Comme on le voit, la souplesse de ce mcanisme est tout simplement exceptionnelle. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 434
Note : Pratiquement, le processus xdm se duplique pour chaque terminal X dont il gre la connexion. Ainsi, chaque processus xdm propose la connexion et surveille la dconnexion de l'utilisateur sur un terminal X donn. Tous les processus xdm sont lancs par le processus xdm initial qui a t lanc par les scripts de changement de niveau d'excution. Ce mcanisme est donc compltement transparent pour l'utilisateur. La plupart des environnements graphiques modernes (comme KDE et GNOME) fournissent leur propre gestionnaire de display. Ces gestionnaires sont toutefois compatibles avec xdm, et leur configuration se fait de la mme manire. 10.5.2. Configuration de xdm Le comportement de xdm est compltement dfini dans ses fichiers de configuration, qui sont en gnral placs dans le rpertoire /etc/X11/xdm/. Ces fichiers de configuration dcrivent chacun un des aspects du comportement de xdm. Le fichier de configuration principal est le fichier xdm-config, qui contient les rfrences sur les autres fichiers de configuration. Notez que si vous utilisez l'environnement de bureau KDE et son gestionnaire de connexion kdm, les fichiers de configuration utiliser sont ceux de kdm. Bien qu'ils soient strictement compatibles avec ceux de xdm, ces fichers se situent dans le rpertoire de configuration de kdm. Ce rpertoire est gnralement le sous-rpertoire share/config/kdm/ du rpertoire d'installation de KDE. 10.5.2.1. Serveurs X locaux La dfinition des serveurs X qui n'utilisent pas le protocole XDMCP et que xdm doit prendre en charge directement est ralise dans le fichier de configuration rfrenc par la ligne DisplayManager.servers du fichier xdm-config. Par dfaut, ce fichier est le fichier /etc/X11/xdm/Xservers. Il contient une ligne par serveur, chaque ligne ayant la syntaxe suivante : display type [commande]
o display est le nom du display utiliser, type est le type de serveur X (serveur local ou distant), et commande est la commande excuter pour lancer le serveur s'il est local. Le display indiqu sera celui qui sera utilis pour dfinir la variable d'environnement ISRLAY, et doit donc utiliser la syntaxe normale des displays. Les deux types de serveurs disponibles sont local , pour les serveurs de la machine locale que xdm doit lancer lui-mme, et foreign , pour les serveurs distants sur lesquels xdm doit afficher la fentre de demande de connexion (ils doivent donc tre dj lancs). La ligne de commande utiliser pour le lancement du serveur ne doit tre spcifie que pour les serveurs de type local . Les serveurs X peuvent prendre un certain nombre de paramtres en ligne de commande pour leur dmarrage. Vous en trouverez la liste complte dans la page de manuel Xserver et dans la page de manuel X.org. Les options les plus intressantes dans le cadre du lancement du serveur X par xdm sont celles permettant de dfinir le display que le serveur aura en charge et le terminal virtuel qu'il devra utiliser pour effectuer son affichage. Notez bien que le display doit tre le mme que celui donn xdm. Ces deux options sont passes directement la suite du nom de l'excutable du serveur X lancer : /usr/bin/X display vtNN
o vtNN est le nom du terminal virtuel utiliser (vt01 pour /dev/tty01, vt02 pour /dev/tty02, etc.). Ainsi, si l'on veut faire en sorte que xdm lance automatiquement deux sessions X sur les terminaux virtuels 11 et 12, en leur affectant respectivement les displays :0.0 et :1.0, on devra placer ces deux lignes dans son fichier de configuration Xservers : DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 435
:0 local /usr/bin/X :0 vt11 :1 local /usr/bin/X :1 vt12 Note : La spcification du terminal virtuel utiliser est facultative. Si aucun terminal n'est indiqu, le serveur X utilisera le premier terminal qu'il trouvera. Cependant, il est plus sr de toujours indiquer le terminal utiliser, car le noyau ne cre les terminaux qu' la demande, lorsqu'un processus dsire y accder. Or les serveurs X ne cherchent pas en crer de nouveau. Si tous les terminaux virtuels existants sont dj utiliss, le serveur X tentera donc de s'en approprier un, sans se proccuper du programme qui l'utilise ce moment. Le fait d'indiquer manuellement le terminal utiliser vous vitera donc des problmes assez curieux, tels que ceux qui peuvent survenir si les terminaux utiliss par les serveurs X le sont dj par un getty par exemple. De plus, cela permet galement d'viter, si on lance plusieurs serveurs X sur la mme machine, qu'ils n'accdent ensemble au mme terminal virtuel lors de leur initialisation. Il est recommand par ailleurs de basculer sur chaque terminal virtuel sur lequel un serveur X est lanc avant de se connecter afin de les forcer crer leur terminal. En effet, si vous ne procdez pas ainsi, il est possible que vous ayez le temps de vous connecter dans une session X avant que les autres terminaux X n'aient fini de s'initialiser. Lorsque ceux-ci dmarreront, ils changeront le terminal virtuel courant et l'affichage de votre bureau risque d'tre corrompu. Si cela se produit, ne vous inquitez pas : votre session X n'a pas plant. Assurez-vous seulement que vous vous trouvez bien sur le bon terminal virtuel, et faites en sorte que l'cran soit rafrachi (par exemple, changez de bureau virtuel ou dplacez une fentre sur l'cran). Remarquez galement que les fichiers de configuration fournis avec X.org ne prvoient pas l'utilisation de plus de deux sessions X par dfaut. Si d'aventure vous dsirez en utiliser plus, vous devrez complter le fichier de configuration xdm-config avec les lignes suivantes : DisplayManager._2.authorize: true DisplayManager._3.authorize: true etc. Chaque ligne indique que le display correspondant (:2 pour DisplayManager._2.authorize , etc.) doit utiliser les mcanismes de scurit de XWindow. Nous verrons ces mcanismes dans la section suivante. Mfiez-vous enfin de la consommation mmoire requise par chaque session X. Les serveurs X sont des programmes gourmands en mmoire, car ils doivent manipuler des images. Les performances du systme risquent donc de se dgrader sensiblement si vous lancez plusieurs serveurs X. N'oubliez pas qu'aprs tout, XWindow est un systme de fentrage et que la plupart des gestionnaires de fentres X donnent la possibilit d'utiliser des bureaux virtuels. En pratique, deux sessions X devraient suffire, afin de se connecter sous deux utilisateurs diffrents (un utilisateur normal et l'utilisateur root par exemple). Enfin, notez que le changement d'un terminal X un autre terminal virtuel peut provoquer quelques problmes en ce qui concerne l'tat du clavier. En effet, l'affichage des diodes (Verrou numrique et Majuscule en particulier) n'est pas rtabli correctement, mme si le clavier continue fonctionner correctement. Cela peut surprendre quelque peu la premire fois que l'on rencontre ce problme. Il suffit d'appuyer deux fois de suite sur les touches Verr Num et Caps Lock (c'est--dire la touche de verrouillage des majuscules) afin de rtablir l'tat correct de ces diodes. Remarquez galement que les serveurs X mmorisent l'tat des terminaux virtuels lors de leur dmarrage, et neutralisent chaque basculement vers un terminal en mode texte les ventuels changements de police de caractres. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 436
10.5.2.2. Serveurs X utilisant XDMCP Comme nous l'avons dit plus haut, xdm est galement capable de se signaler sur un rseau l'aide du protocole XDMCP, afin de permettre aux serveurs X distants de raliser une connexion sur la machine o il est lanc. De cette manire, le lancement d'un serveur X sur une machine du rseau permettra d'obtenir la fentre de connexion votre machine Linux. xdm est capable de rpondre aux demandes de connexion directes des serveurs X distants (remarquez que dans ce cas, xdm est serveur de connexions pour les serveurs X des postes clients. Faites bien attention la terminologie client/serveur ici !). Cela suppose que chaque poste client connaisse l'adresse des machines qui utilisent xdm. Cette information peut faire partie de la configuration du poste client, mais elle peut galement tre dtermine dynamiquement. Pour cela, le serveur X du poste client met une requte XDMCP en mode broadcast sur le rseau (c'est--dire destination de tout le monde). Chaque machine sur laquelle xdm fonctionne rpondra ce client, et le serveur X proposera ainsi la liste des machines sur lesquelles une connexion est ralisable via xdm. Ainsi, l'utilisateur du poste client pourra choisir le serveur sur lequel il dsire se connecter, et le processus xdm de ce serveur lui enverra la fentre de login. En ralit, tous les serveurs X ne sont pas capables de grer les rponses reues de plusieurs processus xdm provenant de plusieurs machines la suite de l'envoi d'une requte en mode broadcast. Par ailleurs, il n'est pas toujours possible d'utiliser le mode broadcast, car les paquets de ce type peuvent trs bien ne pas tre routs lors de la traverse d'un passerelle. Par consquent, xdm offre galement la possibilit d'interroger les machines du rseau local en rponse une requte de connexion indirecte. Le serveur X reoit en rponse le rsultat de la requte effectue par broadcast, et l'utilisateur peut choisir la machine laquelle il dsire accder. La configuration de xdm pour le protocole XDMCP se fait dans le fichier identifi par la ligne DisplayManager.accessFile du fichier xdm-config. Par dfaut, le fichier ainsi rfrenc est le fichier Xaccess du rpertoire /etc/X11/xdm/. La syntaxe de ce fichier est trs simple. Il contient des rgles indiquant le comportement de xdm lorsqu'il reoit une requte de connexion de la part d'un serveur X. Ces rgles sont dfinies pour des groupes de machines. Les machines sont identifies par leur nom ou leur adresse IP, plusieurs machines pouvant tre spcifies par une mme rgle grce aux caractres gnriques classiques '*' et '?'. Il est galement possible d'exclure une machine ou un groupe de machines en prfixant le nom du caractre de ngation '!'. Il existe quatre types de lignes dans le fichier Xaccess. Le premier type permet simplement d'indiquer que les connexions directes ou en mode broadcast provenant d'une machine sont toutes acceptes. Ce sont les lignes les plus simples, puisqu'il suffit simplement d'indiquer la machine ou le groupe de machines. Par exemple, la ligne suivante : *.localnet.org
indique que les demandes de connexion provenant de toutes les machines du domaine localnet.org sont acceptes. Il est possible de faire en sorte que xdm ne rponde qu'aux demandes de connexion directes simplement en ajoutant le mot cl NOBROADCAST la suite de la ligne. Ainsi, si la machine termX3.localnet.org doit pouvoir se connecter directement, mais ne doit pas recevoir de rponse de notre machine, on ajoutera la ligne suivante dans le fichier Xaccess :
termX3.localnet.org NOBROADCAST Le deuxime type de ligne permet de spcifier le comportement de xdm pour les demandes de connexion indirectes. Ces lignes contiennent toujours le nom de la machine ou du groupe de machines, mais ce nom est suivi de la liste des machines auxquelles xdm doit faire suivre la demande de connexion du serveur X. Par exemple, supposons que la machine termX2.localnet.org ne soit pas DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 437
capable d'effectuer des requtes en mode broadcast, et que l'on veuille qu'elle puisse se connecter sur les serveurs s5.localnet.org , s11.localnet.org et s13.localnet.org . On devra alors ajouter la ligne suivante dans le fichier Xaccess : termX2.localnet.org s5.localnet.org s11.localnet.org \ s13.localnet.org Le troisime type de ligne permet de lancer un programme nomm chooser et qui va proposer la liste des serveurs l'utilisateur du serveur X qui demande se connecter. Ce programme est trs utile pour les serveurs X qui ne sont pas capables de proposer ce choix l'utilisateur. La syntaxe de ces lignes est trs simple, puisqu'il suffit de faire prcder les noms des serveurs par le mot cl CHOOSER. Si l'on reprend l'exemple prcdent, la ligne de configuration pour le terminal X termX2 deviendrait : termX2.localnet.org CHOOSER s5.localnet.org s11.localnet.org s13.localnet.org La liste des serveurs qui suit peut tre assez longue, et il peut tre utile de faire en sorte que le programme chooser effectue une requte en mode broadcast pour le compte du serveur X qui n'en n'est pas capable. Il suffit pour cela de remplacer la liste des serveurs par le mot cl BROADCAST . Ainsi, la ligne suivante : termX4.localnet.org CHOOSER BROADCAST
signifie simplement que lorsque le serveur X de la machine termX4.localnet.org se connecte au processus xdm local, celui-ci lance le programme chooser. Ce dernier lance une requte en broadcast sur le rseau afin de dterminer la liste des machines excutant le processus xdm. Une fois qu'il a obtenu cette liste, il l'affiche sur le display gr par le serveur X qui s'est connect. De cette manire, l'utilisateur peut choisir la machine sur laquelle il va se connecter. Le serveur X est mis en relation avec le processus xdm de cette machine, et la fentre de login est enfin propose l'utilisateur. Le quatrime type de ligne permet de dfinir des macros de remplacement pour grer les listes de noms de machines plus simplement. La dfinition d'une macro se fait avec la syntaxe suivante : %nom liste
o nom est le nom de la macro dfinir, et liste est la liste des machines qu'elle reprsente. Il est possible d'utiliser des macros dans les dfinitions de macros. Note : Le protocole XDMCP utilise le port 117 du protocole UDP. Vous pourrez donc ajouter la ligne suivante dans votre fichier /etc/services, si elle ne s'y trouve pas dj : xdmcp 117/udp Notez galement que vous ne pourrez pas tester votre configuration en utilisant l'interface rseau loopback. En effet, xdm vrifie la validit des adresses sources des paquets qu'il reoit, et il refuse par dfaut tout paquet provenant de l'adresse 127.0.0.1. Si vous dsirez malgr tout utiliser XDMCP sans rseau rel, vous pourrez utiliser l'interface rseau dummy. Cette interface peut tre cre en activant l'option Dummy net driver support du menu Network device support . 10.5.2.3. Paramtrage du serveur X pour utiliser le protocole XDMCP L'criture du fichier Xaccess ne reprsente que la partie serveur du travail de configuration du protocole XDMCP. En effet, il faut encore indiquer aux serveurs X distants quel processus xdm ils doivent tenter de se connecter lors de leur dmarrage. Bien entendu, cela dpend fortement du serveur DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 438
X utilis, qui peut tre quelconque. Par exemple, le serveur X peut trs bien fonctionner sur une machine Windows. Par consquent, seule la syntaxe des serveurs de X.org sera dcrite ici. Les serveurs X de X.org utilisent des options en ligne de commande pour dterminer comment ils doivent se comporter leur dmarrage. Lorsqu'ils sont lancs directement par xdm (c'est--dire lorsqu'ils sont lancs en local, avec les options indiques dans le fichier Xservers), ils n'ont pas besoin d'options spcifiques car ils n'utilisent pas XDMCP dans ce cas. En revanche, si l'on dsire les lancer manuellement (ou dans un script d'initialisation), on devra utiliser l'une des options suivantes : -query permet de demander une connexion directe sur une machine donne. Le nom de la machine doit tre spcifi la suite de l'option ; -indirect permet de demander une connexion indirecte sur une machine donne. Le nom de cette machine doit tre spcifi la suite de l'option. La liste des machines qui a t indique dans le fichier Xaccess sera retourne, ou bien le programme chooser sera lanc ; -broadcast permet de demander au serveur X d'effectuer une requte de connexion en broadcast sur le rseau. Les serveurs de X.org ne sont pas capables de proposer une liste de machines l'utilisateur. Ils prennent systmatiquement la premire machine qu'ils trouvent. Vous ne contrlerez donc pas la machine sur laquelle la connexion sera faite si vous utilisez l'option -broadcas. C'est pour cela qu'il est recommand d'utiliser le programme chooser dans le fichier de configuration Xaccess et de configurer les serveurs pour faire des demandes de connexion indirectes. 10.5.2.4. Fichiers d'initialisation de sessions xdm fournit la possibilit d'effectuer des actions lorsque divers vnements concernant la session XWindow en cours ont lieu. Par exemple, il est possible de raliser un traitement particulier pour l'initialisation de l'environnement d'un serveur X, pour fixer l'environnement de l'utilisateur qui se connecte, et pour effectuer le mnage lorsqu'il ferme sa session. Toutes ces actions sont effectues dans des scripts qui sont rfrencs par des lignes du fichier xdm-config. La ligne DisplayManager.DISPLAY.setup , o DISPLAY est le nom du display (_0 pour :0, _1 pour :1, etc.), rfrence un script qui est excut au nom de l'utilisateur root avant que la fentre de login ne soit prsente. Le fichier par dfaut utilis par X.org est le fichier /etc/X11/xdm/Xsetup. C'est donc dans ce script que vous pourrez mettre des commandes d'initialisation spcifiques pour prparer le login. De la mme manire, la ligne DisplayManager.DISPLAY.startup rfrence le script Xstartup par dfaut. Ce fichier est excut sous le compte root juste aprs l'authentification de l'utilisateur. C'est ici que l'on pourra par exemple enregistrer la connexion de l'utilisateur dans le systme. La ligne DisplayManager.DISPLAY.session rfrence quant elle le script Xsession, qui est excut aprs Xstartup, mais au nom de l'utilisateur cette fois. Ce script prend gnralement en charge le lancement des programmes ncessaires la gestion de la session de l'utilisateur. Par exemple, il est possible d'y placer les commandes de lancement du gestionnaire de fentres ou du gestionnaire de bureau. Enfin, la ligne DisplayManager.DISPLAY.reset rfrence le script Xreset du rpertoire /etc/X11/xdm/, qui est excut au nom de l'utilisateur root lorsque la session X se termine. Vous pouvez donc excuter les tches ncessaires pour faire le mnage cet endroit, comme par exemple le dsenregistrement de la connexion de l'utilisateur dans le systme. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 439
Tous ces scripts sont lancs sans paramtres, sauf le script Xsession. Ce script peut en effet recevoir des paramtres fournis par le gestionnaire de connexions (xdm, kdm, gdm ou autre), qui permettent de reprsenter les choix que l'utilisateur a fait pour sa connexion dans la fentre de login. Le premier paramtre de ce script est normalement le nom du gestionnaire de fentres utiliser. Par exemple, pour l'environnement de bureau KDE, le programme qui doit tre excut est le script startkde, alors que pour l'environnement de bureau Gnome, il s'agit du programme gnome-session. Notez que le nom failsafe rfrence un mode dgrad, et n'est normalement utilis que quand les autres gestionnaires de fentres disponibles ne se lancent pas correctement. Les scripts lancs au nom de l'utilisateur root (Xsetup et Xreset) sont excuts dans un environnement minimal. La valeur de la variable d'environnement RATH pour ces scripts est dtermine par la valeur de la ligne DisplayManager.DISPLAY.systemPath du fichier de configuration xdm-config. De mme, le script Xsession est excut avec la variable d'environnement RATH fixe la valeur spcifie par la ligne DisplayManager.DISPLAY.userPath du fichier xdm-config. Si vos scripts de gestion des connexions ne fonctionnent pas correctement, c'est sans doute un problme li l'environnement. En pratique, ces fichiers de scripts de gestion des connexions sont fournis par votre distribution et vous ne devriez donc pas avoir y toucher. Vous pouvez toutefois y faire quelques modifications si vous estimez que les actions effectues ne vous conviennent pas. En particulier, certaines distributions n'enregistrent pas l'utilisateur qui commence une nouvelle session. Cette opration est ncessaire, parce que xdm n'est pas un processus de login classique et ne le fait pas automatiquement (il n'utilise pas de terminal pour faire la connexion). Vous aurez pour cela utiliser l'utilitaire sessreg fourni avec XWindow. Cet utilitaire permet d'enregistrer un utilisateur avec l'option -a et de le supprimer avec l'option -d. Vous devrez donc typiquement placer une ligne telle que celle-ci : sessreg -a -l $DISPLAY -x /etc/X11/xdm/Xservers $LOGNAME
dans le fichier Xstartup, afin d'enregistrer les utilisateurs qui commencent une session XWindow, et une autre ligne telle que celle-ci :
dans le fichier Xreset, afin de les supprimer lorsqu'ils terminent cette session. 10.5.3. Paramtrage des terminaux X La configuration des terminaux X comprend un certain nombre de points qui vont de l'ajustement du nombre de couleurs et de la rsolution la disposition du clavier, en passant par les paramtres de la souris et l'conomiseur d'cran. Heureusement, nous avons dj vu comment nous pouvions contrler un grand nombre de ces paramtres. Par exemple, la rsolution graphique, ainsi que le nombre de couleurs et la disposition du clavier, sont dfinis dans le fichier de configuration gnral de X.org xorg.conf. Nous verrons donc ici comment modifier des paramtres qui tiennent plus de l'ergonomie que de la configuration de base. 10.5.3.1. La commande xset Ces paramtres peuvent souvent tre fixs lors du dmarrage du serveur X, ou dynamiquement avec la commande xset. Les paramtres que l'on peut fixer avec xset sont trs nombreux, et seuls les plus utiles seront dcrits ici. Veuillez consulter la page de manuel xset pour plus de dtails. L'option dpms permet de fixer les temps d'attente avant la mise en veille du moniteur. Sachez que la mise en veille constitue de loin le meilleur conomiseur d'cran, et que les conomiseurs logiciels du type ballet de lignes sont trs jolis mais ne servent rien. Pire, ils peuvent ralentir la machine, ce qui DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 440
est inadmissible si vous l'utilisez en tant que serveur (heureusement, les conomiseurs d'cran logiciels se lancent gnralement avec des priorits trs faibles, afin de ne pas perturber les autres processus). Cette option prend de un trois paramtres, qui reprsentent respectivement le temps avant le passage en mode conomie d'nergie du moniteur, le temps avant le passage en mode veille, et le temps avant l'extinction complte du moniteur. Ces temps sont exprims en secondes, la valeur nulle permettant de dsactiver cette fonctionnalit. Ainsi, la commande suivante : xset dpms 0 0 600
permet d'teindre l'cran au bout de dix minutes d'inactivit. Ces temps peuvent galement tre fixs dans le fichier de configuration xorg.conf, o ils sont exprims en minutes, l'aide des mots cls StandbyTime , SuspendTime et OffTime . Ces mots cls doivent tre placs dans la section ServerFlags du fichier de configuration. Cependant, les serveurs X n'activent ces fonctionnalits que pour les moniteurs capables de grer le standard DPMS. Ces moniteurs doivent donc tre signals l'aide de la ligne suivante : Option "DPMS" "On"
dans la section Monitor qui les dfinit. Note : Les valeurs des temps d'attente que vous pouvez fixer dans le fichier de configuration xorg.conf peuvent tre crases par les valeurs dfinies dans la configuration de votre gestionnaire de bureau. Vous devrez donc vrifier ces paramtres si les modifications que vous faites dans le fichier xorg.conf ne sont pas prises en compte ou si l'conomie d'nergie reste dsactive malgr la prsence de l'option RMS dans la section Monitor de votre moniteur. Une autre option importante de la commande xset est l'option fp, qui permet d'ajouter et de supprimer des chemins de rpertoires de polices de caractres. Pour ajouter un rpertoire, il suffit d'utiliser l'option +fp et de faire suivre le chemin de ce rpertoire. La suppression d'un rpertoire se fait de la mme manire, avec l'option -fp. Par exemple, pour ajouter le rpertoire de polices /usr/share/fonts/100dpi/ la liste des rpertoires de polices du serveur, il suffit de taper la commande suivante : xset +fp /usr/share/fonts/100dpi De plus, comme nous l'avons dj vu plus haut, les chemins des rpertoires de polices de caractres peuvent tre fixs statiquement l'aide du mot cl FontPath de la section Files du fichier de configuration xorg.conf. Enfin, l'option q de xset vous permettra de visualiser l'ensemble des paramtres en cours d'utilisation. 10.5.3.2. Configuration de la disposition du clavier Nous avons vu dans le chapitre de configuration du systme de base le fonctionnement du clavier sous Linux. Les applications qui lisent les donnes provenant du pilote clavier de la console peuvent travailler au niveau ASCII, au niveau keycode ou au niveau scancode. Les serveurs X font partie des logiciels qui prfrent la troisime solution, ce qui signifie qu'ils interprtent eux-mmes le flux de scancodes provenant du clavier. La raison de ce choix est que X.org est une implmentation portable du systme XWindow pour PC. Cela signifie qu'il est prvu pour fonctionner sur plusieurs systmes d'exploitation de type Unix et DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 441
fonctionnant sur l'architecture compatible PC. Par consquent, il ne pouvait pas se baser sur des keycodes, qui sont videmment dpendant du systme utilis. L'inconvnient en revanche est que cela impose que les serveurs X dfinissent un mcanisme parallle de gestion des touches du clavier, qui permette de modifier la disposition des touches et de dfinir le type de clavier utilis. Plusieurs mcanismes sont utilisables, cependant, il semble que ce qui est le plus utilis actuellement est le mcanisme Xkb (abrviation de l'anglais X KeyBoard ). Ce mcanisme permet de dfinir un grand nombre de donnes concernant le clavier, puisqu'outre l'emplacement des touches, il fournit la gomtrie du clavier. Ainsi, toute application le dsirant peut dterminer la forme du clavier et en dessiner une reprsentation fidle. Malheureusement, le protocole Xkb ne prvoit pas la possibilit de dfinir de nouvelles touches avec leurs scancodes. La gestion des codes reus du clavier n'est en effet pas paramtrable. Par consquent, il est impossible d'utiliser des claviers exotiques si ceux-ci ne sont pas reconnus par X.org. Le protocole Xkb utilise les fichiers de configuration stocks dans le rpertoire /etc/X11/xkb/. Ce rpertoire contient un certain nombre de sous-rpertoires, dont chacun est relatif un des aspects de la configuration du clavier. Le rle des principaux sous-rpertoires est dtaill dans le tableau suivant : Nom du rpertoire Fonction geometry/ Contient les fichiers de description de la gomtrie des claviers. Ces fichiers peuvent tre utiliss par les applications pour obtenir une reprsentation graphique du clavier. keycodes/ Contient les fichiers de dfinitions des keycodes X du clavier. Les keycodes X ont la mme fonction que les keycodes de Linux : donner un nom unique chaque touche. Cependant, ils diffrent des keycodes de Linux en ce sens qu'ils ne sont pas dfinis partir des scancodes du clavier, mais partir de codes numriques gnrs par le serveur X. Ce mcanisme suppose que le serveur X connaisse tous les scancodes envoys par les claviers. Comme il est impossible de dclarer de nouvelles squences de scancodes au niveau du serveur X, on ne peut pas complter les dfinitions de clavier existantes pour prendre en charge d'ventuelles nouvelles touches. symbols/ Contient les dfinitions des plans de clavier ou, autrement dit, les associations entre les keycodes X et les symboles obtenus lors de l'appui sur les touches. rules/ Contient les dfinitions des modles de clavier de X.org. Ces modles de clavier sont utiliss pour simplifier la dfinition des claviers dans le fichier de configuration xorg.conf. keymaps/ Contient les dfinitions des principaux claviers connus. Une dfinition de clavier comprend entre autres la dfinition des keycodes, des touches modificatrices et des symboles affects aux keycodes. Il est probable que vous n'ayez pas modifier un seul des fichiers de ces rpertoires, car ils sont correctement dfinis par dfaut. Le seul fichier qui peut tre intressant est le fichier fr du sous- rpertoire symbols/. En effet, c'est dans ce fichier que vous trouverez la dfinition des symboles affects chaque touche pour un clavier franais, en fonction des modificateurs (ALT, CTRL, etc.) actifs lors de l'appui sur la touche. Le principe de fonctionnement de ce fichier est semblable aux plans de claviers de Linux : pour chaque keycode, un ensemble de symboles peuvent tre dfinis. Ces symboles sont indiqus entre accolades (caractres '{' et '}'), en deux jeux de symboles entours de crochets (caractres '[' et ']'). Le premier jeu de symboles indique les symboles accessibles directement et en utilisant la touche majuscule, et le deuxime jeu dfinit les symboles accessibles avec la combinaison de la touche AltGr. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 442
Par exemple, la touche du chiffre '3' au dessus des lettres 'Z' et 'E' est dfinie comme suit dans le fichier de dfinition du clavier franais (fichier fr) : key <AE03> { [ quotedbl, 3 ], [ numbersign, sterling ] }; Cela signifie que la touche dont le keycode est <AE03> (c'est--dire celle la quatrime de la deuxime range de touches du clavier) gnre les symboles " et 3 selon que la touche majuscule est utilise ou non, et les symboles # et respectivement en minuscule ou en majuscule et avec la touche AltGr enfonce. Si vous regardez le fichier du clavier franais, vous constaterez que toutes les touches ne sont pas dfinies. La raison de cela est que ces fichiers utilisent par dfaut les affectations de touches du clavier amricain standard. Par consquent, seules les diffrences ont t redfinies dans ce fichier. Vous pourrez ventuellement modifier certaines affectations de touches si vous le dsirez. Ce peut tre ncessaire si vous dsirez homogniser les combinaisons de touches entre la console Linux et XWindow. Par exemple, il peut tre utile de redfinie le comportement de la touche 'E' pour qu'elle renvoie le symbole Euro (caractre '') en combinaison avec la touche AltGr. Pour cela, vous pourrez utiliser la configuration suivante dans le fichier de clavier utilis : key <AD03> { [ e, E ], [ currency, E ] }; Note : Notez que la touche Euro est dj accessible par dfaut sur les claviers franais avec la touche des monnaies (Livre Sterling, Dollar). Une autre touche qui peut tre redfinie pour un clavier franais est la touche 'O', afin de lui faire gnrer les symboles e dans l'o franais ('' et 'OElig;') au lieu des symboles o barrs ('' et '') norvgiens, qui ne sont pas trs utiles en franais. Notez que les noms de symboles utiliss dans les tables d'encodage correspondent aux symboles de l'encodage ISO 8859-1, et que par consquent, vous devrez utiliser les noms de symboles onehalf et onequarter pour reprsenter les caractres '' et ''. En effet, ces symboles sont les symboles de l'encodage ISO 8859-1 qui ont le mme code que les symboles '' et '' dans l'encodage ISO 8859-15. Sachez enfin que l'obtention de ces symboles est bien entendue assujettie l'utilisation d'une police de caractres utilisant l'encodage ISO 8859-15. Comme vous avez d le constater, un certain nombre de plans de clavier sont dfinis en standard dans X.org. De mme, plusieurs gomtries et dfinitions de keycodes sont fournies dans les sous- rpertoires geometry/ et keycodes/ du rpertoire /etc/X11/xkb/. Le serveur X utilise les fichiers qui sont rfrencs dans la section Keyboard du fichier de configuration xorg.conf. Comme on l'a dj vu plus haut dans ce chapitre, le mot cl XkbLayout permet de dfinir le plan de clavier utiliser. Ainsi, si vous spcifiez le plan de clavier fr la suite de ce mot cl, le fichier de dfinition des associations keycodes-symboles utilis sera le fichier fr du rpertoire /etc/X11/xkb/symbols/. Les autres options sont fixes par les mots cls XkbRules et XkbModel . Le premier mot cl indique quel est le fichier utiliser pour dfinir les modles de claviers de X.org. Ce fichier est localis dans le sous-rpertoire rules/, et fournit les valeurs par dfaut utiliser pour chaque modle de clavier. Le deuxime mot cl indique le modle de clavier utiliser. Ainsi, il n'est ncessaire de spcifier que trois paramtres pour dfinir le clavier sous X.org : le fichier contenant la dfinition des modles de clavier, le modle lui-mme et le fichier dfinissant la disposition des touches. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 443
Note : Vous pouvez galement dfinir tous les paramtres du clavier dans le fichier xorg.conf. Cette technique est plus complique et n'est pas ncessaire pour dfinir un clavier franais, elle ne sera donc pas dcrite ici. Vous trouverez plus de renseignements ce sujet dans la page de manuel.
10.6. Paramtrage des applications et ressources X Du fait que toutes les applications X font appel au serveur X pour effectuer leur affichage, et au gestionnaire de fentres pour dfinir l'apparence et la disposition de leurs fentres, elles sont soumises aux options gnrales de ces deux programmes. Elles peuvent cependant tre paramtres elles-aussi, et leur comportement peut tre personnalis souhait par chaque utilisateur. Pour cela, XWindow fournit un mcanisme standard pour toutes les applications, afin qu'elles puissent grer leurs options de configuration de manire uniforme. Ce mcanisme se base sur des paramtres grs par le serveur X, que l'on appelle des ressources X. La plupart des applications utilisent ces ressources pour stocker leurs paramtres de configuration, et le fait que ce soit le serveur X qui centralise leur gestion assure une certaine cohrence entre les applications. En gnral, les ressources X dcrivent essentiellement les aspects visuels des applications, comme par exemple les polices de caractres utilises, les couleurs et l'paisseur des traits. Cependant, les applications peuvent parfaitement utiliser les ressources pour enregistrer des paramtres qui leurs sont propres. Le serveur X n'interprte en aucune manire les ressources utilises par les applications, il ne fait que les mettre disposition des applications. Le serveur X gre les ressources dans une base de donnes qui est initialise lors de son dmarrage : la X Ressource DataBase ( xrdb en abrg). Cette base de donnes est initialise lors du dmarrage du serveur partir de fichiers de configuration au format texte, que l'on peut donc diter et modifier aisment. Le serveur X utilise deux jeux de fichiers lors de son initialisation : les fichiers de configuration par dfaut des applications d'une part, et le fichier de prfrences personnelles de chaque utilisateur d'autre part. Les fichiers de configuration des applications sont normalement placs dans le rpertoire /etc/X11/app-defaults/. Les applications y copient leurs propres fichiers lors de leur installation. Le nom de chaque fichier correspond au nom de l'application laquelle il appartient, ce qui permet de retrouver aisment le fichier de configuration d'une application donne. Le fichier de prfrences personnelles de chaque utilisateur, quant lui, se place dans son rpertoire racine et porte le nom .Xresources. Les fichiers de ressources des applications sont lus en premier, en gnral dans les scripts d'initialisation de XWindow. En revanche, le fichier de prfrences personnelles d'un utilisateur n'est lu que lors de l'ouverture d'une session X par cet utilisateur. Lorsqu'une ressource prsente dans le fichier de configuration par dfaut d'une application est redfinie dans le fichier de prfrences personnelles d'un utilisateur, la valeur utilise est bien entendue celle de l'utilisateur. Ainsi, chacun peut redfinir les valeurs par dfaut des ressources de toutes les applications qu'il utilise. La plupart des applications peuvent galement prendre des options en paramtres de ligne de commande, qui permettent de fixer les valeurs de certaines ressources. Ces options prvalent sur les valeurs dfinies dans les fichiers de configuration des applications et de prfrences personnelles des utilisateurs. Vous pourrez vous inspirer du contenu des fichiers de configuration des applications pour paramtrer vos applications. Pour cela, il vous suffira simplement de recopier les dfinitions des ressources qui vous intressent dans votre fichier .Xresources, et de tester le rsultat avec diffrentes valeurs. L'affectation d'une valeur une ressource se fait avec la syntaxe suivante : ressource : valeur
o ressource est le nom de la ressource, et valeur est la valeur lui affecter. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 444
Les noms de ressources sont structurs de manire hirarchique. Ils sont en effet constitus d'un certain nombre de composantes spares par des points (caractre '.'). La premire composante qualifie l'application elle-mme, et porte son nom. Il est d'usage de mettre la premire lettre de ce nom en majuscule, et si cette lettre est un 'X', de mettre galement la deuxime lettre du nom en majuscule (beaucoup d'applications X ont en effet un nom commenant par un 'X'). Les composantes suivantes dfinissent un sous-ensemble de paramtres apparents dans l'ensemble des paramtres dtermin par les composantes prcdentes. Enfin, la dernire composante du nom de ressource constitue le nom du paramtre lui-mme. Par exemple, le nom de ressource suivant : XApplication.mainWindow.background
qualifie la couleur d'arrire plan (proprit background ) de la fentre principale (proprit mainWindow ) de l'application XApplication . Notez que les deux premires lettres du nom de la ressource sont en majuscules ici, car la premire lettre du nom de l'application est elle-mme un 'X' majuscule. Note : Les fichiers de ressources utilisent des noms de couleurs prdfinies pour dfinir les couleurs des diffrentes parties des applications. Vous pourrez trouver la liste de ces noms de couleurs ainsi que leurs dfinitions dans le fichier /usr/share/X11/rgb.txt. Vous pouvez galement dfinir vos propres couleurs avec la syntaxe rgb:R/V/B , o R reprsente la portion de rouge de la couleur, V reprsente la portion de vert, et B la portion de bleu. Ainsi, l'ensemble des paramtres des applications X est organis un peu comme sont organiss les fichiers dans une arborescence de rpertoires. L'analogie ne s'arrte pas l : il est possible de caractriser un ensemble de ressources grce des caractres gnriques. Par exemple, en utilisant une toile (caractre '*') comme sparateur la place du point dans un nom de ressource, toutes les ressources dont le nom comprend les deux composantes seront slectionnes, que ces deux composantes soient adjacentes ou spares d'autres composantes intermdiaires. Par exemple, le nom de ressource suivant : XApplication*background
qualifie la couleur d'arrire plan de toutes les fentres de l'application Xapplication . De mme, le caractre gnrique point d'interrogation (caractre '?') permet de remplacer une composante par un nom quelconque. Le nom de ressource suivant : XApplication.?.background
reprsente donc toutes les ressources comportant les composantes XApplication et background , spares par une composante de nom quelconque. La structure des noms de ressources d'une application n'est pas due au hasard. Les paramtres sont regroups soit par fonctionnalit, soit par thme, soit par appartenance la mme partie de l'application. En gnral, les noms de ressources utiliss par les applications sont simples comprendre. Vous trouverez des exemples de noms de ressources dans les fichiers de ressources des applications. Vous pouvez obtenir la liste exhaustive des ressources d'une application avec l'utilitaire appres. En fait, cet utilitaire permet d'obtenir la liste des noms des ressources appartenant une branche de l'arborescence des ressources. Cet utilitaire s'utilise selon la syntaxe suivante : DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 445
appres branche
o branche est le nom de la branche que l'on veut explorer. Comme la base de donnes des ressources est initialise au dmarrage du serveur X et l'ouverture de la session X, les modifications que vous pourrez apporter votre fichier de ressources personnelles ne seront pas prises en compte immdiatement. Pour cela, vous devez demander la relecture de la base de donnes explicitement et relancer les applications concernes. Cette opration peut tre effectue l'aide de l'outil xrdb (abrviation de l'anglais X ressource DataBase ). En fait, cet outil permet d'effectuer diverses oprations sur la base de donnes des ressources. L'option -merge est certainement celle que vous utiliserez le plus. Elle permet de mettre jour les valeurs des ressources avec celles dcrites dans un fichier. La syntaxe utilise est la suivante : xrdb -merge fichier
o fichier est le nom du fichier contenant la dfinition des ressources (gnralement, il s'agit de votre fichier .Xresources). L'option -load permet d'effectuer le mme travail, mais la base de donnes est vide au pralable. Cette option permet donc de rinitialiser compltement le contenu de la base de donnes avec le contenu du fichier pass en paramtre. Sa syntaxe est la mme que celle de l'option -merge. L'option -remove permet de vider la base de donnes et de supprimer toutes les ressources que vous auriez pu dfinir au pralable. Elle s'utilise selon la syntaxe suivante : xrdb -remove Enfin, l'option -query permet de lister l'ensemble des ressources existantes. 10.7. Gestion de la scurit sous XWindow XWindow n'effectue pas de contrle d'accs sur les oprations demandes par un processus connect un serveur X. Cela signifie que tous les processus qui ont accs un display y ont un accs total. Par exemple, un processus peut parfaitement faire une prise d'cran et rcuprer tous les vnements provenant du clavier. Il va de soi que ce genre de processus pose un problme de scurit majeur, aussi XWindow considre-t-il que seuls les processus lancs sur la machine locale au nom de l'utilisateur courant ont le droit de se connecter au serveur X. Cela protge donc le display de l'utilisateur contre les malversations de personnes mal intentionnes. Cependant, cette restriction est assez forte, parce qu'elle va vous empcher de lancer un programme graphique sous un autre nom d'utilisateur. Par exemple, vous ne pourrez pas lancer un programme ncessitant les droits administrateur et dont le bit setuid n'est pas positionn. En effet, une fois que vous vous serez identifi en tant que root avec la commande su, les programmes que vous lancerez le seront au nom de l'utilisateur root, et le serveur X refusera la connexion. Un autre cas d'cole o cette restriction peut tre gnante est le lancement d'un programme graphique sur une machine distante. La situation est encore plus grave, car cette fois la demande de connexion au serveur X ne provient pas de la machine o il s'excute, et n'a aucune chance d'aboutir. XWindow fournit donc les outils ncessaires pour contrler le niveau de scurit en cours. Classiquement, le serveur X utilise deux techniques pour contrler la validit des demandes de connexion des clients. Le premier mcanisme de contrle d'accs est relativement grossier, puisqu'il se base simplement sur les adresses des machines. Le deuxime mcanisme a t introduit ultrieurement DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 446
afin de permettre des contrles plus fins. Les contrles se font alors l'aide d'un mcanisme de cls prives, que seuls les clients autoriss connaissent. 10.7.1. La commande xhost La commande xhost permet de fixer le niveau des contrles d'accs bass sur les adresses de machines. Comme on l'a vu, le serveur X n'accepte les connexions que de la machine locale. Vous pouvez cependant lui indiquer d'accepter toutes les connexions provenant d'une autre machine avec une commande telle que celle-ci : xhost +machine
o machine est le nom de la machine en qui l'on a confiance. Si aucun nom de machine n'est spcifi, tous les mcanismes de contrle d'accs sont dsactivs. Inversement, la suppression d'une machine de la liste des machines autorises est ralise par la commande suivante : xhost -machine La commande xhost - (sans nom de machine) permet de ractiver les mcanismes de contrle d'accs s'ils ont t dsactivs par un xhost +. Notez bien que donner le droit de connexion une machine suppose que l'on fasse confiance tous les utilisateurs de cette machine, car alors ils pourront tous se connecter sur votre serveur X local. De plus, rien ne vous garantit que la machine qui vous donnez ces droits n'a pas t usurpe par celle d'un pirate (technique dite de l' IP spoofing ). Ce n'est donc videmment pas la solution recommande, surtout si vous tes connect Internet. 10.7.2. La commande xauth Le deuxime mcanisme de scurit utilise une cl prive. Tous les clients qui dsirent se connecter au serveur local doivent connatre cette cl, faute de quoi leur requte sera refuse. Ainsi, vous pouvez trs simplement permettre l'utilisation de votre display une personne donne sur une machine donne, simplement en lui communiquant la cl utilise par le serveur X grant votre display. Bien entendu, cette communication doit se faire de manire sre. Par dfaut, les cls prives utilises par les clients sont enregistres dans le fichier .Xauthority de votre rpertoire personnel. Ce fichier contient une cl prive pour chaque display auquel vous avez le droit de vous connecter. Les clients que vous lancez consultent donc ce fichier afin de dterminer la cl utiliser, en fonction du display auquel ils dsirent accder. Une fois cette cl connue, ils peuvent s'authentifier auprs du serveur X grant ce display, et ainsi obtenir une connexion. Notez bien que le fichier .Xauthority ne doit tre accessible que par vous. Si vous utilisez xdm, une nouvelle cl est automatiquement gnre chaque fois que vous vous connectez un terminal X. xdm enregistre cette cl dans un fichier temporaire du rpertoire rfrenc par le lien symbolique /etc/X11/xdm/authdir (qui rfrence gnralement le rpertoire /var/lib/xdm/authdir/), que seul l'utilisateur root peut accder. Il communique ensuite ce fichier au serveur X local l'aide de l'option -auh du serveur X pour que celui-ci puisse lire la cl utiliser. Enfin, xdm enregistre cette cl dans votre fichier .Xauthority, pour que vous puissiez lancer des clients dans cette session X. Comme vous pouvez le constater, ce mcanisme de scurit est totalement transparent pour l'utilisateur. Cependant, il peut tre ncessaire de manipuler le fichier .Xauthority pour lire les cls DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 447
prives et les communiquer aux personnes de confiance qui doivent avoir accs votre display. Ces manipulations peuvent tre effectues l'aide de la commande xauth. La cl associe un display peut tre obtenue avec la commande suivante : xauth list display
o display est le nom du display auquel la cl donne accs. xauth affiche alors le display, le type d'authentification utilis (MIT-MAGIC-COOKIE-1) et la cl prive. Vous pouvez communiquer cette cl par les moyens que vous voulez la personne devant accder votre display. Celle-ci pourra alors utiliser la commande suivante pour ajouter la cl son fichier .Xauthority : xauth add display . cl
o display est le display utilisant la cl cl. Le caractre '.' est une abrviation pour le type d'authentification MIT-MAGIC-COOKIE-1 (type d'authentification par dfaut). Ds que la cl aura t ajoute dans son fichier .Xauthority, cette personne aura accs votre display. Enfin, la commande suivante : xauth remove display
permet de supprimer la cl utilise pour le display display. Note : Il est ncessaire d'utiliser une technique de communication sre pour transmettre la clef, faute de quoi le mcanisme de scurit de XWindow ne servirait rien. L'utilisation d'OpenSSH est vivement recommande. 10.8. Gestion des polices de caractres La gestion des polices de caractres est relativement complique sous XWindow. En effet, elle est gre par un protocole complexe, qui permet de dcrire avec prcision les diverses polices de caractres, quel que soient leur type et leur aspect. De plus, la gestion des polices ncessite de traiter correctement les symboles spcifiques chaque pays, ce qui complique encore un peu plus les choses. Enfin, pour couronner le tout, XWindow n'utilise pas la notion de graphisme indpendant du priphrique, comme la GDI de Windows. Cela implique, hlas, qu'il ne se charge que de l'affichage et pas de l'impression. Chaque programme doit donc prendre en compte lui-mme les problmes d'impression, ce qui implique, en gnral, que les programmes soient capables d'imprimer sur des imprimantes PostScript. Par consquent, la configuration des polices de caractres doit non seulement se faire pour XWindow, mais galement pour chacun des programmes (ou, au moins, pour l'interprteur GhostScript, utilis pour l'impression avec des imprimantes non PostScript). 10.8.1. Gestion des polices de caractres sous XWindow Originellement, XWindow ne pouvait afficher que des polices de type bitmap, c'est--dire des polices de caractres dfinies par un dessin pour chaque caractre et pour un certain nombre de rsolutions. Cette technique avait l'avantage d'tre rapide l'affichage, mais de relative mauvaise qualit lorsque les tailles demandes n'taient pas exactement celles pour lesquelles la police avait t dessine. En effet, la police devait alors tre redimensionne partir de la taille la plus proche disponible. Ultrieurement, les polices Postscript sont apparues. Ces polices sont dfinies vectoriellement, c'est-- dire par des formules mathmatiques. La forme des caractres est ainsi calcule pour chaque dimension, ce qui permet d'avoir une qualit irrprochable. L'avantage des polices Postscript est DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 448
qu'elles sont gres de manire native par les imprimantes PostScript, et assurent une qualit d'impression optimale. En revanche, leur affichage sur les crans n'est pas toujours correcte, car les formules utilises ont t conues pour les priphriques disposant de grandes rsolutions et ne donnent pas forcment un rsultat esthtique pour les rsolutions d'crans. Enfin, les polices Truetype ont t inventes par Apple. Ces polices sont galement vectorielles, mais disposent en plus de petites astuces permettant d'amliorer leur lisibilit sur les priphriques faible rsolution tels que les crans. Microsoft a licenci la technologie Truetype et l'a intgre Windows par la suite. Afin de dcrire les polices le plus prcisment possible, XWindow leur donne des noms relativement complexes. Ces noms constituent ce que l'on appelle la description logique des polices ( XLFD , qui est l'abrviation de l'anglais X Logical Font Description ). Cette convention de dnomination spcifie que la description des polices doit tre constitue de diffrents champs, spars par des tirets ('-'). De plus, la description doit elle-mme tre prcde d'un tiret. Les diffrents champs utiliss dans la description logique des polices sont les suivants : le nom de l'diteur de la police, ou le nom du type de la police ; le nom de la police (par exemple, arial ) ; la graisse de la police (par exemple, bold pour gras, medium pour normal) ; l'inclinaison de la police (par exemple, 'r' pour roman, 'i' pour italique) ; la largeur de la police ; des options de styles avances ; la taille de la police ; la taille des points ; la rsolution horizontale de la police ; la rsolution verticale ; le type d'espacement de la police (par exemple, 'c' pour constant, 'p' pour proportionnel) ; la largeur moyenne de la police ; le jeu de caractres de la police ; la page de codes de la police. Vous pouvez consulter la documentation de XWindow pour une description plus dtaille de ces champs. Ces informations ne sont pas toutes supportes par les polices de caractres. Inversement, certaines polices peuvent correspondre plusieurs descriptions (ne serait-ce que parce qu'elles disposent de plusieurs tailles). Parmi les informations dcrivant les polices se trouvent le jeu de caractres de la police et sa page de codes (rappelons que ces informations constituent ce que l'on appelle l'encodage de la police). Il peut y avoir plusieurs pages de codes pour un jeu de caractres, chacune reprsentant une manire de numroter les diffrents caractres du jeu. Une police peut disposer de plusieurs jeux de caractres, mais en pratique ce n'est que rarement le cas. En revanche, la manire de numroter les caractres (c'est--dire la page de codes) peut avoir une influence certaine. Comme on le verra plus tard, le jeu de caractres le plus pratique pour les pays d'Europe de l'Ouest est le jeu ISO 8859 (jeu de caractres dit latin ). Ce jeu de caractres dispose de la plupart des caractres utiliss en Europe. Pour les alphabets occidentaux, la page de codes la plus utilise est la page de codes 1, ce qui fait que l'encodage des polices occidentales est ISO 8859-1. Cependant, quelques caractres ont t oublis dans cette page de codes (notamment le o e dans l'o franais ('')). Ces caractres sont pourtant disponibles dans certaines polices (en particulier, les polices Truetype provenant de Windows), mais ne sont malheureusement pas disponibles avec l'encodage ISO 8859-1. Pour y accder, on est oblig d'utiliser un autre encodage, comme par exemple l'encodage ISO 8859- 15. Cet encodage est quasiment identique l'encodage ISO 8859-1, aux caractres additionnels prs, qui ont t ajouts pour les pays europens. Il est galement possible d'utiliser la page de codes 1252 des polices de caractres de Windows. Cette page de codes correspond l'encodage windows- 1252 , parfois galement nomm microsoft-ansi ou encore microsoft-cp1252 . En rsum, le DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 449
jeu de caractres et la page de codes permettent d'indiquer pour quel pays (ou quel alphabet) une police est destine. Note : Le problme des encodages est que seul l'encodage ISO 8859-1 est vraiment utilis par la majorit des gens. Cela implique que les autres encodages risques de ne pas tre reconnus par tous les programmes. En particulier, il est assez difficile d'imprimer des textes encods avec des encodages non standards. La description logique des polices de caractres est trs prcise, puisqu'elle permet de spcifier l'origine de la police, son nom, les informations la concernant, les caractres qu'elle comprend et comment ils sont numrots. Lorsqu'on choisit une police de caractres, on peut parfaitement ne prciser que certains critres (comme par exemple, l'encodage de la police). Dans ce cas, les champs constituant le nom de la police non spcifis pourront tre remplacs par des caractres gnriques. Le caractre '*' permet ainsi de spcifier n'importe quelle valeur pour ce champ, et le caractre '?' permet de spcifier n'importe quel caractre dans un champ. Le programme xfontsel permet de slectionner les polices de caractres installes sur un systme. Il peut tre utile pour comprendre la signification des diffrents champs de la description logique des polices. Des exemples de descriptions logiques de polices sont donns ci-dessous : -adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-iso8859-1 -*-courier-bold-*-normal-*-10-*-*-*-*-*-iso8859-15 -winfonts-arial-*-i-normal-*-16-*-*-*-*-*-microsoft-cp1252 Les polices de caractres sont souvent regroupes dans des rpertoires. Il peut exister plusieurs rpertoires de polices sur un systme, si bien qu'il est ncessaire d'indiquer X.org dans quels rpertoires ils doivent rechercher les polices de caractres utilisables. Les rpertoires des polices utilises par le serveur X sont indiqus dans le fichier xorg.conf, dans la section Files . Comme on le verra plus tard, cette section peut galement contenir des rfrences sur des serveurs de polices de caractres. Les serveurs de polices de caractres peuvent rechercher les polices dans des rpertoires indiqus de diffrentes manires selon le serveur. Pour certains serveurs, les rpertoires de polices sont indiqus dans un fichier de configuration, pour d'autres, ils sont indiqus en ligne de commande. Dans le protocole X, les rpertoires de polices doivent contenir un fichier fonts.dir donnant la liste des polices de ce rpertoire. Ce fichier indique, sur sa premire ligne, le nombre de polices installes dans ce rpertoire, et, sur les lignes suivantes, l'association entre les fichiers de polices et leur description logique. Ce fichier est cr normalement par le programme mkfontdir. Ce programme gnre le fichier fonts.dir partir des informations contenues dans les fichiers des polices ou partir du nom des fichiers des polices eux-mmes. En gnral, les polices taille variable ne contiennent pas ces informations dans le format standard des polices X11 classiques, et mkfontdir ne peut donc pas crer le fichier fonts.dir automatiquement. Pour ces polices, il faut crer un fichier fonts.scale contenant les mmes informations que le fichier fonts.dir, et que mkfontdir utilisera pour crer ce dernier. La mthode pour crer le fichier fonts.scale dpend du type de police utilise. Celle utilise pour les polices Truetype sera dcrite dans la Section 10.8.2. En gnral, les encodages les plus standards sont grs directement par le serveur X ou par le serveur de polices. En particulier, l'encodage ISO 8859-1 est gr nativement. Il est toutefois possible de dfinir de nouveaux encodages dans des fichiers d'encodages. Pour que le serveur X ou le serveur de polices puisse utiliser les polices dfinies avec ces encodages, il faut que le rpertoire d'installation des polices contienne un fichier encodings.dir. Ce fichier a la mme structure que le fichier fonts.dir, c'est- -dire qu'il contient le nombre des encodages sur la premire ligne et, sur chaque ligne suivante, le nom de l'encodage et le nom d'un fichier contenant la dfinition d'un encodage, spars par un espace. De cette manire, le serveur X et le serveur de polices sont capables de raliser l'association entre le nom de l'encodage utilis dans la description logique de polices et le fichier de dfinition de cet DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 450
encodage. La mthode permettant de crer le fichier encodings.dir sera dcrite plus loin dans la section traitant de l'installation des polices Truetype. L'criture des fichiers de dfinition d'encodages de polices est une tche assez complique, qui ncessite de bien connatre la numrotation des caractres de chaque type de fichier de police. De manire trs simplifie, on peut dire que les fichiers de dfinition d'encodage font l'association entre le numro de chaque caractre dans la police et une numrotation standardise des caractres (XWindow utilise l'encodage Unicode) de cette police. Cela permet de manipuler les textes avec la numrotation standard, et d'utiliser des polices qui ne dfinissent pas tous les caractres de cette numrotation ou qui ne les numrotent pas de la mme manire. Heureusement, les encodages les plus courants ont dj t crits et il est fort peu probable que vous ayiez vous intresser ce problme. La structure des fichiers d'encodages ne sera donc pas dcrite plus en dtail dans ce document. 10.8.2. Installation des polices Truetype L'installation des polices TrueType sous XWindow ne pose dsormais plus de problmes, puisqu'il suffit de dfinir le fichier fonts.dir dans le rpertoire d'installation de ces polices. Cependant, un certain nombre d'oprations supplmentaires devront tre ralises pour permettre l'impression des documents utilisant les polices TrueType. Ce paragraphe dtaille la manire de dclarer les polices TrueType au niveau du serveur X, et prsente les oprations ncessaires leur impression pour quelques logiciels courants. Gnralement, les fichiers de polices sont places dans des sous-rpertoires du rpertoire /usr/share/fonts/. Ces sous-rpertoires permettent de classer les fichiers de polices par type et par taille. Dans la suite de ce document, il sera suppos que les polices TrueType sont toutes situes dans le sous-rpertoire TTF/. 10.8.2.1. Configuration du serveur X Pour permettre au serveur X d'utiliser les polices TrueType, il faut simplement crire le fichier fonts.dir de chaque rpertoire de polices. Rappelons que ce fichier contient la liste des polices du rpertoire dans lequel il se trouve, et est utilis la fois par le serveur X et par les serveurs de polices de caractres. La notion de serveur de polices sera vue en dtail dans la Section 10.8.3. Normalement, le fichier fonts.dir est gnr par le programme mkfontdir. Ce programme utilise les informations contenues dans les fichiers de polices ou dans le nom de ces fichiers pour le gnrer. Malheureusement, les polices Truetype, comme la plupart des polices taille variable, ne contiennent pas ces informations dans un format comprhensible par mkfontdir, ni dans leurs fichier, ni dans leurs nom. Celui-ci ne peut donc pas crer le fichier fonts.dir directement. Dans ce cas, mkfontdir utilise le fichier de dfinition des polices taille variable fonts.scale. Ce fichier doit tre cr soit manuellement, soit l'aide de l'utilitaire mkfontscale. Celui-ci doit tre appel dans le rpertoire contenant les polices de caractres, et gnre un fichier fonts.scale directement utilisable par mkfontdir. Une fois le fichier fonts.scale cr, il ne reste plus qu' appeler mkfontdir avec la ligne de commande suivante : mkfontdir -e /usr/share/fonts/encodings -e /usr/share/fonts/encodings/large Cette commande aura pour effet de crer le fichier fonts.dir partir du fichier fonts.scale, et de crer les fichiers d'encodage encodings.dir associs (en fait, il s'agit d'une simple recopie). mkfontdir utilise les fichiers de dfinition d'encodages standards placs dans les rpertoires indiqus avec l'option -e. Dans la commande prcdente, les encodages standards supports par XWindow du rpertoire /usr/share/fonts/encodings/ sont utiliss. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 451
Note : L'encodage Microsoft cp1252 correspond l'encodage ANSI utilis par Microsoft Windows. C'est un encodage non standard, qui ressemble fortement l'encodage ISO 8859-1 spcifi par l'ISO. Ce dernier souffre malheureusement de l'absence de certains caractres franais (comme le o e dans l'o). Si vous voulez rester compatible avec les normes ISO et accder malgr tout ces caractres, vous pouvez utiliser l'encodage ISO 8859-15. Vous accderez ainsi tous les caractres utiliss en Europe, mais vous ne pourrez plus utiliser les caractres additionnels dfinis par Microsoft. Il faut noter que la plupart des polices sont dfectueuses et indiquent une page de codes errone dans leur fichier. Cela explique pourquoi quelques descriptions logiques de polices dans le fichier fonts.scale gnr automatiquement par mkfontscale peuvent tre fausses. Pour ces polices, il faudra corriger l'encodage manuellement en modifiant le fichier fonts.scale avant d'excuter la commande mkfontdir. 10.8.2.2. Configuration des polices Truetype pour l'impression La plupart des programmes modernes, comme la suite bureautique OpenOffice et les programmes du gestionnaire de bureau KDE par exemple, prennent en charge compltement les polices de caractres TrueType tant pour l'affichage que pour l'impression. En gnral, ils impriment dans des fichiers au format PostScript, et embarquent la dfinition des polices de caractres TrueType dans ces fichiers, qui sont utilisables de manire indpendante. Vous n'aurez donc certainement rien faire pour pouvoir utiliser les polices TrueType limpression. Cependant, les plus anciens programmes se contentent de rfrencer les polices utilises dans les fichiers d'impression, et il faut configurer le sous-systme d'impression pour qu'il puisse reconnatre ces polices et les imprimer correctement. D'une manire gnrale, deux cas peuvent se prsenter : soit on dispose d'une imprimante PostScript, auquel cas il faut convertir les polices Truetype en polices Adobe Type 42, qui constituent une encapsulation des polices Truetype en PostScript. Cette conversion a l'avantage de ne pas provoquer de perte de qualit, puisque la police Truetype est utilise telle quelle ; soit on ne dispose pas d'imprimante PostScript, auquel cas on utilise ncessairement un interprteur PostScript. Cet interprteur est souvent GhostScript, car il s'agit encore une fois d'un logiciel libre. Quel que soit l'interprteur PostScript utilis, il faut soit le configurer pour qu'il puisse utiliser les polices Truetype, soit que les applications fournissent la dfinition des polices TrueType qu'elles utilisent dans les fichiers PostScript qu'elles gnrent lors de l'impression. Cette dernire solution est celle utilise par les logiciels rcents (comme les applications de KDE ou OpenOffice), ce qui fait qu'en gnral, les polices TrueType sont prises en charge sans configuration additionnelle. Nous verrons plus loin comment configurer les versions de GhostScript ultrieures la 7.00 pour qu'elles puissent prendre en compte les polices TrueType pour les autres applications. Dans les deux cas, il se peut qu'il faille configurer le logiciel utilis pour qu'il puisse utiliser les polices Truetype de concert avec le sous-systme d'impression. Les paragraphes suivants dcrivent les procdures suivre pour imprimer les polices Truetype en gnral. La configuration des logiciels ne sera pas aborde, consultez leur aide ou recherchez des renseignements sur Internet quant la procdure suivre. 10.8.2.2.1. Conversion des polices Truetype en polices Adobe de Type 42 La conversion des polices Truetype en polices Adobe de Type 42 est une opration ncessaire si l'on utilise directement une imprimante PostScript ou si l'on utilise un interprteur PostScript incapable de grer directement les polices Truetype. De manire gnrale, il est recommand d'utiliser GhostScript mme si l'on possde une imprimante PostScript, car la configuration de l'impression se fait de la DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 452
mme manire que les autres utilisateurs de Linux, et il est donc plus facile de trouver de l'aide sur Internet. La conversion en polices Adobe de Type 42 peut tre ralise avec le programme ttfps, disponible sur Internet sous le nom ttfps.tar.gz. Cet outil est tout fait correct, mais il souffre d'un grave dfaut : il ne permet pas de choisir l'encodage de la police PostScript qu'il gnre. Plus grave encore, il utilise systmatiquement l'encodage standard Adobe, qui ne dispose pas de la plupart des lettres accentues franaises (c'est aussi la raison pour laquelle il est recommand d'utiliser GhostScript). Vous pouvez bien entendu modifier le code source si vous vous en sentez le courage. Vous devrez compiler ttfps pour pouvoir l'utiliser. Lorsque vous aurez extrait les fichiers sources de l'archive, vous aurez diter le fichier Makefile pour : dfinir la variable d'environnement CC avec pour valeur le nom du compilateur que vous utilisez (en l'occurence, gcc) : CC=gcc choisir entre les deux jeux d'options de compilation CELAGS. Vous ne devez en choisir qu'un seul, il faut obligatoirement commenter l'autre avec un caractre dise ('#'). Le choix dpend de l'architecture de votre machine. Si vous utilisez un PC, vous devrez choisir l'option contenant l'option -SMALLENIAN. Une fois ces modifications faites, vous pourrez compiler ttsps avec la simple commande suivante : make L'utilisation de ttfps est trs simple. Pour convertir une police Truetype en police Adobe de Type 42, il suffit d'utiliser la ligne de commande suivante : ttfps [-a fichier.afm] fichier.ttf fichier.pfa
o fichier.afm est le nom du fichier de dfinition des dimensions de la police PostScript, fichier.ttf est le nom du fichier de police Truetype encapsuler, et fichier.pfa est le nom de la police PostScript rsultante. La gnration du fichier .afm est facultative. 10.8.2.2.2. Installation des polices Truetype pour GhostScript GhostScript est un interprteur PostScript capable d'imprimer les polices Truetype. Sa configuration est trs simple, puisqu'il suffit de lui donner le nom de police que les fichiers PostScript utilisent pour la rfrencer et le nom du fichier de police correspondant. Cette association est dfinie dans le fichier Fontmap de GhostScript, que vous pourrez trouver dans son rpertoire d'installation (normalement, GhostScript se trouve dans le rpertoire /usr/share/ghostscript/version/, o version est le numro de la version installe). Les informations que vous devez ajouter dans ce fichier sont similaires celles stockes dans le fichier fonts.dir du rpertoire de polices. Pour chaque police, il faut rajouter une ligne de la forme suivante : (nom) (fichier) ;
o nom est le nom de la police d'imprimante que les programmes utilisent dans les fichiers PostScript qu'ils gnrent, et fichier est le chemin absolu du fichier de la police Truetype. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 453
En pratique, le nom de la police d'imprimante peut tre choisi librement. On veillera toutefois ne pas utiliser des noms de polices contenant des espaces, car certains programmes peuvent avoir du mal manipuler de tels noms. Il faudra bien utiliser ce nom lors de la dclaration des polices d'imprimante dans les logiciels capables d'imprimer en PostScript. Si l'on ne peut pas dfinir ce nom au niveau des logiciels, il faudra ajouter un alias dans le fichier Fontmap de GhostScript pour chaque nom de police utilis par les logiciels. Il n'existe pas de rgle gnral permettant de dterminer les noms de polices utiliss par les programmes. Le plus simple est peut-tre dans ce cas de dterminer les noms utiliss en imprimant un document dans un fichier PostScript et en regardant dans le fichier les instructions de changement de police de caractres. 10.8.3. Configuration d'un serveur de polices XWindow tant un systme de fentrage fonctionnant en rseau, il propose des services additionnels sur le rseau en plus de l'affichage. Parmi ces services, on notera la possibilit de mettre en place des serveurs de polices de caractres. Ces serveurs permetttent des clients situs sur d'autres machines d'accder la dfinition des polices de caractres de la machine locale. Le serveur de police fourni par XWindow se nomme xfs (abrviation de l'anglais X Font Server ). Ce serveur utilise un fichier de configuration qui permet de lui spcifier les options avec lesquelles il doit dmarrer. Dans la suite de ce document, le nom suppos de ce fichier est /usr/lib/X11/fs/config. Un fichier de configuration typique est donn ci-dessous : # Exemple de fichier de configuration du serveur de police :
# Limite 10 le nombre de clients connects ce serveur : client-limit = 10
# Demande le dmarrage d'un autre serveur quand la limite # prcdente est atteinte : clone-self = on
# Rpertoire des polices de caractres : catalogue = /usr/share/fonts/TTF
# Fixe la taille par dfaut (en diximes de points) : default-point-size = 120
# Rsolution par dfaut (100 x 100 et 75 x 75) : default-resolutions = 100,100,75,75
# N'utilise pas le mcanisme des traces du systme : use-syslog = off
# Utilise le fichier d'erreurs suivant la place : error-file = /root/xfs.errors Lorsque vous aurez cr votre fichier de configuration, il ne vous restera plus qu' tester si tout fonctionne bien. Il vous faut pour cela lancer le serveur de polices avec la ligne de commande suivante : xfs -port 7100 -config /etc/xfs.conf &
et essayer de lui demander la liste des polices qu'il peut fournir :
DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 454
fslsfonts -server localhost:7100 Si cette dernire commande choue, il se peut que le chemin indiqu pour les rpertoires de polices dans le fichier /usr/lib/X11/fs/config ne soit pas correct, ou que le fichier fonts.dir n'existe pas ou ne soit pas correct dans un des rpertoires de polices. Si vous le dsirez, vous pouvez faire en sorte que le serveur de polices soit dmarr automatiquement au lancement de X. Vous pourrez pour cela crer un script de lancement du serveur de polices, que vous placerez dans le rpertoire /etc/rc.d/ (ou le rpertoire /sbin/init.d/, selon votre distribution) pour lancer et arrter le serveur de polices en suivant le mcanisme des niveaux d'excution. Vous trouverez ci-dessous un exemple de script de lancement du serveur de polices permettant d'utiliser le fichier de configuration prcdent : #!/bin/bash # # /etc/rc.d/xfs # # Fichier de lancement du serveur de polices. #
# Analyse les paramtres : case "$1" in start) # Vrifie si xfs est dj lanc : if [ -f /var/lock/subsys/xfs ]; then echo -n "Redmarrage du serveur de polices" killall -e -TERM $PRGM rm -f /var/lock/subsys/xfs fi $PRGM -port $PORT -config $FILE & touch /var/lock/subsys/xfs ;; stop) if [ ! -f /var/lock/subsys/xfs ]; then echo -n "xfs n'est pas lanc" else echo -n "Arrt du serveur de polices" killall -e -TERM $PRGM rm -f /var/lock/subsys/xfs fi ;; restart) echo -n "Relecture du fichier de configuration" if [ -f /var/lock/subsys/xfs ]; then killall -e -USR1 $PRGM fi ;; *) echo "Usage: $0 {start|stop|restart}" DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 455
exit 1 esac exit 0 Comme X11 est dmarr classiquement dans le niveau d'excution 3 ou 4, vous devrez crer les liens symboliques vers ce fichier pour le lancement et l'arrt du serveur de polices dans le rpertoire rc3.d/ ou rc4.d/. Attention, rappelez-vous que les noms de ces liens indiquent le moment o le script est excut, aussi bien pour l'entre que pour la sortie du niveau d'excution. Vous devrez imprativement faire en sorte que ce script soit appel avant que XWindow ne dmarre si vous dsirez utiliser le serveur de polices dans les sessions X locales. L'utilisation du serveur de polices est trs simple. Il suffit d'y accder comme un rpertoire de polices de caractres normal, en utilisant la syntaxe suivante : tcp/machine:port
o machine est la machine sur laquelle le serveur de polices accder est lanc, et port est le port que ce serveur coute. Par exemple, pour ajouter les polices d'un serveur de polices locales la liste des polices du serveur X, il suffit de taper la commande suivante :
xset +fp tcp/127.0.0.1:7100
Vous pourrez alors vrifier que ces polices sont bien disponibles avec le programme xfontsel. Si vous le dsirez, vous pouvez ajouter automatiquement les polices d'un serveur de polices en ajoutant la ligne suivante dans la section Files dans le fichier de configuration xorg.conf du serveur : FontPath "tcp/127.0.0.1:7100"
Cette ligne permet d'indiquer au serveur X qu'il trouvera des polices de caractres au niveau du serveur de polices de la machine locale. Bien entendu, le serveur de polices doit imprativement tre lanc avant le serveur X si une telle ligne est place dans le fichier de configuration xorg.conf. 10.9. Problmes classiques rencontrs Il est possible que vous rencontriez quelques problmes au lancement de XWindow aprs avoir modifi sa configuration. Ces problmes peuvent aller du blocage complet de la machine l'impossibilit de lancer XWindow. D'une manire gnrale, il est recommand de ne pas modifier la configuration dans le niveau d'excution de XWindow (3, 4 ou 5 selon les distributions). En effet, dans ces niveaux, xdm relance automatiquement le serveur X ds qu'il dtecte sa terminaison. Si le serveur X ne peut pas se lancer, votre ordinateur se bloquera dans une boucle infinie, avec en prime deux changements de mode graphique chaque itration (ce qui peut endommager srieusement votre moniteur). Si cela vous arrivait, vous n'auriez plus qu' tenter le redmarrage de la machine en basculant rapidement sur un terminal (avec CTRL+ALT+F1 suivi de CTRL+ALT+DEL. Faites-le trs rapidement, avant que xdm n'ait le temps de tenter un redmarrage du serveur X !), et redmarrer en indiquant le niveau d'excution 2 l'amorage du noyau. Par consquent, essayez vos changement de configuration dans le niveau d'excution 2 si possible, et faites vos tests avec la simple commande startx. Des erreurs un peu plus techniques peuvent provenir de la configuration rseau elle-mme (n'oubliez pas que XWindow est un systme graphique bas rseau). Les erreurs les plus effroyables sont sans doute les erreurs du type _X11TransSocketINETConnect: Can't connect: errno = n , o n est un DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 456
code d'erreur numrique. Typiquement, cette erreur signale un problme dans la configuration rseau. Les deux erreurs les plus classiques sont l'erreur 101, qui signale que la machine indique dans le display n'a pas pu tre contacte, et l'erreur 111, qui signale que cette machine est bien accessible par le rseau, mais que le serveur X ne s'y trouve pas. En gnral, vous devrez vrifier toute votre configuration rseau si vous rencontrez des erreurs 101, et le problme n'est certainement pas spcifique XWindow. Vous pouvez galement vrifier la validit de votre display, car il se peut qu'il dsigne une machine inaccessible sur votre rseau (ou que la rsolution de nom ait chou pour cette machine). Pour ce qui est de l'erreur 111, c'est beaucoup plus simple. Dans la grande majorit des cas, le serveur X dsign n'existe tout simplement pas. Il faut donc s'assurer que le serveur X en charge de grer le display indiqu dans la variable d'environnement ISRLAY est bien lanc sur la machine dsigne. Enfin, lorsqu'une application cliente refuse de dmarrer en affichant un message d'erreur Can't open display: , c'est tout simplement que la variable d'environnement ISRLAY n'a pas t prcise, et que l'option en ligne de commande -disp1ay n'a pas t utilise non plus. L'application ne sait donc tout simplement pas quel display se connecter. Si le display a bien t dfini, mais que le message Can't open display:xxx est complt du message Connection to "xxx" refused by server ou Client is not authorized to connect to Server , c'est que le client a t lanc dans un autre compte utilisateur que le compte que vous utilisez couramment, et que ce compte ne dispose pas des droits ncessaires pour accder ce display. Vous devez dans ce cas donner l'accs votre display au compte utilisateur sous lequel vous lancez le client. Chapitre 11 : Conclusion Vous avez pu voir dans ce document les diffrentes procdures mettre en uvre pour installer Linux. Ces procdures peuvent paratre compliques, et en fait elles le sont effectivement. Cependant, il faut faire un choix entre fonctionnalit et simplicit. Linux choisit la voie la plus difficile : celle sur laquelle il faut tre performant et fournir le plus de possibilits. La complexit qui en dcoule se voit immdiatement lors de son installation, mais elle se comprend car chaque tape permet de le rendre chaque fois plus puissant, en lui ajoutant une fonctionnalit de plus. Finalement, ce qui vous a motiv pendant toutes ces tapes, c'est sans aucun doute le dsir de bnficier de la stabilit et de la puissance de Linux. Vous ne serez pas du, et vous rendrez vite compte que Linux dpasse de loin les systmes soi-disant plus ergonomiques sur ces deux points, dans une telle proportion que vous finirez par ne plus pouvoir les utiliser. Et si vous y tes contraint, vous ne louerez plus leur facilit d'emploi, mais vous pestifrerez bel et bien contre leur comportement alatoire, leurs incohrences ou leurs plantages rptition. En ralit, comme vous allez bientt le dcouvrir, Linux est simple utiliser pour les travaux du quotidien. De plus, comme il l'a dj t dit au dbut de ce document, ce qui parat compliqu au premier abord est souvent tout simplement inhabituel. C'est l'usage que vous vous familiariserez avec les concepts Unix, et plus vous les utiliserez, plus vous les apprcierez. Aussi ne puis-je que vous souhaiter bonne continuation !
Annexe A. Options de configuration du noyau Table des matires
A.1. Menu General setup A.2. Menu Loadable module support A.3. Menu Block layer A.4. Menu Processor type and features A.5. Menu Power management options (ACPI, APM) DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 457
A.6. Menu Bus options (PCI, PCMCIA, EISA, MCA, ISA) A.7. Menu Executable file formats / Emulations A.8. Menu Networking A.9. Device Drivers A.10. Menu File systems A.11. Menu Instrumentation Support A.12. Menu Kernel hacking A.13. Menu Security options A.14. Menu Cryptographic options A.15. Menu Library routines Les questions poses par le programme de configuration du noyau 2.6.20 sont rcapitules ci-dessous. Les rponses recommandes ont t choisies pour correspondre la plupart des cas courants. Il ne s'agit pas des options recommandes pour installer un serveur ou pour un machine contenant des priphriques exotiques (carte vido, port infrarouge, etc.). Avec ce jeu d'options, un PC standard est suppos dmarrer sans poser de problmes. Vous devrez cependant certainement les adapter selon vos besoins. La plupart de ces options sont dcrites plus en dtail dans le chapitre traitant de la configuration du matriel. Je tiens prciser que certaines de ces options m'ont laiss dubitatif, tant dans l'incapacit absolue de les comprendre et de les tester. Ces options sont en gnral les options concernant des fonctionnalits avances ou des priphriques rarement utiliss. A.1. Menu General setup Ce menu comprend les options gnrales de configuration de Linux. L'option Prompt for development and/or incomplete code/drivers , permet d'activer les options de configuration des fonctionnalits en cours de dveloppement dans le reste du programme de configuration du noyau. Vous devez rpondre 'Y' si des pilotes particuliers sont ncessaires. Si l'on rpond 'N', les questions de configuration concernant ces fonctionnalits ne seront pas poses. Il est recommand de rpondre 'Y' cette question, car nombre de fonctionnalits rcentes sont marques comme tant exprimentales , bien qu'tant tout fait stable. L'option Local version - append to kernel release permet d'ajouter une chane de caractres spcifique au nom du noyau, afin de lui donner un nom spcifique et de le distinguer des noyaux gnriques pour une installation particulire. Il est recommand de laisser cette chane vide. L'option Automatically append version information to the version string permet d'ajouter automatiquement des informations de version pour les versions de dveloppement du noyau dans le numro de version. Cette fonctionnalit n'est utilise que par les dveloppeurs du noyau et n'est pas utile pour les utilisateurs normaux. Toutefois, on peut laisser la valeur par dfaut 'Y' sans crainte. La question Support for paging of anonymous memory permet d'activer le mcanisme de pagination de la mmoire virtuelle de Linux, couramment appel le swap . Comme cette fonctionnalit permet d'exploiter plus efficacement la mmoire vive pour les machines disposant d'une mmoire de taille raisonnable, il est recommand d'activer cette option et de rpondre 'Y' cette question. L'option System V IPC permet d'activer la gestion des communications inter-processus compatibles System V. C'est quasiment un standard sur tous les systmes Unix, il faut donc rpondre par 'Y'. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 458
L'option POSIX Message Queues permet d'activer l'implmentation d'un certain type de communications inter-processus appel les files de messages selon le standard POSIX. C'est une fonctionnalit standard qu'il est recommand d'activer sur tous les systmes Unix, il faut donc rpondre par 'Y'. L'option BSD Process Accounting permet d'activer les statistiques des applications utilis sur les systmes BSD. Ce mcanisme de surveillance peut tre utilis par quelques applications, aussi est-il recommand de rpondre par 'Y'. L'option BSD Process Accounting version 3 file format permet d'utiliser le format de fichier version 3 des fichiers de traces pour la surveillance des applications. La version recommande est 'N'. L'option Export task/process statistics through netlink (EXPERIMENTAL) permet d'activer les statistiques sur les applications via le mcanisme de communication gnrique entre le noyau et les processus utilisateurs NETLINK. Contrairement au mcanisme de surveillance BSD, celui-ci permet d'optenir les statistiques des applications sont disponibles par un envoir commande. Les informations sur le processus sont galement fournies lors de la fin du processus. La rponse recommande est 'N'. L'option Enable per-task delay accounting (EXPERIMENTAL) permet d'activer la comptabilisation du temps pass par les processus dans les oprations bloquantes. Ces informations peuvent tre utilises pour un meilleur ordonnancement des tches dans le systme. La rponse recommande est 'N'. L'option Enable extended accounting over taskstats permet d'activer la collecte de statistiques complmentaires pour les transfrer via l'interface taskstats. Cette option vous donnera l'accs l'option Enable per-task storage I/O accounting , qui permet de prendre en charge les statistiques sur les entres/sorties de chaque processus. La rponse recommande est 'N' pour ces deux options. L'option User Namespaces permet d'activer une fonction du noyau destine certains logiciels de virtualisation, et dont le but est de modifier les informations sur la nature du systme renvoye aux programmes excuts dans des serveurs virtuels. La rponse recommande est 'N'. L'option Auditing support permet de prendre en charge les fonctionnalits d'audit pour les autres sous-systme de scurit de Linux tels que SELinux. Cette fonctionnalit est encore peu utilise et la rponse recommande est 'N'. L'option Enable system-call auditing support permet d'activer les fonctionnalits d'audit des appels systmes conjointement avec d'autres sous-systmes de scurit de Linux tels que SELinux. Cette fonctionnalit est encore peu utilise et la rponse recommande est 'N'. L'option Kernel .config support permet d'inclure les options de configuration ainsi que la description complte de l'environnement de compilation du noyau dans le noyau lui-mme. Cela permet de retrouver la configuration utilise pour compiler le noyau, soit pour en regnrer un, soit pour mieux pouvoir dboguer le noyau. Cette option vous donnera accs l'option Enable access to .config through /proc/config.gz , qui permet de crer une entre dans le systme de fichiers virtuel /proc/ afin de rcuprer ces informations. Ces options tant plus rserves aux dveloppeurs du noyau qu'aux utilisateurs normaux, la rponse recommande est 'N'. L'option Kernel log buffer size (16 => 64KB, 17 => 128KB) permet de spcifier la taille du tampon circulaire utilis pour l'affichage des messages de traces du noyau. Si cette taille est trop petite et que le noyau gnre beaucoup de messages lors du dmarrage ou lors du chargement du priphrique, certains messages peuvent tre perdus. De ce fait, le dboguage de la configuration peut en tre complique, et cette option devient alors utile. La taille indique est la puissance de deux utiliser pour spcifier la taille effective du tampon. Les noyaux utilisant l'ACPI peuvent gnrer DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 459
beaucoup de messages de traces lors de la dtection du matriel, aussi est-il recommand de fixer la taille de ce tampon 15 au moins. L'option Cpuset support permet d'activer les fonctionnalits de partitionnement du systme en groupes de processeurs et de nuds de mmoire sur les architectures multiprocesseur NUMA. La rponse recommande est 'N'. L'option Create deprecated sysfs files permet de prendre en charge des fins de compatibilit ascendante certains fichiers du systme de fichiers virtuel /sys/ qui sont devenus obsoltes. Ces fichiers ne doivent plus tre utiliss de nos jours, aussi est-il recommand de rpondre 'N' cette question, sauf si votre distribution est antrieure 2006. L'option Kernel->user space relay support (formerly relayfs) permet de prendre en charge une interface spciale expose par certains systmes de fichiers virtuels permettant de transfrer rapidement des grandes quantits de donnesentre le noyau et l'espace utilisateur. La rponse recommande est 'N L'option Initial RAM filesystem and RAM disk (initramfs/initrd) support permet d'activer la gestion des systmes de fichiers virtuels en mmoire que les gestionnaires de chargement peuvent utiliser pour charger le systme de fichiers racine lors du dmarrage sans disque. Cette fonctionnalit est utilise par les programmes d'installation, les disquettes de rcupration et les Live CD de dmonstration. Cette opion vous donnera accs l'option Initramfs source file(s) et aux options User ID to map to 0 (user root) et Group ID to map to 0 (group root) , qui permettent d'activer la prise en charge du systme initrd et d'indiquer respectivement un identifiant d'utilisateur et un identifiant de groupe pour les fichiers qui devront tre affects au superutilisateur dans le systme de fichiers racine du disque virtuel. Cette n'tant gnralement utilise que pour les programmes d'installation, vous pouvez rpondre 'N' cette question. L'option Optimize for size (Look out for broken compilers!) permet d'optimiser la compilation du noyau pour rduire sa taille. Certaines versions de GCC gnrent du code faux avec ces options, auquel cas une mise jour s'imposera. La rponse recommande est 'N'. L'option Configure standard kernel features (for small systems) permet d'accder un sous-menu contenant des options de fonctionnalits que l'on dsactive gnralement lorsque l'on veut faire un noyau de petite taille, par exemple pour un systme embarqu. Les options de ce sous-menu sont dcrites ci-dessous. La rponse recommande est 'N'. L'option Choose SLAB allocator permet de choisir l'allocateur mmoire utilis en interne pour les oprations de gestion mmoire courantes dans le noyau. Deux algorithmes sont disponibles, l'algorithme classique (SLAB) et un nouvel algorithme plus performant (SLUB). Le nouvel algorithme est appel remplacer l'ancien mais n'est pas forcment totalement stabilis. Il est donc recommand d'utiliser l'ancien algorithme pour quelques temps encore et la rponse recommande est 'SLAB'. A.1.1. Sous-menu Configure standard kernel features (for small systems) L'option Enable 16-bit UID system calls , permet de dsactiver le support des appels systmes utilisant les identifiants d'utilisateurs cods sur 16 bits, pour ne conserver que les appels systmes 32 bits. La rponse recommande est 'N', car des programmes peuvent encore utiliser des identifiants 16 bits. L'option Sysctl syscall support , permet d'activer l'appel systme sysctl permettant de modifier les paramtres de configuration gnraux du noyau. Cet appel systme s'est avr difficile maintenir et a t remplac par un accs plus simple ces paramtres via le systme de fichiers virtuel /proc/. Il est DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 460
donc possible de dsactiver cet appel systme sur les systmes les plus rcents. Toutefois, on rpondre 'Y' pour assurer la compatibilit ascendante. L'option Load all symbols for debugging/kksymoops , permet de supprimer les informations symboliques de dbogage du noyau pour le cas o celui-ci planterait. Cela permet de rduire la taille du noyau sensiblement. La rponse recommande est 'N'. La sous-option Include all symbols in kallsyms permet d'ajouter toutes les informations symboliques de dboguage au noyau. Ces informations ne sont pas utilises par le noyau en gnral, mais peuvent l'tre par certains dbogueurs. La rponse recommande est donc 'N'. La sous-option Do an extra kallsyms pass est une option qui ne doit normalement jamais tre active. Elle permet de contourner un bogue de gnration du noyau qui est en attente de correction. La rponse recommande est 'N'. L'option Support for hot-pluggable devices permet d'activer la gestion des priphriques connectables chaud (c'est--dire pendant que le systme fonctionne). Parmi ces priphriques, on rencontre couramment les cartes PCMCIA des portables, mais galement les priphriques USB et FireWire, ainsi que les cartes PCI connectables chaud. Cette option est en particulier ncessaire pour l'utilisation des cartes PCMCIA sur les portables. Elle vous donnera l'accs au menu PCCARD (PCMCIA/CardBus) support , qui permet d'activer la gestion des cartes PCMCIA 32 bits (cela n'est pas ncessaire pour utiliser les cartes PCMCIA 16 bits), au menu PCI Hotplug Support , qui permet de prendre en charge la gestion des cartes PCI connectables chaud, et l'option Hotplug firmware loading support , qui permet le chargement des firmwares via une interface standard du noyau par les gestionnaires de priphriques. Cette option est facultative, mais fortement conseille, pour l'utilisation des priphriques USB. Ces priphriques ne seront parfois pas configurs automatiquement lorsque vous les connecterez chaud si vous ne l'activez pas. En fait, pour que la configuration des priphriques USB connects chaud fonctionne, vous devez galement activer la gestion des modules du noyau, ainsi que les options Kernel module loader et Hotplug firmware loading support . Si cette option est active, le noyau appellera alors le programme de configuration udev, ou, selon votre distribution, le programme hotplug pour charger le gestionnaire de priphriques appropri lorsqu'un priphrique sera connect et pour les configurer. La rponse recommande est 'Y'. L'option Enable support for printk permet d'activer les traces du noyau. Ces traces sont parfois dsactives afin d'en rduire la taille. Cette fonctionnalit est utile pour les systmes embarqus, mais en exploitation normale ces traces sont souvent d'une grande aide. Aussi la rponse recommande est- elle 'Y'. L'option BUG() support permet d'activer le support des vrifications des des erreurs fatales ou irrcuprables dans le noyau. Ces vrifications sont parfois dsactives dans les systmes embarqus, mais elles sont vivement recommandes pour les systmes normaux. La rponse recommande est 'Y'. L'option Enable ELF core dumps permet de prendre en charge la fonctionnalit de vidage sur incident de la mmoire des processus dans les fichiers core . Supprimer cette fonctionnalit peut conomiser un peu de mmoire. La rponse recommande est 'Y'. L'option Enable full-sized data structures for core permet d'autoriser l'utilisation des structures de donnes compltes des algorithmes du noyau. Certaines structures peuvent tre rduites en taille, moyennant une perte de performances. Cela peut tre utile pour les systmes embarqus, mais pour les systmes normaux, il faut rpondre 'Y'. L'option Enable futex support permet de raliser des synchronisations rapides entre les diffrents processus utilisateurs. Cette fonctionnalit est nouvelle et n'est pas forcment utilise par les applications des systmes embarqus, auquel cas elle pourra tre supprime. Sur un systme normal en revanche, cette option est intressante, aussi la rponse recommande est-elle 'Y'. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 461
L'option Enable eventpoll support permet d'optimiser les oprations d'entre/sortie des processus. Cette fonctionnalit tant rcente, certains systmes embarqus, qui ne l'utilisent pas, peuvent ne pas en avoir besoin. Un systme classique en revanche peut en bnficier, aussi la rponse recommande est-elle 'Y'. Les options Enable signalfd() system call , , Enable timerfd() system call , et Enable imerfd() system call permettent de prendre en charge des appels systmes qui peuvent tre utiles des applications pour grer les diffrents vnements que le systme d'exploitation peut produire de manire gnrique. Ces fonctionnalits sont trs utiles et de nombreux programmes les utiliseront sous peu, aussi est-il recommand de rpondre 'Y' ces questions. L'option Use full shmem filesystem permet d'activer la gestion complte du systme de fichiers virtuel /dev/shm/, qui est utilis pour la gestion des segments de mmoire partags. En dsactivant cette option, ce systme de fichiers est remplac par un systme de fichiers virtuel en mmoire plus lger, ce qui peut tre utile pour des configurations sans swap. La rponse recommande est 'Y'. L'option Enable VM event counters for /proc/vmstat permet d'activer la prise en charge des statistiques concernant la gestion de la mmoire. Ces statistiques ne sont pas ncessaires pour le noyau, aussi est-il possible de ne pas les prendre en charge afin d'conomiser de la place. La rponse recommande est 'Y'. L'option Enable SLUB debugging support permet d'activer la gestion des fonctions de dboguage et de diagnostic du nouvel allocateur mmoire SLUB. La rponse recommande est 'Y'. A.2. Menu Loadable module support L'option Enable loadable module support permet l'emploi des modules par le noyau. Il est recommand de rpondre 'Y' cette question. L'option Module unloading permet de dcharger des modules en cours d'excution. Les modules ne seront dchargs que s'ils ne sont pas utiliss, toutefois, il est possible de forcer le dchargement d'un module mme si le noyau considre qu'il est utilis (ce qui est bien entendu extrmement dangereux). Pour cela, il faut activer la sous-option Forced module unloading . Il est recommand de rpondre 'Y' ces questions. L'option Module versioning support (EXPERIMENTAL) permet d'enregistrer des informations de version dans les modules du noyau afin de dtecter les conflits entre les modules compils pour une autre version du noyau ou compils par un autre compilateur que celui qui a compil le noyau. Cette fonctionnalit peut permettre l'emploi des modules normalement inutilisables, mais elle ne garantit pas un fonctionnement correct pour autant. Il est donc recommand de rpondre par 'N' cette question. L'option Source checksum for all modules permet de demander le calcul d'une somme de contrle sur les fichiers sources des modules du noyau. Cela permet aux dveloppeurs du noyau d'tre certains que les sources de ces modules n'ont pas t modifies et sont identiques les leurs lorsqu'ils analysent un rapport d'anomalie. Cette fonctionnalit n'est normalement pas utile pour un utilisateur standard, aussi la rponse recommande cette question est-elle 'N'. L'option Automatic kernel module loading donne la possibilit au noyau de charger lui-mme les modules du noyau. Cette fonctionnalit est ncessaire pour la bonne marche du systme, aussi est-il recommand de rpondre par 'Y' cette question. A.3. Menu Block layer DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 462
L'option Enable the block layer permet de dsactiver la prise en charge des priphriques de type bloc, ce qui peut tre utile pour les noyaux destins des appareils embarqus. Cela supprime des fonctionnalits essentielles aux systmes de fichiers, aussi la rponse recommand est-elle 'N'. L'option Support for Large Block Devices permet de prendre en charge les priphriques de type bloc de grande dimensions (c'est--dire plus de deux tra octets). La rponse recommand est 'N'. L'option Support for tracing block io actions permet de prendre en charge le suivi des oprations sur les priphriques de type bloc des fins d'analyse. La rponse recommand est 'N'. L'option Support for Large Single Files permet de prendre en charge les fichiers de trs grande dimensions (c'est--dire de taille suprieure deux tra octets). La rponse recommand est 'N'. L'option Block layer SG support v4 (EXPERIMENTAL) permet de prendre en charge une nouvelle implmentation des priphriques SCSI gnrique, qui est utilise par les pariphriques SCSI, les graveurs et les disques SATA. Cette nouvelle implmentation permet de prendre en charge des oprations plus complexes que l'ancienne implmentation, mais elle est encore marque exprimentale. Aussi la rponse recommand est-elle 'N'. A.3.1. Sous-menu IO Schedulers L'option Anticipatory I/O scheduler active l'ordonnanceur d'entres/sorties par dfaut de Linux. Cet ordonnanceur peut effectuer les oprations de manire anticipe lorsqu'il en a la possibilit, afin d'avoir viter de les faire de manire bloquante lorsque le systme sera peut-tre plus occup des oprations plus importantes que les entres/sorties. Cette politique permet donc d'augmenter les performances de manire gnrale, sauf dans de rares cas d'utilisation, essentiellement lors de l'utilisation de certaines bases de donnes. La rponse recommande est 'Y'. Cet ordonnanceur est l'ordonnanceur par dfaut de Linux. L'option Deadline I/O scheduler active un ordonnanceur plus simplifi et plus compact, relativement correct et parfois plus rapide que l'ordonnaceur de l'option Anticipatory I/O scheduler , en particulier avec certaines bases de donnes. Cette option peut donc tre utile dans certaines applications serveur. La rponse recommande est 'Y'. Il peut tre slectionn comme ordonnanceur par dfaut du systme au dmarrage avec la ligne de commande elevator=deadline du noyau. L'option CFQ I/O scheduler active un ordonnanceur qui rpartit les requtes d'entre/sortie de manire quitable entre tous les processus du systme. Cet ordonnanceur garantit donc une meilleure rpartition des accs aux priphriques que les autres, ce qui le rend trs adapt pour les systmes o la ractivit des processus doit tre maximale. C'est l'ordonnanceur de prdilection pour les ordinateurs personnels, la rponse recommande est donc 'Y'. Il peut tre slectionn comme ordonnanceur par dfaut du systme au dmarrage avec la ligne de commande elevator=cfq du noyau. L'option Default I/O scheduler permet de slectionner l'ordonnanceur par dfaut utilis par Linux. Si aucun des ordonnanceur prcdent n'est disponible, les oprations d'entre/sortie se feront dans l'ordre direct des demandes des sous-systmes utilisateurs (ordonnanceur No-op ). L'ordonnanceur par dfaut peut tre modifi en excution, pour chaque priphrique, via le systme de fichier /sys/. La rponse recommande est 'CFQ'. A.4. Menu Processor type and features L'option Symmetric multi-processing support permet d'activer le support de plusieurs processeurs. Cela comprend les ordinateurs multiprocesseurs, ainsi que les ordinateurs utilisant un processeur hyperthread ou curs curs, aussi est-il recommand de rpondre 'Y' cette question. En pratique, DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 463
il est mme conseill d'activer cette option mme sur les ordinateurs un seul processeur effectif de nos jours. L'option Subarchitecture Type permet d'accder un sous-menu pour indiquer le type de machine pour l'architecture de processeur pour lequel le noyau doit tre dfini. Pour la plupart des machines bases sur des processeurs x86 ou x86-64 d'AMD, le type d'architecture utilis est PC-Compatible , c'est donc l'option recommande. L'option Paravirtualization support permet d'activer la prise en charge de l'excution du noyau au sein d'une machine virtuelle sur les processeurs disposant des fonctions de paravirtualisation. Cette option n'est utile que pour les systmes virtualiss, qui sont ainsi modifis afin de s'excuter de manire plus performante dans une machine virtuelle. Toutefois, elle peut ralentir l'excution du noyau en dehors de ces machines virtuelles. Cette option vous donnera accs aux options de configuration des deux principales technologies de virtualisation, savoir Xen (option Enable support for Xen hypervisor) et VMWare (option VMI Paravirt-ops support). La rponse recommande est donc 'N'. L'option Processor family vous permet de spcifier le type de processeur sur lequel le noyau fonctionnera. Choisissez le processeur dont vous disposez. L'option Generic-x86-64 permet d'activer la prise en charge du jeu d'instructions 64 bits commun Intel et AMD, et donc de raliser des noyaux portables. Cette option est destine aux noyaux de distributions, qui doivent tre gnriques. Il est toutefois recommand de choisir le type processeur effectivement utilis. L'option Generic x86 support est similaire la prcdente, mais pour les processeurs 32 bits. Elle permet d'activer la prise en charge d'optimisation pour certains processeurs x86, mme si le noyau n'est pas compil spcifiquement pour ces processeurs. Cette option est destine aux noyaux de distributions, qui doivent tre gnriques mais qui peuvent chercher bnficier de certaines fonctionnalits des processeurs rcents. Il est donc recommand de rpondre 'N' cette option et de choisir le type processeur adquat dans l'option Processor family . L'option HPET Timer Support permet d'activer la prise en charge des horloges temps-rel de nouvelle gnration sur les systmes les plus rcents. En l'absence d'une telle horloge, l'horloge standard sera utilise. Vous pouvez rpondre 'Y' cette question si vous disposez d'un ordinateur rcent, autrement rpondez 'N'. L'option Provide RTC interrupt permet d'activer l'mulation de l'horloge temps-rel RTC sur les machines 64 bits, qui utilisent normalement systmatiquement les horloges temps-rel HPET. La rponse recommande est 'Y'. L'option permet de slectionner le nombre maximum de processeurs disponibles sur la machine. Cette option n'est accessible que si vous avez activ la prise en charge des processeurs multiples en rpondant par 'Y' l'option Symmetric multi-processing support . Vous devez dans ce cas indiquer le nombre de processeurs rels ou virtuels dont votre machine dispose. Chaque processeur virtuel des processeurs hyperthreads compte pour un processeur part entire, ainsi que chaque cur des processeurs multi-curs. L'option SMT (Hyperthreading) scheduler support permet de prendre en charge un ordonnanceur de tches spcifique pour les processeurs hyperthreads. Ces processeurs partageant les mmes caches de mmoire, la migration des tches d'un processeur virtuel un autre peut en effet tre optimise. Cet ordonnanceur prend donc en compte les spcificits des processeurs hyperthreads, tels que les derniers pentiums IV. Rpondez par 'Y' si vous disposez d'un tel processeur, et par 'N' dans le cas contraire. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 464
De la mme manire, l'option Multi-core scheduler support permet de prendre en charge un ordonnanceur de tches spcifique pour les processeurs multi-curs. Rpondez par 'Y' si vous disposez d'un tel processeur, et par 'N' dans le cas contraire. L'option Preemption Model permet de spcifier si le noyau lui-mme peut tre prempt pendant les appels systmes ou non. La premption des appels systmes rend le noyau lui-mme multitche, et permet donc d'augmenter la ractivit du systme. Dans certaines circonstances, cela peut aussi accrotre le taux d'utilisation du processeur. Toutefois, cela peut aussi diminuer lgrement la bande passante dans les oprations d'entre / sortie. L'activation du multitche dans le noyau est recommande pour les noyaux destins des applications temps-rel ou multimdia, et dconseille pour les noyaux destins aux serveurs. De plus, si vous dcidez d'autoriser la prise en charge du multitche au sein des appels systmes, vous pourrez faire en sorte que celui-ci soit coopratif (le noyau lui-mme vrifiera si d'autres tches n'ont pas besoin d'tre excutes) ou premptif (le noyau pourra tre interrompu n'importe quel moment), ce qui augmentera la ractivit du systme. Le choix recommande est Preemptible Kernel (Low-Latency Desktop) , sauf si vous envisager d'installer un serveur qui sera utilis intensivement. L'option Preempt The Big Kernel Lock permet d'autoriser les mcanismes de premption mme au sein de la section critique globale du noyau. Cette option permet d'amliorer encore plus la ractivit du systme, et est recommande pour les noyaux destins des machines de bureau. La rponse recommande est 'Y'. L'option Local APIC support on uniprocessors permet d'activer les contrleurs d'interruptions programmables intgrs dans certains processeurs. Certaines machines disposent d'un tel processeur, si c'est votre cas, vous pouvez rpondre par 'Y' cette question. Cette option n'est disponible que si vous avez rpondu 'N' la question Symetric multi-processing support . L'option IO-APIC support on uniprocessors permet d'activer la gestion des contrleurs d'interruption programmables avancs. Ces contrleurs sont utiliss sur les machines multi- processeurs, mais certaines cartes mres monoprocesseurs les utilisent. Si c'est le cas de votre carte mre, vous pouvez rpondre par 'Y' cette question. L'option Machine Check Exception permet d'activer la surveillance de l'tat de l'ordinateur (lvation anormale de temprature, pannes, etc.) afin de contourner les problmes matriels ou d'arrter le systme avant une destruction de composants ou des pertes de donnes irrmdiables. L'option Check for non-fatal errors on AMD Athlon/Duron / Intel Pentium 4 permet d'activer la surveillance des problmes mineurs, qui ne ncessitent pas un arrt de la machine, mais pour lesquels on dsire malgr tout avoir une trace dans les traces du noyau. L'option check for P4 thermal throttling interrupt. permet de gnrer une trace sur les systmes base de Pentium IV lorsque ceux- ci surchauffent. Pour les machines 64 bits, l'option Intel MCE features et AMD MCE features permettent d'activer les fonctions de surveillance des systmes telles que la temprature du processeur et les erreurs du bus mmoire. La rponse recommande est 'Y' pour ces options si votre systme dispose d'un processeur de ce type. L'option Enable VM86 support permet de prendre en charge le mode 8086 virtuel des processeurs x86 32 bits. Ce mode permet de faire fonctionner les programmes 16 bits, tels que les vieux programmes DOS ou certaines fonctions du BIOS qui n'existent qu'en mode 16 bits. Cette option est en particulier ncessaire pour permettre une excution performante des mulateurs DOS tels que DOSEMU, ou pour changer de mode graphique sur certaines cartes graphiques. La rponse recommande est 'Y'. L'option Toshiba Laptop support permet d'activer la gestion d'nergie 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'. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 465
L'option Dell Laptop support permet d'activer la gestion d'nergie pour les portables de marque Dell. Vous pouvez rpondre 'Y' cette question si vous dsirez utiliser votre noyau sur un portable Dell. La rponse recommande est 'N'. L'option Enable X86 board specific fixups for reboot permet d'activer un contournement un bogue matriel et logiciel dans le BIOS prsent sur certaines machines et empchant le systme de redmarrer correctement. La rponse recommande est 'N'. L'option /dev/cpu/microcode - Intel IA32 CPU microcode support permet d'activer la reprogrammation du microcode des processeurs Intel postrieurs aux Pentium Pro. l'aide de cette fonctionnalit, vous pourrez mettre jour le microcode de votre processeur (cette mise jour n'est pas permanente, le microcode doit tre recharg chaque dmarrage de la machine). Notez que cette option impose d'utiliser le systme de fichiers virtuel /dev/ du noyau. Il est donc ncessaire d'activer l'option /dev filesystem support (EXPERIMENTAL) du menu File systems . En gnral, il n'est pas ncessaire de mettre jour le microcode de son processeur, moins que celui-ci ne contienne un bogue incontournable ou que vous n'ayez optimiser spcialement votre machine pour une utilisation particulire. La rponse recommande est donc 'N'. L'option /dev/cpu/*/msr - Model-specific register support permet d'activer la gestion du registre MSR sur les processeurs x86. Il existe un registre de ce type pour chaque processeur, que l'on trouvera dans les sous-rpertoires portant comme nom les numros de chaque processeur. La rponse recommande est 'N'. L'option /dev/cpu/*/cpuid - CPU information support permet d'obtenir les informations fournies par l'instruction CPUID pour chaque processeur de la machine. Il existe un registre de ce type pour chaque processeur, que l'on trouvera dans les sous-rpertoires portant comme nom les numros de chaque processeur. La rponse recommande est 'N'. L'option High Memory Support vous permet d'indiquer le mode de gestion de la mmoire que le noyau utilisera. Pour la plupart des gens, dont les machines disposent de moins d'un Go de mmoire, la rponse recommande est off . Si votre machine dispose d'un gigaoctet ou plus de mmoire, mais moins de quatre Go, vous pouvez changer le mode d'adressage du noyau pour grer la totalit de votre mmoire, en choisissant l'option 4GB . Les processeurs x86 ne permettent pas d'adresser plus de 4Go de mmoire simultanment en raison de leur bus d'adresses 32 bits. Cependant, ils peuvent grer jusqu' 64Go de mmoire par tranches de 4Go, l'aide d'une extension spcifique aux processeurs de type Pentium Pro. Si vous disposez d'une telle machine, vous devez choisir l'option 64GB . L'option Memory Split permet de choisir le type de dcoupage de l'espace d'adressage des processus entre la plage d'adresses utilisable par les programmes et la plage d'adresse correspondante une copie de l'espace d'adressage du noyau. Sous Linux, la mmoire du noyau est projete systmatiquement dans l'espace d'adressage de chaque programme utilisateur (mais n'est pas lisible pour des raisons de scurit videntes), afin de permettre au noyau d'accder directement la mmoire du programme lors des appels systmes. Il est donc d'usage de rserver le gigaoctet suprieur des quatre gigaotcets d'espace d'adressage des processeurs 32 bits pour y placer une projection de la mmoire du noyau. Cependant, si le systme dispose de plus d'un gigaoctet de mmoire, le noyau ne pourra pas accder directement la totalit de la mmoire sans frais supplmentaires, car il devra modifier cette projection. Cette option permet donc de spcifier la manire dont ce dcoupage est ralis. La valeur classique est 3G/1G user/kernel split , ce qui est donc la valeur recommande. Une variante est disponible pour les machines disposant exactement d'un gigaoctet de mmoire. Les autres options permettent d'accrotre la taille de l'espace d'adressage du noyau, au dtriment de l'espace d'adressage des processus. Utiliser ces options ncessite de bien connatre les processus utiliss, car rduire leur espace d'adressage peut conduire des situations de fragmentation mmoire ou d'checs de rservation de mmoire susceptibles de les empcher de fonctionner correctement. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 466
L'option PAE (Physical Address Extension) Support permet d'activer le mode d'adressage des pages tendu sur les processeurs x86. Ce mode est ncessaire pour que le bit NX soit utilisable (bit permettant d'viter que les zones de donnes des programmes soient excutables, et donc viter toute une catgorie d'attaque des virus et des pirates sur des programmes bogus leur permettant de contrler une partie de leur mmoire). Toutefois, ce mode tendu consomme plus de ressources dans le systme. La rponse recommande est 'N'. Si vous dsirez absolument bnficier de la protection du bit NX et d'une grande quantit de mmoire vive, il est prfrable d'utiliser une distribution 64 bits, ce qui vite d'avoir recours des contournements plus ou moins efficaces. L'option Non Uniform Memory Access (NUMA) Support (galement appele NUMA Memory Allocation and Scheduler Support (EXPERIMENTAL) dans la configuration pour les processeurs 32 bits) permet de prendre en charge les ordinateurs disposant de plusieurs types de mmoire, situs sur les bus de diffrents processeurs. Ces mmoires ont la spcificit d'avoir un temps d'accs qui n'est pas uniforme et dpend du processeur qui y accde. Ainsi, dans ce modle, il est important que les processus utilisent au maximum la mmoire la plus proche du processeur sur lequel ils s'excutent, aussi des traitements particuliers doivent-ils tre raliss lors de l'allocation de mmoire et lors de l'ordonnancement. Les fonctionnalits NUMA pour les processeurs 32 bits sont extrmement exprimentales et ne doivent jamais tre utilises. Sur les machines 64 bits, elles sont tout fait utilisables, mais les machines de ce type sont encore relativement rares. De ce fait, la rponse recommande cette option est 'N'. Cette option vous donnera accs aux options Old style AMD Opteron NUMA detection et ACPI NUMA detection , qui permet de choisir la mthode de dtection des zones de mmoire non uniformes (directement via le bus mmoire ou par les informations de l'ACPI). Elle vous donnera galement accs l'option NUMA emulation , qui permet de simuler une machine mmoire non uniforme. Cette option est rserve aux dveloppeurs du noyau, et la rponse recommande est 'N'. L'option Memory model permet de choisir le modle utilis par l'ordinateur pour grer la mmoire physique. La plupart des ordinateurs ont un modle mmoire continu et linaire, ce qui correspond l'option Flat Memory (valeur par dfaut recommande). D'autres ordinateurs peuvent utiliser des modles o la mmoire est constitue de diffrentes zones discontigus, et ncessiter ainsi le choix Sparse Memory . L'option Allow for memory hot-add permet d'activer la prise en charge de certains serveurs sur lesquels de la mmoire peut tre ajoute chaud, sans teindre la machine. La rponse recommande est 'N'. L'option Page migration permet d'activer la fonctionnalit de dplacement de pages mmoires d'un nud NUMA vers un autre, afin de rapprocher au maximum les pages mmoires des processus qui les utilisent. La rponse recommande est 'N'. L'option 64 bit Memory and IO resources (EXPERIMENTAL) , permet d'accder aux ressources mmoires et d'entre/sortie en 64 bits sur les machines 32 bits. La rponse recommande est 'N'. L'option Allocate 3rd-level pagetables from highmem , permet de placer les structures de donnes du gestionnaire de mmoire virtuelle en mmoire haute. Ces structures ayant une taille proportionnelle la quantit de mmoire effectivement installe, cette option permet d'viter qu'elles ne saturent la mmoire basse. La rponse recommande pour cette option est 'Y' si vous vous trouvez dans ce cas de configuration. L'option Math emulation permet d'activer l'mulateur d'unit de calcul en virgule flottante, pour les processeurs qui n'en disposent pas (386 et 486 SX). Si vous avez un ordinateur rcent, choisissez 'N'. L'option MTRR (Memory Type Range Register) support permet d'activer le support des plages mmoires du processeur. Celui-ci peut permettre l'acclration des transferts de donns dans les plages DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 467
mmoires des priphriques, en particulier pour les cartes graphiques. Cette fonctionnalit n'est disponible que pour les processeurs de type Pentium Pro et postrieurs. Si vous avez un ordinateur rcent, choisissez 'Y'. L'option Boot from EFI support (EXPERIMENTAL) permet de prendre en charge les services systmes EFI disponibles sur certaines machines lors du dmarrage. L'option recommande est 'N'. L'option Enable kernel irq balancing permet de rpartir le traitement des interruptions matrielles sur les diffrents processeurs dont la machine dispose. Cette option n'est disponible que si l'option Symmetric multi-processing support a t active. La rponse recommande est 'Y'. L'option Enable seccomp to safely compute untrusted bytecode permet d'activer le support de bacs sable pour isoler des applications dsirant utiliser du code non authentifi dans un systme scuris. Cette option permet aux applications de restreindre les appels systmes qu'elles peuvent raliser, et empcher ainsi qu'elles soient dtournes de leur fonctionnalit initiale. La rponse recommande est 'N'. L'option Timer frequency permet de slectionner la frquence d'interruptions de l'horloge du noyau. Les commutations de tche tant ralises lors de ces interruptions, une frquence leve permet d'obtenir une forte ractivit du systme. Toutefois, cette frquence ne doit pas tre trop leve, afin d'viter de passer trop de temps excuter l'ordonnanceur du systme. La frquence de 1000 Hz est donc la frquence recommande pour une machine de bureau, alors que les frquences infrieures sont recommandes sur les machines disposant d'un grand nombre de processeurs ou devant tre utilises en tant que serveur. La frquence de 300Hz est galement intressante pour les machines destines au multimdia, parce que cette frquence est divisible par les frquences d'image des films au format PAL et NTSC. La rponse recommande est 300 Hz . L'option IIOMMU support permet dsactiver le support des accs DMA pour les machines embarques. Les accs DMA sont utiliss par un grand nombre de pilotes et sont importantes pour les performances, aussi la rponse recommande est-elle 'Y'. L'option IBM Calgary IOMMU support permet de prendre en charge les contrleurs DMA Calgary d'IBM, qui permettent de faire fonctionner les priphriques PCI 32 bits sur des machines 64 bits disposant de plus de 3 Go de mmoire. Cette fonctionnalit permet galement de diagnostiquer des bugs trs graves de corruption de la mmoire que certains pilotes de priphriques mal programms seraient susceptibles de faire. Le noyau fera normalement le bon choix dans l'utilisation de cette fonctionnalit, mais elle reste ddie certaines machines seulement. La rponse recommande est donc 'N'. L'option Should Calgary be enabled by default? permet d'activer le contrleur mmoire Calgary par dfaut au dmarrage du systme. La rponse recommande est 'Y'. L'option kexec system call (EXPERIMENTAL) permet d'activer le support du redmarrage du systme directement dans un nouveau noyau, sans avoir redmarrer compltement la machine. La rponse recommande est 'N'. L'option kernel crash dumps (EXPERIMENTAL) permet d'activer la gnration automatique d'un rapport de plantage aprs chaque redmarrage par l'intermdiaire de l'appel systme kexec. Cela permet d'obtenir des informations mme aprs un plantage du noyau svre. La rponse recommande est 'N'. L'option Physical address where the kernel is loaded permet de spcifier l'adresse de chargement du noyau au dmarrage. Cela peut en particulier tre utile pour s'assurer, dans le cas o la fonctionnalit de gnration automatique de rapport de plantage est active, que le noyau qui effectue le rapport n'est DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 468
pas recharg au mme emplacement que celui qui a plant. Il est fortement recommand de ne pas changer la valeur par dfaut de cette option. L'option Build a relocatable kernel permet de raliser un noyau relogeable au del du premier mga octet de la mmoire. Le noyau ainsi gnr est plus gros, mais les informations complmentaires ne sont pas conserves une fois qu'il est charg en mmoire. La rponse recommande est 'N'. L'option Alignment value to which kernel should be aligned permet d'indiquer la valeur de l'alignement en mmoire pour le chargement du noyau. Le noyau s'arrange pour tre excut partir d'une adresse correctement aligne dans tous les cas, mais il est vivement recommand de ne pas modifier la valeur par dfaut de cette option. L'option Support for suspend on SMP and hot-pluggable CPUs (EXPERIMENTAL) permet de prendre en charge le branchement chaud de processeurs dans l'ordinateur. Cette fonctionnalit est un prrequis la fonction de mise en veille sur disque sur les machines multiprocesseur. La rponse recommande est 'N'. L'option Enable -fstack-protector buffer overflow detection permet d'activer la prise en charge de la dtection des dbordements de tampons allous localement sur la pile, qui constituent une catgorie de bugs extrmement dangereux, car ils peuvent permettre un pirate de prendre le contrle du programme fautif. Cette fonctionnalit requiert un compilateur rcent. La rponse recommande est 'N'. L'option Use stack-protector for all functions permet d'activer la dtection des dbordements de tampons pour toutes les fonctions du noyau, et non uniquement celles qui dclarent des tampons sur la pile. La rponse recommande est 'N'. L'option Function reordering permet, si l'on dispose d'outils de compilation relativement rcents, de rarranger les fonctions de l'ensemble du noyau afin d'optimiser les accs mmoire pour ne pas polluer le cache du processeur destin optimiser les mcanismes de gestion de la mmoire virtuelle. La rponse recommande est 'N'. L'option Compat VDSO support permet de charger la bibliothque dynamique de ralisation des appels systmes un emplacement fixe dans la mmoire des processus. Sous Linux, les appels systmes sont raliss via des fonctions places automatiquement par le noyau dans l'espace d'adressage des processus lors de leur lancement. Ces fonctions sont utilises par la bibliothque C, et s'adaptent la configuration du noyau et aux conventions d'appel qu'il utilise, rendant ainsi la bibliothque C indpendante du noyau et les appels systmes plus performants. Les noyaux rcents positionnent ces fonctions alatoirement dans l'espace d'adressage du noyau pour des raisons de scurit, rendant ainsi difficilement ralisable le dtournement des appels systmes par un attaquant qui aurait russi prendre le contrle d'un programme dfaillant. Toutefois, seules les bibliothques C 2.3.3 ou plus sont capables de grer ce placement alatoire des fonctions d'interfaage avec le noyau. Cette option permet donc, pour les anciennes bibliothques, d'utiliser l'ancienne politique de placement (en fin d'espace d'adressage du processus). Si vous utilisez un systme rcent, cela n'est pas ncessaire et la rponse recommande est 'N'. A.4.1. Sous-menu Firmware Drivers Ce sous-menu permet d'activer l'accs certaines fonctionnalits fournies par les firmware de certaines machines. L'option BIOS Enhanced Disk Drive calls dtermine boot disk (EXPERIMENTAL) permet de rcuprer dans le BIOS les informations sur le disque dur partir duquel l'amorage du systme s'est fait. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 469
L'option EFI Variable Support via sysfs permet d'accder en lecture et en criture aux variables d'environnement des systmes amorables par le mcanisme de boot avanc EFI. La rponse recommande pour ces deux options est 'N'. L'option Console device selection via EFI PCDP or HCDP table permet de dfinir la console de Linux comme tant la console principale dfinie par le BIOS EFI. La rponse recommande pour ces deux options est 'N'. L'option BIOS update support for DELL systems via sysfs permet d'activer la fonctionnalit de mise jour du BIOS via le systme de fichiers virtuel /sys/ pour les ordinateurs DELL. La rponse recommande est 'N'. L'option Dell Systems Management Base Driver permet d'exposer une interface de gestion de l'ordinateur spcifique certains ordinateurs DELL via le systme de fichiers virtuel /sys/. La rponse recommande est 'N'. L'option Export DMI identification via sysfs to userspace permet d'exposer les informations DMI via le systme de fichiers virtuel /sys/. La rponse recommande est 'N'. A.5. Menu Power management options (ACPI, APM) L'option Power Management support permet d'activer la gestion d'nergie sur votre machine. Il existe actuellement deux protocoles de gestion d'nergie sur les PCs : le protocole APM (abrviation de l'anglais Advanced Power Management , relativement ancien mais fiable, et le protocole ACPI (abrviation de l'anglais Advanced Configuration and Power Interface ), plus rcent mais pouvant poser quelques problmes avec certains BIOS bogus. Ces deux protocoles peuvent tre paramtrs respectivement avec les deux jeux d'options suivantes. La rponse recommande est 'Y'. L'option Legacy Power Management API permet de prendre en charge l'ancienne interface du noyau de gestion de l'nergie. Cela peut tre ncessaire pour les anciens pilotes binaires ou qui n'ont pas t ports. La rponse recommande est 'Y'. L'option Power Management Debug Support permet d'activer les fonctionnalits de dboguage du code de gestion de l'nergie de Linux. Cette option est essentiellement utile aux dveloppeurs de Linux. La rponse recommande est 'N'. L'option Keep console(s) enabled during suspend/resume permet de ne pas suspendre le pilote de la console afin de pouvoir voir les messages de dboguage des pilotes de priphriques lors de la suspension. Cette option peut tre dangereuse et n'est utile que pour les dveloppeurs du noyau, aussi la rponse recommande est-elle 'N'. L'option Suspend/resume event tracing permet de prendre en charge une fonction de mmorisation des dernires oprations de mise en veille dans l'horloge systme, afin de pouvoir dboguer les pilotes de priphriques lorsque la machine n'est pas parvenue se mettre en veille correctement. Cette fonctionnalit n'est utile que pour les dveloppeurs du noyau, aussi la rponse recommande est-elle 'N'. L'option Suspend to RAM and standby permet de prendre en charge la mise en veille du systme en mmoire. Cette forme de mise en veille est extrmement rapide, mais ncessite une alimentation lectrique pour conserver l'tat du systme, car celui-ci est stock en mmoire. Cette technique fonctionne relativement bien pour les ordinateurs portables, mais certains pilotes de priphriques ne sont pas encore capables de redmarrer correctement la sortie de la mise en veille. La rponse recommande est 'N'. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 470
L'option Hibernation (aka 'suspend to disk') permet de prendre en charge la suspension du systme sur disque. Cette forme de mise en veille est beaucoup plus lente que la mise en veille en mmoire, car tout l'tat du systme doit tre stock sur disque. De plus, la sortie de la mise en veille ncessite un redmarrage complet du noyau, et le systme est gnralement plus lent aprs le rveil le temps que toutes les donnes stockes sur disque soient recharges en mmoire. Toutefois, cette technique est beaucoup plus fiable et fonctionne mme sur les machines dont le matriel ne supporte pas la suspension en mmoire. La rponse recommande est 'N'. L'option Default resume partition permet de spcifier la partition de swap utilise par dfaut par la fonctionnalit de suspension sur disque. Il faut indiquer ici une partition de swap de taille suffisante pour stocker l'tat du systme lors de la suspension. Cette option est facultative, la partition utiliser au redmarrage pouvant tre spcifie par l'option resume en ligne de commande du noyau. Toutefois, il est plus simple de l'indiquer ici une bonne fois pour toute. La rponse dpend bien entendu de votre plan de partitionnement. L'option Advanced Power Management Emulation permet de demander au systme de simuler la mise en veille selon l'ancienne gestion d'nergie APM. Cela comprend la rinitialisation de l'horloge systme, ainsi que la notification des changements d'tat de la batterie aux programmes de gestion de l'APM. La rponse recommande est 'N'. L'option ACPI Support (Advanced Configuration and Power Interface) du menu ACPI (Advanced Configuration and Power Interface) Support permet d'activer la gestion du protocole de gestion d'nergie ACPI. Cette interface permet au systme d'exploitation de contrler finement la consommation d'nergie du systme, mais ncessite que votre carte mre le gre ainsi que tous les priphriques connects dessus. C'est gnralement le cas pour toutes les machines rcentes, et quasiment certain pour les ordinateurs portables, mais si ce n'est pas le cas, les priphriques qui seront mis en veille ne se rinitialiseront pas correctement lors du rveil de l'ordinateur. Cela peut provoquer des plantages violents. La rponse recommande est 'Y', moins que vous ayez un doute sur la capacit de votre matriel supporter l'ACPI. Notez que certains BIOS fournissent une description erronne du matriel de l'ordinateur Linux et n'ont t tests que pour Microsoft Windows. Ces informations sont gnralement gnres avec les outils Microsoft, qui ne respectent pas la norme ACPI, mais dont Windows tolre les erreurs. Intel, le principal promoteur de l'ACPI, et les dveloppeurs de Linux, ont dcid de ne pas prendre en charge ces erreurs de configuration et indiquent qu'il est du ressort des fabricants de fournir des informations correctes. Toutefois, ils permettent aux utilisateurs de spcifier au niveau de la configuration une description alternative du matriel. Cela est ralisable grce aux options Include Custom DSDT et Custom DSDT Table file to include . Ces options ne sont accessibles que si l'option Select only drivers that don't need compile-time external firmware du menu Generic Driver Options n'est pas coche. Notez enfin que si vous choisissez d'activer le protocole de gestion d'nergie ACPI et le protocole APM, celui qui sera utilis sera le premier charg. L'option APM (Advanced Power Management) BIOS support du menu du mme nom permet d'activer la gestion d'nergie APM par l'intermdiaire du BIOS. Cette mthode de gestion d'nergie est beaucoup plus sre que l'ACPI, car elle est plus ancienne et en gnral parfaitement supporte par le matriel actuel. Il est recommand de rpondre par 'Y' cette question si vous ne pouvez pas utiliser l'ACPI. Notez toutefois que la possibilit d'teindre l'ordinateur via les fonctionnalits APM n'est disponible que pour les ordinateurs disposant d'un botier au format ATX. De plus, ce n'est pas la gestion d'nergie APM qui gre l'arrt des disques durs et la veille des moniteurs Green , et il est possible d'avoir ces fonctionnalits mme si l'on n'a pas activ la gestion d'nergie APM. Les options suivantes dpendent fortement de la configuration APM des machines. Les options de ce menu ne seront pas dcrites plus en dtails ici, car elles sont trop spcifiques chaque modle de machine. Pour la plupart des gens, il faut rpondre 'N' toutes ces questions. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 471
L'option CPU Frequency scaling du menu du mme nom permet d'activer la gestion des processeurs frquence variable. Ces processeurs se rencontrent gnralement dans les portables, cause du gain d'nergie obtenu en abaissant la frquence du processeur lorsqu'il est peu utilis. On les rencontre galement sur les ordinateurs de bureau rcents, car cela permet de diminuer la vitesse de rotation des ventilateurs et d'obtenir ainsi des machines plus silencieuses. Les options qui suivent permettent de spcifier l'interface logicielle fournie par le noyau pour contrler la frquence du processeur, ainsi que d'indiquer la nature du processeur utilis et la politique de gestion de la frquence du processeur. La rponse recommande est 'Y', sauf si vous utilisez une machine relativement ancienne. Vous devrez alors choisir le pilote pour le type de processeur dont vous disposez, ainsi que le gestionnaire d'nergie utiliser. Les plus classiques sont 'performance' governor (pour utiliser en permanence la frquence la plus leve), 'powersave' governor (pour utiliser en permanence la frquence la plus faible), 'ondemand' governor (pour que le noyau adapte la frquence la charge courante du systme) et conservative (pour que le noyau adapte la frquence la charge courante du systme, mais en passant d'une frquence une autre de manire plus progressive et en cherchant optimiser la consommation lctrique). Notez que dans le cas de l'adaptation la demande de la frquence du processeur les processus placs en priorit faible ne seront pas comptabiliss comme des processus devant accrotre la frquence du processeur, sauf si le fichier de configuration dynamique /sys/devices/system/cpu/cpu0/cpufreq/ondemand/ignore_nice_load contient la valeur 0 (attention, ce paramtre est en logique inverse tant donn le nom de ce fichier). L'option CPU idle PM support permet de prendre en charge la gestion d'nergie des processeurs au repos. Cette gestion se fait au travers de gestionnaires logiciels en fonction de la charge du systme. Cette option vous donnera l'accs aux deux options 'ladder' governor (NEW) et 'menu' governor (NEW) , qui utilisent respectivement l'algorithme des anciens pilotes ACPI et un algorithme plus rcent dont le but est de minimiser la consommation d'nergie. La rponse recommande est 'Y'. A.6. Menu Bus options (PCI, PCMCIA, EISA, MCA, ISA) L'option PCI support permet d'activer le support des ordinateurs base de bus PCI. Si vous avez un ordinateur rcent, rpondez par 'Y'. L'option PCI access mode 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 d'essayer l'initialisation par le BIOS, et de faire le travail lui- mme si ce dernier est dfaillant. Vous pouvez donc toujours choisir l'option Any . L'option Support mmconfig PCI config space access n'est pas documente et ne sera pas dcrite plus en dtail dans ce document. Cette option n'est disponible que pour les machines 64 bits. La rponse recommande est 'Y'. L'option PCI Express support permet d'activer le support du nouveau bus PCI Express. Si vous avez un ordinateur rcent, rpondez par 'Y'. L'option PCI Express Hotplug driver permet d'activer le support des priphriques PCI Express connectables chaud. Si vous avez une carte mre permettant ce type d'opration, rpondez par 'Y'. L'option Use polling mechanism for hot-plug events (for testing purpose) permet d'utiliser un mcanisme de scrutation des priphriques pour dtecter les priphriques PCI Express. Cela n'est normalement pas ncessaire, aussi cette option est-elle rserve aux dveloppeurs du noyau ou de matriel. La rponse recommande est donc 'N'. L'option Root Port Advanced Error Reporting support permet d'activer le support de la gestion des erreurs des priphriques PCI Express au niveau de la racine du bus PCI Express. La rponse recommande est 'Y'. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 472
L'option Message Signaled Interrupts (MSI and MSI-X) permet de prendre en charge un nouveau mode de gestion des interruptions matrielles. La rponse recommande est 'N'. L'option PCI Debugging permet d'activer les traces de dbogage du sous-systme PCI. Elles peuvent tre utiles en cas de problme, mais ne sont normalement pas ncessaires. La rponse recommande est 'N'. L'option Interrupts on hypertransport devices permet d'autoriser les priphriques HyperTransport utiliser les interruptions. La rponse recommande est 'Y'. L'option ISA support permet la prise en charge des bus ISA. Le bus ISA est un bus en voie de dsutude, mais la plupart des anciennes cartes mres en disposent encore. Vous devez activer cette option si votre ordinateur dispose encore d'un bus ISA. La rponse recommande est 'Y'. L'option EISA support permet d'activer la gestion des bus EISA. L'activation de cette fonctionnalit donnera l'accs des options spcifiques au matriel, ainsi qu' l'option EISA device name database , qui permet d'obtenir des noms humainement lisibles des priphriques EISA pendant leur configuration, et que l'on activera si l'on dispose de tels priphriques. Ce bus a dsormais compltement t remplac par le bus PCI, aussi devriez-vous rpondre par 'N', moins que vous ne disposiez d'une machine trs ancienne. L'option MCA support permet d'activer la gestion des bus MCA (pour les PS/2 d'IBM). Si vous activez cette option, vous accderez l'option Legacy MCA API Support , qui permet de prendre en charge l'API des anciens noyaux pour les priphriques MCA. Cette option n'est utile que pour charger des gestionnaires de priphriques MCA fournis sous forme de module et qui n'ont pas t port pour le noyau 2.6. Si vous l'activez, cette option vous donnera accs l'option Support for the mca entry in /proc , qui vous permettra d'accder au fichier de gestion du bus MCA /proc/mca. Les bus MCA tant en voie de dsutude, la rponse recommande est 'N'. L'option NatSemi SCx200 support permet de prendre en charge le processeur SCx200 de National Semiconductor. La rponse recommande est 'N'. Si vous activez cette option, vous pourrez accder l'option NatSemi SCx200 27MHz High-Resolution Timer Support , qui permet d'utiliser le timer haute rsolution du processeur comme base de temps du systme, ce qui est gnralement plus fiable lors de la mise en veille du processeur. La rponse recommande pour cette option est 'Y'. A.6.1. Sous-menu PCCARD (PCMCIA/CardBus) support Ce menu contient l'option PCCard (PCMCIA/CardBus) support , qui permet de prendre en charge la gestion des cartes PCMCIA et CardBus. Cette option vous donnera accs aux options de configuration des contrleurs PCMCIA les plus courant, ainsi qu' l'option Enable PCMCIA debugging , qui vous permettra d'activer les options de dbogage des gestionnaires de priphriques PCMCIA. La rponse recommande est 'Y' si vous disposez d'un portable, 'N' dans le cas contraire. A.6.2. Sous-menu PCI Hotplug Support Ce menu contient l'option Support for PCI Hotplug (EXPERIMENTAL) , qui permet de prendre en charge les contrleurs PCI capables de connecter et de dconnecter des cartes PCI chaud. L'option Fake PCI Hotplug driver , permet de simuler un priphrique PCI Hotplug et n'est utile que pour les dveloppeurs noyau. Les options suivantes permettent de slectionner les gestionnaires de priphriques pour les contrleurs PCI en question. La rponse recommande est 'N'. A.7. Menu Executable file formats / Emulations DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 473
L'option Kernel support for ELF binaries permet d'utiliser les programmes dont le format de fichier binaire est le format ELF. Ce format de fichier tant devenu un standard, il faut rpondre par 'Y' cette question. L'option Kernel support for a.out and ECOFF binaries permet d'utiliser les programmes dont le format de fichier binaire est le format a.out . Ce format de fichier binaire est obsolte, et il est peu probable que vous rencontriez de vieilles applications qui n'ont pas t recompiles et qui l'utilisent encore. La rponse recommande est donc 'N'. L'option Kernel support for MISC binaries permet d'activer la gestion de formats de fichiers binaires enregistrables dans le noyau. On peut alors utiliser des chargeurs spcifiques directement au niveau du noyau, et ainsi utiliser ces fichiers binaires directement en ligne de commande. Il est recommand de rpondre par 'Y' cette question. L'option IA32 Emulation permet d'activer la prise en charge des processus 32 bits dans les machines 64 bits de type x86_64. La rponse recommande est 'Y'. L'option IA32 a.out support permet d'activer la prise en charge du format de fichier excutable 32 bits a.out. Ce format est obsolte et la rponse recommande est 'N'. A.8. Menu Networking L'option Networking support permet d'activer la prise en charge des fonctionnalits rseau dans le noyau. tant donn que les systmes Unix sont profondment orients rseau, il faut imprativement rpondre 'Y' cette question. Cela vous donnera accs des options complmentaires permettant de configurer les fonctionnalits rseau prise en charge par le noyau, ainsi qu'au menu de slection des diffrents gestionnaires de priphriques rseau. A.8.1. Menu Networking options L'option Packet socket permet d'autoriser 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. L'option recommande est donc 'Y'. L'option Packet socket: mmapped IO n'est disponible que si l'option prcdente a t active. Elle permet d'utiliser 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'. L'option Unix domain sockets permet d'activer les communications rseau bases sur la notion de socket Unix. Comme la plupart des programmes Unix utilisent ce paradigme de communication, il faut rpondre 'Y' cette question. L'option Transformation user configuration interface permet d'activer l'interface de configuration des extensions de scurit du protocole IP. Cette interface est utilise par les outils de configuration d'IPSec, aussi est-il recommand de rpondre 'Y' cette question. L'option Transformation sub policy support permet de prendre en charge les politiques de scurit secondaires pour les paquets. Cela permet d'appliquer plus d'une politique de scurit un mme paquet en mme temps, par exemple pour optiliser les traitements des paquets dont les informations ne sont pas conserves longtemps dans le noyau. La rponse recommande est 'N'. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 474
L'option Transformation migrate database (EXPERIMENTAL) permet de prendre en charge l'association entre l'emplacement des clients IPv6 mobiles et les politiques de scurit. La rponse recommande est 'N'. L'option PF_KEY sockets permet de prendre en charge les communications rseau scurises par l'intermdiaire de la suite logiciel KAME. Cette option constitue une implmentation des extensions de scurit IPSec du protocole IP. La rponse recommande est 'Y'. L'option PF_KEY MIGRATE (EXPERIMENTAL) permet de prendre en charge l'association entre l'emplacement des clients IPv6 mobiles et les politiques de scurit maintenues au travers de l'interface PF_KEY. La rponse recommande est 'N'. L'option TCP/IP networking permet d'activer le protocole de communication rseau TCP/IP. Le systme utilisant intensivement ce protocole de communication, il faut rpondre 'Y' cette question. L'option IP: multicasting permet d'autoriser l'envoi des donnes plusieurs ordinateurs en mode multicast (un paquet pour plusieurs destinations). Cette fonctionnalit permet de rduire le trafic rseau dans certaines applications, mais elle est trs peu utilise. La rponse recommande est donc 'N'. L'option IP: advanced router permet de configurer le systme pour tre un routeur (ordinateur qui transfre des informations d'un rseau un autre). La rponse recommande est 'N'. L'option Choose IP: FIB lookup algorithm (choose FIB_HASH if unsure) permet de slectionner un algorithme de recherche dans les tables de routage. L'algorithme FIB_HASH convient pour la majorit des utilisateurs, aussi est-il recommand de le choisir. L'option IP: policy routing permet d'activer le routage des paquets en fonction des adresses source en plus des adresses destination des paquets. La rponse recommande est 'N'. L'option IP: equal cost multipath permet de choisir une route possible parmi plusieurs routes pour chaque paquet transmis. Cette option vous donnera accs l'option IP: equal cost multipath with caching support (EXPERIMENTAL) , qui permet de mmoriser les routes dans des caches du systme. Les algorithmes de slection des routes multiples peuvent tre choisis avec les sous-options suivantes. La rponse recommande est 'N' pour ces deux options. L'option IP: verbose route monitoring permet d'activer les traces du sous-systme de routage. La rponse recommande est 'N'. L'option IP: kernel level autoconfiguration permet de raliser la configuration du protocole rseau IP au niveau du noyau, lors de la phase de dmarrage. Cette option est utilise notamment lorsqu'on dsire monter le systme de fichiers racine par NFS. La rponse recommande est 'N'. L'option IP: DHCP support permet de demander au noyau de dterminer automatiquement l'adresse IP lors du dmarrage grce au protocole DHCP . Cette option n'est valide que lorsque l'option IP: kernel level autoconfiguration a t active. La rponse recommande est 'N'. L'option IP: BOOTP support permet de demander au noyau de dterminer automatiquement l'adresse IP lors du dmarrage grce au protocole BOOTP . Cette option n'est valide que lorsque l'option IP: kernel level autoconfiguration a t active. La rponse recommande est 'N'. L'option IP: RARP support permet de demander au noyau de dterminer automatiquement l'adresse IP lors du dmarrage grce au protocole RARP . Ce protocole est un protocole plus ancien DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 475
que le protocole BOOTP, il est en passe de devenir obsolte. Cette option n'est valide que lorsque l'option IP: kernel level configuration a t active. La rponse recommande est 'N'. L'option IP: tunneling permet d'activer l'encapsulation des paquets d'un protocole dans les paquets d'un autre protocole. La rponse recommande est 'N'. L'option IP: GRE tunnels over IP permet d'autoriser l'encapsulation des protocoles IPv4 et IPv6 avec la mthode GRE abrviation de l'anglais Generic Routing Encapsulation ). Cette mthode d'encapsulation est destine aux routeurs Cisco. La rponse recommande est 'N'. L'option IP: broadcast GRE over IP permet de crer un rseau Ethernet virtuel sur IP par l'intermdiaire de la mthode d'encapsulation GRE, qui permet d'effectuer des broadcasts d'IP dans le rseau virtuel. La rponse recommande est 'N'. L'option IP: multicast routing permet de configurer le systme pour le routage des paquets ayant plusieurs destinations (c'est--dire les paquets IP envoys en multicast). La rponse recommande est 'N'. L'option IP: PIM-SM version 1 support permet d'activer la gestion du protocole de routage PIM des paquets envoys en multicast. Ce protocole est gr par Cisco. La rponse recommande est 'N'. L'option IP: PIM-SM version 2 support permet d'activer la gestion de la version 2 du protocole de routage PIM. La rponse recommande est 'N'. L'option IP: ARP daemon support EXPERIMENTAL) permet de limiter 256 la table d'adresses physiques utilises pour les requtes ARP. Cette option est utile pour limiter la consommation mmoire du noyau dans les grands rseaux. Les requtes ne pouvant tre satisfaites directement sont transfres un dmon, repoussant ainsi le reste de la table hors de la mmoire du noyau. La rponse recommande est 'N'. L'option IP: TCP syncookie support (disabled per default) permet de protger la machine d'une certaine forme d'attaque du protocole rseau TCP/IP visant provoquer un dni de service. Le fait de rpondre par 'Y' cette question inclut le support de cette protection, mais ne l'active pas par dfaut. L'activation doit se faire par configuration dynamique du noyau via /proc/. La rponse recommande est 'N'. L'option IP: AH transformation permet de prendre en charge l'extension AH pour le protocole IPv4. Cette extension permet de s'assurer que les en-ttes IP sont authentiques, c'est--dire que la machine qui prtend les avoir envoys est bien la machine qui les a effectivement envoys. Cette option ncessite les fonctionnalits de cryptographie du menu Cryptographic options . La rponse recommande est 'Y'. L'option IP: ESP transformation permet de prendre en charge l'extension ESP pour le protocole IPv4. Cette extension permet de s'assurer de la confidentialit des donnes transfres sur le rseau, en chiffrant les donnes transmises. Cette option va de pair avec l'option IP: AH transformation et ne sert rien sans elle (communiquer de manire chiffre avec un pirate au lieu du bon destinataire ne drange pas vraiment celui-ci). Cette option ncessite les fonctionnalits de cryptographie du menu Cryptographic options . La rponse recommande est 'Y'. L'option IP: IPComp transformation permet de prendre en charge l'extension de compression de donnes du protocole IPv4. Cette option permet de compresser les donnes avant chiffrement, dans le cas o l'on utiliserait galement l'extension ESP. En effet, les donnes chiffres apparaissent gnralement comme des donnes parfaitement alatoires et ne peuvent donc pas tre compresses, il DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 476
est donc ncessaire d'effectuer cette compression avant chiffrement, ce que fait cette extension. La rponse recommande est 'Y'. L'option IP: IPsec transport mode permet d'activer le protocole IPsec en mode transport (c'est-- dire le mode de transmission natif des paquets IPsec). La rponse recommande est 'Y'. L'option IP: IPsec tunnel mode permet d'activer le protocole IPsec en mode tunnel (c'est--dire le mode de transmission des paquets IPsec bas sur leur encapsulation dans le protocole IP). La rponse recommande est 'Y'. L'option IP: IPsec BEET mode permet d'activer le protocole IPsec en mode BEET ( Bound End- to-End Tunnel ). Ce mode de transmission est utilis pour ralise un tunnel point point, sans tre pnalis par l'encapsulation des paquets. Les tunnels de ce type sont moins gnriques que ceux que l'on obtient en mode tunnel, mais conviennent dans le cas de connexions point point directes. La rponse recommande est 'Y'. L'option INET: socket monitoring interface permet d'activer la prise en charge de l'interface de surveillance des sockets, qui est utilise par certains outils rseau. La rponse recommande est 'Y'. L'option TCP: advanced congestion protocol permet d'activer la prise en charge de modules de gestion des congestions rseau pour le protocole rseau. Cette option vous donnera accs aux diffrents modules des algorithmes de gestion des congestions rseau. L'algorithme utilis par dfaut convient gnralement la plupart des utilisateurs, aussi la rponse recommande est-elle 'N'. L'option TCP: MD5 Signature Option support (RFC2385) permet d'activer la prise en charge des signatures MD5 des donnes transmises par TCP pour en assurer l'authenticit. Cette fonctionnalit n'est utilise que par les routeurs sur Internet pour changer leurs informations. La rponse recommande est donc 'N'. L'option The IPv6 protocol (EXPERIMENTAL) permet d'activer la gestion du protocole IPv6. Ce protocole est appel remplacer la version actuelle du protocole IP, afin d'accrotre le nombre d'adresses disponibles, d'amliorer la qualit de service et d'intgrer les fonctionnalits d'authentification et de confidentialit des donnes. Cette option vous donnera accs aux options de configuration complmentaires du protocole. La rponse recommande est 'N'. L'option IPv6: Privacy Extensions (RFC 3041) support permet de demander Linux de changer rgulirement et automatiquement l'adresse IP de votre interface, afin de garantir votre anonymat sur le rseau. La rponse recommande est 'N'. Les options IPv6: Router Preference (RFC 4191) support et IPv6: Route Information (RFC 4191) support permettent d'activer la gestion d'une extension du protocole permettant aux machines de choisir le routeur le plus appropri lorsqu'elles sont places dans un rseau disposant de plusieurs passerelle. La rponse recommande est 'N'. L'option IPv6: Enable RFC 4429 Optimistic DAD (EXPERIMENTAL) , active l'algorithme de dtection de conflits d'adresses IPv6 dcrit dans la RFC 4429, qui permet un auto configuration plus rapide des interfaces IPv6. La rponse recommande est 'N'. Les options IPc6: AH transformation , IPv6: ESP transformation et IPv6: IPComp transformation permettent de prendre en charge les extensions d'authentification, de confidentialit et de compression de donnes dcrites ci-dessus pour le protocole IPv6. La rponse recommande est 'Y'. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 477
L'option IPv6: Mobility permet de prendre en charge la fonctionnalit de suivi des appareils mobiles dans un rseau IPv6. Grce cette option, un appareil mobile conserve son adresse IPv6, mais se voit attribu une adresse d'attache qui indique l'hte le plus proche par lequel on peut le joindre. La transmission de ces informations se fait via un protocole rseau complmentaire IPv6. La rponse recommande est 'Y' si vous utilisez le protocole IPv6 sur une station mobile, 'N' sinon. Les options IPv6: IPsec transport mode , IPv6: IPsec tunnel mode et IPv6: IPsec BEET mode sont quivalentes aux options correspondantes du protocole IPv4 et permettent de dfinir les modes de transport des paquets IPv6 pris en charge par le noyau. La rponse recommande pour toutes ces options est 'Y'. L'option IPv6: MIPv6 route optimization mode permet d'activer la fonctionnalit d'optimisation du routage pour les priphriques IPv6 mobiles. La rponse recommande est 'N'. Les options IPv6: IPv6-in-IPv4 tunnel (SIT driver) permet d'activer les fonctionnalits d'encapsulation des paquets IPv6 dans un flux IPv4. Cette option permet donc de raliser un tunnel entre deux rseaux IPv6 via un rseau qui ne gre que le protocole IPv4. La rponse recommande est 'Y'. Les options IPv6: IPv6-in-IPv6 tunnel permet d'activer les fonctionnalits d'encapsulation des paquets IPv6 dans un flux lui-mme IPv6. La rponse recommande est 'Y'. Les options IPv6: Multiple Routing Tables et IPv6: source address based routing permettent de prendre en charge les tables de routage multiples pour le protocole IPv6 et de grer les conflits de route en se basant galement sur l'adresse source et non uniquement sur l'adresse destination lors de la dtermination de la route. La rponse recommande est 'N' pour ces deux options. L'option NetLabel subsystem support permet d'activer la prise en charge des protocoles de marquage des paquets tels que les protocoles CIPSO et RIPSO afin de les classifier et de leur appliquer une politique de scurit. La rponse recommande est 'N'. L'option Security Marking permet d'activer une fonctionnalit de marquage des paquets afin de leur appliquer des contrles de scurit par la suite. La rponse recommande est 'N'. L'option Network packet filtering framework (Netfilter) permet d'activer les fonctions de filtrage des paquets rseau du noyau. Ces fonctions peuvent tre utilises pour plusieurs raisons, les plus courantes tant sans doute la ralisation de pare-feu et de partages de connexion Internet. Pour information, un pare-feu est un programme qui filtre les informations en provenance et destination du rseau, selon des rgles de scurit prdfinies. Ces rgles permettent d'effectuer le filtrage en fonction des adresses et du type des paquets mis et reus. Les actions qui peuvent tre prises sur les paquets ainsi filtrs peuvent tre varies, allant de l'limination du paquet sa modification ou son transfert vers une autre adresse que celle vers laquelle il devait aller initialement. Cette fonctionnalit permet donc galement de raliser la translation d'adresse des paquets TCP/IP. Vous devez activer cette option si vous dsirez raliser un partage de connexion Internet ou un pare-feu. Le dtail de la configuration du sous-menu rendu accessible par cette option est dcrite dans une section ddie plus loin dans ce document. La rponse recommande est 'Y'. L'option Asynchronous Transfer Mode (ATM) (EXPERIMENTAL) permet d'activer la gestion des rseaux ATM. ATM est un type de rseau travaillant en mode connect (c'est--dire qu'une connexion permanente est tablie entre les deux machines), ce qui permet d'effectuer 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 fixe, ce qui permet de simplifier leur traitement et d'obtenir des dbits trs grands. ATM est utilis aussi bien pour les rseaux de grande chelle que pour les rseaux locaux. L'option Classical IP over ATM DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 478
permet d'activer le support du protocole IP encapsul dans un rseau virtuel ATM. Une alternative cette option est l'option LAN Emulation (LANE) support . L'option Do NOT send ICMP if no neighbour permet d'viter l'envoi de paquet ICMP signalant l'inaccessibilit d'une machine lorsque le noyau supprime temporairement la connexion cette machine de ses tables internes pendant certaines oprations de maintenance. L'option LAN Emulation (LANE) support permet de simuler un rseau local classique sur un rseau ATM et ventuellement d'tablir un pont entre ce rseau local virtuel et d'autre rseaux Ethernet rels. L'option Multi-Protocol Over ATM (MPOA) support permet l'tablissement de canaux virtuels ATM au travers des limites des rseaux afin d'optimiser le routage des donnes. L'option RFC1483/2684 Bridged protocols permet d'envoyer des paquets Ethernet sur un rseau virtuel ATM. Enfin, l'option Per-VC IP filter kludge permet de fermer un grand nombre de canaux virtuels plus efficacement lorsqu'ils sont utiliss uniquement pour des communications IP. La rponse recommande toutes ces questions est 'N'. L'option 802.1d Ethernet Bridging permet de configurer le systme comme un pont Ethernet (un pont permet de regrouper physiquement plusieurs rseaux en un seul rseau physique). La rponse recommande est 'N'. L'option 802.1Q VLAN Support (EXPERIMENTAL) permet de crer des interfaces rseau virtuelles 802.1Q sur une interface Ethernet normale. La rponse recommande est 'N'. L'option DECnet support permet d'activer la gestion des rseaux DECnet, initialement crs par Digital (et repris maintenant par Compaq). Cette option vous donnera accs aux sous-options de configuration des rseaux DECnet. L'option DECnet: router support (EXPERIMENTAL) permet d'activer les fonctionnalits de routage sur les rseaux DECnet. La rponse recommande pour ces options est 'N'. L'option ANSI/IEEE 802.2 LLC type 2 Support permet de prendre en charge un protocole d'encapsulation nomm LLC dans un autre protocole. La rponse recommande est 'N'. L'option The IPX protocol permet de prendre en charge le protocole rseau IPX de Novell. Cette option vous donnera accs la sous-option IPX: Full internal IPX network , qui permet de configurer le serveur pour qu'il apparaisse comme un rseau IPX part entire, en lui assignant un numro de rseau Novell. Toutes les requtes seront alors rediriges vers des nuds grs en interne pour ce rseau virtuel. La rponse recommande est 'N' pour ces deux options. L'option Appletalk protocol support permet d'activer la gestion des rseaux Appletalk. Elle vous permettra d'accder des sous-options de configuration du protocole rseau Appletalk. L'option Appletalk interfaces support vous permettre d'accder aux options de configuration des cartes Appletalk. La sous-option AppleTalk-IP driver support permet de se connecter un rseau utilisant le protocole IP via un adaptateur rseau AppleTalk. Cette option vous permettra de raliser des encapsulation de paquets IP dans les paquets Appletalk (sous-option IP to Appletalk-IP Encapsulation support ), pour les machines Linux qui n'ont accs qu' un rseau Appletalk, et inversement d'encapsuler les paquets Appletalk dans les paquets IP (sous-option Appletalk-IP to IP Decapsulation support ), pour les machines Linux qui font office de passerelles vers Internet pour les machines d'un rseau Appletalk. La rponse recommande pour toutes ces options est 'N'. L'option CCITT X.25 Packet Layer (EXPERIMENTAL) permet d'activer la gestion du protocole de bas niveau pour X.25. La rponse recommande est 'N'. L'option LAPB Data Link Driver (EXPERIMENTAL) permet d'activer la gestion du protocole de communication de haut niveau de X.25. La rponse recommande est 'N'. L'option Acorn Econet/AUN protocols (EXPERIMENTAL) permet d'activer la gestion des rseaux Econet. Cette option vous donnera accs la sous-option AUN over UDP , qui permet DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 479
d'encapsuler les paquets Econet dans UDP, et la sous-option Native Econet , qui permet de prendre en charge les cartes rseau Econet. La rponse recommande est 'N' pour toutes ces questions. L'option WAN rooter permet d'effectuer le routage sur un rseau WAN (abrviation de l'anglais Wide Area Network ). La rponse recommande est 'N'. A.8.1.1. Sous-menu IP: Virtual Server Configuration L'option IP virtual server support (EXPERIMENTAL) permet de raliser des serveurs virtuels rpartition de charge. Ces serveurs ont pour but de prsenter une adresse IP unique aux clients, et de rpartir les requtes de ceux-ci quitablement sur plusieurs machines de traitement. Les options qui suivent permettent de configurer le gestionnaire de serveur virtuel. La rponse recommande est 'N'. L'option IP virtual server debugging permet d'obtenir des traces complmentaires concernant le serveur virtuel. La rponse recommande est 'N'. L'option IPVS connection table size (the Nth power of 2) permet de dfinir la taille (en termes de l'exposant d'une puissance de deux) de la table de rpartition des requtes au sein du serveur virtuel. La rponse recommande est '12'. Les options qui suivent permettent de raliser la rpartition de charge dynamique pour les diffrents protocoles supports, ainsi que les options permettant de dfinir les algorithmes de rpartition de charge eux-mmes. L'option FTP protocol helper permet de prendre en charge le protocole FTP, pour lequel un traitement spcifique doit tre ralis lors de la redirection vers les serveurs physiques. En effet, le protocole FTP stocke des adresses IP au sein de ses paquets, et celles-ci doivent galement tre transformes la voles. La rponse recommande est 'N'. A.8.1.2. Sous-menu Network packet filtering (replace ipchains) L'option Network packet filtering debugging active la gestion des messages de dbogage des fonctionnalits de filtrage des paquets. Ces messages peuvent tre trs utiles pour le dbogage des rgles de filtrage et de translations d'adresses du noyau, aussi la rponse recommande est-elle 'Y'. L'option Bridged IP/ARP packets filtering permet de prendre en charge le filtrage des paquets ARP et IP lorsque la machine est configure pour faire office de pont (c'est--dire que l'option 802.1d Ethernet Bridging doit avoir t active dans le menu suprieur. Cette option est utile pour raliser un pont filtrant. La rponse recommande est 'N'. A.8.1.2.1. Sous-menu Core Netfilter Configuration L'option Netfilter netlink interface permet d'activer la mise disposition des processus utilisateurs des paquets filtrs par le noyau via l'interface Netlink. La rponse recommande est 'Y'. Les options qui suivent permettent de spcifier les fonctionnalits fournies par cette nouvelle interface. L'option Netfilter NFQUEUE over NFNETLINK interface active la prise en charge de la file NFNETLINK dans l'interface NetLink pour permettre aux processus utilisateurs d'accder aux paquets manipuls par Netfilter. La rponse recommande est 'Y'. L'option Netfilter LOG over NFNETLINK interface active le transfert des messages de traces relatifs aux paquets filtrs par Netfilter au travers de la queue NFNETLINK de l'interface NetLink. La rponse recommande est 'Y'. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 480
L'option Netfilter connection tracking support active la prise en charge des fonctionnalits de suivi de connexions du module de filtrage Netfilter du noyau. Ces fonctionnalits sont ncessaires pour permettre le filtrage correct des connexions des divers protocles au niveau du pare-feu, ainsi que pour permettre les parages de connexion Internet. La rponse recommande est donc 'Y'. L'option Connection tracking flow accounting permet d'activer la prise en charge des statistiques des partages de connexion pour chaque flux rseau. Ces statistiques peuvent ensuite tre utilises pour dfinir des quotas dans iptables via le critre de slection connbytes. La rponse recommande est 'N L'option Connection mark tracking support permet d'activer le critre de slection connmark et la cible CONNMARK d'iptables. Cette fonctionnalit permet d'identifier tous les paquets d'une mme connexion. La rponse recommande est 'N'. L'option Connection tracking security mark support permet d'activer le critre de slection bas sur les marqueurs de scurit dfinis via la cible SECMARK d'iptables. La rponse recommande est 'N'. L'option Connection tracking events permet de prendre en charge les mcanismes de notification des changements d'tat des connexions. Ces notifications peuvent tre utilises par d'autres parties du noyau. La rponse recommande est 'N'. L'option SCTP protocol connection tracking support (EXPERIMENTAL) active la gestion du suivi des connexions SCTP utilis pour la diffusion des flux multimedia sur Internet. Ces connexions ncessitent en effet un traitement particulier, et vous devrez activer cette option si vous voulez utiliser des connexions SCTP avec un partage de connexion Internet. La rponse recommande est 'N'. L'option UDP-Lite protocol connection tracking support (EXPERIMENTAL) active la gestion du suivi des connexions UDP-Lite. La rponse recommande est 'N'. L'option Amanda backup protocol support active la gestion des connexions utilisant le protocole rseau du logiciel de sauvegarde Amanda. La rponse recommande est 'N', sauf si bien sr vous utilisez ce logiciel. L'option 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'. L'option H.323 protocol support active la gestion du suivi des connexions du protocole H.323. H.323 est un protocole de contrle servant au transport de la voix sur IP, en particulier par les tlphones Internet. Ce module prend galement en charge les protocoles RAS, H.245 en tunnel, RTP/RTCP et les protocoles bass sur T.120 pour la vido, l'audio, le fax, etc. La rponse recommande est 'Y'. L'option IRC protocol support active la prise en charge des commandes de transfert de fichiers DDC du protocole IRC. Si vous utiliser IRC couramment, il est expressment recommand de rpondre 'Y' cette question, faute de quoi vous ne pourrez pas changer de fichiers avec vos interlocuteurs. L'option NetBIOS name service protocol support (EXPERIMENTAL) permet de prendre en charge le filtrage des annonces de noms NetBIOS sur le rseau. La rponse recommande est 'N'. L'option PPtP protocol support active la gestion du suivi des connexions PPTP. La gestion de ce protocole par ce module n'est toutefois pas encore tout fait complte. La rponse recommande est donc 'N'. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 481
L'option SANE protocol support active la gestion du suivi des connexions aux scanners grs par SANE. La rponse recommande est 'N'. L'option SIP protocol support (EXPERIMENTAL) active la gestion du suivi des connexions du protocole SIP de tlphone sur Internet. La rponse recommande est 'Y'. L'option TFTP protocol support active la gestion du suivi des connexions TFTP. Si vous utilisez des clients TFTP au travers de votre partage de connexion Internet, vous devez activer cette option. La rponse recommande est 'Y'. L'option Connection tracking netlink interface permet d'activer l'interface utilisateur Netlink pour le suivi de connexion. La rponse recommande est 'N'. L'option Netfilter Xtables support (required for ip_tables) active la gestion des tables de filtrage de Netfilter. Ces tables constituent un des composants essentiels de Netfilter, aussi la rponse recommande est-elle 'Y'. L'option "CLASSIFY" target support active la gestion de la cible CLASSIFY, qui permet de marquer les paquets avec une priorit utilisable avec les outils de gestion de trafic. La rponse recommande est 'N'. L'option "CONNMARK" target support active la gestion de la cible CONNMARK, qui permet de marquer les paquets d'une mme connexion. La rponse recommande est 'N'. L'option "DSCP" target support active la gestion de la cible DSCP, qui permet de manipuler le champ DSCP des en-ttes IPv4 et IPv6. La rponse recommande est 'N'. L'option "MARK" target support active la gestion de la cible MARK, qui permet de marquer les paquets avec un traceur afin de pouvoir les identifier ultrieurement. Par exemple, il est possible de modifier le routage de certains paquets selon qu'ils sont marqus ou non. On peut ainsi raliser des liaisons prioritaires pour certaines catgories de paquets. La rponse recommande est 'N'. L'option "NFQUEUE" Target Support active les fonctionnalits de transfert des paquets vers l'espace utilisateur par la nouvelle interface Netlink du noyau. La rponse recommande est 'Y'. L'option "NFLOG" target support active la gestion de la cible NLOG. Cette cible permet d'enregistrer des messages de dbogage dans les fichiers de traces du systme via une interface gnrique du noyau, qui elle mme pourra s'appuyer sur les clibles classiques LOG, ULOG ou nfnetlink_log. La rponse recommande est 'Y'. L'option "NOTRACK" target support permet de marquer les paquets comme ne devant pas tre pris en compte par les mcanismes de suivi de connexion. La rponse recommande est 'N'. L'option "TRACE" target support permet de marquer les paquets pour que le noyau effectue une trace chaque fois qu'il vrifie une des rgles de Netfilter. La rponse recommande est 'N'. L'option "SECMARK" target support permet de marquer les paquets pour des vrifications de scurit ultrieures. La rponse recommande est 'N'. L'option "CONNSECMARK" target support permet de marquer les paquets avec les attributs de scurit de leur connexion et rciproquement. La rponse recommande est 'N'. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 482
L'option "TCPMSS" target support permet de marquer les paquets pour modifier le champ MSS dfinissant la taille maximum du paquet sur le lien physique. Cette option n'est normalement pas ncessaire, sauf si le protocole ICMP est filtr par un routeur bogu ou un fournisseur d'accs non respectueux des principes de fonctionnement fondamentaux d'Internet. La rponse recommande est donc 'N'. L'option "comment" match support permet de prendre en charge un mode de slection virtuel des paquets, qui permet d'ajouter des commentaires dans les jeux de rgles de filtrage du noyau. La rponse recommande est 'N'. L'option "connbytes" per-connection counter match support permet de slectionner les paquets selon leur taille en octet ou leur nombre. La rponse recommande est 'N'. L'option "connlimit" match support permet de slectionner les paquets en fonction du nombre de connexion maintenues en parallle par l'adresse IP du client qui les a mis. La rponse recommande est 'N'. L'option "connmark" connection mark match support permet de slectionner les paquets selon le numro de la connexion laquelle ils appartiennent et qui leur est attribu par la fonctionnalit de suivi des connexions. La rponse recommande est 'N'. L'option "conntrack" connection tracking match support permet de slectionner les paquets selon les connexions rseau auxquels ils appartiennent. Par exemple, cette option permet de distinguer les paquets de diffrentes connexions virtuelles dans le cas du tunneling. La rponse recommande est 'Y'. L'option "DCCP" protocol match support permet de slectionner les paquets qui utilisent le protocole DCCP. La rponse recommande est 'N'. L'option "DSCP" match support permet de slectionner les paquets selon la valeur du champ DSCP de leur en-tte IPv4 ou IPv6. La rponse recommande est 'N'. L'option "ESP" match support permet de slectionner les paquets qui utilisent le protocole ESP d'IPSec. La rponse recommande est 'N'. L'option "helper" match support active la gestion du critre de slection des paquets participant une connexion tablie et suivie par l'une des fonctionnalits actives par l'option Connection tracking (required for masq/NAT) . La rponse recommande est 'Y'. L'option "length" match support active la gestion du critre de slection bas sur la longueur des paquets. La rponse recommande est 'N'. L'option "limit" match support active la gestion de la limitation du nombre de fois par seconde qu'une rgle peut tre vrifie par un paquet. Cette limitation est utile lorsqu'on enregistre des messages pour tous les paquets qui vrifient certaines rgles, afin d'viter l'engorgement des fichiers de traces du systme. La rponse recommande est 'Y'. L'option "mac" address match support active la gestion du critre de slection des paquets bas sur leur adresse Ethernet source. Cette rgle n'est utilisable que pour les paquets provenant d'une interface rseau de type Ethernet. La rponse recommande est 'N'. L'option "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 modifi par certaines rgles des chanes prcdemment traverses par les paquets, afin de les marquer pour un traitement ultrieur. Cette option DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 483
doit donc obligatoirement tre active si l'on dsire dtecter ces paquets pour effectuer ce traitement. La rponse recommande est 'N'. L'option IPsec "policy" match support active la gestion du critre de slection des paquets bas sur la politique de scurit du protocole IPsec. La rponse recommande est 'N'. L'option Multiple port match support permet d'utiliser 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 spcifis un un, ce qui peut rendre relativement peu pratique la dfinition de certaines rgles. La rponse recommande est 'Y'. L'option "physdev" match support permet de slectionner les paquets en fonction du port physique sur lequel ils arrivent ou doivent repartir dans le cas d'une configuration de la machine en tant que pont. Cette option n'est disponible que si la machine a t configure pour faire office de pont entre deux rseaux. La rponse recommande est 'N'. L'option "pkttype" packet type match support vous permet de slectionner les paquets en fonction de leur nature (broadcast, multicast, etc...). La rponse recommande est 'N'. L'option "quota" match support vous permet de slectionner les paquets en fonction d'un quota de donnes transfres, calcul grce un compteur d'octet.. La rponse recommande est 'N'. L'option "realm" match support permet de slectionner les paquets en fonction de la clef realm du code de routage du noyau. Cette option est trs spcifique, aussi la rponse recommande est-elle 'N'. L'option "sctp" protocol match support permet de slectionner les paquets qui utilisent le protocole SCTP. La rponse recommande est 'N'. L'option "state" match support permet de slectionner les paquets selon leur rle dans la gestion des connexions rseau. Par exemple, cette option permet de distinguer les paquets qui tablissent une connexion rseau des autres paquets. La rponse recommande est 'Y'. L'option "statistic" match support permet de slectionner les paquets priodiquement ou selon une proprit statistique de leur contenu. La rponse recommande est 'N'. L'option "string" match support permet de slectionner les paquets en fonction d'un motif textuel prdfini. La rponse recommande est 'N'. L'option "tcpmss" match support permet de prendre en compte le champ MSS des paquets de demande de connexion dans les critres de slection. Ce champ indique la taille maximale que les paquets de cette connexion devront utiliser pas la suite. La rponse recommande est 'N'. L'option "u32" match support permet d'extraire n'importe quel valeur de 32 bits d'un paquet rseau pour tablir les critres de slection. La rponse recommande est 'N'. L'option "hashlimit" match support permet de slectionner les paquets selon des limites statistiques calcules l'aide d'une table de hachage sur leurs adresses. Les limites dfinies avec cette options peuvent tre dfinies de manire plus souple que les limites dfinies avec la fonction de limitation classique. La rponse recommande est 'Y'. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 484
A.8.1.2.2. Sous-menu IP: Netfilter Configuration L'option IPv4 connection tracking support (required for NAT) permet de prendre en charge le protocole IPv4 au niveau du gestionnaire de suivi de connexions. La rponse recommande est 'Y'. L'option proc/sysctl compatibility with old connection tracking permet de prendre en charge une ancienne interface de configuration du suivi de connexion qui tait dpendante de la couche de niveau 3 dans la pile rseau. La rponse recommande est 'Y'. L'option Userspace queueing via NETLINK (OBSOLETE) permet de mettre disposition de programmes clients les paquets traits par le code de filtrage, par l'intermdiaire de l'ancienne interface Netlink. Cette interface tant obsolte prsent, la rponse recommande est 'N'. L'option IP tables support (required for filtering/masq/NAT) permet d'activer la gestion des tables au sein du code de filtrage du noyau. Une table est en ralit un ensemble cohrent de fonctionnalits permettant d'appliquer 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 filtrage des paquets et les translations d'adresses. Vous devez donc activer cette fonctionnalit si vous dsirez raliser un Firewall ou un partage de connexion Internet. La rponse recommande est 'Y'. L'option IP range match support permet de prendre en charge les rgles de slection de paquets dfinies sur des plages d'adresses IP. La rponse recommande est 'Y'. L'option 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 dfinir le type de service des paquets, principalement afin de distinguer les paquets prioritaires des paquets normaux. La rponse recommande est 'Y'. L'option recent match support permet un critre de slection bas sur des listes d'adresses IP avec lesquelles des communications se sont faites rcemment. La rponse recommande est 'N'. L'option ECN match support active la gestion du critre de slection des paquets bas sur le champ ECN de leur en-tte. La rponse recommande est 'N'. L'option AH match support active la gestion des critres de slection bass sur les informations utilises par le protocole d'authentification AH de l'extension IPSec du protocole IP. La rponse recommande est 'N'. L'option TTL match support permet d'utiliser le champ TTL des paquets comme critre de slection. Ce champ permet de dfinir la dure de vie des paquets au travers des diffrents routeurs, et permet de limiter la propagation des paquets sur Internet un certain nombre d'interconnexions seulement. La rponse recommande est 'N'. L'option Owner match support (EXPERIMENTAL) permet de slectionner les paquets crs par les processus locaux en utilisant comme critre les identifiants de groupe, de processus et d'utilisateur de celui qui les a crs. Ces critres de slection ne sont pas utilisables sur les paquets provenant de l'extrieur. La rponse recommande est 'N'. L'option address type match support permet de slectionner les paquets en fonction de ce que le code de routage du noyau pense de la nature d'une adresse (diffusion, point point, etc.). Cette option est trs spcifique, aussi la rponse recommande est-elle 'N'. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 485
L'option Packet filtering active la gestion de la table filter, couramment utilise pour filtrer les paquets autoriss et raliser un Firewall. La rponse recommande est 'Y'. L'option REJECT target support active la gestion de la cible REJECT dans les rgles des chanes de la table filter. Cette cible se distingue de la cible DROP, gre nativement par la table filter, par le fait qu'un message d'erreur est renvoy la machine source du paquet. La rponse recommande est 'Y'. L'option LOG target support active la gestion de la cible LOG. Cette cible permet d'enregistrer des messages de dbogage dans les fichiers de traces du systme. On veillera activer galement la gestion des limites sur les rgles de filtrage afin d'viter d'engorger les fichiers de traces si l'on dsire utiliser cette option. La rponse recommande est 'Y'. L'option ULOG target support (OBSOLETE) active la gestion de la cible ULOG. Cette cible permet d'enregistrer des messages de dbogage au niveau d'un processus de gestion de traces fonctionnant dans l'espace utilisateur. Cette fonctionnalit est obsolte et a t remplace par la nouvelle interface Netlink du noyau, aussi la rponse recommande est-elle 'N'. L'option Full NAT active les fonctionnalits de translation d'adresses, 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 'Y'. L'option 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 'Y'. L'option REDIRECT target support active la gestion de la translation d'adresses destinations 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'. L'option NETMAP target support permet d'activer le support des translations d'adresses rseau. Cela permet de transfrer tout le trafic ddi un rseau vers un autre rseau disposant de la mme topologie. La rponse recommande est 'N'. L'option SAME target support permet d'activer le support des translations d'adresses sources, avec un jeu d'adresses sources visibles des clients fixe. La rponse recommande est 'N'. L'option Basic SNMP-ALG support (EXPERIMENTAL) active la gestion de la translation d'adresses pour permettre l'accs et le contrle des machines situes sur le rseau et pour lesquelles un partage de connexion Internet est ralis. moins que vous n'utilisiez le protocole SNMP pour administrer les machines de votre rseau, vous pouvez rpondre 'N' cette question. L'option Packet mangling active la gestion de la table mangle. Cette table a pour but de donner les moyens d'effectuer diverses modifications des en-ttes des paquets, afin de les marquer pour un traitement ultrieur spcifique. La rponse recommande est 'N'. L'option TOS target support permet d'utiliser la cible TOS dans les rgles des chanes de la table mangle. Cette cible autorise la modification du champ Type Of Service des paquets, principalement dans le but de modifier leur priorit. La rponse recommande est 'N'. L'option ECN target support permet d'utiliser la cible ECN dans les rgles des chanes de la table mangle. Cette cible autorise la modification du champ ECN des paquets. La rponse recommande est 'N'. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 486
L'option TTL target support active la gestion de la cible TTL, qui permet de modifier la dure de vie des paquets lors des passages au travers des routeurs. La rponse recommande est 'N'. L'option CLUSTERIP target support (EXPERIMENTAL) permet de distribuer les connexions sur une grappe de serveur pour raliser de la rpartition de charge. La rponse recommande est 'N'. L'option raw table support (required for NOTRACK/TRACE) permet de prendre en charge le filtrage des paquets bruts au niveau des tables PREROUTING et OUTPUT. Cette option vous permettra d'activer la prise en charge de la cible NOTRACK. L'option ARP tables support permet de permettre la prise en charge des paquets ARP au niveau du code de filtrage du noyau. La rponse recommande est 'N'. L'option ARP packet filtering permet de filtrer et slectionner les paquets ARP au niveau du noyau, ventuellement pour les modifier. La rponse recommande est 'N'. L'option ARP payload mangling permet de modifier la vole les informations circulant dans les paquets ARP, comme l'adresse source et l'adresse destination, ainsi que les adresses MAC. La rponse recommande est 'N'. A.8.1.2.3. Sous-menu IPv6: Netfilter Configuration L'option IPv6 connection tracking support (EXPERIMENTAL) permet de prendre en charge le protocole IPv6 au niveau du nouveau gestionnaire de suivi de connexion, que l'on peut activer avec l'option Layer 3 Independent Connection tracking (EXPERIMENTAL) . La rponse recommande est 'N'. L'option IP6 Userspace queueing via NETLINK (OBSOLETE) permet d'activer la gestion des transferts des paquets IPv6 sur un processus utilisateur via l'ancienne interface NETLINK. Cette interface est prsent obsolte, aussi la rponse recommande est-elle 'N'. L'option IP6 tables support (required for filtering/masq/NAT) permet d'activer la gestion de Netfilter pour le protocole IPv6. La rponse recommande est 'N'. L'option Routing header match support (EXPERIMENTAL) permet d'activer le critre de slection bas sur les informations de routage des paquets. La rponse recommande est 'N. L'option Hop-by-hop and Dst opts header match (EXPERIMENTAL) permet d'activer le critre de slection des paquets selon leurs options hop by hop et destination. La rponse recommande est 'N'. L'option Fragmentation header match support (EXPRERIMENTAL) permet d'activer le critre de slection selon les en-ttes de gestion des paquets fragments. La rponse recommande est 'N'. L'option HL match support permet d'activer le critre de slection bas sur le nombre maximum de sauts d'un paquet indiqu dans son en-tte. La rponse recommande est 'N'. L'option Owner match support (EXPERIMENTAL) permet de slectionner les paquets crs par les processus locaux en utilisant comme critre les identifiants de groupe, de processus et d'utilisateur de celui qui les a crs. La rponse recommande est 'N'. L'option IPv6 Extensions Headers Match (EXPERIMENTAL) permet d'activer la gestion du critre de slection des paquets utilisant des extensions IPv6. La rponse recommande est 'N'. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 487
L'option AH match support permet d'activer la slection des paquets des connexions IPv6 utilisant le protocole d'authentification AH. La rponse recommande est 'N'. L'option MH match support permet d'activer la slection des paquets des connexions IPv6 utilisant le protocole MH. La rponse recommande est 'N'. L'option UEI64 address check (EXPERIMENTAL) permet d'activer la vrification de la validit des adresses IPv6 sources. La rponse recommande est 'N'. L'option Packet filtering permet d'activer la gestion de la table filter, afin de raliser par exemple un Firewall. La rponse recommande est 'N'. L'option LOG target support active la gestion de la cible LOG. Cette cible permet d'enregistrer des messages de dbogage dans les fichiers de traces du systme. On veillera activer galement la gestion des limites sur les rgles de filtrage afin d'viter d'engorger les fichiers de traces si l'on dsire utiliser cette option. La rponse recommande est 'N'. L'option REJECT target support active la gestion de la cible REJECT. Cette cible permet de rejeter les paquets concerns et de prvenir le correspondant de ce rejet. La rponse recommande est 'N'. L'option Packet mangling permet d'activer la gestion de la table mangle, qui autorise la modification de certains champs des en-ttes des paquets IP. La rponse recommande est 'N'. L'option HL (hoplimit) target support permet de prendre en charge la gestion de la cible HL, qui permet de spcifier le nombre de routeurs qu'un paquet peut traverser. Mal utilise, cette option peut gnrer des paquets dont la dure de vie est virtuellement infinie. La rponse recommande est 'N'. L'option raw table support (required for TRACE) permet de prendre en charge la gestion des filtres sur les paquets bruts, au niveau des tables PREROUTING et OUTPUT. La rponse recommande est 'N'. A.8.1.2.4. Sous-menu DECnet: Netfilter Configuration L'option Routing message grabulator (for userland routing daemon) permet d'activer l'interface noyau permettant au dmon de routage rseau pour les rseaux DECnet de fonctionner. La rponse recommande est 'N. A.8.1.2.5. Sous-menu Bridge: Netfilter Configuration L'option Ethernet Bridge tables (ebtables) support permet d'activer les fonctionnalits de slection des paquets Ethernet. Ces fonctionnalits permettent de raliser des ponts filtrants entre deux rseaux Ethernet. Les options qui suivent permettent d'identifier les paquets Ethernet en fonction de leurs caractristiques. La rponse recommande est 'N'. A.8.1.3. Sous-menu DCCP Configuration (EXPERIMENTAL) L'option The DCCP Protocol (EXPERIMENTAL) permet de prendre en charge le protocole de datagrammes avec gestion de congestion DCCP directement au niveau noyau. Cette option vous donnera accs des sous-options permettant de configurer ce protocole. La rponse recommande cette question est 'N'. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 488
A.8.1.4. Sous-menu SCTP Configuration (EXPERIMENTAL) L'option The SCTP Protocol (EXPERIMENTAL) permet de prendre en charge le protocole diffusion de flux multimdia (streaming) SCTP directement au niveau noyau. Cette option vous donnera accs des sous-options permettant de configurer ce protocole. La rponse recommande cette question est 'N'. A.8.1.5. Sous-menu TIPC Configuration (EXPERIMENTAL) L'option The TIPC Protocol (EXPERIMENTAL) permet de prendre en charge le protocole de communication inter processus utilis dans certains clusters. Cette option vous donnera accs des sous-options permettant de configurer ce protocole et la gomtrie de votre cluster. La rponse recommande pour un particulier est certainement 'N'. A.8.1.6. Sous-menu QoS and/or fair queueing L'option QoS and/or fair queuing permet d'activer les options de configuration des algorithmes qui fixent 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 d'mission. Parmi ces algorithmes, on retrouve les algorithmes bass sur la notion de qualit de service, qui peuvent tre activs grce l'option QoS support . Les options suivantes permettent de paramtrer les notions attaches la qualit de service. A.8.1.7. Sous-menu Network testing L'option Packet Generator (USE WITH CAUTION) , permet de gnrer diffrents types de paquets et de les envoyer sur une interface rseau des fins de tests. Cette opration peut tre dangereuse pour la machine locale et les autres machines du rseau, aussi la rponse recommande est-elle 'N'. L'option TCP connection probing , permet de capturer tous les changements d'tat des connexions TCP lors de l'arrive des paquets TCP. Cette option n'est utile que pour les dveloppeurs du noyau, pour dboguer les modules de gestion des congestions TCP, aussi la rponse recommande est-elle 'N'. A.8.2. Menu Amateur Radio support L'option Amateur Radio support permet d'activer 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'. A.8.2.1. Sous-menu AX.25 network device drivers Ce menu permet de choisir les gestionnaires de priphriques bas niveau utiliser pour le support des communications Radio. Il faut choisir le pilote correspondant votre matriel. A.8.3. Menu IrDA (infrared) subsystem support L'option IrDA (infrared) subsystem support permet d'activer 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. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 489
A.8.3.1. Sous-menu Infrared-port device drivers Ces options permettent de choisir les pilotes bas niveau pour les priphriques infrarouges. Vous devez choisir le pilote correspondant votre matriel. A.8.4. Menu Bluetooth sybsystem support L'option Bluetooth subsystem support permet d'activer la gestion des priphriques sans fil utilisant la norme Bluetooth. La rponse recommande est 'N'. L'option L2CAP protocol support active la prise en charge du protocole de communication L2CAP, qui permet de travailler en mode connect ou non avec les priphriques BlueTooth. Ce protocole tant utilis par la majorit des priphriques, il est recommand de rpondre 'Y' cette question. L'option SCO links support permet d'activer la gestion de la voix au travers du protocole Bluetooth. La rponse recommande est 'N'. L'option RFCOMM protocol support permet d'activer le support des communications connectes sur la technologie BlueTooth. L'option qui suit permet de permettre l'utilisation d'un terminal par ce protocole. La rponse recommande est 'N'. L'option BNEP protocol support permet de crer une interface rseau Ethernet virtuelle utilisant les fonctionnalits Bluetooth comme couche de transport. Cela permet de crer des rseau privs Bluetooth. Les options qui suivent permettent de spcifier les fonctionnalits disponibles au niveau de l'interface implmente par ce gestionnaire. La rponse recommande est 'N'. L'option CMTP protocol support permet d'activer le support de l'interface CAPI pour les priphriques ISDN Bluetooth. La rponse recommande est 'N'. L'option HIDP protocol support permet d'activer la prise en charge des priphriques d'interface homme-machine Bluetooth. La rponse recomande est 'N'. A.8.4.1. Sous-menu Bluetooth device drivers L'option HCI USB driver permet de prendre en charge les priphriques Bluetooth utilisant une interface USB. La rponse recommande est 'N'. L'option SCO (voice) support permet d'activer le support du protocole SCO sur les priphriques BlueTooth USB. La rponse recommande est 'N'. L'option HCI UART driver permet de prendre en charge les priphriques Bluetooth utilisant une interface srie classique. La rponse recommande est 'N'. L'option UART (H4) protocol supoprt permet de prendre en charge le protocole de communication srie H4 utilis par les priphriques Bluetooth et leur hte. Ce protocole est utilis par un grand nombre de priphriques. La rponse recommande est 'N'. L'option BCSP protocol support permet de prendre en charge le protocole de communication srie BSCP utilis par les priphriques Bluetooth et leur hte. L'option Transmit CRC with every BCSP packet permet de demander ce qu'un code de contrle de redondance cyclique soit transmis avec chaque paquet du protocole. Cela rduit les performances mais rend le protocole plus sr. Les rponses recommandes sont 'N'. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 490
L'option HCI BCM203x USB driver permet de prendre en charge les priphriques BCM203 d'HCI. La rponse recommande est 'N'. L'option HCI BPA10x USB driver permet de prendre en charge les priphriques USB BPA10x d'HCI. La rponse recommande est 'N'. L'option HCI BlueFRITZ! USB driver permet de prendre en charge les priphriques BlueFRITZ! d'HCI. La rponse recommande est 'N'. L'option HCI DTL1 (PC Card) driver permet de prendre en charge les cartes PCMCIA Bluetooth disposant de l'interface DTL1 de Nokia. La rponse recommande est 'N'. L'option HCI BT3C (PC Card) driver permet de prendre en charge les cartes PCMCIA Bluetooth disposant de l'interface BT3C de 3Com. La rponse recommande est 'N'. L'option HCI BlueCard (PC Card) driver permet de prendre en charge les cartes PCMCIA Bluetooth disposant de l'interface BlueCard de Anycom. La rponse recommande est 'N'. L'option HCI UART (PC Card) driver permet de prendre en charge les cartes PCMCIA Bluetooth disposant d'une interface UART. La rponse recommande est 'N'. L'option HCI VHCI virtual HCI device driver permet d'activer le priphrique HCI virtuel, qui vous permettra de simuler des priphriques Bluetooth. La rponse recommande est 'N'. A.8.5. Option RxRPC session socket L'option RxRPC session sockets permet la prise en charge des sessions RxRPC, qui sont utilises par le systme de fichiers rseau AFS. La rponse recommande est 'N'. L'option RxRPC dynamic debugging permet de configurer le niveau de trace des liaisons RxRPC dynamiquement. La rponse recommande est 'N'. L'option RxRPC Kerberos security permet la prise en charge des connexions RxRPC protges par Kerberos. La rponse recommande est 'N'. A.8.6. Menu Wireless L'option Improved wireless configuration API permet de prendre en charge des extensions l'interface de programmation des extensions pour les rseau sans fil de Linux. Actuellement, Linux fournit deux bibliothques gnriques utilisables par les pilotes de priphriques des rseaux sans fil : la bibliothque SoftMac, qui est la bibliothque historique et que de nombreux pilotes utilisent encore, et la bibliothque mac80211 (anciennement nomme DeviceScape, du nom de la socit qui l'a dveloppe et l'a offert aux dveloppeurs du noyau), plus performante mais pour laquelle les pilotes de priphriques n'ont pas encore t adapts. L'interface de programmation tendue n'est utile que pour cette dernire bibliothque, et elle est active automatiquement si ncessaire. La rponse recommande est 'Y'. L'option Wireless extensions permet de prendre en charge l'interface de programmation des extensions pour les rseau sans fil. Cette interface est utilise par la plupart des pilotes de priphriques, aussi la rponse recommande est-elle 'Y'. L'option Generic IEEE 802.11 Networking Stack (mac80211) permet d'activer le support gnrique des rseaux 802.11 via la bibliothque mac80211 dveloppe par la socit DeviceScape. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 491
Cette bibliothque est utilise par certains pilotes de priphriques et vous devrez l'activer si vous disposer d'un tel pilote. Toutefois, la plupart des pilotes n'ont pas encore t modifis pour utiliser cette nouvelle bibliothque, aussi pouvez-vous rpondre par 'N' cette question pour l'instant. L'option Enable LED triggers permet de prendre en charge la gestion des diodes lectroluminescentes prsentes sur certains priphriques pour signaler les changes sur le rseau sans fil. La rponse recommande est 'Y'. L'option Export mac80211 internals in DebugFS permet d'exposer des informations de dboguage interne de la bibliothque mac80211 au travers du systme de fichiers virtuel DebugFS. La rponse recommande est 'N'. L'option Enable debugging output permet d'activer les traces de dboguage de la bibliothque mac80211. La rponse recommande est 'N'. L'option Verbose debugging output permet d'activer des traces de dboguage complmentaires de la bibliothque mac80211. La rponse recommande est 'N'. L'option Debug frame dumping permet d'activer des traces de dboguage pour chacun des paquets 802.11 qui traverse la bibliothque mac80211. La rponse recommande est 'N'. L'option TKIP debugging permet d'activer les traces de dboguage de la bibliothque mac80211 pour la gestion des clefs de chiffrement temporaires. La rponse recommande est 'N'. L'option Extra statistics for TX/RX debugging permet d'activer des statistiques sur les paquets 802.11 qui traversent la bibliothque mac80211. La rponse recommande est 'N'. L'option Support for IBSS testing permet d'activer des fonctionnalits de test des rseaux Wifi fonctionnant sans points d'accs (donc en mode ad-hoc). La rponse recommande est 'N'. L'option Verbose powersave mode debugging permet d'activer des traces de dboguage complmentaires relatives la gestion de l'nergie par la bibliothque mac80211. La rponse recommande est 'N'. L'option Generic IEEE 802.11 Networking Stack permet d'activer le support gnrique des rseaux sans fil 802.11 par l'intermdiaire de la bibliothque SoftMac utilise historiquement dans Linux. Cette bibliothque est en cours de remplacement par la bibliothque mac80211 (alias DeviceScape), mais est encore utilise par la plupart des pilotes de priphriques. La rponse recommande est donc 'Y'. L'option Enable full debugging output permet d'activer la gnration des informations complmentaires de dboguage de cette fonctionnalit. La rponse recommande est 'N'. Les options IEEE 802.11 WEP encryption (802.1x) , IEEE 802.11i CCMP support et IEEE 802.11i TKIP encryption permettent de prendre en charge respectivement les algorithmes de chiffrement WEP, CCMP et TKIP. La rponse recommande est 'Y'. L'option Software MAC add-on to the IEEE 802.11 networking stack permet d'activer la prise en charge au niveau logiciel certaines tches que le matriel ne gre pas toujours. Cette fonctionnalit peut tre ncessaire pour grer les fonctionnalits de chiffrement avec certains pilotes de priphriques Wifi. La rponse recommande est donc 'Y'. Si vous activez cette option, vous aurez la possibilit d'activer les traces de dboguage de la pile SoftMac l'aide de l'option Enable full debugging output . La rponse recommande est 'N'. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 492
A.8.7. Option RF switch subsystem support L'option RF switch subsystem support permet la prise en charge des interrupteurs prsents sur la plupart des adaptateurs sans fil et des portables et permettant de dsactiver les communications radio. Certains de ces interrupteurs sont grs directement par le matriel et ne ncessitent donc pas de ce pilote. La rponse recommande est 'Y'. L'option Input layer to RF switch connector permet de modifier l'activit des communications radio pour les priphriques pour lesquels cette activit est contrlable logiciellement. Vous devrez utiliser une application complmentaire pour utiliser cette fonctionnalit, le noyau ne fournissant qu'une interface bas niveau avec ce pilote. La rponse recommande est 'N'. A.8.8. Option Plan 9 Resource Sharing Support (9P2000) (Experimental) L'option Plan 9 Resource Sharing Support (9P2000) (Experimental) permet la prise en charge du protocole de partage de ressources 9P2000 dvelopp pour le systme Plan 9. La rponse recommande est 'N'. L'option Debug information permet d'activer des traces de dboguage pour le sous-systme Plan 9. La rponse recommande est 'N'. A.9. Device Drivers Ce menu contient l'ensemble des options relatives aux gestionnaires de pripriques pris en charge par Linux. A.9.1. Menu Generic Driver Options L'option Select only drivers that don't need compile-time external firmware permet de n'afficher que les options relatives aux gestionnaires de priphriques pour lesquels des fichiers sources complmentaires ceux fournis avec le noyau ne sont pas ncessaires. La rponse recommande est 'N'. L'option Prevent firmware from being built permet de dsactiver la compilation des firmware fournis avec le noyau. En gnral, le firmware ne doit tre recompil que lors d'une mise jour de firmware et non du noyau, aussi cette option doit-elle gnralement active. La rponse recommande est donc 'Y'. L'option Userspace firmware loading support permet d'inclure le support du chargement du firmware des priphriques chaud, quand bien mme aucun gestionnaire de priphrique prsent dans le noyau ne le ncessiterait. Cela permet de disposer de cette fonctionnalit pour les gestionnaires de priphriques externes fournis sous forme de module. La rponse recommande est 'Y'. L'option Driver Core verbose debug messages permet d'activer les messages de trace du systme de base des gestionnaires de priphriques. La rponse recommande est 'N'. L'option Managed device resources verbose debug messages permet d'activer les messages de trace des pilotes de priphriques dont la gestion des ressources est totalement prise en charge par le noyau. Ces pilotes de priphriques sont un nouveau type de pilotes, qui utilisent des fonctions avances du noyau permettant de grer automatiquement les ressources systmes. La rponse recommande est 'N'. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 493
A.9.2. Menu Connector - unified userspace <-> kernelspace linker L'option Connector - unified userspace <-> kernelspace linker permet d'activer une technique de communication gnrique entre le noyau et les processus utilisateurs, base sur l'interface Netlink du noyau. La rponse recommande est 'N'. L'option Report process events to userspace permet d'ajouter un point de connexion permettant de remonter les vnements concernant la vie des processus vers l'espace utilisateur. La rponse recommande est 'N'. A.9.3. Menu Memory Technology Devices (MTD) Ce menu vous permet d'activer la gestion des puces de mmoire Flash ou autres priphriques de mmoire persistante. Ce genre de priphrique est gnralement utilis pour raliser des systmes de fichiers sur les systmes embarqus, qui ne disposent pas ncessairement de disques magntiques. L'option Memory Technology Device (MTD) support vous donnera accs aux choix des diffrents pilotes pour les matriels supports. La rponse recommande est 'N'. Les sous-menus de ce menu sont les menus RAM/ROM/Flash chip drivers , Mapping drivers for chip access , Self-contained MTD device drivers , NAND Flash Device Drivers , OneNAND Flash Device Drivers et UBI - Unsorted block images . Ce dernier menu permet de prendre en charge les fonctions d'aggrgation de priphriques en mmoire Flash tout en prenant en compte la spcificit de ces mmoires (en particulier le faible nombre de rcritures possible avant destruction de la mmoire). A.9.4. Menu Parallel port support L'option Parallel port support permet d'activer la gestion du port parallle au niveau du noyau. Il est recommand de le faire sous la forme de module, car le port parallle n'est pas souvent utilis. De toutes faons, il est recommand d'activer 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'. L'option PC-style hardware permet d'indiquer 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. L'option Multi-IO cards (parallel and serial) permet de prendre en charge les ports parallle et srie additionnels fournis par des cartes PCI. La rponse recommande est 'N'. L'option Use FIFO/DMA if available (EXPERIMENTAL) permet de demander au noyau d'utiliser une interruption et un canal DMA pour accder au port parallle, si le chipset de la carte mre le supporte. Cela permet gnralement d'acclrer les entres / sorties sur le port parallle, en vitant au noyau d'utiliser un mcanisme de consultation priodique de l'tat du port afin de savoir s'il est capable d'accepter des donnes ou si des donnes doivent tre lues. Notez que, par dfaut, le noyau n'utilisera aucune ligne d'interruption 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 l'adresse du port et de la ligne d'interruption utiliser, spars par une virgule. Si vous avez demand la compilation du gestionnaire de ports parallles sous forme de module, vous devrez spcifier ces options dans le fichier /etc/modprobe.conf. La rponse recommande est 'Y'. L'option SuperIO chipset support (EXPERIMENTAL) permet d'activer la gestion des chipset SuperIO prsents sur certaines cartes mres. La rponse recommande est 'N'. L'option Support for PCMCIA management for PC-style ports permet d'activer la gestion des ports parallles via les mcanismes de gestion des cartes PCMCIA. La rponse recommande cette question est 'N'. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 494
L'option AX88796 Parallel Port permet d'activer la gestion des ports parallles prsents sur les cartes rseau AX88796. Ce pilote de priphrique est totalement indpendant du pilote de priphrique pour ces cartes rseau et peut donc tre activ seul. La rponse recommande est 'N'. L'option IEEE 1284 transfer modes permet de paramtrer le gestionnaire de ports parallles pour utiliser les communications bidirectionnelles du port. Cette option est utile si l'on utilise une imprimante capable d'indiquer son tat l'ordinateur. Notez que pour que cette fonctionnalit soit disponible, vous devez galement paramtrer votre BIOS pour que le port parallle soit en mode EPP ou ECP. La rponse recommande est 'Y'. A.9.5. Menu Plug and Play support L'option Plug and Play support permet d'activer la gestion du plug and play au niveau du noyau. La rponse recommande est 'Y'. L'option PnP Debug Messages permet d'activer la gestion des traces du gestionnaire de priphriques Plug and Play. Cela permet de dboguer la configuration des priphriques Plug and Play plus facilement. La rponse recommande est 'N'. L'option ISA Plug and Play support permet d'activer les fonctionnalits Plug and Play pour les priphriques ISA. Il est ainsi possible d'viter d'avoir utiliser les outils isapnp et pnpdump, et d'viter la compilation des gestionnaires de ces priphriques en modules. La configuration de ces priphriques ISA Plug and Play en est grandement simplifie. Le bus ISA n'tant plus utilis de nos jours, il est donc recommand de rpondre par 'N' cette question. L'option Plug and Play BIOS support (EXPERIMENTAL) permet d'activer la dtection des fonctionnalits Plug and Play des cartes mres via le BIOS. Leur configuration est donc assure de ne pas entrer en conflit avec celle des priphriques Plug and Play ISA prsents. La rponse recommande est 'N'. Si vous activez cette option, vous aurez accs l'option Plug and Play BIOS /proc interface , qui vous permettra d'accder aux informations du BIOS Plug and Play via ls systme de fichiers virtuels /proc/. L'option Plug and Play ACI support (EXPERIMENTAL) permet d'activer la dtection des fonctionnalits Plug and Play des cartes mres via l'interface ACPI. La plupart des machines rcentes ne disposent plus de bus ISA, mais les priphriques classiques sont toujours prsents. Ces priphriques sont gnralement dclars dans la configuration ACPI, et cette option permet d'obtenir leurs paramtres via cette interface. La rponse recommande est 'Y'. A.9.6. Menu Block devices L'option Normal floppy disk support permet d'activer la gestion des lecteurs de disquettes sous Linux. Vous pouvez rpondre par 'Y' cette question si vous disposez d'un lecteur de disquettes. L'option PS/2 ESDI hard disk support permet d'activer la gestion des disques ESDI sur les ordinateurs de type PS/2. Cette option n'est disponible que si vous avez activ la gestion du bus MCA l'aide de l'option MCA support du menu General setup . La rponse recommande est 'N'. L'option XT hard disk support permet d'activer la gestion des disques durs XT. Ce sont de trs vieux disques durs, que plus personne n'utilise. Rpondez par 'N' cette question. L'option Parallel port IDE device support permet d'activer 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 l'ordinateur. Rpondez par 'M' cette question. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 495
L'option Parallel port IDE disks permet d'activer le support des disques IDE connects sur port parallle. Si vous disposez d'un tel disque, rpondez par 'M' cette question, et choisissez le protocole de communication sur port parallle correspondant dans l'une des options suivantes. La rponse recommande est 'N'. L'option Parallel port ATAPI CD-ROMs permet d'activer la gestion des CD-ROM ATAPI connects sur port parallle. Si vous disposez d'un tel lecteur, rpondez par 'M' cette question, et choisissez le protocole de communication sur port parallle correspondant dans l'une des options suivantes. La rponse recommande est 'N'. L'option Parallel port ATAPI disks permet d'activer la gestion des disques ATAPI connects sur port parallle. Si vous disposez d'un tel disque, rpondez par 'M' cette question, et choisissez le protocole de communication sur port parallle correspondant dans l'une des options suivantes. La rponse recommande est 'N'. L'option Parallel port ATAPI tapes permet d'activer la gestion des lecteurs de bandes connects sur port parallle. Si vous disposez d'un tel lecteur, rpondez par 'M' cette question, et choisissez le protocole de communication sur port parallle correspondant dans l'une des options suivantes. La rponse recommande est 'N'. L'option 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 spcifiques ces priphriques par l'intermdiaire de ce gestionnaire. En particulier, les graveurs de CD connects sur port parallle utilisent cette fonctionnalit. Si vous disposez d'un graveur de CD sur port parallle, rpondez par 'M' cette question, et choisissez le protocole de communication sur port parallle correspondant dans l'une 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. L'option Compaq SMART2 support permet d'activer la gestion des cartes contrleurs Smart Array de Compaq. moins que vous ne disposiez d'une telle carte, la rponse recommande est 'N'. L'option Compaq Smart Array 5xxx support permet d'activer la gestion des cartes contrleurs Smart Array 5xxx de Compaq. moins que vous ne disposiez d'une telle carte, la rponse recommande est 'N'. Si vous activez cette fonctionnalit, vous pourrez galement activer l'option SCSI tape drive support for Smart Array 5xxx , qui permet d'utiliser des priphriques SCSI connects sur les contrleurs Smart Array 5xxx. La rponse recommande pour cette option est galement 'N'. L'option Mylex DAC960/DAC1100 PCI RAID Controler support permet d'activer la gestion des contrleurs RAID Mylex. La rponse recommande est 'N'. L'option Micro Memory MM5415 Battery Backed RAM support (EXPERIMENTAL) permet d'activer la gestion des cartes mmoires alimentes par batterie MM5415. La rponse recommande est 'N'. L'option Virtual block device permet d'activer la gestion des priphriques de type bloc du systme hte dans les systmes virtualiss par UML (User Mode Linux). Cela permet d'acclrer fortement les entres/sorties dans ces systmes. La rponse recommande est donc 'Y'. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 496
L'option Always do synchronous disk IO for UBD permet de faire en sorte que les oprations d'critures sur les priphriques virtuels des systmes virtualiss par UML sont toujours ralises de manire synchrone au niveau du systme hte. Cela permet de faire fonctionner correctement les systmes de fichiers journaliss pour ces systmes. La rponse recommande est 'Y'. L'option Loopback device support permet d'utiliser des fichiers classiques pour y placer un systme de fichiers. Cela est essentiellement utilis pour crer des images de CD et les tester avant de les graver. Si vous disposez d'un graveur de CD-ROM, il est recommand de rpondre 'Y' cette question. Sinon, rpondez 'M', pour vous rserver la possibilit d'utiliser des systmes de fichiers stocks dans des fichiers classiques. L'option Cryptoloop Support permet d'activer le chiffrement des disques durs par les algorithmes de chiffrement de Linux, en passant par l'intermdiaire d'un systme de fichiers loopback. Cette option ncessite d'inclure le support des algorithmes de chiffrement, accessibles dans le menu Cryptographic options . Cette option n'est pas cryptographiquement sre, et ne permet pas de stocker des systmes de fichiers journaliss de manire fiable. Aussi n'est-elle pas recommande, et on lui prfrera les fonctionnalits de gestion des volumes disponibles dans le menu Multi-device support (RAID and LVM) . La rponse recommande pour cette option est donc 'N'. L'option Network block device support permet d'accder aux fichiers spciaux de priphriques de type bloc d'un ordinateur distant par l'intermdiaire du rseau. Cette fonctionnalit est peu utilise, la rponse recommande est donc 'N'. L'option Promise SATA SX8 support permet d'activer la gestion des contrleurs Serial ATA SX8. Vous devez l'activer si vous en disposez d'un. La rponse recommande est 'N'. L'option Low Performance USB Block driver permet de prendre en charge certains priphriques de masse USB trs lents. La rponse recommande est 'N'. L'option RAM disk support permet d'activer la gestion des disques virtuels (chargs en mmoire). Notez que cette option n'est pas ncessaire pour activer les systmes de fichiers en mmoire (ramfs), car ceux-ci sont intgrs d'office dans le noyau. Elle ne sert qu' crer des priphriques de type bloc afin de fixer la taille des disques virtuels (le systme de fichiers ramfs ne ncessite pas ces priphriques et adapte dynamiquement sa taille en fonction des besoins). Ces disques virtuels sont gnralement utiliss pour crer des disquettes de rparation, qui chargent les utilitaires systmes sur un disque en mmoire. La rponse recommande est donc 'N' pour un systme normal, et 'Y' pour un systme destin tre plac sur une disquette de rparation. L'option Default number of RAM disks permet de fixer le nombre de disques virtuels par dfaut. La valeur recommande est '16'. L'option Default RAM disk size (kbytes) permet de fixer la taille par dfaut des disques virtuels. La taille recommande est de 4096 Ko. L'option Default RAM disk block size (bytes) permet de fixer la taille par dfaut des blocs sur les disques virtuels. La taille recommande est 4096, mais la taille par dfaut est de 1024 Ko pour des raisons de compatibilit avec le chargeur de systme initrd. L'option Packet writing on CD/DVD media permet d'activer l'criture par paquet sur les supports CD et DVD rinscriptibles. Cette fonctionnalit permet d'utiliser ces supports directement comme des lecteurs amovibles classiques, sans avoir utiliser de logiciel de gravage spcifique. La rponse recommand est 'Y'. Les sous options Free buffers for data gathering et Enable write caching de cette option permettent de spcifier le nombre de tampons d'entre/sortie utiliss simultanment pour les critures et si les critures doivent tre effectues de manire asynchrone afin d'optimiser les DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 497
performances. Dans ce dernier cas, les erreurs d'critures ne sont pas encore gres, aussi est-il prfrable de rpondre par 'N' cette dernire question. L'option ATA over Ethernet support permet de prendre en charge les priphriques de stockage ATA connectables via un port Ethernet. La rponse recommand est 'N'. L'option Xen virtual block device support permet de prendre en charge les priphriques de type bloc virtuels pour les systmes virtualiss par Xen. Cela permet d'accrotre les performances des entres/sorties sur les priphriques de type bloc du systme hte. La rponse recommand est 'Y'. A.9.7. Sous-menu Misc devices L'option Device driver for IBM RSA service processor active la prise en charge des coprocesseurs cryptographiques Condor d'IBM. La rponse recommande est 'N', sauf si vous disposez d'un tel coprocesseur. L'option Sensable PHANToM active la prise en charge des priphriques Sensable PHANTOM. La rponse recommande est 'N', sauf si vous disposez d'un tel coprocesseur. L'option EEPROM 93CX6 support active la prise en charge des puces EEPROM 93c46 et 93c66. La rponse recommande est 'N', sauf si vous disposez d'un tel coprocesseur. L'option SGI IOC4 Base IO support active la prise en charge des puces IOC4 existantes sur certaines cartes mres SGI. Ce pilote n'est pas utile en soit, mais est utilis par d'autres pilotes de priphrique. La rponse recommande est 'N', sauf si vous disposez d'une telle carte mre. L'option TI Flash Media interface support active la prise en charge des adaptateurs Flash Media de Texas Instruments. Cette option vous donnera accs aux options permettant de slectionner les pilotes de priphriques pour l'adaptateur dont vous disposez. La rponse recommande est 'N', sauf si vous disposez d'un tel adaptateur. L'option Asus Laptop Extras (EXPERIMENTAL) active la prise en charge de contrle des rseaux Bluetooth et Wifi des portables Asus, ainsi que le contrle de la luminosit de l'cran LCD et des vnements de gestion d'nergie. Ce pilote de priphrique fonctionne galement sur certains ordinateurs de marque Medion, JVC ou Victor. La rponse recommande est 'N', sauf si vous disposez d'un tel ordinateur. L'option MSI Laptop Extras active la prise en charge de contrle des rseaux Bluetooth et Wifi des portables MSI, ainsi que le contrle de la luminosit de l'cran LCD. La rponse recommande est 'N', sauf si vous disposez d'un tel ordinateur. L'option Sony Laptop Extras (EXPERIMENTAL) active la prise en charge de contrle des rseaux Bluetooth des portables Sony, ainsi que le contrle de la luminosit de l'cran LCD et des touches d'extinction de certains priphriques. Cette option vous donnera accs l'option Sonypi compatibility permettant d'activer la compatibilit avec le pilote sonypi. La rponse recommande est 'N', sauf si vous disposez d'un tel ordinateur. L'option ThinkPad ACPI Laptop Extras active la prise en charge de contrle des rseaux Bluetooth des portables ThinkPad d'IBM ou de Lenovo, ainsi que le contrle de la luminosit de l'cran LCD et des touches de fonctions de ces ordinateurs. Cette option vous donnera accs aux options Verbose debug mode , "Legacy Docking Station Support , Legacy Removable Bay Support et Enable input layer support by default qui permettent de spcifier le niveau de traces du pilote, d'activer les pilotes de gestion prsent obsoltes pour la dtection de la base et des priphriques amovibles, et de DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 498
rediriger les informations des touches de fonctions vers le pilote d'entre classique de Linux. La rponse recommande est 'N', sauf si vous disposez d'un tel ordinateur. A.9.8. Menu ATA/ATAPI/MFM/RLL support L'option ATA/ATAPI/MFM/RLL support permet d'activer ou de dsactiver globalement le support des priphriques IDE. moins que votre ordinateur ne contienne que des priphriques SCSI, vous devez activer cette option. L'option Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support permet d'activer la gestion des disques IDE. moins que votre ordinateur ne soit compltement SCSI, rpondez par 'Y' ou 'M' cette question. Si vous rpondez par 'M', il faut que Linux soit install sur un disque SCSI amorable. Il est recommand de rpondre par 'Y' cette question. L'option Support for SATA (deprecated; conflicts with libata SATA driver) permet d'activer la prise en charge de quelques contrleurs Serial ATA de premire gnration. Normalement, les disques Serial ATA doivent tre utiliss via le gestionnaire de priphrique SCSI, aussi l'activation de cette option est-elle dconseille. La rponse recommande est 'N'. L'option Use old disk-only driver on primary interface permet d'utiliser un vieux pilote pour les disques IDE connects la premire interface IDE et qui poseraient quelques problmes avec le pilote gnral. Seule la premire interface sera concerne par cette option, les autres interfaces utiliseront le nouveau pilote. En gnral, la rponse cette question est 'N'. L'option Include IDE/ATA-2 DISK support permet d'utiliser les disques durs IDE et ATAPI. Si l'ordinateur possde un disque IDE, il est fortement recommand de rpondre 'Y' cette question. On ne doit rpondre 'N' que si l'ordinateur est compltement SCSI. De plus, on prendra garde au fait que l'on ne peut pas mettre les fonctionnalits ncessaires au dmarrage de l'ordinateur dans des modules. Cela signifie 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. L'option Use multi-mode by default permet d'activer le mode multimode par dfaut sur les disques IDE. Cette option n'est normalement pas ncessaire, ce mode tant automatiquement choisi par le noyau. Toutefois, elle peut tre ncessaire dans de rares cas. La rponse recommande est 'N'. L'option PCMCIA IDE support permet d'activer la gestion des priphriques IDE connects par un port PCMCIA sur les portables. Cette option n'est accessible que si vous avez activ la gestion des cartes PCMCIA avec l'option CardBus support du menu PCMCIA/CardBus support . La rponse recommande est 'N'. L'option Cardbus IDE support (Delkin/ASKA/Workbit) permet d'activer la gestion des adaptateurs IDE Cardbus Delkin, ASKA ou Workbit. sur les portables. Cette option n'est accessible que si vous avez activ la gestion des cartes PCMCIA avec l'option CardBus support du menu PCMCIA/CardBus support . La rponse recommande est 'N'. L'option Include IDE/ATAPI CDROM support permet d'utiliser les CD-ROM IDE et ATAPI. La plupart des ordinateurs possdent un lecteur de CD-ROM ATAPI actuellement, il est donc recommand d'activer cette fonctionnalit. La rponse recommande est 'Y'. L'option Include IDE/ATAPI TAPE support (EXPERIMENTAL) permet d'inclure la gestion des lecteurs de bandes magntiques IDE et ATAPI. Comme les lecteurs de disques amovibles IDE sont assez rares, la rponse recommande est 'N'. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 499
L'option Include IDE/ATAPI FLOPPY support permet d'inclure la gestion des lecteurs de disques amovibles IDE et ATAPI. C'est 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'. L'option SCSI emulation support permet d'muler la prsence d'un priphrique IDE par un priphrique SCSI en convertissant les requtes SCSI en requtes ATAPI. Cette fonctionnalit n'est utile que lorsqu'on doit utiliser des logiciels bas niveau qui ne peuvent travailler qu'avec des priphriques SCSI. Cette option tait ncessaire pour utiliser les graveurs de CD IDE avec les anciennes versions du noyau, mais ce n'est plus le cas prsent. Cette option n'est donc plus utile de nos jours et la rponse recommande est 'N'. L'option IDE ACPI support permet d'activer les fonctions d'nergie ACPI pour les priphriques IDE. La rponse recommande est 'Y'. L'option IDE Taskfile Access permet d'activer l'envoi de commandes directement au niveau du contrleur IDE. La rponse recommande est 'N'. L'option legacy /proc/ide/ support permet d'activer l'affichage des informations sur les bus IDE dans le systme de fichiers virtuel /proc/. Ces informations sont prsent exposes au travers du systmes de fichiers virtuel /sys/, aussi cette option n'est-elle fournie qu' titre de compatibilit pour les applications qui n'auraient pas encore t mises jour. La rponse recommande est 'Y'. L'option generic/default IDE chipset support permet d'activer la prise en charge gnrique des priphriques ATAPI en cas d'absence d'un gestionnaire plus spcialis. La rponse recommande est 'N'. L'option CMD640 chipset bugfix/support permet de contourner un bogue des chipsets IDE CMD640. Vous devez activer cette option si vous disposez d'un tel chipset. La rponse recommande est 'Y' si vous avez un tel chipset, et 'N' sinon. L'option CMD640 enhanced support permet l'auto-dtection des paramtres idaux pour les chipsets IDE CMD640. Cette option n'est 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. L'option PNP EIDE support permet de prendre en charge la gestion des cartes ISA Plug and Play permettant d'utiliser des disques EIDE additionnels. Cette option peut tre ncessaire si ces cartes doivent tre initialises avant de chercher utiliser les disques qui y sont connects. La rponse recommande est 'N'. L'option PCI IDE chipset support permet d'activer la gestion des priphriques IDE sur bus PCI. Vous devez rpondre par 'Y' cette question si vous disposez d'une carte mre PCI et de contrleurs IDE, ce qui est normalement le cas pour tous les ordinateurs rcents. L'option Sharing PCI IDE interrupts support permet d'activer le partage des lignes d'interruptions 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 n'est prsent que sur certaines cartes mres. En gnral, l'activation de cette option ne perturbe pas le fonctionnement du systme sur les ordinateurs incapables d'effectuer le partage des lignes d'interruptions des contrleurs IDE, mais la rponse recommande reste 'N'. L'option Boot off-board chipsets first support permet d'inverser la numrotation des disques IDE connects aux contrleurs de la carte mre et des disques IDE connects aux contrleurs additionnels que l'on peut avoir sur une carte fille. Il faut rpondre par 'N' cette question. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 500
L'option Generic PCI IDE Chipset support permet d'activer la gestion des priphriques IDE gnriques. La rponse recommande cette question est 'Y'. L'option OPTi 82C621 chipset enhanced support (EXPERIMENTAL) permet de prendre en charge les chipsets OPTi 82C621. La rponse recommande est 'N'. L'option RZ1000 chipset bugfix/support permet de prendre en charge les chipsets RZ1000 et de corriger un de leur bogue. La rponse recommande est 'Y si vous disposez d'un tel chipset, et de 'N' sinon. L'option Generic PCI bus-master DMA support permet d'activer la gestion des disques Ultra DMA. La rponse recommande est 'Y' si vous disposez d'une carte mre PCI grant l'Ultra DMA et de disques IDE. L'option Force enable legacy 2.0.X HOSTS to use DMA permet d'activer une vieille fonctionnalit non documente et ne sera pas dcrite ici. L'option recommande 'N'. L'option Use PCI DMA by default when available permet d'activer la gestion de l'Ultra DMA au dmarrage. La rponse recommande est 'Y', sauf si l'on veut dsactiver le support de l'Ultra DMA. L'option Enable DMA only for disks permet de dsactiver les transferts DMA pour les priphriques IDE qui ne sont pas des disques durs. Cette option peut tre active si des priphriques connects ne grent pas correctement les transferts DMA. La rponse recommande est 'Y'. Il suit un certain nombre d'options qui permettent d'activer 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. L'option IGNORE word93 Validation BITS permet d'viter une inconsistance dans les spcifications du protocole matriel ATAPI. Ces spcifications n'ont 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 qu'il ne soit pas dangereux de rpondre par l'affirmative cette question, la rponse recommande reste 'N'. L'option Old hard disk (MFM/RLL/IDE) driver permet de prendre en charge les disques durs via un pilote de disque alternatif, qui peut tre ncessaire sur certains vieux systmes dont le comportement n'est pas semblable celui des ordinateurs rcents au niveau du squencement des oprations. La rponse recommande est 'N'. A.9.9. Menu SCSI device support L'option RAID Transport Class permet de prendre en charge la technologie RAID pour les priphriques SCSI. La rponse recommande est 'N'. L'option SCSI device support permet d'activer 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 s'il a besoin de composants se trouvant sur le disque SCSI pour s'amorcer, il ne faut pas mettre en module cette fonctionnalit. Ceux qui n'ont pas de priphrique SCSI et ne comptent pas en utiliser peuvent rpondre 'N' cette question. Sachez toutefois que de nombreux priphriques USB apparaissent comme des disques SCSI une fois connects l'ordinateur. C'est en particulier le cas des clefs USB et de nombreux appareils photo numriques. Il est donc recommand de rpondre 'Y' cette question, mme si l'on ne dispose pas de priphrique rellement SCSI. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 501
L'option SCSI target support permet d'accder aux pilotes de priphriques SCSI en mode target. La rponse recommande est 'Y'. L'option legacy /proc/scsi/ support permet de dfinir les entres concernant le sous-systme SCSI dans le systme de fichiers virtuel /proc/. Ces informations sont prsent exposes au travers du systme de fichiers virtuel /sys/, mais des applications peuvent ne pas avoir t mises jour, aussi est- il recommand de rpondre 'Y' cette question. L'option SCSI disk support permet d'activer la gestion des disques durs SCSI. Il ne faut pas rpondre par 'M' si votre systme a besoin d'un disque SCSI pour dmarrer. Cette option permet galement de grer les lecteurs ZIP connects sur port parallle, ainsi que les priphriques comme les clefs USB et bon nombre d'appareils photo numriques, qui apparaissent comme des disques SCSI une fois connects l'ordinateur. La rponse recommande est donc 'Y'. L'option SCSI tape support permet d'activer la gestion des priphriques bande SCSI. Notez que les lecteurs de bande OnStream SC-x0 ne sont pas pris en charge par ce pilote gnrique, mais peuvent tre utiliss malgr tout en activant l'option suivante SCSI OnStream SC-x0 tape support . Le pilote alors utilis ncessitera la prsence des fichiers spciaux de priphrique /dev/osstX, qui utilisent le numro de code majeur 206. La rponse recommande pour ces deux options est 'N'. L'option SCSI CD-ROM support permet d'activer la gestion des CD-ROM SCSI. Vous devez activer cette fonctionnalit galement si vous utilisez l'mulation SCSI pour un graveur de CD ATAPI. Si vous tes dans l'un de deux ces cas, il est recommand de rpondre 'Y' cette question. Dans tous les autres cas, la rponse recommande est 'N'. L'option Enable vendor-specific extensions (for SCSI CDROM) permet d'activer la gestion de CD- ROM SCSI disposant de commandes SCSI spcifiques. C'est notamment le cas pour les lecteurs de CD multisessions NEC/TOSHIBA et les graveurs de CD HP. Pour la plupart des utilisateurs, la rponse recommande est 'N'. L'option SCSI generic support permet d'activer la gestion des priphriques SCSI non standards. Pour ces priphriques, il faut utiliser un programme capable d'envoyer 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. C'est en particulier le cas si vous utilisez un graveur de CD-ROM SCSI ou IDE via l'interface d'mulation SCSI du noyau. Dans ce cas, la rponse recommande est 'Y'. Pour la plupart des utilisateurs, la rponse recommande est toutefois 'N'. L'option SCSI media changer support permet de prendre en charge les priphriques de changement de mdia que l'on peut trouver dans les bibliothques de bandes magntiques ou dans certains jukebox. La rponse recommande est 'N'. L'option Probe all LUNs on each SCSI device permet d'effectuer la dtection de tous les numros logiques d'units SCSI de chaque priphrique. Comme la plupart des priphriques SCSI ne disposent que d'un seul numro d'unit logique, la rponse recommande est 'N'. L'option Verbose SCSI error reporting (kernel size +=12K) permet d'utiliser un jeu de messages d'erreurs alternatif pour le SCSI. Ces messages sont plus lisibles, mais prennent plus de place dans le noyau. La rponse recommande est 'N'. L'option SCSI logging facility permet d'activer les traces du sous-systme SCSI. La rponse recommande est 'N'. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 502
L'option Asynchronous SCSI scanning permet d'activer la fonctionnalit de dtection asynchrone des priphriques SCSI. Les bus SCSI ont en effet toujours t relativement lents initialiser en raison de la recherche des priphriques qui y sont connects. Avec cette option, le dmarrage du systme peut tre acclr en ralisant cette dtection en asynchrone. Toutefois, l'initialisation du systme peut chouer si celle-ci ncessite un priphrique SCSI non encore dtect. Il est possible de raliser une synchronisation dans les scripts de dmarrage du systme en chargeant le module scsi_wait_scan. Toutefois, la rponse recommande est 'N'. A.9.9.1. Sous-menu SCSI Transport Ce jeu d'options permet d'exporter des informations sur les communications du sous-systme SCSI dans le systme de fichiers virtuels /sys/. La rponse recommande pour ces options est 'N'. A.9.9.2. Sous-menu SCSI low-level drivers Ce jeu d'options permet de slectionner les gestionnaires de priphriques bas niveau SCSI adapts votre matriel. Il faut connatre la marque et le modle de votre adaptateur SCSI, ainsi que ses paramtres pour rpondre ces questions. Si vous utilisez l'mulation SCSI pour les priphriques ATAPI ou des priphriques USB qui apparaissent comme des disques SCSI une fois connect l'ordinateur, il n'est pas ncessaire de choisir un gestionnaire bas niveau et vous pouvez dsactiver toutes ces options. Il est recommand de rpondre 'Y' cette option et de choisir le pilote adapt votre matriel. A.9.9.3. Sous-menu PCMCIA SCSI adapter support Ce jeu d'options permet la prise en charge les priphriques SCSI au format PCMCIA. Les options qui suivent correspondent aux gestionnaires des diffrents types de matriel SCSI au format PCMCIA que Linux est capable de prendre en charge. Vous devez donc choisir les pilotes correspondants votre matriel. A.9.10. Menu Serial ATA (prod) and Parallel ATA (experimental) drivers L'option Serial ATA (prod) and Parallel ATA (experimental) drivers permet d'activer la prise en charge gnrique des priphriques ATA. Cette prise en charge comprend la gestion des priphriques Serial ATA, qui sont parfaitement supports, et un nouveau jeux de pilotes pour les priphriques ATAPI classiques (dont la connectique, savoir les nappes IDE classiques, est, l'inverse des priphriques Serial ATA, de type parallle). Si les pilotes de priphriques Serial ATA peuvent tre utiliss sans problme, les pilotes Parallel ATA sont beaucoup plus rcents et sont encore considrs comme exprimentaux. Il est par consquent recommand de continuer utiliser les pilotes de priphriques classiques du menu ATA/ATAPI/MFM/RLL support pour l'instant. Cette option vous donnera accs aux pilotes de priphriques pour les diffrents matriels supports par Linux. La rponse recommande est donc 'Y' si votre ordianteur dispose d'une interface Serial ATA, et vous devrez choisir le type de chipset Serial ATA utilis dans les options suivantes. Notez que les priphriques Serial ATA et les priphriques Parallel ATA de ce menu exposent les priphriques sous la forme de priphriques SCSI. Les fichiers spciaux de ces priphriques ont donc un nom de la forme /dev/sdXX et non de la forme /dev/hdXX. terme, lorsque les nouveaux pilotes Parallel ATA seront finaliss, tous les priphriques apparatront comme des priphriques SCSI et la manire d'accder aux priphriques de type bloc sera uniforme. A.9.11. Menu Multi-device support (RAID and LVM) L'option Multiple devices driver support (RAID and LVM) permet d'activer la gestion de la redondance de donnes RAID et des volumes logiques. La technologie RAID permet de raliser des DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 503
agrgats de disques, soit dans le but de simuler des disques de grande capacit, soit afin de stocker les donnes de manire redondante sur plusieurs disques afin d'obtenir une scurit accrue de ces donnes. La technologie LVM permet quant elle uniquement de regrouper plusieurs volumes physiques afin de simuler la prsence d'un volume logique de trs grande capacit. Cette technologie utilise un mcanismes de regroupement des priphriques de type bloc que l'on appelle Device Mapper . Ce mcanisme permet galement de transformer les donnes crites sur les volumes la vole, et en particulier de les chiffrer avec les algorithmes cryptographiques du noyau. Vous pouvez rpondre par 'Y' cette question si vous avez besoin de l'une de ces fonctionnalits. Dans le cas contraire, rpondez par 'N'. La rponse recommande est 'N'. L'option RAID support permet d'activer la prise en charge des technologies RAID au niveau logiciel. Cette option n'est pas ncessaire pour utiliser les technologies RAID avec un matriel spcifique. La rponse recommande est 'N'. L'option Linear (append) mode permet de concatner plusieurs partitions pour ne former qu'une seule zone de donnes plus grande. Cette fonctionnalit n'assure pas la redondance des donnes. La rponse recommande est 'N'. L'option 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 d'augmenter les performances en minimisant les temps d'accs, si ces partitions sont sur des disques diffrents. Cette fonctionnalit n'assure cependant pas la redondance des donnes. La rponse recommande est 'N'. L'option RAID-1 (mirroring) mode permet de dupliquer les donnes sur plusieurs disques la vole. Cette redondance des donnes permet d'assurer une grande scurit. La rponse recommande est 'N'. L'option RAID-10 (mirrored striping) mode (EXPERIMENTAL) permet de dupliquer les donnes sur plusieurs disques la vole, dont l'espace peut tre combin pour raliser des partitions quilibres plus grande. Ce mode de fonctionnement est donc un mode hybride entre le mode RAID-0 et le mode RAID-1, et offre donc un peu plus de souplesse. La rponse recommande est 'N'. L'option RAID-4/RAID-5/RAID-6 mode permet d'activer le support logiciel RAID-4, RAID-5 ou RAID-6. 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 l'un des disques. Le systme est tolrant la dfaillance d'un seul disque. Dans le mode RAID-6, les donnes de contrle sont doubles et consomment deux disques sur l'ensemble des disques utiliss, mais le systme tolre la dfaillance de deux disques simultanment. La rponse recommande est 'N'. L'option Support adding drives to a raid-5 array (experimental) permet d'activer la fonctionnalit d'ajout de disque un systme RAID-5. Cela ncessite la redistribution des donnes sur l'ensemble des disques. Cette fonctionnalit permet de le faire en exploitation. Elle reste toutefois exprimentale, aussi la rponse recommande est-elle 'N'. L'option Mutipath I/O support permet d'activer le support des priphriques capables d'tre accds par diffrents jeux de ports d'entre / sortie. La rponse recommande est 'N'. L'option Faulty test module for MD permet d'activer une fonctionnalit de gnration d'erreurs alatoires lors des opration de lecture sur les priphriques multiples. Cette option est utile aux dveloppeurs du noyau pour tester les techniques de reconstitution des informations dans les fonctionnalits RAID. La rponse recommande est 'N'. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 504
L'option Device mapper support permet d'activer la gestion des volumes virtuels. Avec cette option, vous pourrez faire des agrgats de plusieurs disques, priphriques RAID ou priphriques loopback afin de simuler un priphrique de type bloc de trs grande capacit. Notez que cette fonctionnalit ne permet pas d'accder aux partitions de type agrgat de Windows 2000 et Windows XP. Pour ce type de partition, consultez le sous-menu Partition types du menu File systems . La rponse recommande est 'Y'. L'option Device mapper debugging support permet d'activer des messages de dboguage complmentaires lors de l'utilisation des volumes virtuels. La rponse recommande est 'N'. L'option Crypt target support permet d'utiliser les volumes virtuels pour chiffrer les systmes de fichiers qui y sont stockes. La rponse recommande est 'N'. L'option Snapshot target (EXPERIMENTAL) permet d'effectuer une photographie de l'tat complet d'un volume virtuel un instant donn, de manire atomique. La rponse recommande est 'N'. L'option Mirror target (EXPERIMENTAL) permet de rpliquer un volume sur un autre volume afin d'en avoir en permanence une copie conforme. La rponse recommande est 'N'. L'option Zero target (EXPERIMENTAL) permet de crer un volume virtuel sur lequel toutes les critures sont ignores, et dont les donnes sont toujours nulles en lecture. Ce type de volume peut tre utile dans certaines situation de restauration. La rponse recommande est 'N'. L'option Multipath target (EXPERIMENTAL) permet de donner aux gestionnaires de volume la possibilit d'accder aux priphriques capables de grer plusieurs jeux de ports d'entre/sortie. Si vous activez cette option, vous pourrez accder aux options des pilotes de priphriques pris en charge par Linux. La rponse recommande est 'N'. L'option I/O delaying target (EXPERIMENTAL) permet de prendre en charge un volume virtuel qui retarde les oprations d'entre/sortie sur les priphriques physiques. Cette fonctionnalit est principalement utile pour raliser des tests, la rponse recommande est 'N'. A.9.12. Menu Fusion MPT device support Les options Fusion MPT ScsiHost drivers for SPI , Fusion MPT ScsiHost drivers for FC et Fusion MPT ScsiHost drivers for SAS permettent d'activer la prise en charge de l'architecture Fusion respectivement pour les adaptateurs SCSI parallles, fibre optique et SCSI srie. Cette architecture permet de multiplexer ces priphriques pour atteindre des taux de transfert encore plus levs. Ce gestionnaire utilise une carte PCI compatible Fusion MPT pour effectuer les oprations d'entre/sortie. Vous pouvez rpondre 'Y' cette question si vous disposez d'une telle carte, et rgler le paramtre du nombre maximum de paramtres des oprations d'entres / sorties multiples du driver avec l'option suivante. La rponse recommande tant 'N'. L'option Maximum number of scatter gather entries (16 - 128) permet d'indiquer le nombre maximum de segments de donnes utilisables dans le cadre d'entres/sorties de donnes non contiges. Il est recommand de conserver la valeur par dfaut inchange (128). L'option Fusion MPT misc device (ioctl) driver permet d'activer un moyen de contrle supplmentaire sur les adaptateurs MPT par l'intermdiaire du fichier spcial de priphrique de type caractre /dev/mptctl, dont le code majeur est 10 et le code mineur est 240. La rponse recommande est 'N'. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 505
L'option Fusion MPT LAN driver permet de prendre en charge les rseaux IP sur les adaptateurs Fusion fibre optique. La rponse recommande est 'N'. L'option Fusion MPT logging facility permet d'activer des traces de fonctionnement sur les priphriques Fusion. La rponse recommande est 'N'. A.9.13. Menu IEEE 1394 (FireWire) support (EXPERIMENTAL) L'option IEEE 1394 (FireWire) support - alternative stack, EXPERIMENTAL permet d'activer la gestion des cartes FireWire. Ces cartes fournissent l'accs un bus de donnes extrmement rapide, que l'on utilise gnralement pour connecter des priphriques exigeant une bande passante trs leve, comme les camras vido par exemple. Le pilote rendu accessible par cette option est un nouveau pilote de priphrique, qui n'est pas forcment totalement stabilis encore. De plus, il ne prend pas encore en charge l'ensemble des fonctionnalits de l'ancien pilote (en particulier l'interface rseau au travers de l'interface FireWire). La rponse recommande est donc 'N'. L'option Support for OHCI FireWire host controllers permet d'activer la gestion des cartes FireWire compatible OHCI dans le nouveau pilote FireWire. La rponse recommande est 'Y'. L'option Support for storage devices (SBP-2 protocol driver) permet d'activer la gestion des priphriques de stockage dans le nouveau pilote FireWire, tels que les disques durs connects par une prise FireWire. La rponse recommande est 'Y'. L'option IEEE 1394 (FireWire) support (EXPERIMENTAL) permet d'activer la gestion des cartes FireWire. Ce pilote de priphriques est le pilote utilis historiquement dans Linux, il est donc plus stable que le nouveau pilote mais appel tre remplac par ce dernier. La rponse recommande est 'Y'. L'option Excessive debugging output est rserve pour les dveloppeurs de gestionnaires de priphriques. Elle permet de stocker sur disque toutes les informations transitant sur le bus FireWire, ce qui sature gnralement les disques durs extrmement rapidement. Il faut rpondre par 'N' cette question. L'option Texas Instruments PCILynx support permet d'activer la gestion des cartes FireWire PCILynx de Texas Instruments. Cette option n'est disponible que si l'option I2C support du menu I2C support a t active. La rponse recommande est 'N'. L'option OHCI-1394 support active la prise en charge des contrleurs IEEE 1394 respectant les spcifications OHCI (il s'agit d'un standard de communication pour les contrleurs). Ce pilote n'a t test qu'avec un contrleur de Texas Instruments, mais ce contrleur est l'un des plus utiliss du march. La rponse recommande est 'Y'. L'option OHCI-1394 Video support permet d'utiliser la capture vido des cartes FireWire. La rponse recommande est 'Y'. L'option SBP-2 support (Harddisks, etc.) permet d'activer la gestion des priphriques SBP-2, qui comprennent les disques durs et les lecteurs de DVD connects sur les bus FireWire. La rponse recommande est 'Y'. L'option Enable replacement for physical DMA in SBP2 permet d'utiliser un code de compatiblit pour que les gestionnaires priphriques SBP-2 puisse utiliser les accs directs la mmoire sur les contrleurs qui ne sont pas capables de les raliser. La rponse recommande est 'N'. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 506
L'option IP over 1394 permet d'utiliser une interface IEEE1394 comme une interface Ethernet. La rponse recommande est 'N'. L'option OHCI-DV I/O support (deprecated) permet d'activer l'envoi et la rception d'images DV par un port IEEE1394 au travers d'une interface simplifie. Toutefois, les programmes vido n'utilisent plus cette fonctionnalit de nos jours et accdent directement au port 1394 en mode brut (voir option suivante). Cette option n'est donc plus ncessaire, et la rponse recommande est 'N'. L'option Raw IEEE 1394 I/O support permet aux programmes de communiquer directement avec le matriel IEEE 1394. C'est en gnral le mode de fonctionnement dsir, aussi la rponse recommande cette question est-elle 'Y'. A.9.14. Menu I2O device support L'option I2O support permet d'activer la gestion des cartes d'entre/sortie I2O. Ces cartes prennent en charge la gestion des entres/sorties de manire uniforme, pour tous les priphriques matriels, et permettent donc d'crire un gestionnaire de priphriques uniforme au niveau du systme d'exploitation pour toute une classe de priphrique. Ce gestionnaire, nomm OSM (abrviation de Operating System Module ), communique avec des pilotes spcifiques chaque type de matriel. Ces pilotes peuvent alors ne faire aucune hypothse sur le systme d'exploitation utilis. Ainsi, il est possible d'crire des gestionnaires de priphriques communs tous les systmes d'exploitation. La rponse recommande est 'N'. L'option Enable LCT notification permet de prendre en charge les notifications relatives aux canaux de communication logiques du protocole I2O. Cette fonctionnalit est normalement ncessaire, mais peut tre dsactive car certains contrleurs de SUN ne la prennent pas en charge. La rponse recommande est 'Y', sauf si vous tes dans ce cas. L'option Enable Adaptec extensions permet de prendre en charge les extensions ncessaires l'utilisation des contrleurs RAID de marque Adaptec. Cette option vous donnera galement accs l'option Enable 64-bit DMA permettant d'activer les accs direct la mmoire en 64 bits sur ces adaptateurs. La rponse recommande est 'Y' si vous disposez de ce type de priphrique. L'option I2O Configuration support permet d'activer l'interface de configuration des priphriques I2O. Cette option est en particulier ncessaire pour configurer les priphriques RAID sur les contrleurs de marque Adaptec. Cette option vous donnera galement accs l'option Enable IOCTLs (OBSOLETE) , qui permet de prendre en charge des commandes de configuration des priphriques obsoltes, titre de compatibilit. La rponse recommande est 'Y' si vous disposez de ce type de priphrique. L'option I2O Bus Adapter OSM permet de prendre en charge le gestionnaire de priphriques pour le bus I2O lui-mme. Cela permet de demander au bus de lister les priphriques qui y sont connects, en particulier pour dtecter les nouveaux priphriques. La rponse recommande est 'Y'. L'option I2O Block OSM permet de prendre en charge le gestionnaire de priphriques pour les priphriques RAID. La rponse recommande est 'Y'. L'option I2O SCSI OSM permet de prendre en charge le gestionnaire de priphriques SCSI ou FibreChannel. Ce gestionnaire vous permettra galement d'accder de manire unitaire aux disques RAID. La rponse recommande est 'N'. L'option I2O /proc support permet d'exporter des informations relatives aux priphriques I2O dans le systme de fichiers virtuel /proc/. La rponse recommande est 'N'. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 507
A.9.15. Configuration des interfaces rseau L'option Network device support permet d'activer 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 suffisants pour accder au monde extrieur. Si l'on n'active pas cette option, seuls les processus de la machine locale seront accessibles (par l'intermdiaire de l'interface 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 d'accs Internet, il faut en plus rpondre 'Y' cette question. La rponse recommande est 'Y'. L'option Netdevice multiple hardware queue support permet de prendre en charge plusieurs files de transmission pour les paquets sortants, sur les adaptateurs qui fournissent cette fonctionnalit. La rponse recommande est 'N'. L'option Intermediate Functional Block support permet d'activer la prise en charge d'une interface rseau virtuelle qui se positionne entre l'interface rseau physique et les clients afin de raliser des statistiques sur le trafic rseau. La rponse recommande est 'N'. L'option Dummy net driver support permet d'activer la fonctionnalit de rseau virtuel. Cette fonctionnalit fournit une interface virtuelle sur un rseau ne contenant qu'une seule machine. Cette interface peut tre utilise pour faire croire des programmes rseau que la machine est effectivement connecte un rseau. La rponse recommande est 'N'. L'option 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'. L'option MAC-VLAN support (EXPERIMENTAL) permet de crer plusieurs interfaces virtuelles afin de rediriger les paquets destins une adresse physique vers une interface spcifique. La rponse recommande est 'N'. L'option EQL (serial line load balancing) support permet d'activer la gestion de connexions multiples sur plusieurs connexions srie (par exemple par l'intermdiaire de deux modems). Cette fonctionnalit ncessite galement le support de cette fonctionnalit du ct de la machine distante. La rponse recommande est 'N'. L'option Universal TUN/TAP device driver support permet d'activer la gestion d'interfaces 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 l'intermdiaire de fichiers 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 qu'avec une seule autre machine), alors que les interfaces de type tap simulent le fonctionnement d'une carte Ethernet classique. Cette fonctionnalit permet donc aux programmes classiques d'accder aux paquets routs vers ces interfaces, et de recevoir et d'envoyer des donnes brutes sur le rseau. Les interfaces tunX et tapX sont cres dynamiquement, lorsque les programmes qui dsirent les utiliser s'enregistrent au niveau du systme en ouvrant le fichier spcial de priphrique /dev/net/tun, de type caractre et de codes majeur et mineur gaux respectivement 10 et 200. La rponse recommande est 'N'. L'option General Instruments Surfboard 1000 permet de prendre en charge les cartes modem Surfboard 1000 utilises pour accder Internet via les oprateurs de cble. La rponse recommande est 'N'. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 508
L'option Xen network device frontend driver permet de prendre en charge les interfaces rseau pour les machines virtuelles Xen. Ce pilote doit tre activ pour les noyaux des systmes fonctionnant dans les machines virtuelles Xen. La rponse recommande est 'N'. L'option FDDI driver support permet d'activer la gestion des cartes Ethernet FDDI. Les options qui suivent permettent de slectionner les gestionnaires de priphriques pour les cartes FDDI gres par Linux. La rponse recommande est 'N'. L'option HIPPI driver support (EXPERIMENTAL) permet la gestion des cartes HIPPI. Les options qui suivent permettent de slectionner les gestionnaires de priphriques pour les cartes de ce type. La rponse recommande est 'N'. L'option PLIP (parallel port) support permet d'activer les connexions par port parallle. Ce type de connexion peut tre utilis pour transfrer des fichiers par un cble parallle entre deux ordinateurs. La rponse recommande est 'N'. L'option PPP (point-to-point protocol) support permet d'activer la gestion des connexions PPP. Ces connexions sont utilises pour accder Internet via un modem, ou pour tablir une connexion de manire plus gnrale via un cble srie ou tout autre moyen de communication existant. Il est conseill d'activer le support de ce type de connexion, moins que vous soyez sr de ne jamais vous connecter Internet. La rponse recommande ici est 'Y'. L'option PPP multinlink support (EXPERIMENTAL) permet d'utiliser 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 d'accs et accrotre ainsi votre bande passante. Bien entendu, pour que cette technique fonctionne, il faut que le fournisseur d'accs l'autorise. La rponse recommande est 'N'. L'option PPP filtering permet d'autoriser le filtrage des paquets traversant les interfaces PPP existantes dans le systme. Cette fonctionnalitpeut tre utile pour raliser un firewall ou pour effectuer des actions spcifiques lorsque certains paquets sont reus. La rponse recommande est 'N'. L'option PPP support for async serial ports permet de prendre en charge les communications PPP sur les cbles srie classiques. C'est en gnral l'option qui convient lorsqu'on veut se connecter Internet l'aide d'un modem classique. Notez que cette option n'est pas utilisable pour les connexions l'aide d'un modem Numris. La rponse recommande est 'Y'. L'option 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'. L'option PPP Deflate compression permet de prendre en charge l'algorithme de compression Deflate (le mme algorithme que celui utilis par le programme gzip) pour compresser les donnes transmises sur les connexions PPP. La rponse recommande est 'Y'. L'option PPP BSD-Compress compression permet de prendre en charge l'algorithme de compression LZW pour compresser les donnes transmises sur les connexions PPP. Cet algorithme est soumis un brevet de logiciel et son utilisation est suppose tre soumise paiement de droits. Cependant, les brevets de logiciel sont encore illgaux en Europe, et il est tout fait lgal de l'utiliser. Les taux de compressions obtenus sont de toutes manires infrieures ceux de la mthode Deflate, aussi la rponse recommande est-elle 'N'. L'option PPP MPPE compression (encryption) (EXPERIMENTAL) permet de prendre en charge l'algorithme de compression MPPE utilis par le protocole de communication point point de Microsoft. La rponse recommande est 'N'. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 509
L'option PPP over Ethernet (EXPERIMENTAL) permet de raliser des connexions point point sur un rseau de type Ethernet. Ce protocole est galement souvent utilis par les fournisseurs d'accs pour transfrer les donnes via les modems ADSL. La rponse recommande est donc 'Y'. L'option PPP over ATM permet de raliser des connexions point point sur un rseau ATM. La rponse recommande est 'N'. L'option PPP over L2TP (EXPERIMENTAL) permet de raliser des connexions point point sur un rseau L2TP. La rponse recommande est 'N'. L'option SLIP (serial line) support permet de connecter deux ordinateurs par une ligne srie ou par un modem. Les options suivantes permettent de fixer 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'. L'option CSLIP compressed headers permet d'activer la compression des en-ttes IP pour le protocole SLIP. La rponse recommande est 'N'. L'option Keepalive and linefill permet d'activer 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'. L'option Six bit SLIP encapsulation permet de faire en sorte que le protocole SLIP n'envoie que des donnes codes sur 6 bits. Cela permet d'amliorer la qualit des transmissions sur les rseaux peu fiables, ou qui ne peuvent pas transfrer plus de 7 bits de donnes. La rponse recommande est 'N'. L'option Fibre Channel driver support permet d'activer la gestion des adaptateurs Fiber Channel. L'option qui suit donne la possibilit de slectionner le gestionnaire de priphriques pour les cartes Interphase base de chipset Tachyon. La rponse recommande est 'N'. L'option Traffic Shaper (EXPERIMENTAL) permet d'activer la possibilit de contrler le dbit maximal de donnes travers une interface rseau. La rponse recommande est 'N'. L'option Network console logging support (EXPERIMENTAL) permet d'activer la possibilit d'envoyer les messages gnrs par le noyau vers le rseau, plutt que de les envoyer la console. La rponse recommande est 'N'. L'option Netpoll traffic trapping n'est pas documente et ne sera pas dcrite plus en dtail ici. La rponse recommande est 'N'. A.9.15.1. Sous-menu ARCnet devices L'option ARCnet support permet d'activer la gestion des cartes de type ARCnet. Les options qui suivent correspondent aux diffrents pilotes pour les diffrentes cartes de ce type. Si vous avez une carte de ce type, rpondez par 'M' ou 'Y' cette question et choisissez le pilote correspondant votre matriel dans la suite du menu. La rponse recommande est 'N'. A.9.15.2. Sous-menu PHY device support L'option PHY Device support and infrastructure permet d'activer la des priphriques PHY auxquels les contrleurs Ethernet sont souvent attachs. Ces priphriques permettent de dterminer l'tat du lien physique (prsence du cble, mode de communication, croisement des fils, vitesse, etc.). La rponse recommande est 'Y'. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 510
Les options qui suivent correspondent aux diffrents pilotes pour les priphriques PHY de certaines cartes rseau. Si vous avez une carte de ce type, rpondez par 'M' ou 'Y' la question correspondante. La rponse recommande est 'N'. A.9.15.3. Sous-menu Ethernet (10 or 100Mbit) L'option Ethernet (10 or 100Mbit) permet d'activer la gestion des cartes de type Ethernet. Les options qui suivent correspondent aux diffrents gestionnaires de priphriques 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 gestionnaire de priphriques correspondant votre matriel dans la suite du menu. La rponse recommande est 'N'. Certaines cartes utilisent une interface commune pour le transmetteur, dont on peut activer le support grce l'option Generic Media Independent Interface device support , qu'il est donc conseill d'activer. La plupart des cartes rseau bon march sont compatibles NE2000, celles fournies sur les cartes mres sont toutefois souvent diffrentes. Il existe deux types de pilotes pour les cartes rseau, selon qu'elles sont ISA ou non. Les pilotes pour les cartes ISA peuvent tre choisis en activant les options Other ISA cards . Les pilotes pour les cartes PCI peuvent tre slectionns en activant les options EISA, VLB, PCI and on board controllers . A.9.15.4. Sous-menu Ethernet (1000 Mbit) Les options disponibles dans ce menu permettent de choisir les gestionnaires de priphriques utiliser pour les cartes Ethernet Gigabit. Choisissez l'option qui correspond votre matriel si vous en disposez d'une. A.9.15.5. Sous-menu Ethernet (10000 Mbit) Les options disponibles dans ce menu permettent de choisir les gestionnaires de priphriques utiliser pour les cartes Ethernet 10 Gigabits. Choisissez l'option qui correspond votre matriel si vous en disposez d'une. A.9.15.6. Sous-menu Token Ring devices (depends on LLC=y) Ce menu permet d'activer les gestionnaires de priphriques pour les cartes Token Ring. L'option Token Ring driver support permet d'activer la gestion des rseaux Token Ring. Les options qui suivent permettent de choisir les gestionnaires de priphriques pour ces adaptateurs. La rponse recommande est 'N'. A.9.15.7. Sous-menu Wireless LAN Les options de ce menu permettent d'activer la gestion des connexions sans fil Wifi. Les options qui suivent permettent de choisir les gestionnaires de priphriques disponibles. Cette option est galement ncessaire pour les gestionnaires de priphriques Wifi non intgrs au noyau. Certains priphriques ncessitent galement les fonctionnalits de l'infrastructure Wifi activable avec les options Generic IEEE 802.11 Networking Stack du menu Networking . La rponse recommande est 'Y' si vous disposez d'une interface rseau sans fil, et 'N' dans le cas contraire. A.9.15.8. Sous-menu USB Network Adapters Ce sous-menu permet de prendre en charge les priphriques rseau connects via un port USB. En particulier, l'option Multi-purpose USB Networking Framework donne accs aux options de configuration des fonctions de connexion entre deux ordinateurs ou entre un ordinateur et un appareil USB intelligent, en utilisant un cble USB de transfert de donnes. Les interfaces rseau seront nommes usb0, usb1, etc. Elle donne galement accs l'option CDC Ethernet support (smart DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 511
devices such as cable modems) , qui doit tre utilise pour accder la plupart des priphriques ADSL qui simulent une interface Ethernet via le port USB. La rponse recommande est 'N'. A.9.15.9. Sous-menu PCMCIA network device support L'option PCMCIA network device support permet d'activer la gestion des cartes rseau au format PCMCIA. Les options qui suivent correspondent aux divers gestionnaires de priphriques pris en charge par Linux. La rponse recommande est 'N'. A.9.15.10. Sous-menu Wan interfaces L'option Wan interfaces support permet de prendre en charge les gestionnaires de priphriques pour les adaptateurs WAN ( Wide Area Network ). Cette option vous donnera accs aux options permettant de slectionner les gestionnaires de priphriques pour ces adaptateurs. La rponse recommande est 'N'. L'option WAN router drivers permet d'activer les options de menu suivantes, qui donnent la possibilit de faire la configuration des adaptateurs WAN. Cette option n'est disponible que si l'option Wan router du menu de configuration des options gnrales du rseau a t active. La rponse recommande est 'N'. L'option LAPB over Ethernet driver permet d'activer un gestionnaire de priphriques pour une carte X.25 virtuelle. La rponse recommande est 'N'. L'option X.25 async driver permet d'activer la gestion du protocole X.25 sur une ligne srie normale ou sur un modem. La rponse recommande est 'N'. A.9.15.11. Sous-menu ATM drivers L'option Dummy ATM driver permet de fournir un pilote de priphrique ATM virtuel. Ce type pilote n'est utile qu' des fins de test et de dveloppement. La rponse recommande est 'N'. L'option ATM over TCP permet d'encapsuler ATM sur un rseau TCP/IP. Ce type d'encapsulation n'est utile qu' des fins de test et de dveloppement. La rponse recommande est 'N'. L'option Efficient Networks Speedstream 3010 permet de prendre en charge les cartes ATM Speedstream 3010 d'Efficient Networks. La rponse recommande est 'N'. L'option Efficient Networks ENI155P active la gestion des cartes ATM ENI155P d'Efficient Networks et Power155 de SMC. Les options qui suivent permettent de configurer ce gestionnaire de priphriques. La rponse recommande est 'N'. L'option Fujitsu FireStream (FS50/FS155) active la gestion des cartes ATM FireStream de Fujitsu. La rponse recommande est 'N'. L'option ZeitNet ZN1221/ZN1225 active la gestion des cartes ATM ZN1221 et ZN1225 de ZeitNet. Les options qui suivent permettent de configurer ce gestionnaire de priphriques. La rponse recommande est 'N'. L'option IDT 77201 (NICStAR) (ForeRunnerLE) active la gestion des cartes ATM bases sur le chipset NICStAR 77201. Les options qui suivent permettent de configurer ce gestionnaire de priphriques. La rponse recommande est 'N'. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 512
L'option IDT 77252 (NICStAR II) active la gestion des cartes ATM bases sur le chipset NICStAR 77252. Les options qui suivent permettent de configurer ce gestionnaire de priphriques. La rponse recommande est 'N'. L'option Madge Ambassador (Collage PCI 155 Server) active la gestion des cartes ATM bases sur le chipset ATMizer. L'option qui suit permet d'activer les informations de dbogage de ce gestionnaire de priphriques. La rponse recommande est 'N'. L'option Madge Horizon [Ultra] (Collage PCI 25 and Collage PCI 155 Client) active la gestion des cartes ATM bases sur le chipset Horizon. L'option qui suit permet d'activer les informations de dbogage de ce gestionnaire de priphriques. La rponse recommande est 'N'. L'option Interphase ATM PCI x575/x525/x531 active la gestion des cartes ATM ChipSAR d'Interphase. L'option qui suit permet d'activer les informations de dbogage de ce gestionnaire de priphriques. La rponse recommande est 'N'. L'option FORE Systems 200E-series active la gestion des cartes ATM FORE Systems 200E. Les options qui suivent permettent de configurer ce gestionnaire de priphriques. La rponse recommande est 'N'. L'option FORERunner HE Series active la gestion des cartes ATM ForeRunner HE. Les options qui suivent permettent de configurer ce gestionnaire de priphriques. La rponse recommande est 'N'. A.9.16. Menu ISDN subsystem L'option ISDN support permet d'activer la gestion des interfaces ISDN ( Numris en France). Si vous disposez d'une telle interface, la rponse recommande est 'M', sinon, c'est 'N'. A.9.16.1. Ancienne interface ISDN4Linux Le sous-menu Old ISDN4Linux permet d'activer l'ancienne interface de programmation ISDN4Linux. Si vous y activez l'option Old ISDN4Linux (obsolete) , vous aurez accs des options complmentaires permettant de configurer cette interface. La rponse recommande est 'N', car on utilisera de prfrence la nouvelle interface prsent. L'option Support synchronous PPP permet d'utiliser une version de PPP qui ne gre pas les synchronisations dans la communication entre les deux ordinateurs. Cette fonctionnalit n'est en effet plus ncessaire avec ISDN, puisque c'est un protocole numrique. La rponse recommande est 'Y'. L'option Use VJ-compression with synchronous PPP permet d'utiliser l'algorithme de Van Jacobson pour la compression des en-ttes IP dans le protocole PPP synchrone. La rponse recommande est 'Y'. L'option Support generic MP (RFC 1717) permet de regrouper plusieurs connexions ISDN avec le protocole PPP synchrone, et ce afin d'accrotre la bande passante. La rponse recommande est 'N'. L'option Filtering for synchronous PPP active les fonctionnalits de filtrage des paquets pour les interfaces IPPP. La rponse recommande est 'N'. L'option Support BSD compression active la gestion de la compression de donnes avec l'algorithme BSD. La rponse recommande est 'N'. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 513
L'option Support audio via ISDN permet d'activer la gestion des commandes vocales dans l'mulateur de modem du sous-systme ISDN. La rponse recommande est 'N'. L'option Support AT-Fax Class 1 and 2 commands permet d'activer la gestion des commandes vocales des FAX. La rponse recommande est 'N'. L'option X.25 PLP on top of ISDN permet de prendre en charge le protocole X.25 au dessus d'ISDN. La rponse recommande est 'N'. L'option isdnloop support du sous-menu ISDN feature submodules permet d'activer la gestion d'une interface ISDN virtuelle, afin de tester la configuration sans effectuer d'appel rel. La rponse recommande est 'N'. L'option Support isdn diversion services quant elle permet d'activer la gestion de services ISDN supplmentaires. La rponse recommande est galement 'N'. A.9.16.1.1. Gestionnaires de priphriques ISDN4Linux Les sous-menus Passive cards et Active cards permettent d'inclure les drivers pour la plupart des cartes ISDN qui supportent l'ancienne interface de programmation ISDN de Linux. Ces options sont places dans les sous-menus en fonction de la nature des cartes utilises. Le sous-menu Passive cards permet d'accder aux drivers pour les cartes ISDN passives, dont les cartes HiSax, AVM, Sedlbauer et ELSA. Le sous-menu Active cards permet quant lui d'accder aux cartes ISDN actives, dont les cartes Spellcaster, IBM, Eicon, Auvertech et Hypercope. Le sous-menu Siemens Gigaset donne accs aux pilotes pour les cartes Siemens Gigaset. Vous devez bien entendu choisir les options qui correspondent votre matriel. A.9.16.2. Interface CAPI La nouvelle interface ISDN pour Linux est base sur le standard CAPI ( Common ISDN Application Programming Interface ) et peut tre active l'aide de l'option CAPI2.0 support . On prfrera cette interface l'ancienne, aussi la rponse recommande est-elle 'Y' si l'on dsire utiliser les lignes ISDN sous Linux. L'option Verbose reason code reporting (kernel size +=7K) permet d'obtenir des messages dtaills sur les raisons des dconnexions provoques par le pilote CAPI. La rponse recommande est 'N'. L'option CAPI trace support permet d'obtenir des messages de trace dtaills sur le fonctionnement du pilote CAPI. La rponse recommande est 'N'. L'option CAPI2.0 Middleware support (EXPERIMENTAL) permet d'tendre l'interface CAPI pour permettre le transfert des connexions tablies via l'interface CAPI vers un terminal classique. La rponse recommande est 'N'. L'option CAPI2.0 /dev/capi support permet de donner l'accs l'interface CAPI 2.0 aux applications par l'intermdiaire d'un fichier spcial de priphrique /dev/capi20. L'utilisation de ce fichier spcial de priphrique ncessite l'installation d'une bibliothque de fonctions ddie. La rponse recommande est 'N'. L'option CAPI2.0 filesystem support permet d'activer le support d'un systme de fichiers virtuel semblable au systme de fichiers /dev/pts/, dans lequel les terminaux crs par les fonctionnalits CAPI apparatront. Cette option est ncessaire pour utiliser le dmon pppd avec son module pppdcapiplugin. La rponse recommande est 'N'. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 514
L'option CAPI2.0 capidrv interface support permet d'utiliser les cartes compatibles CAPI avec l'interface de programmation ISDN classique. La rponse recommande est 'N'. Les options qui suivent permettent de prendre en charge les cartes AVM et Eicon. La rponse recommande est 'N'. A.9.17. Menu Telephony Support L'option Linux telephony support permet d'activer 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 n'a rien voir avec un modem, qui fait exactement l'inverse (transfert des donnes informatiques sur un rseau tlphonique analogique). La rponse recommande est 'N'. L'option 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'. L'option QuickNet Internet LineJack/PhoneJack PCMCIA support active la prise en charge des cartes tlphoniques Quicknet connectes sur port PCMCIA. Vous pouvez rpondre 'Y' ou 'M' si vous possdez ce matriel, sinon la rponse recommande est 'N'. A.9.18. Menu Input device support Ce menu contient les options permettant de configurer les priphriques d'entre de Linux, dont le clavier et la souris. L'option Generic input layer (needed for keyboard, mouse, ...) permet d'activer la prise en charge des pilotes des priphriques d'entre sous Linux. Cela comprend le clavier et les souris, aussi la rponse recommande est-elle 'Y'. L'option Support for memoryless force-feedback devices permet de prendre en charge les priphriques rtroaction sans mmoire, tels que les joysticks WingMan Force 3D de Logitech ou FireStorm Dual Power 2 de ThrustMaster. La rponse recommande est 'N'. L'option Polled input device skeleton permet de prendre en charge les fonctions de scrutation priodiques des priphriques d'entre auxquelles certains pilotes de priphriques peuvent avoir recours. Les pilotes du noyau activent automatiquement cette option s'ils en ont besoin, mais dans le cas contraire ces fonctionnalits ne sont pas obligatoirement prsentes dans le noyau et donc ne sont pas disposition des pilotes additionnels non intgrs au noyau. La rponse recommande est donc 'Y' afin de fournir ces fonctionnalits aux pilotes externes ventuels, mme si aucun pilote du noyau n'en a besoin. L'option Mouse interface permet d'offrir un accs aux priphriques de type souris aux applications utilisateur, par l'intermdiaire de fichiers spciaux de priphriques /dev/input/mouseX et /dev/input/mice. Cette option vous donnera galement accs la sous-option Provide legacy /dev/psaux device , qui permet de prendre en charge le fichier spcial de priphriqe /dev/psaux ordinairement utilis pour les souris PS/2. La rponse recommande est 'Y' pour ces deux questions. Les options Horizontal screen resolution et Vertical screen resolution permettent de dfinir la rsolution horizontale et verticale de l'cran, afin de permettre l'utilisation d'une 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 l'cran. Si vous disposez d'une telle tablette, vous DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 515
devez entrer ici la rsolution du mode graphique que vous utilisez prioritairement. Dans les autres cas, les valeurs de ces options ne sont pas utilises. L'option Joystick interface active la prise en charge des joysticks et permet aux applications d'y accder au travers des fichiers 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. La rponse recommande est 'N'. L'option Touchscreen interface active la prise en charge des priphriques de pointage absolus qui grent le protocole Touchscreen de Compaq. Cette option vous donnera galement la possibilit de fixer la rsolution du mode graphique que vous utilisez, pour permettre au gestionnaire de faire la correspondance entre la position sur le TouchScreen et les pixels de l'cran. La rponse recommande est 'N. L'option Event interface support active la gestion des fichiers spciaux /dev/input/eventN (o N est le numro du priphrique), qui permettent de lire les vnements provenant des priphriques d'entre de manire gnrique. Ces fichiers peuvent tre utiliss par plusieurs priphriques distincts, et permettent de connecter plusieurs priphriques d'entre sur la mme machine en les grant de manire uniforme. La rponse recommande est-elle 'Y'. L'option Event debugging permet de gnrer des traces sur tous les vnements qui se produisent au niveau des priphriques d'entre. Ces traces ne sont utiles qu'aux dveloppeurs des gestionnaires de priphriques d'entre, et peuvent gnrer de grandes quantits d'informations dans les fichiers de traces. De plus, elles contiendront galement les mots de passe et constituent donc un trou de scurit important. La rponse recommande est donc 'N'. Les options qui suivent permettent d'activer des gestionnaires complmentaires pour les priphriques d'entre. Vous trouverez en particulier les gestionnaires de priphriques pour les souris PS/2 et srielles, ainsi que les gestionnaires pour les Joysticks et les Touchscreen. Vous devez activer les options correspondantes votre matriel. Notez galement que la prise en charge des claviers et des souris USB doit se configurer au niveau du menu USB support et ne peut tre faite ici, mme si les options prcdentes restent ncessaires. L'option Miscellaneous devices permet d'accder aux options de configuration de gestionnaires de priphriques complmentaires, tels que celui permettant de contrler le haut-parleur du PC (option PC Speaker support ) et celui qui permet de relayer la gestion des priphriques d'entres des programmes utilisateurs (option User level driver support ). La rponse recommande est 'Y' pour l'option PC Speaker support , et 'N' pour l'option User level driver support . A.9.18.1. Sous-menu Hardware I/O ports Ce sous-menu vous permettra de configurer les ports d'entre/sortie matriel classiques. L'option Serial I/O support permet de prendre en charge les priphriques d'entre qui utilisent des communications avec l'ordinateur de type srie. Cela comprend les claviers et les souris, aussi la rponse recommande est-elle 'Y'. L'option i8042 PC Keyboard controller permet de prendre en charge les contrleurs de claviers standards. Si votre clavier n'est pas USB, vous devez activer cette option. La rponse recommande est 'Y'. L'option Serial port line discipline permet de prendre en charge les priphriques connects sur un port srie RS232. C'est en particulier le cas de vieilles souris srielles et de joysticks. La rponse recommande est 'N'. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 516
L'option ct82c710 Aux port controller permet de prendre en charge les souris connectes au port QuickPort des portables TravelMate de Texas Instrument. La rponse recommande est 'N'. L'option Parallel port keyboard adapter permet de prendre en charge les claviers ou souris connects sur un adaptateur pour port parallle. La rponse recommande est 'N'. L'option PCI PS/2 keyboard and PS/2 mouse controller permet de prendre en charge les claviers et les souris PS/2 pour connecteurs PCI externes des stations d'attache des portables. Cette option n'est pas utile pour les ordinateurs normaux disposant de claviers ou de souris PS/2. La rponse recommande est 'N. L'option PS/2 driver library permet d'inclure dans le noyau les fonctions de gestion du port PS/2, pour qu'elles soient accessibles d'un pilote externe de priphrique PS/2. La rponse recommande est 'Y'. L'option Raw access to serio ports permet l'accs brut aux priphriques auxiliaires connects sur les ports PS/2 via des fichiers spciaux de priphriques de numro majeur gal 10. Le premier de ces fichiers correspond au fichier spcial de priphrique /dev/psaux pour des raisons historiques. La rponse recommande est 'N'. L'option Gameport support active la gestion des ports pour Joystick classiques. Cette option vous donnera accs aux diffrents gestionnaires de priphriques pour ce type de port. La rponse recommande est 'N'. A.9.19. Menu Character devices L'option Virtual terminal permet d'activer la gestion des terminaux virtuels multiples utiliss pour grer plusieurs terminaux avec le clavier et l'cran local. Ces terminaux sont gnralement accessibles avec les raccourcis CTRL+Alt+Fn. Ils sont trs souvent utiliss, et il est vivement recommand de rpondre 'Y' cette option. Si vous le faites, vous pourrez accder l'option Support for console on virtual terminal , qui permet d'autoriser l'mission des messages de la console du noyau sur les terminaux virtuels. Encore une fois, cette fonctionnalit est trs souvent utilise, et il est recommand de rpondre 'Y'. L'option Support for binding and unbinding console drivers permet d'activer le support de la slection de la console utilise pour les terminaux virtuels, lorsque plusieurs consoles sont disponibles sur la machine. La rponse recommande est 'N'. L'option Non-standard serial port support permet d'activer les options correspondantes des ports srie non standards. Les sous-options de cette option permettent de configurer les gestionnaires de priphriques correspondants. La rponse recommande est 'N'. Les gestionnaires de priphriques pour les ports srie standards sont accessibles via le sous-menu Serial drivers , dcrit plus bas. L'option Unix98 PTY support permet d'activer les pseudo-terminaux compatibles Unix 98. Les pseudo-terminaux sont des composants logiciels permettant d'muler 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 l'intermdiaire des fichiers spciaux /dev/ptyxx. Les composants esclaves doivent ouvrir le fichier spcial /dev/ptmx afin d'obtenir un numro n de pseudo- terminal utiliser, puis ils ouvrent le fichier /dev/pts/n. Ce dernier fichier spcial est cr la vole par le noyau, grce un systme de fichiers virtuel. Pour que ce mcanisme fonctionne, il faut donc que le systme de fichiers /dev/pts/ ait t galement activ dans les options de configuration des systmes de fichiers, et qu'il soit mont (voir la configuration du fichier /etc/fstab). La rponse recommande est 'Y'. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 517
L'option Legacy (BSD) PTY support permet d'activer la gestion des pseudo-terminaux classique tels qu'ils sont utiliss sur les systmes BSD. Ces pseudo-terminaux sont simplement accds via des fichiers spciaux de priphriques /dev/ttyxx, raison d'un fichier par pseudo-terminal. Cette technique est obsolte depuis l'introduction des terminaux Unix98, que l'on peut activer avec l'option prcdente. Toutefois, certains programmes peuvent ne pas avoir ports et ne pouvoir accder que via cette ancienne interface. Dans ce cas, cette option devra tre active. Si vous rpondez 'Y' cette option, vous accderez l'option Maximum number of legacy PTY in use , qui vous permettra de choisir le nombre de pseudo-terminaux que le systme grera. La valeur par dfaut est 256. La rponse recommande cette option est 'N'. L'option Parallel printer support permet d'activer la gestion des imprimantes connectes sur port parallle. Le fait d'activer cette option n'empche pas d'utiliser le port parallle pour d'autres priphriques. Il est recommand d'activer cette option sous forme de module parce qu'ainsi, les fonctionnalits d'impression ne seront charges que lorsque cela sera ncessaire. La rponse recommande est donc 'M'. L'option 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 fil de l'eau. La rponse recommande est 'N'. L'option Support for user-space parallel port device drivers active la gestion du fichier spcial de priphrique /dev/parport, au travers duquel les programmes peuvent accder de manire uniforme au port parallle. Cette fonctionnalit n'est pas ncessaire pour utiliser une imprimante ou des priphriques ATAPI connects sur port parallle, aussi la rponse recommande est-elle 'N'. L'option Texas Instruments parallel link cable support permet de prendre en charge les connexions aux calculatrices Texas Instruments l'aide d'un cble parallle. La rponse recommande est 'N'. L'option Xen Hypervisor Console support permet de grer la console virtuelle dans les machines virtuelles Xen. La rponse recommande est 'N'. L'option Hardware Random Number Generator Core support permet de prendre en charge les gnrateurs de nombres alatoires matriels fournis sur les cartes mres rcentes. Ces gnrateurs permettent d'obtenir des nombres alatoires utiliss dans les algorithmes de chiffrement et de scurit. Cette option vous donnera accs aux pilotes de priphriques pour les diffrents gnrateurs de nombres alatoires supports par Linux. La rponse recommande est 'Y'. L'option /dev/nvram support permet d'activer l'accs la mmoire non volatile de l'horloge temps rel. Cette mmoire peut tre accde par l'intermdiaire du fichier spcial de priphrique /dev/nvram, de code majeur 10 et de code mineur 144. La rponse recommande est 'Y'. L'option Enhanced Real Time Clock Support permet d'activer l'accs aux compteurs de l'horloge temps rel par l'intermdiaire du fichier spcial de priphrique /dev/rtc, de code majeur 10 et de code mineur 135. Cette option doit tre active si vous disposez d'une machine multiprocesseur. La rponse recommande est 'Y'. L'option Generic /dev/rtc emulation permet de simuler l'interface /dev/rtc l'horloge temps rel du systme pour le cas o vous ne voudriez pas activer l'option prcdente. L'option suivante permet de complter l'mulation avec la prise en charge d'une opration complmentaire, qui peut tre ncessaire pour certains programmes. La rponse recommande est 'N'. L'option Extended RTC operation permet de simuler une horloge temps rel plus volue que celle simule par dfaut grce l'option prcdente. Certaines programmes peuvent avoir besoin des fonctionnalits avances fournies par ces horloges. La rponse recommande est 'N'. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 518
L'option Double Talk PC internal speech card support permet d'activer la gestion du synthtiseur de voix Double Talk. La rponse recommande est 'N'. L'option 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'. L'option Applicom intelligent fieldbus card support active la gestion des cartes Applicom intelligent fieldbus . La rponse recommande est 'N'. L'option Sony Vaio Programmable I/O Control Device support permet d'activer la gestion des contrleurs d'entre / sortie programmables des portables Sony Vaio. La rponse recommande est 'N'. L'option /dev/agpgart support (AGP support) active la gestion des transferts de donnes acclrs par le bus AGP pour les pilotes de cartes graphiques. Ces transferts peuvent tre pilots au travers du fichier spcial de priphrique /dev/agpgart, de code majeur 10 et de code mineur 175. Cette fonctionnalit n'est pas ncessaire pour le bon fonctionnement des cartes graphiques AGP, mais elle permet d'accrotre les performances des pilotes 3D. Elle est galement indispensable pour permettre l'accs au registre MTRR du processeur permettant de contrler le bus AGP. La rponse recommande est 'Y' si vous disposez d'une carte graphique AGP, et 'N' sinon. Les options qui suivent permettent de slectionner le type de chipset utilis par la carte mre, afin de dterminer la manire dont le port AGP fonctionne. Si vous avez activ cette fonctionnalit, vous devez choisir l'option correspondant votre chipset galement. L'option Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) permet d'activer le support de l'architecture DRI (abrviation de l'anglais Direct Rendering Infrastructure ) de XFree86 ou de X.org. La version fournie avec le noyau 2.6 ncessite l'utilisation de XFree86 en version 4.1 ou plus, ou de X.org en version 6.7 ou plus. Vous devrez slectionner le type de carte graphique install sur le systme l'aide des options suivantes. La rponse recommande est donc gnralement 'N', sauf si vous disposez d'une des cartes graphiques listes. Dans ce cas, vous devriez certainement utiliser XFree86 4.4.0 ou X.org 6.7, afin de bnficier des gestionnaires de priphriques les plus rcents. Notez enfin que certaines cartes graphiques 3D, bien que parfaitement supportes sous Linux, n'utilisent pas les fonctionnalits DRI du noyau. C'est en particulier le cas pour toutes les cartes graphiques base de puce NVidia, pour lesquelles il faut utiliser le module fourni avec le pilote de NVidia. Vous pouvez donc rpondre 'N' cette question si vous disposez d'une telle carte graphique. L'option ACP Modem (Mwave) support permet d'activer la prise en charge des Winmodems ACP (galement connu sous le nom Mwave). De tels modems sont intgrs en particulier dans les Thinkpad 600E, 600 et 770 d'IBM. La rponse recommande est 'N'. L'option NatSemi PC8736x GPIO Support permet d'autoriser l'accs depuis l'espace utilisateur aux ports d'entre/sortie programmables des puces PC-8736x de National Semiconductor. La rponse recommande est 'N'. L'option NatSemi PC8736x GPIO Support permet d'inclure un module facilitant l'accs aux ports d'entre/sortie des puces PC8736X depuis l'espace utilisateur. La rponse recommande est 'N'. L'option AMD CS5535/CS5536 GPIO (Geode Companion Device) permet d'autoriser l'accs depuis l'espace utilisateur aux ports d'entre/sortie programmables des puces CS5535 et CS5536 Geode d'AMD. La rponse recommande est 'N'. L'option RAW driver (/dev/raw/rawN) (OBSOLETE) permet d'accder directement, sans copie de donnes lors des oprations d'entre/sortie, aux priphriques de type bloc. Cet accs se fait via des fichiers de priphriques spciaux /dev/raw/ dont les numros de priphriques majeur et de mineurs DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 519
sont identiques ceux du fichier spcial de priphrique de type bloc ainsi manipul. Cette option permet donc de raliser des entres / sorties de manire extrmement performantes. Comme cette fonctionnalit n'est utilisable que par des applications particulires (en gnral des grosses bases de donnes), la rponse recommande est 'N'. De plus, cette option est obsolte, car il est prsent possible d'accder aux priphriques de manire directe avec les interfaces de programmation standards du systme. L'option Maximum number of RAW devices to support (1-8192) permet d'indiquer le nombre maximum de priphriques bruts pris en charge par le noyau. La rponse recommande est '256'. L'option HPET - High Precision Event Timer permet d'activer la gestion des timers haute prcision de Linux. Ces timers seront accessibles via le fichier spcial de priphrique /dev/hpet. Cette option vous donnera galement accs aux options HPET Control RTC IRQ et Allow mmap of HPET , qui permettent respectivement de dsactiver la gestion de l'interruption du timer systme par le timer et de dsactiver la projection en mmoire de ce fichier. Cette dernire option doit tre dsactive pour certains types de matriel, car ceux-ci exposent trop d'informations l'utilisateur via cette interface. La rponse recommande est 'N'. L'option Hangcheck timer permet d'activer un chien de garde permettant de dterminer si le systme est bloqu depuis un temps trop long et, si tel est le cas, de le redmarrer ou afficher un message de trace. La rponse recommande est 'N'. L'option Telecom clock driver for MPBL0010 ATCA SBC permet d'activer une interface spcifique aux ordinateurs MPBL0010 ATCA permettant d'accder la configuration d'une horloge pour les tlcommunications. La rponse recommande est 'N'. A.9.19.1. Sous-menu Serial drivers L'option 8250/16550 and compatible serial support du sous-menu Serial drivers permet d'activer la prise en charge des ports srie standards. Vous pouvez vous en passer si vous n'avez 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. L'option Console on 8250/16550 and compatible serial port permet d'activer la redirection de la console systme sur un port srie. En gnral, la console est redirige vers le terminal principal, aussi la rponse recommande cette question est-elle 'N'. L'option 8250/16550 PCI device support (NEW) permet de prendre en charge les ports srie connects aux bus PCI. La rponse recommande est 'Y'. L'option 8250/16550 PNP device support (NEW) permet de prendre en charge les ports srie Plug and Play des PC standards. La rponse recommande est 'Y'. L'option 8250/16550 PCMCIA device support permet de prendre en charge les ports srie connects via un adaptateur PCMCIA. La rponse recommande est 'N'. L'option Maximum number of non-legacy 8250/16550 serial ports permet d'indiquer le nombre maximum de ports srie additionnels que Linux doit prendre en charge. La rponse recommande est '4'. L'option Number of 8250/16550 serial ports to register at runtime permet d'indiquer le nombre de ports sries qui seront activs dans le noyau au dmarrage. La rponse recommande est '4'. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 520
L'option Extended 8250/16550 serial driver options permet d'activer les options de configuration tendues pour les ports srie classiques. La rponse recommande est 'N'. L'option Support more than 4 legacy serial ports permet d'indiquer que l'ordinateur dispose de plus de quatre ports srie livrs en standard. La rponse recommande est 'N'. L'option Support for sharing serial interrupts permet d'activer la gestion des interruptions de plusieurs ports srie d'une mme carte par un seul canal d'interruption. Il faut que la carte srie gre le partage des interruptions pour pouvoir utiliser cette option. La rponse recommande est 'N'. L'option Autodetect IRQ on standard ports (unsafe) permet de demander au noyau de tenter une dtection automatique de la ligne d'interruption utilise par les ports srie. Cette fonctionnalit n'est pas trs sre et la rponse recommande est 'N'. L'option Support RSA serial ports n'est pas documente et ne sera pas dcrite ici. L'option Support 8250-type ports on MCA buses permet de prendre en charge les ports srie sur les bus MCA. La rponse recommande est 'N'. L'option Digi International NEO PCI Support permet de prendre en charge les cartes multiport de la srie NEO de Digi International. La rponse recommande est 'N'. A.9.19.2. Sous-menu IPMI L'option IPMI top-level message handler permet de prendre en charge la surveillance des capteurs du systme (temprature, voltage, etc.). Les options qui suivent permettent de configurer les fonctionnalits de ce driver. La rponse recommande est 'N'. A.9.19.3. Sous-menu Watchdog cards L'option Watchdog Timer Support permet d'activer la dtection des blocages systmes grce un chien de garde. Le chien de garde exige un accs en criture sur le fichier spcial de priphrique /dev/watchdog, de code majeur 10 et de code mineur 130, au moins une fois par minute. Si cette condition n'est pas vrifie, 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'. L'option Disable watchdog shutdown on close permet de maintenir l'activit du chien de garde mme si le processus qui le rveille rgulirement ferme le fichier /dev/watchdog. Ce n'est pas le cas si la rponse 'N' est donne, dans ce cas, le chien de garde ne fonctionnera plus en cas d'arrt du processus de surveillance. La rponse recommande est 'N'. L'option Software Watchdog permet d'activer la gestion du chien de garde logiciel. La rponse recommande est 'N'. Les options qui suivent permettent de slectionner les gestionnaires de chien de garde pour les diffrents types de cartes mres disposant d'un chien de garde matriel. Vous devez activer l'option correspondant votre matriel si vous dsirez utiliser cette fonctionnalit. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 521
A.9.19.4. Sous-menu PCMCIA character device support Les options de ce menu permettent d'activer la gestion des cartes PCMCIA de type srie, comme les modems, les ports srie et les cartes rseau intgrant un modem. La rponse recommande ces options est 'N'. A.9.19.5. Sous-menu TPM Hardware support Les options de ce menu permettent d'activer la gestion des puces cryptographiques compatibles avec les spcifications TCG (ex TCPA). Ces puces ont pour but d'authentifier le matriel et de permettre la fourniture d'un environnement logiciel authentifi et reconnu par les diteurs de contenu afin de garantir que les donnes protges par des droits d'auteurs stricts ne pourront pas tre lues en dehors du cadre impos par l'diteur. Cette technique suppose que les logiciels et les systmes soient ferms, et ne peut donc pas utiliss sous Linux sans violer la licence GPL. De ce fait, l'accs ces puces est inutile, et ces puces ne seront gnralement pas utilises pour les tches pour lesquelles elles ont t introduites. La rponse recommande ces options est donc 'N'. A.9.20. Sous-menu I2C support L'option I2C support permet d'activer 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 d'acquisition TV bases sur les puces lectroniques Bt848 ncessitent cette fonctionnalit pour tre utilisables. Les capteurs matriels permettant de dterminer l'tat du systme utilisent galement cette interface. La rponse recommande est 'N'. L'option I2C device interface active la gestion des fichiers spciaux de priphriques /dev/i2c-*. La rponse recommande est 'N'. L'option I2C bit-banging interfaces active la gestion des adaptateurs bit-banging . Cette option est ncessaire pour faire fonctionner les cartes d'acquisition TV bases sur les puces lectroniques Bt848. La rponse recommande est 'N', sauf si vous disposez d'une telle carte. Les options suivantes activent la gestion des priphriques utilisant cette interface. Il n'est pas ncessaire de les activer pour faire fonctionner les cartes d'acquisition TV base de Bt848. La rponse recommande pour ces options est 'N'. L'option I2C PCF 8584 interfaces active la gestion des adaptateurs PCF. Les options suivantes permettent d'activer les priphriques utilisant cette interface. Les rponses recommandes ces questions sont 'N'. L'option I2C PCA 9564 interfaces active la gestion des adaptateurs PCA. Les options suivantes permettent d'activer les priphriques utilisant cette interface. Les rponses recommandes ces questions sont 'N'. Les sous-menus I2C Hardware Bus support et Miscellaneous I2C Chip support permettent de prendre en charge les divers capteurs I2C prsents sur les systmes modernes. Vous devez activer les options correspondantes votre matriel si vous dsirez utiliser cette fonctionnalit. Les options I2C Core debugging messages , I2C Algorithm debugging messages , I2C Bus debugging messages et I2C Chip debugging messages permettent d'activer la gnration de messages de traces complmentaires relatives aux fonctionnalits I2C. La rponse recommande pour ces questions est 'N'. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 522
A.9.21. Sous-menu SPI support L'option SPI support active la prise du protocole de communication synchrone SPI, couramment utilis pour accder des capteurs et des mmoires programmable et flash. Les options fournies permettent d'activer les diffrents types de puces ainsi accessibles. La rponse recommande est 'N'. A.9.22. Sous-menu Dallas's 1-wire bus L'option Dallas's 1-wire support active la prise en charge de priphriques une broche relativement lents tels que des capteurs de tempratures. Les options fournies permettent d'activer les diffrents types de priphriques. La rponse recommande est 'N'. A.9.23. Sous-menu Power supply class support L'option Power supply class support active la prise en charge de la surveillance des sources d'nergie (batteries, alimentation, ports USB, etc.). Notez que ce pilote n'est gnralement pas ncessaire pour obtenir les informations sur les batteries des ordinateurs portables, pour lesquelles l'ACPI est utilis. Il s'agit ici de prendre en charge les batteries des priphriques spcifiques tels que les PDA par exemple. Si vous activez cette option, vous pourrez accder aux options des pilotes de priphriques grant les diffrentes sources d'nergie. La rponse recommande est 'N'. L'option Power supply debug (NEW) permet d'activer les traces de dboguage du sous-systme de gestion des sources d'nergie. La rponse recommande est 'N'. A.9.24. Sous-menu Hardware Monitoring support L'option Hardware Monitoring support active la prise en charge de la surveillance du bon fonctionnement du matriel de l'ordinateur. La plupart des ordinateurs disposent prsent de capteurs pour mesurer la temprature, les tensions, la vitesse des ventilateurs, etc. Cette option vous donnera la liste des pilotes pour les diffrentes cartes mres. Notez que l'accs ces pilotes ncessite galement que l'option I2C support soit active. La rponse recommande est 'N'. L'option Hardware Monitoring Chip debugging messages permet d'activer les traces de dboguage du sous-systme I2C pour les pilotes de surveillance du matriel. La rponse recommande est 'N'. A.9.25. Sous-menu Multifunction device drivers Ce menu donne accs aux options permettant d'activer la prise en charge de diffrents priphriques multifonctions. Ces priphriques fournissent des fonctionnalits diverses telles qu'un adaptateur USB pour priphrique USB, des ports srie asynchrones, des fonctionnalits audio ou vido. La rponse recommande est 'N'. A.9.26. Menu Multimedia devices L'option Video For Linux permet d'activer les options de gestion de la vido et de radio sous Linux. Il faut activer cette option pour accder aux sous-menus suivants, qui permettent de choisir les pilotes adapts au type de matriel vido install et les options de configuration pour certains de ces pilotes. La rponse recommande est 'N'. Si vous activez cette option, vous aurez la possibilit d'activer l'interface de programmation Video For Linux version 1 avec l'option Enable Video For Linux API 1 (DEPRECATED) ou, dfaut, une couche de compatibilit pour les pilotes de priphriques qui l'utilisent encore, via l'option Enable Video For Linux API 1 compatible Layer . Comme de nombreux priphriques utilisent encore cette version de l'interface Video For Linux, la rponse recommande est 'Y'. DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 523
L'option DVB For Linux permet d'activer les options des gestionnaires de priphriques des adaptateurs TNT sous Linux. Vous devez activer le pilote correspondant votre matriel. La rponse recommande ces questions est 'N'. L'option DAB driver permet de prendre en charge les rcepteurs audio digitaux. La rponse recommande est 'N'. A.9.26.1. Sous-menu Video Capture Adapters Les options de ce menu permettent de choisir les pilotes pour les diffrents types de cartes d'acquisition vido. Vous devez activer la fonctionnalit correspondant au matriel dont vous disposez. En gnral, il est recommand d'utiliser les pilotes sous forme de modules, car certains d'entre eux ne sont pas capables de faire la distinction entre les diffrents modles de cartes qui utilisent la mme lectronique, et il faut leur communiquer ces informations sous la forme de paramtres lors de leur chargement. C'est en particulier le cas pour les cartes vido bases sur la puce lectronique Bt848 et les puces qui en sont drives. A.9.26.2. Sous-menu Radio Adapters Les options proposes par ce menu vous permettront d'activer les pilotes pour les diffrentes cartes radio supportes par Linux. Vous devez activer le pilote correspondant votre matriel, et ventuellement spcifier les paramtres matriels de cette carte. La rponse recommande ces questions est 'N'. A.9.27. Menu Graphics support L'option Lowlevel video output switch controls permet de prendre en charge le pilote bas niveau de gestion des sorties vido. La rponse recommande est 'N'. L'option Support for frame buffer devices permet d'activer le support des cartes graphiques par l'intermdiaire d'une interface unifie et d'une zone mmoire nomme frame buffer , accessible via les fichiers spciaux /dev/fb*. Cette interface permet aux programmes d'accder aux fonctionnalits des cartes graphiques de manire portable. Le support de cette fonctionnalit n'est en gnral pas ncessaire pour les PCs, puisque beaucoup de serveurs X ont t dvelopps pour cette plate-forme et que, dans le pire des cas, un serveur X bas sur le standard VESA 2.0 est disponible. Cependant, pour les autres plates-formes, ou si vous disposez d'une carte graphique exotique, il peut tre utile d'activer cette fonctionnalit et d'utiliser un serveur X bas sur cette interface. Les options qui suivent permettent d'inclure les pilotes pour diffrentes cartes graphiques. Vous trouverez de plus amples informations sur ces options dans la huitime partie de ce document. La rponse recommande est 'N'. L'option Enable firmware EDID permet d'accder l'identifiant de priphrique EDID remont par le firmware pour l'cran. Dans le cas des PC, cet identifiant est remont par le BIOS. Cette option peut tre utile si un pilote framebuffer ne parvient pas obtenir cet identifiant en interrogeant l'cran. Cette option n'est pas ncessaire pour l'utilisation de l'environnement graphique X11, donc la rponse recommande est 'N'. Le sous-menu Console display driver support permet de choisir les gestionnaires de priphriques pour la console de Linux, c'est--dire l'affichage en mode texte. Sur les PCs, le gestionnaire le plus efficace et le plus performant est celui utilis pour grer les cartes VGA, aussi est-il systmatiquement slectionn. Il donne accs l'option Enable Scrollback Buffer in System RAM , qui permet de mmoriser les pages texte en mmoire vive et non dans la mmoire de la carte graphique, et donc d'avoir une mmoire plus importante pour faire un dfilement arrire en mode console. L'option Video mode selection support , quant elle permet de choisir le mode texte utiliser au dmarrage DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 524
de Linux. Ce mode peut tre indiqu grce un paramtre pass au noyau lors du dmarrage. La rponse recommande pour ces deux options est 'Y'. Il existe galement un gestionnaire pour les cartes graphiques MDA (ce sont des cartes extrmement vieilles), qui peut tre activ l'aide de l'option MDA text console (dual-headed) (EXPERIMENTAL) . Ce gestionnaire permet galement de disposer d'un second affichage en mode texte, si l'on installe la carte MDA en parallle de la carte VGA du PC. Cette option ne doit tre choisie que si la carte MDA n'est pas la carte d'affichage principale. La rponse recommande est 'N'. Le sous-menu Backlight & LCD device support permet de configurer les pilotes de contrle de la lumire de rtroclairage des crans LCD de certaines machines, telles que les PDA. Les sous- options de ce menu permettent de slectionner les fonctionnalits prise en charge par ces pilotes. La rponse recommande est 'N'. Le sous-menu Display device support permet de configurer les pilotes de contrle de la puissance des priphriques d'affichage de certaines plateformes. La rponse recommande est 'N'. Le sous-menu Console display driver support permet galement d'utiliser le gestionnaire de priphrique du frame buffer pour la console, si l'option Support for frame buffer devices a t active. Pour cela, il suffit d'activer l'option Framebuffer Console support . Cette option donnera la possibilit d'inclure une police de caractres graphique pour la console, l'aide de l'option Select compiled-in fonts . Encore une fois, ces options ne sont pas ncessaires pour grer correctement la console sur les ordinateurs de type PC. Le sous-menu Bootup logo permet d'utiliser un logo reprsentant Tux au dmarrage, si la fonctionnalit de frame buffer a t active. Pour cela, il faut activer l'option Bootup logo et choisir un des logos proposs parmi les options suivantes. Cette fonctionnalit tant absolument indispensable pour la bonne marche de votre systme et la scurit de vos donnes, vous devez imprativement l'activer et admirer le magnifique Tux ! A.9.28. Menu Sound L'option Sound card support permet d'activer la gestion des cartes son. Si vous ne disposez pas de carte son, choisissez la rponse 'N', sinon, activez cette fonctionnalit. Elle vous permettra de choisir parmi les deux jeux de drivers pour les cartes son dont dispose Linux actuellement. Les pilotes les plus performants sont sans aucun doute les drivers ALSA ( Advanced Linux Sound Architecture , mais vous aurez peut-tre utiliser les drivers OSS ( Open Sound System ) pour certaines cartes son. Les drivers ALSA seront choisis de prfrence en activant l'option Advanced Linux Sound Architecture . Cependant, l'interface de programmation des drivers OSS tant trs utilise, on veillera activer les options de compatibilit OSS Mixer API , OSS PCM (digital audio) API , et OSS Sequencer API . L'option Sequencer support permet de prendre en charge le squenceur ALSA pour la gestion des fichiers MIDI. Elle vous permettra d'accder l'option Sequencer dummy client , qui permet de grer un simple client transfrant les vnements MIDI d'une entre vers une sortie. La rponse recommande est 'Y' pour ces deux questions. L'option RTC Timer support permet de faire en sorte que les gestionnaires de carte son ALSA utilise l'horloge matrielle de l'ordinateur pour les oprations de squencement demandant une grande prcision. Il est recommand d'activer cette fonctionnalit, ainsi que sa sous-option Use RTC as default sequencer timer . DOCUMENT SUR LINUX
CREE PAR DOLLARSOFT Page 525
L'option Dynamic device file minor numbers permet de faire en sorte que les numros de priphriques mineurs des fichiers de priphriques des cartes son sont allous dynamiquement. Cela permet d'avoir plus de huit cartes son connectes, mais requiert l'utilisation du gestionnaire de priphriques en mode utilisateur udev. La rponse recommande est 'N'. L'option Support old ALSA API permet de prendre en charge l'ancienne interface de programmation d'ALSA (interface utilise jusqu' la version 0.9.0 rc3 comprise). Cette interface peut encore tre utilise par certains programmes, aussi la rponse recommande est-elle 'Y'. L'option Verbose procfs contents permet de peupler le systme de fichiers virtuel /proc/ avec des entres complmentaires permettant d'obtenir des informations sur les priphriques audio. Ces entres ne sont essentiellement utiles que pour les dveloppeurs du noyau, aussi la rponse recommande est- elle 'N'. L'option Verbose printk et les options de dbogage introduites par l'option Debug permettent de faciliter le diagnostic et le dbogage des gestionnaires ALSA. Il n'est pas ncessaire de les activer en temps normal, aussi la rponse recommande est-elle 'N'. L'option Debug permet d'inclure du code de dboguage dans le sous-systme ALSA. Elle vous donnera accs des sous-options permettant de spcifier la porte des tests effectus par ce code. Ce code n'est rellement utile que pour les dveloppeurs du noyau, pour dboguer les pilotes de priphrique ALSA. La rponse recommande est 'N'. Les options qui suivent permettent de slectionner les gestionnaires de priphriques pour le matriel install. Ces gestionnaires sont classs par type d'interface (priphriques virtuels ou logiciels, cartes ISA ou PCI, appareils connects par un port USB ou PCMCIA) dans les sous-menus correspondants. Vous devez bien entendu activer la prise en charge des gestionnaires de priphriques pour le matriel disponible dans votre ordinateur. Notez que les priphriques proposs dpendent de la prise en charge des bus correspondants. En particulier, les priphriques audio USB ne seront accessibles que si vous activer le support de l'USB dans le menu USB support ainsi que le support des priphriques audio USB (option USB Audio/MIDI driver ). L'option Open Sound System (DEPRECATED) permet d'activer la prise en charge des anciens pilotes OSS. Elle donne accs deux jeux de pilotes, dont les pilotes OSS eux-mmes. Les diffrentes options proposes permettent de slectionner les gestionnaires de priphriques pour les diffrents matriels supports. Notez que le gestionnaire de priphriques pour le mixer intgr des cartes d'acquisition TV bases sur la puce Bt848 se situe parmi les pilotes OSS (option TV card (bt848) mixer support ). Vous devez donc l'intgrer sous forme de module si vous disposez d'une telle carte. Il n'est pas ncessaire si vous utilisez les pilotes ALSA. A.9.29. Menu HID Devices L'option Generic HID support permet de prendre en charge les fonctionnalits gnriques de l'interface homme/machine du noyau, qui sont utilises par les gestionnaires de priphriques d'entre/sortie USB ou Bluetooth. La rponse recommande est 'Y'. L'option USB Human Interface Devices (full HID) support permet d'activer la prise en charge des priphriques d'entre et de saisie tels que les claviers, souris et tablettes de digitalisation. Ce pilote gre compltement les priphriques d'entre USB, et est incompatible avec les pilotes simplifis pour le clavier et la souris, que l'on peut activer avec les options USB HIDBP Keyboard (simple boot) support et USB HIDBP Mouse (simple boot) support du sous-menu USB HID Boot Protocol drivers . La rponse recommande est 'N'. DOCUMENT SUR LINUX ERROR:synaxerror OEEENINGCOMMAN:--nosringva1-- STACK: ( cv ~fpgmd2 , Ag1yf2=h headp 6hhea% $hmx~ I1ocadER _Imaxp\> ' prep'gdir U + R = U B } c c p V x Y O O T x Z I U ^ i q b 1 1 > r J i > c K a _ s d h M H \ x E V q n Z e x R =: | K B Z=R } r x % }2 U R s B R (_ Z _ p c x T _ r X f 1 u X h X u 6> q - u B ~ n!0 z h B 0> s ( p [ U $ R# /) ) U e R } Z 3 g 3 3 i > R I I[ p { { g B$q| 0 . w nhQZ. M R W \ b ' r @Yd_^|\[ZYXUTRMLKJIHGECBA@?>=<;:9876543210/.-,+*)(&%$#"!,CXE_C##NM/!#3/Y-,CX+KRX @8Y+!#3/Y-,CXN%!ME%%#Jad(RX!#%!YY-,CX!!%%I%%JadRX!!!%%IRXRX8!8!YRX8!8!YYYY-,CX+KRX 8Y+!#3/Y-,NC 8 <(+%<-,/M-,CX+ 8+!#3/Y-,CXEd_#EdiCd##/!!RX3!!YY-,KQXC#CeY-, KQX C#CY-, #p>#pE:-,+%E%E_@%#!!!-,+%E%E_%#!!!-,+!!!-,+!!!-,KQXCCeY-,i@a,b+d#da\XaY-, %EhTKRZX%E%Eh%#%#%Eh#%Eh%#Y-,%Eh#%Edhe%#-,CX!CXE+#zEi#QX+#z!zYYY-,E#Eh-,E_B-,/-,CX%%Id#Edi@ab_%%aC#!!!!!!Y-,CX%E%Ed_%E_a%E_e%#%#!!E_E_Y-,EUCZXEh#Ei@ab_#a%e%#%#!!!!+Y-,Ed#EdadB-,%%+CX%%%+%C@T%CTZX%E@aY%CT%C@TZX%E@YY!!!!-,%%.#%%+!!-,-,KRXE!!Y-,CX=Y-,KRXE!!Y-,KRX/!!!Y-,KS#KQZX%Eh%Eh%TX!!!%Eh%#!!Y!!!Y-,CX=Y-,C\XE#EE#Eab##pERXaEYh:!!!!!Y-,E%ERKQ[X%Eha%%?#!8!Y-,E%ERX%Eha%%?#!8!Y-, KQX CCY-,-,CX!ERX88YY-,UXc%Ed%EdaSX@aY%EiSXE!!Y!%E%Ead(QXE!!YY-,!!d#d@ b-,!QXd#d b @/+Y-,!QXd#dUb /+Y-,d#d@ b#!-,KSX%%Id#Edi@ab_%%a#!!!#9/Y-,%%IdTX88!!Y-,CXY-,CXY-,+#<+-,%8(+##+CX<Y-,H+-,%#<-,%I8-,KS#KQZXE!!Y-,KSX%%Id%%Idh@ab_%%a#!%#%%#9/Y!!-,CX%E#Eda!%%JY###-,CXEQXEhUX!!!!YEhUXKRXE!Y!!!YY!Y-,%Eha%%?#!8-,E#EE#Eab##pERXaYh:-,@*!-,5-,CTXKS#KQZX8!!Y!!!!Y-,I#-,CTXKS#KQZXE!!Y!!!!Y-,CX!0@Y-,KS#KQZXE!!Y-,KTXE!!Y-,KS#KQZX8!!Y-,KTX8!!Y-,CTXE+!!!!Y-,CTXG+!!!Y-,CTXH+!!!!Y-,CTXI+!!!Y-,KRX}zY-,B#Q@SZXTXCBY$QX @TXCB$TXCB KKRXCBY@ TXCBY@ cTXCBY@ cTXCBY@ cTX@CBYYYYY-,Eh#KQX#Ed@RX|YhY-,%%#> #>#eB#B#? #?#eB#B-, b#b-,%X Y%%%TX!Y!%\%ZX+Y%J%G%G%Gca%UX%%IcY%X Y%%I%\%ZX+Y%Eca%UXc!Ya#UXc!YY+%\XiY%H#:&X Y&X%/Y#2!!-,%%%%JSX%%%%Y%%%c#%c@ cSX!&&@ ceQX&e&e&&%%.%%.%%YYUX%%%%%%&TX!Y%%%%I#%%%%YQ R#xa%%%%%Iab%%%#8%%%%%%%%%%I%T#y!!!!!!!!!!!!-,#TX@ @ YTX@ @ Y[+-,TX@ @ Y[+-,TX@ @ Y[+-,&&&&[+-,Ei- X,_< = %44K9 Z4 r ywK xyK y w~ yy yK yur u: wy: w y pB/ Z_ M ^wwwwwK xQ 2yyyyyyyyy w w w w~ yy3y@5yyy yK yK yK yQ yr ur ur ur u: w: w: w: w: w: w: w: w: e: en w y y y p p p p pBBB/ Z/ Z/ Z/ Z/ Z/ Z/ Z/ Z/ Z/ Z_ _ _ _ M ^M ^M ^r uQ 2y Ra 0ip ih1 O?_ @9 S! 2 ?, ? Sw S? is I hO Sp ^%' I2 Q R R R R R R R R R RRRiiiii1 ip ihhhhhhhhh????_ @_ 49 #9 S999 9 99 S9 SZ S!2 ?? S, ??, 9x ?w Sw Sw Sw SG? i? i? i? i? i? i? i? i? [? [iO SO SO Sp ^p ^p ^p ^p ^O< O%%5' I' I' I' I' I' I' I' I' I' I2 2 2 2 Q Q Qh S> ia 1|q hi _hhM i ha h; v h h e di3 hi_ h ^9 9GG R||||||||||iiiii _ hhhhhhhhhM iM iM iM i hha 5a ha aa 4a )a a ha hh; v h h h h Bn h d d d diiiiiiiiy i_ h_ h_ h ^ ^ ^ ^ ^9 99 99 9GGGGGGGGGG RRR d hLE 8 |N || KAI A N @ @NS N, |R GE \NV.K G/ $ MO= OOOB O OOO OOOOOYYG ?G G G r I 0G G G G GGG &G G G GG G AG A GG G G G < G E y I m 1 1I I I a \a Ka K i G i GiGiG ./1 d1 d1 d1 ddddd>ZZZZZZB ++ + +_+_+' N" m" mX QyJ y 3yM ^~ y: wyyur ur: we yyb 0BH C 2o ? @ : hq {3 f_3 iX {^ E 7 H^ = d? iB ds iT h h Edh_XE E $E? iT T T d|q h h1 hR hia hv hE e dai h3 h -9 93V [(?|h ha ha 4i33?G ~GIE* yyE y= %yb %X qyy3 y1 $u~ y: we yywB %; h {/_ y_ yB y yo^ yE yy Bw pyyy@ y3 y{ %u yB %V { B: wJ RT / __w %h R _ _R _y %b h _? i_s Ii9{ h_? )h _h _9__ R# _? _V _N 3 hp ^hh9 S9 ! _R _%b __ 4_ 9: iq ; i|U hq hh$h 6|hhh$ e hi h3 hi9 9(Z \ _v * h h2 9L hI h |hh hS 9[ ^hha ha 4; hh$h^ 9( _6 9i GGn }?% n no &dZ |#6 ##n #p6 pn i: C6 ?: Cn a|O6 &=n 3V n1 xO un6 { + 136 < W8 H6 n8 d6 {6 6 o6 6 <6 6 ~6 6 n6 gn ,) ?d H \Z xHn oY Zn n n n n Mn n n n on dB iB ~B cB sB :B B gB |B cB VB fB hB fV V 2B iB ~B cB sB :B B gB |B cB VB fB hB fV V 2B iB ~B cB sB :B B gB |B cB Vn O~~piin |n n |n n rn |n |n Bn |n |n |n |n qT% n\ Tg EA # 3o ?Z [ R ' \B iB ~B cB sB :B B gB |B cB V1 O|Q d|[ ||d||% || ||dW |d| b\ ,S![ f #d #" L|Q d|[ ||d||% || ||dW |d| b\ ,S![ f #d #" LLE 8 |N || KAI A N @ @NS N, |R GE \NV.K G/ $ M||6[ |" L|d| | ||U Zd|W |4 ,\ ,x Uf #8?\R 0 ! [ ^n $S A _> G!R $, |* vr Z| 8 | 6 H Z||6[ |" L|d| | ||U Zd|W |4 ,\ ,x Uf #8?\R 0 ! [ ^n $S A _> G!R $, |* vr Z| 8 | 6 H Zn h) ) 2M 'M 'aM 'M 'M '( R( q( $( :( -( 7( f( Y( ;( ) ) 2M 'M 'aM 'M 'M '( R( q( $( :( -( 7( f( Y( ;( , s o % ; ' e _ # Y I H 5 V ; ; ; ; _ _ # s T 9 O {w g_ Y I: w? i= o dK yv Mu Er " "= i! : w i An U r Z ZZ Z; 1q 11w< T- ZoTKp yB G u n: (yw9 y^ Go >UCy; r UK ; _ Z "V , +. 1L i9 y\ y ((| v 9iI \bVh s Q s R^ s R8 8 8 8 s ssa| sd| sd s s s Q Rds! s! iss fsssy my }Q Z; A |A M s sw6v R s sw6w Q zE b z zc zc z zs szsZ3ZH sZUUsssdds Qs Qs c c c. . sE b s sssss! s! ss1- w z Mn n @Z n M##n R R' uX 9 Z 9 4 6s s cc cc nnI nnn3 np {{ 6 } u nB ~ { { d K |N | RN | R( ( = = n _n | ' '5 5 > | |< m R R RYR 4R 6+ + B Ru z | 6 6 } / | mp p p p + +}_rO N N N % %zTz 'zTzTz %zTz %r4 5 n% +}_111H ? dn T o v o ooJ vo o2oo 11 yo yr o9 c; Q[, % _f K=_o| _V MQ =I XII= XX _Ko X 4OS w %4 S Q@ 9 99 999H9A 9 77i 9i 9< E_i)h u iR \ i i ifp \_ \C nv O i 2( uZ E 7B z .= _ .m ._ ._.. . . .. _. _.)S ( 7R 7e 7a (K Z# SZR ZZ Rsc " Sq #r #ZT (# Z #_ N dr [ .= _ .m ._ ._.. . . .. _. _.)S ( 7R 7e 7a (K Z# SZR ZZ Rsc " Sq #r #ZT (# Z #_ N dr [ @ 999 9q 99 77i 99q E2Z)mn i4 M d ZZ2 sWT \$ c KC n# Zu Z #' _ _s n i w cI ed # .Y ._ m .a (. _.. ..4 _.. _Y S (2E Sw _*_ Uz Z S$ Z U S< #Z ng SSRZx %o R_ ZU U. C Z= U Zu Z+ i% .Y ._ m .a (. _.. ..4 _.. _Y S (2E Sw _*_ Uz Z S$ Z U S< #Z ng SSRZx %o R_ ZU U. C Z= U Zu Z+ i%K99? 99_ N 9| 9_H# 99N 7799E 1 _ih i\i& ie i_ \ \' - niK 2[ u* !N 7 " K99i ? 9N 9| 9# 91 N 77N 99E\ 2Z mi _ i' dZ# Z s g\! Kn| # ZZ#_A8 f _n i? c e ## %n ZRw L d5 .%^ % r ' & K JE K# @ KN [ u %4 Z' N ) i . % m R KJp K: U #X 67 | h " c b[ K n "U + <0 9a >I }K Br- <( <p &# 5& d Go 25 5 2 s ,nR4 nr n2, 4+ +) 9J =R& nY 6z I *2T +=yG xyysc y? yy uw q1 BZb ; q E R( 0( i8 ihOK[ ?S& ?? Sh Si; J( hS^Z %[ IK Rw <| 9 d< dy Kb d \ ' ( * m < &X < &A dE2\ 553 < f sW 7: nE Rn b nX 8(? @ XZ nv 2 ( I 8 # v/ y: I IX s : y_ : yT(z | A O KKh w mh mm 9E< m < G mh h mH O < E Y '2 6 ' ' 'RV (q E EY K [ 7u KT TW T Y z C ({ A@nL @d @ nN @| @E @N A1 @@X n JX n @!* xY ) Kv @d ddC< @Y @Z @| @m @< @[ d r d_ @H+ }< vsp xq q[ @n @ @, n @ @ @A@@ n8 J n3 @U c !xx Z K@dA d| dC@ @@@@@ d d @|_ }vu sx$ n T oo- 2 o _o y ooJ 11r yoo y0; Q , E- B_ f_h vT& 5 d _? id! daRo d d i5 d nwr:fc[ ,r ):H} cnC H- oZn n n 1n in Qn n n 'n gn [y[1s | ' f (! I' N N uu 7 , 4+ ST TY @ @BM4 n <X5 m[ Q i m'''f f " r r { -1 | 2 G rn 0 %& ! p' gG' gx W W' UUi '' a ' x! : a) 6a )+! i \ G p 1 <2 Gf & IU> _ | h 0 ~ 0 O q _ |~= 77 @d 'L m B BBB; B B B B@@, BB B1 ) B7 X\\% W H { )2 ) - < )12 %2< !< B Bb B6 %T BQ J BB7 i @^ @ 9Br B , BB @1 1v )S } O ~< r) , OU i H 1& M6 z %vXV %} |~& !8 | 1' U } ' ' 'v v 2"q R , = y I { I HH 6199$ } }_ \a 1 & {'d ' "ii 4 o _ ! E v Kg @M ;@~" Y$ }I , $ y w I b { A HH U 9\g s ; )" e W , R 6s .$ 4 $1 E n $H pnp a &R$ '_ _ KR | KKK Kv KW e KK K K4 K4 KC BZ ZC 0ZBg % K s \ $ 9 9v B% 91 1.@!+~ !K~ KKB K4 v Ke K K KU4 K K4 ~ B RC 0S E R N 9' + = 1 W ,1!1R 1 43 = " q q q q 4%O O # 4# Z B 2 E 1}_i 2o 2z 22_K, K* n<<, <* E1 _ --1 -_ -AAAA? ---? -}}}\ }_55\ 51 _ --1 -_ -_ _ --1 -_ - 1 _ +--1 -_ - N N N N % - % #R ##$ ##' " "q "" "" i iE in ii iC iw i i@ io iE ii iC ir i i@ ii ini iE ii iE i 1 ii1 iZ i? s ! q m ? s ? q m ! o ! o ! p ! p ! p ! p } }}_ __W _W _ _ _C sW ; f ZZZs so so so so so so so so so so so s| s| sszH s| sszZZ Z ZssssX s sRR s sX sX sX s s s s sssss 4 4 4 4 < < < < sssssC xC xw mw }w }w m> K> }}} z z z s s s^ sd s sQQ sw6 sv Rsw w sw Qw Q s w w s w Qw Q z R z R z z z z z z z z R R z s s s s s sX s |^ sss s s R R. c , c m m << <<I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?w I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ? I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?I ?T ? +# # 2 Z2 Z? w | ^p | | @i m + Z 9 9dn n B 9d%! ! 7 7 4 7 7 ? Z Z . p ii1 iZ iL 7{ <L 7{ <m # m # X A sA s ss z z p ^ R R &_< +B-d ad >B-eA A - ' E----![---- - - -& & - N ) -mar'- /sfns