Vous êtes sur la page 1sur 415

M.

Elie Degny Raphael

COURS DE LINUX
. Introduction L'installation de Linux est une opration relativement complique, qui 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 problme, 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 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. En conclusion, il faut 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.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

M. Elie Degny Raphael

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.

L'objet de ce document est 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'informations 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. Ce document est structur en huit parties distinctes, qui correspondent essentiellement aux grandes tapes que vous suivrez pour installer Linux. La premire partie a pour but de 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 Unix. Elle ne traite pas de l'installation proprement parler, mais sa lecture est recommande pour tous ceux qui n'ont jamais vu un tel systme. La troisime partie dcrit l'installation du systme de base de Linux. l'issue de cette partie, vous devez disposer d'un systme fonctionnel, utilisable mais non optimis et ne permettant pas forcment d'utiliser tous vos priphriques. La quatrime partie constitue un petit cours d'Unix pour les nouveaux utilisateurs de ce type de systme. Bien que, comme les deux premires parties, elle ne traite pas de l'installation proprement parler, sa lecture est vivement recommande. En effet, vous aurez utiliser les commandes dcrites dans ce chapitre pour raliser la configuration de votre nouveau systme. La cinquime partie dcrit les oprations de configuration du systme de base. Cette partie est en relation troite avec la huitime partie, qui traite des fonctionnalits du noyau. Elle pourra tre relue avec bnfice lorsque vous aurez configur une premire fois votre noyau. La sixime partie traite de la configuration du rseau sous Linux. Le rseau est
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 2

M. Elie Degny Raphael

rellement l'un des aspects les plus importants de Linux, et ncessite donc une attention toute particulire. La septime partie donne les notions de base sur les mcanismes de compilation, qui seront utilises dans la huitime partie. Elle dcrit galement la manire de faire pour compiler la dernire version de GCC, le compilateur C/C++ de GNU. La huitime partie dcrit la compilation du noyau du systme, opration indispensable pour obtenir un systme qui colle la machine et aux fonctionnalits dsires. Enfin, la neuvime et dernire partie vous dcrit la procdure d'installation de XWindows, l'environnement graphique de Linux. L'installation des polices TrueType y est aussi prsente.

Chapitre 1. GNU, LINUX ET LES LOGICIELS LIBRES


Vous entendrez souvent parler de la licence GNU et de la Free Software Foundation dans le monde de Linux. Pour bien comprendre ce qu'est la Free Software Foundation et ce que signifie la licence GNU, il est ncessaire d'en faire une brve prsentation. 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 de facto gratuits, car ils sont librement redistribuables par quiconque en possde une copie. Afin de protger les logiciels libres, la Free Software Foundation a rdig la licence GNU (en fait, cette licence a originellement t rdige pour le projet GNU, qui sera dcrit plus loin). Cette licence stipule que le logiciel libre peut tre redistribu, utilis, 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. 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 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. Afin de garantir la libert de modification des logiciels libres, la licence GNU impose aux distributeurs de fournir leur code source, c'est--dire tous les fichiers utiliss pour crer le logiciel. Vous trouverez de plus amples informations sur la notion de code source dans le Chapitre 8. Si vous dsirez lire la licence GNU, vous pouvez en trouver une copie dans le fichier /usr/src/linux/COPYING une fois que vous aurez install Linux. Les programmes distribus sous la licence GNU ont souvent t crits par des passionns d'informatique, et ont t amliors au fil du temps par les diffrentes personnes qui les ont utiliss. Il est mme courant de voir des entreprises participer au dveloppement des logiciels libres, pour diverses raisons. On peut se demander quel est l'intrt pour une entreprise de dvelopper un logiciel libre dont elle ne tirera aucun profit. En gnral, plusieurs critres peuvent entrer en ligne de compte. Ce peut tre la publicit, le parrainage, ou tout simplement parce que le logiciel est utilis en interne et requiert une amlioration. D'autres socits fournissent un support et un service aprs-

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

M. Elie Degny Raphael

vente payant sur les logiciels libres qu'elles distribuent (c'est notamment le cas pour les distributions de Linux). Quoi qu'il en soit, cette participation collective a toujours pour but d'amliorer le logiciel. De plus, les gens qui dveloppent un logiciel libre sont souvent des spcialistes de ce type de logiciel, ou des utilisateurs avertis. Il est donc logique qu'au bout d'un certain temps, les logiciels libres fassent partie des meilleurs logiciels dans leur catgorie. Une autre caractristique de ce modle de dveloppement est l'accessibilit au code source des programmes et la libert de le modifier. Cette facilit est la source de la rapidit avec laquelle les bogues et les erreurs sont identifis, et de la ractivit du monde des logiciels libres en gnral. On peut considrer qu'un logiciel utilis par un grand nombre de personnes est virtuellement sans bogue connu, puisque si tel tait le cas il serait immdiatement corrig. Ce modle de dveloppement est donc certainement celui qui conduit l'une des plus grandes qualits logicielles qui soient. Comme on l'a dj dit, la licence GNU a t cre par la Free Software Foundation dans le cadre du projet GNU. Ce projet, toujours en cours de ralisation, a pour but d'crire 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. La Free Software Foundation a dj crit la plupart des utilitaires Unix dans le cadre du projet GNU, mais le cur du systme (ce que l'on appelle le noyau est toujours en cours de ralisation. Pour information, ce noyau se nomme Hurd . 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 GNU, 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 . Sous cette dnomination, il est clair que ce systme est constitu des outils GNU fonctionnant sous 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. Prcisons que la licence GNU 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 FreeBSD (un autre systme Unix libre) exige galement la distribution des sources, mais interdit l'exploitation commerciale des logiciels. Cela explique l'absence de distribution de FreeBSD et le fait qu'il est quasiment inconnu du grand public bien qu'il soit techniquement meilleur que Linux. Quelques outils fournis avec Linux sont distribus sous cette licence. Enfin, 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 4

M. Elie Degny Raphael

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 dfinitions infiniment rcursives. 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.

Le systme dexploitation Linux Linux est le systme qui connat actuellement le plus grand dveloppement sur lInternet.Principalement pour les raisons suivantes : Linux est le systme de prdilection pour linstallation de trois logiciels serveurs leaders sur lInternet : Apache en serveur Web (60% avec ses drivs selon Netcraft), Sendmail en serveur courrier et Bind en serveur DNS ;

Le logiciel Samba qui lui permet dtre serveur de fichier et dimpression en environnement Microsoft ; La stabilit et la scurit que lui confre le dveloppement de son architecture et de ses modules au sein de la communaut Open Source. Le large choix dapplications dans de trs nombreux domaines. Par exemple, la dernire distribution Debian donne accs plus de 2000 logiciels diffrents. Moins dinterruptions de service grce une gestion intelligente de linstallation des logiciels. Une serveur sous Linux ne doit tre redmarr que lors dune modification matrielle comme lajout dun disque ou dune carte. Logiciel Libre. Linux est gratuit et librement recopiage. Cela signifie que lon peut tlcharger une version de Linux ou lemprunter et linstaller sur nimporte quel nombre dordinateur. Accs aux sources des logiciels. Tous les utilisateurs peuvent modifier le fonctionnement des programmes ou engager un programmeur pour le faire. Linux est plus efficace et consomme moins de ressources CPU et mmoire que Windows. On peut par exemple faire un serveur dimpression avec un vieux 486. SERVEUR = COUTS REDUITS, SECURITE ET

LINUX COMME PERFORMANCE !

Chapitre 2. Concepts de base


Ce chapitre dcrit les principes de base qu'il faut connatre pour bien comprendre Linux. Les informations qui sont donnes ici ne sont pas rellement spcifiques Linux. Elles s'appliquent souvent aux systmes Unix en gnral. Il est donc recommand de lire ce
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 5

M. Elie Degny Raphael

chapitre, surtout si l'on n'a jamais vu ni utilis un systme Unix. En particulier, les utilisateurs chevronns de Windows risquent d'tre lgrement drouts. L'architecture du systme sera prsente, ainsi que la scurit et la notion d'utilisateur. Viendront ensuite les descriptions des principales fonctionnalits du systme de fichiers et de sa structure. Architecture du systme Comme tout logiciel d'une certaine taille, Linux est d'une grande complexit. Tous les systmes d'exploitation rcents sont constitus d'un grand ensemble de composants qui interagissent et dont la mise en place peut tre soit indispensable au bon fonctionnement du systme, soit facultative, soit tout simplement inutile tant donns la configuration matrielle et les besoins des utilisateurs. Cette complexit implique un grand nombre d'erreurs, d'anomalies et de dysfonctionnement possibles. En effet, pour qu'un systme informatique fonctionne correctement, il faut tout prvoir pour donner une action approprie tous les vnements possibles. Cela n'est pas humainement ralisable quand le systme devient trop complexe. Pour rsoudre ce problme, il est courant de subdiviser le systme en composants indpendants, dont le mauvais fonctionnement potentiel ne peut perturber que partiellement les autres parties du systme. Des points de synchronisation partir desquels le systme peut reprendre un fonctionnement normal aprs une erreur sont prvus. Ces points de synchronisation permettent simplement d'assurer la viabilit du systme, mme en cas d'erreur inopine. Pour quelques systmes, le seul point de synchronisation est le point de dpart, savoir le dmarrage de l'ordinateur. De tels systmes doivent donc souvent tre redmarrs, parfois pour une cause mineure (erreur d'un logiciel, modification de la configuration du systme, ajout d'un composant au systme). Ce n'est pas le cas de Linux, qui dans le pire des cas dtruit le composant qui a gnr l'erreur sans toucher aux autres parties du systme. Le point de synchronisation de Linux est donc le redmarrage d'une partie du systme uniquement, ce qui assure ainsi une grande stabilit du systme complet. Il va de soi que, lorsqu'un composant se plante, ceux qui l'utilisent risquent fort 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. Or il est un composant la base de tout dans Linux : le noyau ( kernel en anglais). C'est le cur du systme, et en fait c'est prcisment le systme Linux. Heureusement, ce composant 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 fiabilit provient du modle de dveloppement de Linux, qui est ouvert tout le monde (chacun peut rcuprer, lire, modifier, complter ou corriger le noyau condition de savoir bien programmer). 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. Ainsi, ds qu'une erreur est dtecte, elle est souvent corrige dans les jours qui suivent, ce qui assure une grande qualit.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

M. Elie Degny Raphael

Le noyau gre quasiment tout (mmoire, disques, systmes de fichiers, rseau, clavier, droits des utilisateurs, etc.), mais il n'est pas exploitable tel quel. Il n'est par exemple pas capable d'offrir une interface utilisateur permettant de lui donner les commandes qu'il doit excuter. Ces oprations sont du ressort d'autres modules dvelopps par la Free Software Foundation. Parmi ces modules, on trouve 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 appels des interprteurs de commandes. Mais le shell est bien plus que cela, car il peut tre programm, et il peut grer les processus (en arrter un, en lancer un autre, etc.). En fait, les commandes que le shell peut excuter sont en nombre trs rduit. La plupart des commandes sont tout simplement d'autres programmes. Les programmes que l'on peut utiliser dans le shell sont des programmes dits 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 GNU. Toutes ces commandes sont des commandes compatibles Unix. Ces commandes sont absolument essentielles pour pouvoir utiliser le systme, mais elles sont assez rbarbatives et peu 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 (mais cependant lgrement moins puissante en termes de fonctionnalits) : XWindow. Encore une fois, cette couche logicielle est constitue de plusieurs composants, dont la base est le serveur X. Le serveur X est un programme capable de fournir les services graphiques (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 (comme tout le reste) : XFree86. 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 fentre ( Window Manager en anglais) est le composant qui se place juste au-dessus du serveur X. Il est en charge, comme son nom l'indique, de grer les 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 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 fentre qu'il dsire, selon ses propres gots et ses dsirs, la diffrence est souvent une pure question de style. Il existe des environnements graphiques complets qui, en plus d'un gestionnaire de fentre souvent extrmement puissant, 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 7

M. Elie Degny Raphael

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...). Quelquesunes de ces applications sont simplement des front-end d'applications en ligne de commande, c'est--dire des interfaces graphiques des programmes non graphiques existants. Ce concept permet d'avoir un composant unique, et plusieurs interfaces diffrentes pour ce composant, et en plus de rendre indpendante la fonctionnalit de l'interface utilisateur. Encore une fois, la stabilit en est d'autant plus accrue. Bon nombre d'applications pour XWindow sont libres, ou utilisables librement des fins non commerciales. Cela signifie qu'un particulier a le droit de les utiliser tant qu'il ne s'en sert pas pour un travail qu'il revendra. Comme c'est le cas de la plupart des particuliers, on peut considrer qu'il est actuellement possible, avec Linux, d'avoir un environnement logiciel complet, fiable et performant... pour un prix de revient minime. En rsum, un systme GNU/Linux est structur de la manire suivante :

le noyau Linux ; le shell ; les programmes en ligne de commande, dont le serveur XWindow ; le gestionnaire de fentre ; le gestionnaire de bureau ; les applications XWindow.

Il n'est pas vident d'tablir un parallle avec MS Windows, puisque ce systme est rellement monolithique. Cependant, on peut considrer que le noyau Linux correspond aux modules KERNEL ou IO.SYS de Windows, que le shell correspond aux interprteurs de commandes COMMAND.COM ou CMD.EXE, que les programmes en ligne de commande correspondent aux programmes DOS ou console classiques (xcopy, fdisk, format...), que le serveur X correspond au couple pilote de carte graphique - GDI, que le gestionnaire de fentre correspond au module USER, et le gestionnaire de bureau l'explorateur, les fonctionnalits d'OLE et aux programmes fournis avec Windows. La diffrence essentielle vient du fait que le shell est peine programmable sous Windows, que les commandes DOS ont tendance accder aux ressources de la machine directement, sans passer par le noyau, que le driver de carte graphique, la GDI et le module USER sont tous intgrs dans le systme au lieu 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).

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

M. Elie Degny Raphael

En conclusion :

les systmes Unix, donc Linux, sont trs structurs, 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 ; et il n'est pas propritaire, c'est--dire que l'on n'est pas dpendant d'une socit ditrice de logiciel pour rsoudre un problme donn.

En bref, c'est la voie de la vrit. Scurit et utilisateurs 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. Les ressources de la machine sont ainsi partages quitablement, tant au niveau de la puissance de calcul qu'au niveau de la mmoire, du disque, des imprimantes... videmment, une question se pose : comment plusieurs utilisateurs peuvent-ils se partager le clavier et l'cran ? La rponse est simple : ils ne le peuvent pas. Par consquent, il n'y a que trois solutions possibles : soit on connecte l'ordinateur d'autres claviers et d'autres crans (on appelle un couple clavier/cran un terminal ), soit on accde au systme par l'intermdiaire d'un autre ordinateur via le rseau, soit les utilisateurs lancent tour tour leurs programmes. La dernire solution ncessite que les programmes ne soient pas interactifs : ils doivent tre capable de fonctionner sans intervention de celui qui les a lancs. La premire hypothse n'est pas srieuse pour un particulier, il est d'ailleurs assez difficile de connecter un terminal supplmentaire sur un PC (c'est ralisable, par l'intermdiaire des ports srie, mais ce n'est pas recommand). La deuxime solution, en revanche, est nettement plus envisageable. Il est parfaitement possible qu'un particulier dispose de deux PC connects en rseau, et que deux membres de la mme famille cherchent utiliser des ressources de la mme machine (par exemple, une imprimante ou tout autre priphrique, un programme install sur un seul ordinateur, des fichiers personnels, etc.). Quant la troisime solution, elle est du domaine du quotidien, mme pour un ordinateur sans rseau et avec un seul utilisateur. En effet, certains programmes sont lancs par le systme pour effectuer des tches de maintenance, et fonctionnent au nom de l'administrateur de la machine. Il va de soi que pour tre multi-utilisateurs, le systme doit satisfaire certains critres :

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

M. Elie Degny Raphael

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

Le multitche est assur au niveau du noyau. Chaque programme en cours d'excution (on les appelle processus ) fonctionne dans sa propre zone de mmoire, qui est compltement contrle par le noyau. Les ressources du processeur sont partages entre les processus, et il est impossible l'un d'entre eux de monopoliser la mmoire, le disque ou quoi que ce soit. Les processus doivent toujours passer par le noyau pour effectuer une opration, ce qui permet un contrle absolu. La fiabilit est galement assure au niveau du noyau. Les zones de mmoire utilises par chaque processus (encore appeles espaces d'adressage ) sont bien distinctes et bien identifies par le noyau. Cela implique qu'il est impossible un processus de perturber le fonctionnement d'un autre processus. Ainsi, si un processus fait une faute, il est purement et simplement termin par le noyau. Cela est sans appel : le noyau est le seul matre bord. Enfin, la scurit est assure par le noyau et par le systme de fichiers. Au niveau du noyau, chaque utilisateur est identifi de manire unique par un numro dans le systme. Ce numro est utilis pour vrifier les droits de l'utilisateur, ou, autrement dit, ce qu'il peut faire. Les droits des utilisateurs comprennent la possibilit de lire ou crire un fichier, d'accder ou non une ressource ou d'excuter un programme. Il est galement possible de crer un ou plusieurs groupes d'utilisateurs, et de donner des droits particuliers ces groupes. Tous les utilisateurs qui font partie de ce groupe recevront les droits du groupe. Ainsi, des classes d'utilisateurs peuvent tre facilement dfinies, et ces classes peuvent se voir attribuer un peu plus de privilges que les utilisateurs normaux selon les ncessits. Il existe toutefois un utilisateur spcial, qui a tous les droits : l'administrateur du systme ( root en anglais). Aucune restriction ne s'applique cet utilisateur, car il doit tre capable de grer le systme, l'installer, l'arrter, le mettre jour si ncessaire, et de dfinir les utilisateurs et leurs droits. Au niveau du systme de fichiers, la scurit est assure par le stockage d'informations additionnelles pour chaque fichier ou rpertoire. Ces informations permettent de connatre :

le numro de l'utilisateur qui possde le fichier ou le rpertoire. En gnral, le propritaire est simplement celui qui l'a cr. Cependant, l'administrateur peut changer le propritaire d'un fichier tout moment ; le numro du groupe auquel appartient le fichier ou le rpertoire. Tout fichier ou rpertoire appartient un groupe unique, qui est utilis pour calculer les droits des utilisateurs faisant partie de ce groupe. Par dfaut, un fichier nouvellement cr par un utilisateur appartient au groupe des utilisateurs users , ce qui
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 10

M. Elie Degny Raphael

convient dans la majorit des cas (attention, ce comportement varie selon les systmes). L'utilisateur peut toutefois donner ses fichiers n'importe quel groupe dont il fait partie ; les droits d'accs au fichier ou au rpertoire pour le propritaire, pour les utilisateurs faisant partie du groupe auquel appartient le fichier ou le rpertoire, et pour tous les utilisateurs en gnral. Ces droits comprennent le droit de lecture (reprsent par la lettre 'r', pour Read only ), le droit d'criture (reprsent par la lettre 'w', pour Writeable ), le droit d'excution (reprsent par la lettre 'x', pour eXecutable ) et quelques attributs supplmentaires (qui seront dtaills plus loin).

Il n'est sans doute pas inutile de prciser un peu le fonctionnement des droits dans le systme de fichiers. 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. On notera par exemple qu'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. On prendra garde galement 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. Comme on le voit, les droits d'accs aux fichiers et aux rpertoires sont trs souples. Ces droits sont attribus sparment pour le propritaire, le groupe et les autres utilisateurs (c'est--dire les utilisateurs qui ne font pas partie du groupe auquel appartient le fichier). Il est donc possible de donner par exemple tous les droits au propritaire d'un fichier, et seulement le droit de lecture aux autres utilisateurs. Cette configuration est celle qui est choisie par dfaut lors de la cration d'un fichier, elle assure que seul le propritaire peut modifier ou excuter ce fichier, tout en laissant la possibilit aux autres de le lire. Ce choix privilgie la scurit des donnes de chacun en laissant le maximum de libert aux autres. Si plusieurs personnes doivent travailler sur les mmes fichiers, il suffit de les regrouper dans un groupe, de donner les fichiers sur lesquels ils doivent travailler ce groupe, et de donner les droits d'criture aux membres de ce groupe sur ces fichiers. La scurit du systme est transitive, cela signifie que tout programme lanc par un utilisateur s'excute en son nom et reoit donc les droits de cet utilisateur. Le processus correspondant se voit donc attribuer les mmes restrictions que l'utilisateur qui l'a lanc. Il dispose galement des droits du groupe auquel le fichier du programme appartient. Il existe toutefois quelques exceptions cette rgle, pour les programmes dont le comportement est bien connu et qu'il est impossible de dtourner de leur fonction initiale. C'est notamment le cas de quelques commandes systmes (comme passwd, qui permet de changer de mot de passe), qui peuvent tre lances par les utilisateurs et qui s'excutent toutefois au nom du systme (dans le compte root). Il est donc impossible un utilisateur de violer les rgles de scurit du systme. Pour parvenir ce

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

11

M. Elie Degny Raphael

comportement, il faut utiliser des attributs spciaux sur les fichiers de ces programmes. Les attributs spciaux sont dcrits ci-dessous. Le premier attribut spcial 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, ce qui fait que le programme peut savoir par qui il a t lanc et au nom de qui il s'excute. Un processus dispose donc toujours de deux numros d'utilisateur :

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. Contrairement au bit setuid cependant, il 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, le troisime et dernier attribut spcial est le bit sticky . Cet attribut remplace l'attribut excutable pour les autres utilisateurs que le propritaire du fichier ou du
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 12

M. Elie Degny Raphael

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. En pratique, les utilisateurs n'ont pas se soucier des attributs des fichiers, et en fait mme l'administrateur laisse souvent les attributs par dfaut, car ils correspondent la majorit des besoins de scurit. L'administrateur a cependant le contrle total sur les droits d'accs aux fichiers, sur le propritaire et le groupe de chaque fichier. Il est galement le seul utilisateur capable de crer un autre utilisateur ou un groupe, ainsi que de les dtruire. Les questions qui se posent videmment sont les suivantes. Est-ce qu'un particulier a besoin de tout cela ? Ces fonctionnalits ne sont-elles pas rserves aux serveurs ? Estce 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, mais en fait, il est trs intressant mme pour un particulier de disposer de ces fonctionnalits. En effet, la scurit permet tout simplement de protger le systme contre ses propres erreurs. Qui n'a pas effac un jour un fichier important ou dplac le rpertoire Windows en bougeant lgrement la souris lors d'un double clic effectu trop lentement ? Avec Linux, on peut faire n'importe quoi, on est certain que le systme restera intact. D'ailleurs la rgle essentielle, mme pour un ordinateur utilis par une seule personne, est de toujours crer un compte utilisateur normal et de ne jamais travailler sous le compte root. Cette scurit est telle que Linux est le systme d'exploitation idal pour apprendre l'informatique quelqu'un : savoir que le systme protge tout ce qui est important permet aux dbutants de prendre des initiatives sans crainte. Quant aux ventuels revers de mdaille, ils sont absents : la gestion de la scurit ne consomme quasiment aucune ressource, et sa 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 rsum :

le multitche est un confort indniable. Il est apprciable de pouvoir utiliser son ordinateur mme lorsqu'il est en train de faire une tche longue en arrire-plan ;
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 13

M. Elie Degny Raphael

la fiabilit est videmment indispensable. Il est rassurant de se dire que mme si un processus trs gourmand en ressources fonctionne en arrire-plan, il ne perturbera pas les autres processus ; la scurit permet de se protger de ses propres erreurs, pour un cot minimal. Il suffit de conserver les paramtres par dfaut du systme et de ne plus s'en soucier ! Fonctionnalits du systme de fichiers

Les systmes de fichiers des systmes Unix sont trs puissants. Ils assurent la fois fonctionnalits, performances, et fiabilit. Il est srement bon de revenir sur les fonctionnalits fournies par les systmes de fichiers Unix. En effet, 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 rpertoire. Heureusement, ils permettent de faire beaucoup mieux que cela ! Pour commencer, il faut prciser que Linux ne travaille pas directement avec les systmes de 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 pas de toutes les fonctionnalits demandes par le systme de fichiers virtuel, dans ce cas, la requte de l'application dsirant effectuer cette opration 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.

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 :
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 14

M. Elie Degny Raphael

le systme de fichiers EXT2, qui est le systme de fichiers natif de Linux ; les systmes de fichiers FAT, FAT32 et FAT32X (utiliss par les systmes DOS et Windows) ; le systme de fichiers NTFS en lecture seule pour l'instant (utilis par Windows NT) ; le systme de fichiers ISO9660, qui est utilis par tous les CDROM. Les extensions permettant de grer les noms longs sont galement gres. Ces extensions comprennent en particulier le systme de fichiers Joliet (extension de Microsoft pour Windows 95) et Rock Ridge (extension de tous les systmes Unix) ; le systme de fichiers NFS (utilis pour distribuer sur un rseau un systme de fichiers) ; le systme de fichiers ReiserFS, qui supprime la notion de bloc disque et qui est journalis (c'est--dire qu'il supporte les arrts intempestifs du systme suite une panne de courant ou tout autre vnement contre lequel le systme ne peut rien faire).

Linux gre galement d'autres systmes de fichiers, utiliss par d'autres systmes d'exploitation (Unix ou non). Il permet mme d'intgrer un pseudo systme de fichiers gnr par le noyau. Ce systme de fichiers est compltement fictif : sa structure et ses fichiers sont gnrs dynamiquement par le noyau lorsqu'une application y accde. Il est principalement utilis par les applications pour lire des informations que le noyau met leur disposition, ainsi que pour changer dynamiquement certains paramtres du noyau en les crivant simplement dans les fichiers. Le systme de fichiers natif de Linux EXT2 est de loin le systme de fichiers le plus fonctionnel et le plus performant, car il a t hautement optimis. Les principales fonctionnalits de EXT2 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 est si faible que l'on peut l'ignorer en pratique. Cela provient de l'algorithme que EXT2 utilise pour allouer les blocs du disque dur lors de l'criture dans un fichier : il cherche tout simplement donner systmatiquement les blocs les plus proches. Pour donner un ordre de grandeur de la fragmentation des fichiers sur une partition de 800 Mo, aprs installation, suppression, manipulation d'un grand nombre d'applications et de petits fichiers, le tout ralis par plusieurs processus fonctionnant en mme temps, elle 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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

15

M. Elie Degny Raphael

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. Nous allons maintenant voir les quelques fonctionnalits additionnelles que EXT2 supporte. Notez bien ici que d'autres systmes de fichiers Unix peuvent fournir ces fonctionnalits, mais qu'il ne sera question ici que de EXT2 par souci de simplification. La premire fonctionnalit intressante est le support des droits d'accs aux fichiers pour les utilisateurs et pour les groupes. La gestion de ces droits est un impratif sous Unix. Comme on l'a dj vu, ces droits comprennent les droits d'accs en lecture, en criture et en excution, plus les attributs spciaux des fichiers. Ces droits sont fixs indpendamment pour l'utilisateur propritaire du fichier, le groupe d'utilisateur propritaire du fichier, et tous les autres utilisateurs. Une autre fonctionnalit intressante 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 rpertoires 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.
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 16

M. Elie Degny Raphael

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 la 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 recherche, les liens symboliques sont toujours crs avec des rfrences absolues, mais vous tes libres de faire autrement si vous en ressentez le besoin. Sachez cependant que dplacer une source de donnes n'est jamais une bonne ide. Le tableau suivant rcapitule les avantages et les inconvnients des diffrents types de liens : Tableau 3-1. Caractristiques des liens physiques et symboliques Fonctionnalit Liens physiques Liens symboliques Rfrence Rfrence absolue relative Avec la cible Oui Si dplacs avec Non elle Non Non Oui Oui

Peuvent tre dplacs Suivent la cible

Oui Oui

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

Oui

Oui

Le systme de fichiers EXT2 donne galement la possibilit de grer des fichiers presque vides ( sparse files en anglais) et les quotas. Ces deux fonctionnalits sont relativement peu utilises par les particuliers, elles ne sont mentionnes ici qu'afin d'tre complet. Les fichiers presque vides sont des fichiers contenant des donnes spares par de grands espaces vides. Il est inutile de stocker ces espaces vides sur le disque, aussi

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

17

M. Elie Degny Raphael

EXT2 signale-t-il simplement que ce fichier contient des trous, et il ne stocke que les donnes relles et la position des trous avec leur taille. Cela constitue une conomie de place non ngligeable. Les applications classiques des fichiers presque vides sont les bases de donnes, qui utilisent souvent des fichiers structurs contenant relativement peu de donnes effectives. Les quotas quant eux permettent d'attribuer un espace disque fixe chaque utilisateur. Ce n'est rellement utile que pour les serveurs. Structure du systme de fichiers Il est ncessaire de dfinir un peu les termes qui vont tre utiliss dans cette section, car les systmes de fichiers Unix sont trs diffrents des systmes de fichiers du DOS et de Windows. La connaissance de ce vocabulaire est ncessaire pour la comprhension de la structure du systme de fichiers de Linux. Comme la plupart des systmes de fichiers, les systmes de fichiers Unix sont structurs hirarchiquement, et regroupent les fichiers dans des rpertoires. Il existe un rpertoire racine, qui contient tous les fichiers, soit directement, soit indirectement dans ses sousrpertoires. C'est de ce rpertoire que dbutent tous les chemins possibles dans le systme de fichiers. Chaque fichier ou rpertoire a un nom qui permet aux utilisateurs du systme de l'identifier. Le seul rpertoire qui n'a pas de nom est le rpertoire racine. Les systmes de fichiers Unix n'ont pas les mmes limitations sur les noms que les systmes de fichiers FAT et FAT32. Les noms des fichiers et des rpertoires peuvent tre trs longs (jusqu' 256 caractres par nom), et ils prennent en compte la casse des lettres. Les fichiers contiennent 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. 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. 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 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 : / La qualification complte d'un fichier se fait en prcisant le nom du rpertoire chaque niveau et en sparant par des slashs chacun de ces noms. Cette qualification porte le nom

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

18

M. Elie Degny Raphael

de chemin d'accs ( path en anglais). L'exemple suivant vous montre l'allure d'un chemin d'accs typique sous Unix : / home/dupond.jean/lettres/professionnelles/marketing/ventes1 999.sdw La longueur maximale d'un chemin d'accs est de 4 ko dans le systme de fichiers EXT2. Les utilisateurs du DOS et de Windows constateront ici que les chemins d'accs Unix ne comportent pas de spcification de lecteurs. Les systmes de fichiers Unix sont dits mono-tte, 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). 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, on n'accde pas aux lecteurs, mais aux systmes de fichiers. Les utilisateurs du DOS devront donc rapprendre qu'un lecteur reprsente un priphrique physique, et qu'il est possible qu'il contienne plusieurs systmes de fichiers. Ils devront galement se rendre compte qu'un systme de fichiers n'est pas ncessairement stock sur un lecteur : il peut tre 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). La question n'a donc pas beaucoup de sens telle quelle. 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 . Par exemple, il est courant de monter le lecteur de disquette dans le rpertoire /floppy/. Ainsi, si la disquette contient le fichier ventes1999.sdw, ce fichier sera accessible grce au chemin suivant : /floppy/ventes1999.sdw 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. L'opration de montage peut raliser bien plus d'opration qu'une simple association d'un systme de fichiers un point de montage. En effet, elle peut gnrer les oprations suivantes :

chargement des pilotes pour ce systme de fichiers ; allocation des zones de mmoire pour les entres/sorties en mmoire ;

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

19

M. Elie Degny Raphael

masquage des fichiers et des rpertoires ventuellement prsents avant le montage dans le rpertoire utilis comme point de montage.

On prendra en particulier garde toujours dmonter les systmes de fichiers pour les lecteurs amovibles. Linux utilise en effet des zones de la mmoire que l'on appelle les tampons ( buffers en anglais), pour y stocker des donnes des systmes de fichiers monts, et il n'crit ces donnes 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. Le systme effectue le sync lorsqu'il s'arrte (par l'une des commandes halt, shutdown ou reboot), mais il ne le fait pas si on coupe le courant brutalement. C'est pour cela qu'il faut toujours arrter le systme proprement. De manire similaire, Linux empche l'jection des CD-ROM tant qu'ils sont monts. En revanche, il ne peut rien faire pour les lecteurs de disquettes, c'est l'utilisateur de prendre garde les dmonter avant de retirer la disquette. Deux derniers points auxquels les utilisateurs de DOS et Windows devront faire attention :

les fichiers ne sont pas identifis par leur extension. Un nom de fichier peut contenir un ou plusieurs points, et une extension peut tre arbitrairement longue. En particulier, un nom de fichier peut commencer par un point. Dans ce cas, ce fichier sera considr comme cach par les programmes, et on ne les verra 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 rpertoires et des fichiers ont un nom crit compltement en minuscules.

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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 20

M. Elie Degny Raphael

de fichiers. Le tableau suivant dcrit les principaux lments de l'arborescence du systme de fichiers de Linux. Tableau 3-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 souvent 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 comprim de Linux. Les noyaux comprims se dcompriment automatiquement lors de l'amorage du systme. Sur certains systmes, le noyau est encore plac dans le rpertoire racine de la partition root. / Fichier systme contenant la liste des symboles du noyau. Ce boot/System.ma fichier est utilis par certains programmes donnant des renseignements sur le systme. En particulier, il est utilis par le p 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 bloqu se trouve. /dev/ Rpertoire contenant tous les fichiers spciaux permettant d'accder aux priphriques. Sous Linux, la plupart des priphriques sont accessibles au travers de fichiers spciaux, grce auxquels l'envoi et la rception des donnes vers les priphriques peuvent tre raliss de manire uniforme. Il existe un tel fichier pour chaque priphrique, et ils sont tous placs dans ce rpertoire. Les distributions installent souvent dans ce rpertoire les fichiers spciaux pour la plupart des priphriques, mme s'ils 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. Une autre possibilit est d'utiliser un systme de fichiers virtuels, gr directement par le noyau. Le rpertoire /dev/ ne contient dans ce cas que les fichiers spciaux des priphriques pour lesquels le noyau dispose d'un gestionnaire intgr ou charg dynamiquement. Quelle que soit la technique utilise, ce rpertoire doit tre imprativement plac dans
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 21

M. Elie Degny Raphael

Rpertoire /sbin/

/bin/

/lib/

/lib/modules/

/etc/

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

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

/usr/lib/

Signification le systme de fichiers racine. 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. 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. 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. Rpertoire contenant les modules du noyau. Ce rpertoire contient les modules additionnels du noyau. Ces modules sont des composants logiciels du noyau, mais ne sont pas chargs immdiatement pendant l'amorage. 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. Rpertoire contenant tous les fichiers de configuration du systme. Ce rpertoire doit tre imprativement plac dans le systme de fichiers racine. Dans certaines distributions, les fichiers de configuration de XWindow sont placs directement dans le rpertoire /etc/X11/. Rpertoire contenant les fichiers de configuration des applications. 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. Rpertoire contenant les fichiers du systme partageables en rseau et en lecture seule. Rpertoire contenant la plupart des commandes des utilisateurs. Rpertoire contenant les commandes systmes non ncessaires l'amorage. Ces commandes ne sont normalement utilises que par l'administrateur systme. Rpertoire contenant les bibliothques partages de tous les programmes de /usr/bin/ et /usr/sbin/ et les bibliothques statiques pour la cration de programmes.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

22

M. Elie Degny Raphael

Rpertoire /usr/include/

/usr/X11R6/

/usr/src/

/usr/src/linux/

/usr/local/

/var/

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

/var/spool/

Signification 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++. Rpertoire contenant X11R6 et ses applications. Ce rpertoire contient des sous-rpertoires bin/, lib/ et include/, o se trouvent les excutables de XWindow, les bibliothques et les fichiers d'en-ttes pour crer des programmes pour XWindow en C et C++. 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. 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. Rpertoire contenant les programmes d'extension du systme indpendants de la distribution. Ce n'est pas le rpertoire d'installation des applications. 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 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 sousrpertoires 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. Rpertoire contenant toutes les donnes variables du systme. Ce rpertoire contient les donnes variables qui ne pouvaient pas tre places dans le rpertoire /usr/, puisque celui-ci est normalement accessible en lecture seule. Rpertoire contenant les fichiers temporaires. Il est prfrable d'utiliser ce rpertoire plutt que le rpertoire /tmp/. Rpertoire contenant les donnes variables des applications. 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. 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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

23

M. Elie Degny Raphael

Rpertoire /var/locks/

/var/cache/

/opt/

/home/

/root/

/mnt/

/proc/

Signification tous stocks dans ce rpertoire. Rpertoire contenant les verrous sur les ressources systme. Certaines ressources ne peuvent tre utilises que par une seule application (par exemple, un modem). Les applications qui utilisent de telles ressources le signalent en crant un fichier de verrou dans ce rpertoire. Rpertoire contenant les donnes de rsultats intermdiaires des applications. Les applications qui doivent stocker des rsultats intermdiaires doivent les placer dans ce rpertoire. Rpertoire contenant les applications. C'est dans ce rpertoire que les applications qui ne font pas rellement partie du systme doivent tre installes. Les applications graphiques devraient tre installes dans ce rpertoire. C'est en particulier le cas des gestionnaires de bureau. Les seules applications graphiques considres comme faisant partie du systme sont les applications de X11, qui sont donc stockes dans /usr/X11R6/. Il est recommand que ce rpertoire soit plac sur un systme de fichiers en lecture seule, et que les applications utilisent le rpertoire /var/opt/ pour travailler. Rpertoire contenant les rpertoires personnels des utilisateurs. Il est bon de placer ce rpertoire dans un systme de fichiers indpendant de ceux utiliss par le systme. 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 devra tre le rpertoire racine. Rpertoire rserv au montage des systmes de fichiers nonpermanents (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. 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.
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 24

M. Elie Degny Raphael

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.0 ( 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 catgories 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 blibliothques statiques, qui sont utilises lors de la cration de programmes. En gnral, tous les systmes Unix fournissent en standard un compilateur pour raliser ces programmes. Dans le cas de Linux, ce compilateur est gcc (pour GNU C Compiler ). La cration 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 8.

Chapitre 3. Installation du systme de base


Maintenant que vous connaissez tout des grands principes de Linux (et de la plupart des systmes Unix), vous devez brler d'impatience de l'installer et de commencer exploiter toutes ses possibilits. Cependant, il faut ne pas tomber dans le travers de ceux qui veulent imprativement utiliser une fonctionnalit sous prtexte qu'elle est disponible. Il se peut que vous ayez envie de les essayer, parce que vous en avez t priv depuis longtemps. Ce comportement est tout fait normal, mais vous allez devoir refrner vos envies, pour deux raisons. La premire est qu'il va falloir installer Linux au pralable, et la deuxime est qu'il ne faut pas faire un sac de nuds avec vos donnes. Vous pourrez exprimenter loisir, mais il faudra rester srieux ds que vous toucherez au systme. Comprenez bien que l'installation et la configuration de Linux doivent se faire pas pas. Griller les tapes peut se rvler tre une erreur, car cela rendrait les choses plus compliques qu'elles ne le sont. 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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

25

M. Elie Degny Raphael

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

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. Sauvegarde des donnes L'installation du systme de base est l'opration la plus dlicate, puisqu'il faut travailler au niveau le plus bas. La moindre erreur peut provoquer une catastrophe, ce qui peut aller jusqu' recommencer compltement l'installation. Si vous installez Linux pour la premire fois sur votre ordinateur, ou s'il n'y a pas d'autre systme d'exploitation install dessus, vous en serez quitte pour quelques heures perdues. Sinon, ce qui est le plus craindre, c'est la perte totale de vos donnes, y compris celles des autres systmes installs ! Donc : IL FAUT DONC FAIRE UNE SAUVEGARDE DE VOS DONNES ! La manire de procder dpend bien entendu des systmes d'exploitation ventuellement 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 CD de sauvegarde si cous disposez d'un
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 26

M. Elie Degny Raphael

graveur de CD. En fait, 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 qu'un seul disque un instant donn dans votre ordinateur. Toutefois, cette technique a l'inconvnient de ne pas vous permettre d'accder aux donnes de votre disque Windows partir de Linux. Amorage Pour commencer votre installation, vous devez avant tout dmarrer votre ordinateur sous Linux (sauf si vous ne disposez pas de place libre sur votre disque dur pour crer une partition Linux. Dans ce cas, vous devriez lire tout de suite la section suivante, et ne pas essayer de dmarrer Linux immdiatement. Vous reviendrez cette section lorsque vous aurez russi dgager de la place pour les partitions Linux). La mthode la plus simple est certainement de mettre le CD d'amorage de votre distribution dans le lecteur de CD et de redmarrer l'ordinateur. Il faut que votre BIOS soit configur pour amorcer le systme sur le lecteur de CD pour que cette solution fonctionne. Si votre BIOS ne vous permet pas de le faire, il ne vous reste plus qu' utiliser l'une des disquettes fournies avec votre distribution. Dans tous les cas, Linux doit se lancer, et le programme d'installation doit dmarrer. Suivez les indications fournies avec votre distribution pour cette tape. Le noyau de Linux qui est fourni avec votre distribution est un noyau qui a t spcialement conu pour dmarrer correctement sur le plus grand nombre de machines possibles. Il contient donc les pilotes ( drivers en anglais) pour votre disque dur, ainsi que pour d'autres types de disques. Il se peut mme que plusieurs noyaux vous aient t livrs avec votre distribution. Chacun de ces noyaux permet de dmarrer sur un certain type d'ordinateur. 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, soit il faut changer de noyau, soit il faut utiliser des pilotes additionnels, qui peuvent tre chargs la demande. Ces pilotes sont appels des modules du noyau. Ces modules sont en gnral accessibles directement sur le CD-ROM ou la disquette de dmarrage, ou sur une disquette complmentaire. Si Linux ne dtecte pas vos disques durs, vous serez oblig d'indiquer les modules charger au programme d'installation. Si cela ne fonctionne toujours pas, vous devrez ramorcer votre systme avec un noyau plus adapt votre matriel. Pour cela, vous aurez sans doute besoin de crer une disquette d'amorage pour ce noyau, et de l'utiliser la place de votre lecteur de CD. En gnral, les distributions fournissent un petit utilitaire DOS, nomm RAWRITE.EXE, qui permet

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

27

M. Elie Degny Raphael

de crer une disquette d'amorage partir d'un noyau trs simplement. Il s'utilise 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 la majorit 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. Cela est normal, puisque Linux n'est pas encore install, d'une part, et que ces outils ne tiennent pas facilement sur une disquette, d'autre part. Ces outils sont donc souvent comprims. Vous devez malgr tout avoir dj accs aux priphriques de votre ordinateur, en particulier aux disques, pour poursuivre votre installation. Partitionnement du disque La deuxime opration aprs le dmarrage du systme est le partitionnement du disque dur. Cette tape est de loin la plus dangereuse, mais elle est absolument ncessaire. Elle ne pose pas de problme lorsqu'on installe Linux sur une machine neuve, mais elle peut tre dlicate si un autre systme d'exploitation est dj install. Le problme le plus courant est l'absence de place disponible sur le disque dur pour placer une partition Linux. Ce problme n'a pas de solution : il faut supprimer une autre partition appartenant un autre systme, ou la rduire. Souvent, rduire une partition revient sauvegarder les donnes, la supprimer, la recrer avec une taille infrieure et restaurer les donnes. De toutes faons, dans ce type de situation, il faut faire des sauvegardes. Cependant, il existe une possibilit pour les partitions FAT. On peut dfragmenter la partition afin de placer toutes les donnes au dbut de celle-ci, et modifier la variable qui contient sa taille dans la table des partitions pour la rduire. Cette opration ne reconstruite pas le systme de fichiers FAT, ce qui fait que cette dernire est trop grosse pour la taille de la partition qu'elle gre aprs rduction. Cela n'est pas gnant, et cette technique a l'avantage d'tre rapide. La plupart des distributions de Linux fournissent des utilitaires DOS sur leur CD-ROM d'installation, gnralement dans le rpertoire dosutils du CDROM. Parmi ces utilitaires, vous trouverez l'utilitaire fips, qui permet justement de modifier la taille d'une partition FAT. Attention cependant, les FAT32 et FAT32X ne sont gres qu' partir de la version 2.0 de fips. Note : Attention ! Vrifiez bien les options du dfragmenteur de systme de fichiers que vous utilisez : quelques outils consolident bien l'espace libre mais placent les fichiers les plus couramment accds la fin de la partition FAT pour optimiser les temps d'accs (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 perdrez dfinitivement vos principaux fichiers et votre FAT sera dans un tat incohrent.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

28

M. Elie Degny Raphael

En fait, il est possible d'installer Linux sur une partition FAT, l'aide d'une extension de ce systme de fichier nomme UMSDOS . Cependant, cette opration n'est pas prvue par la plupart des distributions en standard, et on commence l sortir des sentiers battus. Autant dire que l'installation risque de se compliquer srieusement. De plus, ce choix est fondamentalement mauvais, parce que :

le systme de fichiers FAT est support par Linux, mais n'est pas optimis. Il est donc environ deux fois plus lent que le systme de fichiers natif ext2 ; le systme de fichiers UMSDOS simule un systme de fichiers Unix sur la FAT en rajoutant des fichiers d'informations complmentaires, ce qui est encore plus lent ; le systme de fichiers FAT n'est intrinsquement pas sr, car il ne prvoit aucun moyen de dupliquer les donnes ; le systme de fichiers ext2 est plus performant qu'un systme de fichiers FAT32, mme sous Windows 95.

Cela dit, il faut se faire une raison, si l'on installe Linux, c'est pour l'utiliser. La solution la plus simple pour ceux qui hsitent encore est peut tre de disposer d'un tiroir et d'un deuxime disque dur. Quoi qu'il en soit, il faut dterminer les tailles de partitions. Il est normal de disposer d'au moins trois partitions :

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

En ralit, il est mme recommand de placer les donnes des utilisateurs sur une partition spare, et les programmes sur une partition accessible en lecture seule, pour minimiser les risques de pertes de donnes. Cela ncessite de disposer d'encore deux autres partitions, ce qui amne le nombre de partition cinq. Si l'on spare galement les applications (places dans /opt/) des programmes d'extensions du systme (placs dans /usr/), il faut mme 6 partitions. Comme les tables de partitions ne contiennent que quatre entres, il faut utiliser des partitions logiques. Linux sait parfaitement grer ce type de partitions, de manire compltement transparente. L'avantage de cette organisation est une trs grande sret du systme. Son inconvnient est videmment qu'il faut connatre l'avance ses besoins en place disque, aussi bien pour les programmes que pour les donnes et le swap. Cependant, d'une manire gnrale, on peut considrer que ce qui est le plus important pour un particulier, ce sont ses donnes, et que le fait de rinstaller le systme en cas de perte totale d'une partition n'est pas le plus gros problme. Cela dit, il est trs rare que le systme de fichiers ext2 soit corrompu, et quand il l'est, il est peut tre rpar facilement. Un particulier peut installer et essayer des programmes trs couramment, il est donc logique de regrouper l'espace de donnes utilisateur avec l'espace d'installation des
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 29

M. Elie Degny Raphael

programmes. En revanche, il reste prudent de continuer placer le noyau sur sa propre partition, ne serait-ce que pour simplifier l'installation. Vous devrez galement prendre en compte l'ventualit d'une rinitialisation complte du systme de fichiers systme pour une nouvelle installation ou une mise jour du systme. Il peut tre agrable dans ce cas de disposer d'une partition indpendante pour les donnes utilisateurs, sur laquelle vous pourrez sauvegarder vos fichiers de configuration... L'une des solutions les plus simples consiste videmment avoir un deuxime disque, auquel cas le problme ne se pose plus. Toutefois, si vous dcidez de placer les programmes et les donnes utilisateurs dans la mme partition, vous pouvez envisager les tailles de partitions suivantes :

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

Note : La taille de 128 Mo pour le swap n'est plus une limitation partir de la version 2.2 du noyau. En effet, la gestion du swap a t modifie et la nouvelle limite est prsent 2 Go par partition de swap, avec un total de 8 partitions possibles. Si j'indique ici une taille maximale de 128 Mo pour le swap, c'est simplement parce que c'est tout fait suffisant et que si on a besoin de plus, il vaut mieux redimensionner sa configuration et envisager de gonfler la machine en mmoire vive. Le partitionnement 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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

30

M. Elie Degny Raphael

O disque est le fichier spcial de priphrique reprsentant le disque que vous dsirez partitionner. Comme on l'a vu prcdemment, tous les priphriques sont accessibles par l'intermdiaire de fichiers spciaux placs dans le rpertoire /dev/. Le nom des fichiers spciaux correspondant vos disques peut varier, selon leur nature. Ainsi, les disques et les lecteurs de CD IDE sont accessibles par l'intermdiaire des fichiers spciaux /dev/hda, /dev/hdb, /dev/hdc, etc. Ces fichiers permettent d'accder respectivement au disque matre du premier contrleur IDE, au disque esclave de ce mme contrleur, puis au disque matre du deuxime contrleur IDE puis au disque esclave du deuxime contrleur IDE, etc. Ainsi, si vous ne disposez que d'un disque, il doit normalement tre connect sur le premier contrleur IDE et tre matre. Dans ce cas, vous y accderez par le fichier spcial /dev/hda. Pour les disques SCSI, les noms sont lgrement diffrents : ils sont nomms /dev/sda0, /dev/sdb, etc. Donc, si vous voulez partitionner le disque matre du premier contrleur IDE, vous devrez taper : Fdisk /dev/hda Si vous ne spcifiez aucun disque en paramtre fdisk, il prendra par dfaut le disque /dev/sda, ou /dev/hda si aucun disque SCSI n'est install. Note : partir de la version 2.4.0 du noyau de Linux, le rpertoire /dev/ peut tre gnr par le noyau, dans un systme de fichiers virtuel. L'organisation de ce rpertoire est dans ce cas diffrente de l'organisation classique, et les noms de fichiers spciaux correspondants aux disques peuvent tre diffrents de ceux indiqus ci-dessus. Par exemple, le chemin du fichier spcial permettant d'accder au premier disque IDE sera /dev/ide/host0/bus0/target0/disc. Comme vous pouvez le constater, la reprsentation de la machine dans le systme de fichiers virtuels est plus structure, mais galement plus complique. Afin de simplifier ces mcanismes, il est d'usage de placer des liens symboliques dans le rpertoire /dev/ permettant d'accder aux fichiers spciaux de priphriques avec leur ancien nom. Vous n'aurez donc normalement pas vous soucier de savoir si votre noyau utilise ou non le systme de fichiers virtuels /dev/, et les chemins utiliss dans la suite de ce document seront les chemins classiques. Vous devrez faire la traduction vers les chemins du systme de fichiers virtuels vous-mme si vous ne voulez pas utiliser ces liens symboliques. 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. Il existe deux types de partitions. Les partitions primaires sont dfinies directement dans une petite table enregistre dans le secteur d'amorage principal, encore appel MBR (abrviation de Master Boot Record en anglais). Outre les informations dcrivant les partitions primaires, ce secteur contient un petit programme permettant de
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 31

M. Elie Degny Raphael

charger le systme d'une de ces partitions (on appelle ce programme le bootstrap loader ). Il ne peut y avoir plus de quatre partitions primaires, parce que seulement quatre entres sont dfinies dans la table des partitions du MBR. Les partitions tendues permettent de repousser cette limite 64, en recrant une table des partitions plus grande dans une des partitions primaires. Il ne peut y avoir qu'une seule partition tendue sur un disque donn (mais cela n'empche pas d'avoir des partitions primaires ct de celleci). Lorsque vous aurez choisi le type de partition dsir (avec les commandes 'p' ou 'e', respectivement pour primary et extended ), vous devrez donner son numro dans la table des partitions, puis indiquer le dbut et la 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 (DOS et Windows par exemple). Toutefois, on peut changer cette unit grce la commande 'u' et utiliser le secteur comme unit. Si vous avez cr une partition tendue, celle-ci sera utilise pour y stocker des partitions logiques. Pour pouvoir les crer, il faut encore utiliser la commande 'n', et choisir le type de partition logique avec la commande 'l'. Les partitions logiques sont numrotes avec les nombres 5 et suivants. La cration des partitions logiques se fait exactement de la mme manire que les partitions primaires, en spcifiant leur dbut et leur fin, soit en cylindre, soit en secteurs selon l'unit courante. Les partitions primaires et logiques ont toutes un identificateur qui permet d'indiquer quel systme elles appartiennent. Les identificateurs utiliser pour Linux sont 83 pour les partitions en EXT2, et 82 pour les partitions de swap. Cet identificateur peut tre fix l'aide de la commande 't' (pour type ), qui demande successivement le numro de la partition modifier et la valeur de son identificateur en hexadcimal. La liste des valeurs admissibles par fdisk peut tre obtenue l'aide de la commande 'l'. Par dfaut, fdisk cre des partitions Linux natives, de code 83. Lorsque vous aurez cr toutes vos partitions, il ne vous restera plus qu' activer la partition qui contient le secteur d'amorage ( boot sector en anglais). Cela se fait l'aide de la commande 'a'. C'est sur cette partition que le chargeur du MBR ira chercher le systme lancer. En gnral, le lancement du systme consiste excuter le programme enregistr dans le premier secteur de la partition de ce systme. On appelle ce secteur le secteur de boot. On ne peut activer qu'une seule partition, c'est donc sur celle-ci qu'il faudra installer le systme principal, ou plus gnralement le gestionnaire d'amorage de ce systme. Un gestionnaire d'amorage est un petit programme capable de lancer des systmes d'exploitation. Il est en gnral constitu d'une petite partie place sur le secteur de boot de la partition du systme auquel il appartient, et d'un complment enregistr dans des fichiers de cette partition. Le fait de stocker le gestionnaire d'amorage dans le secteur de boot n'est pas gnant, parce que les gestionnaires d'amorages des systmes sont capables d'amorcer d'autres systmes que celui avec lequel ils ont t fournis (ce n'est cependant pas le cas pour DOS et Windows 9x). En fait, il est fortement recommand d'installer les gestionnaires d'amorage sur la

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

32

M. Elie Degny Raphael

partition du systme avec lequel il est fourni, et non pas directement dans le MBR. En effet, certains systmes d'exploitation (ceux de Microsoft) crasent systmatiquement le MBR lorsqu'ils s'installent, dtruisant ainsi les chargeurs des autres systmes qui y seraient installs. 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. Le gestionnaire d'amorage de Linux se nomme LILO (pour LInux LOader ). LILO permet de dmarrer un grand nombre de systmes, dont DOS, Windows et OS/2. Comme nous venons de l'expliquer, il est conseill d'install LILO sur le secteur de boot de la partition Linux, et c'est cette partition qui doit tre marque comme amorable. Il vous est galement parfaitement possible d'installer LILO directement sur le MBR, mme si d'autres systmes d'exploitation que Linux sont dj installs. En revanche, on prendra garde dans ce cas toujours installer les ventuels systmes d'exploitation Microsoft en premier et faire une sauvegarde de son MBR. L'utilitaire fips dcrit cidessus vous permet d'effectuer une telle sauvegarde avant de modifier votre table des partitions. Le nom du fichier contenant l'image de votre MBR sera ROOTBOOT.000. En cas de problme, vous pourrez utiliser l'utilitaire restorrb fourni avec fips pour rinstaller le MBR initial sur votre systme, partir d'une disquette de boot DOS. Vous devriez lire attentivement la documentation fournie avec fips sur le CD-ROM de votre distribution avant de vous lancer dans ces manipulations on ne peut plus techniques (une traduction franaise de l'intgralit de la documentation de fips est disponible sur Internet l'adresse http://www.fips.fr.st. Nous verrons comment installer LILO plus loin. 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. La cration des systmes de fichiers ne sera dcrite que pour le systme de fichiers natif de Linux, savoir EXT2. Attention ! Dans le monde du DOS et de Windows, la cration d'un systme de fichiers est l'opration de formatage d'une partition. Le terme de formatage est trs mal employ dans ce sens, 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. La mthode dcrite ici permet de crer un systme de fichiers EXT2. Cette opration peut tre faite l'aide de la commande mke2fs. La cration des autres systmes de fichiers se fait de manire gnrale de la mme manire que pour EXT2, mais avec des

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

33

M. Elie Degny Raphael

outils diffrents. Par exemple, la cration d'un systme de fichiers ReiserFS se fait l'aide de l'outil mkreiserfs. Ces outils ne seront pas dcrits ici, consultez la documentation de votre distribution et les pages de manuel appropries pour plus de dtails ce sujet. Afin de pouvoir utiliser mke2fs correctement, il est ncessaire de dfinir quelques termes, et d'expliquer quelles notions d'EXT2 ils se rfrent. Premirement, le systme de fichiers EXT2 travaille, comme la plupart des systmes de fichiers, 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 ses avantages et ses 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 : EXT2 gre l'allocation et la libration des blocs de manire toujours trouver le meilleur bloc allouer pour crer un fichier. Ainsi, il limite la fragmentation des fichiers son strict minimum, ce qui rend inutiles les programmes de dfragmentation de systmes de fichiers. Deuximement, EXT2 utilise des structures de donnes appeles inodes pour dfinir les fichiers. Un inode contient la plupart des informations d'un fichier, savoir :

son propritaire et son groupe ; ses droits d'accs ; ses dates de cration, modification, accs ; les blocs qu'il utilise ; d'autres informations utilises par EXT2.

Ces inodes sont stocks 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.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

34

M. Elie Degny Raphael

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. 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 du systme de fichiers, 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 par inode de la partition. 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 possible 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 syntaxe de la commande mke2fs est donne ci-dessous : mke2fs fichier o fichier est le nom du fichier spcial de priphrique reprsentant la partition sur laquelle le systme de fichiers doit tre cr. mke2fs prend alors des valeurs par dfaut appropries pour cette partition, mais vous pouvez galement spcifier d'autres valeurs. La taille des blocs peut tre indique en octets avec l'option suivante : mke2fs -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 -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 -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. Cration de la partition de swap En cas de manque de mmoire vive, Linux peut utiliser une partie du disque dur pour y stocker les donnes temporairement inutilises afin de librer de l'espace mmoire. Cette opration permet de continuer travailler, mme si la machine ne dispose pas de

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

35

M. Elie Degny Raphael

suffisamment de mmoire vive pour excuter tous les processus dont elle a la charge. L'inconvnient de cette mthode est videmment 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 de swap, 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 nos jours de consacrer 64 ou 128 Mo de disque dur pour une partition de swap. Linux est capable de grer jusqu' 8 partitions de swap, plus les fichiers de swap que l'on peut rajouter ultrieurement. Nous ne dcrirons que la manire de crer une partition de swap, car les fichiers ne constituent plus le meilleur compromis avec les tailles de disques que l'on rencontre prsent. 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 EXT2 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 est 83, et celui pour les partitions de swap est 82. Vous devrez donc affecter cet identificateur votre partition de swap lorsque vous partitionnerez votre disque dur. Une fois cre, la partition de swap peut tre prpare pour que le noyau puisse 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 :
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 36

M. Elie Degny Raphael

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 peu plus de swap si les besoins s'en font sentir, sans avoir redmarrer la machine. 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 du systme de base, 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 les couches les plus basses du systme, donc en particulier le noyau. Cependant, il faut galement installer le shell et les outils complmentaires, puisque sans eux on ne peut strictement rien faire de ce noyau. Cet ensemble de programme constitue ce que l'on appelle le systme de base. Je suggre de configurer correctement le systme ce stade, avant de se lancer dans l'aventure XWindow. C'est videmment cette partie qui sera la plus difficile raliser. L'installation de XWindow ne devrait alors pas causer de problme majeur. Une fois ces oprations ralises, vous pourrez installer les applications. En gnral, lorsque le systme est bien 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.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

37

M. Elie Degny Raphael

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

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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 38

M. Elie Degny Raphael

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

soit vous dmarrez partir d'une disquette ou d'un CD d'amorage ; soit vous lancez Linux partir du DOS grce au LOADLIN.EXE ; soit vous installez le gestionnaire d'amorage LILO.

programme

Il va de soi que c'est la troisime solution qui est recommande. Cependant, les deux premires solutions pourront tre utiles si d'aventure votre MBR se trouvait cras par un systme d'exploitation maladroit (comme DOS ou Windows). L'installation de LILO doit se faire de prfrence dans le programme d'installation ou de configuration de votre distribution. Consultez votre documentation pour plus de dtails ce sujet. Cependant, si vous dsirez installer LILO vous-mme, vous devrez modifier le fichier de configuration /etc/lilo.conf. Ce type d'opration est dcrit en dtail dans la la section intitule Configuration de LILO dans Chapitre 6.

Chapitre 4. Commandes de base d'Unix


Si vous tes parvenu installer les paquetages de la srie de base, vous disposez d'un systme Linux fonctionnel. Flicitations ! Maintenant, il va falloir le configurer... Autant vous prvenir tout de suite : cette opration demande beaucoup de temps et de patience, moins d'avoir une machine vraiment standard et une chance phnomnale. Mais pour cela, il va falloir que vous appreniez les commandes de base d'Unix et la manire d'utiliser un systme Linux en ligne de commande (c'est--dire en mode texte, sans XWindow). Login et dconnexion Comme il l'a dj t dit, Linux est un systme multi-utilisateurs. Il faut donc que chacun s'identifie pour que le systme puisse fonctionner correctement. Cette opration 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.
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 39

M. Elie Degny Raphael

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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

40

M. Elie Degny Raphael

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. . 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 41

M. Elie Degny Raphael

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. Le problme majeur est videmment que si 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. En gnral, le systme effectue un contrle et une rparation si ncessaire lors du redmarrage suivant, mais il est inutile de prendre des risques. Tout cela 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 Permet d'arrter le systme. Reboot 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 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 !
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 42

M. Elie Degny Raphael

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. Les pages de man sont classes en groupes thmatiques de pages, 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 goupe 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 1 2 3 4 5 6 7 8 Type de pages de manuel Commandes utilisateur Appels systmes (programmation en C) Fonctions de la librairie C Description des fichiers spciaux Description des fichiers de configuration Jeux et programmes divers Programmes systmes divers Administration systme

Si vous ne savez pas dans quel groupe se trouve une page de manuel, vous pouvez utiliser l'option -k, qui permet d'afficher l'ensemble des pages disponibles portant ce nom : Man -k commande

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

43

M. Elie Degny Raphael

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 apropos, qui recherchera toutes les pages de manuel qui contiennent un mot-cl particulier. Ce programme s'utilise avec la syntaxe suivante : Apropos mot-cl O mot-cl est le mot-cl rechercher dans toutes les pages de manuel. La commande man est la commande 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. 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. 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.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

44

M. Elie Degny Raphael

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/local/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 ). 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 45

M. Elie Degny Raphael

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 . Notions de chemins sous Unix Les chemins Unix permettent de qualifier compltement un rpertoire ou un fichier sur le disque. Pour cela, ils utilisent les noms de ces rpertoires et de ces fichiers, et ils les combinent pour indiquer comment atteindre la cible dans le systme de fichiers. Classiquement, les chemins sont spcifis par la squence des rpertoires dans lesquels il faut aller pour trouver cette cible. Cette squence est donne par la suite des noms des rpertoires, spars par un caractre spcial. Sous Unix, ce caractre est la barre oblique ( / ). Le rpertoire racine 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 qu'il 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/local/X11/bin avec les deux chemins suivants : /usr/local/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 noms. 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 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 :
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 46

M. Elie Degny Raphael

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 ( \ ). Il est galement possible de passer les paramtres entre guillements " , car le shell n'interprte pas les caractres gnriques

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

47

M. Elie Degny Raphael

dans les chanes de caractres. Par exemple, pour crer un rpertoire *, on utilisera la commande suivante : mkdir \* 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 convivial, cependant, il existe sur toutes les platesformes 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 la section intitule vi, l'diteur de fichiers de base, 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 :
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 48

M. Elie Degny Raphael

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). La copie d'un fichier se fait avec la commande cp, dont la syntaxe est donne cidessous : 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 cidessous : 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. 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. Passage en mode superviseur Si vous tes prudent, vous avez sans doute cr un compte utilisateur juste aprs avoir install votre systme de base, et vous ne travaillez plus que sous ce compte. Cette technique est prudente, cependant, elle pose un problme vident : vous ne pouvez pas faire votre travail d'administrateur sous ce compte. C'est pour cela que la commande su a t cre. Cette commande permet de changer son identit dans le systme :

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

49

M. Elie Degny Raphael

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 sue demande le mot de passe avant d'obtemprer... Changement des droits des fichiers, du propritaire et du groupe 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 :

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 toto Permet de donner le droit d'criture sur le fichier toto tous les membres du groupe auquel ce fichier appartient. Les droits d'accs ont dj t dcrits en dtail ci-dessus dans le chapitre concernant les notions gnrales sur Unix. 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 50

M. Elie Degny Raphael

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. Gestion des liens La commande pour crer un lien est ln. Cette commande utilise la syntaxe suivante : ln [-s] source lien O source est le nom du 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 -l de la commande ls. Ainsi, la commande suivante : ls -l lien Permet d'afficher les informations sur le lien 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. Montage et dmontage d'un systme de fichiers Comme il l'a t vu dans le chapitre expliquant les gnralits sur Unix, les systmes de fichiers ne sont pas accessibles directement. Ils doivent subir une opration que l'on nomme le montage. De la mme manire, il faut penser dmonter les systmes de fichiers avant d'teindre la machine ou de retirer le support dans le cas des supports amovibles, faute de quoi les donnes non crites seront dfinitivement perdues. Heureusement, il y a la possibilit d'enregistrer les systmes de fichiers les plus utiliss pour que le systme les monte et les dmonte automatiquement au dmarrage et l'arrt
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 51

M. Elie Degny Raphael

du systme. Cependant, cet automatisme n'est disponible que pour les systmes de fichiers fixes, et il est ncessaire de monter soi-mme les systmes de fichiers sur disques amovibles (comme, par exemple, les disquettes et les CD-ROM). 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 -t permet d'indiquer le type du systme de fichiers, mais en gnral, il n'est pas ncessaire de le prciser. En effet, le noyau sait reconnatre la plupart des systmes de fichiers automatiquement. Pour information, les systmes de fichiers les plus utiliss sont les suivants :

ext2 pour les systmes de fichiers EXT2FS ; iso9660 pour les CD-ROM (qu'ils soient avec extensions Joliet ou Rock Ridge ou en mode ISO 9660 pur) ; msdos pour les systmes de fichiers FAT normaux ; vfat pour les systmes de fichiers FAT32 ; umsdos pour les systmes de fichiers UMSDOS (extension au DOS pour permettre les fonctionnalits des systmes de fichiers Unix).

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. La commande permettant de dmonter un systme de fichiers est beaucoup plus simple : umount fichier Ou : umount base O fichier est 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. 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. Il est possible d'enregistrer des options par dfaut dans le fichier de configuration /etc/fstab. Ce fichier contient, entre autre, le rpertoire de montage, le type du systme de fichiers et le fichier de priphrique utiliser pour ce systme de fichiers. De cette manire, il est possible d'utiliser la commande mount de manire simplifie, en ne prcisant que le
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 52

M. Elie Degny Raphael

rpertoire servant de point de montage ou le fichier spcial de priphrique. Le fichier /etc/fstab sera dcrit plus en dtail plus loin. 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'autre 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 fichier trouvs (partie -print ). Consultez les pages de manuel pour plus d'information ce sujet. 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. 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. 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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

53

M. Elie Degny Raphael

-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 la section intitule Redirections. 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), 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. 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 comprimer et dcomprimer des fichiers avec gzip et bzip2 dans ce paragraphe. La compression d'un fichier se fait de manire lmentaire : gzip fichier
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 54

M. Elie Degny Raphael

O fichier est le fichier comprimer. Aprs avoir effectu son travail, gzip renomme le fichier comprim 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 comprim 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 comprim avec gzip ou bzip2. Aprs dcompression, l'extension complmentaire .gz ou .bz2 est supprime du nom de fichier. 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 videmment crit pour permettre des archivages sur bandes ou sur tout autre priphrique de stockage de masse, mais il est galement utilis pour crer des 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. Cette liste ne doit pas tre prcise s'il s'agit d'une restauration. Les options de tar que vous utiliserez le plus souvent sont les suivantes :

cvf pour crer une archive ; tvf 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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

55

M. Elie Degny Raphael

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 y permet de comprimer l'archive la vole avec bzip2. 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 la section intitule Redirections. Gestion des paquetages La plupart des distributions actuelles utilisent le format de fichier rpm ( Redhat Package Manager ) pour leurs distributions. 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 y 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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

56

M. Elie Degny Raphael

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 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 description des principales commandes de vi, qui ne sera pas exhaustive car vous ne l'utiliserez certainement pas 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 sur 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.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

57

M. Elie Degny Raphael

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 : 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.
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 58

M. Elie Degny Raphael

La commande yy permet de copier la ligne courante dans le buffer. Cette commande est donc utilise pour effectuer des copier/coller, en combinaison avec la commande p. Les commandes de vi peuvent tre rptes un certain nombre de fois, en tapant un nombre avant de les taper. Ainsi, pour supprimer 3 lignes, il 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 cidessous : 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 ; 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 la page de manuel de vi pour de plus amples informations. 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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

59

M. Elie Degny Raphael

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 par excellence. 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. 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. 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 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 ne soit pas interactive) ;
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 60

M. Elie Degny Raphael

ajouter une esperluette (caractre & ) la fin de la ligne de commande.

Par exemple, la commande suivante : cp /cdrom/kernel/linux-2.2.10.tar.gz . & copiera l'archive du noyau 2.2.10 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 l'expressions 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.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

61

M. Elie Degny Raphael

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 : 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. 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 62

M. Elie Degny Raphael

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 signal 15 9 19 18 de Signification Signal de terminaison de processus. Signal de destruction inconditionnelle de processus. Signal de suspension de processus. Signal de reprise d'excution d'un processus suspendu.

Lorsqu'aucun 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 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. 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. 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 :

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

63

M. Elie Degny Raphael


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. 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] Le relancement d'un processus suspendu peut galement se faire en lui envoyant le signal 18 l'aide de la commande kill. 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. 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,
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 64

M. Elie Degny Raphael

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. 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 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 65

M. Elie Degny Raphael

sources injecter. Par dfaut, si n n'est pas prcis, le flux d'entre standard du processus sera utilis. 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 arrireplan, 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 66

M. Elie Degny Raphael

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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

67

M. Elie Degny Raphael

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. 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 &vellip; 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 Les pipes 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 pipes .
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 68

M. Elie Degny Raphael

Syntaxe des pipes 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 ( tuyau ou tube en anglais). L'oprateur pipe s'utilise de la manire suivante :

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

La commande se trouvant la gauche de l'oprateur pipe doit tre complte, avec ses autres redirections ventuelles. La redirection dans une pipe s'effectue aprs les autres types de redirections vues prcdemment. Le systme contrle l'excution des processus qui se trouvent aux deux bouts dune pipe, de telle sorte que le transfert de donnes puisse toujours se faire. Si le processus source a trop de donnes, il est fig 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 pipes 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. Prenons un exemple un peu plus complexe. Supposons que l'on veuille archiver et comprimer un rpertoire. Il est possible d'archiver ce rpertoire avec la commande tar, puis de comprimer 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 :

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

69

M. Elie Degny Raphael

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 comprime 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 comprime, 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 comprimer 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 * Mais cette solution ne fonctionne pas avec les versions non GNU de tar, qui ne supporte 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 pipe entre les deux processus tar invoqus. Dans ce cas, le transfert se fait simplement via la mmoire vive : cd source tar cv * | (cd destination ; tar xvf -) La commande utiliser est cette fois un peu plus complique, car la commande d'extraction des fichiers ncessite un changement de rpertoire. Il faut donc utiliser une
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 70

M. Elie Degny Raphael

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 pipe 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 pipe 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 !). Les pipes nommes Les pipes crs par l'oprateur '|' constituent ce que l'on appelle des pipes anonymes, car ils sont crs directement par le shell pour une commande donne. Il est possible de crer manuellement des pipes en leur donnant un nom, et de les utiliser a posteriori dans plusieurs commandes. Ces pipes constituent ce que l'on appelle des pipes nommes. En fait, les pipes nommes sont des fichiers spciaux, que l'on cre dans un systme de fichier 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 dune pipe. Les pipes nommes sont cres par la commande mkfifo, dont la syntaxe est la suivante : mkfifo nom O nom est le nom dune pipe nomme. Notez que cette commande chouera sur les systmes de fichiers incapables de grer les pipes nommes. Une fois cr, le fichier de pipe 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 pipe nomm temporaire de la manire suivante : mkfifo /tmp/tempfifo ls > /tmp/tempfifo less < /tmp/tempfifo La destruction dune pipe nomme se fait comme n'importe quel fichier, l'aide de la commande rm.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

71

M. Elie Degny Raphael

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 pipes, 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. 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 : 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 pipes, 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 :
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 72

M. Elie Degny Raphael

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). 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 PATH, qui contient la liste des rpertoires dans lesquels le systme doit rechercher les programmes excuter. Cette variable permet donc de lancer les programmes en tapant simplement leur nom, et de laisser le systme rechercher le fichier de ce programme dans chacun des rpertoires indiqus par la variable d'environnement PATH. 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 :

son propre environnement, qui contient les variables d'environnement normales et ses propres variables ; l'environnement d'excution, qui est l'environnement que le shell utilise pour lancer les programmes.

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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 73

M. Elie Degny Raphael

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 antislash d'chappement ('\'), 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 chane de caractres affecter la variable. Bien entendu, le caractre antislash tant lui-mme un caractre spcial pour le shell, et il doit lui-mme tre 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. 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 74

M. Elie Degny Raphael

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, et que la plupart des programmes utilisent pour permettre l'utilisateur de modifier leur comportement : Tableau 5-3. Variables d'environnements courantes Nom HOME USER Signification Chemin du rpertoire personnel de l'utilisateur. Nom de login de l'utilisateur. Cette information est galement disponible au travers de la variable d'environnement LOGNAME. Type de terminal utilis. La valeur de cette variable sert aux applications pour dterminer les caractrisques 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 la section intitule Description des terminaux dans Chapitre 6. Chemin sur le fichier de programme du shell actuellement utilis. Sous Linux, il s'agit souvent du shell bash. Liste des rpertoires dans lesquels les
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 75

TERM

SHELL

PATH

M. Elie Degny Raphael

Nom

Signification 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). LD_LIBRARY_PATH 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_INCLUDE_PATH 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. CPLUS_INCLUDE_PATH 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. LIBRARY_PATH Liste des rpertoires dans lesquels les bibliothques utiliser lors de l'dition de lien 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 LD_LIBRARY_PATH, qui indique la liste des rpertoires dans lequel l'diteur de liens dynamiques recherchera les bibliothques dynamiques utilises par les

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

76

M. Elie Degny Raphael

Nom

TMPDIR

TZ

Signification programmes lors de leur chargement. Les notions de fichiers sources et de compilation seront dtailles dans le Chapitre 8. 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. 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 77

M. Elie Degny Raphael

Nom

LANG

LC_MESSAGES

LC_TYPE

LC_COLLATE

LC_MONETARY

Signification dimanche. Seul le premier champ est obligatoire, il est possible d'utiliser les noms de fuseau horaires dfinis par la librairie C. En France, on utilise normalement le fuseau CES (temps d'Europe centrale). Valeur par dfaut utiliser 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. Valeur utiliser pour dterminer la langue des messages. La valeur par dfaut est spcifie par la variable d'environnement LANG. Valeur 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. Valeur utiliser pour dterminer les rgles de comparaison des caractres. La comparaison des caractres est utilise pour les tris lexicographiques (tri par ordre alphabtique par exemple). La valeur par dfaut est spcifie par la variable d'environnement LANG. Valeur utiliser pour dterminer l'emplacement et le caractre

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

78

M. Elie Degny Raphael

Nom

LC_NUMERIC

Signification reprsentant le symbole montaire du pays. La valeur par dfaut est spcifie par la variable d'environnement LANG. Valeur utiliser pour dterminer les conventions locales d'criture des nombres (sparateurs 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. 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 pipes, 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 ignorera le contenu lors de l'analyse syntaxique. Ces chanes de caractres sont simplement donnes entre guillemets simples (caractre '). Par exemple, la commande suivante :
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 79

M. Elie Degny Raphael

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 pipes, 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 `), qui se ressemblent normment dans certaines polices de caractres. Ces deux caractres ont une signification compltement diffrente. Le premier sert dfinir des chanes de caractres, et le deuxime excuter une commande et en inclure le rsultat dans une autre commande. Nous verrons plus loin comment utiliser ce type de guillemets. Les guillemets simples sont donc trs pratiques pour crire simplement une chane de caractres, mais ne permettent pas de 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.
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 80

M. Elie Degny Raphael

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. 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, de calculer des expressions mathmatiques, voire d'inclure le rsultat d'une autre commande dans la ligne de commande en cours. Les mcanismes de substitution 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 contenante. 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. 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 81

M. Elie Degny Raphael

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. 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} 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 serait 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 plutt la syntaxe suivante :

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

82

M. Elie Degny Raphael

${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. 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}

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

83

M. Elie Degny Raphael

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 la section intitule Les expressions rgulires. 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 souschane 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 la section intitule Les expressions rgulires. Cependant, une prcision s'impose : si le motif commence par le caractre #, ce motif devra obligatoirement tre plac au dbut de la chane de caractres contenue dans la variable. De mme, si le motif commence par le caractre %, il devra obligatoirement se trouver la fin de cette chane. Ces deux notations permettent d'obtenir le mme effet que les suppressions de prfixes et de suffixes prsentes plus haut.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

84

M. Elie Degny Raphael

Substitution du rsultat d'une commande Le shell peut valuer une commande apparaissant dans une expression afin de la remplacer par son rsultat. Il existe deux syntaxes pour raliser ce type de substitutions. La premire, et la plus classique (voire historique), utilise des guillemets inverses : `commande` O commande est la commande devant tre remplace par son rsultat (c'est--dire ce qu'elle enverra 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 appliqu 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). 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 ).

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

85

M. Elie Degny Raphael

Les divers oprateurs d'affectation du langage C +=, -=, etc. sont galement disponibles. Substitution de commandes Nous avons dj vu qu'il tait possible de rcuprer le rsultat d'une commande pour l'insrer dans une ligne de commande. Cette technique s'apparente ce qu'il est possible de faire avec la commande xargs et une pipe. De la mme manire, le shell fournit une substitution permettant d'obtenir des fonctionnalits similaires celles fournies par les pipes nommes. Cette substitution est la substitution de commande. La syntaxe utilise par les substitutions de commandes est similaire celle des redirections classiques : <(command) Ou : >(command) O command est la commande substituer. La premire syntaxe permet de lancer une commande en arrire-plan en redirigeant son flux standard de sortie vers un descripteurs 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 nommes, en vitant d'avoir crer un fichier de pipe manuellement et de lancer les deux commandes devant se servir de ce pipe pour communiquer. Ainsi, la commande suivante : cat <(ls) est fonctionnellement quivalente la srie de commande suivante : mkfifo /tmp/lsfifo ls > /tmp/lsfifo cat /tmp/lsfifo rm /tmp/lsfifo Les substitutions de commandes sont donc nettement plus pratiques et plus sres, car elles n'imposent pas la cration d'un fichier de pipe nomm dont le nom peut tre choisi arbitrairement. 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 86

M. Elie Degny Raphael

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 IFS (abrviation de l'anglais Internal Field Separator ). Par exemple, le rsultat de la commande ls dans la commande suivante : echo `ls` est une chane de caractres contenant la liste des 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. 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. 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 Unix de fichiers. Les caractres * et ? auront donc le comportement que l'on a dj dcrit dans la la section intitule Notions de chemins sous Unix. 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 la section intitule Les expressions rgulires. Sauf paramtrage pour indiquer explicitement de faire le contraire, le shell ignore systmatiquement les rpertoires . et .. dans les substitutions. Cela est trs important. En
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 87

M. Elie Degny Raphael

effet, une commande utilisant le caractre gnrique * ne s'appliquera pas sur le rpertoire courant et le rpertoire pre par dfaut. 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 ! Les expressions rgulires 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 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. Le langage des expressions rgulires est relativement compliqu, mais extrmement puissant. Ce langage permet d'identifier avec prcision des sous-chanes de caractres dans une chane de caractres l'aide des parties variables des expressions rgulires, et permet ventuellement de remplacer ces sous-chanes par des chanes de substitutions. Malheureusement, la description des expressions rgulires pourrait prendre plusieurs pages, aussi ne verrons-nous ici que expressions utilisables dans les substitutions du shell bash. Comme vous 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 rgulires, il constitue la partie variable principale de ces expressions. De la mme manire, le caractre '?' reprsente un et un seul caractre quelconque. Ce caractre sera donc utilis quand on dsirera contrler la taille de la partie variable d'une expression rgulire, 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'.
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 88

M. Elie Degny Raphael

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 rgulires 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. 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. Les instructions composes Dans le langage du shell, une instruction se termine soit par un retour la ligne (non prcd d'un antislash), soit d'un point-virgule. Les instructions peuvent tre pourtant trs complexes, car elles peuvent contenir des pipes et des redirections. En fait, une instruction peut peu prs tre dfinie comme tant une ligne de commande normale du shell. 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'instruction 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 89

M. Elie Degny Raphael

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 : rm *.txt 2> /dev/null || echo "Aucun fichier supprimer" 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 tels fichiers. 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 pipe. C'est ce que faisait l'exemple de dplacement de toute une arborescence dans la la section intitule Syntaxe des pipes. 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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

90

M. Elie Degny Raphael

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 caractre, on utilisera la syntaxe suivante : if [ $variable == valeur ] ; then action fi Notez que dans cette syntaxe, le test effectu est une commande complte. Cela implique 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 chanes de caractres. Par exemple, le test suivant : if [ -1 \< -2 ] ; then echo "-1 est plus petit que -2" 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 lt et gt respectivement pour les tests

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

91

M. Elie Degny Raphael

d'infriorit stricte et de supriorit stricte, et les options le 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 la section intitule Les instructions composes 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 [nest 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 des formes plus complexes 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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

92

M. Elie Degny Raphael

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 celui dcrit ci-dessus, qui, 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 exit 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 sa nature et ses attributs, en passant par son propritaire et son groupe. La syntaxe gnrale de ces tests est la suivante : if [ option fichier ] ; then &vellip; 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 -e -d -f -s -L -b -c -p -r Signification Test d'existence d'un fichier ou d'un rpertoire. Test d'existence d'un rpertoire. Test d'existence d'un fichier normal. Test d'existence d'un fichier et vrification que sa taille est non nulle. Test d'existence d'un lien symbolique. Test d'existence d'un fichier spcial de priphrique de type block (disque dur, CD-ROM, lecteur de cassettes, etc.). Test d'existence d'un fichier spcial de priphrique de type caractre (port srie, port parallle, carte son...). Test d'existence d'un pipe. Test d'existence du fichier et d'accessibilit en lecture de ce fichier.
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 93

M. Elie Degny Raphael

Option -w -x -g -u -k -O -G -N

Signification Test d'existence du fichier et d'accessibilit en criture de ce fichier Test d'existence du fichier et de possibilit d'excution de ce fichier. Test d'existence du fichier et de prsence du bit setgid sur ce fichier. Test d'existence du fichier et de prsence du bit setuid sur ce fichier Test d'existence du fichier et de prsence du bit sticky sur ce fichier. Test d'existence du fichier et d'appartenance de ce fichier l'utilisateur effectif courant. Test d'existence du fichier et d'appartenance de ce fichier au groupe effectif courant. 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 effectif en relisant la la section intitule Scurit et utilisateurs dans Chapitre 3. La commande [accepte galement les options -nt et -ot, 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 &vellip; fi o fichier1 et fichier2 sont les deux fichiers sur lesquels la comparaison doit porter, et option est l'une des options -nt ou -ot. 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 ;;
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 94

M. Elie Degny Raphael

&vellip; 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 comprim avec gzip" ;; ( *.tar ) echo "$i est une archive" ;; esac 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. 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.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

95

M. Elie Degny Raphael

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 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. 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 fonctions. Nous verrons plus loin comment raliser des fonctions et des scripts, ainsi que la manire de rcuprer leurs paramtres. 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.
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 96

M. Elie Degny Raphael

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 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 } 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 :
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 97

M. Elie Degny Raphael

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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

98

M. Elie Degny Raphael

La commande read utilise les sparateurs indiqus dans la variable d'environnement IFS 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 REPLY. 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 REPLY 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 ;;

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

99

M. Elie Degny Raphael

esac done 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 fautes 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 simplifi 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 simplement 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 paramtre. Je vous recommande de consulter cette liste, pour vous donner une ide des alias courants, qui se rvlent gnralement trs utiles. La suppression des alias se fait 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 la section intitule Les scripts shell.
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 100

M. Elie Degny Raphael

Les scripts shell Pour l'instant, toutes les fonctionnalits de bash, aussi puissantes soient-elles, ne constituent que l'interface d'un interprteur de commande 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. 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'excutions. Il contient les diffrentes commandes du shell 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 shells 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 utilisateurs en mode fentr, pilotage d'applications, etc.). Si vous vous y intressez, vous verrez que le sujet est rellement vaste et passionnant.

Chapitre 5. CONFIGURATION DU SYSTEME DE BASE


www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 101

M. Elie Degny Raphael

La configuration du systme de base est un peu moins sensible que son installation. En pratique, les oprations de configuration consisteront manipuler les fichiers de configuration du systme. Les seuls risques que l'on encourt sont de les dtruire, et donc de devoir les recrer manuellement. C'est pour cette raison que nous allons commencer par les sauvegarder, afin de pouvoir revenir l'tape de configuration du systme de base sans repasser par la case dpart. Cela dit, il se peut fort bien que le programme d'installation ou le programme de configuration de votre distribution vous permette d'viter cette tche. Dans ce cas, il vous sera sans doute demand de rpondre quelques questions, et ce programme effectuera les modifications pour vous. Il est d'ailleurs recommand de toujours essayer la configuration du systme avec un tel programme, car lui seul connat les spcificits de votre distribution (puisqu'il est fourni avec !). Malheureusement, ces programmes ne peuvent pas tout prvoir, parce que Linux est un systme capable d'effectuer un nombre de tches trs diversifi 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 le mcanisme gnral d'amorage des systmes Linux et les commandes d'administration les plus importantes. Elle dcrira galement comment ajouter des priphriques additionnels (clavier, souris, cartes son, vido, rseau, imprimante) et comment les configurer pour obtenir un fonctionnement correct sous Linux. Cependant, la premire tape est bien entendu de faire une sauvegarde de tous les fichiers de configuration, car la moindre erreur peut provoquer de lourdes consquences (jusqu' la rinstallation complte du systme). 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 sousrpertoires. 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 que l'on excutera dans la racine du systme de fichiers.
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 102

M. Elie Degny Raphael

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 devrait tre place sur une disquette que l'on conservera en lieu sr. Notion de niveau d'excution La plupart des systmes Unix utilisent la notion de niveaux d'excution. Un niveau d'excution est un mode de fonctionnement dans lequel un certain nombre de services sont accessibles. 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, contrler la partition root). 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-utilisateurs avec rseau sans XWindow, et le niveau d'excution 3 ou 4 correspond au mode multiutilisateur avec login graphique sous XWindow. Les autres niveaux restent votre disposition. Le programme en charge de grer les niveaux d'excution est le programme init . Ce programme est le premier programme lanc par le noyau aprs qu'il a dmarr. Il ne peut pas tre dtruit, et c'est rellement le processus pre de tous les autres dans le systme. Le rle d'init est de rcuprer les processus zombies (c'est--dire les processus qui viennent de se terminer et dont le processus pre s'est termin avant eux) et de grer les changements de niveau d'excution. 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. init utilise le fichier de configuration /etc/inittab. Ce fichier dfinit les niveaux d'excution, le niveau par dfaut dans lequel le systme se place au dmarrage, et les
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 103

M. Elie Degny Raphael

actions qu'init doit prendre 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 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, des scripts de configuration sont appels. 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 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.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

104

M. Elie Degny Raphael

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, comme par exemple restart, pour 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 Notion de fichiers spciaux de priphriques Comme il a dj t expliqu dans les chapitres prcdents, Linux gre tous les priphriques comme des fichiers spciaux. Cela simplifie normment leur utilisation 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 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 utilises simplement par une 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 105

M. Elie Degny Raphael

gestionnaire du priphrique, 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 priphrique. 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. Comme nous le verrons plus tard, c'est par l'intermdiaire de ces codes que le noyau est capable de retrouver le gestionnaire de priphrique 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. La liste des codes majeurs et mineurs dj affects des priphriques est donne dans le fichier /usr/src/linux/Documentation/devices.txt (ce fichier vous donnera donc une ide des priphriques qui peuvent tre ou qui seront grs par Linux). Les fichiers spciaux de priphriques sont tous stocks dans le rpertoire /dev/. En gnral, ce rpertoire contient un grand nombre de fichiers spciaux de priphriques, mme pour des priphriques inexistants sur votre machine. Ces fichiers sont installs automatiquement par les distributions, qui laissent au noyau le soin de signaler que le priphrique est absent lorsqu'un programme tente d'accder une fichier spcial auquel aucun matriel ne correspond. Les fichiers fournis par les distributions sont donc, en thorie, susceptibles de couvrir toutes les gammes de priphriques courants, et vous n'aurez pas toucher au rpertoire /dev/. Cependant, si vous devez crer un fichier spcial de priphrique vous-mme, vous devrez utiliser la commande mknod. Sa syntaxe est relativement simple : mknod fichier type majeur mineur O fichier est le nom du 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. Depuis la version 2.4.0 du noyau, il est galement possible que le rpertoire /dev/ contienne un systme de fichiers virtuel, gr par le noyau. Ce systme de fichiers est peupl automatiquement par le noyau avec les fichiers spciaux de priphriques de tous les priphriques dtects lors de l'initialisation du systme. Cette technique 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 apparaissent dans le rpertoire /dev/, ce qui limine la prsence de tous les fichiers spciaux inutiles.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

106

M. Elie Degny Raphael

Le gros avantage du systme de fichiers virtuel /dev/ est que les fichiers spciaux sont crs par les gestionnaires de priphriques eux-mmes. Cela implique que l'association entre les fichiers spciaux et les gestionnaires de priphriques du noyau qui en ont la charge est directe, et ne ncessite plus d'avoir recours aux codes majeurs et mineurs. 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. Les fichiers spciaux de priphriques continuent d'avoir des codes majeurs et mineurs bien qu'ils ne soient plus ncessaires, mais les valeurs de ces codes sont attribues dynamiquement de manire unique par le noyau lorsque les gestionnaires de priphriques s'initialisent. Il n'y a donc plus de risques de conflits entre deux priphriques ; 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) ; les performances sont suprieures, puisque la recherche du priphrique associ un fichier spcial de priphrique n'a plus lieu ; la configuration du systme en est simplifie.

Par ailleurs, le systme de fichiers virtuel est beaucoup plus structur que le rpertoire /dev/ classique, car les fichiers spciaux de priphriques sont classs par type et par nature. Ce systme de fichiers constitue donc une image logique et cohrente de l'architecture du matriel de l'ordinateur. Ainsi, la recherche d'un priphrique est beaucoup plus facile. En revanche, les chemins sur les fichiers spciaux de priphriques sont nettement plus longs que les chemins classiques. Par exemple, le fichier spcial de priphrique /dev/hda1 permettant d'accder la premire partition du premier disque IDE sera accessible avec le chemin /dev/ide/host0/bus0/target0/lun0/part1 dans le systme de fichiers virtuel. Ce changement dans la structure du rpertoire /dev/ est un changement de taille, propre empcher la plupart des applications systme de fonctionner normalement. C'est pour rsoudre ce problme que le dmon devfsd a t crit. Ce dmon, s'il est lanc juste aprs que le systme de fichiers virtuel a t cr (donc, en pratique, dans les premiers scripts de dmarrage du systme), surveille la cration des fichiers spciaux de priphriques dans le systme de fichiers virtuel et permet ainsi d'effectuer des actions spcifiques lorsqu'un gestionnaire de priphrique s'enregistre ou se dcharge du niveau. Les actions effectuer sont spcifies dans le fichier de configuration /etc/devfsd.conf. Par dfaut, le dmon devfsd cre des liens symboliques portant les noms des anciens fichiers spciaux de priphrique vers les fichiers du systme de fichiers virtuel. Ainsi, les anciennes applications peuvent continuer utiliser les anciens noms de fichiers spciaux pour accder aux priphriques. La suite de ce document utilisera donc les noms de fichiers spciaux de priphriques classiques. Vous devrez faire la transcription pour toutes les commandes manipulant les priphriques si vous utilisez le systme de fichiers virtuel avec sa nouvelle structure.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

107

M. Elie Degny Raphael

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 . Mme si votre distribution utilise le systme de fichiers virtuel /dev/, il se peut que vous ayez crer des fichiers spciaux manuellement. Cela peut tre ncessaire pour crer un fichier spcial de priphrique pour un gestionnaire qui ne gre pas encore le systme de fichier virtuel /dev/. La syntaxe utiliser est strictement la mme que dans le cas des fichiers spciaux classiques. Je vous invite consulter la page de manuel de la commande mknod si vous devez crer vous-mme un fichier spcial de priphrique. Ce ne sera normalement pas ncessaire. Vous pouvez galement obtenir de plus amples informations sur le dmon devfsd et son fichier de configuration dans la page de manuel devfsd. Configuration de LILO L'installation de LILO est quasiment un passage oblig sur les ordinateurs utilisant Linux, car c'est l'un des gestionnaires d'amorage les plus puissants. Il permet de dmarrer Linux comme tout autre systme d'exploitation trs simplement, en donnant le nom du systme lancer lors de l'amorage. Il est bien entendu possible de lancer un systme par dfaut, et de donner un temps d'attente avant de choisir cette option si l'utilisateur n'a rien saisi. LILO est constitu de deux parties. La premire partie peut s'installer sur le secteur principal d'amorage du disque dur ( MBR ), 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 Linux, afin d'viter qu'elle ne soit crase par le DOS ou par Windows. La deuxime partie est enregistre directement dans la partition Linux. Elle contient les informations ncessaires pour pouvoir charger les diffrents systmes d'exploitation grs. Bien entendu, la premire partie est capable de retrouver directement la deuxime sur le disque dur, 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. Ce fichier contient la description des diffrents systmes d'exploitation que LILO doit proposer au dmarrage. Les options les plus importantes de ce fichier sont les suivantes : l'option boot, qui permet d'indiquer sur quel secteur d'amorage LILO doit s'installer. Cette option suit la syntaxe suivante :

boot = destination

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

108

M. Elie Degny Raphael

O destination est le fichier spcial du priphrique sur lequel LILO va s'installer. Ainsi, si l'on prcise /dev/hda, LILO va s'installer sur le MBR du premier disque du premier contrleur de disques IDE. De mme, /dev/hda3 demande LILO de s'installer sur le secteur de boot de la troisime partition de ce mme disque ; l'option read-only permet de demander au noyau de monter la partition root en lecture seule lors du dmarrage. Cette option est ncessaire pour que les scripts de dmarrage du systme puissent effectuer les vrifications du systme de fichier de cette partition si ncessaire. La partition sera remonte en lecture et en criture une fois ces vrifications ralises ; l'option prompt 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 ; l'option timeout 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 secondes attendre avant le lancement du systme. 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 root 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 systme DOS (ou Windows 9x), vous pouvez utiliser le modle suivant : other = partition table = disque label = nom

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

109

M. Elie Degny Raphael

O partition est la partition o se trouve le systme DOS lancer, disque est le disque contenant la table des partitions utilise par ce systme, et nom est le nom de cette configuration. Vous pouvez vous inspirer de l'exemple fourni ci-dessous : other = /dev/hda1 table = /dev/hda label = dos Qui permet de lancer le systme situ sur la premire partition du premier disque IDE. L'exemple donn ci-dessous permet de donner la possibilit de charger Linux ou le DOS, en lanant Linux par dfaut au bout de 10 secondes. Le DOS est install sur la premire partition, et Linux utilise la deuxime et la troisime partition respectivement pour y stocker son noyau et sa partition racine. LILO est ici install sur la partition contenant le noyau de Linux : # Exemple /etc/lilo.conf : de fichier de configuration

# Options gnrales : boot = /dev/hda2 read-only prompt timeout=100 # Premire configuration (Linux) : image = /dev/hda2 root = /dev/hda3 label = linux # Deuxime configuration (DOS) : other = /dev/hda1 table = /dev/hda label = dos Remarquez que si l'on utilise /dev/hda la place de /dev/hda2 aprs l'option boot, LILO s'installera sur le MBR du disque et non pas sur le secteur de boot de Linux. Dans ce cas, vous prendrez des risques si vous rinstallez le systme DOS, car celui-ci crasera le MBR de votre disque, supprimant ainsi LILO. Si vous dsirez poursuivre dans cette voie (ce qui peut tre ncessaire si Linux est install sur un disque esclave par exemple), vous pouvez raliser une sauvegarde de votre MBR l'aide de la commande suivante : dd if=/dev/hda of=fichier bs=512 count=1 O fichier est le nom du fichier devant recevoir l'image du MBR. La restauration de votre MBR pourra alors tre effectue simplement avec la commande inverse : dd if=fichier of=/dev/hda bs=512 count=1

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

110

M. Elie Degny Raphael

Note : ATTENTION ! Cette dernire commande crit de manire directe le contenu du fichier sur les secteurs du disque dur ! La moindre erreur peut donc provoquer l'crasement TOTAL de votre disque dur par des donnes alatoires, ou, dans le meilleur des cas, la perte de toutes vos partitions. Fates donc extrmement attention ce que vous tapez et relisez trois fois, non, quatre, la page de manuel de la commande dd avant d'excuter cette commande... 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 Si lilo signale une erreur, il vaut mieux ne pas insister et corriger le fichier lilo.conf. Lorsque la machine dmarre, LILO affiche son invite de dmarrage : LILO boot: Il attend ici que vous indiquiez le nom du systme que vous dsirez dmarrer. Attention, le clavier est ici en amricain, et la disposition des touches est donc QWERTY. Vous devez ici taper le nom du systme charger et valider : LILO boot:linux Si vous ne tapez rien, et que vous avez donn un dlai d'attente dans le fichier de configuration de LILO, la premire configuration sera lance automatiquement aprs ce dlai. Il est possible de spcifier des paramtres de dmarrage la suite du nom du systme utilis. 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 la 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. Par exemple, si votre ordinateur dispose de 128 Mo de mmoire, vous devrez taper la ligne de paramtres suivante au dmarrage : LILO boot:linux mem=128M Bien entendu, il est possible d'enregistrer ces paramtres dans le fichier de configuration de LILO. 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 cidessus pourrait tre remplace par celle-ci sur une machine disposant de 128 Mo de mmoire : # Premire configuration (Linux) : image = /dev/hda2
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 111

M. Elie Degny Raphael

root = /dev/hda3 label = linux append="mem=128M" 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 pour dmarrer Linux dans le niveau d'excution niveau. Ainsi, pour passer en mode mono-utilisateur (c'est--dire le mode de maintenance), il suffit de taper la commande suivante l'amorage de LILO : LILO boot:linux 1 Il est galement possible d'utiliser le paramtre single, qui est synonyme du niveau d'excution 1. Gestion des systmes de fichiers La gestion des systmes de fichiers par Linux est extrmement volue, car il est capable de prendre en charge plusieurs types de systmes de fichiers diffrents. Ces systmes de fichiers doivent subir l'opration de montage avant de pouvoir tre utiliss. Le montage est l'opration qui consiste associer un rpertoire au point d'entre d'un systme de fichiers. Les donnes de ce systme sont alors accessibles partir de ce rpertoire. L'opration de montage permet de raliser une abstraction du support des systmes de fichiers, qui peuvent donc se trouver aussi bien sur disque qu'en mmoire ou que sur un rseau, mais peut se rvler ennuyante pour les systmes de fichiers couramment utiliss. C'est pour cette raison qu'il existe un mcanisme de montage automatique pour les systmes de fichiers les plus utiliss. Cette section vous prsentera les oprations de base sur les systmes de fichiers sur disque, car ce sont les plus courants. Vous y trouverez la description de la manire de paramtrer les disques durs IDE, de vrifier un systme de fichiers et de monter automatiquement les systmes de fichiers les plus utiliss au dmarrage du systme. La description des systmes de fichiers rseau sera donne dans le chapitre traitant de la configuration rseau.
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 disque, obligeant ainsi le systme consacrer une part importante des ressources processeur uniquement pour les accs disque. Inversement, les priphriques SCSI sont capables de communiquer entre eux sur leur bus, dchargeant ainsi le processeur de ce travail de transfert des donnes.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

112

M. Elie Degny Raphael

Pour rsoudre ce problme, les contrleurs IDE disposent prsent d'un mode de fonctionnement particulier, le mode DMA (abrviation de l'anglais Direct Memory Access ), qui leur permet d'accder directement aux donnes dans la mmoire centrale de l'ordinateur. Ainsi, le processeur n'a plus qu' envoyer les commandes de lecture et d'criture, et peut s'occuper d'autre chose pendant que le disque travaille. Ce mode existe depuis les tous dbuts de l'architecture PC, mais les premiers contrleurs DMA n'taient pas capable 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 disques durs IDE ont prsent rduit l'cart avec les disques SCSI au niveau du taux de transfert des donnes, ils ne disposent toujours pas d'une fonctionnalit extrmement utile pour les systmes d'exploitation multitches : la possibilit de mmoriser plusieurs commandes d'affiles pour les excuter sans intervention du processeur. Grce cette fonctionnalit, les disques SCSI ont un taux d'occupation du processeur nettement moindre, et permettent aux systmes tels que Linux d'atteindre un degr de ractivit ingal avec les disques IDE classiques. Par dfaut, Linux utilise les disques durs en mode de compatibilit, c'est dire qu'il n'active pas l'Ultra DMA pour les accs aux disques. Les performances du systme en sont donc grandement rduites au niveau des accs disques. Ceci se remarque particulirement lors des gros transferts de donnes, car le cache disque gr par Linux peut ne plus tre suffisant pour acclrer les oprations destination du disque. Notez cependant que pour une utilisation courante, les mcanismes de cache du systme sont tellement puissants que vous ne pourriez dtecter aucun dsagrment (j'ai par exemple pu travailler pendant plus de quatre mois sur ma machine avant de m'apercevoir que mes disques taient mal configurs). Toutefois, puisqu'on peut faire mieux, autant configurer correctement les contrleurs IDE... Les contrleurs IDE peuvent tre configurs grce l'utilitaire hdparm. Comme son nom l'indique, cet utilitaire permet de modifier les paramtres des disques dur 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 soussystme 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 3 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 encore aller bien au del.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

113

M. Elie Degny Raphael

Faites bien attention ne pas utiliser l'option -T la place de l'option -t. En effet, vous mesureriez le dbit dans le sous-systme disque complet de Linux, avec ses mcanismes de cache. Vous obtiendriez alors des taux de transfert nettement plus grands (dix fois plus au moins), qui ne reprsenteraient pas le taux de transfert rel de votre disque dur. L'activation de l'UltraDMA avec hdparm se fait simplement avec l'option -d. Cette option prend en paramtre un entier pouvant valoir 0 ou 1, selon que l'UltraDMA doit tre activ ou non. Cependant, cette option peut ne pas tre suffisante pour les disques modernes, pour lesquels il faut 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 luimme 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). Le choix des modes de fonctionnement dpend bien entendu du matriel install sur votre ordinateur. Cependant, la ligne de commande de l'exemple prcdent conviendra dans la plupart des cas. Note : Pour que l'UltraDMA soit utilisable, il faut bien entendu que les drivers IDE de votre noyau Linux le grent. Gnralement, les noyaux des distributions en sont capables, mais si d'aventure ce n'tait pas le cas, vous devriez recompiler votre noyau. La manire de procder est dcrite en dtail dans le Chapitre 9. Sachez cependant que les options activer sont les suivantes :

Generic PCI IDE chipset support du menu IDE, ATA and ATAPI Block devices ; Generic PCI bus-master DMA support ; Use PCI DMA by default when available .

Vous devrez galement activer le support pour les jeux de composants utiliss par votre carte mre. L'utilitaire hdparm permet galement de fixer d'autres paramtres des contrleurs IDE. En particulier, il est possible 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 0 ou 1 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.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

114

M. Elie Degny Raphael

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 -k1 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 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.
Vrication 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, les systmes de fichiers sont dmonts et ils sont 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. Enfin, si un systme de fichiers n'est pas dmont correctement avant l'arrt du systme, celui-ci effectuera automatiquement une vrification de ce systme de fichiers au dmarrage suivant, ce qui fait qu'il n'y a pas lieu de le faire soi-mme. 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 marche.
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 115

M. Elie Degny Raphael

Un systme de fichiers ne se manipule que lorsqu'il est dmont. Cela pose videmment quelques problmes pour le systme de fichiers root, 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 root 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 la partition root en criture. Pour cela, il suffit de taper la commande suivante : init 1 Qui fait passer le systme dans le niveau d'excution 1. On peut galement passer le paramtre single au noyau lors de l'amorage du systme, comme il l'a t expliqu dans le paragraphe prcdent. Ensuite, il faut remonter la partition root en lecture seule, ce qui se fait avec la commande suivante : mount -n -o remount,ro / L'option remount permet de dmonter et de remonter la partition racine, et l'option ro indique qu'elle doit tre remonte 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 la partition, parce qu'elle sera alors en lecture seule et qu'il ne pourra pas y parvenir. Ce fichier est utilis par mount pour mmoriser les partitions qui sont montes, afin de pouvoir en donner la liste (ce que 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. Lorsque la partition root sera monte en lecture seule, on pourra utiliser le programme fsck afin de vrifier, et ventuellement rparer, la partition root. En ralit, ce programme ne fait rien d'autre que d'appeler un programme spcifique pour chaque systme de fichier. Par exemple, pour les systmes de fichiers EXT2, fsck appelle le programme e2fsck, qui est capable de vrifier et de rparer ce type de systmes de fichiers. La ligne de commande utiliser pour vrifier la partition racine avec fsck est la suivante : fsck -a priphrique O priphrique est le fichier spcial du priphrique contenant le systme de fichiers vrifier. Il faut donc spcifier la partition sur laquelle le systme de fichier root se trouve. L'option -a demande fsck d'effectuer les ventuelles corrections

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

116

M. Elie Degny Raphael

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. Pour cela, il faut ajouter l'option -A : fsck -a -A La syntaxe du fichier de configuration /etc/fstab sera dcrite dans la section suivante. Il n'est videmment plus ncessaire de spcifier le fichier spcial du priphrique contenant le systme de fichiers vrifier, puisque tous les systmes de fichiers enregistrs dans le fichier /etc/fstab seront vrifis. 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 -l, mais le plus simple est encore de demander e2fsck d'appeler 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.

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 existant ! De manire gnral, 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 /

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

117

M. Elie Degny Raphael 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 ). Configuration du montage des systmes de fichiers

Le montage des systmes de fichiers est une opration assez fastidieuse. Heureusement, elle peut tre automatise pour les systmes de fichiers situs sur les disques fixes, et simplifis pour les systmes de fichiers amovibles. Pour cela, il faut enregistrer ces systmes de fichiers dans le fichier de configuration /etc/fstab. Ce fichier contient une ligne pour chaque systme de fichiers. Ces lignes contiennent 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 quels systmes de fichiers doivent tre sauvegards ; un entier indiquant le rang dans lequel les systmes de fichiers doivent tre vrifis.

Tous les systmes de fichiers disposant de l'option auto 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. Grce ces informations, l'emploi de la commande mount est plus simple : 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 ;

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

118

M. Elie Degny Raphael


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

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. 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 ne pas les monter (c'est le cas notamment du systme de fichiers root). Il en va de mme pour les CD-ROM, car on ne peut bien entendu pas crire dessus. Les options uid et gid permettent de 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. Enfin, l'option mode permet de spcifier les droits d'accs sur tous les fichiers du systme de fichiers monter. L'option umask 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 deux derniers champs de /etc/fstab spcifient des options pour des programmes annexes. L'avant-dernier contrle le comportement du programme de sauvegarde dump,

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

119

M. Elie Degny Raphael

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 0 0 O partitition 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 fichier 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,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. En revanche, 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 0 0 /dev/pts devpts auto,gid=5,mode=620

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 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 120

M. Elie Degny Raphael

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 communications 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. Enfin, si vous utilisez des priphriques USB, vous pouvez monter le systme de fichiers virtuel /proc/bus/usb/ en ajoutant la ligne suivante dans le fichier fstab : none /proc/bus/usb usbdevfs defaults 0 0 Cette ligne doit tre place aprs celle qui effectue le montage du systme de fichiers virtuel /proc/. 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 18,6 fois par seconde, ce qui donne pour la plus petite unit de temps mesurable environ 1/20 de seconde. La deuxime horloge est 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 le 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 64 bits sa taille. Cela tant,
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 121

M. Elie Degny Raphael

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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

122

M. Elie Degny Raphael

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 librairie 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 paramtre, 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 : 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 123

M. Elie Degny Raphael

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 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 124

M. Elie Degny Raphael

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 intresss 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. Configuration du lancement automatique des tches Il est possible de dclencher l'excution de certaines oprations intervalle rgulier 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.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

125

M. Elie Degny Raphael

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) ; le mois (comprise entre 0 et 12, ou indiqu par les trois premires lettres du nom du mois en anglais) ; le jour dans la semaine (compris entre 0 et 7, ou indiqu par les trois premires lettres du nom du jour en anglais).

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 de 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 sauts de lignes (donc une validation). Ainsi, la commande suivante : rm -i file.txt%y%
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 126

M. Elie Degny Raphael

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. 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 connecte 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 mono utilisateur (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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 127

M. Elie Degny Raphael

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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

128

M. Elie Degny Raphael

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. 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. 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. Configuration de la console

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

129

M. Elie Degny Raphael

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. 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. Initialement, plusieurs manires de raliser cet encodage ont t inventes, mais l'un des standards les plus utilis 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 constitue ce que l'on appelle une page 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.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

130

M. Elie Degny Raphael

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, Windows 1252 sous Windows, ISO 8859-1 et ISO 8859-15 sous Unix. Ces deux dernires constituent la norme actuelle, et sont celles qui doivent tre utilises de prfrence. La norme ISO 8859-1 est galement connue sous le nom latin-1, et la norme ISO 8859-15 sous le nom latin-0. La norme latin-0 est une extension de la latin-1, qui ne prvoyait pas le codage de certains caractres europens (comme le o e dans 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 conforme 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 un, deux ou trois octets selon leur emplacement dans la page de codes Unicode.
Principe Du 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 driver du clavier dans le noyau de Linux, et constituent le dbut du traitement des saisies clavier. Les scancodes permettent normalement de dterminer avec certitude
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 131

M. Elie Degny Raphael

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 d'autre 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 claviers 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 les drivers de claviers. La plupart des claviers courants sont grs et en gnral peu de personnes ont besoin de modifier ce type d'information. Toutefois, afin de permettre l'intgration des claviers futurs, il est possible de complter la table de conversion des scancodes en codes de touches virtuelles. La manipulation des scancodes est une opration relativement complique et peu commode, cause de la complexit des squences de scancodes envoyes par les claviers. 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 code 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, de la touche Entre 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 code 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. Les programmes peuvent 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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

132

M. Elie Degny Raphael

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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

133

M. Elie Degny Raphael

mme nombre de codes. Vous pourrez utiliser l'option -k 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.
Principe du fonctionnement de lcran 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, et ce sont donc les applications qui, en fonction des codes qu'elles lisent sur la console, effectuent une action. Cependant, la majorit de ces actions ncessitent d'afficher des rsultats sur le moniteur. Pour raliser cela, les donnes afficher sont crites dans le fichier spcial de priphrique de la console. Comme nous l'avons dj vu, la console de Linux se comporte comme un terminal local. Cela implique que les applications qui dsirent crire des donnes doivent les envoyer par la ligne de communication via laquelle elles sont connectes ce terminal. Tout comme les scancodes du clavier, les caractres envoys la console par les applications subissent donc le traitement impos par les paramtres de la ligne de communication virtuelle utilise. Bien entendu, ce traitement est encore une fois minimale, 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 driver 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'chappements sont classiquement utiliss pour effectuer des oprations sur la console, comme par exemple le dplacement du curseur, la couleur et les attributs des

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

134

M. Elie Degny Raphael

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 driver 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 code 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 code, 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 code du texte afficher et l'encodage propre de la police. Afin de raliser cette conversion, le driver 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 code les caractres exactement comme 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 conversions :

la premire table permet de faire la conversion entre la page de code 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 code 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 par la console seront utiliss directement pour localiser les caractres dans la police de caractre. Cela ne peut fonctionner que si les applications utilisent le mme encodage que la police de caractres courante. Linux dispose de deux jeux de caractres, nomms respectivement G0 et G1, qui permettent de slectionner la table de conversion utiliser. Par dfaut, ces jeux de caractres pointent respectivement sur la premire et la deuxime table de conversion, mais cela peut tre 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.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

135

M. Elie Degny Raphael

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. 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.
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.
Choix de la police des caractres

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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

136

M. Elie Degny Raphael

Les scancodes sont exprims en hexadcimal, c'est--dire en base 16. Dans cette base, les lettres A F reprsentent les chiffres manquant la base 10, soit les chiffres reprsentant les valeurs 10, 11, 12, 13, 14 et 15. En gnral, le clavier envoie un scancode lors de 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 tendues, ignoraient purement et simplement le code 0xE0. Ainsi, ils confondaient les deux touches CTRL, ce qui est le comportement dsir. 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 suivante est mise : 0xE0 0xC8 ou : 0xE0 0xC8 0xE0 0xAA 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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

137

M. Elie Degny Raphael

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 de voir les correspondances entre scancodes et keycodes. La commande suivante vous donnera la liste de ces correspondances : getkeycodes

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

138

M. Elie Degny Raphael

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 du numro de la colonne dans laquelle se trouve chaque keycode.
Dfinition dun plan du 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 claviers 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 Valeur modification Shift 1 altgr control alt shiftl shiftr ctrll ctrlr 2 4 8 16 32 64 128 Description Touches de passage en majuscule (situes au dessus des touches Ctrl sur les claviers franais). Touche Alt Gr, situe droite de la barre d'espacement. Touches Ctrl, situes aux extrmits infrieures du clavier. Touche Alt, situe gauche de la barre d'espacement. Touche de majuscule de gauche. Touche de majuscule de droite. Touche Ctrl de gauche. Touche Ctrl de droite.
139

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

M. Elie Degny Raphael

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. 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 claviers 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 claviers. 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 toutes les combinaisons de touches imaginables. Le premier symbole est donc le symbole obtenu par appui direct de la touche, le deuxime est celui obtenu par la combinaison Majuscule + Touche, le troisime celui de la combinaison AltGr + Touche, le quatrime par Majuscule + AltGr + Touche, etc. videmment, il est trs fastidieux de 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 :

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

140

M. Elie Degny Raphael

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 combinaison 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 : 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 caractre : \\
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 141

M. Elie Degny Raphael

Ainsi, si l'on veut faire en sorte que la touche F4 affiche la chane de caractre 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 claviers 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 le plan de clavier (il est donc ncessaire que ce symbole soit affect 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 toute pice. 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 claviers sont en gnral stocks dans le rpertoire /usr/lib/kbd/keymap. Pour les claviers de PC franais, je vous conseille tout particulirement le plan de clavier frlatin0.map.gz du sous-rpertoire i386/azerty. Ce plan de clavier permet d'accder
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 142

M. Elie Degny Raphael

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. 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 paramtres 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. 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 -D 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 143

M. Elie Degny Raphael

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=/dev/tty[1-12] for tty in $INITTTY; do setleds -D +num < $tty done Ces lignes appellent la commande setleds sur les terminaux virtuels 1 12. Le deuxime utilitaire est kbdrate. Sa fonction est de 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'attentes spcifis peuvent tre de 250, 500, 750 ou 1000 millisecondes. Les taux de rptition utilisables vont de 2 30 caractres par seconde. Les claviers ne peuvent pas accepter toutes les valeurs intermdiaires pour le taux de rptition. Vous trouverez la liste exhaustive des valeurs admissibles dans la page de manuel kbdrate.
Choix de la police des 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 code 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-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.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

144

M. Elie Degny Raphael

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 donc 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 ou \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 , et enfin signaler la fin de fichier avec un CTRL + D. Faites bien attention 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 premire table de conversion. Vous 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.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

145

M. Elie Degny Raphael

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 : 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.
Configuration de la ligne de communication

La configuration du driver de console ne concerne proprement parler que les plans de clavier et les polices de caractres. Pour les applications, tout se passe comme si elles accdaient une console comme les autres, donc par 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 envoys sous la forme de petits paquets de 5 8 bits, et contrls par d'autres bits ventuellement facultatifs (bit de stop et bit de parit). Il va de soi que toutes les lignes de communications ne sont pas identiques, et qu'un certain nombre de paramtres doivent tre fixs. 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), la gomtrie du terminal (options rows et columns), les caractres de contrle affects un certain nombre d'action relatifs la ligne (comme
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 146

M. Elie Degny Raphael

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), le format des donnes transfres sur la ligne (option parodd pour la parit impaire, option cs8 pour des paquets 8 bits, etc.) et des options de gestion des caractres transfrs (par exemple, echo fait en sorte que tout caractre entrant est immdiatement r-mis sur la console, ce qui permet de voir ce que 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, intr pour le tuer, etc. Remarquez que l'action kill n'a rien voir avec la gestion des signaux des processus. Elle permet simplement d'effacer la ligne courante.
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 driver 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 scrolling, etc. Le malheur, c'est que les codes d'chappement utilisables diffrent selon les diffrents terminaux utiliss. Les terminaux les plus standards sont les terminaux VT100 et VT102 (la console Linux en faut partie). Cependant, les programmes ne peuvent pas savoir a priori quels codes 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 donne de dfinition des terminaux. Cette base de donne contient tous les codes d'chappements 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.
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 147

M. Elie Degny Raphael

Le fichier termcap comprend une ligne pour chaque type de terminal dcrit. Cette ligne est constitue d'un certain nombre de champs, spars par des caractres deux points (':'). Le premier champ de chaque ligne contient la description du terminal que cette ligne dcrit. Les champs suivants sont des 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 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:\
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 148

M. Elie Degny Raphael

: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'chappements associs aux touches du curseur (variable ku, kd, kr et kl respectivement pour les touches haut, bas, droite et gauche). La variable cl donne par exemple de squence 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 sousrpertoires 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 149

M. Elie Degny Raphael

les informations de terminfo cherchent en effet en premier dans le chemin rfrenc par la variable d'environnement TERMINFO, 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\3 61h\260i\316j\\ 331k\277l\3 bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l, clear=\E[H\E[J, cnorm=\E[?25h, cr=^M, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=^J, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, cvvis=\E[? 25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, flash=\E[?5h\E[?5l$<200/>, home=\E[H, hpa=\E[%i %p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J, invis=\E[8m, kb2=\E[G, kbs=\177, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kend=\E[4~, kf1=\E[[A, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~,

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

150

M. Elie Degny Raphael

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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

151

M. Elie Degny Raphael

La liste des noms de terminaux utilisables peut tre obtenue en lisant directement le fichier termcap. En revanche, 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.
Parametrage 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. 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 INPUTRC. 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 INPUTRC 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 : # Active la gestion du huitime bit des caractres
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 152

M. Elie Degny Raphael

# (par exemple pour les caractres accentus) : set meta-flag on set input-meta on set output-meta on set convert-meta off # Dfinit les codes d'chappement touches du curseur : "\e[1~": beginning-of-line "\e[3~": delete-char "\e[4~": end-of-line "\e[5~": history-search-backward "\e[6~": history-search-forward "\e[C": forward-char "\e[D": backward-char "\e[A": previous-history "\e[B": next-history associs aux

# Redfinit les codes d'chappement pour l'mulateur de terminal xterm : $if term=xterm "\e[1~": history-search-backward "\e[4~": set-mark "\e[H": beginning-of-line "\e[F": end-of-line "\eOH": beginning-of-line "\eOF": end-of-line $endif Ce 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. 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 mode 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.
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 153

M. Elie Degny Raphael

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 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 indiques 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 la plupart des fichiers " de configuration. " viter tout pris la compatibilit avec vi, qui est insupportable : set nocompatible " Dfinir les touches du clavier : " Gestion du map ^[OA map ^[[A map ^[OB map ^[[B map ^[OD map ^[[D map ^? map ^H curseur en mode de visualisation : k k j j h h h h
154

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

M. Elie Degny Raphael

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

^[OC ^[[C ^[[2~ ^[[3~ ^[[1~ ^[OH ^[[H ^[[4~ ^[OF ^[[F ^[[5~ ^[[6~ ^[[E ^[[G ^[OE

l l i x 0 0 0 $ $ $ ^B ^F "" "" "" pav numrique en mode de visualisation : : * + + ^M 7 8 9 4 5 6 1 2 3 0 .

" Gestion du map ^[Oo map ^[Oj map ^[Om map ^[Ok map ^[Ol map ^[OM map ^[Ow map ^[Ox map ^[Oy map ^[Ot map ^[Ou map ^[Ov map ^[Oq map ^[Or map ^[Os map ^[Op map ^[On

" Gestion du pav numrique en mode insertion : map! ^[Oo : map! ^[Oj * map! ^[Om map! ^[Ok + map! ^[Ol + map! ^[OM ^M map! ^[Ow 7 map! ^[Ox 8 map! ^[Oy 9 map! ^[Ot 4
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 155

M. Elie Degny Raphael

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

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

5 6 1 2 3 0 .

" 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 " Utiliser la coloration syntaxique pour les principaux langages " de programmation : set background=dark if &t_Co > 1 syntax on endif

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

156

M. Elie Degny Raphael

" Signaler les correspondances accolades et crochets : set showmatch

de

parenthses,

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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

157

M. Elie Degny Raphael

lignes (par exemple dans une commande de recherche), et enfin les variables d'environnements 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. # Exemple de fichier de configuration pour less # Premire section : #command \e[B forw-line \e[A back-line \e[6~ forw-scroll \e[5~ back-scroll \177 back-screen ^H back-screen \e[3~ back-screen \e[2~ visual \e[1~ goto-line \eOH goto-line \e[4~ goto-end \eOF goto-end \eOM forw-line # Deuxime section : #line-edit \177 backspace ^H backspace \e[3~ delete \e[1~ home \eOH home \e[4~ end \eOF end \e[5~ up \e[6~ down \e[2~ insert \e[E insert \e[G insert \eOE insert \eOo insert : \eOj insert * \eOm insert \eOk insert +
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 158

M. Elie Degny Raphael

\eOl \eOM \eOw \eOx \eOy \eOt \eOu \eOv \eOq \eOr \eOs \eOp \eOn

insert + insert insert 7 insert 8 insert 9 insert 4 insert 5 insert 6 insert 1 insert 2 insert 3 insert 0 insert .

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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

159

M. Elie Degny Raphael

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 sries, 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 le Chapitre 9 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. Normalement ce programme est gpm, il 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 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. 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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

160

M. Elie Degny Raphael

la forme de modules. Certains drivers ne fonctionnent que sous la forme de modules, aussi faut-il savoir les manipuler. Les modules peuvent tre chargs manuellement 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 simple : insmod module Ou : modprobe module O module est le nom du module charger. En ralit, la commande modprobe appelle la commande insmod pour chaque module qui doit tre charg, dans l'ordre des dpendances des modules. De cette manire, chaque module peut tre charg sans problme, car toutes les fonctionnalits qu'il utilise sont dj prsentes dans le noyau lors de son chargement. La commande modprobe va chercher ces informations de dpendance 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.def 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 module 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 La plupart des modules penvent prendre un certain nombre d'options lors de leur chargement. Ces options sont en quelque sorte l'quivalent des options que l'on communique au noyau lors du boot, pour prciser par exemple la configuration matrielle utilise. Toutes ces options sont dfinies dans le fichier de configuration/etc/modules.conf. Lors du chargement d'un module, modprobe consulte ce fichier et passe les paramtres indiqus au module charger.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

161

M. Elie Degny Raphael

Les options des modules sont spcifies dans le fichier module.conf l'aide du motcl option, 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 : option module paramtres Par exemple, il est probable que le driver du port parallle soit fourni sous la forme de module avec votre distribution. Cela permet de le charger la demande, et de le configurer pour les diffrentes utilisations possibles d'un port parallle : communication avec une imprimante parallle, ou avec un lecteur ZIP, ou encore avec un lecteur de CD IDE, etc. Sur les ordinateurs de type PC, le nom du module grant le port parallle est parport_pc . Ce module peut prendre des paramtres de chargement permettant d'indiquer le port d'entre/sortie utiliser et la ligne d'interruption utiliser. 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 module.conf : option parport_pc io=0x378 irq=7 Le fichier module.conf permet galement de dfinir des oprations complmentaires qui doivent tre effectues lors du chargement et du dchargement d'un module. Ces oprations sont introduites par les mots-cls pre-install, post-install, pre-remove ou post-remove. Selon le mot-cl utilis, elles sont excutes respectivement avant et aprs le chargement du module, et avant et aprs son dchargement. Ces quatre motscls utilisent tous la mme syntaxe : xxx-install module opration o xxx-install est le mot-cl indiquant les conditions d'application de l'opration, module est le nom du module pour lequel une opration complmentaire doit tre effectue, et opration est la ligne de commande de l'opration en question. Ainsi, si le port parallle est utilis pour accder un priphrique ncessitant une opration d'initialisation quelconque, celle-ci peut tre excute aprs le chargement du module l'aide du mot-cl post-install : post-install parport_pc 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. Dans la plupart des cas, ces options sont facultatives, car modprobe utilise un jeu de valeurs par dfaut qui permettent d'utiliser les modules mme si le fichier de configuration modules.conf est absent. Vous pouvez visualiser ces options en renommant le fichier de configuration modules.conf et en tapant la commande suivante : modprobe -c

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

162

M. Elie Degny Raphael

Cette commande vous permettra galement de recrer un nouveau fichier de configuration si d'aventure vous perdiez celui fourni avec votre distribution. Notez cependant qu'il est recommand d'adapter le fichier de configuration modules.conf afin d'obtenir des performances optimales. Les modifications que nous avons donnes en exemple ci-dessus pour le port parallle permettent par exemple d'viter que le noyau consulte en permanence le port pour savoir s'il est prt recevoir ou fournir de nouvelles donnes pendant les impressions. Le gain de performance peut ainsi atteindre 10% quelle que soit la vitesse du processeur, ce qui est trs loin d'tre ngligeable. Il n'est normalement pas ncessaire d'utiliser ces commandes pour charger les modules. En effet, il est possible de faire en sorte que les modules soient chargs la demande, lorsqu'une de leurs fonctionnalits est demande au niveau du noyau. Pour cela, le noyau utilise lui-mme la commande modprobe pour charger les modules, ce qui assure la gestion correcte des dpendances entre les modules. chaque fois que le noyau a besoin d'une fonctionnalit qui n'est pas encore charge, il effectue une requte modprobe en lui demandant de charger le module manquant. Le nom du module dont le noyau demande le chargement modprobe dpend videmment de la fonctionnalit demande et ne correspond pas forcment un nom de module existant. modprobe doit donc faire la correspondance entre le nom de module demand par le noyau et le nom d'un module rel. C'est encore une fois dans le fichier de configuration /etc/modules.conf que cette correspondance est stocke. Par exemple, lorsque le noyau dsire accder au port parallle, il utilise la commande suivante : Modprobe -k parport_lowlevel O parport_lowlevel est le nom que le noyau utilise pour rfrencer le port parallle. Ce nom est identique quelle que soit la plate-forme sur laquelle le noyau fonctionne, qu'il s'agisse d'un PC, d'un Mac ou d'une station de travail Sun. Sur les ordinateurs dont l'architecture est de type PC, le vritable module utiliser est, comme on l'a vu, parport_pc. Il faut donc donner indiquer l'association entre les noms parport_lowlevel et parport_pc dans le fichier modules.conf. Cette association est ralise par la dfinition d'un certain nombre d'alias de modules rels. Chaque alias est introduit par le mot-cl alias, dont la syntaxe est donne cidessous : 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 le fichier modules.conf, puis elle le charge en mmoire. Pour le port parallle, on aura donc la dfinition suivante dans le fichier modules.conf : alias parport_lowlevel parport_pc

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

163

M. Elie Degny Raphael

L'option -k passe en paramtre modprobe par le noyau n'est quant elle utilise que par le noyau. Elle permet de marquer le module comme tant automatiquement dchargeable, lorsque plus personne n'utilisera ses fonctionnalits. Cette technique permet de minimiser la consommation mmoire du noyau, sur les machines dont les ressources sont trs limites. Les modules qui sont chargs automatiquement par le noyau sont en effet marqus comme tant automatiquement dchargeables, et on peut effectivement les supprimer l'aide de la commande suivante : modprobe -r Cette commande dcharge les modules inutiliss automatiquement, dans l'ordre inverse de leur chargement. Cette commande respecte donc les dpendances entre modules, et seuls les modules inutiliss sont rellement dcharges. Il est recommand de placer cette commande dans le fichier /etc/crontab de votre systme, afin que les modules inutiliss soient dchargs intervalle de temps rgulier. Vous aurez donc sans doute placer une ligne telle que celle-ci : */2 * * * * root modprobe -r Dans votre fichier /etc/crontab. Le dchargement des modules inutiliss aura lieu toutes les deux minutes. 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 sont maintenus dans le fichier de configuration modules.conf. L'inconvnient de cette mthode est en revanche qu'il faut connatre les noms de modules utiliss par le noyau. Ces noms sont assez variables et dpendent de la fonctionnalit demande. Toutefois, les noms utiliss par le noyau peuvent facilement tre dtermins pour les modules grant les fichiers spciaux de priphriques. En effet, il est possible de construire un nom unique pour chaque fichier spcial de priphrique, qui pourra tre utilis par le noyau pour spcifier le module capable de grer les fonctionnalits de ce fichier. La manire de construire ces noms varie selon que le fichier spcial de priphrique accd, et selon qu'il s'agit d'un fichier rel ou d'un fichier du systme de fichiers virtuel /dev/ du noyau. S'il s'agit d'un vrai fichier spcial de priphrique, il est parfaitement identifi par sa nature (disque, priphrique de type caractre, interface rseau...) et ses deux codes majeur et mineur. Le noyau peut donc construire un nom partir de ces informations. Ainsi, pour un fichier spcial de priphrique de type caractre, le nom gnr par le noyau est en gnral de la forme char-major-xxxx . Pour les priphriques de type bloc, il est de la forme block-major-xxxx . Les caractres xxxx identifient le code majeur de ce priphrique, plus rarement son code mineur. Par exemple, pour les cartes son, le nom de module char-major-14 sera utilis, parce que les cartes sons utilisent toutes le code majeur 14. Le code mineur n'est actuellement pas utilis pour les cartes son. Mme si les noms de modules sont toujours construits plus ou moins selon ce schma pour les fichiers spciaux de priphriques rels, il reste difficile de dterminer le nom exact du module associ un fichier spcial de priphrique. Par exemple, nous avons

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

164

M. Elie Degny Raphael

vu que le nom de module utilis pour le port parallle (accessible via le fichier spcial de priphrique /dev/lp0) est parport_lowlevel. De mme, le nom utilis pour les interfaces rseau de type Ethernet est eth0, eth1, etc. Il n'est donc pas toujours vident de savoir quel est le nom que le noyau utilisera. Le plus simple dans ce cas est encore de regarder dans la configuration utilise par modprobe l'aide de son option -c. En revanche, si le fichier spcial de priphrique est un fichier virtuel, le mcanisme de nommage est compltement diffrent. En effet, le systme de fichiers virtuel /dev/ cre les fichiers spciaux de priphriques la demande, lorsque les gestionnaires de priphriques s'enregistrent au niveau du noyau. Il n'est donc pas possible de dterminer les codes majeurs et mineurs des fichiers spciaux de priphriques si les modules qui les grent ne sont pas chargs, parce que ces fichiers n'existent pas encore d'une part, et parce que ces codes sont dtermins dynamiquement et ne sont donc jamais fixes d'autre part. Le chargement des modules la demande est en fait ralis par le dmon devfsd, que nous avons dj dcrit dans la la section intitule Notion de fichiers spciaux de priphriques. Outre la cration des liens symboliques permettant d'accder aux fichiers spciaux de priphriques sous leur nom classique, ce dmon est capable d'effectuer des actions diverses lorsqu'un vnement se produit dans le systme de fichiers virtuel /dev/. Toutes ces actions sont dcrites dans le fichier de configuration /etc/devfsd.conf. En particulier, il est possible d'effectuer une action lorsqu'un programme recherche un fichier spcial de priphrique dans le systme de fichiers, chose que tous les programmes qui utilisent les fichiers spciaux de priphriques font, ne serait-ce que pour pouvoir les ouvrir. C'est lors de cette recherche que le dmon devfsd va demander le chargement du module correspondant au fichier spcial de priphrique demand. Pour que ce mcanisme fonctionne, il faut avant tout l'activer. Cela se fait simplement en ajoutant la ligne suivante dans le fichier devfsd.conf : LOOKUP .* MODLOAD qui signifie que le chargement dynamique de module (action MODLOAD ) doit tre effectue lorsqu'une recherche (vnement LOOKUP ) a lieu dans le systme de fichiers virtuel /dev/, et ce pour n'importe quel nom de fichiers spcial de priphrique (expression rguire .* , qui reprsente n'importe quelle squence de caractres). Bien entendu, les noms de modules utiliss par le dmon devfsd ne peuvent pas se baser sur les codes majeurs et mineurs du fichier spcial de priphrique pour les raisons que l'on a indiqu ci-dessus. Mais pourquoi faire compliqu quand on peut faire simple ? Le dmon devfsd ne s'embarrasse pas de dtails, et demande tout simplement le chargement du module dont le nom est exactement le chemin du fichier spcial de priphrique recherch ! Il suffit donc tout simplement de dfinir les alias correspondant dans le fichier modules.conf pour ventuellement trouver le bon nom de module charger.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

165

M. Elie Degny Raphael

En fait, le dmon devfsd utilise un autre fichier de configuration, le fichier /etc/modules.devfs, afin de simplifier l'criture du fichier modules.conf. Ce fichier lui permet d'associer un ensemble de noms de fichiers spciaux de priphriques un seul module. Par exemple, tous les ports srie d'une machine utilisent, en gnral, le mme gestionnaire, bien qu'ils soient accessibles par l'intermdiaire des fichiers spciaux de priphriques /dev/ttySn, o n est le numro du port srie (0 pour le port COM1, 1 pour le port COM2, etc.). Le fichier modules.devfs regroupe donc tous les noms de modules /dev/ttyS* en un seul nom de module, savoir serial. C'est donc ce nom l qui sera communiqu modprobe pour le chargement du module de gestion des ports srie. De manire gnrale, vous n'aurez pas modifier les fichiers devfsd.conf et modules.devfs, car ceux gnralement fournis avec les distributions conviennent parfaitement. En revanche, vous modifierez certainement le fichier modules.conf. Il s'agit l d'un 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 de modules.conf peut gnrer de nouvelles dpendances entre les modules. Il est donc ncessaire d'excuter la commande depmod -a aprs chaque modification de ce fichier. Configuration des priphriques additionnels 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 ligne 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).

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

166

M. Elie Degny Raphael

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 fix d'un dmarrage l'autre de la machine. Il faut donc que le systme soit ou capable de rcuprer ces 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 plusieurs lignes d'interruptions 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 (si vous avez le choix, prenez systmatiquement des priphriques PCI). Ne croyez pas pour autant que le bus PCI soit idal, c'est loin d'tre le cas. En effet, il ne permet pas 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 appel disparatre sous peu lui-aussi. Les priphriques PCI sont les plus courants actuellement. Le sous-systme PCI de Linux permet de les utiliser directement, sans configuration particulire. Les priphriques ISA, en revanche, peuvent tre plus difficile 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/modules.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. La compilation du noyau sera dcrite en dtail dans le Chapitre 9. Les cartes ISA Plug and Play constituent un cas part, car, comme il l'a t dit ci-dessus, la plupart des BIOS Plug and Play est bogu 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, leur attribuera les paramtres matriels adquats, et communiquera ces paramtres aux gestionnaires de priphriques. Il prendra galement en charge la gestion des conflits avec les autres priphriques, qu'ils
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 167

M. Elie Degny Raphael

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/modules.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 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, elle peut tre ralise 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 canaux DMA n'existent 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)

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

168

M. Elie Degny Raphael

la fin des diffrentes options de configuration pour chaque carte correctement configure, faute de quoi celle-ci 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/modules.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 priphrique que vous configurez, ou en regardant directement dans le rpertoire d'installation des modules /lib/modules/ ; ajouter ventuellement la ligne options module paramtres permettant de spcifier les paramtres de chargement paramtres pour le module module ; ajouter ventuellement les lignes pre-install , post-install , preremove et post-remove permettant d'effectuer des actions complmentaires avant et aprs le chargement du module, ainsi qu'avant et aprs son dchargement.

Comme il l'a t indiqu dans la la section intitule Modules du noyau, la dtermination des noms de modules utiliss par le noyau pour les requtes de chargement automatique n'est pas facile. Si vous utilisez le systme de fichiers virtuel /dev/, ce nom est exactement le chemin complet du fichier spcial de priphrique. En revanche, si vous utilisez les fichiers spciaux de priphriques classiques, 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 du fichiers. Le caractre 'c' indique que le priphrique est un priphrique de type caractre, et le caractre 'b' indique qu'il

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

169

M. Elie Degny Raphael

s'agit d'un priphrique de type bloc. Les numros de codes majeurs et mineurs quant eux sont indiqus juste aprs les informations concernant le propritaire et le groupe du fichier, gnralement gaux root ; Dans tous les cas, il est fortement recommand de lire la documentation du module grant votre priphrique Plug and Play. Cette documentation est en gnral situe dans le rpertoire /usr/src/linux/Documentation/. 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. Configuration des cartes son 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. De plus, les fonctionnalits fournies par les gestionnaires de son de Linux varient dans de larges proportions, selon le matriel utilis. En particulier, toutes les cartes son ne sont pas capables de grer la restitution des fichiers MIDI, et celles qui le grent ncessitent une configuration particulire. Cependant, il est possible d'utiliser un convertisseur logiciel de fichiers MIDI en fichiers son classique afin de jouer ce type de fichiers mme avec une carte son classique. La premire tape lors de la configuration de votre carte son sera la slection du driver utiliser au niveau du noyau. D'une manire gnrale, la configuration du noyau consiste simplement rpondre des questions concernant le noyau dans un programme de configuration. C'est une opration relativement simple, mais il faut viter de se tromper lors de cette tape cruciale, faute de quoi le noyau ne serait pas fonctionnel ou ne se comporterait pas comme prvu. La configuration du noyau est dcrite en dtail dans le Chapitre 9. En ce qui concerne les cartes son, les options de configuration se trouvent dans le menu Sound . Ce menu permet de choisir les drivers utiliser en fonction du matriel install. Ils sont classs en deux catgories : les drivers classiques (premire partie des
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 170

M. Elie Degny Raphael

options du menu) et les drivers OSS (options du sous-menu OSS sound modules ). OSS ( Open Sound System ) est une spcification d'interface de programmation permettant l'accs aux cartes son. Cette interface est en passe de devenir le standard dans le monde Unix. C'est un produit commercial, mais l'interface en soi est libre de droits et une implmentation libre en est fournie dans le noyau de Linux. Vous devez ici choisir le driver qui convient le mieux votre matriel. Si vous avez le choix entre les drivers classiques et les drivers OSS, choisissez les drivers OSS car ils sont plus standards et vous n'aurez aucun problme utiliser votre carte son avec la plupart des logiciels. L'erreur la plus classique que l'on peut faire ici 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 driver de la carte son. Par consquent, il vous faut savoir exactement de quel nature est votre carte son, et non ce que vous avez retenu des arguments commerciaux du fabricant. Notez en particulier que certaines cartes Sound Blaster ne sont pas compatibles Sound Blaster (Creative Labs est renomm en ce qui concerne les incompatibilits entre les diffrents modles de cartes son). 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 march). En conclusion, si vous ne voulez pas essayer plusieurs drivers et recompiler le noyau jusqu' ce que vous trouviez le bon, renseignez-vous bien sur la nature de votre carte son (si possible avant de 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 gnrs par le noyau lors de son amorage. Lorsque vous aurez choisi le driver adquat, vous aurez le choix entre le compiler l'intrieur du noyau (en choisissant l'option 'Y' pour ce driver) ou le compiler sous forme de module (en choisissant l'option 'M'). En pratique, il est plus simple de compiler les drivers l'intrieur du noyau pour les cartes PCI et les cartes ISA Plug and Play. En effet, Linux attribuera automatiquement les lignes d'interruptions, les portes d'entre/sortie et les canaux d'accs direct la mmoire pour ce type de matriel. Cette configuration n'est donc pas faire, et votre carte son fonctionnera immdiatement sans problmes. C'est gnralement galement le bon choix pour les vielles cartes sons ISA qui ne sont pas Plug and Play. En effet, pour ces cartes sons, la configuration logicielle est trs simple, puisqu'on ne peut pas les configurer du tout. Bien entendu, il faut que vous ayez rsolu manuellement les conflits possibles de matriel de votre ordinateur, mais cela ne concerne pas Linux. Pour ces cartes, il faut bien entendu indiquer au noyau les paramtres matriels (IRQ, DMA et ports d'entre/sortie) lors de la configuration.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

171

M. Elie Degny Raphael

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 les modules du noyau, et les options matrielles seront indiques dans le fichier de configuration /etc/modules.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. 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). Vous ne pourrez cependant pas lire les fichiers MIDI sans raliser les oprations dcrites ci-dessous. 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 des fichiers son classiques ou des 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 patches , et ils peuvent tre enregistrs soit en dur dans la mmoire de la carte son, soit chargs lors de son initialisation. Il va de soi que certaines cartes son ne disposent pas des fonctionnalits ncessaires la lecture des fichiers MIDI. Dans ce cas, il faut utiliser un programme externe capable de synthtiser le son partir de patches enregistrs sur le disque dur et d'envoyer les donnes audio ainsi cres la carte son pour la lecture. Pour les cartes son qui ne disposent pas des patches en mmoire morte, il est ncessaire d'utiliser un programme afin de les charger dans la mmoire de la carte. Il va de soi que ce programme est spcifique la carte son et doit tre install. Par exemple, pour les cartes Sound Blaster AWE, ce programme se nomme sfxload. Son utilisation requiert un fichier de dfinition des patches, fichier 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 awe_wave qui gre la lecture des fichiers midi. Vous trouverez ci-dessous un exemple d'options du fichier /etc/conf.modules permettant le chargement correct des modules d'une carte son Sound Blaster AWE : # Chargement des modules de son :

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

172

M. Elie Degny Raphael

alias char-major-14 sb options sb io=0x220 irq=5 mpu_io=0x330 options adlib_card io=0x388

dma=1

dma16=5

# Chargement automatique du module de lecture des fichiers MIDI : post-install sb /sbin/modprobe -k midi alias midi awe_wave # Chargement des patches en mmoire : post-install awe_wave /usr/local/bin/sfxload /usr/lib/synthgm.sbk Pour les cartes son ne disposant pas de la possibilit de lire les fichiers MIDI, il ne reste que la solution de l'mulation logicielle. Vous pourrez dans ce cas recourir l'mulateur SoftOSS fourni avec les drivers OSS ou un autre programme trs utilis nomm Timidity . SoftOSS a l'avantage d'tre intgr au drivers OSS, mais souffre de deux inconvnients. Premirement, il n'est disponible qu'avec ces drivers, et deuximement, il consomme beaucoup de mmoire du noyau pour charger les patches. Timidity en revanche n'est pas intgr au noyau, et n'utilise par consquent pas la mmoire systme. De plus, la mmoire consomme par les patches est dcharge ds que Timidity se termine. Enfin, le moteur de Timidity est utilis par d'autres programmes externes, et en particulier par le lecteur KMidi de KDE. En raison de son caractre plus gnral, seule l'installation de Timidity et la configuration de KMidi seront prsentes ci-dessous. 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 cidessous pour compiler et installer Timidity. Timidity peut utiliser diffrentes interfaces utilisateur, accessibles via diffrentes bibliothques. Il est recommand d'utiliser l'interface Tcl/Tk, car cette interface fonctionne aussi bien sous XWindow qu'en mode texte. Pour cela, il suffit de configurer les sources avec la ligne de commande suivante : ./configure --enable-dynamic --enable-tcltk=dynamic Une fois cela fait, vous pourrez gnrer l'excutable avec la commande suivante : make Et l'installer avec la commande :
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 173

M. Elie Degny Raphael

make install Cela installera Timidity dans le rpertoire /usr/local/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, quoique un peu grosse pour un tlchargement. 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/local/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/local/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 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 -ik la ligne de commande prcdente. 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.

Installation d'une carte graphique 3D

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

174

M. Elie Degny Raphael

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 interface 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 en deux endroits sous Linux. La 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. Elle 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 au 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 . 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 XFree86 et par le noyau. En revanche, NVidia fournit un driver 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 XFree86. Quelle que soit votre carte graphique, vous aurez galement sans doute intrt activer le support de l'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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

175

M. Elie Degny Raphael

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 est dcrite en dtail dans le Chapitre 9. 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 modules.conf. La suite des oprations se passe alors au niveau de la configuration du serveur X de XFree86. L'activation du support de l'AGP et d'OpenGL se fait simplement en rajoutant deux options dans le fichier de configuration /etc/X11/XF86Config. Vous devez trouver la section Modules et lui ajouter les deux lignes suivantes : Section "Module" &vellip; Load "dri" Load "glx" &vellip; EndSection Vous trouverez de plus amples renseignements sur la manire de procder dans le Chapitre 10. Note : Pour le driver fourni par NVidia pour XFree86, il 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 est dispose des fonctionnalits 3D. Si ce n'est pas le cas, vous devrez sans doute rinstaller XFree86. Les programmes utilisant OpenGL utilisent souvent une bibliothque complmentaire nomme GLUT. Cette bibliothque est fournie avec la couche d'mulation logicielle d'OpenGL MESA. Bien que MESA soit distribue en standard avec XFree86, 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 avec XFree86. 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 176

M. Elie Degny Raphael

fournir les informations ncessaires la programmation de gestionnaires de priphriques libres voient leur matriel support sous Linux. Par consquent, il est encore une fois ncessaire de bien se renseigner sur la nature du produit et la politique du fabricant lorsque vous achterez une carte d'acquisition TV. En pratique, quasiment toutes les cartes d'acquisition TV utilisent le circuit intgr Bt848 ou un de ses drivs, et Linux sait les grer sans problme. Les cartes d'acquisition et de montage vido utilisent d'autres circuits plus puissants, dont les spcifications sont gnralement non 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/ par les distributions, et vous n'aurez 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 vous aurez peut-tre recompiler vous-mme votre noyau. La manire de procder est dcrite en dtail dans le Chapitre 9. Sachez toutefois que les options valider dans la configuration du noyau se trouvent dans le menu Multimedia devices . Vous devrez activer l'option Video For Linux sous la forme de module, car vous aurez sans doute communiquer des paramtres aux modules vido afin de leur spcifier le type de carte utilis et le type de tuner. Le module qui sera cr portera le nom videodev, c'est celui qui 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 drivers de cartes vido dans le sous-menu Video adapters . 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 bitbanging interfaces du menu I2C support . De mme, le module prenant en charge les puces du type Bt848 ne prend pas en charge la gestion du son. En revanche, vous pourrez trouver le gestionnaire du son de ces cartes avec les autres gestionnaires de cartes son, dans le menu Sound . L'option que vous devez activer est l'option TV card (bt848) mixer support . Une fois le noyau recompil votre noyau et les nouveaux modules installs, il faut modifier le fichier de configuration /etc/modules.conf. Bien que Linux soit parfaitement capable de dterminer les ressources requises par les cartes vido, il est rare que le matriel soit correctement identifi par les gestionnaires de priphriques vido. En effet, ces gestionnaires se basent plus sur les composants courants permettant de faire l'acquisition vido que sur les modles de cartes de chaque fabricant. La palme revient
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 177

M. Elie Degny Raphael

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, l'aide des options de modules dans le fichier modules.conf. En fait, le gestionnaire pour les cartes bases sur la puce Bt848 est constitu de deux modules. Le premier, nomm bttv, gre la puce Bt848 elle-mme et prend en charge les flux vido et l'incrustation vido dans la mmoire de la carte graphique. Le deuxime module quant lui s'occupe de la gestion de la puce du tuner, qui effectue la recherche des chanes et le dcodage des signaux vido. Pour ces deux modules, il est indispensable de prciser quelle type de carte TV est install et quel tuner cette carte utilise. Il existe de nombreuses variantes, selon les modles et les diffrents fabricants prsents sur le march. Le type de carte peut tre communiqu au module bttv 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 du rpertoire /usr/src/linux/Documentation/video4linux/bttv/. Le module de gestion du tuner utilise l'option type pour dterminer le type de tuner utilis. Cette option prend, elle aussi, une valeur numrique indiquant la nature du tuner utilis. Les valeurs supportes sont galement donnes dans le fichier CARDLIST. En pratique, il est fort probable que vous utilisiez le type 3, qui correspond au tuner Philips SECAM, car la France utilise le standard SECAM pour les missions TV. Ainsi, si vous disposez d'une carte MIRO PCTV (carte de type 1) base sur le tuner Philips SECAM, vous devriez avoir les lignes suivantes dans votre fichier modules.conf : # Lien entre les fichiers spciaux de priphriques et les modules du noyau : alias char-major-81 videodev alias char-major-81-0 bttv # Options du module de gestion du Bt848 : options bttv card=1 # Option du module de gestion du tuner : options tuner type=3 Vous devrez bien entendu adapter ces lignes selon votre propre configuration. Note : 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 modules.conf : # Lien pour les fonctionnalits I2C :

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

178

M. Elie Degny Raphael

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. Lorsque vous aurez fini vos modifications dans le fichier de configuration modules.conf, n'oubliez pas d'appeler la commande depmod -a pour remettre jour les dpendances entre les modules du noyau. Si tout se passe bien, vous pourrez utiliser les programmes de lecture TV, comme KWinTV par exemple si vous utilisez l'environnement de bureau KDE. 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 tromps de tuner. Revoyez dans ce cas l'option type du module tuner. Si vous obtenez bien une image, mais pas de son, c'est sans doute que vous vous tes tromps 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 attribuant un groupe d'utilisateurs video, auxquel 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 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 sera prcise dans le chapitre traitant de la configuration du serveur X. Installation d'un graveur de CD-ROM Linux dispose de tous les logiciels permettant de graver des CD-ROM, et ce avec la plupart des graveurs disponibles sur le march. Il permet de copier des CD et de crer des images disques. Cependant, il n'est pas encore possible d'utiliser le gravage par paquet, qui permet d'utiliser les graveurs de CD comme des priphriques amovibles.
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 179

M. Elie Degny Raphael

Cette fonctionnalit est en effet encore l'tude, elle sera sans doute disponible sous peu.
Notion de base sur le gravage de linux

Originellement, tous les graveurs de CD 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 font une belle perce, mais les graveurs SCSI restent incontournables pour les vielles machines dont on n'est pas sr des performances au niveau des disques. Les logiciels de gravage doivent donc tre capable d'utiliser n'importe quel type de graveur, ce qui n'est pas simple. C'est pour cette raison qu'ils utilisent tous l'interface SCSI, aussi bien pour des raisons historiques que pour des raisons techniques. Cela ne signifie pas qu'il est impossible d'utiliser les graveurs ATAPI, car le protocole de communication ATAPI n'est rien d'autre qu'une traduction des commandes IDE en commandes SCSI au niveau matriel. L'utilisation d'un graveur de CD SCSI ne posera donc pas de problmes et se fera de manire directe. En revanche, les graveurs de CD IDE ATAPI devront tre accds par l'intermdiaire d'un mulateur SCSI, qui traduira les commandes SCSI en commandes ATAPI correspondantes. Cet mulateur est gr au niveau du noyau de Linux. Le problme est qu'il est impossible d'activer la fois le support des CD-ROM IDE ATAPI et l'mulateur SCSI pour les priphriques IDE dans un mme noyau. On devra donc faire le choix entre les deux solutions suivantes :

soit on n'utilise que l'interface SCSI pour accder aux lecteurs de CD, et on ne risque aucun conflit ; soit on active les deux fonctionnalits sous la forme de modules, et on n'utilise qu'une seule des interfaces chaque instant.

La premire solution est videmment la plus simple (et surtout la plus sre). La deuxime solution permet d'utiliser ses lecteurs de CD-ROM IDE ATAPI normalement avec leur interface native, sauf lorsqu'on dsire graver un CD. Comme il n'y a pas de cas o l'interface SCSI est infrieure en terme de performances et de fonctionnalits l'interface IDE, cette mthode est dconseille.
Configuration du noyau

Vous allez encore une fois avoir effectuer des choix de configuration dans le noyau pour activer la gestion des priphriques SCSI capables de piloter votre graveur. Les questions concernant les graveurs de CD-ROM sont rcapitules ci-dessous : Include IDE/ATA-2 CDROM support Cette option permet d'activer la gestion des lecteurs de CD IDE ATAPI. Vous ne devez pas rpondre cette question par 'Y', faute de quoi vous ne pourrez pas utiliser votre graveur de CD. Il vous est en revanche possible de rpondre par 'M',
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 180

M. Elie Degny Raphael

pour n'activer la fonctionnalit qu' la demande, sous la forme de module. La rponse recommand est 'N', moins que vous ne sachiez ce que vous faites. En effet, si vous activez cette fonctionnalit, vous risquez d'avoir des conflits avec l'mulation SCSI. Ce problme sera dtaill plus loin. SCSI emulation support Cette option permet d'activer la gestion des priphriques IDE ATAPI par l'intermdiaire de commandes SCSI. C'est cette option qui va vous permettre d'utiliser votre graveur de CD IDE avec les programmes qui ne peuvent grer que des graveurs SCSI. Vous pouvez rpondre 'N' cette question si vous n'utilisez ni lecteur de CDROM SCSI ni graveur SCSI. Dans tous les autres cas, il est recommand de rpondre 'Y' cette question afin d'accder votre matriel via l'interface SCSI. Vous pouvez activer cette fonctionnalit sous la forme de module en rpondant par 'M' cette question, cette solution est recommande si vous avez activ la gestion des CD-ROM IDE ATAPI dans la question prcdente. 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'. SCSI support Cette option permet d'activer la gestion des priphriques SCSI dans votre noyau. Il va de soi qu'il faut l'activer, que l'on dispose d'un graveur SCSI ou IDE. Cette fonctionnalit peut tre active sous forme de module ou non. La rponse recommande est 'Y'. SCSI CD-ROM support Cette option permet d'activer la gestion des lecteurs de CD SCSI. Il faut l'activer, que l'on dispose d'un graveur SCSI ou IDE. Il est impratif d'utiliser les modules si vous avez activ la gestion des lecteurs IDE. Vous pouvez intgrer cette fonctionnalit au noyau sans risque sinon. Cette dernire solution est la mthode recommande, aussi est-il conseill de rpondre 'Y' cette question. Enable vendor-specific extensions (for SCSI CDROM) Cette option permet d'autoriser l'emploi d'extensions au protocole SCSI dfinies par les fabricants de matriels. Certains graveurs utilisent de telles commandes, c'est en particulier le cas des graveurs de CD HP. Toutefois, si vous ne disposez
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 181

M. Elie Degny Raphael

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 le priphrique 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 donc activer cette fonctionnalit, que l'on dispose d'un graveur SCSI ou IDE. La rponse recommande est 'Y'. 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 priphriques 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'. Enfin, il faut choisir le driver bas niveau permettant de grer son graveur de CD. Pour les graveurs IDE ATAPI, la couche d'mulation suffira et il est inutile de slectionner un autre driver. En revanche, pour les graveurs SCSI, il faut choisir le driver appropri. Une fois cette configuration effectue, il ne reste plus qu' compiler le noyau et les modules et les installer. Vous trouverez plus de dtails ce sujet dans le chapitre traitant de la compilation du noyau.
Configuration des modules du noyau

Vous aurez sans doute modifier le fichier de configuration /etc/modules.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 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 modules.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. Cependant, vous aurez ajouter les lignes suivantes si vous utilisez un graveur de CD IDE ATAPI : post-install sr_mod modprobe -k ide-scsi

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

182

M. Elie Degny Raphael

Aprs la ligne indiquant le module charger pour les priphriques blocks de code majeur 11, et : post-install sg modprobe -k ide-scsi Pour les priphriques SCSI gnriques, de code majeur 21. Ces deux lignes permettent de demander au noyau de charger galement le module idescsi lorsque l'un des modules SCSI est charg. Le module ide-scsi est le module qui se charge d'effectuer l'mulation SCSI pour les priphriques IDE ATAPI. Il va de soi que lorsque vous aurez utilis un des fichiers priphriques SCSI, le module ide-scsi sera charg. Vous ne pourrez donc plus utiliser le module ide-cd, qui permet d'accder aux lecteurs IDE par leur interface ATAPI. De mme, si vous montez votre lecteur de CD par l'intermdiaire du fichier spcial de priphrique IDE correspondant, le module ide-cd sera charg. Vous ne pourrez donc plus utiliser le module d'mulation SCSI. La solution est donc, dans ce cas, de dcharger les modules inutiliss l'aide de la commande rmmod. Il est vident que comme vous n'avez pas besoin d'utiliser l'interface IDE de vos lecteurs de CD dans la plupart des cas, le plus simple est simplement de toujours utiliser l'mulation SCSI et ainsi d'viter tout conflit. Dans ce cas, vous pourrez rpondre par 'N' la question Include IDE/ATA-2 CDROM support de la configuration du noyau, surtout si vous ne matrisez pas Linux ou si n'avez pas bien assimil le fonctionnement des modules.
Installation des logiciels de gravage

Lorsque cela aura t ralis, il ne vous reste plus qu' installer les logiciels de gravage. Les logiciels indispensables sont les suivants :

cdrecord, qui permet de piloter le graveur de CD et d'effectuer les tches ncessaires pour le gravage ; mkisofs, qui permet de crer des images disques ISO 9660 ; mkhybrid, qui permet de crer des images disques ISO 9660 avec les extensions Joliet (CD Windows 95), Rock Ridge (CD Unix) ou HFS (CD Macintosh). Ce programme est trs pratique, car les CD ainsi crs pourront tre lus correctement par plusieurs systmes ; cdda2wav, qui permet d'extraire les donnes numriques des CD audio.

Vous pourrez vrifier que votre configuration fonctionne correctement avec la commande suivante : cdrecord -scanbus Cette commande recherche tous les priphriques SCSI du systme. Vous devrez normalement y trouver, en plus de vos autres priphriques SCSI, votre graveur de CD.

Utilisation des logiciels de gravage www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 183

M. Elie Degny Raphael

Nous allons prsent voir les commandes permettant de faire les principales oprations ayant trait au gravage des CD. Bien que ce document soit consacr l'installation de Linux et non son utilisation, elles vous permettront de tester si tout fonctionne correctement. La copie directe d'un CD peut se faire avec la commande suivante : cdrecord -dummy -v dev=bus,ID,lun speed=n -isosize /dev/scdx O bus reprsente le bus SCSI sur lequel le graveur est branch, ID le numro de priphrique du graveur sur ce bus SCSI et lun son numro 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. Le numro d'unit logique est, dans la majorit des cas, 0. Le nombre n doit ici valoir le facteur multiplicateur de la vitesse de gravage. Vous pouvez essayer avec des valeurs faibles pour commencer, afin d'tre sr que tout se passe bien. Le fichier de priphrique /dev/scdx indiqu dans la ligne de commande de cdrecord doit bien entendu tre le fichier de priphrique SCSI 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/scdx of=image o /dev/scdx est le fichier spcial de priphrique SCSI du lecteur utilis pour faire l'image (donc, si vous ne disposez que d'un graveur, c'est le fichier spcial de priphrique SCSI de votre graveur), 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=bus,ID,lun speed=n -data image O les options sont les mmes que dans les commandes prcdentes. Si vous dsirez crer une image disque partir des fichiers de votre disque dur, vous pouvez utiliser mkisofs ou mkhybrid. Le premier programme permet de crer une image disque ISO9660, avec ventuellement les extensions Rock Ridge pour activer les fonctionnalits des systmes de fichiers Unix (noms de fichiers plus longs, liens symboliques, droits...). Le deuxime programme permet de crer des images qui seront lisibles sur plusieurs systmes d'exploitation, en fournissant les extensions Joliet sous Windows 95 et NT (noms de fichiers longs), Rock Ridge sous Unix et HFS sous

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

184

M. Elie Degny Raphael

Macintosh. Le prix payer pour cette amlioration est la perte de quelques centaines de kilo octets, ce qui est drisoire tant donn le gain en portabilit. Les options des deux utilitaires mkisofs et mkhybrid sont similaires. La ligne de commande utiliser pour crer une image disque est la suivante : mkisofs [-r | -R] -V "nom" -o image rpertoires Ou mkhybrid [-r | rpertoires Selon le programme utilis. -R] [-J] [-hfs] -V "nom" -o image

Les options -r ou -R, -J et -hfs permettent respectivement d'utiliser les extensions Rock Ridge, Juliette ou HFS. mkhybrid est capable de prendre plusieurs de ces options simultanment, et de crer des CD hybrides qui fonctionneront sur plusieurs systmes. La distinction entre 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. L'option -o permet de spcifier le nom du fichier image qui doit tre cr. Les paramtres suivants 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 indiqu 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 loopback. Il faut pour cela que vous ayez activ la gestion de ce priphrique dans la configuration du noyau. La commande utiliser pour monter ce type de priphrique est lgrement plus complique que pour les systmes de fichiers classiques : 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, et elle s'utilise alors exactement comme pour les autres systmes de fichiers.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

185

M. Elie Degny Raphael

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] bus,ID,lun -B nom [-tdbut[+fin]] -O wav -D

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 de donnes 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 sons 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 -D permet de spcifier le priphrique SCSI utiliser pour lire les donnes audio. Ce priphrique est slectionn par le numro du bus SCSI sur lequel il se trouve, son numro dans ce bus et son numro d'unit logique. Le gravage des pistes audio peut tre ralis avec la commande suivante : cdrecord -dummy -v dev=bus,ID,lun speed=n -nofix -audio piste1.wav \ 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=bus,ID,lun speed=n -fix Enfin, si vous disposez d'un graveur de CD rinscriptible, vous pourrez utiliser la commande suivante pour effacer un CDRW : cdrecord -dummy -v dev=bus,ID,lun -blank=fast O bus,ID,lun reprsente toujours le priphrique SCSI utiliser en tant que graveur. Il est peu probable que vous ayez utiliser ces commandes directement, car il existe un programme graphique capable de les piloter de manire conviviale. Ce programme se nomme xcdroast, et peut tre rcupr sur Internet si votre distribution ne le comprend pas. Il est vivement recommand de l'installer. Son utilisation est assez lmentaire et ne devrait pas poser de problme particulier.
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 186

M. Elie Degny Raphael

Installation des priphriques USB Bien qu'ayant eu quelques difficults ses dbuts, le port USB est dsormais en pleine volution. 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 ; 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'lctricit.

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 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 fait au niveau du noyau en ce qui concerne les drivers, et au niveau applicatif pour la dtection et la configuration dynamique des priphriques branchs chaud. Linux est capable d'utiliser la plupart des priphriques USB existant actuellement sur le march. La configuration chaud des priphriques en revanche n'est pas encore tout fait finalise, bien que les mcanismes soient tous en place. La configuration et la compilation du noyau seront dcrites en dtail dans le Chapitre 9.
Configuration du noyau

La configuration des priphriques USB se fait, au niveau du noyau, dans le menu USB support . Il faut simplement activer l'option Support for USB , slectionner un gestionnaire pour le port USB et choisir les drivers des diffrents types de priphriques que l'on voudra connecter sur la machine. Il peut tre utile d'activer l'option Preliminary USB device filesystem afin de pouvoir vrifier, dans le rpertoire /proc/bus/usb/ du systme de fichiers virtuel /proc/, que les priphriques USB connects apparaissent bien. Ce systme de fichiers doit tre mont l'aide de la commande suivante : mount -t usbdevfs none /proc/bus/usb pour pouvoir tre utilis. Il est galement possible de le monter automatiquement dans le fichier /dev/fstab. En fait, il existe deux types d'interfaces USB sur le march : l'interface UHCI (abrviation de l'anglais Universal Host Controller Interface ), spcifie par Intel, et
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 187

M. Elie Degny Raphael

que les contrleurs de la plupart des cartes mres utilisent (chipsets Intel et VIA), et l'interface OHCI ( Open Host Controller Interface ), spcifie par Compaq, et qui est utilise par les chipsets Compaq et ALi principalement. Ces deux interfaces sont incompatibles, vous devez donc slectionner l'un des deux drivers UHCI disponibles (options UHCI (Intel PIIX4, VIA, ...) support et UHCI Alternate Driver (JE) support (NEW) )) ou le driver OHCI (option OHCI (Compaq, iMacs, OPTi, SiS, ALi, ...) support . Comme vous pouvez le constater dans le menu de 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. Il existe cependant une exception : 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 en cas de problme dans la configuration du systme. Notez qu'il existe deux types de drivers pour les priphriques d'entre : un driver gnral (option USB Human Interface Device (full HID) support), qui fonctionne avec tous les priphriques d'entre du menu Input core support , et des drivers simplifis (options USB HIDBP Keyboard (basic) support et USB HIDBP Mouse (basic) support ), que l'on utilisera pour raliser des systmes embarqus ou des noyaux lgers. Il est videmment recommand d'utiliser le premier driver, 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).
Dtection automatique des priphriques USB

Nous avons signal ci-dessus que le bus USB permettait l'ajout et la suppression des priphriques USB chaud, c'est--dire ordinateur allum. C'est une nette progression par rapport aux anciens bus, qui n'ont jamais rellement accept ce genre d'opration, tant du point de vue lectrique (ils peuvent tre dtriors) que du point de vue logiciel (le nouveau priphrique n'est pas dtect ou ne peut pas tre configur). Les drivers USB de Linux sont capables de dtecter l'apparition d'un nouveau priphrique sur le bus USB et de rserver les ressources systmes ncessaires son utilisation, mais ils ne peuvent pas faire grand chose de plus. En effet, la configuration d'un nouveau matriel requiert des oprations dpendantes de celui-ci, telles que :

dterminer le driver charger pour grer ce nouveau priphrique ; charger et configurer ce driver ; signaler aux applications clientes l'apparition du priphrique.

Bien entendu, les oprations inverses doivent galement tre effectues lorsqu'un priphrique est dbranch.
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 188

M. Elie Degny Raphael

Sous Linux, toutes ces oprations sont donc ralises par un programme externe au noyau. La gestion des priphriques USB se fait donc comme suit :

un mcanisme de surveillance du bus USB dtecte les apparitions et disparitions des priphriques. Ce mcanisme est souvent implment sous la forme d'un dmon USB ; ce dmon appelle des programmes clients capables de raliser la configuration des nouveaux priphriques. Ces programmes clients sont couramment appels des agents USB .

Il existe deux solutions pour implmenter le dmon USB. La premire solution consiste surveiller le systme de fichiers virtuel /proc/bus/usb/ pour dtecter les apparitions et disparitions des priphriques USB. La deuxime solution est d'implmenter le dmon USB directement au sein du noyau. Cette solution est plus efficace, parce que le dmon fait dans ce cas partie intgrante du noyau et n'a donc pas surveiller le systme de fichiers virtuel /proc/bus/usb/. La suite de ce document dcrit cette mthode, parce qu'elle est la plus aboutie et plus gnrale (elle fonctionne galement avec d'autres priphriques que les priphriques USB). Pour activer le dmon USB du noyau (nomm khubd), il faut simplement valider l'option Support for hot-pluggable devices du menu General setup dans la configuration du noyau. Cette option ajoute galement une entre hotplug dans le rpertoire /proc/sys/kernel/ du systme de fichiers virtuels /proc/ du noyau. Ce fichier contient le chemin sur le programme utilisateur qui sera appel par le dmon USB chaque fois qu'un priphrique sera ajout ou supprim pendant le fonctionnement du systme. Par dfaut, ce chemin rfrence l'utilitaire /sbin/hotplug, mais il est possible d'en indiquer un autre en crivant une nouvelle valeur dans ce fichier. Le programme hotplug est gnralement un script, capable de charger les modules pour la gestion de la plupart des priphriques USB. Il joue donc le rle d'un agent universel. Cependant, il peut aussi excuter des agents utilisateurs, s'ils existent, qui sont situs dans le rpertoire /etc/hotplug/. Pour les priphriques USB, le script appel se nomme usb.agent. En fait, le noyau appelle le script hotplug ds qu'un priphriqe est ajout ou supprim, que ce soit un priphrique USB ou non. Ce mcanisme est donc absolument gnrique, et fonctionne galement pour les cartes PCMCIA, les priphriques PCI connectables chaud, et les interfaces rseau. Les scripts appels par hotplug se nomment alors respectivement usb.agent, pci.agent et net.agent. Le script hotplug fait la distinction entre ces trois classes de priphriques grce au premier paramtre que le noyau lui passe sur sa ligne de commande. Les valeurs de ce paramtres peuvent valoir respectivement usb, pci et net. Les agents ont besoin d'informations complmentaires pour dterminer quel est le priphrique qui vient d'apparatre ou de disparatre. Ces informations sont passes

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

189

M. Elie Degny Raphael

hotplug sous la forme de variables d'environnement, spcifiques chaque classe de priphriques. Pour les priphriques USB, les variables d'environnement dfinies par le noyau sont les suivantes :

ACTION, qui contient la description de l'vnement qui s'est produit pour ce priphrique ; PRODUCT, qui contient les identificateurs du vendeur, du produit et du priphrique pour le priphrique considr ; TYPE, qui contient la classe et la sous-classe du priphrique, ainsi que son protocole de communication ; INTERFACE, qui contient les paramtres de classe, sous-classe et de protocole pour les interfaces, si le priphrique USB est de classe 0.

Si vous avez activ le support du systme de fichiers virtuel USB, les variables suivantes seront galement dfinies :

DEVFS, qui contient le chemin sur la liste des gestionnaires de priphriques USB. Il s'agit normalement du fichier /proc/bus/usb/drivers ; DEVICE, qui contient le chemin sur le fichier spcial de priphrique pour le priphrique USB ;

Enfin, la variable d'environnement PATH est initialise pour rfrencer les rpertoires /sbin/, /bin/, /usr/sbin/ et /usr/bin/, et la variable d'environnement HOME contient le chemin du rpertoire racine. Normalement, le script hotplug et les agents utilisateurs doivent tre fournis avec votre distribution. Cependant, toutes les distributions ne sont pas encore prtes pour le support de l'USB, et vous devrez installer ces scripts vous-mme. Leur rdaction peut tre extrmement technique, je vous recommande donc d'utiliser les scripts disponibles sur le site de l'USB pour Linux. Configuration de l'imprimante Le sous-systme d'impression de Linux est emprunt un autre systme Unix clbre, BSD. Les commandes utilisateurs sont donc les mmes, et son fonctionnement repose sur les mmes principes. En gnral, les imprimantes sont connectes au port parallle de l'ordinateur (sauf les imprimantes professionnelles, qui disposent d'une interface rseau). Il est donc ncessaire que la configuration du port parallle soit correcte. Dans la suite, nous supposerons que l'imprimante est connecte sur le port /dev/lp0 (premier port parallle, soit l'quivalent de LPT1 sous DOS).

Files dimpression

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

190

M. Elie Degny Raphael

Il est possible d'envoyer directement un fichier imprimer l'imprimante, en le recopiant directement sur le fichier spcial de priphrique de l'imprimante. Cette technique peut parfaitement convenir pour un fichier texte simple, mais elle pose quelques problmes. Premirement, elle ne fonctionne qu'avec des fichiers que l'imprimante peut comprendre, donc des fichiers contenant des instructions qui lui sont spcifiques. Mais le problme le plus important est sans doute le fait que cette technique n'est pas utilisable lorsque plusieurs programmes dsirent envoyer un fichier en mme temps l'imprimante. Le sous-systme d'impression utilise donc un mcanisme de files d'attente pour les impressions ( 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 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. 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. D'autre part, le sous-systme d'impression donne la possibilit de spcifier la nature des fichiers imprimer, afin de les traduire dans un langage comprhensible par l'imprimante. Ce travail de conversion est ralis par un ensemble de programmes que l'on appelle les filtres. Un filtre n'est en fait rien d'autre qu'un programme qui reoit un fichier en entre et qui fournit la traduction de ce fichier dans un autre format en sortie. Linux est fourni avec un certain nombre de filtres, qui permettent de grer la plupart des formats de fichiers utiliss. Parmi ces formats de fichiers, il en est un qui est plus important que les autres : PostScript. PostScript est un langage de description de pages invent par Adobe, et que nombre 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. Le problme est que toutes les imprimantes ne comprennent pas forcment le langage PostScript, notamment les imprimantes jet d'encre. Pour ces imprimantes, il faut donc un filtre particulier, capable de convertir le PostScript dans le langage graphique de l'imprimante. Linux 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. La plupart des autres filtres ont donc pour vocation de convertir un fichier en PostScript. L'avantage de cette technique est que toutes les imprimantes apparaissent comme tant
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 191

M. Elie Degny Raphael

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. Comme on le voit, pour Linux, 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.
Commandes dimpression

La commande d'impression sous Linux est la commande lpr (abrviation de l'anglais Laser PRinter ). 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 filtre 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 status 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.
Configuration des files dimpression

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. Toutefois, il est bon de savoir quels sont les mcanismes mis en uvre lors de l'impression d'un document. Nous allons donc nous y intresser brivement dans ce paragraphe. 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. Chaque file est dcrite par une ligne et une seule de ce fichier. Ces lignes sont constitues de
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 192

M. Elie Degny Raphael

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 srie d'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, tf ou vf. Chacune de ces options permet de spcifier la ligne de
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 193

M. Elie Degny Raphael

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, -t 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, les distributions utilisent souvent un filtre gnrique (utilis en tant que filtre par dfaut), qui 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. Malheureusement, ces filtres volus ne sont pas standards, et chaque distribution est susceptible de fournir sa propre version. C'est pour cette raison qu'il est recommand d'utiliser les programmes de configuration fournis par ces distributions pour installer l'imprimante.

Chapitre 6. CONFIGURATION DU RESEAU

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 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. Notions de rseau TCP/IP
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 194

M. Elie Degny Raphael

Gnralits sur les rseaux Un rseau n'est en gnral rien d'autre qu'une interconnexion entre plusieurs machines et 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. En gnral, les paquets contiennent galement l'adresse de la machine source, afin qu'une rponse puisse lui tre envoye. 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 drivers 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.
Le Protocol 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 195

M. Elie Degny Raphael

faut formater et transmettre les informations sur chaque support physique du rseau. Ce genre de dtails est laiss aux drivers rseaux de chaque machine et aux passerelles reliant les divers rseaux physiques. Comme il 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 donc utilises un peu comme les numros de tlphone : le premier octet dfini 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 dfini le numro du sous-rseau dans le super rseau (ces sous-rseaux sont appels rseaux de classe B), le troisime octet dfini 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 on venait manquer de place dans la liste des numros commenant par 01, on ne pourrait pas pour autant utiliser les numros commenant par 02 pour des raisons de zones gographiques. 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 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...

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

196

M. Elie Degny Raphael

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 toutes la mme forme. Les premiers octets des adresses du rseau sont toujours les mmes (ce peut tre le premier octet pour les rseaux de classe A, les deux premiers pour les rseaux de classe B ou les trois premiers pour les rseaux de classe C). On peut donc 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 rseau, 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 192.168.1.15 et que son
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 197

M. Elie Degny Raphael

masque de sous-rseau est 255.255.255.0, alors l'adresse de son rseau est 192.168.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 192.168.0.0. Comme on le voit, le masque de sous-rseau est utilis par le systme pour dterminer rapidement l'adresse de sousrseau d'une machine partir de son adresse IP. Les adresses IP ne sont pas attribues aux machines au hasard. Il est vident que chaque machine doit avoir une adresse unique, et que son adresse doit appartenir la plage d'adresses utilise pour le sous-rseau dont elle fait partie. Pour cela, la classe des rseaux, ainsi que les adresses qu'ils utilisent, sont attribus 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, et peuvent donc tre utilises par quiconque. Les plages d'adresse rserves sont les suivantes : Tableau 7-1. Plages d'adresses IP rserves pour un usage personnel Classe de rseau A B C Adresses de rseau rserves 10.0.0.0 172.16.0.0 172.31.0.0 192.168.0.0 192.168.255.0

Ainsi, un rseau de classe A (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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

198

M. Elie Degny Raphael

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. 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 capable de se connecter l'Internet appartient 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.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

199

M. Elie Degny Raphael

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 au fournisseur d'accs Internet, qui se charge de les transmettre aux autres ordinateurs. Notez que la passerelle peut elle-mme transmettre ces paquets une autre passerelle, et ainsi de suite, jusqu' ce que la destination soit atteinte. Dans le cas 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 rseaux diffrents pour envoyer un paquet dont la destination n'est pas sur son propre rseau. Par exemple, les passerelles des fournisseurs Internet peuvent tre ellesmmes connectes diffrents autres rseaux, qui sont eux-mmes connects d'autres rseaux. 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 125.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. Le choix du rseau utilis est en gnral dtermin par des rgles de la forme suivante : Tous les paquets destins au sous-rseau 125.46.0.0 doivent tre envoys vers la passerelle 137.49.20.1 du rseau 137.49.20.0 . Ainsi, si la passerelle est connecte trois rseaux d'adresses respectives 192.168.1.0, 137.49.20.0 et 209.70.105.10, elle transfrera le paquet destination de 125.46.10.15 la passerelle 137.49.20.1. L'ensemble des 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, cependant, elle se rvle 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.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

200

M. Elie Degny Raphael

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 rseaux. 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 noms de domaines. 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, cependant, elle ncessite de mettre jour la liste des noms sur tous les postes rgulirement, ce qui est beaucoup plus complexe que la gestion centralise d'un DNS. On ne l'utilisera donc que pour les petits rseaux.
Le Protocol TCP

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

201

M. Elie Degny Raphael

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 informations 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 rseaux des machines sont organiss en couche logicielle, qui s'appuient chacune sur la couche infrieure. Ainsi, TCP utilise IP, qui lui-mme utilise le driver 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 rseaux) 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 avec d'autres protocoles rseaux compltement diffrents (IPX, Appletalk, etc.). Seuls les mcanismes du protocole TCP seront dtaills dans la suite de ce document. Le protocole TCP est en effet utilis par un grand nombre de services, ce qui en fait certainement le plus connu. Le protocole TCP utilise la notion de connexion. Une connexion est un canal de communication tabli entre deux processus par TCP. Comme les processus sont susceptibles 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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

202

M. Elie Degny Raphael

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. Par consquent, 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. Une fois tablie, une connexion TCP permet d'effectuer des communications bidirectionnelles. Cela signifie que le clients 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 somme 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.

Les Protocols de haut niveau

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

203

M. Elie Degny Raphael

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

Configuration statique des interfaces rseaux

La principale commande permettant de configurer le rseau est la commande ifconfig. Comme son nom l'indique ( InterFace CONFiguration ), elle permet de configurer les
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 204

M. Elie Degny Raphael

interfaces rseaux de la machine. Il faut savoir qu'il existe plusieurs types d'interfaces rseaux. 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 rseaux d'une mme machine de communiquer entre elles mme si l'on ne dispose pas de carte rseau ; les interfaces des cartes rseaux (que ce soient des cartes Ethernet, TokenRing ou autres) ; les interfaces ppp, plip ou slip, qui sont des interfaces permettant d'utiliser les connexions srielles, parallles ou tlphoniques comme des rseaux.

La configuration d'une interface comprend l'initialisation des drivers 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 donne 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 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 adesses IP, ne pas rajouter de 0 supplmentaire devant les nombres qui la constituent. En effet, il existe une convention en informatique qui dit que les nombres 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 broadcast adresse dans la commande
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 205

M. Elie Degny Raphael

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 broadcast 192.168.0.0 up netmask 255.255.255.0

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, par exemple, 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 sousrseau 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
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 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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

206

M. Elie Degny Raphael

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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

207

M. Elie Degny Raphael

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 videment 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 rgle 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. 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
Dfinition du nom de la machine

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

208

M. Elie Degny Raphael

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 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 sera dtermin automatiquement par le systme partir des informations issues de la configuration de la rsolution des noms de domaines. Nous verrons cela dans le paragraphe suivant. Cette commande est donc trs simple utiliser, et elle est en gnral appele dans les scripts de dmarrage du systme. La plupart des distributions utilisent le 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 !
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 domaines. 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 nom de domaines. 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 multi off, 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 209

M. Elie Degny Raphael

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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

210

M. Elie Degny Raphael

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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

211

M. Elie Degny Raphael Configuration dun client BOOTP

La configuration du protocole BOOTP en soi ne comporte aucune difficult particulire, puisque tout est pris en charge par le noyau. Cela suppose donc que la prise en charge de ce protocole soit active dans le noyau, et, si ce n'est pas le cas, il va vous falloir recompiler un nouveau noyau et l'installer. Cette opration en revanche est relativement technique, et doit tre faite avec soin. La manire de procder sera dcrite en dtail dans le Chapitre 9. 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: BOOTP support (NEW) pour activer le protocole 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 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 root mont en NFS lors du dmarrage.
Configuration dun client DHCP

Comme sous la plupart des systmes Unix, le protocole DHCP est pris en charge sur les machines par le programme dhclient. Ce programme est gnralement lanc dans les scripts de dmarrage des machines, et envoie des paquets de demande de 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 sousrseau. 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 212

M. Elie Degny Raphael

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 bails 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 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 rseaux 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 conflits 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 rseaux qui doivent tre configures par DHCP. On ne peut donc pas faire plus simple...

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

213

M. Elie Degny Raphael

Note : Sous Linux, le programme dhclient utilise les fonctionnalits 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 sera vu dans le Chapitre 9.
Dfinition des protocoles de haut niveau

Comme nous l'avons vu plus haut, le protocole IP fourni les mcanismes de base pour la transmission des paquets. Plusieurs protocoles de plus haut niveau ont t dfinis pour fournir des services valeur ajoute, qui satisfont donc plus aux besoins des applications. Tous ces protocoles sont encapsuls dans le protocole IP, ce qui 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 rseaux d'interprter les donnes des paquets. Tout comme les adresses IP, ces numros identifiant les protocoles ne sont pas trs intressant pour les humains, qui leur prfrent videmment le nom du protocole. Certains programmes rseaux 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 ip icmp tcp udp Numro 0 1 6 17 Alias IP ICMP TCP 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 27. 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.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

214

M. Elie Degny Raphael

De la mme manire, la plupart des ports TCP et UDP sont affects des services bien dfinis, et certains programmes rseau peut chercher faire la correspondance entre les noms de ces services et les numros de ports. Cette correspondance est stocke dans le 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 ftp telnet smtp pop3 irc irc Port/Protocole 21/tcp 23/tcp 25/tcp 109/tcp 194/tcp 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.
Le dmon inetp

La plupart des services rseaux 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. C'est pour cette raison que le dmon inetd (de l'anglais InterNET Daemon ) a t cr. Ce dmon est l'coute des demandes de connexion des clients pour les autres services rseaux, et ne lancent ceux-ci que lorsqu'un client se connecte sur leur port. Une fois lancs, ceux-ci reprennent la main et communiquent directement avec leurs clients. Ainsi, inetd coute les ports pour tout le monde, et est la plupart du temps le seul

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

215

M. Elie Degny Raphael

fonctionner. Les ressources systme sont conomises de cette manire, et les services rseaux sont dmarrs et arrts la demande. Le 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. Encore une fois, le fichier est structur en lignes. Chaque ligne dcrit un des services que le dmon inetd prend en charge. Les informations donnes sur ces lignes sont les suivantes :

le nom du service (tel 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) ; l'un des mots-cls wait ou nowait, qui permettent d'indiquer si inetd doit attendre la fin de l'excution du dmon grant ce 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 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 in.telnetd nowait root /usr/sbin/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 la section suivante.
Configuration de la scurit www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 216

M. Elie Degny Raphael

La plupart des dmons ont besoin d'avoir les privilges du compte root pour s'excuter. Cela peut gnrer des problmes de scurit 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, et qui vrifient en gnral toutes les requtes demandes par les clients avant de les satisfaire. Cependant, tout programme peut comporter des failles et laisser ainsi un accs indsir au sein du systme. Le principe de base de la scurit est de ne faire confiance qu'au minimum possible de gens. Ce n'est pas un comportement paranoaque, mais simplement du bon sens : puisqu'on ne peut garantir la fiabilit d'un systme 100%, il faut en restreindre les accs aux personnes habilites. D'une manire gnrale, la plupart des surprises dsagrables dans le monde environnant proviennent du mauvais jugement des personnes. Il est est de mme dans le domaine de la scurit informatique, il ne faut donner un accs qu'aux personnes que l'on connat rellement bien, et ne fournir des services rseaux qu'aux personnes et machines qualifies de sres . Il va de soi que lorsqu'il y a un loup dans la bergerie, tout peut aller trs mal trs vite. Tout cela pour dire que les services rseaux d'un systme Linux sont potentiellement nombreux, et parfois inutiles pour l'emploi que l'on veut en faire. Par consquent, il vaut mieux tout simplement ne pas les proposer au monde extrieur, simplement en ne lanant pas les dmons correspondants ou en commentant les lignes des services inutiles dans le fichier /etc/inetd.conf. Mais cela n'est pas suffisant, il faut galement restreindre le nombre de personnes et des machines auxquels les services ncessaires sont proposs. Le service le plus sensible est bien entendu le login. Il est possible de fournir le service de login aux connexions extrieures, et il est vident que cela constitue dj un point d'entre pour qui peut trouver un mot de passe valide. De toute vidence, si quelqu'un trouve le mot de passe du compte root, il a tout gagn. Cela dit, il est possible de limiter srieusement les dgts en interdisant l'utilisateur root de se connecter purement et simplement. Dans la majorit des cas cependant, il est concevable que root puisse se connecter sur la console locale (c'est--dire, avec votre clavier et votre cran...). Il est donc possible de choisir les terminaux partir desquels l'utilisateur root peut 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 217

M. Elie Degny Raphael

tty5 tty6 Il est donc 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 installe. Le fichier /etc/ftpusers fourni avec cette distribution est donc, en gnral, appropri. Comme on le voit, il est possible de restreindre l'accs certains utilisateurs pour certains services. Mais il est galement possible de restreindre les accs provenant de certaines machines, considres comme peu fiables. En particulier, on peut considrer comme dangereuse tout machine trangre au rseau local. Le programme tcpd a t invent pour effectuer ces contrles. Il s'intercale entre le 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 de base, 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.
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 218

M. Elie Degny Raphael

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. 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. 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 219

M. Elie Degny Raphael

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, 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, qu'il aura au pralable mis hors d'tat de se manifester (technique nomme IP spoofing 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. Par consquent, vous ne devez pas vous reposer uniquement sur tcpd et les techniques de firewalling si vous devez crer un site parfaitement sr. En particulier, vous devriez vous intresser aux rseaux virtuels et l'encryptage des donnes. Le protocole Ipv6 intgrera des mcanismes d'authentification et sera donc nettement plus sr. Bien entendu, cela dpasse le cadre de ce document. Configuration de la connexion Internet Les connexions Internet font partie des connexions rseaux temporaires permettant de relier deux machines. La machine locale se connecte en effet au serveur du fournisseur 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.
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'une ligne srie (donc galement au travers d'une ligne tlphonique en utilisant un modem). Ce protocole est gr par le noyau d'une part, et par le dmon pppd d'autre part. 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 programme chat ne connat pas les
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 220

M. Elie Degny Raphael

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 les scripts de connexions. 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 connexions. Les tapes seront dtailles ci-dessous. Nous supposerons dans la suite que vos paramtres de connexions sont les suivants :

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

221

M. Elie Degny Raphael

Paramtre Fournisseur d'accs Internet Nom de domaine Adresse du DNS Numro de tlphone Nom de login Mot de passe Nom de serveur (pour PAP et CHAP)

Valeur www.monfai.fr monfai.fr 192.205.43.1 08 36 76 30 18 Jdupont gh25k;f 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 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.
Cration dune 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.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

222

M. Elie Degny Raphael

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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

223

M. Elie Degny Raphael

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 secretIP 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. 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 224

M. Elie Degny Raphael

# Script de connexion Internet # Effectue le mnage : rm -f /var/spool/uucp/LCK* /var/run/ppp*.pid /var/lock/LCK*

# tablit la connexion : /usr/sbin/pppd /dev/modem 115200 connect "/usr/sbin/chat -v \ -f /etc/ppp/peers/monfai.chat" defaultroute usepeerdns \ ipcp-accept-remote ipcp-accept-local Prenez garde crire la ligne excutant pppd et la ligne des options en une seule ligne, sans retour. Notez que le caractre '\' plac en 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/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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

225

M. Elie Degny Raphael

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 \ 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 noauth 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 idle n dans la ligne de commande de pppd, o n est le nombre de secondes pendant lequel le lien PPP doit rester inactif avant que la connexion ne se coupe automatiquement. Un choix judicieux est par exemple 600 (ce qui correspond dix minutes). Note : 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, la plupart des fournisseurs attribuent les adresses IP dynamiquement, et en gnral, la connexion ne se fait pas toujours sur le mme serveur (il peut y avoir plusieurs serveurs pour un mme numro de tlphone). C'est pour cela qu'il faut ajouter les options ipcp-accept-remote et ipcp-accept-local pour

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

226

M. Elie Degny Raphael

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 domaines 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 hosts) avant le DNS (option bind), faute de quoi votre ordinateur se connectera systmatiquement Internet ds que vous utiliserez un nom de machine local. La plupart des options passes en ligne de commande peuvent tre spcifies dans le fichier d'options /etc/ppp/options du dmon pppd. Cela peut permettre de simplifier les scripts de connexion. 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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

227

M. Elie Degny Raphael

# 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
Utilisation du mail

prsent, vous pouvez vous connecter Internet simplement en excutant le script de connexion. Pour vous dconnecter, il suffit d'appeler le script de dconnexion. Ds que vous tes connect Internet, vous pouvez utiliser toutes les fonctionnalits rseau de Linux, qui sont sans limites. Parmi ces fonctionnalits, on trouve l'envoi de courriers lectroniques. Cette opration peut tre ralise l'aide du programme mail, qui se manipule l'aide de commandes simples. Les commandes disponibles chaque instant sont affiches dans le bas de l'cran de mail. Le programme mail n'est qu'un client, qui ne fait rien d'autre que d'envoyer et recevoir des mails au serveur de mails local. Sur la plupart des distributions, le serveur de mails utilis se nomme sendmail . Si vous dsirez utiliser le courrier lectronique, vous devrez donc configurer sendmail. Hlas, cette opration est technique et difficile. Il est recommand d'utiliser l'outil de configuration de votre distribution, qui fera tout le sale boulot pour vous. Toutefois, si vous dsirez configurer sendmail vous-mme, sachez que la plupart des options sont stockes dans le fichier /etc/sendmail.cf. Vous devriez vous documenter avant de vous lancer dans cette opration. Le fichier /etc/sendmail.cf ne sera pas dcrit ici, il peut faire lui seul l'objet de plusieurs livres...

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

228

M. Elie Degny Raphael

Classiquement, lorsque vous envoyez un mail, ce mail est envoy sendmail. Si vous tes connect Internet, celui-ci le transmet immdiatement votre fournisseur d'accs Internet, qui le rediffuse. En revanche, si vous n'tes pas connect, sendmail stockera votre message dans le rpertoire /var/spool/mqueue/. Les courriers ne seront envoys que lorsque vous vous connecterez Internet. sendmail vrifie priodiquement s'il peut envoyer les mails en attente, cependant, si vous ne restez pas connect suffisamment longtemps, il peut ne pas s'en apercevoir. Pour viter cela, vous pouvez utiliser la commande suivante : sendmail -q Cette commande demande sendmail d'envoyer les courriers en attente immdiatement. De la mme manire, le programme mail ne rcupre pas lui-mme les mails depuis le serveur de mail de votre fournisseur d'accs Internet. En gnral, le programme utilis pour rcuprer les mails se nomme fetchmail . Si vous voulez rcuprer immdiatement vos mails, vous devrez donc appeler fetchmail manuellement : fetchmail Bien entendu, ces oprations sont ennuyeuses. Si vous voulez tre tranquille, vous pouvez placer ces deux commandes la fin du script de connexion Internet. De la sorte, vous recevrez et enverrez votre courrier chaque fois que vous vous connecterez...
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 lourd. 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. Firewalls et partages de connexion Internet Supposons qu'une machine situe sur un rseau local a accs Internet. Il peut tre intressant de faire en sorte que les autres machines du rseau puissent galement y accder, en utilisant cette machine comme passerelle. Cela est parfaitement ralisable et ne pose aucun autre problme que la 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 229

M. Elie Degny Raphael

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 translations d'adresses ( 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 d'autre 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 que fournir un accs Internet un rseau local pose des problmes de scurit majeurs. Pour des rseaux locaux familiaux, les risques de piratages sont bien entendu mineurs, mais lorsque la connexion Internet est permanente ou lorsque les donnes circulant sur le rseau local sont sensibles, il faut tenir compte des risques 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. La configuration de la passerelle doit donc se faire avec soin dans tous les cas, et l'installation d'un Firewall est plus que recommande (un firewall , ou pare-feu en franais, 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'adresses, car c'est sans doute celui que la plupart des gens cherchent utiliser.
Mcanisme de filtrage de 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 chaque version. partir de la version 2.4.0, une architecture extensible a t mise en place et semble rpondre tous les besoins de manire simple : Netfilter. Netfilter est simplement une srie d'entres 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.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

230

M. Elie Degny Raphael

Les fonctionnalits fournies par ces modules sont regroupes par domaine fonctionnel. Ainsi, les modules permettant de raliser des Firewalls 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 sources 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. Les tables les plus couramment utilises sont les tables filter et nat , qui permettent respectivement de raliser des Firewall et d'effectuer des translations d'adresses. Chaque table utilise ses propres points d'entre de Netfilter. Pour chacun de ces points d'entre, des listes de rgles de gestion des paquets peuvent tre dfinies. Ces listes sont communment appeles des chanes. Il y a donc toujours une chane de rgles prdfinie pour chaque point d'entre. L'utilisateur peut bien entendu dfinir de nouvelles chanes et les utiliser dans les chanes prdfinies. Les rgles 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 sure si l'on veut faire un Firewall. On pourra aussi envoyer ces paquets dans une autre chane, qui peuvent indiquer d'autres rgles et d'autres traitements. Les critres de slection des 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 dudit 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. 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) ;

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

231

M. Elie Degny Raphael


le modifier, et en particulier, le marquer pour le reconnatre dans un traitement ultrieur ou effectuer une translation d'adresses ; 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 Firewalling, 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. 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 politique relativement stricte lorsqu'on ralise un Firewall, qui rejette tous les paquets par dfaut et qui n'ont pas t accept explicitement par une rgle de la chane. Note : Certains paquets peuvent tre dcoups en plusieurs paquets plus petits lors de la traverse d'un rseau. Par exemple, un paquet TCP un peu trop gros et initialement encapsul dans un seul paquet IP peut se voir rpartir sur plusieurs paquets IP. Cela peut poser quelques problmes aux rgles de 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.
Translation dAdresses 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 en arrire plan de ce type de paquet (librant ainsi les ressources rseau pour d'autres connexions), et de modifier ses adresses source et destination, pour effectuer une translation d'adresse. Nous allons nous intresser plus particulirement aux diffrentes formes de translation 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 des adresses destination de tous les paquets d'une connexion. En gnral, cela permet de dtourner les connexions rseau ou de simuler une provenance unique de plusieurs connexions. Par exemple, les connexions Internet peuvent tre
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 232

M. Elie Degny Raphael

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 translation d'adresses : les translations d'adresses source et les translation d'adresses destination. Parmi les translations d'adresses 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 donc achemin vers la passerelle, qui est la route par dfaut. Celle-ci commence par modifier leur adresse source et mettre sa propre adresse la place, puis les transfere 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 rponse, puisque les machines situes sur Internet croient que la machine avec laquelle elles communiquent est la passerelle. Les paquets rponse sont donc tous envoys la passerelle directement, et celle-ci doit retrouver la machine du rseau local laquelle ce paquet est destin. Cette opration est ralise de diffrentes manires selon les protocoles utiliss, et elle suppose que la passerelle conserve en permanence une trace des connexions rseaux effectues par les machines du rseau local. Pour TCP, ce suivi de connexion est ralis en 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 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 rponse, celui-ci sera destination de la passerelle, avec comme port destination le port de la connexion. La passerelle peut donc retrouver, partir de ce port, 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 sources des paquets provenant d'Internet, elle ne fait que les racheminer vers la bonne destination. Ainsi, le masquerading est un mcanisme compltement transparent pour les machines du rseau local. En revanche, pour les machines de l'Internet, il ne semble y avoir qu'un
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 233

M. Elie Degny Raphael

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 Linux, mme sur les plus petites machines (386 et 486). Vous voil rassur, et peut-tre aurez-vous trouv d'ici peu une utilit l'un de ces dinosaures qui tranent encore dans votre garage...

Trajet des Paquets

Il existe cinq points d'entre au total pour les modules de Netfilter dans le code des couches rseau IP de Linux. ces cinq points d'entre correspondent cinq chanes prdfinies, qui peuvent tre accdes par l'intermdiaire des diverses tables de Netfilter. Les paragraphes suivants dcrivent ces cinq chanes, ainsi que l'ordre dans lequel les paquets les traversent. 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 la chane PREROUTING, qui est la premire chane prise en compte. Cette chane prcde le code de routage, qui est en charge de dterminer le trajet que le paquet devra suivre par la suite partir de l'adresse destination des paquets. C'est donc dans cette chane que l'on pourra modifier l'adresse destination des paquets, si l'on veut faire une translation d'adresse destination. Cette chane est donc utilisable dans la table nat. Les paquets qui traversent la chane PREROUTING sont ensuite orients par le code de routage de Linux. S'ils sont destination de la machine locale, ils rencontrent une autre chane prdfinie : la chane INPUT. C'est ce niveau que l'on peut empcher un paquet d'entrer dans le systme, aussi cette chane est-elle naturellement disponible dans la table filter. Les autres paquets doivent tre transfrs vers une autre machine, souvent par une autre interface rseau. Ils traversent alors la chane FORWARD. Cette chane permet de contrler les paquets qui transitent au travers d'une passerelle, et fait donc partie de la table filter. Les paquets qui sont accepts par la chane FORWARD retournent ensuite dans le code de routage du noyau, 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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

234

M. Elie Degny Raphael

traverser la chane POSTROUTING. C'est dans cette dernire chane que se font les translations d'adresse source, aussi est-elle accessible dans la table nat. Enfin, les paquets mis par la machine locale destination de l'extrieur doivent imprativement traverser la chane OUTPUT, dans laquelle on pourra filtrer les informations sortantes. Cette chane est donc accessible dans la table filter. Les paquets qui se rvlent avoir le droit de sortir traversent alors de code de routing, puis, tout comme les paquets qui ont t transfrs, entrent dans la chane POSTROUTING. La chane OUTPUT est galement accessible au travers de la table nat, afin de permettre la modification des adresses destination des paquets avant leur routage. Note : Pour des raisons de clart, les chanes prdfinies et les points d'entre de Netfilter ont t volontairement confondus dans ce paragraphe. En fait, il faut bien comprendre que les chanes appartiennent aux tables, et qu'il peut exister plusieurs chanes du mme nom dans plusieurs tables diffrentes. L'ajout d'une rgle dans une chane ne se fait donc que pour une table donne, les autres tables ne contiendront donc pas cette rgle. En revanche, les paquets qui traversent ces chanes le font bien lorsqu'ils sont au niveau du point d'entre correspondant dans le code des couches rseau de Linux.
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 sera indique ultrieurement dans le paragraphe traitant de la compilation du noyau. Sachez cependant que les options activer pour mettre en place les fonctionnalits de filtrage des paquets et de translation d'adresses 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 Firewall ; REJECT target support , pour permettre le rejet des paquets (par dfaut, seul l'abandon des paquets est fourni dans le code de filtrage) ;

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

235

M. Elie Degny Raphael


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/ : 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.1.2, aussi l'archive se nomme-t-elle iptables-1.1.2.tar.bz2. L'installation d'iptables ne pose pas de problme particulier en soi. Vous devrez d'abord dcomprimer l'archive avec les deux commandes suivantes : bunzip2 iptables-1.1.2.tar.bz2 tar xf iptables-1.1.2.tar Puis modifier le fichier Makefile pour dfinir les rpertoires d'installation dans les variables LIBDIR, BINDIR et MANDIR. En gnral, les rpertoires utiliss seront respectivement les rpertoires /usr/lib/, /usr/bin/ et /usr/man/. Une fois cela fait, il ne restera plus qu' compiler le tout avec la commande make et faire l'installation avec la commande make install. Utilisation d'iptables Il est possible, grce iptables, d'effectuer toutes les oprations d'administration dsires sur les tables de Netfilter. Vous pourrez donc crer des nouvelles chanes, les dtruire, dfinir leur politique 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.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

236

M. Elie Degny Raphael

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 -t. 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 filtrages des paquets dans un Firewall. 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 rgles. 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 Enfin, il est possible de supprimer toutes les rgles d'une chane avec l'option -F : iptables [-t table] -F chane O chane est le nom de la chane dont on veut lister les rgles. 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) ;
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 237

M. Elie Degny Raphael


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 sources ou destination, ou sur le port ou l'interface). Les adresses sources et destination peuvent tre indiques directement par le nom des machines (comme par exemple www.monrezo.com ) ou par leurs adresses IP. Vous pouvez 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 ; SNAT, pour permettre la modification des adresses source des paquets. 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 des adresses destination des paquets, afin par exemple de les dtourner vers une autre machine que celle vers laquelle ils devaient 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 ;
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 238

M. Elie Degny Raphael

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 -D 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 reprennent les vrification de la chane appelante lorsqu'ils sortent de la chane appele. 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 non de raliser un Firewall fiable. Reportez-vous des documents plus spcialiss pour cela. Exemple de rgles de filtrage Les rgles de filtrage peuvent tre utilises pour mettre en place un Firewall 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 police des chanes. On dfinira donc toujours la police par dfaut des chanes pour utiliser la cible DROP. Cela peut tre ralis simplement avec les trois commandes suivantes : iptables -P INPUT -j DROP iptables -P FORWARD -j DROP iptables -P OUTPUT -j DROP
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 239

M. Elie Degny Raphael

Ces rgles commencent par blinder la passerelle pour ne rien laisser entrer, ne rien laisser passer et ne rien laisser sortir. Dans ce cas, on ne craint plus rien, mais on ne peut plus rien faire non plus (pas mme en local). Aussi faut-il redonner les droits ncessaires pour permettre l'utilisation normale de votre systme. Par exemple, on peut autoriser l'arrive et l'mission de tous les paquets du rseau local avec les rgles suivantes : iptables -A INPUT -s 192.168.0.0/24 -i eth0 -j ACCEPT iptables -A OUTPUT -s 127.0.0.0/8 -o eth0 -j ACCEPT et autoriser la communication des paquets de la machine locale vers la machine locale (ces paquets sont vitaux !) : iptables -A OUTPUT -s 127.0.0.0/8 -o lo -j ACCEPT iptables -A INPUT -d 127.0.0.0/8 -i lo -j ACCEPT Comme vous pouvez le constater, ces rgles ne permettent 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 peut mettre des paquets sur le rseau local. Il va de soi que ces paramtres sont trop restrictifs pour raliser une passerelle. Dans ce cas, on devra relcher un peu plus de contraintes, et en utilisant des rgles de filtrages plus fines. On devra autoriser le routage des paquets (chane FORWARD), par exemple en n'autorisant que les paquets provenant d'un ensemble de machines considres comme fiables. Notez que ces rgles sont beaucoup trop restrictives pour permettre un accs Internet (et, a fortiori une intrusion provenant d'Internet...). Les rgles prsentes ici se basent uniquement sur les adresses source et destination des paquets, ainsi que sur les interfaces rseau par lesquelles ils entrent et ressortent. Sachez cependant que l'on peut raliser des rgles beaucoup plus fines, qui se basent galement sur les protocoles rseau utiliss, et, pour chaque protocole, sur des critres spcifiques ces protocoles. Vous pouvez consulter la page de manuel d'iptables pour plus de dtails ce sujet. 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'adresses destination des paquets rponse renvoys par les serveurs sur Internet pour les acheminer vers la machine du rseau local qui a initi la connexion. En pratique, seule la chane POSTROUTING sera utilise pour le masquerading, parce que c'est ce niveau que la translation d'adresses 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 commande utiliser est-elle simplement la suivante :

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

240

M. Elie Degny Raphael

iptables -t nat -A POSTROUTING -s rseau/24 -o ppp0 -j MASQUERADE O rseau est l'adresse de votre rseau (par exemple, 192.168.0.0). Notez que la commande donne ci-dessus suppose que votre rseau soit de classe C, car le masque de sous-rseau utilis est 255.255.255.0. La cible spcifie pour toutes les paquets provenant de votre rseau local sortant par l'interface ppp0 est donc MASQUERADE, ce qui active la translation d'adresses. Remarquez que les paquets provenant de la machine locale ne subissent pas le masquerading, car c'est compltement inutile. Note : Les chanes et leurs rgles ne sont pas enregistres de manire permanente dans le systme. Elles sont perdues chaque redmarrage de la machine, aussi faut-il les redfinir systmatiquement. Cela peut tre ralis dans les scripts de dmarrage de votre systme. 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. Le routage des paquets est, par dfaut, dsactiv sous Linux. Si votre distribution ne le fait pas, vous aurez galement ajouter une ligne telle que celle-ci : # Activation du routage : echo "1" > /proc/sys/net/ipv4/ip_forward Dans vos scripts de dmarrage de votre systme. Assurez-vous que les rgles de filtrage que vous utilisez permettent bien aux machines du rseau local d'accder Internet, et rciproquement, que les machines d'Internet peuvent leur rpondre. Sans cela, toute tentative de masquerading sera voue l'chec, avant mme d'atteindre la chane POSTROUTING. 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. Cette opration peut se raliser de diffrentes manire 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 241

M. Elie Degny Raphael

utilis. Sous Linux, il suffit d'ajouter les adresses IP des serveurs de noms de domaines de votre fournisseur d'accs dans le fichier de configuration /etc/resolv.conf. 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 allumer 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 deux rseaux spars physiquement par l'intermdiaire du rseau tlphonique. Cette section prsente donc les techniques de base permettant de paramtrer Linux pour accepter les communications entrantes, tant pour satisfaire aux demandes de connexions distantes que pour tablir une liaison PPP. Paramtrage des connexions extrieures Nous avons vu dans la la section intitule Configuration des terminaux virtuels dans Chapitre 6 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 mulateur 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 242

M. Elie Degny Raphael

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. 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 sries 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 sries (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. 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 quelques 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 243

M. Elie Degny Raphael

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 sries 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 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 ncessaire, 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 sries. 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 permet de simplifier notablement les lignes de commandes utilises pour lancer pppd.
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 244

M. Elie Degny Raphael

Cette 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. Il est important que ces deux adresses ne soient pas sur le mme rseau, car les deux machines sont effectivement spares l'une de l'autre ! Un lien PPP ne constitue donc pas un rseau en soi, mais plutt 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 init de pppd. Cette option fonctionne exactement comme l'option connect que l'on a utilise pour tablir la liaison tlphonique dans la la section intitule Cration d'une connexion Internet. 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 leur syntaxe. 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 :

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

245

M. Elie Degny Raphael

Commande ATS0=n AT&C1

AT&K3

Signification Dcrochage automatique si n vaut 1, manuel si n vaut 0. Activation du contrle de la ligne CD ( Carrier Detect ) pour signaler les raccrochages des clients. Cette commande n'est utile que si l'option modem est passe en paramtre pppd sur sa ligne de commande. 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 crtscts dans la ligne de commande de pppd.

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 detach 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/papsecrets 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 246

M. Elie Degny Raphael

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 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 jdupont Serveur monserveur Secret Adresses 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 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 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 $1 $2 $3 $4 Signification Nom de l'interface rseau (par exemple, ppp0 . Nom du fichier spcial de priphrique de la ligne srie utilise (par exemple, ttyS0 ). Vitesse de la ligne srie. Adresse IP locale de l'interface rseau.
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 247

M. Elie Degny Raphael

Paramtre $5 $6

Signification Adresse IP du client. 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 faudra donc relancer pppd rgulirement lorsqu'il se terminera. 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 /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 matriel : modem # Contrle de flux matriel : crtscts 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 :

d'options

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 ;

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

248

M. Elie Degny Raphael


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 crtscts). La commande sur le client est absolument symtrique, puisque seules les adresses locales et distantes sont interverties : pppd /dev/ttyS0 115200 192.168.31.1:192.168.30.1 detach crtscts & Bien entendu, le port srie utilis peut tre diffrent de celui du serveur. Une fois ces deux commandes lances, la connexion PPP est tablie. Le dmon pppd ajoute alors automatiquement une rgle de routage pour acheminer les paquets 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... Installation d'un proxy 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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

249

M. Elie Degny Raphael

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 au serveur 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 changent qui sont le plus souvent demandes. 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). 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 configuration peut tre relativement technique, mais nous n'allons pas entrer dans tous les dtails de sa configuration. 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 partages 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 250

M. Elie Degny Raphael

(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 rpertoire du premier niveau, et le deuxime nombre indique le nombre de sousrpertoires 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 http_port indique le port TCP que les clients doivent utiliser pour accder au proxy ; l'option ftp_user permet de donner l'adresse email utiliser comme mot de passe dans les connexion 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 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 default, 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_direct 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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

251

M. Elie Degny Raphael

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_children permet de donner le nombre de processus en charge de cacher les requtes sur les DNS. Les requtes de DNS font partie des requtes les plus courantes lorsqu'on navigue sur Internet. En effet, la moindre adresse, le moindre lien suivi ncessite une requte DNS. On pourrait limiter ce traffic en installant un serveur DNS local, mais c'est un peu compliqu et peut poser des problmes de scurit. squid propose donc une autre solution, qui consiste cacher les requtes DNS et fournir des processus locaux prenant en charge la rsolution de noms. Plus le rseau local est important, plus il faudra de tels processus, 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 luimme 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 :
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 252

M. Elie Degny Raphael

acl all src 0.0.0.0/0.0.0.0 # ACL dfinissant la machine locale : acl localhost src 127.0.0.1/255.255.255.255 # ACL dfinissant les machines 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 : acl safe_ports port 80 21 443 563 70 210 1025-65535 # ACL dfinissant les requtes de connexions : 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 motcl 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 trangers : http_access deny manager gestionnaires de cache

# 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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

253

M. Elie Degny Raphael

# 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 documente et que sa lecture est relativement facile. Je ne saurais que trop vous recommander de le consulter si vous dsirez en savoir plus. 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 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; subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.10 192.168.1.100; range 192.168.1.150 192.168.1.200; option broadcast-address 192.168.1.255; option routers 192.168.1.1; option domain-name "monrezo.perso"; } subnet 192.168.53.0 netmask 255.255.255.0 { range 192.168.53.10 192.168.53.254; option broadcast-address 192.168.53.255; option routers 192.168.53.2;

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

254

M. Elie Degny Raphael

option domain-name "autrerezo.org"; } 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 afin de 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 [...]] 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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

255

M. Elie Degny Raphael

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 sera vu dans le Chapitre 9. 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. 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. 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 256

M. Elie Degny Raphael

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 ports 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 RPC, 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 257

M. Elie Degny Raphael

mettez disposition 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 : 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 correspondent 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 258

M. Elie Degny Raphael

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'information 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 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_static 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 d'identificateurs : # client serveur uid 0-99 uid 500-1000 1000 gid 0-49 gid 50-100 1000 fichier de correspondance

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

259

M. Elie Degny Raphael

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 Notez que toute modification du fichier /etc/exports doit tre signale aux dmons mountd et nfsd, pour qu'ils puissent le relire. Cette notification peut tre effectue en envoyant le signal SIGHUP ces deux dmons. Les deux commandes suivantes suffiront effectuer cette tche :

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

260

M. Elie Degny Raphael

killall -HUP rpc.mountd killall -HUP rpc.nfsd 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). La compilation du noyau sera dcrite en dtail ultrieurement. 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 -t, 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 261

M. Elie Degny Raphael

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 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 suivante pourra tre optimise comme suit : mount -t nfs -o rsize=8192,wsize=8192 \ mon.serveur.nfs:/mon/rpertoire/export /mnt Bien entendu, ces valeurs dpendent de la bande passante de votre rseau, et vous aurez sans doute effectuer des tests de transferts de fichiers pour trouver les valeurs optimales. 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 2.0.7. 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 problmes particuliers. 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 dfaut 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 262

M. Elie Degny Raphael

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. 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 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 donne 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 domaines. Un serveur primaire est un serveur central, sur lequel se fait la gestion globale des utilisateurs. Outre un serveur primaire, un domaine peut galement contenir un ou plusieurs serveurs de sauvegarde si ncessaire. Comme leur appelation 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 -D, faute de quoi il ne dmarrera pas en tant que dmon :

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

263

M. Elie Degny Raphael

/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 -D 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. Samba utilise donc une politique bien prcise pour effectuer la correspondance entre les fichiers Unix et les fichiers au sens des clients SMB. 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 gnral pas de gestion de la scurit en gnral. Seul Windows NT dispose de ces fonctionnalits, condition qu'il utilise des systmes de fichiers NTFS. Cependant, les informations de scurit de Windows NT sont toutes perdues lorsqu'on accde aux fichiers d'un partage : lourd hritage que celui du DOS ! 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 seul Windows NT puisse servir de contrleur 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 ou Windows 98 (heureusement, Samba est capable de servir de contrleur de domaine, cependant, nous ne verrons pas ce type de configuration).

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

264

M. Elie Degny Raphael

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 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 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/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. 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 265

M. Elie Degny Raphael

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 d'utilisateurs Windows # et les noms Unix : username map = /etc/samba/usermap les noms

# 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 motcl 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 266

M. Elie Degny Raphael

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 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 encrypts par une clef fournie par le serveur. Ainsi, une personne mal intentionne coutant les paquets transfrs sur le rseau ne pourrait pas capter ces mots de passe. Samba est capable de grer les deux cas de configuration, l'aide de l'option encrypt password. Cependant, si vous dcidez d'activer l'encryptage 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 leur login 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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

267

M. Elie Degny Raphael

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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

268

M. Elie Degny Raphael

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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

269

M. Elie Degny Raphael

[global] # Dfinit le type d'impression utilis (BSD sous Linux) : 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. Sous Linux, les commandes BSD sont utilises, aussi fixe-t-on bsd l'option printing. Les options concernant toutes les imprimantes que Samba trouvera peuvent tre prcises dans la section [printers]. Cette section joue donc le mme rle pour les imprimantes partages que la section [homes] joue pour les rpertoires personnels des utilisateurs. La section donne ci-dessous pourra vous servir 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 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, seul les

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

270

M. Elie Degny Raphael

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 avec la mthode habituelle, en leur envoyant un signal SIGHUP. Vous devrez donc taper les commande suivantes : killall -HUP smbd killall -HUP nmbd Comme on peut le voir, le 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 un 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 problme et ne sera donc pas dcrite plus en dtail ici.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

271

M. Elie Degny Raphael

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 seront dcrites en dtail dans le Chapitre 9. 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 mount du systme ne supporte pas encore compltement le systme de fichiers SMB. Elle utilise donc un programme complmentaire nomm smbmount, 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 272

M. Elie Degny Raphael

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. Et il est lui-mme un caractre spcial, qui doit donc 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. 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 possible galement 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 quant elle peut tre setuid, car elle vrifie que l'utilisateur ne cherche dmonter que les partages qu'il a lui-mme mont. Le protocole SMB ne prend pas en charge 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 SMB sont fixs par dfaut l'utilisateur qui a effectu le montage et son groupe. Cela est naturel et ne pose pas de problme pour la plupart des utilisateurs, mais peut tre gnant lorsqu'on monte un partage en tant que root pour le compte d'un autre utilisateur. En effet, celui-ci n'aura pas les droits d'criture sur les fichiers du partage. 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 :

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

273

M. Elie Degny Raphael

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 la commande suivante : export USER=utilisateur%secret o utilisateur est le nom d'utilisateur classique, et secret son mot de passe sur le partage monter. Cette technique n'est pas non plus trs sre, et n'est en aucun cas pratique. Aussi est-il recommand de toujours utiliser la commande smbmount directement, et de ne taper le mot de passe que lorsque celle-ci le demande. Notions de compilation et de sources 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, 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 le recompilation du noyau de Linux ! La raison de cet tat de fait provient sans nul doute du fait que les licences GNU et BSD imposent de fournir les fichiers sources aux utilisateurs d'une part, et que le langage C et Unix sont historiquement fortement lis. Nous allons commencer par donner un peu de vocabulaire. Nous verrons ensuite comment installer (et compiler !) le compilateur C/C+ + de GNU. Vocabulaire

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

274

M. Elie Degny Raphael

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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

275

M. Elie Degny Raphael

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 difficile 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 de Linux lui-mme est crit en C. Le C++ est un langage plus volu, qui est driv du C. Il est beaucoup plus riche, et il permet 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 capable de lire le code source et de l'excuter directement ; disposer d'un autre programme capable de traduire le code source en langage binaire, directement comprhensible par le matriel.

Les programmes de la premire catgorie sont appels des interprteurs, car ils traduisent le code source la vole, lors de l'excution du programme. Les programmes interprts sont fatalement relativement lents, puisque l'interprteur doit analyser en permanence les fichiers sources pour les excuter. En revanche, les programmes de la deuxime catgorie sont appels compilateurs. Les programmes compils sont beaucoup plus rapides l'excution, puisqu'ils ne sont traduit qu'une seule fois en langage machine et s'adressent directement au matriel. 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 font partie des tous premiers programmes qui ont t dvelopps...

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

276

M. Elie Degny Raphael

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, 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. Cette opration 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 ces deux fichiers. 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). Malheureusement, cette solution souffre de la duplication du code contenu dans les 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 rpertoire bien dfini du systme de fichiers. De cette manire, le code de la bibliothque peut tre partag

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

277

M. Elie Degny Raphael

entre diffrents programmes, et la mise jour de la 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 ). 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 lien dynamique. Ainsi, la diffrence de performance est devenue peine dcelable. Classiquement, les fichiers sources C et C++ se divisent en deux grande 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 278

M. Elie Degny Raphael

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 :

installation 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 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 :
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 279

M. Elie Degny Raphael

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 , 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 temps 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 disque dur et la quantit de la mmoire vive disponible. Compilation de GCC La plupart des distributions sont fournies avec le compilateur GNU C/C++. Cependant, la version fournie est souvent la version 2.7.2., qui est assez ge, pour ne pas dire compltement obsolte. La raison de cet tat de fait est que la compilation du noyau de Linux pose quelques problmes avec les versions ultrieures de GCC. Les distributeurs s'assurent ainsi de ne pas avoir de problmes relatifs aux dernires versions de GCC en n'installant que la version 2.7.2. par dfaut. Cependant, il n'est pas raisonnable de continuer utiliser cette version, car la version courante, savoir GCC 2.95.3 (17 mars 2001), est nettement meilleure sur tous les points de vue. Elle optimise mieux le code et elle comprend bien mieux le C++ que la version 2.7.2. Pour tout dire, il s'est coul deux versions majeures entre la 2.7.2. et la 2.95.3. ! Sachez que l'on n'installe pas GCC pour le plaisir de le faire. C'est une tape quasiment ncessaire. Cependant, il est lgitime que vous vous posiez quelques questions. La premire est : Quel est l'intrt d'installer la dernire version de GCC pour celui qui ne veut pas programmer ? . Eh bien tout simplement de ne pas avoir de problmes avec des programmes rcents dont seuls les sources sont disponibles. Il est probable qu'un jour ou un autre vous trouviez des sources qui ne compilent tout simplement pas avec GCC 2.7.2. Dans ce cas, vous serez oblig d'installer la dernire version de GCC, alors autant le faire tout de suite. Une autre question peut survenir, surtout si vous avez entendu parler de rumeurs peu rassurantes propos du noyau de Linux : N'y a-t-il pas un risque si l'on compile le noyau de Linux avec une version rcente de GCC ? . La rponse est non, pour deux raisons. Premirement, il y avait bien un problme avec les
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 280

M. Elie Degny Raphael

versions 2.0. Du noyau, mais ce problme a t rsolu partir de la version 2.2. Deuximement, les difficults que l'on rencontre lors de la compilation du noyau avec les nouvelles versions de GCC proviennent de quelques fonctions mal crites dans le noyau, qui ne compilent pas correctement avec une option d'optimisation qui a t ajoute rcemment GCC. Par consquent, il suffit de dsactiver cette option pour ne plus avoir de problmes. Les fichiers makefile des noyaux rcents le font automatiquement. Ce problme est dcrit plus en dtail dans le chapitre traitant de la compilation du noyau. Certaines distributions fournissent galement la version 1.1.2. du systme de compilation exprimental de GNU ( EGCS en anglais, abrviation de Experimental GNU Compilation System ). Cet outil est une version de dveloppement de GCC, et a deux inconvnients majeurs :

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

En clair, si la version 1.1.2. d'EGCS est actuellement fournie avec votre distribution, c'est parce que celle-ci a t diffuse avant la sortie de GCC 2.95.3. Il faut donc choisir ce dernier de prfrence. Note : Il est galement assez courant de voir distribues des versions 2.96 et 2.97 de GCC. Ces versions n'ont rien d'officiel, et sont des versions de dveloppement qui doivent normalement conduire la version finale 3.0 de GCC. Il ne faut pas les utiliser, elles ne sont pas stables, et aucun programme ne requiert actuellement les fonctionnalits du futur GCC 3.0. Celui-ci sera disponible avant que cet tat de fait ne change. 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-2.95.3.tar.gz . Il est inutile, avec cette version, de rcuprer la librairie standard C++, car elle est fournie avec les sources de GCC. Il va de soi que si, au moment o vous lisez ce document, la version 3.0 de GCC est diffuse, il faut rcuprer les sources de cette version. Un autre prrequis est bien entendu que vous disposiez galement d'un compilateur C sur votre systme. Ce compilateur peut trs bien tre une ancienne version de GCC, mais il est impratif de disposez 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.
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 281

M. Elie Degny Raphael

Installation des sources Lorsque vous aurez install le compilateur C natif de votre systme, vous devrez dcomprimer les sources de GCC. Cela doit se faire avec la commande suivante : tar xvfz archive o archive est le nom de l'archive comprime contenant ces sources. Dans notre cas, ce doit tre gcc-2.95.3.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. 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 fortement conseill de passer l'option --enableshared, qui permet d'utiliser les bibliothques dynamiques. Il est galement recommand de fournir l'option --enable-threads, qui permet d'activer le support du multithreading pour le langage Objective C (c'est un langage objet driv du C, gr par GCC en marge du C++ et qui n'est pas trs courant, mais suffisamment utilis pour qu'on ne puisse pas s'en passer). Ces fonctionnalits tant disponibles sous Linux, autant les utiliser. 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-shared --host=hte o hte est de la forme ix86-pc-linux-gnu . --enable-threads

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,
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 282

M. Elie Degny Raphael

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 --with-local-prefix=/usr \ --with-gxx-include-dir=/usr/include/g++ la ligne de commande de configure. 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 150 Mo d'espace disque, et une bonne demi-heure sur une machine 500 Mhz. Cela est d la technique employe par GCC lors de la compilation. La plupart des compilateurs C ne sont pas capables de compiler GCC avec toutes ses fonctionnalits. C'est pour cela que la compilation se passe en trois tapes :

une version allge de GCC est compile avec le compilateur natif dans une premire passe ; cette version est utilise pour compiler la version complte de GCC ; la version complte est utilise pour se recompiler, 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 Cette commande doit tre excute partir du rpertoire de compilation objdir. 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 librairie standard C++. Compilation du noyau de 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 lien, les modules du noyau tant fournis sous la forme de fichiers objets. La compilation ou l'dition de lien du noyau est
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 283

M. Elie Degny Raphael

une opration technique qui peut surprendre un habitu des systmes ferms que sont par exemple Windows 95 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 install sur votre systme ? La compilation du noyau de Linux ncessite de disposer des dernires sources du noyau (version 2.4.4. au 28/04/2001) et d'un compilateur. Il est vident que le compilateur idal est le compilateur GNU C/C++ GCC. On utilisera une version 2.7.2. ou suprieure de GCC. On prendra garde au fait que les versions de GCC suprieures 2.95. ne peuvent pas tre utilises pour compiler les noyaux de version 2.2.10. ou moins. En effet, les compilateurs rcents utilisent des optimisations qui sont incompatibles avec certaines constructions utilises par ces noyaux (en ralit, ces constructions sont fausses, mais ne posent de problmes qu'avec les compilateurs rcents). Je supposerai dans la suite de ce document que vous disposez de la dernire version du noyau, savoir la version 2.4.4. La compilation du noyau n'est pas trs difficile, cependant, elle ncessite de rpondre correctement aux questions de configuration. Les erreurs peuvent tre multiples, et seront fatales. Il est donc fortement conseill de disposer d'une disquette de dmarrage afin de rparer le systme en cas d'erreur. Par 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 galement dcrites en dtail plus loin. La compilation du noyau se passe en quatre tapes :

installation des fichiers sources ; rponse aux questions de configuration ; compilation proprement dite ; installation du nouveau noyau.

Installation des sources de Linux Les sources du noyau peuvent tre trouves sur le site kernel.org. Il est possible de rcuprer les sources compltes, sous la forme d'une archive comprime d'environ 17 Mo. Toutefois, si l'on dispose dj d'une version complte des fichiers sources, il est envisageable de ne tlcharger que les patches. Il est recommand d'installer les sources du noyau dans un rpertoire /usr/src/linux<version>/ et d'diter un lien symbolique vers ce rpertoire sous le nom /usr/src/linux/. Cela permet de conserver plusieurs jeux de sources de versions diffrentes, et de travailler sur la version courante sous /usr/src/linux/. Les commandes suivantes permettront d'extraire les sources dans le rpertoire ddi au sources de Linux. Elles supposent qu'il existe dj un lien symbolique /usr/src/linux/ vers le rpertoire des fichiers sources actuels de Linux :
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 284

M. Elie Degny Raphael

cd /usr/src rm linux mkdir linux-2.4.4 ln -s linux-2.4.4 linux tar xvfz linux-2.4.4.tar.gz Si l'on dispose dj d'une version complte des fichiers sources, et que l'on dsire appliquer un patch, il faut dcomprimer le fichier de patch avec la commande suivante : gunzip fichier.gz O fichier.gz reprsente le fichier de patch comprim (en supposant qu'il ait t comprim l'aide de gzip). L'application du patch se fait de la manire suivante : patch -p0 < fichier Cette commande doit tre lance partir du rpertoire /usr/src/. Elle suppose que les fichiers sources de Linux pourront tre trouves dans le rpertoire ./linux/. Dans cette ligne de commande, fichier reprsente le nom du fichier de patch prcdemment dcomprim, et l'option -p0 indique au programme patch d'utiliser les noms de rpertoires relatifs au rpertoire courant ( savoir ./linux/). Si les sources sont installes dans un autre rpertoire, il faudra modifier l'option -px passe en paramtre au programme patch. Consultez la page de manuel patch pour plus de dtails sur cette option. Il est recommand de tlcharger au moins une fois les sources compltes du noyau, et de ne pas utiliser les sources fournies avec la distribution que vous utilisez. En effet, certaines distributions modifient les sources et on ne peut donc pas leur appliquer les patches standards. Lancement du programme de configuration 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 plus convivial d'utiliser la version Tcl/Tk sous X11. Cette version donne l'accs aux diffrentes options sans un ordre quelconque, et ne prsente que les options ralisables tant donnes celles dj fixes. Cette mthode est videmment la mthode conseille. Pour l'utiliser, il suffit de taper la commande suivante : make xconfig Si l'on ne dispose pas encore de X11, ce qui est probablement le cas lors d'une premire installation, on peut utiliser la version texte avec menu en tapant la commande suivante :
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 285

M. Elie Degny Raphael

make menuconfig 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 alors le systme ne pourrait pas dmarrer. Choix des options de configuration Les questions poses 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 problme. Vous devrez cependant certainement les adapter selon vos besoins. Je tiens galement 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. Afin de se prmunir contre tout mauvais choix, il est impratif de suivre pas pas les recommandations donnes dans les paragraphes concernant l'installation du nouveau noyau et suivants. Ces recommandations stipulent simplement qu'il faut conserver le noyau actuel tant que l'on n'est pas sr que le noyau que l'on installe fonctionne parfaitement. Menu Code maturity level options Ce menu donne accs aux fonctionnalits en cours de dveloppement. Il est dconseill de rpondre 'Y', sauf si des drivers particuliers sont ncessaires. Si l'on rpond 'N', les questions de configuration concernant ces fonctionnalits ne seront pas poses. Menu Loadable module support L'option Enable loadable module support permet l'emploi des modules par le systme. Il est recommand de rpondre 'Y' cette question. L'option Set version information on all module symbols permet d'enregistrer des informations de version dans les modules du noyau. Cette fonctionnalit autorise l'emploi des modules des versions prcdentes, par l'intermdiaire du programme modprobe. En particulier, cela est ncessaire si vous dsirez utiliser des modules non fournis dans les sources du noyau (par exemple des drivers commerciaux). Par ailleurs, si vous dsactivez cette fonctionnalit, il faudra recompiler tous les modules chaque fois que vous changerez de noyau. Il est donc recommand de rpondre par 'Y' cette question.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

286

M. Elie Degny Raphael

L'option Kernel module loader donne la possibilit au noyau de charger luimme les modules du noyau. Cette fonctionnalit est ncessaire pour la bonne marche du systme, aussi est-il recommand de rpondre par 'Y' cette question. Menu Processor type and features 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 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'. L'option /dev/cpu/microcode - Intel P6 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 bug 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 de plus d'un Go 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 . La rponse recommande est off .

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

287

M. Elie Degny Raphael

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 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 Symetric multi-processing support permet d'activer le support des cartes mres multi-processeurs. La plupart des gens n'en disposant pas, vous pouvez rpondre 'N' cette question. L'option APIC and 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. Menu General setup L'option Networking support permet d'activer le support rseau. Les systmes Unix tant profondment bass sur les rseaux, il faut rpondre par 'Y'. L'option SGI Visual Workstation support permet de gnrer un noyau pour les stations de travail Silicon Graphics de type 320 ou 540. Ces stations utilisent des processeurs x86, mais sont bass sur des composants systmes diffrents. moins que vous n'ayez une telle machine, rpondez par 'N'. L'option PCI support permet d'activer le support des ordinateurs base de PCI. Si vous avez un ordinateur rcent, rpondez par 'Y'. L'option PCI access mode permet de slectionner le composant qui initialisera les bus PCI. Si vous avez un ordinateur rcent, avec un BIOS rcent, choisissez BIOS . Sinon, choisissez Direct . Le choix Any permet de demander Linux 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 PCI device name database permet d'inclure dans le noyau une liste de noms de priphriques PCI. Cette table est utilise pour fournir des noms humainement lisibles pour les priphriques PCI dans le systme de fichiers virtuels /proc/. Elle accrot sensiblement la taille du noyau, mais ne consomme pas de mmoire supplmentaire une fois que la phase d'amorage termine. Il est donc recommand d'activer cette fonctionnalit, moins que vous ne cherchiez faire un systme embarqu ou une disquette d'amorage. La rponse recommande est donc 'Y'.
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 288

M. Elie Degny Raphael

L'option EISA support permet d'activer la gestion des bus EISA. Ce bus a dsormais compltement t remplac par le bus PCI, aussi devriez-vous rpondre par 'N', moins que vous ne disposiez d'une machine trs ancienne. L'option MCA support permet d'activer la gestion des bus MCA (pour les PS/2 d'IBM). moins que vous n'ayez un PS/2, rpondez par '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 recontre couramment les cartes PCMCIA des portables, mais galement les priphriques USB. Cette option est ncessaire l'utilisation des cartes PCMCIA sur les portables. Elle vous donnera l'accs l'option 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). Cette option est facultative pour l'utilisation des priphriques USB, toutefois, ces priphriques ne seront pas configurs automatiquement lorsque vous les connecterez chaud si vous ne l'activez pas. Pour que la configuration des priphriques USB connects chaud fonctionne, vous devez galement activer la gestion des modules du noyau, ainsi que l'option Kernel module loader . Lorsqu'un priphrique sera connect, le noyau appelera alors le programme de configuration /sbin/hotplug pour charger le gestionnaire de priphrique appropri. La rponse recommande est 'Y'. L'option System V IPC permet d'activer la gestion des communications interprocessus compatibles System V. C'est quasiment un standard sur tous les systmes Unix, il faut donc rpondre par 'Y'. L'option BSD Process Accounting permet d'activer le monitoring des applications utilis sur les systmes BSD. Ce monitoring peut tre utilis par quelques applications, aussi est-il recommand de rpondre par 'Y'. L'option Sysctl support permet de modifier dynamiquement certains paramtres du noyau sans recompilation ni redmarrage. Il est recommand de rpondre par 'Y' cette question. L'option Kernel core (/proc/kcore) format permet de choisir le format de fichier binaire pour le fichier kcore du systme de fichiers virtuels /proc/. Ce fichier contient la reprsentation de la mmoire vive du systme telle qu'elle est vue par le noyau, et peut tre utilis pour le dbogage du noyau. Les diffrents formats de fichiers binaires sont A.OUT , un ancien format de fichier dsormais obsolte, ou ELF (abrviation de l'anglais Executable and Linking Format ), le format de fichier actuel. La rponse recommande est ELF . L'option Kernel support for a.out binaries permet d'utiliser les programmes dont le format de fichier binaire est le format a.out . Bien que ce format de fichier binaire soit obsolte, il se peut que vous rencontriez de vielles applications qui

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

289

M. Elie Degny Raphael

n'ont pas t recompiles et qui l'utilisent encore. Il est donc recommand d'activer la gestion de ce format : rpondez par 'Y'. 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 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 Power Management support permet d'activer la gestion d'nergie sur votre machine. Il existe actuellement deux protocoles de gestion d'nergie sur les PCI : 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 de stabilit du systme. Ces deux protocoles peuvent tre paramtrs respectivement avec les deux jeux d'options suivantes. La rponse recommande est 'Y'. L'option ACPI support permet d'activer la gestion du protocole de gestion d'nergie ACPI. Ce protocole 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. 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, ce qui peut provoquer des plantages indits. La rponse recommande est donc 'N', moins que vous ne soyez sr que votre matriel est 100% compatible ACPI. Notes que si vous choisissez d'activer le protocole de gestion d'nergie ACPI, celui-ci sera utilis en priorit par rapport au protocole APM. Il sera donc inutile d'activer la gestion de ce dernier. Les options suivantes permettent d'activer certaines fonctionnalits du protocole ACPI. L'option Advanced Power Management BIOS support 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 support par le matriel actuel. Il faut activer le support de la gestion d'nergie par APM si l'on veut que l'ordinateur s'teigne tout seul lors de l'arrt du systme. Il est donc recommand de rpondre par 'Y' cette question. Notez toutefois que cette fonctionnalit n'est disponible que pour les ordinateurs disposant d'un botier au format ATX. On remarquera que ce n'est pas la gestion d'nergie APM qui gre l'arrt des disques durs et la veille des moniteurs Green , il est possible d'avoir ces fonctionnalits mme si l'on n'a pas activ la gestion d'nergie APM. On notera galement que l'horloge logicielle de Linux prend du retard lorsque l'ordinateur passe en veille. Les options suivantes dpendent fortement de la configuration APM des

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

290

M. Elie Degny Raphael

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. Menu Memory Technology Devices (MTD) Ce menu vous permet d'activer la gestion des puces de mmoire Flash ou autre priphrique de mmoire persistante. Ce genre de priphrique est gnralement utilis pour raliser des systmes de 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 de drivers pour les diffrents matriels supports. La rponse recommande est 'N'. 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 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 driver de port parallle sous forme de module, vous devrez spcifier ces options dans le fichier /etc/modules.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-styles ports permet d'utiliser les outils PCMCIA pour les priphriques sur port parallles. La rponse recommande est 'N'.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

291

M. Elie Degny Raphael

L'option Sparc hardware (EXPERIMENTAL) permet de prendre en charge les ports parallles des vieilles stations Sparc de Sun. Les nouvelles stations Ultra Sparc utilisent prsent des ports parallles de PC, et peu de gens ont utiliser cette option. La rponse recommande est 'N'. L'option Support foreign hardware permet d'activer la gestion de matriels exotiques pour le port parallle. Il est recommand de rpondre 'N' cette question. L'option IEEE 1284 transfer modes permet de paramtrer le driver du port parallle pour utiliser les communications bidirectionnelles du port. Cette option est utile si l'on utiliser 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'. Menu Plug and Play configuration 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 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 drivers de ces priphriques en modules. La configuration de ces priphriques ISA Plug and Play en est donc grandement simplifie. Il est donc recommand de rpondre par 'Y' cette question. Toutefois, si vous dsirez affecter manuellement les lignes d'interruptions, canaux DMA et ports d'entre/sortie pour vos cartes, vous devez rpondre par 'N'.

Menu Block devices L'option Normal PC floppy disk support permet d'activer la gestion des lecteurs de disquettes sous Linux. Vous pouvez rpondre par 'Y' cette question. 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.
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 292

M. Elie Degny Raphael

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 driver. 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'. L'option Mylex DAC960/DAC1100 PCI RAID Controler support permet d'activer la gestion des contrleurs RAID Mylex. La rponse recommande est 'N'.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

293

M. Elie Degny Raphael

L'option Loopback device support permet d'utiliser des fichiers classiques pour y placer un systme de fichier. Cela est essentiellement utilis pour crer des images de CD et les tester avant de les graver. Si vous disposez d'un graveur de CDROM, 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 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 RAM disk support permet d'activer la gestion des disques virtuels. Ces disques sont souvent utiliss pour crer des disquettes de rparation, qui chargent les utilitaires systmes sur un disque en mmoire. La rponse recommande est 'N' pour un systme normal, et 'Y' pour un systme destin tre plac sur une disquette de rparation. L'option Default RAM disk size permet de fixer la taille par dfaut des disques virtuels. La taille recommande est de 4096 Ko. L'option Initial RAM disk (initrd) support permet d'activer la possibilit de monter le systme de fichier racine sur un disque virtuel au dmarrage. La rponse recommande est 'N' pour un systme normal, 'Y' pour un systme destin tre plac sur une disquette de rparation. 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 disques logiques. La technologie RAID permet de raliser des 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. Vous pouvez rpondre par 'Y' cette question si vous avez besoin de l'un 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 294

M. Elie Degny Raphael

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-4/RAID-5 mode permet d'activer le support logiciel RAID-4 ou RAID-5. Dans le mode de fonctionnement RAID-4, un des disques est utilis pour contrler la validit des donnes sur les autres disques. Dans le mode de fonctionnement RAID-5, ces donnes de contrle sont rparties sur tous les disques, pour une capacit toujours diminue de la capacit de l'un des disques. La rponse recommande est 'N'. L'option Logical volume manager (LVM) 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. La rponse recommande est 'N'. L'option LVM information in proc filesystem permet d'ajouter des informations sur les volumes virtuels LVM dans le systme de fichiers virtuel /proc/. La rponse recommande est 'N'. 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 Kernel/User netlink socket permet d'activer un mcanisme de communication interprocessus bas sur les sockets. Quelques applications peuvent utiliser cette interface, et certaines fonctionnalits du noyau utilisent elles-mmes cette interface pour publier des informations utilisables par les programmes clients. La manire dont ce protocole fonctionne est assez complique. Elle utilise des fichiers spciaux de priphriques placs dans le rpertoire /dev/. Les fichiers spciaux utiliss par cette interface de communication disposent tous du mme code majeur, qui vaut 36. La nature des informations qui transitent par ces fichiers spciaux est dpendante de leur code mineur. La rponse recommande est 'N'.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

295

M. Elie Degny Raphael

L'option Routing messages permet d'obtenir des informations sur le routage rseau par l'intermdiaire du fichier spcial de code majeur 36 et mineur 0. La rponse recommande est 'N'. L'option Netlink device emulation est obsolte et n'est plus utilise. Rpondez par 'Y' cette question pour assurer la compatibilit avec d'ventuels vieux programmes. L'option Network packet filtering (replaces ipchains) 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 Firewall et de partages de connexions Internet. Pour information, un Firewall 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'adresses des paquets TCP/IP. Vous devez activer cette option si vous dsirez raliser un partage de connexion Internet ou un Firewall. La rponse recommande est 'N'. 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 des noyaux et du masquerading, aussi la rponse recommande est-elle 'Y'. L'option Socket Filtering active la fonctionnalit permettant aux programmes utilisateurs d'enregistrer un filtre pour chaque socket. Ce filtre indique au noyau si les paquets correspondants doivent tre transmis ou rejets. Ce type de filtres est trs utilis pour la ralisation de Firewall volus, ou d'outil d'analyse de trafic du rseau. Dautres programmes peuvent utiliser cette fonctionnalit pour analyser les paquets qui circulent sur le rseau. C'est en particulier le cas des clients et des serveurs DHCP, aussi la rponse recommande est-elle 'Y'. L'option Unix domain sockets permet d'activer les sockets de types Unix. Comme la plupart des programmes Unix utilisent ce paradigme de communication, il faut rpondre 'Y' cette question. 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'.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

296

M. Elie Degny Raphael

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 IP: policy routing permet d'activer le routage des paquets en fonction des adresses sources en plus des adresses destinations des paquets. La rponse recommande est 'N'. L'option IP: use netfilter MARK value as routing key permet d'activer le routage en fonction du champ MARK des paquets en plus des adresses destination. Le champ MARK est utilis par les fonctionnalits de filtrage du noyau, et permet d'identifier certains paquets pour leur faire subir des traitements ultrieurs. Parmi ces traitements, on peut utiliser un routage spcifique, ce que cette option permet de raliser. La rponse recommande est 'N'. L'option IP: fast network address translation permet de convertir les adresses source et destination des paquets qui passent par l'ordinateur selon une mthode prdtermine. Cette fonctionnalit n'est pas ncessaire pour raliser le masquerading, aussi la rponse recommande est-elle 'N'. L'option IP: equal cost multipath permet de choisir une route possible parmi plusieurs routes de manire non dterministe pour un paquet donn. La rponse recommande est 'N'. L'option IP: use TOS value as routing key permet de prendre en compte le type de service auquel appartient le paquet courant dans la dtermination de la route. La rponse recommande est 'N'. L'option IP: verbose route monitoring permet d'activer les traces du soussystme de routage. La rponse recommande est 'N'. L'option IP: large routing tables permet d'accrotre la taille des tables de routage et d'augmenter ainsi leur rapidit d'excution pour les grands rseaux. 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 fichier root par NFS. 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 297

M. Elie Degny Raphael

protocole est un protocole plus ancien 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 Explicit Congestion Notification support n'est pas encore documente. Elle ne sera donc pas traite dans ce document. 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 rseau. 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 The IPv6 protocol (EXPERIMENTAL) permet d'activer la gestion du protocole IPv6. La rponse recommande est 'N'.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

298

M. Elie Degny Raphael

L'option IPv6: enable EUI-64 token format permet d'utiliser le format d'adresse EUI-64, qui est le nouveau format d'adresse utilis par le protocole IPv6. Il faut rpondre 'Y' cette question si l'environnement rseau utilise ce nouveau format, et 'N' dans le cas contraire. La rponse recommande est 'N'. L'option IPv6: disable provider based addresses permet de dsactiver compltement l'ancien adressage d'IPv6. Cette option doit tre choisie lorsque l'environnement rseau a compltement t bascul vers le nouveau mode d'adressage, ou si des problmes apparaissent en raison de conflits entre les deux modes d'adressage dans un rseau qui n'a t que partiellement migr en IPv6. La rponse recommande est 'N'. L'option IPv6: routing messages via old netlink permet d'obtenir les informations de routage de manire compatible avec l'ancien protocole (IPv4 ?). La rponse recommande est 'N'. L'option Kernel httpd acceleration (EXPERIMENTAL) est une option permettant d'intgrer un petit serveur Web trs optimis au sein d'un thread du noyau. Ce serveur n'est capable de dlivrer que des pages statiques, mais d'une manire extrmement efficace car toutes les oprations sont effectues au sein du noyau. Lorsqu'une requte HTTP ne peut pas tre excute par le thread du noyau, celui-ci peut transfrer la requte un serveur Web classique, comme Apache par exemple, afin que celui-ci y rponde. Cette fonctionnalit est exprimentale et intgre au sein du noyau du code classiquement situ dans les applicatifs utilisateur. Aussi est-il vivement recommand de rpondre 'N' cette question et de laisser de ct cette fonctionnalit. 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. Vous pouvez rpondre par 'Y' cette question si vous tes connects un rseau ATM. La rponse recommande est 'N'. L'option Classical IP over ATM 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 . La rponse recommande est 'N'. 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. La rponse recommande est 'N'.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

299

M. Elie Degny Raphael

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. La rponse recommande est 'N'. 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. La rponse recommande est 'N'. L'option The IPX protocol permet de prendre en charge le protocole rseau IPX de Novell. La rponse recommande est 'N'. L'option IPX: Full internal IPX network 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 rediriges vers des nuds grs en interne pour ce rseau virtuel. La rponse recommande est 'N'. L'option Appletalk protocol support permet d'activer la gestion des rseaux AppleTalk. 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). La rponse recommande est 'N'. L'option DECnet: SIOCGIFCONF support permet de paramtrer les interfaces rseaux via un appel systme spcial. La validation de cette option peut provoquer des problmes avec certains utilitaires, aussi la rponse recommande est-elle 'N'. L'option DECnet: router support (EXPERIMENTAL) permet d'activer les fonctionnalits de routage sur les rseaux DECnet. La rponse recommande est 'N'. L'option DECnet: use FWMARK value as routing key (EXPERIMENTAL) permet d'tablir des rgles de routage pour les rseaux DECnet qui se basent sur la valeur du champ MARK de ces paquets. Cette valeur peut tre modifie par le code de filtrage des paquets du noyau l'aide des rgles de firewalling. La rponse recommande 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 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'.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

300

M. Elie Degny Raphael

L'option 802.2 LLC (EXPERIMENTAL) permet d'encapsuler le protocole X.25 sur Ethernet. La rponse recommande est 'N'. L'option Frame Diverter (EXPERIMENTAL) active une fonctionnalit permettant de dtourner les trames rseaux qui arrivent sur l'interface rseau, mme si ces trames ne sont pas destines l'interface rseau courante. Grce cette option, il est facile de raliser des analyseurs rseau ou d'intercaler une machine Linux entre deux rseaux et de la configurer comme un pont afin de raliser un cache transparent pour certains protocoles. La rponse recommande est 'N'. L'option Acorn Econet/AUN protocols (EXPERIMENTAL) permet d'activer la gestion des rseaux Econet. La rponse recommande est 'N'. L'option AUN over UDP permet d'encapsuler les paquets Econet dans UDP. La rponse recommande est 'N'. L'option Native Econet permet de prendre en charge les cartes rseau Econet. La rponse recommande est 'N'. 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'. L'option Fast switching (read help!) permet d'activer la communication entre les machines directement par l'intermdiaire des interfaces rseau. Cette option est incompatible avec les fonctionnalits de filtrage du noyau. Vous ne devez donc pas l'activer si vous dsirez raliser un Firewall ou partager une connexion Internet. La rponse recommande est 'N'. L'option Forwarding between high speed interfaces permet de configurer les drivers rseaux pour attendre avant de rmettre les paquets en cas de congestion extrme du rseau. La rponse recommande est 'N'. Menu IP: Netfilter Configuration L'option Connection tracking (required for masq/NAT) permet de suivre la connexions courantes afin de dterminer quelle connexion un paquet appartient. Cela peut tre utile si l'on dsire crer des rgles de filtrage des paquets se basant sur les informations de gestion de connexions pour les protocoles comme TCP. Cette option est galement ncessaire pour utiliser les mcanismes de translation d'adresses, vous devrez donc l'activer si vous dsirez effectuer un partage de connexion Internet. La rponse recommande est 'N'. 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'.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

301

M. Elie Degny Raphael

L'option Userspace queueing via NETLINK (EXPERIMENTAL) permet de mettre disposition de programmes clients les paquets traits par le code de filtrage, par l'intermdiaire de l'interface Netlink. 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 '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 chaque paquet qui vrifie certaines rgles, afin d'viter l'engorgement des fichiers de traces du systme. La rponse recommande est 'N'. 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 netfilter MARK match support active la gestion du critre de slection des paquets bas sur le champ MARK de leur en-tte. Ce champ peut tre modifi par certaines rgles des chanes prcdemment traverses par les paquets, afin de les marquer pour un traitement ultrieur. Cette option doit donc obligatoirement tre active si l'on dsire dtecter ces paquets pour effectuer ce traitement. 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 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 'N'. L'option tcpmss match support permet de prendre en compte de champ MSS des paquets de demande de connexion dans les critres de slection. Ce champ indique

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

302

M. Elie Degny Raphael

la taille maximale que les paquets de cette connexion devront utiliser pas la suite. La rponse recommande est 'N'. L'option Connection state match support permet de slectionner les paquets selon leur rle dans la gestion des connexions rseaux. Par exemple, cette option permet de distinguer les paquets qui tablissent une connexion rseau des autres paquets. La rponse recommande est 'Y'. L'option Unclean match support (EXPERIMENTAL) permet de slectionner les paquets dont les en-ttes IP ne sont pas corrects ou contiennent des valeurs incohrentes. Ces paquets doivent d'abord avoir travers le code de validation de l'intgrit des paquets des interfaces rseau pour pouvoir tre filtrs selon ce critre. 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 Packet filtering active la gestion de la table filter, couramment utilise pour filtrer les paquets autoriss et raliser un Firewall. La rponse recommande est 'N'. 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 MIRROR target support (EXPERIMENTAL) active la gestion de la cible MIRROR, qui permet de renvoyer l'metteur les paquets qui sont dirigs vers cette cible dans une rgle de filtrage. La rponse recommande est 'N'. L'option Full NAT active les fonctionnalits de translation d'adresse, au travers de la table nat. Cette option doit tre active si vous dsirez raliser un partage de connexion Internet. Dans le cas contraire, la rponse recommande est 'N'. 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 'N'. L'option REDIRECT target support active la gestion de la translation d'adresses destination pour rediriger les paquets vers la machine locale. Cette option est trs utilise pour raliser des proxies qui devront fonctionner de manire transparente pour les clients. La rponse recommande est 'N'.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

303

M. Elie Degny Raphael

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 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 LOG target support active la gestion de la cible LOG. Cette cible permet d'enregistrer des messages de dbogage dans les fichiers de trace du systme. On veillera activer galement la gestion des limites sur les rgles de filtrages afin d'viter d'engorger les fichiers de traces si l'on dsire utiliser cette option. La rponse recommande est 'N'. L'option TCPMSS target support active la gestion de la cible TCPMSS, qui permet de modifier le champ MSS des paquets TCP. Cette cible est utilise gnralement pour rduire cette taille la valeur fixe par le champ MTU des interfaces rseau, afin de prvenir la perte de paquets quand cette taille n'est pas correctement dfinie. Cela peut se produire avec certains fournisseurs d'accs Internet, dont les passerelles sont mal configures. En gnral, vous pouvez rpondre 'n' cette question. L'option ipchains (2.2-style) support n'est disponible que si l'on utilise les modules du noyau pour Netfilter. Elle permet d'utiliser les outils de configuration des Firewall et des translations d'adresses ipchains, qui taient utiliss avec les noyaux 2.2. de Linux. Il s'agit donc d'une option de compatibilit. On prfrera dornavant la commande iptables, aussi la rponse recommande est-elle 'N'. L'option ipfwadm (2.0-style) support n'est disponible que si l'on utilise les modules du noyau pour Netfilter. Elle permet d'utiliser les outils de configuration des Firewall et des translations d'adresses ipfwadm, qui taient utiliss avec les noyaux 2.0. de Linux. Il s'agit donc d'une option de compatibilit. On prfrera dornavant la commande iptables, aussi la rponse recommande est-elle 'N'. Menu IPv6: Netfilter Configuration 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'.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

304

M. Elie Degny Raphael

L'option limit match support permet d'activer la gestion des limites sur le nombre de fois par seconde qu'une rgle peut tre vrifie. Cette option permet par exemple d'viter d'engorger les fichiers de traces du systme lorsqu'un grand nombre de rgles sont vrifies. La rponse recommande est 'N'. L'option netfilter MARK match support permet d'activer la gestion du critre de slection des paquets bas sur le champ MARK de leur en-tte. Ce champ peut tre modifi par les rgles de la chane mangle, comme pour le protocole IPv4. 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 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 MARK target support permet de prendre en charge la gestion de la cible MARK, afin de marquer les paquets vrifiant certaines rgles, par exemple pour effectuer un traitement ultrieur. La rponse recommande est 'N'. Menu QoS and/or fair queueing L'option QoS and/or fair queuing (EXPERIMENTAL) 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. 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'.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

305

M. Elie Degny Raphael

Menu ATA/IDE/MFM/RLL support L'option ATA/IDE/MFM/RLL support permet d'activer la gestion des disques durs et autres priphriques IDE. La rponse recommande est 'Y'. Les options spcifiques chaque type de contrleur sont accessibles dans le sous-menu IDE, ATA and ATAPI Block devices . Menu IDE, ATA and ATAPI Block devices 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. Il est recommand de rpondre par 'Y' cette question. L'option Use old disk-only driver on primary interface permet d'utiliser un vieux driver pour les disques IDE connects la premire interface IDE et qui poseraient quelques problmes avec le driver gnral. Seule la premire interface sera concerne par cette option, les autres interfaces utiliseront le nouveau driver. En gnral, la rponse cette question est 'N'. 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 la gestion du mode de transfert multiple par dfaut. Cette option n'est ncessaire que pour quelques cas particuliers, aussi la rponse recommande est-elle 'N'. Il suit un certain nombre d'options permettant d'activer des fonctionnalits spcifiques aux principales grandes marques de disque dur. Ces options ne sont pas encore disponibles, et ne sont pas encore documentes. Elles ne seront donc pas dcrites ici. 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 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. On essaiera d'utiliser cette fonctionnalit sous forme de module de prfrence, parce que cette fonctionnalit
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 306

M. Elie Degny Raphael

n'est pas ncessaire en permanence. Cependant, si vous disposez d'un graveur de CDROM, il est recommand de ne pas activer cette fonctionnalit. L'accs aux priphriques IDE ATAPI se fera alors par l'intermdiaire de l'mulateur de priphriques SCSI. Si vous disposez d'un lecteur de CD-ROM IDE et que ne voulez pas utiliser l'mulation SCSI, vous pouvez rpondre 'Y' cette question. Rpondez par 'N' si vous ne possdez pas de lecteurs de CD-ROM IDE et si vous ne voudrez pas en installer un ultrieurement. La rponse recommande est 'M'. L'option Include IDE/ATAPI TAPE support permet d'inclure la gestion des priphriques de sauvegarde bande IDE et ATAPI (streamers). Peu de gens disposent de tels priphriques, et ceux qui en ont un ne l'utilisent que pour les sauvegardes, il est donc conseill de rpondre par 'M' cette question si vous possdez un tel priphrique, et par 'N' sinon. 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 SCSI par un priphrique IDE en convertissant les requtes SCSI en requtes ATAPI. Cette fonctionnalit est utile lorsqu'on veut utiliser certains logiciels bas niveau qui ne peuvent travailler qu'avec des priphriques SCSI. C'est en particulier le cas des logiciel de gravage de CD. On notera que cette fonctionnalit ne sera pas activable si le pilote IDE est actif. Il est donc ncessaire d'utiliser celui-ci sous la forme de module, ou de ne pas l'utiliser du tout. La rponse recommande est 'N' si vous ne disposez pas d'un graveur de CD-ROM ATAPI, et 'Y' dans le cas contraire. L'option CMD640 chipset bugfix/support permet de contourner une bogue des chipsets IDE CMD640. Vous ne devez activer cette option que 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'autodtection des paramtre idaux pour les chipset 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 ISA-PNP EIDE support permet de prendre en charge la gestion des cartes ISA Plug and Play prenant en charge des disques EIDE additionnels. Cette option peut tre ncessaire si ces cartes doivent tre initialises avant de chercher utiliser les disques qui y sont connectes. La rponse recommande est 'N'. L'option RZ1000 chipset bugfix/support permet de contourner une bogue des chipsets RZ1000. Vous ne devez activer cette option que si vous disposez d'un tel chipset. La rponse recommande est 'Y' si vous avez un tel chipset, et 'N' sinon.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

307

M. Elie Degny Raphael

L'option Generic 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. 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 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 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. 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 ATA Work(s) In Progress (EXPERIMENTAL) donne l'accs des fonctionnalits extrmement exprimentales concernant les disques IDE. La rponse recommande est 'N'. 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'. Menu SCSI support L'option SCSI 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 priphriques SCSI et ne comptent pas en utiliser peuvent
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 308

M. Elie Degny Raphael

rpondre 'N' cette question. En revanche, ceux qui disposent d'un priphrique ATAPI pour lequel ils n'ont pas de drivers, et pour lequel ils utilisent la couche d'mulation SCSI, doivent activer cette fonctionnalit. C'est en particulier le cas si vous avez un graveur de CD. Dans ce cas, il est recommand de rpondre 'Y' cette question. Mme dans les autres cas, il est conseill de rpondre par 'M' cette question, afin de se rserver la possibilit de connecter ultrieurement un lecteur ZIP connect sur port parallle, qui ncessitera alors le support SCSI. 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. La rponse recommande est donc 'M'. L'option Maximum number of SCSI disks that can be loaded as modules permet de fixer le nombre maximal de disques SCSI qui pourront tre utiliss si les drivers SCSI du noyau sont chargs en tant que modules. Il est recommand de laisser la valeur par dfaut dans ce champ. 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 driver gnrique, mais peuvent tre utiliss malgr tout en activant l'option suivante SCSI OnStream SC-x0 tape support . Le driver 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 CD multisessions NEC/TOSHIBA et les graveurs de CD HP. Pour la plupart des utilisateurs, la rponse recommande est 'N'. L'option Maximum number of CDROM devices that can be loaded as modules permet de fixer le nombre maximal de lecteurs de CDROM SCSI qui pourront tre utiliss si les drivers du noyau sont chargs en tant que modules. Il est recommand de laisser la valeur par dfaut dans ce champ. 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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

309

M. Elie Degny Raphael

utilisez un graveur de CD-ROM. Dans ce cas, la rponse recommande est 'Y'. Pour la plupart des utilisateurs, la rponse recommande est 'N'. L'option Enable extra checks in new queueing code permet d'activer des contrles supplmenaires dans les drivers SCSI. Si une erreur est dtecte, le systme s'arrtera en catastrophe immdiatement, limitant ainsi les risques de pertes de donnes ultrieurs. Si vous n'activez pas cette option, le systme continuera fonctionner normalement, mais les dgts risquent d'tre beaucoup plus importants terme si une erreur se produit. La rponse recommande est 'Y'. 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'. Menu SCSI low-level drivers Ce jeu d'options permet de slectionner le driver bas niveau SCSI adapt votre matriel. Il faut connatre la marque et le modle de votre adaptateur SCSI, ainsi que ses paramtres pour rpondre ces questions. Si vous utilisez l'mulation SCSI pour les priphriques ATAPI, il n'est pas ncessaire de choisir un driver bas niveau pour ceuxci. Menu PCMCIA SCSI adapter support L'option PCMCIA SCSI adapter support permet la prise en charge les priphriques SCSI au format PCMCIA. Les options qui suivent correspondent aux drivers des diffrents types de matriels SCSI au format PCMCIA que Linux est capable de grer. Vous devez donc choisir les drivers correspondants votre matriel. La rponse recommande est 'N'. Menu IEEE 1394 (FireWire) support L'option IEEE 1394 (FireWire) support (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. La rponse recommande est 'N'.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

310

M. Elie Degny Raphael

L'option Texas Instruments PCILynx support permet d'activer la gestion des drivers pour les cartes FireWire PCILynx de Texas Instruments. La rponse recommande est 'N'. L'option Use PCILynx local RAM permet d'utiliser la mmoire vive embarque dans certaines cartes PCILynx de Texas Instruments afin d'amliorer les performances. Ce type de carte est trs rare, et ce driver ne fonctionne pas du tout avec les cartes qui ne disposent pas de mmoire vive embarque, aussi faut-il rpondre 'N' cette question. L'option Support for non-IEEE1394 local ports permet d'accder aux ressources matrielles des cartes PCILynx par l'intermdiaire de fichiers spciaux de priphriques ddis, au lieu de passer par l'interface FireWire standard. La rponse recommande est 'N'. L'option OHCI (Open Host Controller Interface) 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 driver 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 Video 1394 support n'est pas documente et ne sera pas dcrite dans ce document. 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'. L'option Excessive debugging support est rserve pour les dveloppeurs de drivers. Elle permet de stocker sur disque toutes les informations transitant sur le bus FireWire, ce qui sature gnralement les disques durs extrmement rapidement. Il faut rpondre par 'N' cette question. Menu I2O 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 driver uniforme au niveau du systme d'exploitation pour toute une classe de priphriques. Ce driver uniforme ( OSM , abrviation de Operating System Module ) communique avec des drivers spcifiques chaque type de matriel, qui ne font aucune hypothse sur le systme d'exploitation utilis. Ainsi, il est possible d'crire des drivers communs tous les systmes d'exploitations. La rponse recommande est 'N'. Si vous rpondez par 'Y', vous devrez choisir le type de carte I2O installe et la liste des drivers I2O OSM que vous voulez utiliser.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

311

M. Elie Degny Raphael

Menu Network device support 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 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 rseaux 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 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 Ethertap network tap (OBSOLETE) n'est active que si l'option Kernel/User netlink socket a t active. Elle permet de grer un fichier

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

312

M. Elie Degny Raphael

spcial de type block et de numro majeur 36 et de numro mineur 16, qui fournit les donnes brutes d'une interface Ethernet. Ce fichier peut tre utilis par un programme pour envoyer et recevoir des trames Ethernet directement sur ce pseudo priphrique au plus bas niveau. Cette fonctionnalit est devenue obsolte depuis les noyaux 2.4, car ceux-ci proposent le mcanisme plus gnral de l'option Universal TUN/TAP device driver support . La rponse recommande est donc 'N'. L'option General Instruments Surfboard 1000 permet d'activer la gestion des cartes Sufboard 1000, qui sont gnralement utilises pour connecter un modem cble l'ordinateur. Ces modems permettent de recevoir des informations en provenance d'Internet haut dbit, mais ne permettent pas d'envoyer d'informations destination d'Internet. Le canal montant doit donc toujours tre ralis par une liaison tlphonique classique. 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 drivers 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 drivers 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. 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 fonctionnalit peut 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 313

M. Elie Degny Raphael

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 comprimer 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 comprimer les donnes transmises sur les connexions PPP. Cet algorithme est soumis un brevet logiciel, mais ces brevets sont illgaux en Europe et il est tout fait lgal de l'utiliser. Cependant, les taux de compressions obtenus sont infrieurs ceux de la mthode Deflate, aussi la rponse recommande est-elle 'N'. L'option PPP over Ethernet (EXPERIMENTAL) permet de raliser des connexions point point sur un rseau de type Ethernet. 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 enttes 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 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 driver pour les cartes Interphase base de chipset Tachyon. La rponse recommande est 'N'. L'option Red Creek Hardware VPN (EXPERIMENTAL) permet d'activer la gestion des cartes permettant de crer des rseaux privs virtuels. La rponse recommande est 'N'.
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 314

M. Elie Degny Raphael

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'. Menu ARCnet devices L'option ARCnet support permet d'activer la gestion des cartes de type ARCnet. Les options qui suivent correspondent aux diffrents drivers pour les diffrentes cartes de ce type. Si vous avez une carte de ce type, rpondez par 'M' ou 'Y' cette question et choisissez le driver correspondant votre matriel dans la suite du menu. La rponse recommande est 'N'. Menu AppleTalk devices L'option Appletalk interfaces support active la gestion des interfaces rseau Appletalk. Ce sont des interfaces rseau permettant de communiquer sur les rseaux Apple d'ancienne gnration. La rponse recommande est 'N'. Les options Apple/Farallon LocalTalk PC support et COPS LocalTalk PC support permettent de grer les adaptateurs LocalTalk pour PC. Les options qui suivent permettent de choisir les drivers appropris votre matriel. La rponse recommande est 'N'. L'option AppleTalk-IP driver support permet de se connecter un rseau utilisant le protocole IP via un adaptateur rseau AppleTalk. Cette fonctionnalit est exprimentale. La rponse recommande est 'N'. L'option IP to Appletalk-IP Encapsulation support permet d'encapsuler les paquets IP dans des paquets AppleTalk. Cette fonctionnalit est utilise par les machines Linux qui n'ont accs qu' un rseau Appletalk. La rponse recommande est 'N'. L'option Appletalk-IP to IP Decapsulation support permet d'extraire les paquets IP encapsuls dans des paquets IP. Cette fonctionnalit est utilise par les machines Linux qui font office de passerelles vers Internet pour les machines d'un rseau Appletalk. La rponse recommande est 'N'. 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 drivers pour les diffrentes cartes de ce type. Si vous avez une carte de ce type, rpondez par 'M' ou 'Y' cette question et choisissez le driver correspondant votre matriel dans la suite du menu. La rponse recommande est 'N'. La plupart des cartes rseau sont compatibles NE2000. Il existe deux types de drivers pour ces cartes, selon qu'elles sont ISA ou non. Le driver ISA peut tre choisi en activant les options Other ISA cards et NE2000/NE1000 support . Le driver pour les cartes PCI peut tre slectionn

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

315

M. Elie Degny Raphael

en activant les options EISA, VLB, PCI and on board controllers et PCI NE2000 support . Menu Ethernet (1000 Mbit) Les options disponibles dans ce menu permettent de choisir les drivers utiliser pour les cartes Ethernet Gigabit. Choisissez l'option qui correspond votre matriel si vous en disposez d'une. Menu Wireless LAN (non-hamradio) L'option Wireless LAN (non-hamradio) permet d'activer la gestion des connexions sans fil (mais qui ne sont pas gres par les fonctionnalits radio-amateurs). Les options qui suivent permettent de choisir les drivers disponibles. La rponse recommande est 'N'. L'option STRIP (Metricom starmode radio IP) permet d'activer la gestion des adaptateurs rseau radio Metricom. La rponse recommande est 'N'. L'option AT&T WaveLAN & DEC RoamAbout DS support permet d'activer la gestion des adaptateurs rseau radio WaveLAN. La rponse recommande est 'N'. L'option Aironet Arlan 655 & IC2200 DS support permet d'activer la gestion des adaptateurs rseau radio Aironet 655 et IC2200 DS. La rponse recommande est 'N'. L'option Aironet 4500/4800 series adapters permet d'activer la gestion des adaptateurs rseau radio Aironet de la srie 4500/4800. Les options qui suivent correspondent aux diffrents types de cartes de cette srie. L'option Aironet 4500/4800 PROC interface donne la possibilit de configurer ces cartes par l'intermdiaire du systme de fichiers virtuels /proc/. La rponse recommande est 'N'. Menu Token ring devices L'option Token Ring driver support permet d'activer la gestion des rseaux Token Ring. Les options qui suivent permettent de choisir les drivers pour ces adaptateurs. La rponse recommande est 'N'. Menu Wan interfaces L'option Comtrol Hostess SV-11 support permet d'activer la gestion des cartes Comtrol. La rponse recommande est 'N'. L'option COSA/SRP sync serial boards support permet d'activer la gestion des cartes COSA et SRP. La rponse recommande est 'N'.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

316

M. Elie Degny Raphael

L'option MultiGate (COMX) synchronous serial boards support permet d'activer la gestion des drivers des cartes MultiGate. La rponse recommande est 'N'. Les options qui suivent permettent de paramtrer les fonctionnalits supportes par le driver. L'option Etinc PCISYNC serial board support (EXPERIMENTAL) n'est pas encore documente et ne sera pas dcrite plus en dtail ici. L'option LanMedia Corp. SSI/V.35, T1/E1, HSSI, T3 boards permet d'activer la gestion des drivers des cartes LanMedia. La rponse recommande est 'N'. L'option Sealevel Systems 4021 support permet d'activer la gestion des drivers des cartes Sealevel ACB 56. La rponse recommande est 'N'. L'option SyncLink HDLC/SYNCPPP support n'est pas documente l'heure actuelle. La rponse recommande est 'N'. L'option Generic HDLC driver et ses sous-options ne sont pas encore documentes et ne seront donc pas dcrites plus en dtail ici. L'option Frame relay DLCI support permet d'activer la gestion du protocole Frame Relay. Les options qui suivent permettent de configurer le driver. 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. La rponse recommande est 'N'. L'option Sangoma WANPIPE(tm) multiprotocol cards permet d'activer la gestion des cartes WAN Sangoma. Les options qui suivent permettent de configurer les paramtres pour ce driver. La rponse recommande est 'N'. L'option LAPB over Ethernet driver permet d'activer un driver 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'. L'option SBNI12-xx support permet d'activer la gestion des cartes SBNI12-xx. La rponse recommande est 'N'. 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 drivers pris en charge par Linux. La rponse recommande est 'N'.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

317

M. Elie Degny Raphael

Menu ATM drivers 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 ENI155P active la gestion des cartes ATM ENI155P d'Efficient Networks et Power155 de SMC. Les options qui suivent permettent de configurer le driver. 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 le driver. La rponse recommande est 'N'. L'option IDT 77201 (NICStAR) (ForeRunnerLE) active la gestion des cartes ATM bases sur le chipset NICStAR. Les options qui suivent permettent de configurer le driver. 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 du driver. 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 du driver. 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 du driver. 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 le driver. La rponse recommande est 'N'. 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'.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

318

M. Elie Degny Raphael

Menu AX.25 network device drivers Ce menu permet de choisir les drivers bas niveau utiliser pour le support des communications Radio. Il faut choisir le driver correspondant votre matriel. Menu IrDA subsystem support L'option IrDA 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. Menu Infrared-port device drivers Ces options permettent de choisir les drivers bas niveau pour les priphriques infrarouges. Vous devez choisir le driver correspondant votre matriel. 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'. 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 Support BSD compression (module only) active la gestion de la compression de donne avec l'algorithme BSD. Cette fonctionnalit n'est disponible que sous la forme de module pour des raisons de licences logicielles. La rponse recommande est 'N'. 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'.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

319

M. Elie Degny Raphael

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 d'activer l'encapsulation du protocole X.25 dans le protocole ISDN. La rponse recommande est 'N'. Menu ISDN feature submodules L'option isdnloop support 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 permet d'activer la gestion de services ISDN supplmentaires. La rponse recommande est 'N'. Menu Passive ISDN cards L'option HiSax SiemensChipSet driver support permet d'activer les options de configuration pour les cartes base de chipsets Siemens. Ce sont les cartes les plus courantes. Les options qui suivent permettent de slectionner le type de matriel correspondant. La rponse recommande est 'N'. Menu Active ISDN cards L'option ICN 2B and 4B support permet d'activer le support pour des cartes ISDN fabriques par la socit ICN. La rponse recommande est 'N'. L'option PCBIT-D support permet d'activer la gestion des cartes ISDN fabriques par la socit Octal. La rponse recommande est 'N'. L'option Spellcaster support permet d'activer la gestion des cartes ISDN Spellcaster. La rponse recommande est 'N'. L'option IBM Active 2000 support permet d'activer la gestion des cartes ISDN IBM Active 2000. La rponse recommande est 'N'. L'option Eicon active card support permet d'activer la gestion des cartes Eicon. Les options qui suivent permettent de choisir le driver appropri au matriel dont vous disposez. La rponse recommande est 'N'. L'option CAPI2.0 support permet d'activer la gestion de l'interface de programmation CAPI ( Common ISDN Application Programming Interface , permettant aux programmes clients d'utiliser de manire uniforme toutes les cartes ISDN. La rponse recommande est 'Y'.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

320

M. Elie Degny Raphael

L'option Verbose reason code reporting (kernel size +=7K) permet d'indiquer le degr de traces utilis par le driver des cartes AVM. La rponse recommande est 'N'. L'option CAPI2.0 Middleware support (EXPERIMENTAL) n'est pas encore documente et ne sera pas dcrite dans ce document. L'option CAPI2.0 /dev/capi support n'est pas documente et ne sera pas dcrite ici. La rponse recommande est 'N'. L'option CAPI2.0 filesystem support n'est pas encore documente et ne sera pas dcrite dans ce document. L'option CAPI2.0 capidrv interface support n'est pas documente et ne sera pas dcrite ici. La rponse recommande est 'N'. Les options qui suivent permettent de prendre en charge les cartes AVM. La rponse recommande est 'N'. L'option Hypercope HYSDN cards (Champ, Ergo, Metro) support (module) permet de prendre en charge les cartes ISDN actives d'Hypercope. La rponse recommande est 'N'. L'option HYSDN CAPI2.0 support permet de grer l'interface de programmation CAPI 2.0 pour les cartes Hypercope. La rponse recommande est 'Y'. Menu Old CD-ROM drivers (not SCSI, not IDE) L'option Support non-SCSI/IDE/ATAPI CDROM drives permet d'activer la gestion des lecteurs de CD-ROM non SCSI et non IDE. Ce sont essentiellement des vieux lecteurs de CD-ROM, parfois connects sur une carte son par une interface propritaire. Les options qui suivent permettent de choisir le driver qui correspond au matriel dont vous disposez. La rponse recommande est 'N'. Menu Input Core Support L'option Input core support permet d'activer un nouveau mcanisme de gestion des priphriques de saisie et d'entre interactifs. Ce mcanisme permettra terme de grer tous les priphriques d'entre de manire uniforme, et donc de simplifier la gestion des donnes provenant de l'utilisateur. Les priphriques dj capables d'utiliser ce nouveau mcanisme comprennent les joysticks et certains priphriques USB. Vous devez activer cette fonctionnalit si vous dsirez connecter un joystick, un clavier ou une souris USB sur votre ordinateur. La rponse recommande est 'N' pour les gens qui ne disposent pas de tels priphriques. L'option Keyboard support permet de prendre en charge les claviers USB en redirigeant les donnes provenant de ces claviers vers le traitement classique du clavier
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 321

M. Elie Degny Raphael

de Linux. Si vous disposez d'un tel clavier, il n'y a normalement rien faire pour l'utiliser, puisque le BIOS assure la compatibilit ascendante des claviers USB connects sur les ports USB de la carte mre. Cependant, cette technique ne fonctionne pas pour les claviers connects sur des cartes USB filles, et vous pouvez avoir besoin d'activer la gestion de ces claviers ici. La rponse recommande est 'N', sauf si vous dsirez connecter un clavier USB sur votre ordinateur et qu'il ne fonctionne pas nativement. Notez que cette option est incompatible avec l'option USB HIDBP Keyboard (basic) support du menu USB support , qui permet de grer les claviers USB d'une manire plus lgre afin de rduire la taille du noyau dans les systmes embarqus. De la mme manire, l'option Mouse support permet de prendre en charge les souris USB en simulant une souris PS/2 classique, via le fichier spcial de priphrique /dev/input/mice, de codes majeur et mineur 13 et 63. Ce driver permet galement d'accder aux souris USB via les fichiers spciaux de priphriques /dev/input/mouseN, o N est le numro de la souris, et dont les numros de codes majeur et mineurs sont respectivement 13 et 32 63. Ce driver est galement incompatible avec le driver simplifi que l'on peut activer avec l'option USB HIDBP Mouse (basic) support du menu USB support . La rponse recommande est 'N', sauf pour ceux qui disposent d'une souris USB. Les options Horizontal screen resolution et Vertical screen resolution permettent de dfinir la rsolution horizontalement et verticalement 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. La rponse recommande est 'N'. L'option Joystick support active la prise en charge des joysticks USB 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. Notez que cette option n'est pas ncessaire pour la prise en charge des joystick non-USB, bien que l'activation de l'option Input core support restent obligatoire. 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 USB de manire gnrique. Ces fichiers peuvent tre utiliss par plusieurs priphriques distincts, et permettront terme de connecter plusieurs priphriques d'entre sur la mme machine, tout en permettant une gestion uniforme de la part des applications. Actuellement, trs peu de programmes utilisent cette fonctionnalit, et il est encore rare de voir des machines plusieurs claviers et plusieurs souris. La rponse recommande est donc 'N'. terme cependant, cette fonctionnalit sera certainement utilise pour permettre l'utilisation d'une mme machine par plusieurs personnes (il suffit pour cela de dvelopper un driver pour les serveurs X de XFree86 capable de lire les donnes provenant de ces fichiers spciaux de priphriques).

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

322

M. Elie Degny Raphael

Menu Character devices L'option Virtual terminal permet d'activer la gestion des terminaux virtuels, accessibles avec les combinaisons de touche ALT+Fx (ou CTRL+ALT+Fx sous XWindow). Il faut au moins un terminal virtuel pour pouvoir utiliser le clavier et l'cran de la machine, vous devez donc rpondre 'Y' cette question. L'option Support for console on virtual terminal permet de placer la console systme (les flux standards du noyau, et le login en mode mono utilisateur) sur un terminal virtuel. Si vous rpondez 'N' cette question, la console ne sera pas accessible avec le clavier et l'cran, aussi faut-il rpondre 'Y' cette question. L'option Standard/generic (8250/16550 and compatible UARTs) serial support permet d'activer la gestion des ports srie classiques. 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 Support for console on serial port permet d'activer la redirection de la console systme sur un port srie. En gnral, la console est redirige vers un terminal virtuel, aussi la rponse recommande cette question est-elle 'N'. L'option Extended dumb serial driver options permet d'activer les options de configurations tendues pour les ports srie classiques. La rponse recommande est 'N'. L'option Support more than 4 serial ports permet d'activer la gestion de ports srie additionnels. 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 special multiport boards permet d'activer certaines cartes srie, qui peuvent indiquer quel port srie est en attente de traitement de la part du driver. La rponse recommande est 'N'. L'option Support the Bell Technologies HUB6 card permet d'activer la gestion des cartes HUB6. La rponse recommande est 'N'. L'option Non-standard serial port support permet d'activer les options correspondantes des ports srie non standards. Les options qui suivent permettent de configurer les drivers correspondants. La rponse recommande est 'N'.
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 323

M. Elie Degny Raphael

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. En revanche, il existe deux protocoles de nommage des fichiers spciaux utiliss par les composants esclaves. L'ancienne mthode utilisait les fichiers spciaux /dev/ttyxx, mais elle a t remplace par un autre protocole, dans lequel le composant esclave doit d'abord ouvrir le fichier spcial /dev/ptmx, qui lui donne le numro n de pseudo terminal qu'il doit simuler, et il ouvre ensuite le fichier /dev/pts/n. Ce dernier fichier spcial est cr la vole, grce un systme de fichier virtuel. Pour que ce mcanisme fonctionne, il faut que le systme de fichiers /dev/pts/ ait t galement choisi parmi les systmes de fichiers, et qu'il soit mont (voir la configuration du fichier /etc/fstab). Si vous rpondez 'Y', l'option suivante vous permet de choisir le nombre de pseudo terminaux que vous dsirez que le systme gre. La valeur par dfaut est 256. La rponse recommande est 'Y'. 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'impressions ne seront charges que lorsque c'est 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 QIC-02 tape support permet d'activer la gestion des lecteurs de cassettes non SCSI du type QIC. L'option suivante permet d'indiquer si la configuration dynamique du lecteur doit tre utilise. La rponse recommande pour ces deux questions est 'N'. L'option Intel i8x0 Random Number Generator support active la prise en charge des gnrateurs de nombres alatoires prsents sur les cartes mres base de chipsets i8x0 d'Intel. La rponse recommande est 'N'. 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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

324

M. Elie Degny Raphael

spcial de priphrique /dev/nvram, de code majeur 10 et de code mineur 144. La rponse recommande est 'N'. L'option Enhanced Real Time Clock Support permet d'activer l'accs au 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 'N'. 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 /dev/agpgart support (AGP support) active la gestion des transferts de donnes acclrs par le bus AGP pour les drivers de cartes graphiques. Ces transferts peuvent tre pilots au travers du 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 drivers 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 DRI support) permet d'activer le support de l'architecture DRI permettant aux pilotes graphiques d'accder directement aux ressources des cartes graphiques. Cette fonctionnalit est la base du fonctionnement de l'architecture 3D de Linux. Les options suivantes permettent de slectionner le type de carte graphique install sur le systme. La rponse recommande est 'N', sauf si vous disposez d'une de ces cartes graphiques. Dans ce cas, vous devriez certainement utiliser XFree86 4.0.3, afin de bnficier des acclrations 3D de ces cartes graphiques. Notez 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 driver de NVidia. Vous pouvez donc rpondre 'N' cette question si vous disposez d'une telle carte graphique.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

325

M. Elie Degny Raphael

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 utilisable. La rponse recommande est 'N', sauf si vous disposez d'une telle carte. Dans ce cas, la rponse recommande est 'M'. L'option I2C bit-banging interfaces active la gestion des adaptateurs bitbanging . 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 suivantes permettent d'activer les priphriques utilisant cette interface. Les rponses recommandes ces questions sont 'N'. L'option I2C device interface active la gestion des fichiers spciaux de priphriques /dev/i2c-*. La rponse recommande est 'N'. Menu Mice L'option Bus Mouse Support active la prise en charge des souris bus. Ces souris sont des souris connectes sur des bus spcifiques, comme par exemple sur une carte graphique. Cette option permet d'inclure le driver gnrique de ce type de souris, les drivers spcifiques peuvent tre slectionns avec les options suivantes. La rponse recommande est 'N', sauf si vous disposez d'une telle souris. L'option ATIXL busmouse support permet d'activer la gestion des souris bus connectes sur certaines cartes graphiques ATI. La rponse recommande est 'N'. L'option Logitech busmouse support permet de grer les souris bus Logitech. Attention, les souris Logitech connectes sur port PS/2 ne sont pas des souris bus et ne sont pas gres par ce driver. La rponse recommande est 'N'. L'option Microsoft busmouse support permet de grer les souris bus Microsoft. Attention, les souris Microsoft connectes sur port PS/2 ne sont pas des souris bus et ne sont pas gres par ce driver. La rponse recommande est 'N'. L'option Mouse Support (not serial and bus mice) permet d'activer la gestion des souris qui ne sont connectes ni au port srie, ni sur un bus souris. Si vous disposez d'une souris srie ou d'une souris bus, vous devez rpondre 'N' cette question. Sinon, la rponse recommande est 'Y'.
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 326

M. Elie Degny Raphael

L'option PS/2 mouse (aka "auxiliary device") support permet de grer toutes les souris connectes sur un port PS/2, quelles que soit leur marque. La plupart des souris vendues actuellement son de ce type. La rponse recommande est donc 'Y'. L'option C&T 82C710 mouse port support (as on TI Travelmate) permet de grer les souris pour Travelmate. Ces souris sont des souris PS/2 particulires ces ordinateurs. Il est recommand d'essayer le driver gnrique PS/2 avant de choisir celui-ci, aussi faut-il rpondre 'N' cette question en gnral. L'option PC110 digitizer pad support permet d'activer la gestion de l'mulation souris pour les PC110 digitizer. La rponse recommande est 'N'. Menu Joystick support L'option Jostick support permet d'activer les options de gestion des joysticks. Les options suivantes correspondent aux drivers des diffrents types de joysticks supports. La rponse recommande est 'N'. 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'. L'option WDT Watchdog timer permet d'activer la gestion des cartes WDT. Ces cartes ne pouvant pas tre configures automatiquement, vous devrez spcifier manuellement le port et la ligne d'interruption l'aide du paramtre du noyau wdt lors du dmarrage du systme. Si vous rpondez 'Y' ou 'M', vous pourrez spcifier les fonctionnalits de cette carte l'aide des options WDT501 features et Fan Tachometer . La rponse recommande est 'N'. L'option WDT PCI Watchdog timer permet d'activer la gestion des cartes WDT PCI. La rponse recommande est 'N'.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

327

M. Elie Degny Raphael

Les options WDT501 features et Fan Tachometer permettent de spcifier les paramtres du systme surveills par les cartes WDT : temprature et vitesse du ventilateur. La rponse recommande est 'N'. L'option Berkshire Products PC Watchdog permet d'activer la gestion des cartes Berkshire. La rponse recommande est 'N'. L'option Acquire SBC Watchdog Timer permet d'activer la gestion des chiens de garde des PSC-6x86 Single Board Computer d'Acquire Inc. La rponse recommande est 'N'. L'option SBC-60XX Watchdog Timer permet d'activer la gestion des chiens de garde des ordinateurs disposant d'une carte mre SBC 6010. La rponse recommande est 'N'. L'option Mixcom Watchdog permet d'activer la gestion des chiens de garde Mixcom. La rponse recommande est 'N'. L'option Intel i810 TCO timer / Watchdog permet d'activer la gestion des chiens de garde matriels intgrs dans les chipsets i810 et i815 d'Intel. Ces chiens de garde peuvent surveiller l'activit du systme rgulirement et contrler sa temprature. La rponse recommande est 'N'. Menu Ftape, the floppy tape device driver L'option Ftape (QIC-80/Travan) support permet d'activer les options de gestion des lecteurs de bande connects sur le contrleur de disquettes. Si vous avez un tel priphrique, rpondez 'Y' ou 'M'. Sinon, rpondez 'N'. L'option Zftape, the VFS interface permet d'inclure la gestion des systmes de fichiers virtuels dans le driver de ftape. Il faut imprativement activer cette option, faute de quoi le driver sera inutilisable. Rpondez par 'Y' cette question si vous avez activ la fonctionnalit ftape. L'option Default block size permet de spcifier la taille par dfaut des blocs utiliss par les programmes d'archivage. La valeur 10240 correspond la taille des blocs utilise par GNU tar, c'est la valeur recommande. L'option Number of ftape buffers (EXPERIMENTAL) est exprimentale et il est trs dconseill de la modifier. La valeur par dfaut est 3. L'option Enable procfs status report (+2kb) permet de gnrer un rpertoire ftape/ dans le systme de fichiers virtuel /proc/. Ce rpertoire contient des informations concernant l'tat courant du driver ftape. La rponse recommande cette question est 'N'.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

328

M. Elie Degny Raphael

L'option Debugging output permet de fixer la quantit de traces que le driver ftape gnre. La valeur recommande est Normal . L'option Floppy tape controllers permet de slectionner le type de contrleur de disquettes. La valeur recommande est Standard . Si vous choisissez un autre type de contrleur, vous devrez spcifier les paramtres matriels pour ce contrleur dans les trois options qui suivent. L'option Default FIFO threshold (EXPERIMENTAL) est exprimentale et ne doit pas tre modifie. La valeur recommande est 8. L'option Maximal data rate to use (EXPERIMENTAL) permet de rduire la vitesse maximale de transfert utilis par le driver ftape. Cette option est exprimentale et ne doit pas tre modifie. La valeur par dfaut est 2000. Menu PCMCIA character device support Les options de ce menu permettent d'activer la gestion des cartes PCMCIA de type srie, comme par exemple les modems, les ports srie et les cartes rseau intgrant un modem. La rponse recommande ces options est 'N'. 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 deux menus suivants, qui permettent de choisir les drivers adapts au type de matriel vido install et les options de configuration pour certains de ces drivers. La rponse recommande est 'N'. Menu Video For Linux L'option V4L information in proc filesystem permet d'inclure des informations complmentaire sur l'tat de l'interface Vido pour Linux dans le systme de fichiers /proc/. La rponse recommande est 'Y'. L'option I2C on parallel port permet d'utiliser le port parallle comme un interface I2C pour les contrleurs vido qui reconnaissent ce protocole. La rponse recommande est 'N'. Les options qui suivent permettent de choisir les drivers 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 drivers sous forme de modules, car certains de ces drivers 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 du chargement des modules. C'est en particulier le cas pour les cartes vido bases sur la puce lectronique Bt848 et les puces qui en sont drives.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

329

M. Elie Degny Raphael

Menu Radio Adapters Les options proposes par ce menu vous permettront d'activer les drivers pour les diffrentes cartes radio supportes par Linux. Vous devez activer le driver correspondant votre matriel, et ventuellement spcifier les paramtres matriels de cette carte. La rponse recommande ces questions est 'N'. Menu File systems L'option Quota support permet d'activer la gestion des quotas de disque utilis par utilisateur. Cette fonctionnalit n'est disponible que pour les systmes de fichiers EXT2. La rponse recommande est 'N'. L'option Kernel automounter support permet d'effectuer le montage des disques NFS automatiquement (c'est--dire la demande) au niveau du noyau. La rponse recommande est 'N'. L'option Kernel automounter version 4 support (also supports v3) permet d'activer la nouvelle version du montage automatique des disques NFS. La rponse recommande est 'N'. Les options qui suivent permettent de prendre en compte les systmes de fichiers de diffrents systmes d'exploitation. Parmi ces systmes, certains sont encore en cours de dveloppement et ne fonctionnent pas trs bien. Cela signifie qu'il est trs dconseill d'utiliser ces drivers pour crire des donnes sur ces systmes de fichiers : de trs grosses pertes de donnes peuvent s'ensuivre. En particulier, il ne faut surtout pas utiliser le systme de fichier NTFS en criture : les dveloppeurs de cette partie du noyau sont, encore actuellement, certains qu'il dtruira le systme de fichiers. En revanche, les systmes de fichiers qui sont compltement grs peuvent tre utiliss sans risques. Cependant, ils peuvent ne pas tre assez puissants pour stocker les informations de fichiers ncessaires tout systme Unix. Dans ce cas, le systme de fichiers ne peut tre utilis que pour stocker des donnes d'applications, pas le systme lui-mme. C'est en particulier le cas de la FAT. Afin de corriger les limitations de ce systme de fichiers, une extension nomme UMSDOS a t dveloppe. Cette extension stocke dans chaque rpertoire un fichier cach dcrivant les droits Unix, et rend ainsi la FAT exploitable sous Linux. Cette fonctionnalit est trs intressante si l'on veut installer Linux sur un disque dj format en FAT. Il faut prendre garde cependant au fait que les performances seront alors dplorables (les accs disques sont plus lents dans un facteur 2 3). Le problme de performances se pose d'ailleurs pour tous les systmes de fichiers qui ont t intgr Linux mais qui ne sont pas natifs. Ainsi, mme sans utiliser UMSDOS, la FAT32 est deux fois plus lente que les systmes de fichiers natifs. Le systme de fichiers le plus utilis actuellement sous Linux est EXT2, qui offre la fois la scurit, les fonctionnalits et les performances. Il est fortement recommand de l'utiliser ds que l'on peut se passer des autres systmes de fichiers. Il est impratif de compiler le systme de fichiers de la partition root dans le noyau. Si cela n'est pas fait, le noyau ne pourra pas monter la partition root et se terminera en
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 330

M. Elie Degny Raphael

affichant le message kernel panic . Il ne faut pas compiler ce systme de fichiers en tant que module, pour les mmes raisons. La rponse recommande pour l'option Second extended fs support est donc 'Y' et rien d'autre, et on installera la partition root sur un tel systme de fichier. Certains systmes de fichiers ncessitent le support de systmes de fichiers de base. En particulier, les systmes de fichiers VFAT (qui gre les FAT32), MSDOS fs (qui gre les partitions DOS 12 et 16 bits) et UMSDOS exigent tous trois le support du systme de fichiers DOS FAT en gnral. Pour utiliser ces systmes de fichiers, on devra donc activer l'option DOS FAT fs support . De mme, pour lire les CD-ROM au format Juliette (l'extension Microsoft au format ISO 9660 pour supporter les noms longs sous Windows), il faudra activer l'option ISO 9660 CDROM file system support .De toutes faons, il est fortement recommand de grer ce systme de fichiers si l'on veut utiliser des CD-ROMs. Quatre systmes de fichiers sont virtuels. Ils ne correspondent aucun support physique, et leur arborescence est cre uniquement en mmoire, la vole, par le noyau. Il s'agit du systme de fichiers /proc/ (option /proc file system support ), qui fournit des informations dynamiquement sur l'tat du systme, du systme de fichiers /dev/ (option /dev file system support (EXPERIMENTAL) ), qui permet de grer les fichiers spciaux de priphriques la vole, du systme de fichiers /dev/pts/ (option /dev/pts file system for Unix98 PTYs ), qui permet de crer des fichiers spciaux de priphriques la demande pour les pseudo terminaux et du systme de fichiers /dev/shm/ (option Virtual memory file system support (former shm fs) ), qui permet de grer les segments de mmoire partage POSIX. Il est fortement recommand d'activer la gestion des systmes de fichiers /proc/, /dev/pts/ et /dev/shm/, car ils sont utiliss par beaucoup de programmes. Le systme de fichiers /dev/ pourra tre utilis sur les systmes embarqus ou les disquettes de dmarrage, pour lesquels la taille prise par le rpertoire /dev/ peut tre gnante. Dans ce cas, on aura intrt raliser le montage automatique de ce systme de fichiers l'aide de l'option Automatically mount at boot . Menu Network File Systems L'option Coda file system support (advanced network fs) permet d'activer le support du systme de fichiers rseau Coda, qui donne accs aux priphriques par le rseau comme s'ils taient branchs sur la machine locale. Cette option active les fonctionnalits clientes au niveau du noyau, mais il faut galement des outils complmentaires pour implmenter les fonctions serveurs. La rponse recommande est 'N'. L'option NFS file system support permet d'activer le support NFS classique en tant que machine cliente. NFS est moins puissant que Coda, mais est cependant le plus rpandu. Il lui est donc encore prfrable pour l'instant. La rponse recommande est 'Y'.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

331

M. Elie Degny Raphael

L'option Provide NFSv3 client support permet d'activer le support de la version 3 du protocole NFS en tant que machine cliente. La rponse recommande est 'N'. L'option Root file system on NFS permet d'indiquer au noyau que le systme de fichiers root est plac sur un serveur NFS. Dans ce cas, le noyau se connectera automatiquement ce serveur pour monter le systme de fichiers root. Pour raliser ce type de montage, il faut avoir rpondu 'Y' la question IP: kernel level autoconfiguration , afin que les couches rseaux soient configures au niveau du noyau lors du dmarrage du systme. La rponse recommande est 'N'. L'option NFS server support permet d'activer le support NFS en tant que machine serveur. La rponse recommande est 'N'. L'option Provide NFSv3 server support permet d'activer le support de la version 3 du protocole NFS en tant que serveur. La rponser recommande est 'N'. L'option SMB file system support (to mount WfW shares, etc.) permet d'accder aux rpertoires partags par les machines fonctionnant sous Windows. Cette fonctionnalit n'est possible que si les postes Windows utilisent TCP/IP comme protocole de rseau de base, et non NetBIOS. La rponse recommande est 'Y'. Les Use a default NLS et Default Remote NLS Option permettent de spcifier une page de code par dfaut pour lire les noms de fichiers et de rpertoires partags par le serveur. La rponse recommande est 'N'. L'option NCP file system support (to mount NetWare volumes) permet d'accder aux volumes NetWare. Cette fonctionnalit ncessite la gestion d'IPX au niveau de la machine Linux. On notera qu'il est inutile d'activer cette fonctionnalit si l'on dsire faire en sorte que la machine Linux soit serveur de fichier Novell. Les options qui suivent permettent de paramtrer les accs aux volumes NetWare (scurit, lock de fichiers, droits d'accs...). La rponse recommande est 'N'. Menu Partition Types Quelques systmes utilisent un format diffrent pour les tables de partitions que le format utilis par le BIOS des PC. Pour lire les donnes stockes sur les disques partitionns par ces systmes sur des machines d'architecture diffrente, vous devez activer une gestion spciale des tables de partitions. Les options de ce menu permettent d'activer la gestion des tables de partitions de ces systmes. La rponse recommande ces questions est 'N'. Menu Native Language Support Les options fournies ici permettent de choisir les pages de codes utiliser pour les jeux de caractres dans les systmes de fichiers. Ces pages de codes doivent tre choisies en

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

332

M. Elie Degny Raphael

fonction de la langue d'installation du systme. Les pages de codes recommandes pour un systme franais sont les suivantes :

Codepage 437 (United States, Canada) , indispensable en raison de la majorit des programmes provenant des tats Unis ; Codepage 850 (Europe) , pour les caractres accentus europens ; NLS ISO 8859-1 (Latin 1; Western European Languages) pour les caractres accentus europens sur les CDROMs ; NLS ISO 8859-15 (Latin 9; Western European Languages with Euro) pour les caractres accentus europens sur les CDROMs, y compris quelques caractres additionnels non grs par la page de code ISO 8859-1.

Pour toutes les autres pages de codes, la rponse recommande est 'N'. L'option Default NLS Option permet de choisir la page de code par dfaut utiliser parmi celles qui ont t choisies. La rponse recommande est iso8859-1 . Menu Console drivers L'option VGA text console permet d'utiliser les modes texte VGA pour l'affichage en mode texte. La rponse cette question est 'Y'. L'option Video mode selection support permet de choisir le mode texte utiliser au dmarrage de Linux. Ce mode peut tre indiqu grce un paramtre pass au noyau lors du dmarrage. La rponse recommande est 'Y'. L'option MDA text console (dual-headed) (EXPERIMENTAL) permet d'activer le support de l'affichage multiple ralisable l'aide d'une carte MDA et d'une carte VGA. Cette option ne doit tre choisie que si la carte MDA est la carte d'affichage principale. La rponse recommande est 'N'. Menu Frame-buffer support L'option Support for frame buffer devices (EXPERIMENTAL) permet d'activer le support des cartes graphiques par l'intermdiaire d'une interface unifie et d'un buffer vido nomm 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 PC, puisque beaucoup de serveurs X ont t dvelopps pour cette plate-forme, et que dans le pire des cas, un serveur X bas sur le standard VESA 2.0 est disponible. Cependant, pour les autres plates-formes, ou si vous disposez 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 drivers 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'.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

333

M. Elie Degny Raphael

L'option Virtual Frame Buffer support (ONLY FOR TESTING!) permet d'activer la gestion d'une carte graphique virtuelle en mmoire seulement. Ce driver consomme normment de ressources et ne doit tre utilis que pour tester des applications bases sur cette interface. La rponse recommande est 'N'. L'option Advanced low level driver options permet d'activer les options permettant de fixer certains paramtres bas niveau. Ces paramtres peuvent tre fixs grce aux options suivantes. En particulier, les formats de pixels grs, ainsi que les polices de caractres utiliser peuvent tre prciss. Vous trouverez de plus amples informations sur ces options dans le Chapitre 10. La rponse recommande est 'N'. 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. Les options qui suivent permettent de choisir les drivers pour les cartes son non standards. Ces drivers grent les cartes son correctement, mais ne fournissent pas exactement la mme interface de programmation que le standard actuel sous Linux qu'est OSS (abrviation de l'anglais Open Sound System ). Certaines fonctionnalits ne seront donc pas accessibles de la manire standard avec ces cartes. Vient ensuite l'option OSS sound modules , qui permet d'activer la slection des drivers compatibles avec l'interface OSS. Les options qui suivent celle-ci permettent de choisir et de configurer les drivers pour les cartes son compatibles. Il est recommand d'utiliser les drivers OSS si possible. Notez qu'une certain nombre de drivers ont galement t dvelopps dans le cadre de l'architecture ALSA (abrviation de l'anglais Advanced Linux Sound Architecture ). Si vous ne trouvez pas de driver appropri votre matriel ici, vous pouvez essayer d'installer ces drivers. Notez enfin que le driver de son pour les cartes d'acquisition TV bases sur la puce Bt848 se situe parmi les drivers OSS (option TV card (bt848) mixer support ). Vous devez donc l'intgrer sous forme de module si vous disposez d'une telle carte. Menu USB support L'option Support for USB permet de prendre en charge les priphriques USB sous Linux. La rponse recommande est 'Y'. L'option USB verbose debug message permet de demander aux drivers USB d'envoyer des informations de dbogage dans les fichiers de traces du systme. La rponse recommande est 'N'. L'option Preliminary USB device filesystem active la gestion des informations sur les ports USB dans le systme de fichiers virtuels /proc/. Ces
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 334

M. Elie Degny Raphael

informations comprennent en particulier la liste des priphriques connects sur le bus USB. La rponse recommande est 'Y'. L'option Enforce USB bandwidth allocation (EXPERIMENTAL) active la gestion de la bande passante du bus USB entre les diffrents priphriques qui y sont connects. Cette option est exprimentale, et la rponse recommandes est 'N'. Les trois options suivantes ( UHCI (Intel PIIX4, VIA, ...) support , UHCI Alternate Driver (JE) support et OHCI (Compaq, iMacs, OPTi, SiS, ALi, ...) support permettent d'inclure les drivers pour les diffrents types de contrleurs USB. On recense deux diffrents types de contrleurs USB : les contrleurs UHCI (abrviation de l'anglais Universal Host Controller Interface ) et les contrleurs OHCI (abrviation de Open Host Controller Interface ). Les contrleurs UHCI sont fabriqus par Intel et VIA essentiellement, alors que les contrleurs OHCI sont prsents sur les chipsets non Intel (Compaq, SiS, Aladdin). Vous devez choisir le driver appropri au chipset de votre carte mre. Pour les contrleurs UHCI, vous avez le choix entre deux drivers. L'option USB Audio support permet de prendre en charge les priphriques audio connects sur le port USB, comme des hauts-parleurs par exemple. La rponse recommande est 'N'. L'option USB Bluetooth support (EXPERIMENTAL) active la gestion des priphriques USB Bluetooth (capables d'effectuer des transmissions sans fil). La rponse recommande est 'N'. L'option USB Mass Storage support active la gestion des priphriques USB de masse (lecteurs de CD, etc.). La rponse recommande est 'N'. L'option USB Mass Storage verbose debug permet de demander au driver des priphriques USB de masse de gnrer des messages de dbogage dans les fichiers de trace du systme. La rponse recommande est 'N'. L'option Freecom USB/ATAPI Bridge support permet de grer les passerelles entre le bus USB et les priphriques ATAPI connects sur ce bus. La rponse recommande est 'N'. L'option USB Modem (CDC ACM) support permet de prendre en charge les modems analogiques et Numris utilisant l'interface CDC ACM (abrviation de l'anglais Communication Device Class Abstract Control Model ) connects sur le port USB. La rponse recommande est 'N'. L'option USB Printer support active la gestion des imprimantes connectes sur le port USB. La rponse recommande est 'N'. 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,
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 335

M. Elie Degny Raphael

souris et tablettes de digitalisation. Cette option n'est activable que si l'on a activ galement la fonctionnalit Input core support du menu Input core support . Ce driver gre compltement les priphriques d'entre USB, et est incompatible avec les drivers simplifis pour le clavier et la souris, que l'on peut activer avec les options USB HIDBP Keyboard (basic) support et USB HIDBP Mouse (basic) support . La rponse recommande est 'N'. L'option USB HIDBP Keyboard (basic) support permet d'activer un driver simplifi pour les claviers USB. Ce driver peut tre utilis pour allger le noyau dans les systmes embarqus, mais ne gre pas toutes les touches des claviers tendus. Ce driver est incompatible avec le driver USB Human Interface Device (full HID) support . La rponse recommande est 'N'. L'option USB HIDBP Mouse (basic) support permet d'activer un driver simplifi pour les souris USB. Ce driver peut tre utilis pour allger le noyau dans les systmes embarqus. Il est incompatible avec le driver USB Human Interface Device (full HID) support . La rponse recommande est 'N'. L'option Wacom Intuos/Graphire tablet support active la prise en charge des tablettes graphiques Wacom USB. Cette option ncessite d'avoir galement activ l'option Mouse support ou l'option Event interface support du menu Input core support . La rponse recommande est 'N'. L'option USB Kodak DC-2xx Camera support active la prise en charge des camras USB Kodak DC-2xx et de quelques appareils compatibles. La rponse recommande est 'N'. L'option USB Mustek MDC800 Digital Camera support (EXPERIMENTAL) permet de prendre en charge les camras USB Mustek MDC800 et de quelques appareils compatibles. La rponse recommande est 'N'. L'option USB Scanner support active la prise en charge des scanners USB. La rponse recommande est 'N'. L'option Microtek X6USB scanner support (EXPERIMENTAL) permet de prendre en charge les scanners Microtek X6USB. Ces scanners apparatront dans le systme comme des priphriques SCSI gnriques. Notez qu'il faut une version modifie de SANE pour utiliser ce driver. La rponse recommande est 'N'. L'option USB IBM (Xirlink) C-it Camera support permet de connecter une camra USB Xirlink d'IBM votre ordinateur. Cette camra sera utilisable via l'interface Video4Linux, que l'on devra donc galement activer. La rponse recommande est 'N'. L'option USB OV511 Camera support permet de connecter une camra USB OV511 votre ordinateur. Cette camra sera utilisable via l'interface Video4Linux, que l'on devra donc galement activer. La rponse recommande est 'N'.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

336

M. Elie Degny Raphael

L'option D-Link USB FM radio support (EXPERIMENTAL) permet de connecter une radio FM USB D-Link. Cette radio sera utilisable via l'interface Video4Linux, que l'on devra donc galement activer. La rponse recommande est 'N'. L'option DABUSB driver permet la prise en charge d'un rcepteur USB DAB (abrviation de l'anglais Digital Audio Broadcasting ). La rponse recommande est 'N'. L'option PLUSB Prolific USB-Network driver (EXPERIMENTAL) permet de prendre en charge les ponts USB-USB PL-2032 de la socit Prolific. Ces ponts permettent de relier en rseau deux ordinateurs par l'intrmdiaire de leurs ports USB. La rponse recommande est 'N'. L'option USB ADMtek Pegasus-based ethernet device support (EXPERIMENTAL) permet de prendre en charge les cartes Ethernet USB. La rponse recommande est 'N'. L'option NetChip 1080-based USB Host-to-Host Link (EXPERIMENTAL) permet de prendre en charge les ponts USB-USB NetChip 1080. La rponse recommande est 'N'. L'option USS720 parport driver permet d'activer les convertisseurs USB / Port parallle permettant de connecter les priphriques utilisant un port parallle sur le port USB de l'ordinateur. La rponse recommande est 'N'. L'option USB Diamond Rio500 support (EXPERIMENTAL) permet de prendre en charge les lecteurs MP3 USB Rio500. La rponse recommande est 'N'. Menu USB Serial Converter support L'option USB Serial Converter support permet de prendre en charge les priphriques USB utilisant une interface srie classique. Les options qui suivent activent les drivers spcifiques aux diffrents matriels supports par Linux. La rponse recommande est 'N'. Menu Kernel hacking L'option Magic SysRq key permet d'activer la gestion des squences de touches utilisant la touche SysRq (ou Syst) en cas de plantage du noyau. Cette option permet de dboguer le noyau lorsqu'on dveloppe une nouvelle fonctionnalit. Rpondez 'N' cette question. Compilation du noyau Une fois la configuration du noyau ralise, la compilation peut tre lance. Pour cela, il suffit de lancer les trois commandes suivantes dans le rpertoire /usr/src/linux :

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

337

M. Elie Degny Raphael

make dep make clean make bzImage La premire commande gnre les dpendances entre les fichiers du noyau. Ces dpendances sont utilises par les fichiers makefile. La deuxime commande effectue le mnage ncessaire pour supprimer tous les fichiers objets pouvant rsulter d'une prcdente compilation. Cette opration est ncessaire afin d'viter de mlanger des fichiers ayant t compils avec des options de configuration diffrentes. Enfin, la troisime commande lance la compilation et l'dition de lien proprement dite. Installation du noyau 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 plus. 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.
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 338

M. Elie Degny Raphael

Vous pourrez alors redmarrer redmarrer la machine avec la commande suivante : reboot LILO affiche alors son prompt ( LILO boot: ), et il faut taper le nom de la configuration de sauvegarde : LILO boot:oldlinux 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 tapant linux la place de oldlinux et corriger le fichier lilo.conf. 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. Une fois ces deux oprations ralises, il faut nouveau rinstaller lilo pour qu'il prennent en compte le nouveau noyau. Cela se fait avec la mme commande que celle utilise prcdemment : lilo 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 Compilation des modules
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 339

M. Elie Degny Raphael

Si le systme a redmarr correctement, on peut compiler les modules et les installer. 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 Les modules slectionns lors de la configuration sont alors compils, il ne reste plus qu' les installer Installation des modules Avant toute installation de nouveaux modules, il est recommand de dcharger tous les modules prsents en mmoire. Cette opration peut tre ralise avec les commandes suivantes : modprobe -ar lsmod rmmod module rmmod module &vellip; Notez que certains modules ne se dchargent pas automatiquement, il faut donc excuter rmmod sur ces modules manuellement. L'installation des modules est alors trs simple, puisqu'il suffit de lancer la commande suivante dans le rpertoire /usr/src/linux/ : make modules_install Les modules sont installs dans le rpertoire /lib/module/version/, o version est le numro de version du noyau courant. Il est possible que des modules 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 /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.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

340

M. Elie Degny Raphael

Les modules doivent tre installs aprs avoir install le noyau et redmarr le systme, faute de quoi la commande depmod peut ne pas trouver trouver tous les symboles utiliss par les modules dans le noyau en court d'excution. CHAPITRE 9 : Installation de XWINDOWS
L'installation de XWindow a t pendant longtemps une tche ardue et risque. prsent, il est possible d'installer cet environnement relativement facilement, et en prenant beaucoup moins de risques que par le pass. En fait, les seules difficults dans l'installation de XWindow rsident en deux points stratgiques :

il faut imprativement connatre les caractristiques de son matriel (carte graphique et surtout moniteur) ; il faut disposer d'un driver adapt sa carte graphique pour le serveur X.

Le premier point n'est pas rellement trop difficile rsoudre, puisqu'il suffit souvent de regarder les fiches techniques du matriel install. Bien entendu, cela suppose de les avoir conserves. 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 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. Le deuxime point en revanche est plus dlicat. Bon nombre de fabricants de matriel tiennent secrtes les informations techniques permettant de programmer un driver, parce qu'ils considrent que ce sont des informations stratgiques. Il est vident que dans ce cas, aucun driver libre ne peut tre crit. Depuis quelques temps, ce problme ne se pose plus rellement en ce qui concerne l'affichage 2D, car le champs de bataille des constructeurs de cartes graphiques s'est dplac vers le monde de la 3D. Dans le pire des cas, la carte graphique ne sera reconnue que par le driver gnrique VESA, et l'affichage se fera correctement mais avec des performances bien en de de ce qu'elles auraient t si un driver appropri avait exist. Il est donc recommand de se renseigner dans les groupes de discussion sur Internet avant d'acheter une carte graphique, ou d'acheter une bonne carte graphique mais un peu obsolte. Il faut savoir que de toutes faons, les dernires fonctionnalits sont toujours intgres avec un train de retard sous Linux, car il faut au moins le temps d'crire des drivers (et contrairement aux autres systmes, ces drivers sont tests, ce qui prend plus de temps mais assure la fiabilit). Dans peu de temps, Linux sera sans aucun doute reconnu comme un systme part entire par les fabricants, et il est probable qu'ils fourniront des drivers comme pour les autres systmes. En attendant cet ge d'or, assurez-vous bien que ce que vous achetez fonctionne sous Linux.
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 341

M. Elie Degny Raphael

Il n'y a que trois solutions si aucun serveur X adapt votre matriel n'est fourni avec votre distribution : soit le fabricant de la carte graphique fournit un serveur X pour Linux (ce qui est trs rare, mais commence arriver) ; soit on utilise le driver VESA fourni avec XFree86, qui fonctionne avec toutes les cartes graphiques compatibles avec le standard VESA soit une socit tierce vend un serveur X pour ce type de matriel (ce qui est moins rare, mais a l'immense inconvnient qu'il faut acheter ses drivers) ;

Ce chapitre dcrit la manire de procder pour installer et configurer XFree86, une implmentation libre de XWindow. Il indique galement comment installer le serveur X pour le driver de frame buffer du noyau. L'installation des police 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 arrivs 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... 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 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 fourni 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 ;

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

342

M. Elie Degny Raphael

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.cran 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. Enfin, le champ cran spcifie le numro de l'cran de ce display sur lequel les affichages doivent tre faits. Ce champ sera rarement utilis en pratique, car il est assez rare de disposer de plusieurs
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 343

M. Elie Degny Raphael

crans. Il peut donc tre omis, la valeur par dfaut utilise est dans ce cas 0 (pour le premier et unique cran du 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. 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. Configuration de XFree86 La configuration de XFree86 commence avant tout par l'installation du serveur X. Un mme serveur X peut prendre en charge plusieurs cartes graphiques sur une mme
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 344

M. Elie Degny Raphael

machine, pourvu qu'il dispose des drivers 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. XFree86 fournit un unique serveur X, qui prend en charge tous les types de cartes graphiques l'aide de drivers spcifiques. Dans une installation normale, ces drivers sont fournis sous forme de modules de ce serveur. Les drivers peuvent ainsi tre chargs dynamiquement par le serveur X, selon la configuration du systme. Cette architecture permet un mme serveur X de charger plusieurs drivers 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 XFree86 est XFree86 (on s'en serait dout...), il doit donc exister un lien symbolique /usr/X11/bin/X qui pointe vers le fichier /usr/X11R6/bin/XFree86. Ce lien est, encore une fois, normalement toujours prsent sur les systmes correctement configurs. Une fois XWindow install, la suite de la configuration de XFree86 se fait uniquement dans le fichier de configuration XF86Config. 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 XFree86, convivial et qui fera quasiment tout le travail pour vous. Ce genre d'outil est de plus capable de configurer XFree86 pour les drivers 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 XFree86, qui vous permettront de gnrer ce fichier. Il existe trois possibilits pour gnrer un fichier de configuration XF86Config. La premire mthode est de demander directement au serveur X de dtecter le matriel prsent sur votre machine et de gnrer le fichier XF86Config correspondant. La deuxime mthode, qui est aussi la plus sre, est d'utiliser le programme xf86config. 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 xf86cfg. Cet outil permet de gnrer et de modifier les fichiers xf86cfg de manire conviviale, soit en mode texte avec des menus, soit en mode graphique. Lorsque cet outil sera termin, la configuration de XFree86 sera beaucoup plus aise. Encore une fois, je ne saurai que vous recommander d'utiliser l'outil de configuration fourni avec votre distribution. Gnration automatique du fichier XF86Config Le serveur X de XFree86 est capable de dtecter le matriel install sur une machine et de gnrer un fichier de configuration XF86Config adapt ce matriel. Pour cela, il

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

345

M. Elie Degny Raphael

suffit simplement de le lancer avec l'option -configure sous le compte root, comme dans l'exemple suivant : XFree86 -configure l'issue de cette commande, le serveur X crira un fichier XF86Config.new dans le rpertoire personnel de l'utilisateur root. Ce fichier pourra tre copi dans le rpertoire /etc/X11/ sous le nom XF86Config une fois qu'il aura t corrig. 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 dans le but d'obtenir un squelette de fichier XF86Config, que l'on personnalisera ensuite. Utilisation de xf86config Comme il l'a t indiqu plus haut, xf86config 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 XF86Config gnrique pour votre matriel. Vous pourrez ensuite partir de ce modle pour personnaliser votre configuration et pour prciser les paramtres que xf86config ne prend pas en charge. Le principal problme de xf86config 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 xf86config, il commence par afficher un message indiquant qu'il va crer un nouveau fichier de configuration XF86Config 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 xf86config 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 346

M. Elie Degny Raphael

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, xf86config ne propose pas d'option pour ces souris, et une intervention manuelle dans le fichier de configuration XF86Config est ncessaire pour les configurer. La manire de procder sera dtaille dans la la section intitule Description du fichier XF86Config. 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. xf86config 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 . xf86config 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. xf86config 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. xf86config vous le signale avec un message indiquant que les informations de synchronisation horizontale et verticale sont extrmement
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 347

M. Elie Degny Raphael

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. xf86config 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 valeur des frquences horizontales de votre moniteur. Ne les inventez pas, a 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 frquence cite dans ses caractristiques techniques l'aide de l'option Enter your own vertical sync range . l'issue de cette question, xf86config 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 XFree86. Il est recommand de rpondre par l'affirmative en tapant 'y'. xf86config 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 XFree86. En effet, chaque driver est capable de prendre en charge un type de puce lectronique, et les cartes graphiques sont souvent gres par les puces lectroniques fournies par les mmes fabricants. C'est la raison pour laquelle les drivers de XFree86 portent gnralement le nom des puces utilises par les cartes. Par consquent, si vous ne trouvez pas votre carte dans la liste, vous pouvez essayer de spcifier le driver correspondant l'lectronique de votre carte. Dans le pire des cas, vous pourrez quasiment toujours utiliser le driver 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 driver. 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 348

M. Elie Degny Raphael

d'emploi de votre carte graphique, ou, au pire, sur les composants de la carte euxmmes. 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 mgaoctet de mmoire vido de votre carte graphique avant de saisir la valeur. Lorque la configuration de la carte graphique sera termine, xf86config 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. xf86config 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 pas 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 choisi lorsqu'on basculera de l'un l'autre. Lorsque vous aurez saisi les modes graphiques utiliser et leur ordre d'apparition, xf86config 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 donniez, 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. . xf86config 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 XF86Config correspondant aux options que vous avez choisies. Il faut bien entendu rpondre par 'y', ou sinon vous devriez vous demander pourquoi vous tes en train de lire ceci... Le fichier XF86Config gnr est gnralement fonctionnel, mais parfaitement amliorable. Le format de ce fichier sera dcrit en dtail dans la la section intitule

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

349

M. Elie Degny Raphael

Description du fichier XF86Config. Si vous l'ouvrez, vous constaterez que xf86config a ajout un nombre impressionnant de commentaires pour vous aider dans vos exprimentations. Bien entendu, vous trouverez galement des informations complmentaires dans la page de manuel XF86Config. Utilisation de xf86cfg La manire la plus agrable d'effectuer la configuration de XFree86 est sans nul doute d'utiliser l'utilitaire xf86cfg. Ce programme permet aussi bien de crer un fichier de configuration XF86Config initial que de modifier une configuration existante de manire graphique. Il dispose galement d'un mode texte, qui reprend les mmes questions que xf86config, mais d'une manire plus conviviale, l'aide d'un systme de menus. Configuration en mode graphique Lorsqu'on lance xf86cfg, celui-ci commence par regarder si la variable d'environnement DISPLAY 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 XF86Config du systme. Notez qu'il ne permet pas de modifier le fichier XF86Config 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 xf86cfg que pour son affichage. Si, en revanche, la variable d'environnement DISPLAY n'est pas dfinie, xf86cfg 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 XF86Config. Il lance ensuite le serveur X dtect et utilise ce serveur pour permettre la modification du fichier XF86Config 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 xf86cfg, que nous prsenterons dans la section suivante. L'interface de xf86cfg en mode graphique est trs simple. La partie suprieure de la fentre comprend un menu avec deux entres. La premire entre permet de choisir les diffrentes parties intervenant dans la configuration. La deuxime entre (intitule Expert Mode ) donne accs quant elle un mode de paramtrage permettant d'diter directement les proprits du fichier XF86Config. Ce mode de fonctionnement est rserv aux utilisateurs avertis et ne sera pas dcrite ici. 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 350

M. Elie Degny Raphael

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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

351

M. Elie Degny Raphael

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 C'est le protocole des souris molette connectes sur port PS/2. Malheureusement, ce protocole n'est pas propos par xf86cfg. 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 la section intitule Description du fichier XF86Config. 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 xf86cfg. 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 xf86cfg. 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 XFree86. Si votre carte ne se trouve pas dans cette liste, vous devrez choisir le driver utiliser. En gnral, les drivers portent le nom de la puce lectronique sur laquelle la carte graphique est base. Si aucun driver n'est adapt pour votre carte, vous pourrez malgr tout utiliser un des drivers 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.
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 352

M. Elie Degny Raphael

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 connecte. La liste ne propose que les cartes graphiques que vous avez configur prcdemment. Les moniteurs n'ont pas besoin d'tre activs, car il 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 xf86cfg. Cette option affiche les diffrents crans dans la fentre de xf86cfg, 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 la section intitule Utilisation de xvidtune. Cet cran ne sera donc pas trait plus en dtail ici. Lorsque vous quittez xf86cfg, il vous propose d'enregistrer le fichier de configuration /etc/X11/XF86Config 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. xf86cfg demande galement si vous dsirez sauvegarder la configuration du clavier, pour le cas o vous auriez modifi les paramtres des priphriques d'entre. Configuration en mode texte xf86cfg permet galement d'effectuer la configuration de XFree86 en mode texte, l'aide d'une interface base sur un systme de menu. Bien que ce mode de fonctionnement soit en mode texte, il permet d'effectuer les mmes tches que xf86config d'une manire beaucoup plus conviviale. Pour lancer xf86cfg en mode texte, il suffit simplement de lui passer l'option -textmode en ligne de commande : xf86cfg -textmode Lors de son dmarrage, xf86cfg affiche un cran d'accueil que vous pouvez passer en validant l'option Ok . xf86cfg 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.
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 353

M. Elie Degny Raphael

xf86cfg demande galement le fichier spcial de priphrique utiliser pour accder cette souris. Notez que xf86cfg ne permet pas de choisir le protocole IMPS/2 utilis par les souris molette connectes sur le port PS/2, ce type de souris ne peut donc pas tre 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. 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 XFree86. Si votre carte n'est pas liste, vous devrez choisir l'option ** Unlisted card ** et indiquer le driver utiliser pour cette carte. Ce driver porte gnralement le nom de la puce lectronique sur laquelle cette carte est conue, mais vous pouvez galement utiliser les drivers gnriques vga et vesa pour les cartes graphiques compatibles avec ces standards. Enfin, xf86cfg 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 xf86cfg 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 XF86Config. 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 xf86cfg 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 XFree86. Lorsque vous aurez fini la configuration de XFree86, vous pourrez l'enregistrer l'aide du menu Write XF86Config 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. Description du fichier XF86Config Les fichiers gnrs par les outils de configuration de XFree86 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 354

M. Elie Degny Raphael

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 XF86Config 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 faits dans les utilitaires de configuration. Structure gnrale du fichier XF86Config Le fichier XF86Config est constitu d'un certain nombre de sections contenant chacune les options pour une partie de l'architecture de XFree86. La configuration de XFree86 est un sujet ardu, aussi seules les principales sections du fichier XF86Config seront dcrites dans ce document. Vous pouvez vous rfrer la page de manuel XF86Config et la documentation de XFree86 pour plus de dtails ce sujet. Certaines sections peuvent tre 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, seule 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. 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 dfinition 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 apparatres en de multiples exemplaires.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

355

M. Elie Degny Raphael

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 dfinition de modes graphiques, mais ce n'est pas la technique recommande. En effet, il est possible d'utiliser plusieurs moniteurs diffrents avec des modes graphiques identiques, aussi XFree86 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 XFree86, un cran n'est donc rien d'autre qu'un couple fonctionnel moniteur / carte graphique. Notez que certaines cartes graphiques haut de gamme permettent de connecter plusieurs crans sur une mme carte graphique. 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 . Un section de ce type contient donc ncessairement une rfrence une section InputDevice pour le clavier et une section InputDevice pour le priphrique de pointage, et une ou plusieurs sections Screen pour les crans utiliss par le serveur X. Dautre part, comme leur nom 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. 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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

356

M. Elie Degny Raphael

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 XF86Config, seules les plus classiques seront dcrites ci-dessous. Section Files La section Files , contient les chemins vers les ressources utiliss par XFree86. Ce peut tre les rpertoires de polices de caractres, les rpertoires 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 relativement riche de renseignements pour le serveur X. Un exemple typique de section Files est donn ci-dessous : Section "Files" RgbPath "/usr/X11R6/lib/X11/rgb" FontPath "/usr/X11R6/lib/X11/fonts/local" FontPath "/usr/X11R6/lib/X11/fonts/misc" FontPath "/usr/X11R6/lib/X11/fonts/75dpi" FontPath "/usr/X11R6/lib/X11/fonts/100dpi" ModulePath "/usr/X11R6/lib/modules" EndSection Les chemins indiqus sont des chemins Unix classiques, et sont introduits par les motscls 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. 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.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

357

M. Elie Degny Raphael

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 XF86Config gnrs automatiquement, et bien entendu dans la page de manuel XF86Config. 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" La forme complte utilise une sous-section, introduite par le mot-cl SubSection suivi du nom du modules 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 XFree86-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 omit 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 le Chapitre 9. 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 driver fourni par NVidia utilise un autre mcanisme.
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 358

M. Elie Degny Raphael

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 drivers pour les claviers et les souris. La suite des options de la section InputDevice est fonction de la nature du driver 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 # utiliser est celle de XFree86 : 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 :

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

359

M. Elie Degny Raphael

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 XFree86 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. Sections Device Les sections Device contiennent les descriptions des cartes graphiques utilises. Cette description n'indique absolument pas quel est le serveur X utilis : elle ne contient 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. 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 , 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 360

M. Elie Degny Raphael

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 driver 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 drivers portent le nom du chipset utilis par la carte graphique, si bien qu'il n'est pas difficile de dterminer la valeur exacte utiliser. XFree86 fournit galement deux drivers 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 drivers ne disposent d'aucune acclration matrielle, et que leurs performances sont donc bien infrieures aux drivers 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 compliquer 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 driver utilise la bonne carte, aussi faut-il indiquer, dans chaque section Device , l'adresse de la carte dfinie par la section. Cette adresse est dfinie l'aide de l'option BusID . Cette option permet de retrouver sur les diffrents bus systmes la carte graphique. 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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

361

M. Elie Degny Raphael

lspci pour afficher les caractristiques des diffrents bus PCI de votre machine et dterminer les valeurs utilises par vos cartes graphiques. Certaines cartes graphiques haut de gamme disposent de plusieurs contrleurs vido et sont donc capables de grer plusieurs crans. Pour ces cartes graphiques, le principe de fonctionnement est le mme : il faut crire une section Device pour chaque contrleur vido existant. Cependant, tant donn que toutes ces sections 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. 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 XF86Config. Elles contiennent en effet toutes les informations concernant les moniteurs et tous les paramtres des modes graphiques utiliss par ces moniteurs. Ces informations sont utilises par le serveur X pour gnrer les signaux vido que la carte graphique envoie au moniteur. Il est donc vident que chaque section Monitor est spcifique un 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 (et vous risquez d'tre irradi de rayons X). 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 est atteint par le faisceau d'lectrons. Nous voyons ainsi l'image complte du moniteur.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

362

M. Elie Degny Raphael

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. 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 dure des signaux de synchronisations. 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 363

M. Elie Degny Raphael

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 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 ttes 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 avoir 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. Si le test dcrit dans le paragraphe prcdent vous
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 364

M. Elie Degny Raphael

indique que votre taux de rafrachissement est trop faible, vous pouvez donc 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 balayages horizontaux et verticaux. Ce sont les informations de synchronisation que les sections Monitor du fichier XF86Config 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 informations des modes graphiques, raison d'une ligne par mode graphique utilisable. La documentation de XFree86 appelle ces lignes des lignes de modes ( 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 : 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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

365

M. Elie Degny Raphael

capitale. Elles donnent les plages de frquences auxquelles le moniteur peut travailler, et servent contrler la validit des lignes de modes 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 par 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 le Hertz. 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 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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

366

M. Elie Degny Raphael

mot-clef Flags . L'option la plus courante tant sans aucun doute Interlace , qui permet de crer des modes entrelacs. L'option Doublescan 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 XF86Config. La section Monitor se termine, comme toute section du fichier XF86Config, 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 XF86Config ne conviennent pas et que le serveur X ne dmarre pas correctement. La ligne contenant cette frquence maximale est semblable celle-ci : Maximum allowed dot-clock: 163.000 MHz Cette frquence de base doit 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 640x480 800x600 10254x768 1280x1024 1600x1200 Frquence maximale 25 36 65 110 185
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 367

M. Elie Degny Raphael

Les valeurs des frquences indiques dans ce tableau sont les plus petites valeurs constates pour l'ensemble des moniteurs grs par XFree86. On peut donc supposer que votre moniteur gre ces frquences, et certainement mme de plus hautes. La rsolution du mode graphique est donne par la premire des quatre valeurs des paramtres horizontaux et verticaux dans la ligne de mode. Ainsi, dans la ligne de mode exemple donne ci-dessus, la rsolution horizontale est de 1024 et la rsolution verticale est de 768. Sachez que vous tes parfaitement libre d'utiliser des rsolutions non standards, en crivant les lignes de mode correspondantes. Dans l'exemple donn cidessus, 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 gnrs 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 balaye pendant le retour de balayage, qui 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 368

M. Elie Degny Raphael

valeurs de dpart et de fin du signal de synchronisation vertical dans les paramtres verticaux du mode graphique. 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 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 369

M. Elie Degny Raphael

cas, il va vous falloir crer cette ligne de mode ex-nihilo. Vous trouverez dans le fichier de documentation VideoModes.doc de XFree86 les explications permettant de crer une ligne de mode correcte partir des caractristiques de votre moniteur. Pour les moniteurs multisynchrones, la technique suivante peut tre utilise. La premire tape est de trouver la bande passante de votre moniteur et les plages de frquences horizontales et verticales utilisables par votre moniteur. Ces donnes sont trs souvent fournies dans leur documentation. 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 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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

370

M. Elie Degny Raphael

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 des valeurs comme taux de rafrachissement de base. 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 XFree86, 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 371

M. Elie Degny Raphael

avec les paramtres modifis. Vous trouverez une description plus dtaille de la manire d'utiliser xvidtune dans la la section intitule Utilisation de xvidtune. 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 pas dpasser ni les limites de votre carte graphique, ni la bande passante de votre moniteur. 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 B. 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... Sections Modes Gnralement, les lignes de modes sont dfinies pour un cran donn, car l'apparence de l'image dpend des caractristiques de chaque cran. 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 modes d'un cran donn dans une section part, afin de structurer et d'organiser le fichier XF86Config. Pour cela, on crira des sections Modes , qui n'auront donc pas d'autre rles que de contenir une ou plusieurs lignes de modes, et qui seront rfrences dans les sections Monitor des moniteurs qui dsirent utiliser ces lignes de modes. L'intrt de regrouper toutes les lignes de modes dans une section Modes apparat clairement ds que plusieurs sections Monitor utilisent les mmes lignes de modes. Ce peut tre le cas pour des moniteurs d'un mme fabricant ou possdant des caractristiques techniques similaires.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

372

M. Elie Degny Raphael

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 modes 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 sections 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 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. 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 modes 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"

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

373

M. Elie Degny Raphael

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

Sections ServerLayout Le dernier type de section, qui regroupe toutes les informations des sections vues prcdemment, est le type de sections ServerLayout . Comme son nom l'indique, les sections de ce type fournissent les 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 XF86Config. En effet, ce fichier peut tre utilis par plusieurs serveurs X qui peuvent tourner

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

374

M. Elie Degny Raphael

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 ServerLayout que le serveur X trouvera dans le fichier XF86Config, 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 seuls 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 RightOf, LeftOf, Above et Below, 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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

375

M. Elie Degny Raphael

diffrents priphriques d'entre correctement. Il faut donc lui indiquer la nature du priphrique l'aide de l'option CorePointer pour la souris principale et de l'option CoreKeyboard pour le clavier principal. Notez qu'il est possible d'utiliser plus d'un clavier et d'une souris, mais dans ce cas, les vnements des diffrents priphriques se mlangeront et l'installation sera franchement inutilisable... Enfin, comme vous pouvez le voir dans l'exmple 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 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. Informations utilises lors du dmarrage de XFree86 Les informations stockes dans le fichier de configuration XF86Config sont utilises par XFree86 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 XF86Config. Cependant, il est possible de lui demander d'en utiliser une autre, l'aide de l'option de ligne de commande -layout, 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 -depth, suivie de la profondeur de couleur utiliser, spcifie en bits par pixels. Remarquez que dans le cas des configurations plusieurs cran, 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+'+' et CTRL+ALT+'-' ('+' et '-' doivent tre 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.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

376

M. Elie Degny Raphael

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. 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 aussi bien au moniteur qu' l'utilisateur. En effet, il permet de modifier les paramtres de synchronisation horizontale et verticale du moniteur pour ajuster l'image. Si vous choisissez de mauvais paramtres, vous pouvez sortir des spcifications techniques de votre moniteur. Cela pourrait fort bien l'endommager, et, ce qui est plus grave, le conduire mettre un rayonnement X dangereux pour vous. 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.
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 377

M. Elie Degny Raphael

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 XF86Config, vous pouvez cliquer sur le bouton Show . La ligne de mode sera affiche sur le terminal partir duquel vous avez lanc xvidtune, vous pourrez la recopier dans le fichier XF86Config 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 XF86Config par XF86Setup. 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 XF86Config. Vous devez reporter manuellement les paramtres du mode courant, tels qu'ils sont prsents par la commande Show , dans le fichier XF86Config. Utilisation du driver frame buffer du noyau Si par malheur votre carte graphique n'est gre par aucun des drivers de XFree86 (cas relativement exceptionnel), vous serez sans doute oblig d'utiliser le driver vesa. Ce driver 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 driver, 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 driver XFree86 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. 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.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

378

M. Elie Degny Raphael

Configuration du noyau et installation du driver La mise en uvre du driver 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 driver frame buffer devront galement tre actives :

VESA VGA graphics console (cette option permet d'utiliser les modes graphiques VESA indiqus au dmarrage pour l'affichage de la console) ; Advanced low level driver options (NEW) (cette option vous permet de prciser les structures de la mmoire vido que les diffrents modes graphiques sont susceptible d'utiliser) ; 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 de fichier 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 driver frame buffer. 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 lui prciser le mode graphique VESA utiliser :

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

379

M. Elie Degny Raphael

vga=mode o mode est le numro du mode graphique dsir. Les numros valides sont indiqus dans le tableau donn ci-dessous : Tableau 10-2. Numros des modes graphiques VESA Couleurs Rsolution 640x480 800x600 256 769 771 32768 784 787 65536 785 788 16,8M 786 789

1024x768 773 790 791 792

1280x1024 775 793 794 795

1600x1200 796 797 798 799

Si tout se passe correctement, votre systme devrait dmarrer dans le mode graphique indiqu et 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. 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 XFree86 pour le driver 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 driver permettant au serveur X d'utiliser l'interface /dev/fb0. Ce driver se nomme fbdev, et utilise un autre module spcifique au systme d'exploitation nomm fbdevhw. Il faut ensuite modifier ou crer le fichier XF86Config pour utiliser ce driver. Les seules sections modifier pour utiliser le driver 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 driver utiliser est le driver 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"
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 380

M. Elie Degny Raphael

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 : XFree86 -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" 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 modes 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 XFree86 afin de savoir si un tel serveur est en cours de dveloppement, et si oui, d'en rcuprer une version finale ds que possible. 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 souvent en mode texte, mais il est galement possible d'utiliser des terminaux graphiques sous XWindow. Ce type de terminaux est logiquement appel 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 381

M. Elie Degny Raphael

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 la section intitule Configuration des terminaux virtuels dans Chapitre 6). 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 ). 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 de ce rseau puisse lui demander une connexion. Les serveurs X capable de se connecter xdm de cette manire doivent comprendre le protocole XDMCP (abrviation de l'anglais XDM Control Protocol ). Comme on le voit, la souplesse de ce mcanisme est tout simplement exceptionnelle. Note : Pratiquement, le processus xdm se duplique pour chaque terminal X dont il gre la connexion. Ainsi, chaque processus xdm propose la connexion et surveille la dconnexion de 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 environnement 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. Configuration de xdm Le comportement de xdm est compltement dfini dans ses fichiers de configurations, qui sont en gnral placs dans le rpertoire /etc/X11/xdm/. Ces fichiers 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.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

382

M. Elie Degny Raphael

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 DISPLAY, et doit donc utiliser la syntaxe normale des displays. Les deux types de serveurs disponibles sont local , pour les serveurs de la machine locale que xdm doit lancer lui-mme, et foreign , pour les serveurs distants sur lesquels xdm doit 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 nombres de paramtres en ligne de commande pour leur dmarrage. Vous en trouverez la liste complte dans la page de man Xserver et dans la page de man XFree86. 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/X11R6/bin/X display vtNN o vtNN est le nom du terminal virtuel utiliser (vt01 pour /dev/tty01, vt02 pour /dev/tty02, etc.). Ainsi, si 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 : :0 local /usr/X11R6/bin/X :0 vt11 :1 local /usr/X11R6/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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 383

M. Elie Degny Raphael

utiliss par les serveurs X le sont pas 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 XFree86 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: DisplayManager._3.authorize: etc. true true

Chaque ligne indique que le display correspondant (:2 pour DisplayManager._2.authorize , etc.) doit utiliser les mcanismes de scurit de XWindow. Nous verrons ces mcanismes dans la section suivante. 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.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

384

M. Elie Degny Raphael

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 connexion pour les serveurs X des postes clients. Faites bien attention la terminologie client/serveur ici !). Cela suppose que chaque poste client connat 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 lesquels une connexion est ralisable via xdm. Ainsi, l'utilisateur du poste client pourra choisir le serveur sur laquelle 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 utilisable 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 adresses 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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

385

M. Elie Degny Raphael

indique que les demandes de connexions 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 connexions 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 connexions indirectes. Ces lignes contiennent toujours le nom de la machine ou du groupe de machines, mais ce nom est suivi de la liste des machines auxquelles xdm doit faire suivre la demande de connexion du serveur X. Par exemple, supposons que la machine termX2.localnet.org ne soit pas capable 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 s11.localnet.org s13.localnet.org s5.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.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

386

M. Elie Degny Raphael

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 . Paramtrage du serveur X pour utiliser le protocole XDMCP L'criture du fichier Xaccess reprsente la partie serveur du travail de configuration du protocole XDMCP. En effet, il faut encore indiquer au serveur X distant quel processus xdm il doit tenter de se connecter lors de son dmarrage. Bien entendu, cela dpend fortement du serveur X utilis, qui peut tre quelconque. Par exemple, ce serveur X peut trs bien fonctionner sur une machine Windows. Par consquent, seule la syntaxe des serveurs de XFree86 sera dcrite ici. Les serveurs X de XFree86 utilisent des options en ligne de commande pour dterminer comment ils doivent se comporter leur dmarrage. 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 en retour, ou le programme chooser sera lanc ; -broadcast permet de demander au serveur X d'effectuer une requte de connexion en broadcast sur le rseau.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

387

M. Elie Degny Raphael

Les serveurs de XFree86 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 -broadcast. 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 connexions indirectes. 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 XFree86 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 /lib/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. Tous ces scripts sont lancs sans paramtres, sauf le script Xsession. Ce script peut en effet recevoir des paramtres fournis par le gestionnaire de connexion (xdm, kdm ou autre), qui permettent de reprsenter les choix que l'utilisateur a fait pour sa connexion dans la fentre de login. Par exemple, le premier paramtre de ce script est souvent le nom du gestionnaire de fentres utiliser. Notez que le nom failsafe rfrence un

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

388

M. Elie Degny Raphael

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 PATH pour ces scripts est dtermine par la valeur de la ligne DisplayManager.DISPLAY.systemPath du fichier de configuration xdmconfig. De mme, le script Xsession est excut avec la variable d'environnement PATH fixe la valeur spcifie par la ligne DisplayManager.DISPLAY.userPath du fichier xdm-config. Si vos scripts de gestion de connexions ne fonctionnent pas correctement, c'est sans doute un problme li l'environnement. En pratique, ces fichiers de scripts de gestion de 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 /usr/X11R6/lib/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 : sessreg -d -l $DISPLAY -x /usr/X11R6/lib/xdm/Xservers $LOGNAME dans le fichier Xreset, afin de les supprimer lorsqu'ils terminent cette session. 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 et les paramtres de la souris, en passant par l'conomiseur d'cran. Heureusement, nous avons dj vu comment nous pouvons 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 XFree86 XF86Config. Nous verrons donc ici comment modifier des paramtres qui tiennent plus de l'ergonomie que de la configuration de base. 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 389

M. Elie Degny Raphael

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 est inadmissible si vous l'utilisez en tant que serveur (heureusement, les conomiseurs d'cran logiciels se lancent avec des priorits trs faibles, afin de ne pas perturber les autres processus). Cette option prend 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 XF86Config, 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 XF86Config 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 XF86Config ne sont pas prises en compte ou si l'conomie d'nergie reste dsactive malgr la prsence de l'option DPMS 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/X11R6/lib/X11/fonts/100dpi/ la liste des rpertoires de polices du serveur, il suffit de taper la commande suivante : xset +fp /usr/X11R6/lib/X11/fonts/100dpi

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

390

M. Elie Degny Raphael

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 XF86Config. Enfin, l'option q de xset vous permettra de visualiser l'ensemble des paramtres en cours de validit. 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 driver clavier de la console peuvent travailler au niveau ASCII, au niveau keycode ou au niveau scancodes. 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 XFree86 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 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 absolument 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 XWindow. Le protocole Xkb utilise les fichiers de configuration stocks dans le rpertoire /usr/X11R6/lib/X11/xkb/. Ce rpertoire contient un certain nombre de sousrpertoires, 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 Fonction rpertoire 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 dfinition des keycodes X du clavier. Les
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 391

M. Elie Degny Raphael

Nom rpertoire

du Fonction 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. Contient la dfinition du plan de clavier, ou autrement dit l'association entre les keycodes X et les symboles obtenus lors de l'appui sur les touches. Contient la dfinition des modles de claviers de XFree86. Ces modles de claviers sont utiliss pour simplifier la dfinition des claviers dans le fichier de configuration XF86Config. 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.

symbols/

rules/

keymaps/

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 jeux dfinit les symboles accessibles avec la combinaison de la touche AltGr. Par exemple, la touche du chiffre '3' au dessus des lettres 'Z' et 'E' est 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.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

392

M. Elie Degny Raphael

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, [ currency, E E ] }; ],

Note : Notez que la touche Euro est dj accessible par dfaut sur les claviers franais avec la touche des monnaies (Livre Sterling, Dollar). Une autre touche qui peut tre redfinie pour un clavier franais est la touche 'O', afin de lui faire gnrer les symboles o e dans l'o franais ('' et '') au lieu des symboles o barrs ('' et '') norvgiens, qui ne sont pas trs utiles en franais. Notez que les noms de symboles utiliss dans les tables 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 XFree86. De mme, plusieurs gomtries et dfinitions de keycodes sont fournies dans les sous-rpertoires geometry/ et keycodes/ du rpertoire /usr/X11R6/lib/X11/xkb/. Le serveur X utilise les fichiers qui sont rfrencs dans la section Keyboard du fichier de configuration XF86Config. 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 /usr/X11R6/lib/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 XFree86. 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 XFree86 : le fichier contenant la dfinition des modles de clavier, le modle lui-mme et le fichier dfinissant la disposition des touches.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

393

M. Elie Degny Raphael

Note : Vous pouvez galement dfinir tous les paramtres du clavier dans le fichier XF86Config. 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 XF86Config. 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 fentre pour dfinir l'apparence et la disposition de leurs fentres, elles sont soumises aux options gnrales de ces deux programmes. Cependant, elles peuvent tre paramtres elles-aussi, et leur comportement peut tre personnalis souhait par chaque utilisateur. Pour cela, XWindow fournit un mcanisme standard aux 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 /usr/X11R6/lib/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 prfrence 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 prfrence 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 394

M. Elie Degny Raphael

certaines ressources. Ces options prvalent sur les valeurs dfinies dans les fichiers de configuration des applications et de prfrence 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. 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 sousensemble 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 leur dfinition dans le fichier /usr/X11R6/lib/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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 395

M. Elie Degny Raphael

qualifie la couleur d'arrire Xapplication .

plan

de

toutes

les

fentres de

l'application

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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

396

M. Elie Degny Raphael

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 que vous avez redfinies. 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 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 local ne provient pas de la machine locale, 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 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. 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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

397

M. Elie Degny Raphael

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 les droits de connexions 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. 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 root peut accder. Il communique ensuite ce fichier au serveur X local l'aide de l'option -auth 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 prives et les communiquer aux personnes de confiance

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

398

M. Elie Degny Raphael

qui doivent avoir accs votre display. Ces manipulations peuvent tre effectues l'aide de la commande xauth. La cl publique 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. 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 se charger de lui-mme de l'impression, et en gnral les programmes ne sont capables que 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). 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
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 399

M. Elie Degny Raphael

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 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 correct, car les formules utilises ont t conues pour les priphriques disposant de grandes rsolutions et ne donnent pas forcment un rsultat esthtique pour les rsolutions 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 code 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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

400

M. Elie Degny Raphael

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 code 1, ce qui fait que l'encodage des polices occidentales est ISO 8859-1. Cependant, quelques caractres ont t oublis dans cette page de code (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 code 1252 des polices de caractres de Windows. Cette page de code correspond l'encodage windows-1252 , parfois galement nomm microsoft-ansi ou encore microsoft-cp1252 . En rsum, le jeu de caractres et la page de code 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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

401

M. Elie Degny Raphael

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 XFree86 dans quels rpertoires ils doit rechercher les polices de caractres utilisables. Les rpertoires des polices utilises par le serveur X sont indiqus dans le fichier XF86Config, dans la section Files . Comme on le verra plus tard, cette section peut galement contenir des rfrences sur des serveurs de polices de caractres. Les serveurs de polices de caractres peuvent rechercher les polices dans des rpertoires indiqus de diffrentes manires selon le serveur. Pour certains serveurs, les rpertoires de polices sont indiqus dans un 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 polices utilis. Celle utilise pour les polices Truetype sera dcrite dans la la section intitule Installation des polices Truetype. 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 contiennent 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 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 fichiers de polices. 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 souvent la numrotation 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

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

402

M. Elie Degny Raphael

de cette numrotation ou qui ne les numrotent pas de la mme manire. Heureusement, les encodages les plus standards ont dj t crits, il est fort peu probable que vous ayez vous intresser ce problme. La structure des fichiers d'encodages ne sera donc pas dcrite plus en dtail dans ce document. Installation des polices Truetype L'installation des polices TrueType sous XWindow ne pose dsormais plus de problme particulier, 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/X11R6/lib/X11/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 truetype/. 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 la section intitule Configuration d'un serveur de polices. 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 de polices 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. Celuici 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 manuellement, ou l'aide de l'utilitaire ttmkfdir de Joerg Pomnitz, que vous pouvez trouver sur Internet. Cette archive contient un fichier binaire dj compil, nomm ttmkfdir.linuxbin.glibc2. Vous pouvez utiliser directement ce fichier si vous le voulez, en le renommant en ttmkfdir et en le copiant dans le rpertoire des binaires de XWindow. L'utilitaire ttmkfdir s'utilise de la manire suivante : ttmkfdir > fonts.scale pour gnrer le fichier fonts.scale. Une fois le fichier fonts.scale cr, il ne reste plus qu' appeler mkfontdir avec la ligne de commande suivante :
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 403

M. Elie Degny Raphael

mkfontdir Cette commande aura pour effet de crer le fichier fonts.dir partir du fichier fonts.scale (en fait, il s'agit d'une simple recopie). Les encodages utiliss par le serveur X pour les polices Truetype sont tous dfinis dans le fichier fonts.dir, qui donne la correspondance entre les descriptions logiques de polices et les fichiers de polices Truetype. Par consquent, vous pourrez aisment modifier ou ajouter des encodages diffrents pour ces polices de la manire suivante :

ditez le fichier fonts.scale contenant la liste des noms de polices et des descriptions logiques de polices ; modifiez la description logique de chaque police ; relancez mkfontdir.

La modification de la description logique de la police consiste simplement changer l'encodage utilis par la police en un autre encodage. Vous pouvez utiliser n'importe lequel des encodages suivants, qui sont grs nativement par le serveur de polices et par le serveur X :

iso10646-1 (encodage Unicode) ; iso8859-1 iso8859-10 ; iso8859-15 ; koi8-r, koi8-u, koi8-ru, koi8-uni, ou koi8-e ; microsoft-symbol (uniquement pour les polices Truetype) ; apple-roman (uniquement pour les polices Truetype d'Apple).

Vous pouvez galement utiliser des encodages additionnels, condition d'utiliser l'option -e de mkfontdir lors de la gnration du fichier fonts.dir. Cette option permet d'indiquer le rpertoire contenant les fichiers de dfinition des encodages utiliser : mkfontdir -e rpertoire o rpertoire est le rpertoire contenant les fichiers de dfinition d'encodages. Cette commande a pour consquence de crer un fichier encodings.dir en plus du fichier fonts.dir. XWindow est fourni avec un certain nombre de fichiers de dfinition d'encodages standards, tous situs dans le rpertoire /usr/X11R6/lib/X11/fonts/encodings/. L'un des plus intressants est sans doute microsoft-cp1252, qui permet de disposer des caractres additionnels ajouts par Microsoft dans ses polices, tout en conservant un encodage compatible avec les documents Windows. Note : Si vous voulez rester compatible avec les normes ISO, vous pouvez utiliser l'encodage ISO 8859-15 au lieu de microsoft-cp1252. Vous accderez ainsi tous les caractres utiliss en Europe, mais vous ne pourrez plus utiliser les caractres additionnels dfinis par Microsoft.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

404

M. Elie Degny Raphael

Il faut noter que la plupart des polices sont dfectueuses et indiquent une page de code errone dans leur fichier. Cela explique pourquoi quelques descriptions logiques de polices dans le fichier fonts.scale gnr automatiquement par ttmkfdir peuvent tre fausses. Pour ces polices, il faudra corriger l'encodage manuellement en suivant la mthode dcrite ci-dessus. Certains programmes ne donnent pas la possibilit de choisir l'encodage pour les polices de caractres. C'est en particulier le cas pour la suite bureautique StarOffice. Il y a qu'une seule solution ce problme : ne dfinir qu'un seul encodage pour la police en question. Configuration des polices Truetype pour l'impression Comme il l'a t dit plus haut, la configuration des polices Truetype pour l'impression dpend fortement de chaque programme utilis. D'une manire gnrale, plusieurs 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 le configurer pour utiliser les polices Truetype. Nous verrons comment le faire pour les versions de GhostScript ultrieures la 6.01.

Dans les deux cas, il se peut qu'il faille configurer le logiciel utilis pour qu'il puisse utiliser les polices Truetype. C'est en particulier le cas de la suite bureautique StarOffice, qui ne permet de choisir que les polices qu'il peut imprimer. Les paragraphes suivants dcrivent les procdures suivre pour imprimer les polices Truetype en gnral. La configuration de StarOffice 5.2 sera galement dcrite, car c'est l'une des suites logicielles les plus abouties sous Linux (qui de plus est devenue un logiciel libre grce Sun). La configuration des autres logiciels ne sera pas aborde, consultez leur aide ou recherchez des renseignements sur Internet quant la procdure suivre. 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 mme manire que les autres utilisateurs de Linux, et il est donc plus facile de trouver de l'aide sur Internet.
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 405

M. Elie Degny Raphael

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 encode, 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 extraits 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 compilations CFLAGS. 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 -DSMALLENDIAN.

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. Elle doit tre utilise lorsqu'on veut utiliser un logiciel comme StarOffice, qui a besoin de connatre les dimensions de la police pour l'afficher correctement et pour faire ses calculs de mise en page. 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).
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 406

M. Elie Degny Raphael

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. En pratique, le nom de la police d'imprimante peut tre choisi librement. En revanche, il faudra bien utiliser ce nom lors de la dclaration des polices d'imprimantes dans les logiciels capables d'imprimer en PostScript. On veillera toutefois ne pas utiliser des noms de polices contenant des espaces blancs, car certains programmes peuvent avoir du mal manipuler de tels noms. Configuration de StarOffice pour l'utilisation des polices Truetype StarOffice ne gre pas les polices Truetype directement. En fait, il n'est capable d'imprimer lui-mme que les polices Adobe de Type 1. De plus, il ne propose pour l'affichage que les polices qu'il est capable d'imprimer. Cependant, il est possible d'utiliser malgr tout les autres polices en tapant directement leur nom dans le contrle de slection de polices, tel qu'il apparat dans leurs descriptions logiques et en minuscule. Dans ce cas, StarOffice utilisera les polices XWindow malgr tout, mais il ne pourra toujours pas les imprimer. Il faut galement s'attendre ce que la mise en page ne soit pas correcte, car il ne peut pas dterminer les caractristiques gomtriques de la police. Pour qu'il puisse imprimer les caractres d'une police Truetype, il existe deux possibilits. La premire est tout simplement de convertir les polices Truetype en polices Adobe de Type 1. Cette mthode souffre de plusieurs inconvnients :

les polices Adobe de Type 1 sont moins prcises que les polices Truetype, surtout pour les petits caractres ; la conversion n'est pas parfaite (c'est--dire que les caractres ne sont pas exactement les mmes) ; elle n'est pas complte (les outils de conversion ne grent que l'encodage ISO 8859-1).

La deuxime solution est de faire croire StarOffice que l'imprimante contient la dfinition de la police Truetype dans sa mmoire. Cette solution a l'avantage de ne pas convertir les polices Truetype en police Adobe de Type 1, et donc de ne pas perdre en qualit. De plus, elle permet d'conomiser la place disque occupe par les polices converties. Cependant, elle a galement des inconvnients :

il faut passer par un mulateur PostScript (comme GhostScript par exemple) capable de comprendre les polices Truetype, ou il faut encapsuler ces polices

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

407

M. Elie Degny Raphael

dans une police Adobe de Type 42 (cette encapsulation n'est pas une conversion, il n'y a donc toujours pas de perte de qualit) ; la configuration de StarOffice est bien plus complique ; il faut installer les polices pour l'interprteur PostScript ou pour l'imprimante ; il faut gnrer un fichier de description de caractristiques gomtriques .afm. Cela n'est pas trs ais, et le problme de la gestion des encodages autres que ISO 8859-1 se pose nouveau.

Note : Aucune de ces solutions ne permet d'utiliser les encodages ISO 8859-15 et microsoft-cp1252, ce qui implique que certains caractres des polices Truetype ne seront pas imprimables. En particulier, le caractre o e dans l'o franais ('') ne pourra pas tre imprim... En fait, cette limitation est une limitation des outils de conversion pour la premire mthode, et une limitation de GhostScript pour la deuxime. Seule la deuxime mthode sera dcrite ici, car c'est la seule mthode qui permette rellement d'utiliser les polices Truetype avec StarOffice. De plus, c'est la mthode qui ncessite le plus d'explications, ceux qui sont intresss par la premire mthode trouveront des informations claires dans l'aide de StarOffice. La premire tape est de crer un fichier .afm pour chaque fichier de police Truetype. Ces fichiers contiennent la dfinition des dimensions de chaque caractre de la police, ainsi que l'encodage utilis. StarOffice utilise ces fichiers pour effectuer ses calculs de mise en page, partir des dimensions des caractres. Note : StarOffice n'utilise pas l'encodage indiqu dans le fichier .afm. Il utilise l'encodage de la police X11 de l'affichage. Si une police dispose de plusieurs encodages diffrents, il choisit celui qui lui semble le plus appropri. En gnral, il s'agit de l'encodage ISO 8859-1. Comme on l'a vu plus haut, on est oblig de ne dfinir qu'un seul encodage dans le fichier fonts.dir si l'on veut tre sr que StarOffice utilise l'encodage que l'on dsire. La cration des fichiers .afm est une opration assez complique. Elle peut tre faite grce au programme PostScript afmmaker.ps , que l'on peut trouver sur Internet. Pour l'utiliser, il faut l'diter et dfinir la police pour laquelle on dsire crer un fichier .afm. Les champs qui doivent tre modifis sont marqus avec le commentaire MAKE CHANGES . On veillera ne pas modifier le programme en dehors de ce cette zone. Les informations modifier sont les suivantes :

le nom de la police d'imprimante (variable /fontName ). Le nom qui doit tre utilis ici est le nom de la police qui a t entr dans le fichier Fontmap de GhostScript ; l'encodage de la police (variable /encodingScheme ). Il est recommand de conserver l'encodage ISOLatin1Encoding , car les autres encodages sont moins riches. En fait, on peut utiliser tous les encodages reconnus par
www.linux-kheops.com/doc/.../c148.htm Cours de LINUX 408

M. Elie Degny Raphael

GhostScript, savoir StandardEncoding , ISOLatin1Encoding , SymbolEncoding , ou DingbatsEncoding ; Note : Le fait de ne pas pouvoir utiliser l'encodage microsoft-cp1252 ou l'encodage ISO 8859-15 est bien une limitation de GhostScript.

le nom complet de la police (variable /fullName ) ; le nom de la famille de la police (variable /familyName ) ; la graisse de la police (variable /weight ) ; l'angle de la police si elle est italique (choisissez 0 s'il s'agit d'une police romane).

Pour la plupart des polices, il n'est ncessaire de prciser, en plus du nom de la police d'imprimante, que la graisse de la police. Les polices normales utilisent souvent Medium , et les polices grasses utilisent souvent Bold . Une fois ces modifications faites, vous pourrez crer le fichier .afm avec la commande suivante : gs -q -dNODISPLAY -dBATCH afmmaker.ps > fichier.afm o fichier.afm est le nom du fichier .afm crer. Vous pouvez choisir n'importe quel nom, StarOffice ne s'en soucie absolument pas (il utilise tous les fichiers .afm dont il dispose de toutes faons). La deuxime tape est d'installer tous les fichiers .afm ainsi cr dans le sous-rpertoire xp3/fontmetrics/afm/ du rpertoire d'installation de StarOffice. Assurez-vous de ne pas craser de fichiers .afm dj prsent, et renommez au besoin les fichiers .afm que vous avez cr. La troisime tape est de faire l'association entre la police d'imprimante et la police X11 utiliser. Cette association est faite dans le fichier xp3/psstd.fonts, qui contient la dfinition des polices PostScript standards. La structure de ce fichier est trs simple : pour chaque police installe, il existe une ligne donnant le nom de la police d'imprimante (celui qui a t utilis dans le fichier Fontmap de GhostScript) et la description logique paramtre de la police X11 correspondante, spars par une virgule. La description logique paramtre de la police X11 est la mme description que celle que l'on peut trouver dans le fichier fonts.dir du rpertoire d'installation des polices, ceci prs que les champs de taille de police, de taille des points, de rsolution horizontale et de rsolution verticale sont remplacs par la chane de caractre %d . Cette chane de caractres indique StarOffice que les champs correspondants devront tre remplacs par leurs valeurs en fonction de la taille de la police choisie. Faites bien attention ne pas faire de fautes de frappe lors de la saisie de ces descriptions. Le plus simple est encore de les copier partir du fichier fonts.dir et de les modifier pour remplacer les spcifications de taille et de rsolution par %d . La ligne suivante donne un exemple d'association entre la police d'imprimante TimesNewRoman et la police Truetype correspondante dans X11 :

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

409

M. Elie Degny Raphael

TimesNewRoman, -monotype-times normal--%d-%d-%d-%d-p-0\ -iso8859-1

new

roman-medium-r-

Note : StarOffice n'utilise pas ncessairement l'encodage de la police que vous indiquez ici. Il est recommand d'utiliser l'encodage ISO 8859-1 pour ne pas avoir de problmes, cependant, mme si l'encodage est diffrent, tout fonctionnera correctement. La dernire tape est d'indiquer StarOffice que cette police est connue de l'imprimante. Cela est ncessaire pour qu'il n'essaie pas de la dfinir (il n'y parviendrait d'ailleurs pas, puisqu'il ne sait pas lire les polices Truetype), et qu'il laisse cette imprimante utiliser sa propre dfinition. Pour les utilisateurs de GhostScript, il faut modifier le fichier SGENPRT.PS du sous-rpertoire ppds ( PostScript Printer Definition ) du rpertoire d'installation de StarOffice. Vous devrez ajouter une ligne pour chaque police d'imprimante installe, dans la section Fonts de ce fichier. Le format de ces lignes doit tre le suivant : *Font nom: Standard "(001.002)" Standard ROM o nom est le nom de la police d'imprimante tel qu'il apparat, encore une fois, dans le fichier Fontmap de GhostScript. Une fois ces tapes ralises, vous pourrez redmarrer StarOffice, et vous disposerez de vos polices Truetype sous StarOffice. Le nom de ces polices sera celui de la police X11 utilise pour l'affichage. Le nom de la police utilise dans les fichiers d'impression sera celui du fichier Fontmap de GhostScript. Note : Il est ncessaire d'utiliser le mme encodage pour la police X11 et dans le fichier .afm. En effet, si ce n'est pas le cas, le texte imprim utilisera l'encodage de la police X11 et sera imprim avec l'encodage du fichier .afm. Cela peut provoquer quelques erreurs dsagrables l'impression. Pour viter tous les problmes, il est recommand de n'utiliser que l'encodage ISO 8859-1, jusqu' ce que GhostScript puisse utiliser l'encodage microsoft-cp1252 ou l'encodage ISO 8859-15. 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 /etc/xfs.conf. Un fichier de configuration typique est donn ci-dessous :

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

410

M. Elie Degny Raphael

# 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/X11R6/lib/X11/fonts/truetype # Fixe la taille par dfaut (en diximes de points) : default-point-size = 120 # Rsolution par dfaut (100 x 100 et 75 x 75) : default-resolutions = 100,100,75,75 # N'utilise pas le mcanisme de traage des erreurs 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 : fslsfonts -server localhost:7100 Si cette dernire commande choue, il se peut que le chemin indiqu pour les rpertoires de polices dans le fichier /etc/xfs.conf 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 police en suivant le mcanisme des niveaux d'excution. Vous trouverez ci-dessous un exemple de script de lancement du serveur de police permettant d'utiliser le fichier de configuration prcdent : #!/bin/bash

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

411

M. Elie Degny Raphael

# # /etc/rc.d/xfs # # Fichier de lancement du serveur de polices. # PORT=7100 FILE=/etc/xfs.conf PRGM=/usr/X11/bin/xfs [ -f $PRGM ] || exit 0 # Analyse les paramtres : case "$1" in start) # Vrifie si xfs est dj lanc : if [ -f /var/lock/subsys/xfs ]; then echo -n "Redmarrage du serveur de polices" killall -e -TERM $PRGM rm -f /var/lock/subsys/xfs fi $PRGM -port $PORT -config $FILE & touch /var/lock/subsys/xfs ;; stop) if [ ! -f /var/lock/subsys/xfs ]; then echo -n "xfs 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}" exit 1 esac exit 0

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

412

M. Elie Degny Raphael

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 police dans le rpertoire rc3.d/ ou rc4.d/. Attention, rappelez-vous que les noms de ces liens indiqueront le moment o le script sera appel, 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 police 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/serveur:port o serveur est le serveur sur lequel le serveur de police 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 XF86Config 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 Problmes classiques rencontrs Il est possible que vous rencontriez quelques problmes au lancement de XWindow aprs avoir modifi sa configuration. Ces problmes peuvent passer 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 changement 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 commandestartx.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

413

M. Elie Degny Raphael

Des erreurs un peu plus techniques peuvent provenir de la configuration rseau ellemme (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 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 tout simplement s'assurer que le serveur X en charge de grer le display indiqu dans la variable d'environnement DISPLAY 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 DISPLAY n'a pas t prcise, et que l'option en ligne de commande -display 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 tout simplement 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.

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

414

M. Elie Degny Raphael

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 contraints, 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 !

www.linux-kheops.com/doc/.../c148.htm Cours de LINUX

415

Vous aimerez peut-être aussi