https://lea-linux.org/docs/api.php?action=feedcontributions&user=PingouinMigrateur&feedformat=atom
Lea Linux - Contributions [fr]
2024-03-29T07:22:09Z
Contributions
MediaWiki 1.40.1
https://lea-linux.org/docs/index.php?title=Window_Maker&diff=9179
Window Maker
2005-10-14T18:01:06Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div>[[Category:Paramétrer X Window]]<br />
= WMaker, un window manager pour les amoureux du bash =<br />
<br />
<div class="leatitre">WMaker, un window manager pour les amoureux du bash</div><div class="leapar">par [mailto:xion.y@caramail.com merlin]</div><div class="leadesc">Bien débuter sous WMaker, (il ne faut pas se fier aux apparences sinon on aurait jamais mangé d'oursin...)</div><br />
----<br />
<br />
== De quoi parle l'article ? ==<br />
<br />
Ceci est une aide sur cet excellent window manager méconnu des foules. Cette aide ne contient que des astuces sur son utilisation et ne traite pas de son installation, mais vous sera très utile (je l'espère) pour mener à bien sa configuration.<br />
<br />
== Le Menu ==<br />
<br />
Le menu se trouve dans <code>~/GNUstep/Defaults/WMRootMenu</code> et a une syntaxe ultra simple. Voici pour exemple.<br />
<br />
<div class="code"> (<br /> Applications, <br /> (Run..., SHORTCUT, F2, EXEC, "%a(Run,Type command to run)"), <br /> (XTerm, SHORTCUT, F3, EXEC, "xterm -sb -sl 2000"), <br /> ("Hide All", HIDE_OTHERS), <br /> ("Show All", SHOW_ALL), <br /> (Appearance, OPEN_MENU,<br /> "~/GNUstep/Library/WindowMaker/appearance.menu"), <br /> ("Gaffe!", (Reboot, EXEC, "sudo reboot"), (Halt, EXEC, "sudo halt")), <br /> ("xvnc", EXEC, "xterm -e xvncviewer %a(Enter Host)"), <br /> (Lock, SHORTCUT, "Shift+Delete", EXEC, "xscreensaver-command -lock"), <br /> ("Exit Window Maker", SHORTCUT, "Control+Shift+Delete", EXIT) <br /> ) </div><br />
<br />
(Un espace <u>après</u> chaque virgule)<br />
<br />
Pour la section '''Appearance''', c'est un peu spécial, il renvoie tout simplement vers un autre fichier créé automatiquement par wmaker.<br /> Pour modifier le menu il suffit d'utiliser emacs ou vim, de sauvegarder et de regarder si ça fonctionne. Pas besoin de restart ni de se déloguer, un simple bouton droit sur le bureau affichera les menus modifiés. Afin de gagner du temps je vous propose de rajouter un menu "''Edit Menu''" dans votre menu.<br />'''Attention : ne pas mettre de virgule à la fin si c'est la dernière commande du menu !!'''<br />
<br />
<div class="code"> ("Edit Menu", EXEC, "emacs ~/GNUstep/Defaults/WMRootMenu"), </div><br />
<br />
== Les Boites de dialogues ==<br />
<br />
WM offre une fonctionnalité géniale : les boites de dialogues...<br /> Par exemple, je fais souvent un "xvncviewer" sur différentes machines. Le plus simple serait de taper juste le nom de la machine puis le mot de passe. Et bien je rajoute le menu suivant :<br />
<br />
<div class="code">("xvnc", EXEC, "xterm -e xvncviewer %a(Enter Host)"),</div><br />
<br />
On a vu les <span class="key">"%a"</span> mais il y a aussi les <span class="key">"%s"</span> qui servent à faire du copier-coller.<br />
<br />
Un petit expemple pour le fun :<br /> J'utilise <code>mailx</code> pour envoyer des mails et pas mozilla. Ainsi je ne veux pas cliquer sur les adresses email lorsque je suis sur le web. Alors ce que je fais c'est que je sélectionne l'adresse email comme pour faire un couper/coller et ensuite je fais appel à un menu mail qui récupère l'adresse dans le clipboard et la passe en argument à mailx.<br /> voici le menu :<br />
<br />
<div class="code">("mail", EXEC; "xterm -e mailx %s"),</div><br />
<br />
== Le Dock & Le Clip ==<br />
<br />
WM permet de "docker" les applications qui sont programmées à cet effet. Les fonctionnalités du Clip sont identiques à celles du docckit, la seule différence réside dans le fait que l'on peut avoir des Clips différents par bureau. Pour changer de bureau, cliquer sur les petites flèches dessinées sur celui-ci ou maintenir meta (alt) + 1 pour le premier (main), 2 pour le second etc... La méthode est encore une fois très simple.<br />
<br />
'''Exemple''' : lancer dans un xterm gvim (par exemple) de récupérer l'icône de celui ci et de la faire glisser jusqu'au dock ou au clip.<br />
<br />
Pour les applications "dockables", par exemple wmnet (wmclock, wmbubble, etc...), il suffit de lancer wmnet <span class="key">-w</span> (pour dire que c'est dockable). Il se peut que certains softs soient récalcitrants (gps,xconsole,etc...) mais dans l'ensemble tout fonctionne ;-)<br />
<br />
<u>Pour modifier la ligne de commande et l'icône d'une appli dockée :</u><br />
<br />
Par exemple, je lance mozilla par la commande <code>>mozilla-bin -splash</code> pour avoir le petit lézard pendant le chargement. Donc je fais un clic droit sur l'application dockée (ou clipée) paramètre et je modifie, idem pour l'icône.(c'est intuitif !)<br /> Pour supprimer une application dockée, la prendre et la jeter n'importe où.<br />
<br />
== Le drag and drop (glisser et déposer) ==<br />
<br />
Bon vous avez bien vu que le drag and drop est très utilisé sous WM et bien en plus pour couronner le tout, il est même compatible avec les gestionnaires de fichiers (konqueror, gmc, Offix, pour ne citer qu'eux). Ainsi dans les settings des applis "dockés", il y a un champ pour le <span class="key">"%s"</span>.<br />
<br />
Eh bien pour le drag and drop, il y a le <span class="key">"%d"</span>.<br />
<br />
'''Exemple pour gvim '''<nowiki>:</nowiki><br /><br />
<br />
Commande pour les fichiers lâchés par DND (drag and drop) : <span class="code">gvim %d</span><br /> De cette façon un drag and drop d'un fichier de gmc sur icône de gvim "docké" lance gvim sur le fichier en question. Pas mal non ??<br />
<br />
'''Petite astuce :'''<br /> le drag&drop d'une image dans le Clip l'affichera en image de fond en mosaïques. En effet cela exécute un : <br /><span class="code">"wmsetbg -u -t %d"</span><br /> L'astuce est d'ajouter une propriété identique au Dock avec un <span class="key">-s</span> à la place de <span class="key">-t</span> pour avoir l'image en taille maximum. Le plus simple pour avoir toujours les images de fond sous la main est de les stocker dans <code>~/GNUstep/Library/WindowMaker/Backgrounds</code>.<br />
<br />
== Les Thèmes ==<br />
<br />
Les thèmes sont stockés dans <code>~/GNUstep/Library/WindowMaker/Themes</code>.<br /> Voici un exemple de fichier Thème :<br />
<br />
<div class="code"> {<br /> TitleJustify = left; <br /> ClipTitleFont = "-*-helvetica-bold-r-normal-*-10-*-*-*-*-*-*-*"; <br /> WindowTitleFont = "-*-helvetica-bold-r-normal-*-12-*-*-*-*-*-*-*"; <br /> MenuTitleFont = "-*-helvetica-bold-r-normal-*-12-*-*-*-*-*-*-*"; <br /> MenuTextFont = "-*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*"; <br /> IconTitleFont = "-*-helvetica-medium-r-normal-*-8-*-*-*-*-*-*-*"; <br /> DisplayFont = "-*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*"; <br /> HighlightColor = white; <br /> HighlightTextColor = black; <br /> ClipTitleColor = "rgb:79/96/cf"; <br /> CClipTitleColor = "rgb:61/61/61"; <br /> FTitleColor = white; <br /> PTitleColor = white; <br /> UTitleColor = "rgb:79/96/cf"; <br /> FTitleBack = (mhgradient, "#182c70", "#182c70", "#4969c7", "#79a2d0", "#a4dad0"); <br /> PTitleBack = (hgradient, "rgb:08/18/38", "rgb:28/3c/49"); <br /> UTitleBack = (mhgradient,"rgb:18/2c/41", "rgb:18/2c/41", "rgb:08/18/38", "rgb:28/3c/49", "rgb:28/45/30"); <br /> MenuTitleColor = "rgb:10/28/51"; <br /> MenuTextColor = "rgb:10/30/38"; <br /> MenuDisabledColor = gray; <br /> MenuTitleBack = (mhgradient, black, "rgb:28/55/41", "rgb:93/d7/d5", "rgb:96/d7/e7"); <br /> MenuTextBack = (mhgradient, "rgb:18/2c/70", "rgb:28/45/96", "rgb:79/a2/d0", "rgb:96/c7/be"); <br /> IconBack = (mdgradient, "#183454", "#296ed6", "#03110e"); <br /> IconTitleColor = white; <br /> IconTitleBack = "rgb:18/2c/70"; <br /> WorkspaceBack = (solid, "rgb:22/44/77"); <br /> }</div><br />
<br />
Pas grand chose à dire sauf que [http://themes.freshmeat.net http://theme.org] sert beaucoup dans ce cas !<br />
<br />
== Les Raccourcis clavier ==<br />
<br />
Alors là, ça devient merveilleux. Vous pouvez faire ce que vous voulez. Par exemple, je tape sur F3 pour avoir un xterm comme vous avez pu le voir plus haut. Allez faire un tour dans WPrefs pour voir la config par defaut. De même, il est possible de mettre des raccourcis sur les programmes qui sont dans votre menu.<br />
<br />
'''Note'''<nowiki>: "Mod1" signifie </nowiki><span class="key">alt</span> pour WM<br /><br />
<br />
'''Petite astuce '''<nowiki>: </nowiki><br /> L'astuce consiste à créer un menu pour un programme de screenshot (celui que vous voulez) mais pour l'exemple, j'utilise <span class="key">import</span> binaire de '''imagemagic''' (que je trouve excellent, qu'on se le dise ;-)) puis de lui donner un raccourci :<br />
<br />
<div class="code"> ("screenSHT", SHORTCUT, F8, EXEC, "import -windows root"), </div><br />
<br />
<br /><br />
<br />
Bien, maintenant il suffit d'appuyer sur <span class="code">F8</span> à n'importe quel moment pour entendre 2 bips puis avoir un fichier <font color="purple">magick.miff</font> contenant le screenshot dans mon home.<br />
<br />
== Les attributs fenêtres ==<br />
<br />
Vous avez déjà du faire un clic droit sur la barre de titre d'une application. Là, plusieurs options s'offrent à vous, que vous connaissez pour la plupart donc je passe... (ah si peut-être "hide" (ou cacher) qui cache les applis dans leur bouton de dock ou clip respectif)<br />
<br />
Fin de cette petite parenthèse pour en venir au bouton attributs qui permet toute sorte de fantaisies avec les options données. Je vous en laisse faire la découverte...(mais soyez indugent sur certaines options qui sont en version de test suivant votre version)<br />
<br />
Juste un tip dans "''attribut>options avancées''", il y a au début : <br /><code>Do not bind keybord shorcuts et Do not bind mouse click</code><br /> pption indispensable pour l'utilisation de certains softs ayant les mêmes raccourcis que WM, (meta(alt)+clique droit) dans Gimp par exemple.<br />
<br />
== Pour Finir... ==<br />
<br />
<u>Relancer les applis</u><br />
<br />
Une question qui peut paraître un peu stupide mais qui a un réponse simple. Quand vous lancez une application qui a été mise dans le dock /clip de WindowMaker et que cette application est en cours d'exécution, on ne peut plus cliquer dessus pour la relancer. Or c'est possible en appuyant sur la touche Control en même temps que l'on clique.<br />
<br />
<u>Les options de clip</u><br />
<br />
* '''Keep on Top''' : reste au dessus des autres fenêtre<br />
* '''Refermé''' : cache les appli clippées<br />
* '''L'autoCollapse''' : qui permet de cacher automatiquement les applis coller au clip<br />
* '''L'autoRaise''' : j'ai pas trouvé l'utilité <br />
* '''L'autoAttract Icons''' : permet de d'attirer automatiquement les icons des appli sur le clip<br />
<br />
<u>WPrefs</u><br />
<br />
Petite appli bien utile quand on aime pas éditer sa configuration à la main.<br /> Ce serait vous prendre pour des ânes que de vous expliquez le pourquoi du comment !<br /> Je vous laisse donc voir seul.(n'oublier pas /usr/share/doc/wmaker/)<br />
<br />
== Conclusion ==<br />
<br />
Voilà, en vous remerciant de votre attention (et en excusant les fotes)<br /> @+ merlin<br />
<br />
<div class="merci">Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter.</div><br />
<br />
= Copyright =<br />
<br />
{{CC-BY-NC-SA}}<br />
<br />
<br />
=Autres ressources=<br />
<br />
* [http://windowmaker.org windowmaker.org]<br />
* [http://windowmaker.org/gallery.html galerie windowmaker]</div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=Installer_des_polices&diff=9178
Installer des polices
2005-10-14T18:01:05Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div>[[Category:Paramétrer X Window]]<br />
= Installation de polices pour X, GhostScript et StarOffice =<br />
<br />
<div class="leatitre">Installation de polices pour X, GhostScript et StarOffice</div><div class="leapar">par [mailto:tux.le.pengouin@free.fr Fred]</div><div class="leadesc">Vous avez plein de polices vectorielles TrueType ou Adobe Type1, mais vous ne savez pas comment faire en sorte que X, Ghostscript et StarOffice les utilisent. Ce document est fait pour vous. Il contient l'état actuel de mes recherches sur la question.</div><br />
----<br />
<br />
== Le cas de votre serveur X. ==<br />
<br />
La problématique est la suivante : vous disposer de 3 polices vectorielles : <tt>police1.pfa</tt> (Adobe Type 1 ascii), <tt>police2.pfb</tt> (Adobe Type 1 binaire) et <tt>police3.ttf</tt> (TrueType) et vous souhaitez que X puisse afficher ces polices. Nous supposerons dans la suite que les deux polices type1 sont dans <tt>/usr/share/fonts/type1</tt> et la police TrueType est dans <tt>/usr/share/fonts/ttf</tt>.<br />
<br />
=== Les fichiers fonts.dir et fonts.scale. ===<br />
<br />
Chaque répertoire contenant des polices '''doit''' contenir un fichiers <tt>fonts.dir</tt> qui permet au serveur de polices de faire le lien entre le fichier de polices et le nom <tt>xfld</tt> (le nom X window). Pour les répertoires contenant des polices Adobe Type 1 il faut aussi un fichier <tt>fonts.scale</tt> qui est semblable à <tt>fonts.dir</tt> (son rôle est de donner les différentes tailles de la police). Ces fichiers commencent par un nombre qui est le nombre des polices décrites par ce fichier. Ce nombre est suivi de lignes du type :<br />
<br />
<blockquote><tt>comic.ttf -microsoft-Comic Sans MS-medium-r-normal--0-0-0-0-p-0-fcd8859-15</tt></blockquote><br />
<br />
Le premier champ est le nom de fichier contenant la police, le second champ est le nom <tt>xfld</tt> de cette police sous X. On peut si l'on veut modifier les deux premiers champs du nom <tt>xfld</tt> pour y mettre ce que l'on veut (vous pouvez par exemple remplacer microsoft par linux si ça vous amuse).<br />
<br />
A la vue d'une telle ligne on ne peut qu'être effrayé : "Je vais devoir écrire des lignes aussi farfelues ?". Bien sûr que non. Il existe deux utilitaires qui vont faire ce travail pour nous en extrayant les données qui conviennent directement depuis le fichier de police.<br />
<br />
Pour les polices TrueType l'utilitaire s'appelle : <tt>ttmkfdir</tt>. L'utilisation est relativement simple, puisqu'il suffit de se placer dans le répertoire contenant les polices et de taper :<br />
<br />
<blockquote><tt>ttmkfdir > fonts.dir</tt></blockquote><br />
<br />
et d'ignorer les messages d'erreurs qui signalent que quelques fonts ne sont peut-être pas reconnues par l'utilitaire.<br />
<br />
Pour les polices Adobe Type 1 l'utilitaire s'appelle <tt>type1inst</tt> . Son utilisation n'est pas plus complexe : on se place dans le répertoires contenant les polices et on tape :<br />
<br />
<blockquote><tt>type1inst</tt></blockquote><br />
<br />
et on ignore là aussi les messages d'erreur. Dans les deux cas on a à la fin de l'opération un fichier <tt>fonts.dir</tt> et dans le cas des polices Adobe Type 1, le fichier <tt>fonts.scale</tt> est aussi généré. Dans les cas des polices Type1, type1inst génère en plus <tt>Fontmap</tt> qui contient ce qu'il faut inclure au fichier correspondant de Ghostscript pour que GS (le petit nom de Ghostscript) puisse imprimer ces polices. Nous verrons plus loin que ce fichier ne nous servira pas tel quel : on peut l'effacer sans autre forme de procès.<br />
<br />
A partir de maintenant nous savons comment configurer nos répertoires contenant des polices vectorielles.<br />
<br />
=== Vous utilisez un serveur de polices (XFree 3.3.x). ===<br />
<br />
Et vous avez bien raison, cela permet d'utiliser la même configuration pour toutes vos machines. L'objet de ce document n'étant pas de présenter cet aspect des choses, je ne m'attarderai donc pas sur ce point. <br />Il existe plusieurs serveurs de polices qui font l'affaire, je ne parlerais que de <tt>xfs</tt> le serveur de polices de X auquel on a appliqué les différents patchs nécessaires à la gestion des polices TrueType (c'est le cas de la version de <tt>xfs</tt> livré avec la Mandrake 6.1 et plus) Dans tous les cas, la procédure serait similaire. Je n'expliquerai pas comment l'installer (il est installé par défaut avec les distributions récentes).<br />
<br />
Le fichier de configuration de <tt>xfs</tt> est <tt>/etc/X11/fs/config </tt>(sur la Mandrake, si ce n'est pas votre cas faites <tt>man xfs</tt> pour en avoir le coeur net). Il n'est pas nécessaire d'éditer soi-même ce fichier, <tt>chkfontpath</tt> fait très bien ce travail en vérifiant en plus que les paramètres que l'on lui passe ne sont pas stupides, ce qui nous évite d'avoir un plantage pénible de X parce qu'on a mal écrit un nom de répertoire.<br />
<br />
Pour permettre à notre serveur de polices d'afficher celles que nous venons fraîchement d'installer, il nous faut dire au serveur de police que de nouveaux répertoires contenant des polices sont présents sur notre système. Pour cela nous tapons :<br />
<br />
<blockquote><tt>chkfontpath --add /usr/share/fonts/type1</tt><br /><tt>chkfontpath --add /usr/share/fonts/ttf</tt><br /><tt>/etc/rc.d/init.d/xfs restart</tt></blockquote><br />
<br />
La dernière ligne demande au serveur de police de recharger sa configuration. Le deux première ligne sont suffisamment claires. Pour vérifier que nos polices sont effectivement disponibles il suffit de faire :<br />
<br />
<blockquote><tt>xlsfonts | less</tt></blockquote><br />
<br />
et de regarder la sortie à la recherche des polices que nous venons d'installer. Les noms affichés sont ceux reconnus par X et pas ceux que l'on aimerait trouver.<br />
<br />
=== Vous n'utilisez pas de serveur de polices. ===<br />
<br />
Pourquoi ne pas utiliser un serveur de polices ? Il suffit de récupère le rpm sur [http://rufus.w3.org rufus.w3.org] !<br />
<br />
----<br />
<br />
== Le cas de ghostscript (5.10). ==<br />
<br />
Là, c'est enfantin : il suffit de savoir où est installé le fichier <tt>Fontmap</tt> de ghostscript (<tt>rpm -ql ghostscript | grep Fontmap</tt> devrait fournir une réponse exploitable). Supposons que ce fichier soit dans <tt>/usr/share/ghostscript/5.10/Fontmap</tt>. On édite ce fichier et on ajoute les lignes :<br />
<br />
<blockquote><tt>/nom-de-police1 (/usr/share/fonts/type1/police1.pfa) ;</tt><br /><tt>/nom-de-police2 (/usr/share/fonts/type1/police2.pfb) ;</tt><br /><tt>/nom-de-police3 (/usr/share/fonts/ttf/police3.ttf) ;</tt></blockquote><br />
<br />
Rien de bien compliqué ! La seule chose importante, c'est que je crois qu'il faut que les nom doivent être sans aucun espace ! Puis dans n'importe quel fichier Postscript il suffira de préciser <tt>/nom-de-police1</tt> pour utiliser la <tt>police1</tt>. évidemment, c'est bien joli, mais qui a déjà écrit un fichier Postscript avec ses petites mains ? Donc, passons à StarOffice qui va générer nos fichiers Postscript.<br />
<br />
Pour GS, j'ai rencontré des problèmes avec quelques polices : mais elles sont très rares.<br />
<br />
----<br />
<br />
== Le cas de StarOffice (5.1a). ==<br />
<br />
Pour ce qui est de l'affichage, toutes les applications de StarOffice (sauf StarWriter) doivent déjà être capable de fonctionner avec nos nouvelles polices. Pour l'impression et StarWriter : c'est une autre paires de manches.<br />
<br />
La configuration de StarOffice peut être un véritable cauchemar, en effet ni StarDivision, ni Sun n'ont jamais été très clairs concernant ce point particulier. De plus dans les listes de diffusions, je n'ai pas trouvé beaucoup de chose expliquant tout. <br />La configuration de StarOffice passe par plusieurs fichiers de configuration (dont un fichier particulier puisque c'est un répertoire !). Le format de fichiers de StarOffice est propriétaire (ouh les vilains!), mais heureusement pour nous pas le format des fichiers de configuration qui nous intéresse.<br />
<br />
Réglons d'un coup le cas de StarWriter : quand le problème d'impression aura été réglé il n'en subsistera plus aucun, car StarWriter ne propose que les polices imprimables !<br />
<br />
=== Le fichier SGENPRT.PS. ===<br />
<br />
Donc, il nous suffit de faire en sorte que StarOffice (= SO) soit capable d'imprimer nos polices. Je ne décrirai ici que le cas du conducteur de périphérique (driver) Generic Printer en liaison avec Ghostscript. Il est certain que beaucoup de choses s'appliquent au cas des imprimantes Postscript, mais je ne sais pas lesquels : offrez moi une imprimante Postscript et j'essaierai de trouver <tt><nowiki>;)</nowiki></tt>.<br />
<br />
Pour imprimer, il faut que le conducteur de périphérique soit au fait de nos nouvelles polices. Le fichier conduisant ghostscript est : <tt>$SOPATH/xp3/ppds/SGENPRT.PS</tt> (ou <tt>$SOPATH</tt> est le nom du répertoire contenant votre installation de SO, le répertoire principal, pas le répertoire utilisateur).<br />
<br />
Il suffit d'ajouter à ce fichier, les lignes suivantes :<br />
<br />
<tt>Â *Font nom-de-police1: Standard "(001.000)" Standard ROM</tt><br /><tt>Â *Font nom-de-police2: Standard "(001.000)" Standard ROM</tt><br /><tt>Â *Font nom-de-police1: Standard "(001.000)" Standard ROM</tt><br />
<br />
'''Attention :''' <tt>nom-de-police1</tt> '''DOIT''' être '''exactement le même''' nom que pour ghostscript ! <br />Je ne sais pas à quoi correspond exactement le <tt>001.000</tt> mais il semblerait vu l'analyse que j'ai faite des fichiers <tt><nowiki>*.afm</nowiki></tt> dont nous verrons plus loin l'intérêt, il semblerait que ce soit une taille de polices standard (à voir...).<br />
<br />
Bon, maintenant le conducteur d'imprimante de SO sait que l'imprimante sait imprimer ces polices, mais SO ne sait pas quel est le rapport entre ces polices d'imprimante et les polices écran.<br />
<br />
=== Le fichier psstd.fonts. ===<br />
<br />
Faire le lien entre polices écran et polices d'imprimante c'est le rôle du fichier <tt>$SOPATH/xp3/psstd.fonts</tt>. Cela ne pose pas de problème particulier, il suffit d'ajouter à ce fichier des lignes du type :<br />
<br />
<tt>Â EUNormal, -monotype-EU Normal-medium-r-normal--%d-%d-%d-%d-p-0-iso8859-1</tt><br />
<br />
Même si elles paraissent complexe, il n'est pas très compliqué de les deviner, mais c'est pas agréable à faire : il faut, pour chaque police, aller chercher dans le fichier <tt>fonts.dir</tt> correspondant la ligne décrivant la police X, on note le nom xfld. Puis on ajoute la ligne :<br />
<br />
<tt>Â nom-de-police1''', '''nom-xfld</tt><br />
<br />
où <tt>nom-xfld</tt> est le nom de police X où l'on a remplacé les champs <tt>7</tt>, <tt>8</tt>, <tt>9</tt> et <tt>10</tt> par <tt>%d</tt>, pour permettre à SO de choisir la taille des dites polices (quand je dit "pour", je veux dire qu'il est obligatoire que 4 champs du nom xfld soit des %d !).<br />
<br />
NDJCC : tiens, ils auraient pas programmé SO en C ou C++ ? <tt><nowiki>;-)</nowiki></tt><br />
<br />
Eh bien, on n'est pas sorti de l'auberge, quand il va s'agir d'ajouter 250 polices ! (patience, patience ...)<br />
<br />
=== Le répertoire fontmetrics/afm ===<br />
<br />
Normalement, là on croit que l'on a tout pour être heureux ! Eh bien non ! Là, SO ne sait toujours pas afficher correctement ces polices ! Il lui faut un fichier par police décrivant la ''métrique'' de la police : un fichier <tt>.afm</tt>.<br />
<br />
Pour avoir ces <tt>.afm</tt>, on a deux possibilités :<br />
<br />
* soit on les a eu avec la police (c'est souvent le cas des polices Type 1).<br />
* soit on les crée grâce à une série de scripts et d'utilitaires que le monde libre nous a fourni (merci le monde libre :).<br />
<br />
Pour les créer il faut utiliser :<br />
<br />
* <tt>type1afm</tt> (du paquetage <tt>t1lib</tt> sur la mandrake) pour les polices Type 1.<br />
* <tt>ttf2afm</tt> (du paquetage <tt>ttfutils</tt>) pour les polices TrueType.<br />
<br />
Il faut se placer dans le répertoire contenant le type de polices concernées et taper :<br />
<br />
<tt>Â type1afm *.pf[ab]</tt><br /><tt>Â </tt>ou : <br /><tt>Â ttf2afm *.ttf</tt><br />
<br />
Le problème est que ces fichiers ne sont pas compatibles avec SO ! Il faut les convertir ! C'est le rôle du script <tt>afm.pl</tt> auquel on passe tour à tour chaque fichier <tt>.afm</tt>. Ce scripte crée, pour chaque police : un fichier <tt>.afm.new</tt>. On s'empresse alors d'effacer le fichier <tt>.afm</tt> et de renommer le <tt>.afm.new</tt> en <tt>.afm</tt>. :<br />
<br />
<tt>Â for i in *.afm ; do afm.pl $i ; done</tt><br /><tt>Â rm -f *.afm.new</tt><br /><tt>Â for i in *.afm.new ; do mv $i `echo $i | sed "s/\.new//"` ; done</tt><br />
<br />
Il faut maintenant que SO sache où trouver ces <tt>.afm</tt>, et ceux-ci doivent impérativement être dans le répertoire <tt>$SOPATH/xp3/fontmetrics/afm</tt>, et leur nom doivent être celui de la police ghostscript concernée ! C'est un régal de faire ça à la main !<br />
<br />
Maintenant, SO est capable d'afficher la liste des polices, d'afficher les sus-dites polices et même de les imprimer.<br />
<br />
----<br />
<br />
== Comment automatiser tout cela. ==<br />
<br />
évidemment, on ne va pas se taper tout cela à la main. C'est pour cela que j'ai écrit deux scripts (pour l'instant leur configuration se fait à la main en éditant chacun des scripts, c'est pénible mais je pense que c'est assez clair...)<br />
<br />
=== Ajout de polices ===<br />
<br />
Ce script a pour but de gérer l'installation des polices qui lui sont passées par la ligne de commande. Comme je ne voulais pas que le script pose de question (pour autoriser le <tt>D&D</tt> (drag and drop) depuis <tt>KDE</tt> ou <tt>Gnome</tt>), il m'a fallu faire des choix dans la configuration. <tt>addfont.pl</tt> installe les polices TrueType dans <tt>/usr/share/fonts/addfont/ttf</tt> et les polices Type 1 dans <tt>/usr/share/fonts/addfont/type1</tt>. En contrepartie, la syntaxe est des plus simple :<br />
<br />
<blockquote><tt>addfont.pl --add path1/font1 ... pathn/fontn</tt></blockquote><blockquote><tt>addfont.pl -a path1/font1 ... pathn/fontn</tt></blockquote><br />
<br />
Attention : la présence d'un répertoire est obligatoire pour chaque polices (c'est un bug. FIXED) <br />Attention : lors de l'installation, le script ne copie pas réellement les polices dans les répertoires précités, il n'y met que des liens, donc, vous ne devez pas supprimer la police après l'avoir installée.<br />
<br />
On peut (c'est conseillé) utiliser les jokers (<tt><nowiki>*</nowiki></tt> et <tt>?</tt>). Parfois le script vous renverra un message d'erreur, c'est signe qu'un fichier <tt>.afm</tt> n'a pas pu être converti : la police ne contenait pas assez d'information pour effectuer cette conversion.<br />
<br />
Il y a un bug ''invisible'' : quand <tt>addfont.pl</tt> ne trouve pas un exécutable, ou quand il n'arrive pas à effacer un fichier, il ne retourne aucun message d'erreur, cela peut être très pénible, alors prudence.<br />
<br />
=== Suppression de polices ===<br />
<br />
Il faut passer exactement les mêmes noms (les jokers sont autorisés)<br />
<br />
<blockquote><tt>addfont.pl --rem path1/font1 ... pathn/fontn</tt></blockquote><blockquote><tt>addfont.pl -r path1/font1 ... pathn/fontn</tt></blockquote><br />
<br />
Ces polices seront supprimées des répertoires <tt>/usr/share/fonts/*</tt> ainsi que des fichiers de configuration de GS et SO.<br />
<br />
Il subsiste quand même quelques problème, certaine police on des noms (xfld) du type :<br />
<br />
<blockquote><tt>-Galopagos Design, Inc-Matisse-*-*-*-*-*-*-*-*-*-*-*-*</tt></blockquote><br />
<br />
et cela peut perturber StarOffice à cause de l'espace dans le nom, il faudrait éditer le fichier <tt>fonts.dir</tt> correspondant et modifier cela (encore que je n'ai pas essayé). Un conseil, essayez vos polices et enlevez celles qui ne s'impriment pas. (Sur 300 polices - 150 ttf et 150 pfb - j'en ai une quinzaine qui ne fonctionnent pas correctement, et ce sont à chaque fois des polices très peu utiles) On ne peut jamais être sur que ce n'est pas la police qui est buggée.<br />
<br />
=== Où trouver les utilitaires ===<br />
<br />
Vous devez vous procurer les utilitaires suivants si vous voulez configurer vos polices :<br />
<br />
* <tt>ttf2pt1</tt>, pour convertir des polices TrueType en police Type 1 : [http://ttf2pt1.sourceforge.net/ la home page], [http://members.xoom.com/sab123/ttf2pt1/ la page de Sergey Babkin] qui contient ses derniers patchs expérimentaux.<br />
* <tt>ttfutils</tt>, une série de scripts utilisant les utilitaires précédents (nécessaire pour <tt>addfont.pl</tt> et <tt>remfont.pl</tt>) : [http://pobox.com/~brion/linux/ttf.html la home page], [http://www.moisty.org/~brion/linux/ttf.html la même ailleurs]<br />
* <tt>[afm afm.pl]</tt>, pour rendre les <tt>.afm</tt> compatible avec <tt>SO</tt> (si quelqu'un sait où trouver ce script - écrit par Thomas Bartschies - je lui serais reconnaissant de [mailto:tux.le.pengouin@free.fr me] contacter pour que je puisse rendre à Thomas ce qui est à lui.<br />
* <tt>[addfont addfont.pl]</tt>, pour installer des polices.<br />
<br />
Tous ces utilitaires sont bien sûr libres.<br />
<br />
----<br />
<br />
== Conclusion ==<br />
<br />
La gestions des polices de caractères reste un des points faibles de Linux, j'espère avoir contribué à la rendre plus simple, et que tout ceci vous aidera à imprimer tout plein de jolies polices sous Linux.<br />
<br />
<div class="merci">Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Frédéric Bonnaud le 10/03/2000.</div><br />
<br />
= Copyright =<br />
Copyright &copy; 10/03/2000, Frédéric Bonnaud<br />
{{CC-BY-SA}}<br />
<br />
<br />
=Autres ressources=<br />
Les scripts : <br />
*Â [afm afm.pl] <br />
*Â [addfont addfont.pl]<br />
<br />
Les liens : <br />
*Â [http://ttf2pt1.sourceforge.net ttf2pt1.sourceforge.net] (ttf2pt1) <br />
*Â [http://members.xoom.com/sab123/ttf2pt1 idem chez Sergey Babkin] (ttf2pt1) <br />
*Â [http://pobox.com/~brion/linux/ttf.html pobox.com/~brion/linux/ttf.html] (ttfutils) <br />
*Â [http://www.moisty.org/~brion/linux/ttf.html idem ailleurs] (ttfutils)</div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=Ma%C3%AEtriser_le_d%C3%A9marrage_d%27X_Window&diff=9177
Maîtriser le démarrage d'X Window
2005-10-14T18:01:03Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div>[[Category:Paramétrer X Window]]<br />
= Maîtriser le démarrage de X =<br />
<br />
<div class="leatitre">Maîtriser le démarrage de X</div><br />
<br />
[http://nasgaialinux.free.fr par Martial Daumas]<br />
<br />
Comment démarrer X facilement à partir de la console, et comment configurer les fichiers relatifs.<br />
<br />
----<br />
<br />
== Introduction ==<br />
<br />
Si vous débutez sous linux, le système pour lancer une simple session X peut vous paraître obscur.<br />
<br />
En fait, en général, tout va bien jusqu'au jour ou vous vous mettez en tête de personnaliser un petit peu les méthodes. Cela vient du fait que certaines distributions personnalisent les fichiers, ce qui n'est pas une mauvaise chose en soit, car cela permet d'utiliser linux directement après une première installation, sans avoir à toucher au moindre fichier de configuration (ce qui peut être délicat à faire sous Linux quand on découvre); cela dit, parfois les méthodes misent en oeuvres rendent des modifications personnelles (et c'est quand même là que se situe un des avantage de Linux) assez difficiles.<br />
<br />
Nous allons donc voir des méthodes simples pour s'en sortir, en nous basant tout simplement sur les très bons fichiers de configurations fournis avec X quand il est installé à partir des sources. <br />Â <br />
<br />
== Avertissement ==<br />
<br />
étant donné la très grande diversité des approches et organisation des fichiers (<u>note de Jice</u> : vivement la généralisation du [http://www.pathname.com/fhs/ FHS] - ''Filesystem Hierarchy Standard'' !) selon les distributions, il plus que que recommandé, si vous n'êtes pas certain à 100% de ce que vous faites, de faire une copie préalable de ce qui sera modifié, afin de pouvoir revenir à l'état précédent, ou revenir à la méthode livrée avec votre distribution si vous changez d'avis après coup.<br />
<br />
Tout ce qui est dit ici concerne Xfree86 dans sa version 4.1.0, tenez en compte si votre version diffère. <br />Â <br />
<br />
== Théorie ==<br />
<br />
=== Les fichiers et répertoires en jeu ===<br />
<br />
Avant de personnaliser, essayons de voir en gros comment est organisé X. Voici tout d'abord le contenu du répertoire <tt>/etc/X11</tt> : <br />Â <br />
<br />
{| width="90%" border="BORDER" bgcolor="#CCCCCC"<br />
|<br />
[[Image:startx-folder.gif]]<br />
| bgcolor="#BBBBBB" | <tt>app-defaults</tt><br />
| On trouve ici les configurations par défaut pour les applications X comme <tt>xterm</tt>, <tt>xedit</tt>, <tt>xclock</tt>...<br />
|-<br />
|<br />
[[Image:startx-folder.gif]]<br />
| bgcolor="#BBBBBB" | <tt>fs</tt><br />
| Font server. Le fichier config détermine la taille du cache du serveur de fontes, l'emplacement des fichiers de log, etc.<br />
|-<br />
|<br />
[[Image:startx-folder.gif]]<br />
| bgcolor="#BBBBBB" | <tt>lbxproxy</tt><br />
| Pas abordé ici.<br />
|-<br />
|<br />
[[Image:startx-folder.gif]]<br />
| bgcolor="#BBBBBB" | <tt>proxymngr</tt><br />
| Pas abordé ici.<br />
|-<br />
|<br />
[[Image:startx-folder.gif]]<br />
| bgcolor="#BBBBBB" | <tt>rstart</tt><br />
| Pas abordé ici.<br />
|-<br />
|<br />
[[Image:startx-folder.gif]]<br />
| bgcolor="#BBBBBB" | <tt>twm</tt><br />
| <tt>twm</tt> est le gestionnaire de fenêtres par défaut de X. Il est minimaliste mais très configurable.<br />
|-<br />
|<br />
[[Image:startx-folder.gif]]<br />
| bgcolor="#BBBBBB" | <tt>xdm</tt><br />
| X display manager. Gestionnaire de login (sessions X) par défaut. <tt>kdm</tt> et <tt>gdm</tt> (gestionnaires de login de KDE et Gnome respectivement) se servent de aussi de ce fichier.<br />
|-<br />
|<br />
[[Image:startx-folder.gif]]<br />
| bgcolor="#BBBBBB" | <tt>xinit</tt><br />
| Programme pour initialiser une session X à partir de la console. Peut être lancé via la commande <tt>startx</tt>.<br />
|-<br />
|<br />
[[Image:startx-folder.gif]]<br />
| bgcolor="#BBBBBB" | <tt>xkb</tt><br />
| Concerne le clavier.<br />
|-<br />
|<br />
[[Image:startx-folder.gif]]<br />
| bgcolor="#BBBBBB" | <tt>xserver</tt><br />
| Permet de configurer la sécurité de serveur.<br />
|-<br />
|<br />
[[Image:startx-folder.gif]]<br />
| bgcolor="#BBBBBB" | <tt>xsm</tt><br />
| X session manager. C'est ce qui permet d'avoir plusieurs profils (à travers <tt>xdm</tt> par exemple).<br />
|-<br />
|<br />
[[Image:startx-generic.gif]]<br />
| bgcolor="#BBBBBB" | <tt>XF86Config</tt><br />
| Le fichier de configuration du/des serveurs graphiques.<br />
|-<br />
|<br />
[[Image:startx-generic.gif]]<br />
| bgcolor="#BBBBBB" | <tt>XftConfig</tt><br />
| Configuration du serveur de fontes.<br />
|}<br />
<br />
Nous partons du principe que votre carte graphique est déjà bien configurée. <br />On voit déjà qu'il y aurait plus d'une méthode pour arriver à nos fins, mais nous allons simplement utiliser <tt>xinit</tt>, qui convient parfaitement à une utilisation simple.<br />
<br />
Le répertoire <tt>xinit</tt> contient par défaut uniquement le fichier <tt>xinitrc</tt> que voici (commenté) :<br />
<br />
<nowiki># définition fichiers système / utilisateur à chercher<br />
userresources=$HOME/.Xresources<br />
usermodmap=$HOME/.Xmodmap<br />
sysresources=/usr/X11R6/lib/X11/xinit/.Xresources<br />
sysmodmap=/usr/X11R6/lib/X11/xinit/.Xmodmap<br />
<br />
# merge in defaults and keymaps<br />
# teste l'existence des fichiers prédéfinis, et les<br />
# prend en compte si besoin.<br />
if [ -f $sysresources ]; then<br />
   xrdb -merge $sysresources<br />
fi<br />
<br />
if [ -f $sysmodmap ]; then<br />
   xmodmap $sysmodmap<br />
fi<br />
<br />
if [ -f $userresources ]; then<br />
   xrdb -merge $userresources<br />
fi<br />
<br />
if [ -f $usermodmap ]; then<br />
   xmodmap $usermodmap<br />
fi<br />
<br />
# start some nice programs<br />
# l'environnement X par défaut. Si vous lancez X par un <br />
# simple startx, c'est ce qui est lancé.<br />
<br />
twm &<br />
xclock -geometry 50x50-1+1 &<br />
xterm -geometry 80x50+494+51 &<br />
xterm -geometry 80x20+494-0 &<br />
exec xterm -geometry 80x66+0+0 -name login</nowiki><br />
<br />
Nous voyons donc pourquoi l'appel à <tt>startx</tt> lance par défaut <tt>twm</tt> avec des <tt>xterm</tt> et l'horloge. En fait, <tt>startx</tt> est un simple script Bash qui se charge d'appeler <tt>xinit</tt> à votre place, en lui passant éventuellement un certain nombre de paramètres.<br />
<br />
Voici un fichier <tt>/usr/X11R6/startx</tt> par défaut :<br />
<br />
<nowiki>#!/bin/sh<br />
<br />
userclientrc=$HOME/.xinitrc<br />
userserverrc=$HOME/.xserverrc<br />
sysclientrc=/usr/X11R6/lib/X11/xinit/xinitrc<br />
sysserverrc=/usr/X11R6/lib/X11/xinit/xserverrc<br />
defaultclientargs=""<br />
defaultserverargs=""<br />
clientargs=""<br />
serverargs=""<br />
<br />
if [ -f $userclientrc ]; then<br />
   defaultclientargs=$userclientrc<br />
else if [ -f $sysclientrc ]; then<br />
   defaultclientargs=$sysclientrc<br />
fi<br />
fi<br />
<br />
if [ -f $userserverrc ]; then<br />
   defaultserverargs=$userserverrc<br />
else if [ -f $sysserverrc ]; then<br />
   defaultserverargs=$sysserverrc<br />
fi<br />
fi<br />
<br />
display=:0<br />
whoseargs="client"<br />
while [ "x$1" != "x" ]; do<br />
   case "$1" in<br />
   --)<br />
       whoseargs="server"<br />
       ;;<br />
   *)<br />
       if [ "$whoseargs" = "client" ]; then<br />
           clientargs="$clientargs $1"<br />
       else<br />
           serverargs="$serverargs $1"<br />
           case "$1" in<br />
           :[0-9]*)<br />
               display="$1"<br />
               ;;<br />
           esac<br />
       fi<br />
       ;;<br />
   esac<br />
   shift<br />
done<br />
<br />
if [ x"$clientargs" = x ]; then<br />
   clientargs="$defaultclientargs"<br />
fi<br />
if [ x"$serverargs" = x ]; then<br />
   serverargs="$defaultserverargs"<br />
fi<br />
    <br />
if [ X"$XAUTHORITY" = X ]; then<br />
   export XAUTHORITY=$HOME/.Xauthority<br />
fi<br />
<br />
removelist=<br />
<br />
# set up default Xauth info for this machine<br />
mcookie=`mcookie`<br />
for displayname in $display `hostname -f`$display; do<br />
   if ! xauth list "$displayname" | grep "$displayname " >/dev/null 2>&1; then<br />
       xauth add $displayname . $mcookie<br />
       removelist="$displayname $removelist"<br />
   fi<br />
done<br />
<br />
xinit $clientargs -- $serverargs<br />
<br />
if [ x"$removelist" != x ]; then<br />
   xauth remove $removelist<br />
fi<br />
<br />
if command -v deallocvt > /dev/null 2>&1; then<br />
   deallocvt<br />
fi</nowiki><br />
<br />
<br />Pas besoin de commenter ce script assez simple, retenons simplement cette ligne:<br />
<br />
<tt>xinit $clientargs -- $serverargs</tt><br />
<br />
Et nous comprenons que pour l'instant, il n'y qu'un environnement accessible à la ligne de commande. Les paramètres '''$clientargs -- $serverargs''' permettant de jouer sur le serveur graphique (quel serveur, résolution etc....) mais pas de choisir un window manager, qui est pourtant souvent notre souhait.<br />
<br />
Nous allons maintenant voir plusieurs cas qui peuvent vous intéresser. <br />Â <br />
<br />
== Pratique ==<br />
<br />
Les deux premiers cas concernent les logins dits "texte", lorsque votre ordinateur ne démarre pas en mode graphique par défaut. <br />Â <br />
<br />
=== login texte, un seul WM. ===<br />
<br />
C'est le cas le plus simple : il suffit de choisir un window manager par défaut pour tous les utilisateurs et de modifier en conséquence les fichiers.<br />
<br />
Modifiez la fin de xinitrc pour qu'il ressemble à ça :<br />
<br />
<nowiki># start some nice programs<br />
# l'environnement X par défaut. Si vous lancez X par un <br />
# simple startx, c'est ce qui est lancé.<br />
<br />
# lançons un window manager (ça peut être ce qu'on veut: xfce, <br />
# sawfish, gnome-session etc...)<br />
exec wmaker <br />
<br />
# si vous voulez que soit lancez des programmes décommentez <br />
# cela ou rajoutez des commandes (ça peut être utile dans <br />
# certains cas)<br />
<br />
#xclock -geometry 50x50-1+1 &<br />
#xterm -geometry 80x50+494+51 &<br />
#xterm -geometry 80x20+494-0 &<br />
#exec xterm -geometry 80x66+0+0 -name login</nowiki><br />
<br />
Pour lancer le window manager choisi, vous n'avez plus qu'à taper <tt>startx</tt> ou <tt>xinit</tt>. Pour que chaque utilisateur ait son propre profil, il suffit de créer un fichier <tt>.xinitrc</tt> dans son répertoire <tt>$HOME</tt> (répertoire /home/utilisateur), il remplacera alors le fichier général <tt>/etc/X11/xinit/xinitrc</tt>.<br />
<br />
A noter : si vous voulez passer un paramètre au serveur, utilisez plutôt startx. <br />Â <br />
<br />
=== login texte, multi WM ===<br />
<br />
Vous voulez lancer des sessions X, mais pas toujours avec le même window manager ? C'est très simple, il y a plein de manières de le faire. Voici la méthode la plus simple :<br />
<br />
Créez un fichier <tt>$HOME/.xinitrc</tt> en remplaçant les dernières lignes des exemples précédents par : <br /><tt>exec $1</tt><br />
<br />
Vous pourrez ainsi appeler xinit en lui passant comme paramètre le window manager à lancer ('''$1'''). Par exemple, pour lancer KDE, tapez: <br /><tt>xinit startkde</tt><br />
<br />
et pour lancer windowmaker, tapez: <br /><tt>xinit wmaker</tt><br />
<br />
Si vous trouvez cela pénible à taper à chaque fois, créez des raccourcis dans un fichier de configuration de votre shell. Pour bash, créez ou modifier un fichier <tt>$HOME/.bashrc</tt> et ajoutez y ces lignes:<br />
<br />
alias KDE='xinit startkde'<br />
alias WM='xinit wmaker'<br />
alias GNO='xinit gnome-session'<br />
...et ainsi de suite.....<br />
<br />
Comme cela, la simple saisie de KDE vous lancera kde. On peut difficilement faire plus simple ;o) On pourrait même faire un petit menu qui présente les différentes possibilités, ou ne faire apparaître ce menu que sur une console donnée. <br /><br />
<br />
=== Autologin ===<br />
<br />
Si vous voulez qu'un environnement prédéfini démarre dès que vous avez donné votre login / password, il suffit de rajouter ceci dans votre <tt>.bashrc</tt> (plutôt à la fin) :<br />
<br />
WM_DEFAUT=wmaker<br />
xinit $WM_DEFAUT<br />
<br />
IL faut donc que les alias apparaissent avant cette commande dans le fichier. Tel quel, c'est inutilisable, car ça va faire une erreur à chaque ouverture de console texte ou de xterm supplémentaire, une session X étant déjà en cours. Nous allons juste rajouter un test qui ne déclenchera X que si on se logue sur une console donnée. étant donné que la console qui vous est présentée par défaut au démarrage est tty1, tenez en compte pour choisir sur quelle console faire le test. Pour un utilisation occasionnelle de X, utilisez plutôt tty2 (jusqu'à 12). Ainsi, <tt>CTRL+ALT+F2</tt> vous passera sur tty2, login / password et X.<br />
<br />
if [ `tty` == /dev/tty1 ]; then <br />
       WM_DEFAUT=wmaker<br />
       xinit $WM_DEFAUT<br />
fi<br />
<br />
Si vous voulez que la console réservé au lancement de X reste accessible une fois X lancé, remplacez: <br /><tt>xinit $WM_DEFAUT</tt><br />par : <br /><tt>xinit $WM_DEFAUT &</tt><br />Â <br />
<br />
=== Login graphique : possibilités ===<br />
<br />
Touchons juste un mot des gestionnaires de login (ou gestionnaire d'écran, an anglais display manager) graphiques.<br />
<br />
Le plus fréquent est '''<tt>kdm</tt>''', qui fait partie de KDE. Pas grand chose à dire sinon que c'est sans doute le plus convivial, mais il prend beaucoup de ressources et est donc à éviter sur de petites machines (KDE aussi d'ailleurs).<br />
<br />
Il y a aussi '''<tt>gdm</tt>''', le login qui vient avec Gnome, plus léger, assez simple a configurer.<br />
<br />
Reste enfin le standard qu'est '''<tt>xdm</tt>''' : bien que <tt>kdm</tt> et <tt>gdm</tt> soit des frontends a <tt>xdm</tt>, il est différent, car il a une notion de sessions X qui est très éloignée de celle vues avec KDE ou GNOME. Il est plutôt à réserver à des situations de connexions par réseau et conjointement à divers logiciels ou applications spécialisées.<br />
<br />
Il existe d'autres solutions moins connues, pas toutes stables. Je ne mentionnerai ici qu'un seul cas : <tt>[http://www.ordiluc.net/selectwm/ selectwm]</tt>, c'est celui dont je me sers car il est très léger, super simple, convivial et rapide. Pour une utilisation normale, je trouve qu'il surpasse de loin tout les autres. Je le recommande vivement, essayez-le au moins une fois, il pourrait bien vous convaincre. Il faut <tt>glib</tt> et <tt>gtk+</tt> (librairies livrées avec Gnome) pour compiler ou installer ce soft.<br />
<br />
Avec ce que nous avons vu, vous n'aurez aucun mal personnaliser <tt>selectwm</tt>, et à l'installer comme bon vous semble. Pour remplacer définitivement kdm, il vous faudra sans doute créer un script de remplacement à celui qui gère kdm dans <tt>/etc/init.d/</tt> ou <tt>/etc/rc.d/init.d/</tt> (en tant que service), mais c'est tout simple à faire. <br /><br />
<br />
== Notes ==<br />
<br />
Pour que tous ces exemples marchent, il est impératif que les programmes appelés soit dans votre path (le chemin de recherche des exécutables, qui se matérialise sous la forme de la variable d'environnement <tt>$PATH</tt>). Il faut donc que <tt>/etc/X11R6/bin</tt> fasse partie de votre path pour que les programmes soient trouvés sans le chemin complet. Cela vaut aussi pour les différents window managers. Pour savoir si un exécutable fait partie de votre <tt>$PATH</tt>, taper : <br /><tt>$ type -p commande</tt><br />
<br />
et pour modifier le path dans un fichier de configuration du bash (ex : .bashrc) : <br /><tt>export PATH=$PATH:/nouveau/chemin/bin</tt><br />
<br />
<div class="merci">Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Martial Daumas le 16/09/2001.</div><br />
<br />
= Copyright =<br />
Copyright &copy; 16/09/2001, Martial Daumas<br />
{{CC-BY-NC-SA}}<br />
<br />
<br />
=Autres ressources=<br />
<br />
* [http://www.ordiluc.net/selectwm/ selectwm]</div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=R%C3%A8gler_les_probl%C3%A8mes_d%27X_Window&diff=9176
Règler les problèmes d'X Window
2005-10-14T18:01:01Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div>[[Category:Paramétrer X Window]]<br />
= Régler les problèmes avec X Window =<br />
<br />
<div class="leatitre">Régler les problèmes avec X Window</div><div class="leapar">par Jean-Christophe & Serge</div><div class="leadesc">La célèbre chasse aux troubles.</div><br />
----<br />
<br />
Ce chapitre recense les problèmes les plus fréquemment rencontrés avec X Window et des pistes de solutions plus ou moins complètes pour chacun. Bonne chance !<br />
<br />
== Problèmes et questions ==<br />
<br />
=== Reconfiguration de X ===<br />
<br />
Si vous avez besoin de reconfigurer X, ''surtout ne réinstallez pas Linux'' !<br />
<br />
Conseil : sauvegardez dans un coin votre fichier de configuration <tt>/etc/X11/XF86Config</tt> au cas ou la nouvelle ne fonctionne pas.<br />
<br />
Lancez juste l'un des programmes de configuration (<tt>Xconfigurator</tt> ou <tt>XF86Setup</tt> ou encore <tt>xf86config</tt>) depuis une console en tant que root.<br />
<br />
Testez votre configuration avant tout redémarrage :<br />
<br />
# Mettez-vous sur une console libre (CTRL+ALT+Fn ou n est entre 1 et 6)<br />
# Connectez-vous en root<br />
# Tapez : <tt>init 3</tt> pour passer en mode 'TEXTE'<br />
# Lancez X Window : <tt>startx</tt><br />
# Si ça fonctionne, repasser en mode démarrage X Window (si c'est votre mode de démarage par défaut) : <tt>init 5</tt> . Sinon corriger le problème jusqu'à ce que cela fonctionne.<br />
<br />
----<br />
<br />
=== Changer la résolution ===<br />
<br />
Il y a de nombreuses façons de changer la résolution d'affichage sous Linux. <br />D'abord, regardez si votre distribution ne dispose pas d'un outil graphique pour le faire. Par exemple, Mandrake à partir de la version 7 permet de régler la résolution via <tt>drakconf</tt> à la souris. <br />Essayez aussi les programmes comme <tt>Xconfigurator</tt> ou <tt>XF86Setup</tt> ou encore <tt>xf86config</tt>, qui vous permettent de régler le fonctionnement de X.<br />
<br />
Enfin, vous pouvez le faire à la main, en modifiant le fichier de configuration <tt>/etc/X11/XF86Config</tt> : <br />Ouvrez ce fichier dans un éditeur de textes.<br />
<br />
Dans la <tt>Section "Monitor"</tt>, vous trouvez des lignes du genre : <br /><tt><nowiki># 640x480 @ 60 Hz, 31.5 kHz hsync</nowiki></tt><br /><tt>Modeline "640x480"Â Â 25.175 640Â 664Â 760Â 800Â Â 480Â 491Â 493Â 525</tt><br /><tt><nowiki># 800x600 @ 56 Hz, 35.15 kHz hsync</nowiki></tt><br /><tt>ModeLine "800x600"Â Â 36Â Â Â Â 800Â 824Â 896 1024Â Â 600Â 601Â 603Â 625</tt><br /><tt><nowiki># 1024x768 @ 87 Hz interlaced, 35.5 kHz hsync</nowiki></tt><br /><tt>Modeline "1024x768"Â 44.9Â 1024 1048 1208 1264Â Â 768Â 776Â 784Â 817 interlace</tt><br />
<br />
Ces lignes commencant par <tt>Modeline</tt> définissent trois résolutions possibles pour ton serveur X ; il y en a plein d'autres... La même résolution peut même être définie plusieurs fois : c'est normal. Au lancement X sélectionne la ligne optimale en fonction des paramètres de la carte vidéo et de l'écran (fréquences).<br />
<br />
Dans la <tt>Section "Screen"</tt>, il y a plusieurs définitions de combinaison entre carte vidéo et écran. Il faut trouver celle qui correspond à votre configuration. Une fois cette section trouvée, dans la sous-section <tt>Subsection "Display"</tt>, il y a une ligne du type :<br />
<br />
  Modes   "1024x768"<br />
<br />
Il suffit de la transformer en :<br />
<br />
  Modes   "1280x1024" "1024x768" "800x600"<br />
<br />
pour avoir 3 modes vidéo possibles, ou en :<br />
<br />
  Modes   "800x600"<br />
<br />
pour changer la résolution.<br />
<br />
Enregistrez le fichier, relancez le serveur X (par exemple par Ctrl-Alt-BackSpace), afin de disposer du ou des nouveaux modes vidéo possibles que nous venons de définir.<br />
<br />
Pour passer d'une résolution à l'autre, il faut taper la combinaison de touches : <br />['''Ctrl'''] ['''Alt'''] ['''<tt>+</tt>'''] et ['''Ctrl'''] ['''Alt'''] ['''<tt>-</tt>'''] <br />(avec les touches ['''<tt>+</tt>'''] et ['''<tt>-</tt>'''] du pavé numérique).<br />
<br />
<u>Remarque</u> : La ligne <tt>virtual</tt> présente éventuellement dans la même sous-section permet de définir un bureau virtuel plus grand que l'écran (dans ce cas l'écran défile lorsque la souris arrive sur l'un des bords). La valeur de <tt>virtual</tt> doit être au minimum la plus grande résolution ; si vous ne voulez pas d'écran virtuel, supprimez cette ligne. Cependant, si vous spécifiez plusieurs résolutions, vous aurez '''toujours''' un écran virtuel égal à la plus grande des résolutions.<br />
<br />
----<br />
<br />
=== Réglages manuels dans /etc/X11/XF86Config ===<br />
<br />
''(partie écrite par Serge)''<br />
<br />
Bon, vous en avez assez de démarrer en mode 640x480 en 16 couleurs, avoir à appuyer sur CTRL ALT + pour changer votre résolution, spécifier le nombre de couleur, etc. ? On va régler deux trois trucs à la main. Editez le fichier <tt>/etc/X11/XF86Config</tt>. Repérez les lignes ressemblant à :<br />
<br />
<blockquote><tt>Section "Screen"<br /> Â Driver "svga"<br /> Â Device "Generic VGA"<br /> Â Monitor "My Monitor"<br /> Â Subsection "Display"<br /> Â Â Â Depth 8<br /> Â Â Â Â Â # cette ligne règle le nombre de couleurs<br /> Â Â Â Modes "640x480" "800x600" "1024x768"<br /> Â Â Â Â Â # et celle-ci les résolutions possibles<br /> Â Â Â ViewPort 0 0<br /> Â Â Â Virtual 1024*768<br /> Â EndSubsection<br /> EndSection</tt></blockquote><br />
<br />
Si vous n'utilisez qu'un seul mode (1024*768 par exemple), ne laissez que celui-ci dans la ligne <tt>Modes</tt>. Choisissez aussi le nombre de couleur par défaut que vous voulez utiliser en fixant <tt>Depth</tt> :<br />
<br />
<blockquote>Â <center><br />
<br />
{| width="50%" border="BORDER"<br />
| <tt>Depth 4</tt><br />
| 16 couleurs<br />
|-<br />
| width="50%" | <tt>Depth 8</tt><br />
| width="50%" | 256 couleurs<br />
|-<br />
| width="50%" | <tt>Depth 16</tt><br />
| width="50%" | 65536Â couleurs<br />
|-<br />
| width="50%" | <tt>Depth 24</tt><br />
| width="50%" | 16 millions de couleurs sur 24 bits<br />
|-<br />
| width="50%" | <tt>Depth 32</tt><br />
| width="50%" | True color sur 32 bits<br />
|}<br />
<br />
</center> </blockquote><br />
<br />
Certaines cartes (S3 virge 4Mo par exemple) font du 16 millons de couleurs que sur 24 bits et non pas sur 32 bits.<br />
<br />
Le "<tt>Virtual</tt>" permet de mettre un résolution plus haute que celle de la carte :Â grâce a la souris, on peut alors se déplacer sur les bord de l'écran virtuel et faire scroller l'écran. Si vous ne voulez pas d'écran virtuel, fixez sa valeur à celle de la résolution que vous utilisez.<br />
<br />
----<br />
<br />
=== Changer de carte vidéo ===<br />
<br />
Si vous changez de carte video sur un système ou Linux est déjà installé, vous devrez changer (en général) de serveur X. <br />Afin de ne pas avoir de mauvaise surprise au démarrage, si votre ordinateur démarre habituellement en mode graphique, après le changement de carte et avant d'avoir mis à jour le serveur X, démarrez-le en ''mode console''. Pour ce faire, passez le paramètre "3" au noyau, ce qui indique au noyau en quel mode (''runlevel'') il doit démarrer. <br />Si vous démarrez avec LILO, tapez "linux 3" au boot, si vous démarrez avec LOADLIN, ajoutez "3" à votre ligne de commande, etc.<br />
<br />
Enfin, [x.php3#configuration installez et configurez le serveur X]. Il suffit en fait de changer l'exécutable du serveur X (voir la partie 'installation à la main') et de le configurer.<br />
<br />
----<br />
<br />
=== Gestionnaires de fenêtres et Environnements de Bureau ===<br />
<br />
<blockquote>''Ou Window Managers et Desktop Environments.''<br />Voir le glossaire, entrée [../docs/glossaire.php3#gestionnaire_fenetres Gestionnaire de fenêtres] ou [../docs/glossaire.php3#environnement_bureau Environnement de bureau].</blockquote><br />
----<br />
<br />
=== Changer de Display Manager (xdm, kdm, gdm...) ===<br />
<br />
''Ou Bannière de login.''<br />Voir le glossaire, entrée [../docs/glossaire.php3#display_manager Display manager].<br />
<br />
Le display manager que vous utilisez est défini dans le fichier <tt>/etc/inittab</tt>. Dans ce fichier, vous devez avoir une ligne ressemblant à la suivante (en gras ci-dessous) :<br />
<br />
<nowiki>[root@taz ~]# less /etc/inittab<br />
[...]<br />
# Run xdm in runlevel 5<br />
# xdm is now a separate service<br />
</nowiki>'''x:5:respawn:/etc/X11/prefdm -nodaemon'''<br />
<br />
Ici, le système utilise <tt>prefdm</tt> comme bannière de login. <tt>prefdm</tt> est un [../docs/glossaire.php3#lien_symbolique lien symbolique] vers le vrai display manager :<br />
<br />
<blockquote><tt>[root@taz ~]# cd /etc/X11/<br /> [root@taz /etc/X11]# ls -l prefdm<br /><font size="-1">lrwxrwxrwx 1 root root  12 nov 18 04:14 '''prefdm -> /usr/bin/kdm*'''</font> </tt></blockquote><br />
<br />
Afin de changer de display manager, je vous conseille, si vous n'utilisez pas encore <tt>prefdm</tt>, de le faire, c'est-à-dire de remplacer la ligne de votre <tt>/etc/inittab</tt> par la ligne "'''<tt>x:5:respawn:/etc/X11/prefdm -nodaemon</tt>'''", puis de faire pointer <tt>prefdm</tt> vers le display manager voulu (ici, <tt>gdm</tt>) :<br />
<br />
<blockquote><tt>[root@taz /etc/X11]# whereis gdm<br /> gdm: /usr/bin/gdm<br /> [root@taz /etc/X11]# ln -sf /usr/bin/gdm prefdm<br /> [root@taz /etc/X11]# ls -l prefdm<br /><font size="-1">lrwxrwxrwx 1 root root  12 déc 5 18:51 '''prefdm -> /usr/bin/gdm*'''</font> </tt></blockquote><br />
<br />
La même méthode s'applique pour XDM ou n'importe quel autre display manager.<br />
<br />
----<br />
<br />
=== L'image sur le moniteur est trop petite / trop grande / décalée / tordue, etc. ===<br />
<br />
Bon, là c'est (presque) un faux problème : normalement, si vous avez un moniteur pas trop vieux, vous pouvez contrôler l'apparence de l'image (taille & position, géométrie (rotation, pincussion, trapezoid, balanced pincussion, parallélogramme, j'en passe et des meilleures).<br />
<br />
Si vous n'avez pas de chance, vous avez l'ignoble (et je pèse mes mots) "win-moniteur" Philips qui ne peut être réglé que par un logiciel sous Windows.<br />
<br />
Enfin, vous pouvez utiliser le programme '''<tt>xvidtune</tt>''', qui permet de modifier '''légèrement''' la position et la taille de l'image sur l'écran. Attention, c'est un outil avancé, qui modifie les 'timings vidéo' et les fréquences. Pour les vieux écrans à fréquence fixée, il peut en outre être dangereux. Par contre, sur les moniteurs pas trop vieux qui acceptent des plages de fréquences, c'est un outil qui peut s'avérer utile.<br />
<br />
----<br />
<br />
=== KDE ne fonctionne plus correctement ===<br />
<br />
''(partie écrite par Fred)''<br />
<br />
* '''La variable $KDEDIR n'existe plus ou désigne un autre répertoire que celui de l'installation de KDE'''<br />
<br />Pour une raison ou une autre, les fichiers <tt>.bashrc</tt> et consorts ont été modifiés (voir en particulier les fichiers de <tt>/etc/profile.d/</tt>) et $KDEDIR n'existe plus ou est fausse. Pour le savoir :<br />
<tt>[user@becane home]$ echo $KDEDIR</tt><br /><tt>/usr</tt><br />
Si KDE est installé dans /usr tout va bien, votre problème est ailleurs, si KDE est installé ailleurs ou si aucune valeur est renvoyée, il faut modifier la variable KDEDIR par une commande du type :<br />
<tt>[user@becane home]$ export KDEDIR=/usr</tt><br />
si kde est installé dans <tt>/usr/bin</tt> (c'est l'option par défaut avec la Mandrake). Si ça règle votre problème, il faut modifier vos fichiers de configuration (par exemple <tt>/etc/bashrc</tt>, <tt>/etc/profile</tt>, etc...) de façon que cette variable soit fixée. <br />Â <br />
* '''Vos fichiers de démarrage de KDE sont corrompus'''<br />
<br />Le problème est de savoir lequel. Une méthode pénible est de déplacer le répertoire <tt>~/.kde</tt> vers <tt>~/kde.bak</tt> et de redémarrer KDE, puis de refaire la configuration à la main. Vous pouves aussi copier depuis <tt>~/kde.bak</tt> vers <tt>~/.kde</tt> les fichiers de configuration dont vous êtes sûr qu'ils n'empêchent pas KDE de démarrer correctement. <br />Â <br />
* '''Vous avez un problème avec les types mime'''<br />
<br />Déplacez le répertoire <tt>~/.kde/share/mimelnk</tt> et redémarrez KDE. Puis copiez un par un les mimelnk pour trouver le fautif.<br />
* ''à compléter.''<br />
<br />
----<br />
<br />
=== Impossible de démarrer X ===<br />
<br />
* '''Je n'ai pas l'écran de connexion, et l'écran clignote. Que faire ?'''<br />
Ce problème arrive fréquemment si vous avez modifié la configuration de X, essayé d'ajouter des fontes ou modifié la configuration du serveur de fontes xfs, ceci sans tester que X démarrait toujours avant de rebouter votre ordinateur.<br />
Bon, pour une raison ou une autre, X refuse de démarrer. Et si votre PC démarre habituellement en mode graphique, l'écran est noir et n'arrête pas de clignoter (voire il émet des claquements), et vous ne pouvez rien faire. Nous allons essayer de résoudre le problème.<br />
D'abord, nous allons devoir redémarrer en mode texte (''runlevel 3'') afin de pouvoir faire quelquechose. Pour rebouter proprement, pressez '''Ctrl-Alt-Suppr'''. Vous allez alors voir la procédure habituelle d'arrêt. <br />Pour démarrer en runlevel 3, il faut passer au noyau le paramètre "3", ce qui indique au noyau en quel mode (''runlevel'') il doit démarrer. <br />Si vous démarrez avec LILO, tapez "linux 3" au boot, si vous démarrez avec LOADLIN, ajoutez "3" à votre ligne de commande, etc.<br />
Ensuite, connectez vous en tant qu'un utilisateur normal (appelons le user), et démarrez X à la main pour voir ce qui ne va pas :<br />
'''[user@taz user]$''' startx > startx.log 2>&1<br />
La suite de la ligne de commande après le <tt>startx</tt> fait que toutes les sorties écran ont été redirigées vers le fichier <tt>startx.log</tt>. Ce fichier contient tous les messages habituels de démarrage, plus les erreurs. <br />
Vous pouvez le consulter avec la commande :<br />
'''[user@taz user]$''' more startx.log<br />
([Espace] pour avancer d'une page, [B] pour revenir en arrière, [Q] pour quitter). <br />Les messages présents dans ce fichier devraient vous indiquer la cause du problème, et vous pourrez la résoudre. S'il y a un problème avec le 'font server' ou un problème de 'font path "unix/:-1"', il est probable que vous avez un problème avec votre serveur de fontes. Reportez-vous à la [#serveur_fontes rubrique correspondante]. Sinon, vérifiez que vous avez le bon serveur X, essayez de vous rappeler ce que vous avez changé auparavant, et lisez attentivement le fichier généré pour voir ce qui ne va pas. <br />Â <br />
* '''Un autre problème qui peut arriver : vous avez l'écran de connexion, vous tapez votre nom d'utilisateur et votre mot de passe, mais l'écran s'efface, puis vous revenez à l'écran de connexion.'''<br />
<br />Comme expliqué dans le glossaire, lorsque vous lancez votre ordinateur sous Linux, si vous avez choisi le mode de démarrage graphique, vous arrivez sous X sur un écran vous permettant de saisir votre username et votre mot de passe. C'est le display manager, ou DM. Le DM de base s'appelle XDM ou X Display Manager. Il est livré avec le serveur X. KDE ou Gnome proposent leurs propres DM, respectivement KDM et GDM, qui ont le même look que l'environnement d'où ils sont tirés.<br />
Lorsque vous vous connectez, le DM "disparaît" (laisse le controle du terminal tty7 à un programme particulier défini dans /etc/X11/xdm/Xsession serait plus précis) pour laisser la place à un gestionnaire de fenêtre (fvwm2, etc.) ou à un environnement de bureau (Gnome, KDE...). Lorsque vous quitterez ce client X, le système redémarrera le DM (le DM reprendra la main, en fait il n'a jamais disparu, puisque on peut se connecter plusieurs fois, via ce DM, à cette machine par le réseau avec par exemple X -indirect <MACHINE>) et vous vous retrouvez à l'écran de connexion.<br />
Vous commencez à voir ce qui cloche ?<br />
Vraisemblablement, votre gestionnaire de fenêtre ou votre environnement de bureau est mal configuré, et s'arrête tout de suite, sans même afficher une boîte de dialogue. (Cela arrive souvent quand vous avez un installez un window manager dans un répertoire qui n'est pas dans le PATH.) Le display manager redémarre alors tout de suite.<br />
Essayez alors de vous connecter en changeant d'environnement.<br />
Si vous utilisez KDMÂ choisissez failsafe comme mode de connexion, et lancer votre environement habituel à la main : <tt>startkde</tt> pour KDE, <tt>gnome-session</tt> pour Gnome, <tt>enlightenment</tt> pour enlightenment. Observer en particulier si les chemins sont valides. Si vous n'utilisez pas KDM, changez le programme de démarrage de manière que celui-ci soit <tt>xterm</tt> (c'est ce que fait le mode failsafe de KDM) cela vous permettra de lancer tous les programmes que vous souhaitez pour résoudre le problème. Attention : dans les deux cas vous n'avez, au début, pas de gestionnaire de fenetre, ce qui vous oblige à faire attention aux positions des fenetres à la main, et faites attention à mettre le curseur de la souris dans la fenetre dans laquelle vous souhaitez taper.<br />
Si cela ne fonctionne pas, passez sur une console texte ('''Ctrl-Alt-F2''' par exemple), puis connectez vous en tant que simple utilisateur. Lancez ensuite à la main "<tt>startx</tt>" : l'environnement graphique va se lancer, puis devrait s'arrêter. Vous verrez alors dans votre console texte les messages d'erreur relatifs au problème qui vous occupe. Pour voir l'ensemble des messages affichés par startx, vous pouvez taper :<br />
'''[root@taz root]#''' startx > startx.log 2>&1<br />
puis consulter le fichier <tt>startx.log</tt> qui contiendra tout ce qui s'affiche normalement à l'écran. <br />
Note: si le DM est chargé, ce qui précéde ne fonctionnera pas tant que vous l'aurez pas déchargé. La méthode la plus simple est de se connecter en tant que superutilisteur sur une console texte et de passer en runlevel 3 par :<br />
'''[root@taz root]#''' init 3<br />
Vous pouvez aussi essayez de démarrer le display manager en enregistrant les messages qu'il produit : <br />
'''[root@taz root]#''' /etc/X11/prefdm -nodaemon > prefdm.log 2>&1<br />
Le fichier <tt>prefdm.log</tt> contient tous les messages, normaux et d'erreur. Essayez ensuite de vous connecter, puis quittez le display manager et regardez le fichier <tt>prefdm.log</tt> afin de diagnostiquer l'erreur. <br />
Quand vous réglez le problème, repassez en runlevel 5 (init 5).<br />
<u>Note</u> : '''prefdm''' représente votre display manager préféré, prefdm a été introduit avec les distributions RedHat 6.0 / Mandrake 6.0. Dans d'autres distributions, vous pourrez avoir besoin de remplacer <tt>/etc/X11/prefdm</tt> par votre display manager (xdm, kdm, gdm, etc...), peut-être avec son chemin d'accès (exemple : <tt>/usr/X11R6/bin/xdm</tt> ou <tt>/usr/bin/kdm</tt>). <br />Â <br />
* '''Vous venez d'installer XFree86 4.0 via les rpms XFree86*-4.0-6mdk.i586.rpm (disponibles sur rufus.w3.org)'''<br />
<br />Il y a un petit problème, après avoir lancé xf86config pour configurer le nouvel XFree86 tout neuf, le lien /etc/X11/X ne pointe pas vers /usr/X11R6/bin/XFree86, donc créez le !<br />
Modifier aussi le fichier /etc/X11/XF86Config en décommantant la ligne Load "glx" pour que le support de OpenGL soit correctement pris en compte !<br />
A propos d'OpenGL, les binaires XFree86-4.0 n'inclu pas libGLU.so.* il faut les trouver dans Mesa-3.2 (aussi sur rufus) attention vous aurez un problème avec libGL.so.* qui est présent dans les deux rpm, utilisez --force --nodeps pour forcer l'installation de Mesa en premier - pour que le libGL soit celui de XFree86-4.0 !)<br />
<br />
----<br />
<br />
=== Problèmes de fontes : le serveur de fontes (xfs) ===<br />
<br />
Les distributions actuelles (à partir de RedHat 6.0, Mandrake 6.0) utilisent par défaut un serveur de fontes : '''xfs'''. En fait, vous n'êtes pas obligés d'avoir un serveur de fontes : X sait très bien se débrouiller tout seul pour un certain nombre de fontes. Cependant, l'utilisation d'un serveur de fontes améliore un certain nombre de choses, dont la qualité de l'affichage des fontes, et la gestion des fontes True Type.<br />
<br />
Mais qu'est-ce que le serveur de fontes ? C'est un programme à qui X s'adresse pour calculer l'image des fontes demandée par les clients X (les applications tournant sous X). Le serveur de fontes, comme les programmes sous X, bénéficie d'une interface réseau : sur votre réseau, il suffit de faire tourner un seul serveur de fontes sur un seul ordinateur, les autres pouvant s'en servir comme point central pour récupérer les fontes.<br />
<br />
Configuration de X pour utiliser le serveur de fontes :<br />
<br />
Il suffit de modifier le fichier <tt>/etc/X11/XF86Config</tt>, et d'ajouter une ligne <tt>FontPath</tt> dans la section <tt>Files</tt>. <br />Par exemple :<br />
<br />
Section "Files"<br />
  RgbPath   "/usr/X11R6/lib/X11/rgb"<br />
  '''FontPath  "unix/:-1" '''EndSection<br />
<br />
'''Note :''' il peut etre plus judicieux de faire en sorte que le port de communication entre le serveur X et <tt>xfs</tt> ne soit pas -1 mais plutot 7100 (et suivant) en modifiant le script <tt>/etc/rc.d/init.d/xfs</tt> de façon que les lignes : <br /><tt>xfs -port -1 </tt>soient remplacées par <tt>xfs -port 7100.</tt> Ce qui permet d'utiliser, dans un réseau, un seul serveur de police sur une seule machine ([#execution_distante voir plus bas]).<br />
<br />
L'installation par défaut de RedHat ou Mandrake laisse juste une ligne <tt>FontPath</tt> pointant vers le serveur de fontes, comme ci-dessus. Néanmoins, s'il arrive quelquechose au serveur de fontes (par exemple si à cause d'une mauvaise configuration, il refuse de démarrer au boot), X ne pourra pas démarrer, ce qui pourra conduire à l'impossibilité de se connecter à votre ordinateur (voir [#inpossible_demarrer ci-dessus]). Aussi, il peut être bon d'ajouter un ou deux <tt>FontPaths</tt> après celui du serveur, afin que X démarre même si ''xfs'' est tombé, comme ci-dessous :<br />
<br />
<blockquote><tt>Section "Files"<br />   RgbPath   "/usr/X11R6/lib/X11/rgb"<br />   FontPath  "unix/:-1"<br />   '''FontPath  "/usr/X11R6/lib/X11/fonts/75dpi/"<br />   FontPath  "/usr/X11R6/lib/X11/fonts/misc/"<br /> '''EndSection</tt></blockquote><br />
<br />
'''<font size="+1">Attention</font>''', n'ajoutez pas de '''<tt>FontPath</tt>''' pointant vers un répertoire de fontes '''True Type''' : X est incapable de les gérer seul, sans serveur de fontes (voir ci-dessous pour [#inserer_fontes installer les fontes True Type]).<br />
<br />
----<br />
<br />
=== Problèmes de fontes : installer/ajouter des fontes True Type ===<br />
<br />
'''Préliminaire''' : vous avez le [#serveur_fontes serveur de fontes] <tt>xfs</tt> qui est installé. Les distributions RedHat et Mandrake à partir de leur version 6.0 l'incluent, vérifiez si vous l'avez installé (<tt>rpm -qa | grep xfs</tt> par exemple). Sinon, installez le package rpm correspondant (<tt>rpm -Uvh xfs-*.rpm</tt>). Une autre méthode consiste à utiliser un deuxième serveur de fontes, <tt>xfstt</tt>, à essayer si ce qui suit ne fonctionne pas chez vous (voir [#xfstt plus bas]).<br />
<br />
Regardons d'abord si un endroit est déjà prévu pour les fontes True Type :<br />
<br />
<tt>'''[root@taz root]#''' chkfontpath --list</tt><br />
<br />
ou encore, regardez le contenu du fichier de configuration du serveur de fontes :<br />
<br />
<tt>'''[root@taz root]#''' more /etc/X11/fs/config</tt><br />
<br />
Vous devriez voir un chemin avec le mot <tt>TrueType</tt> ou <tt>ttf</tt> dedans ou... Par exemple <tt>/usr/share/fonts/TrueType</tt> ou /<tt>usr/X11R6/lib/X11/fonts/ttfonts</tt>. <br />Â <br />
<br />
* '''Créer un répertoire :'''<br />
<br />Bien que vous puissiez ajouter les fontes True Type directement dans l'un des répertoire cités ci-dessus, je vous recommande de créer un autre répertoire pour vos propres fontes. C'est souvent nécessaire parce que quelques fontes du répertoire <tt>ttfonts</tt> peuvent être cassées et entraîner un fichier <tt>font.dir</tt> corrompu si utilisé avec '<tt>ttmkfdir</tt>' et '<tt>mkfontdir</tt>'. Par exemple :<br />
'''[root@taz root]#''' mkdir /<tt>usr/X11R6/lib/X11/fonts/userttfonts<br />
</tt>'''[root@taz root]#''' cd /<tt>usr/X11R6/lib/X11/fonts/userttfonts</tt><br />
Mettez-lui les mêmes permissions que les autres répertoires de fontes (avec chmod, voir rubrique [../admin/permissions.php3 permissions]). <br />Â <br />
* '''Copier les fontes dans le répertoire :'''<br />
<br />Une fois là, vous pouvez soit copier les fontes dans ce répertoire, soit simplement placer dans ce répertoire des liens symboliques vers des fontes se trouvant ailleurs. Supposons par exemple que vous souhaitiez récupérer les fontes présentes dans votre Windows 95, dont la partition est montée dans <tt>/dosc</tt>. <br />Pour les copier faites :<br />
'''[root@taz userttfonts]#''' cp /dosc/windows/fonts/*.ttf .<br />
ou bien, faites juste des liens dessus (vous économiserez de la place, mais vous devez vous assurer que la partition <tt>/dosc</tt> est montée en permanence) : <br />
'''[root@taz userttfonts]#''' ln -s /dosc/windows/fonts/*.ttf .<br />
<u>Remarque</u> : assurez-vous que les noms des fichiers copiés ou des liens soient en minuscules. <br />Â <br />
* '''Ajouter le répertoire à la liste des répertoires de fontes :'''<br />
<br />soit en éditant le fichier de configuration du serveur de fontes, soit en tapant :<br />
'''[root@taz userttfonts]# '''Â Â chkfontpath --add /<tt>usr/X11R6/lib/X11/fonts/userttfonts</tt><br />
<br />Â <br />
* '''Faire prendre en compte les fontes par le serveur :'''<br />
<br />Il vous reste juste à enregistrer les fontes dans le serveur, c'est à dire de créer le fichier <tt>fonts.dir</tt>, puis de relancer le serveur de fontes par les commandes (dans <tt>/usr/X11R6/lib/X11/fonts/userttfonts</tt>) :<br />
'''[root@taz userttfonts]#''' ttmkfdir > fonts.scale<br />
La commande précédente crée le fichier <tt>fonts.scale</tt>, dont va se servir <tt>mkfontdir</tt> pour créer le fichier <tt>fonts.dir</tt> : <br />
'''[root@taz userttfonts]#''' mkfontdir<br />
<u>Remarque</u> : <br />
Chez moi, j'utilise parfois un autre programme : <tt>mkttfdir</tt> qui reconnait parfois plus de fontes, parfois moins, ou d'autres fontes... Bref, vous pouvez l'essayer. <tt>mkttfdir</tt> provient du package <tt>perlftlib</tt> (si vous ne l'avez pas sur le CD de votre distrib, cherchez-le par exemple sur [http://rufus.w3.org rufus.w3.org]). Comme je disais, <tt>mkttfdir</tt> ne reconnaît pas toutes les fontes TrueType. Si c'est votre cas, éditez le fichier <tt>fonts.dir</tt> dans votre éditeur de texte préféré, et copiez une ligne quelconque en l'adaptant à la fonte que <tt>mkttfdir</tt> n'a pas vue ; ajoutez aussi 1 au nombre qui se trouve sur la première ligne. Pour utiliser mkttfdir et créer le fichier <tt>fonts.dir</tt>, remplacez les deux commandes précédentes par :<br />
'''[root@taz userttfonts]#''' mkttfdir<br />
* Afin que les fontes soient disponibles tout de suite (et non après redémarrage), vous devez demander au serveur X de relire la liste des fontes. Pour ce faire, l'utilisateur actuellement connecté sous X doit taper dans une console : <br />
'''[user@taz user]$''' xset fp rehash<br />
ou bien, redémarrez X (par l'appui simultané de [Ctrl]-[Alt]-[Backspace]). <br />
''Avant de redémarrer, lisez la [#note_X note] ci-dessous, cela pourra vous épargner bien des problèmes.''<br />
'''<font size="+1">Attention</font>''' : pour tourner, X a besoin d'un minimum de fontes. Si votre nouvelle configuration les lui supprime, que vous ayez accidentellement supprimé un répertoire de fontes, ou que le serveur de fontes ne redémarre pas, je vous conseille de modifier le fichier de configuration de X afin de lui permettre d'utiliser certaines fontes, même sans serveur de fontes, et de pendre certaines précautions : <br />Â <br />
* Dans le fichier <tt>/etc/X11/XF86Config</tt> ajoutez quelques répertoires de fontes après le <tt>FontPath</tt> du serveur de fontes <tt>"unix/:-1"</tt> : <br />
<tt>Section "Files"<br />
  RgbPath   "/usr/X11R6/lib/X11/rgb"<br />
  FontPath  "unix/:-1"<br />
  '''FontPath  "/usr/X11R6/lib/X11/fonts/misc/" '''</tt>'''  FontPath  "/usr/X11R6/lib/X11/fonts/75dpi/" '''<tt>EndSection</tt><br />
'''<font size="+1">Attention</font>''', n'ajoutez pas de '''<tt>FontPath</tt>''' pointant vers un répertoire de fontes '''True Type''' : X est incapable de les gérer seul, sans serveur de fontes. <br />Â <br />
* Dans le fichier de configuration du serveur de fontes (<tt>/etc/X11/fs/config</tt>), ajoutez après le chemin des fontes True Type, le chemin des fontes "normales", dont <tt>/usr/X11R6/lib/X11/fonts/misc/</tt>, etc.<br />
* Enfin, après avoir redémarré le serveur de fontes, vérifiez que tout s'est bien passé : <br />
'''[root@taz userttfonts]#''' /etc/rc.d/init.d/xfs restart<br />
'''[root@taz userttfonts]#''' /etc/rc.d/init.d/xfs status<br />
Si '''xfs''' ne toune pas, corrigez les erreurs ou bien revenez en arrière, et relancez-le puis vérifiez son statut, jusqu'à ce que celui-ci soit bon. <br />Ces précautions vous épargnerons bien des problèmes par la suite ([#inpossible_demarrer impossible de démarrer], etc.).<br />
<br />
<br />'''<font size="+1">Solution alternative : utiliser <tt>xfstt</tt></font>'''<br /><tt>xfstt</tt> est un autre serveur de fontes, qui reconnaît nativement les fontes true type. Plutôt que de modifier la config de xfs, vous pouvez faire cohabiter les deux serveurs de fontes sans problème, et utiliser xfstt pour les fontes true type.<br />
<br />
Pour trouver ce serveur, allez par exemple le chercher sur [http://www.freshmeat.net freshmeat] ou [http://rufus.w3.org rufus], puis installez-le.<br />
<br />
De la même manière que ci-dessus, copiez (ou liez) vos fontes true type dans <tt>/usr/share/fontes/truetype</tt> (répertoire par défaut de <tt>xfstt</tt>, qui peut être modifié), puis dans ce répertoire, faire :<br />
<br />
'''[root@taz truetype]# '''xfstt --sync<br />
<br />
Enfin, dans <tt>/etc/X11/XF86Config</tt> (Redhat et compatibles) ou <tt>/etc/XF86Config</tt> (Slackware), ajoutez un <tt>FontPath</tt> du type :<br />
<br />
FontPath "unix/:7101"<br />
<br />
et dans un script de démarrage (<tt>/etc/rc.d/rc.local</tt> par exemple) placer la ligne ci-dessous :<br />
<br />
xfstt &<br />
<br />
A partir de là, pour faire prendre les fontes en compte, soit vous redémarrez simplement (beurk), soit : 1. dans une console texte, en root, vous lancez "<tt>xfstt &</tt>", 2. vous redémarrez X par [Ctrl]-[Alt]-[Backspace].<br />
<br />
----<br />
<br />
=== Problèmes de lenteur de X ===<br />
<br />
Deux causes principales peuvent rendre X Window très lent : <br />Â <br />
<br />
# '''Pas assez de mémoire : le système swappe comme un fou'''<br />Les applications graphiques sont assez gourmandes en mémoire. Si vous n'avez que peu de mémoire vive (32 Mo est le minimum minimorum conseillé), le système va swapper constamment (le disque dur "gratte") et être très (trop) lent :( <br />La seule solution consiste soit à ajouter de la mémoire, soit à utiliser des applications moins gourmandes en mémoire (KDE est gourmand, sur une petite configuration, vous pouvez le remplacer avec bonheur par Window Maker par exemple).<br />
# '''Réseau mal configuré'''<br />Sous Linux tout est basé sur le réseau, X ne déroge pas à la règle et se sert aussi de la configuration réseau de la machine. <br />Les lenteurs de ce style sont souvent dues à un réseau mal configuré (même si vous n'avez pas de carte réseau, la couche réseau existe et est configurée de façon minimale) : par exemple un gateway (routeur) ou un nameserver (serveur de noms, DNS) inexistants, etc. <br />La solution consiste à vérifier tous les paramètres réseau, notamment ceux donnés lors de l'installation. Regardez le contenu de <tt>/etc/resolv.conf</tt>, des fichiers de config réseau dans <tt>/etc/sysconfig</tt> (distribs RedHat ou Mandrake par exemple), ou des scrips de démarrage dans <tt>/etc/rc.d</tt> à la partie traitant de la mise en route du réseau...<br />
<br />
----<br />
<br />
=== Utilisation d'un poste comme terminal X ===<br />
<br />
''(partie écrite par Fred)''<br />
<br />
Supposons que vous ayez deux (ou plus) postes Linux correctement configurés pour le réseau et pour X et que l'un des postes ne dispose que d'un petit disque dur, de peu de RAM d'un processeur très ancien... bref c'est un sassefépu, et l'autre c'est un poste dernier cri (un Pentium IV - 50 Gigahertz 50 Go de ram, 50 To de disque dur...), il peut être intéressant de ce connecter depuis le "petit" poste vers le "gros" (se seront les noms réseau que je vais utiliser) comme si on était toujours sur le gros ! En effet, le petit poste ne gèrera alors plus que l'affichage, et profitera de la rapidité du gros. La solution : éditer le fichier <tt>/etc/inittab</tt> du "petit" et transformer la ligne :<br />
<br />
<blockquote><tt>x:5:respawn:/etc/X11/prefdm -nodaemon</tt></blockquote><br />
<br />
en :<br />
<br />
<blockquote><tt>x:5:respawn:/etc/X11/X -query gros</tt></blockquote><br />
<br />
puis de redémarrer votre "petit" poste. '''Attention''' le "gros" poste '''doit''' être disponible, sinon vous allez voir l'écran de votre "petit" poste clignoter et faire des bruits suspects jusqu'a ce que vous vous décidiez à abréger ses tourments.<br />
<br />
Un problème va rapidement apparaître : sur votre "gros" poste vous avez installé 200 000 polices de caractères et seulement 10 sur le "petit" poste et vous n'en voyez donc que 10 depuis n'importe quelle application utilisée depuis le "petit" poste meme si elle s'exécute sur le "gros" ! C'est pas sympa ! <br />La solution numéro un, est d'installer toutes vos polices sur le "petit", c'est pénible, et si vous avez 200 "petits" postes ce n'est pas une solution envisageable si vous souhaitez pouvoir ajouter des polices régulièrement ! <br />La meilleure solution est fournie par X soi-même : le serveur de polices <tt>xfs</tt> ! Il faut démarrer le serveur de police sur le "gros" et n'utiliser que ce chemin - gardez quand même les chemins des polices nécessaires au fonctionnement de X - pour vos polices en faisant attention que le port de communication de <tt>xfs</tt> ne soit pas <tt>-1</tt> (ce port ne peut être utilisé qu'en local !) prendre comme port, par exemple, <tt>7100</tt> (et suivants). Et utiliser, pour tous les petits postes le serveur de polices du "gros", (pour information le chemin à utiliser est <tt>tcp/gros:7100</tt>)<br />
<br />
Sur une distribution Mandrake, le démarrage du serveur de police est assuré par le script <tt>/etc/rc.d/init.d/xfs</tt>. Mais le port utilisé est <tt>-1</tt> ! Il suffit de le changer en <tt>7100</tt>, de modifier <tt>/etc/XF86Config</tt> (remplacer <tt>Fontpath "unix:-1"</tt> par <tt>Fontpath "tcp/gros:7100"</tt> ) pour refléter ce changement et de redémarrer le serveur de polices et X sur le gros. Ne pas oublier, sur les "petits" postes de ne pas démarrer le serveur de police : ça occupe inutilement le CPU des petits postes.<br />
<br />
Si vous avez plusieurs "gros" postes, la configuration est la même. Mais pour les petits, il est intéressant de pouvoir choisir sur quel "gros" se logguer, la solution : remplacer <tt>/etc/X11/X -query gros</tt> par <tt>/etc/X11/X -indirect gros</tt> sur les "petits" <tt>/etc/inittab</tt>. A noter, lors du choix de la machine sur laquelle se logguer, on peut voir la charge de celle-ci, cela peut aider à faire son choix.<br />
<br />
<div class="merci">Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par J.C. Cardot & S. Tchesmeli le 10/11/1999.</div><br />
<br />
= Copyright =<br />
Copyright &copy; 10/11/1999, J.C. Cardot & S. Tchesmeli<br />
{{CC-BY-NC-SA}}<br />
<br />
<br />
=Autres ressources=</div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=Installation_de_OpenOffice.org_1.0&diff=9175
Installation de OpenOffice.org 1.0
2005-10-14T18:00:59Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div>[[Category:Traitement de texte]]<br />
= Installation de OpenOffice =<br />
<br />
<div class="leatitre">Installation de OpenOffice</div><div class="leapar">par [mailto:anne@lea-linux.org Anne]</div><div class="leadesc">Installer OpenOffice et le correcteur orthographique</div><br />
----<br />
<br />
== Avant de démarrer l'installation ==<br />
<br />
Tout comme pour StarOffice, il est possible d'installer OpenOffice de trois manières :<br />
<br />
* [#OOo_mono Première méthode] : installation par un utilisateur de OpenOffice dans son répertoire personnel. Dans ce cas de figure, il sera le seul à pouvoir l'utiliser (pas très pratique !)<br />
* [#OOo_multi Seconde méthode] : installation en mode dit multi-utilisateurs. Elle permet à tous les utilisateurs déclaré sur la machine (ou en réseau) d'utiliser OpenOffice (après tout, Linux est multiutilisateurs, pourquoi s'en priver ? :) ).<br />
* Sur '''Mandrake''' (à partir de 8.2) : <code>urpmi ooffice</code> (et c'est tout ; il s'agit en fait d'une installation multi-utilisateurs (ou réseau)). Passez directement à l'[#correcteur installation du dictionnaire français].<br />
* Pour les utilisateurs de '''Debian''' : ajouter cette ligne à votre fichier <code>/etc/apt/sources.list</code> :<br />
<div class="code">deb http://ftp.freenet.de/pub/ftp.vpn-junkies.de/openoffice/ woody main contrib</div> puis mettez apt à jour : <div class="code">root@pingu # apt-get update</div><br />
Ceci fait vous n'avez maintenant plus aucun fichier à modifier, tout se fera automatiquement.<br />
<br />
Nous travaillerons avec la [http://fr.openoffice.org/about-downloads.html version 1.0.1 de OpenOffice], toute l'installation se fait en mode graphique.<br />
<br />
<div class="note">Note : C'est exactement pareil avec la version 1.1Beta (et surement aussi la 1.1).</div><br />
<br />
== Installation en mode mono-utilisateur ==<br />
<br />
Vous utiliserez ce type d'installation si vous n'avez pas les droits de root sur votre système (i.e. vous n'êtes pas sur votre propre machine), ou bien si vous êtes le seul utilisateur de votre système et que vous ne projetez pas d'en ajouter plus tard. Sinon, lisez la [#OOo_multi section suivante.]<br />
<br />
Vous devez avoir récupéré une archive compressée <code>OOo_1.0.1_LinuxIntel_install_fr.tar.gz</code> (version 1.0.1 en français de OpenOffice. La première étape consiste alors à décompresser et détarer cette archive dans votre répertoire personnel :<br />
<br />
<div class="code">anne@pingu$ tar xvzf OOo_1.0.1_LinuxIntel_install_fr.tar.gz</div><br />
<br />
Il suffit alors de vous déplacer dans le répertoire créé puis de lancer le programme d'install :<br />
<br />
<div class="code">anne@pingu$ cd install<br /> anne@pingu$ ./setup</div><br />
<br />
Vous devez vous retrouver dans un environnement graphique où vont défiler un certain nombre de boîtes de dialogue. Répondez aux questions, c'est très simple !<br /><br />
<br />
<div class="note">''Remarque'' : java ne vous sera utile que si vous utilisez les bases de données d'OpenOffice.</div><br />
<br />
'''Pour lancer OpenOffice''' :<br />
<br />
<div class="code">anne@pingu$ /home/anne/OpenOffice/soffice</div><br />
<br />
'''Pour désinstaller OpenOffice''' :<br />
<br />
<div class="code">anne@pingu$ /home/anne/OpenOffice/setup</div><br />
<br />
puis choisir ''suppression''<br />
<br />
== Installation en mode multi-utilisateurs ==<br />
<br />
=== Installation des fichiers communs ===<br />
<br />
Pour démarrer ce type d'installation, il faut impérativement avoir l'identité root :<br />
<br />
<div class="code">anne@pingu$ su - <br /> Password:xxxxxx<br /> root@pingu#</div><br />
<br />
Puis on va lancer lancer le programme d'installation avec une option particulère :<br />
<br />
<div class="code">root@pingu# /home/anne/install/setup '''-net'''</div><br />
<br />
Là encore l'installation se fait en mode graphique. Choisissez les options souhaitées et notez le répertoire d'install. J'utiliserai <code>/opt/OpenOffice</code>.<br />
<br />
=== Installation des fichiers propres à chaque utilisateur ===<br />
<br />
Une fois l'installation des fichiers communs terminés, il reste à installer les fichiers de configuration de chaque utilisateur qui voudra accéder à OpenOffice.<br />
<br />
Cette fois-ci, l'opération est à exécuter sous l'identité de l'utilisateur pour lequel vous voulez mettre à disposition OpenOffice. Exécutez les opérations suivantes :<br />
<br />
<div class="code">anne@pingu$ cd /opt/OpenOffice<br /> anne@pingu$ ./setup</div><br />
<br />
Là encore vous vous retrouvez en interface graphique, vous répondez aux questions et le tour est joué !<br />
<br />
Note: cette étape est en fait facultative puisque, de toutes façons, c'est le programme qui sera lancé par la première utilisation d'OpenOffice. Mais, il peut être astucieux de la faire pour un utilisateur que l'informatique embarrasse, par exemple : votre mère ;-)<br />
<br />
Pour les opérations de lancement et désinstallation, on procédera de la même façon que pour l'installation de type mono utilisateur, les exécutables étant situés cette fois-ci dans le répertoire personnel de l'utilisateur (exemple : <code>/home/anne/OpenOffice.org1.0.1</code>)<br />
<br />
<div class="note"><br />
<br />
''Remarque'' : Pour faciliter le lancement de OpenOffice, n'oubliez pas de modifier la variable PATH du dit utilisateur<br />
<br />
'''Exemple''' : pour l'utilisateur anne, je modifierai le PATH de la manière suivante :<br /><br />
<br />
<div class="code">anne@pingu$ cat .bashrc<br /> ... <br /> PATH=$PATH:/home/anne/OpenOffice.org1.0.1</div><br />
<br />
'''Petite astuce pour modifier le PATH de tous les utilisateurs '''de OpenOffice, sans avoir à modifier le <code>.bashrc</code> de chacun : il suffit de modifier <code>/etc/bashrc</code> de la manière suivante<br />
<br />
<div class="code">root@pingu# cat /etc/bashrc<br /> ...<br /> PATH=$PATH:~/OpenOffice.org1.0.1</div> </div><br />
<br />
== Les correcteurs orthographiques ==<br />
<br />
Le dictionnaire français du correcteur orthographique n'étant pas fourni dans le package d'installation de base d'OpenOffice.<br />
<br />
Utiliser la macro fourni par OpenOffice : (qui marche très bien)<br />
<br />
* Télécharger la macro : [http://fr.openoffice.org/DicOOo/index_dicooo.htm ici] (récupérez la dernière version).<br />
<div class="note">Note 1 : Utilisateurs Debian <br />
En tant que root, pour que la macro marche il faut supprimer un lien symbolique:<br />
<div class="code">rm /usr/lib/openoffice/share/dict/ooo/<tt>dictionary.lst</tt></div><br />
et copier un fichier de configuration a ça place d'un autre :<br />
<div class="code">cp /etc/dictionary.lst /usr/lib/openoffice/share/dict/ooo/</div> </div><div class="note">Note 2 : si vous souhaitez que n'importe quel utilisateur puisse installer un nouveau dictionnaire pour tout le monde, il faut que cet utilisateur ait les droits d'écriture. <br />
A faire en tant que root:<br />
<div class="code">chmod +w /usr/lib/openoffice/share/dict/ooo<br /> chmod +w /usr/lib/openoffice/share/dict/ooo/<tt>dictionary.lst</tt></div> </div> <br />
* Lancer OpenOffice<br />
<div class="note">Note: faites le en tant que root si vous souhaitez l'installer pour tous les utilisateurs de votre ordinateur.</div> <br />
* Ouvrir le fichier DicOOo.sxw<br />
* Cliquer sur <span class="key">exécuter</span><br />
* Sélectionner la langue dans laquelle vous souhaitez continuer l'installation<br />
* Cliquer sur <span class="key">Lancer DicOOo</span><br />
* Sélectionner le type d'installation que vous souhaiter faire puis <span class="key">Suivant</span>.<br />
* Cliquer sur <span class="key">Récupérer la liste</span> (Il va sur internet chercher la liste des dictionnaires disponibles).<br />
* Sélectionner les langues que vous souhaitez avoir (attention si vous les mettez tous cela peut jouer sur la rapidité de votre système). La sélection multiple se fait comme d'habitude avec la touche <span class="key">[Control]</span>.<br />
* <span class="key">Suivant</span><br />
* Cliquer sur <span class="key">Récupérer la liste</span><br />
* C'est la liste des Dictionnaires de césures (exemple: en français on met le . juste après le mot, en anglais, on rajoute un espace entre les deux. Autre exemple : en France, on ne coupe pas les mots n'importe où, en général, en met le mot à la ligne, ou on le coupe au niveau d'une syllabe. En Anglais américain, on coupe partout !!! ).<br />
* Idem que pour sélectionner les langues.<br />
* <span class="key">Suivant</span><br />
* Le dictionnaire des synonymes (ne peut être installer que en mode root).<br />
* <span class="key">Suivant</span><br />
* Il télécharge tous les dictionnaires que vous avez sélectionné et les installe.<br />
* <span class="key">Terminer</span><br />
* C'est presque terminer. Fermer OpenOffice puis relancer avec l'utilisateur<br />
* que vous souhaitez.<br />
* Aller paramétrer les dictionnaires dans le menu Outils -> Options -> Paramètres linguistiques<br />
** <u>Langues :</u> dans ''Environnement Linugistique'' sélectionner dans le menu déroulant ''Français(France).''<br />
** <u>Linguistique :</u> sélectionner ''OpenOffice MySpell Spelréplchecker'' et ''ALT Linux LibHnj Hyphenator'' puis cliquer sur ''Éditer''. Dans le menu suivant, cocher ''OpenOffice MySpell Spellchecker'' dans la rubrique ''Orthographe'', ''AT Linux LibHnj Hyphenator'' dans la rubrique ''coupure des mots'' puis sélectionner ''Français'' dans le menu déroulant.<br />
<br />
Et voilà c'est terminé :).<br />
<br />
Merci à Valta.<br />
<br />
== Installation avancée ==<br />
<br />
Suite aux indications de Marc et Domi, je rajoute ici des infos pour un mode d'installation alternatif de OpenOffice. Il ne s'agit pas là d'une install standard mais qui peut convenir à des utilisateurs plus avancés<br />
<br />
Nous n'installerons pas à partir du script <code>setup</code> mais <code>install</code> situé également à la racine du répertoire d'installation. Ci-dessous les principales options :<br />
<br />
* <code>'''--prefix=PREFIX'''</code> : installe OpenOffice dans le répertoire <code>PREFIX</code> (par défaut, dans <code>/usr/local</code>.<br />
* <code>'''--single'''</code> : installe OpenOffice en mode mono-utilisateur (par défaut, en mode multi-utilisateurs).<br />
* <code>'''--interactive'''</code> : installe OpenOffice en mode interactif<br />
<br />
'''Exemple : '''Je souhaite installer OpenOffice en mode mono-utilisateur dans le répertoire /home/anne<br /><code>anne@pingu$ /opt/install --prefix /home/anne --single</code><br />
<br />
== Accélérer le chargement de OpenOffice ==<br />
<br />
Comme proposé par Philippe, j'insère ici un Truc&Astuce qu'il avait écrit pour permettre d'accélérer le chargement de OpenOffice, somme toutes assez long.<br />
<br />
Le principe est de charger une partie de OpenOffice (qui sera donc résident en mémoire) afin d'accélérer le chargement des applications. Un peu de temps gagné si vous utiliseez fréquemment OpenOffice, mais aussi un peu de mémoire occupée ;-)<br />
<br />
'''Chargement en mémoire''' (à mettre dans le dossier de démarrage de Kde, Gnome, ou ~/GNUstep/Library/WindowMaker/autostart si vous êtes sous WindowMaker) :<br />
<br />
<code>/chemin_vers_OO/OpenOffice.org1.0.1/soffice -plugin -quickstart &</code><br />
<br />
Puis, pour charger une application OpenOffice:<br />
<br />
* '''swriter''' : <code>/chemin_vers_OO/OpenOffice.org1.0.1/soffice private:factory/swriter &</code><br />
* '''scalc''' : <code>/chemin_vers_OO/OpenOffice.org1.0.1/soffice private:factory/scalc &</code><br />
* '''simpress''' : <code>/chemin_vers_OO/OpenOffice.org1.0.1/soffice private:factory/simpress &</code><br />
* '''sdraw''' : <code>/chemin_vers_OO/OpenOffice.org1.0.1/soffice private:factory/sdraw &</code><br />
<br />
<u>Note</u><nowiki>: si vous êtes sous WindowMaker, utilisez plutot le dockapp Woo.</nowiki><br />
<br />
<br /><br />
<br />
'''Il me semble important de rappeler que OpenOffice existe également pour Windows. A installer d'urgence pour faire progresser la place des Logiciels Libres ;)).'''<br />
<br />
== Dernières nouvelles ! ==<br />
<br />
[29/03/2003] : [http://www.openoffice.org/dev_docs/source/1.1beta OpenOffice est sorti], il y a quelques jours, en version 1.1Beta. L'installation se déroule exactement de la même façon que pour OpenOffice 1.0.x. Cette version semble, au premier abord, se comporter bien mieux que la précédente : le chargement est plus rapide (sur mon 650Mz, la différence est notable). OpenOffice propose maintenant l'affichage d'une jauge qui indique ou en est le chargement (vue que c'est long il vaut mieux savoir où on en est !). La gestion des dictionnaires français (et autres) est toujours possible de la même façon que pour les versions 1.0.x. La gestion des hauts et pieds de pages est parait-il amélioré.<br />
<br />
L'aperçu avant impression est maintenant utilisable puisqu'il permet (enfin !) de zoomer en fixant soi-même le niveau de zoom. Il semblerait que la gestion de l'antialiasing pour les polices soit bien meilleur. On peut aussi exporter directement un document en PDF (c'était possible mais il fallait passer par un outil externe comme kprinter : maintenant, il y a un bouton, c'est plus sympa)<br />
<br />
Autre atout, il est maintenant possible d'utiliser l'outil de connexion à une base de données avec une base MySQL (c'était plus ou moins possible avant en utilisant unixODBC). J'ai testé avec la base de données de Léa (qui est au format MySQL) en local (le server MySQL de Léa n'accepte que des requêtes locale pour des raisons de sécurité). J'ai pu en quelques clicks me connecter à la base de données. Le mot de passe est demandé lors de la première connexion, mais peut être mémorisé pour les suivantes. On a ensuite accès à un interface graphique de construction de requète SQL. On établit graphiquement les liens entre les tables. Je ne peux comparer avec Access (enfin avec le constructeur de requète d'Access) puisque je ne l'ai jamais utilisé, mais je peux dire que ça m'a semblé très pratique et très simple d'emploi.<br />
<br />
Le logiciel de présentation : Impress est maintenant capable de faire des exports en Flash. J'ai testé : ça marche ! C'est bien sur loin de pouvoir rivaliser avec le logiciel de MacroMédia, mais pour faire une présentation sur le Web, c'est rapide et fonctionel. Et puis sous Linux, on a, à ma connaissance, que ça !<br />
<br />
<div class="merci">Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Anne le 25/11/2002.</div><br />
<br />
= Copyright =<br />
Copyright &copy; 25/11/2002, Anne<br />
{{CC-BY-NC-SA}}<br />
<br />
<br />
=Autres ressources=<br />
<br />
* La [http://documentation.openoffice.org/setup_guide/fr/ooo_setup_french.pdf documentation complÃÅ¡te] du site OpenOffice.<br />
* Le [http://www.openoffice.org/documentation.html site] de documentation</div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=IRATE_Radio&diff=9174
IRATE Radio
2005-10-14T18:00:58Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div>[[Category:Son et Image]]<br />
= iRATE Radio =<br />
<br />
<div class="leatitre">iRATE Radio</div><div class="leapar">par Jean-Claude Noël</div><div class="leadesc">Une traduction de la page originale pour l'installation et l'utilisation d'iRATE Radio.</div><br />
<br />
== Présentation ==<br />
<br />
Si vous souhaitez légalement télécharger, copier, diffuser, écouter à volonter de la musique au format mp3, iRATE Radio est fait pour vous. Des artistes déposent librement des musiques de leur composition et grâce à iRATE vous allez pouvoir les découvrir. Ne vous attendez pas à trouver les morceaux habituellement diffusés sur les médias conventionnels (radio et TV commerciales, etc..), exit star'ac et Cie ;-).<br />
<br />
Par un système d'évaluation lorsque vous porterez un jugement sur les titres téléchargés, le logiciel iRATE essayera de vous satisfaire en vous téléchargeant et vous diffusant d'autres titres MP3 selon vos goûts.<br />
<br />
Profitez en !!!! Et si vous trouvez des artistes qui vous plaisent ... un p'tit coup de google pour trouvez le site de l'artiste et creuser d'avantage ;-)<br />
<br />
Ci-dessous, vous allez trouvez la traduction adaptée de la documentation d'iRATE Radio avec parfois quelques annotations personnelles. Je précise d'ores et déjà que mon expérience se limite à une installation de irate-client-gtk dans sa version 0.3-2 sous GNU/Linux Debian Sarge. Je n'ai pas essayé sur les autres distributions mais cela ne devrait pas être très différent. Quant à l'O.S. non libre,désolé,aucun risque de me voir tenter l'installation.<br />
<br />
=== Site officiel ===<br />
<br />
Commencer par vous procurer le logiciel iRATE Radio.<br />
<br />
Vous pouvez le télécharger depuis http://irate.sourceforge.net/.<br />
<br />
Cette page est une traduction adaptée de l'original. La documentation (anglaise) a été écrite par Fred Reiss et se trouve sur http://irate.sourceforge.net/documentation.gettingstarted.html.<br />
<br />
Ce tutorial vous indique comment télécharger, installer, et commencer à écouter la radio iRATE.<br />
<br />
== iRATE Radio ==<br />
<br />
=== Obtenir le client ===<br />
<br />
La radio iRATE est un système de client serveur. C'est un programme qui sert a appeler les téléchargements des clients iRATE et qui joue les MP3s, alors que le serveur iRATE maintient les rapports entre les préférences d'écoute des utilisateurs. Le client demande au serveur une liste des titres MP3 et télécharge ces titres de leurs emplacements respectifs :<br />
<br />
<div align="center">[[Image:irate-irate_architecture.png]]</div><br />
<br />
Pour écouter la radio iRATE, les différents utilisateurs téléchargent le programme de client iRATE sur leur ordinateur. Quand le client est installé, il entre en contact avec le serveur iRATE via Internet et demande pour audition une liste de chansons susceptibles d'intéresser l'utilisateur.<br />
<br />
Il y a deux manières d'installer le client iRATE. La manière la plus traditionnelle est de télécharger le paquetage sur votre ordinateur et de l'installer. Alternativement, vous pouvez employer l'outil "web start" de sun pour installer iRATE.<br />
<br />
=== Installation du paquetage client ===<br />
<br />
Si vous utilisez Windows, sautez cette section ; vous devrez employer l'outil "start of web" pour installer le client iRATE.<br />
<br />
Si vous utilisez un autre système d'exploitation que windows, vous devriez pouvoir trouver les binaires précompilés de iRATE sur le site Web d'iRATE, sous le "Download" (téléchargement).<br />
<br />
L'équipe iRATE édite trois versions du client :<br />
<br />
* Une version "stable " qui est peu susceptible de se briser mais ne contient pas tous les derniers dispositifs; <br />
* Une version "testing" avec plus de dispositifs mais aussi plus de bogues; <br />
* Une version "instable" pour les experts seulement. <br />
<br />
Si c'est votre première utilisation d' iRATE, nous vous recommandons de commençer par la version "stable".<br />
<br />
<div class="note">Personnellement, j'ai installé la "testing" depuis http://irate.sourceforge.net/download.testing.html</div><br />
<br />
Faites défiler vers le bas l'ascenseur jusqu'à la section "Native SWT Client" de la page de téléchargement et localisez le téléchargement approprié pour votre logiciel d'exploitation. Ce que vous faites après, dépend de ce que votre système d'exploitation ou votre distribution vous demande.<br />
<br />
# Pour Mac OSX <br />
# Pour Debian <br />
# Pour Distributions RPM <br />
<br />
* Si vous utilisez Mac OSX, il y a seulement un dossier à télécharger. Placé sous la section d'"OSX" de la page de téléchargements, ce dossier est une image disque. Pour installer iRATE de cette image disque, faites ce qui suit:<br />
** Double-clic sur le dossier d'image disque pour le monter.<br />
** Un "disque" virtuel devrait apparaître sur votre de bureau, marqué "RATE client", ou quelque chose de semblable. Ouvrez le disque et copiez les dossiers dans votre chemise d'applications.<br />
* Si vous utilisez Debian/GNU Linux, faites défiler l'ascenseur vers le bas jusqu'à la partie appropriée de la page de téléchargement iRATE et trouvez votre version de Debian. Ajoutez la ligne qui devrait ressembler à quelque chose comme <code>deb http://members.westnet.com.au/takahe/debian/stable woody main</code> dans le dossier : <code>/etc/apt/sources.list</code> .<br />
Alors vous devriez pouvoir lancer dans une console la commande (en tant qu'utilisateur "root"):<br />
<code>apt-get install irate-client-gtk</code><br />
* Si vous utilisez une distribution de GNU/Linux basé sur les RPM (Red hat Linux, Fedora Linux, ou Mandrake Linux), téléchargez les paquetages appropriés en RPM pour votre version de Linux. Il y a trois RPMs pour le Red Hat et Fedora Linux, et deux RPMs pour Mandrake. Installez alors les paquets par la commande en ligne :<br />
<code>rpm -ivh [ les noms de paquetages vont ici ]</code><br />
<br />
=== Installation du client en utilisant Start of Web ===<br />
<br />
Vous pouvez employer l'outil java "start of web" de Sun. Pour simplifier, installez le client iRATE sur votre ordinateur et maintenez votre client iRATE à jour. La première étape de l'installation par l'intermédiaire de l'outil "start of web" est de télécharger et d'installer la version Java de Sun. Le ''Canadian Mind Products'' a un glossaire Java avec une bonne description de l'outil java "start of web". Gardez à l'esprit que vous pouvez avoir besoin de redémarrer votre ordinateur après installation de Java. Une fois que Java est installé, vous devriez pouvoir télécharger iRATE de la page de téléchargement et utiliser le client iRATE. Cliquez sur l'icône qui ressemble à ceci :<br />
<br />
<div align="center">[[Image:irate-irate_icon.png]]</div><br />
<br />
Le client iRATE devrait télécharger, installer, et commencer automatiquement.<br />
<br />
=== Démarrer le client ===<br />
<br />
Si vous avez téléchargez et installez le client iRATE d'un paquetage, vous devriez pouvoir le démarrer de l'une ou l'autre des deux manières :<br />
<br />
* Lancez "le client iRATE" du menu d'applications dans GNOME ou KDE. Le menu d'applications devrait être situé dans le coin gauche inférieur de votre écran. Ouvrez un terminal dans une fenêtre et selon le site officiel taper: <code>iRATE-client-gtk</code><br />
<br />
<div class="note"> Taper plutôt <code>irate-client</code> qui fonctionne chez moi contrairement à la commande précédente.</div><br />
<br />
* Si vous avez utilisé l'outil "start of web" pour installer iRATE, le client devrait avoir commencé automatiquement.<br />
<br />
Quand vous lancez le client iRATE pour la première fois, vous devez voir quelque chose comme ceci :<br />
<br />
<div align="center">[[Image:irate-irate_welcome.png]]</div><br />
<br />
=== Créer un compte ===<br />
<br />
Afin de maintenir vos préférences en musique, la radio iRATE exige que vous créez un compte <code>Account</code> (nom d'utilisateur) unique pour vous-même. Chaque fois que vous démarrerez le client iRATE, il utilisera votre nom d'utilisateur pour rechercher vos préférences. La radio iRATE se rappelle automatiquement de votre nom d'utilisateur, ainsi vous n'aurez pas à le ressaisir à chaque fois que vous relancerez l'application. Quand vous cliquez sur le bouton <code>next</code> dans l'écran de bienvenue, la boîte de dialogue suivante doit apparaître :<br />
<br />
<div align="center">[[Image:irate-irate_account.png]]</div><br />
<br />
Choisissez un nom d'utilisateur pour vous-même et un mot de passe. Changez le nom d'utilisateur en <code>Account</code> inscrit par défaut dans la boîte de dialogue ainsi que le mot de passe dans le champ <code>Password</code>. Les autres arrangements à cette page sont pour les experts seulement. Il peut être intéressant de modifier le chemin <code>Directory</code> du répertoire dans lequel on désire stocker les fichiers téléchargés. Dans ce cas utilisez le bouton <code>Browse</code>.<br />
<br />
<div class="alert">IMPORTANT: N'employez pas un mot de passe valable, tel que votre mot de passe d'ouverture de Linux ! </div><div class="note">ASTUCE: Je vous conseille de garder une trace du nom de compte et du mot de passe sur un calepin. Ainsi, si vous réinstallez votre Linux (peu probable ;-)), ou si vous utilisez iRATE Radio sur une autre machine (très probable),vous pouvez utilisez le même compte et vous ne téléchargerez pas deux fois les mêmes titres.</div><br />
<br />
Lorsque la boîte de dialogue est remplie, un clic sur <code>Next</code> suffit pour commencer à obtenir de la musique !<br />
<br />
Si vous n'arrivez pas à vous connectez, c'est probablement parce que le nom de compte que vous avez choisi est déjà utilisé par quelqu'un d'autre. La correspondance nom-de-compte + mot-de-passe n'est pas valide et le serveur vous refuse l'accès. Choisissez un autre nom de compte et tout devrait rentrer dans l'ordre.<br />
<br />
=== L'écran principal ===<br />
<br />
Une fois que vous avez lancé iRATE et avez créé un nom d'utilisateur, vous devriez voir l'écran principal:<br />
<br />
<div align="center">[[Image:irate-irate_mainscreen.png]]</div><br />
<br />
Selon la version du client installée, vous pouvez voir un écran principal légèrement différent.<br />
<br />
=== Le Playlist (la liste des titres) ===<br />
<br />
La radio iRATE choisit parmi une collection de titres MP3 qu'elle pense que vous pourriez aimer en téléchargeant ces titres sur votre ordinateur pour que vous puissiez ensuite les écouter. Votre playlist contient une liste de tous les titres que iRATE a choisi pour vous:<br />
<br />
<div align="center">[[Image:irate-irate_mainscreen_playlist.png]]</div><br />
<br />
Pour chaque titre musical, le playlist montre l'information suivante:<br />
<br />
* Le nom de l'artiste qui a enregistré le titre est indiqué dans colonne <code>Artist</code>.<br />
* Le nom du titre lui-même (c'est à dire la chanson) est indiqué dans la colonne <code>Track</code>.<br />
* Si le titre n'a pas encore été téléchargé sur votre ordinateur, la colonne <code>Rating</code> indique <code>Not downloaded</code>.<br />
* Si le titre a été téléchargé sur votre ordinateur, la colonne <code>Rating</code> indique <code>Unrated</code> si vous n'avez pas encore porté de jugement pour ce titre.<br />
* Si le titre a été téléchargé sur votre ordinateur et que vous y avez attribué un jugement, la colonne <code>Rating</code> indique ce jugement. (voir Rating Music estimation si dessous).<br />
* Combien de fois iRATE a joué le titre est indiqué par la colonne <code>Plays</code>.<br />
* La dernière fois qu' iRATE a joué le titre est indiqué par la <code>Plays</code>.<br />
<br />
Double-cliquer sur un titre et iRATE jouera ce titre.<br />
<br />
<div class="note">NOTE : Si iRATE n'a pas encore téléchargé un titre particulier sur votre ordinateur, double-cliquer n'aura aucun effet.</div><br />
<br />
=== Racing Music (Estimation de la Musique) ===<br />
<br />
La radio iRATE essaye de télécharger des titres que vous aurez plaisir à entendre. Pour faire les choix intelligents des titres à télécharger, iRATE a besoin de savoir ce que vous pensez de la musique qui a été joué pour vous jusqu'ici.<br />
<br />
Sur le client iRATE l'écran principal a une rangée de boutons d'estimation:<br />
<br />
<div align="center">[[Image:irate-irate_mainscreen_rating.png]]</div><br />
<br />
Utilisez ces boutons pour voter et dire à iRATE ce que vous pensez du titre qu'il joue actuellement. iRATE se base sur ces estimations pour télécharger de nouveaux titres. Il va également utiliser ces estimations pour choisir de préférence le titre qu'il va jouer pour vous sur votre ordinateur.<br />
<br />
<div class="note">NOTE : Si vous évaluez un titre <code>This Sux</code>, alors iRATE enlève ce titre de votre playlist, et vous n'entendrez plus jamais ce titre. Si vous changez d'avis au sujet d'une évaluation <code>This Sux</code>, vous pouvez défaire l'estimation en choisissant <code>Undo last rating</code> (défaire la dernière estimation) du menu <code>Action</code>.</div><div class="note">NOTE : Si un titre ne joue pas actuellement, vous pouvez encore changer son estimation par un clic-droit sur la rangée appropriée du playlist.</div><br />
<br />
=== Téléchargement de la musique ===<br />
<br />
Le client iRATE télécharge automatiquement les titres MP3 en fond de tâche. Vous pouvez visualiser une barre de progression en bas de la fenêtre principale d'iRATE:<br />
<br />
<div align="center">[[Image:irate-irate_mainscreen_download.png]]</div><br />
<br />
Ne vous inquiétez pas de fermer le client alors qu'il est en train de télécharger un dossier! Si vous stoppez le client iRATE avant que le client n'ait fini un téléchargement, iRATE fera un résumé du téléchargement la prochaine fois que vous lancerez le client.<br />
<br />
=== Écouter la musique ===<br />
<br />
Dès qu'il téléchargera son premier titre, le client iRATE commencera automatiquement à jouer la musique pour vous. Vous pouvez commander le playback de la musique en utilisant les commandes localisées ici:<br />
<br />
<div align="center">[[Image:irate-irate_mainscreen_controls.png]]</div><br />
<br />
iRATE se rappelle quels titres il a joué depuis que vous avez démarré le client:<br />
<br />
* Le bouton marqué <code>< <</code> vous laisse sauter au titre précédemment joué.<br />
* De même, le bouton marqué <code>>></code> saute au prochain titre (aléatoirement choisi).<br />
* Vous pouvez faire une pause en appuyant sur le bouton marqué <code>||</code>.<br />
<br />
L'écran principal a également une commande de volume:<br />
<br />
<div align="center">[[Image:irate-irate_mainscreen_volume.png]]</div><br />
<br />
Les titres téléchargés ne proviennent pas de la même source et ont par conséquent des niveaux sonores différents. Déplacez ce glisseur vers la droite pour augmenter le volume, ou vers la gauche pour le diminuer. Ce niveau de volume est stocké pour le titre actuellement en lecture. Employez votre commande de volume de système si vous voulez juste ajuster le niveau de volume normalement.<br />
<br />
Voilà, c'est terminé. Profitez en bien ;-)<br />
<br />
<div class="merci">Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Jean-Claude Noël le 17/09/2004.</div><br />
<br />
= Copyright =<br />
Copyright &copy; 17/09/2004, Jean-Claude Noël<br />
{{CC-BY-SA}}<br />
<br />
<br />
=Autres ressources=<br />
<br />
* [http://irate.sf.net/kirate Plugin KDE pour iRate]</div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=Tomsrtbt&diff=9173
Tomsrtbt
2005-10-14T18:00:56Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div>[[Category:Créer ses CD et DVD]]<br />
= Mini-distribution TOMSRTBT =<br />
<br />
<div class="leatitre">Mini-distribution TOMSRTBT</div><div class="leapar">Par Marc <spi.mj@wanadoo.fr></div><div class="leadesc">Utilisation d'une mini-distribution.</div><br />
----<br />
<br />
Pour commencer, laissons donc Tom Oehser nous présenter lui-même sa distribution à l'aide de deux petites phrases issues de sa FAQ et d'un logo comparatif : <br />Â <br />
<br />
<div class="code">''Tomsrtbt is the most GNU/Linux on one floppy disk.''<br />''Tomsrtbt stands for : Tom's floppy which has a root filesystem and is also bootable.'' <br />
<br />
#####<br />
#######<br />
##O#O##<br />
#VVVVV#<br />
## VVV ##<br />
# ##<br />
# ##<br />
# ### .~.<br />
QQ# ##Q /V\<br />
QQQQQQ# #QQQQQQ // \\<br />
QQQQQQQ# #QQQQQQQ /( )\<br />
QQQQQ#######QQQQQ ^`~'^<br />
<br />
Other distributions tomsrtbt<br />
<br />
</div><br />
<br />
La mini-distribution de Tom Oehser se propose donc d'offrir le maximum sur le support minimum, et son appellation Tomsrtbt peut se comprendre comme : Tom(')s r(oo)t b(oo)t. Ceci peut se traduire (assez peu élégamment) par : la disquette amorçable de Tom pour l'administration. Bref la Tomsrtbt est la disquette dont vous aurez besoin le jour où ... vous ne parviendrez plus à démarrer votre système et où il vous faudra intervenir en urgence ... ne serait-ce que pour sauvegarder vos fichiers les plus importants avant de devoir tout réinstaller :-(<br />
<br />
La version dont nous allons parler ici est la 1.7.361. Aucune configuration minimale n'est mentionnée pour son fonctionnement. Des tests sur un 486 33 Mhz avec 12 Mo de RAM n'ont posés aucun problème (pas de problème non plus bien sûr sur des configurations plus performantes). On peut cependant penser que la configuration minimale pour son utilisation doit être un 386 disposant de 4 Mo de RAM. Dans un tel cas, l'occupation de la RAM serait bien sûr différente de celle décrite ici un peu plus bas. <br />Â <br />
<br />
=== Creation de la disquette ===<br />
<br />
Avant toute chose, il vous faut bien sûr vous procurer cette distribution ou plus exactement le fichier qui vous permettra de créer sa disquette. Pour ce faire, aller sur le site de Tom : http://www.toms.net/. Suivez le lien Tomsrtbt puis choisissez un site de téléchargement. Pour créer la disquette à partir de Linux, téléchargez le fichier : <tt>tomsrtbt-1.7.361.tar.gz</tt><br />Maintenant que vous possédez ce fichier, effectuez les opérations suivantes. <br />1) Logez-vous comme administrateur avec la commande : <tt>su</tt><br />2) Extrayez les fichiers de l'archive compressée en utilisant : <tt>tar -xvzf tomsrtbt-1.7.361.tar.gz</tt>. Notez que ceci crée le répertoire <tt>tomsrtbt-1.7.361</tt>. <br />3) Placez-vous dans le répertoire ainsi créé : <tt>cd tomsrtbt-1.7.361</tt>. Ce répertoire contient maintenant les fichiers suivants : <tt>buildit.s</tt>, <tt>clone.s</tt>, <tt>fdflush.s</tt>, <tt>fdformat</tt>, <tt>install.s</tt>, <tt>licence.html</tt>, <tt>settings.s</tt>, <tt>tomsrtbt.FAQ</tt>, <tt>tomsrtbt.raw </tt>et<tt> unpack.s</tt>. <br />4) Introduisez une disquette (vierge, sans défaut, 1.44 Mo) dans le premier lecteur de disquette (<tt>fd0</tt>). <br />5) Entrez : <tt>./install.s</tt><br />6) Patientez un peu ... Après formatage à 1.722 Mo et vérification, puis copie de l'image et vérification, vous êtes normalement maintenant en possession d'une Tomsrtbt.<br />
<br />
Si vous souhaitez vérifier ce que contient cette disquette, et que vous n'obtenez qu'un message d'erreur, démontez si nécessaire votre lecteur de disquettes avec la commande : <tt>umount /mnt/floppy</tt> ; puis montez-le avec la commande : <tt>mount /dev/fd0u1722 /mnt/floppy</tt> (tout ceci en admettant que vous ayez un répertoire <tt>/mnt/floppy</tt> destiné à cet usage). Vous devriez maintenant constater qu'elle contient les cinq fichiers suivants : <tt>boot.b</tt>, <tt>map</tt>, <tt>rc.custom.gz</tt>, <tt>settings.s</tt> et <tt>zImage</tt>.<br />
<br />
<u>NB</u> : Vous pouvez également créer cette disquette à partir de Windows. Comme je ne l'ai pas fait, je n'en parlerai pas plus, et vous renvoie pour cela à la FAQ de la Tomsrtbt ... Et oui, il fallait y penser avant :-p <br />Â <br />
<br />
=== Démarrage ===<br />
<br />
Comme elle réside en RAM, la Tomsrtbt est une distribution que l'on installe à chaque utilisation. Ceci est des plus simple. <br />1) Insérez la disquette puis démarrez ou redémarrez votre ordinateur. <br />2) A l'invite boot, appuyez sur <Enter> <br />3) Au message vous invitant à choisir votre résolution d'écran, appuyez sur <Enter> si vous voulez consulter les choix possibles, puis entrez le numéro correspondant à votre choix. Si vous souhaitez utiliser le classique 80 x 25 (numéro 0) vous pouvez aussi plus simplement appuyer sur <Space> au lieu de <Enter> car ce choix est le choix par défaut. <br />4) A l'écran vous présentant les choix possibles pour votre clavier, entrez le numéro 16 correspondant au clavier fr. Attention le numéro 1, clavier azerty, n'est pas le meilleurs choix pour un clavier français, et le choix par défaut correspond à un clavier qwerty. <br />5) A l'invite de login, entrez : root ; puis le mot de passe par défaut : xxxx <br />6) Retirez la disquette, vous êtes maintenant sous Linux en tant que root.<br />
<br />
Des commentaires vous guident tout au long de cette phase de démarrage / installation. Faites particulièrement attention lors du choix du clavier, si vous commettez une erreur n'hésitez pas à recommencer l'installation : cette option de la Tomsrtbt est un de ses points forts, vous n'aurez pas à entrer "<tt>,qn qsh</tt>" pour obtenir la page man ash :-) <br />Â <br />
<br />
=== Aperçu ===<br />
<br />
<u>Attention</u> : maintenant que vous allez commencer à utiliser cette disquette, souvenez-vous que vous êtes root, pour le meilleur et pour le pire ! Aucune protection même minime (du type <tt>alias rm='rm -i'</tt>) n'est prévue. Bien sûr vous êtes seul responsable de ce que vous ferez.<br />
<br />
Les quelques lignes de commandes proposées ci-dessous, bien que normalement totalement inoffensives, peuvent engendrer un plantage de votre système dû, par exemple, à la saturation du répertoire racine (voir plus bas). Mais bon ... je ne suis pas un expert et, pour une fois, je n'ai rien cassé lors de mes essais ... alors continuons.<br />
<br />
La Tomsrtbt utilise le shell '''ash''' (et non l'habituel '''bash''') et les librairies '''libc5'''. Elle propose quatre consoles texte classiquement accessibles par <Alt>+<F1> à <F4>. Elle s'installe en RAM de la façon suivante (commande <tt>mount</tt>) : <br /><tt>/dev/ram0</tt> : répertoire <tt>/</tt> de type minix <br /><tt>/dev/ram1</tt> : répertoire <tt>/usr</tt> de type minix <br /><tt>/dev/ram3</tt> : répertoire <tt>/tmp</tt> de type minix <br />Notons juste ici que le système de fichiers utilisé n'est pas l'habituel '''ext2''' mais '''minix'''. <br />(<u>Note de Jicé</u> : minix est plus adapté que ext2 pour des petits systèmes de fichiers, comme une disquette, ou ici pour de petits RAM-disks).<br />
<br />
La taille et l'espace occupé pour ces répertoires sont les suivants (commande <tt>df</tt>) : <br />répertoire <tt>/</tt> : 694 Ko utilisés à 98% <br />répertoire <tt>/usr</tt> : 2 387 Ko utilisés à 96% <br />répertoire <tt>/tmp</tt> : 4 049 Ko utilisés à 0% <br />En réalité la taille du répertoire <tt>/tmp</tt> dépend de la quantité de RAM disponible. Le plus petit répertoire <tt>/tmp</tt> que j'ai obtenu ne faisait que 249 Ko utilisés à 0%.<br />
<br />
Les répertoires <tt>/</tt> et <tt>/usr</tt> étant remplis, il vous faudra, si vous souhaitez stocker temporairement des fichiers, soit utiliser le répertoire <tt>/tmp</tt> soit créer, par exemple, un répertoire <tt>/home</tt> (ou <tt>/root</tt>) en <tt>/dev/ram4</tt> (si votre ordinateur dispose d'une marge de RAM suffisante par rapport à celle déjà utilisée). <br />Pour créer ce répertoire, procédez ainsi : <br />1) créez un système de fichier de type minix en ram4 : <tt>mkfs.minix /dev/ram4</tt><br />2) créez le répertoire /home : <tt>mkdir /home</tt><br />3) montez ce répertoire : <tt>mount /dev/ram4 /home</tt><br />
<br />
Vous disposez maintenant d'un répertoire <tt>/home</tt> au format minix de 4 Mo. Si vous souhaitez plus d'espace, précisez la taille en Ko à la première ligne. Si vous souhaitez un autre format que minix comme ext2 ou dos, utilisez <tt>mke2fs</tt> ou <tt>mkdosfs</tt> au lieu de <tt>mkfs.minix</tt>, etc. (vous avez aussi le droit de lire les pages man :-). Faites cependant attention, le peu de place disponible dans le répertoire <tt>/</tt> peut engendrer des messages d'erreur lors, par exemple, de l'écriture des fichiers <tt>mtab</tt> ou <tt>mtab.tmp</tt> liés à la commande <tt>mount</tt>. <br />Donc de façon plus générale, si vous avez besoin d'un peu de place dans le répertoire <tt>/</tt>, supprimez y quelques fichiers dont vous pensez ne pas vous servir cette fois (n'oubliez pas que vous êtes pour l'instant en RAM, et que donc tout est temporaire).<br />
<br />
L'arborescence à la racine de la Tomsrtbt est intéressante. Voici les fichiers que l'on y trouve (commande <tt>ls /</tt>) : <br /><tt>/bin</tt>, <tt>/cdrom</tt>, <tt>/dev</tt>, <tt>/etc</tt>, <tt>/fl</tt>, <tt>/lib</tt>, <tt>/mnt</tt>, <tt>/proc</tt>, <tt>/sbin</tt>, <tt>/tmp</tt>, <tt>/usr</tt> et <tt>/var</tt>.<br />
<br />
On remarque ici quelques particularités par rapport au shéma classique. Comme nous l'avons déjà aperçu, la Tomsrtbt ne dispose pas de répertoire /home ou /root ; d'autre part l'habituel répertoire /sbin n'est ici qu'un lien vers le répertoire /bin et trois répertoires (/cdrom, /fl et /mnt) sont déjà prévus pour monter un cdrom, une disquette (fl(oppy), enfin je suppose) et un ou des disques durs et leurs partitions (mnt, et les éventuels répertoires que vous pouvez y créer avec la commande mkdir). <br />Tout ceci se comprend fort bien si l'on ne perd pas de vue la vocation "root and boot" de cette distribution. Ici l'utilisateur standard est root et, de ce fait, le "sbin" devient du "bin", d'autre part il n'est pas là a priori pour se bâtir un sweet home (même si un peu de place libre peut-être bien utile). Enfin, comme nous sommes en RAM, les opérations de montage (et démontage) vont tenir une place prépondérante si nous voulons pouvoir effectuer quelque chose d'un tant soit peu durable.<br />
<br />
Voici donc quelques exemples de montage dans lesquels nous admettrons que votre cdrom est en hdc, votre lecteur de disquette en fd0, votre Windows en hda1 (première partition du premier disque dur) et votre répertoire <tt>/</tt> Linux en hdb1 (première partition du second disque dur). <br />1) accès au cdrom : introduisez votre cd puis entrez : <tt>mount /dev/hdc /cdrom</tt> ... Quand vous avez terminé, entrez : <tt>umount /cdrom</tt> puis retirez votre cd. <br />2) accès au lecteur de disquette : même chose que pour le cd en utilisant les commandes <tt>mount /dev/fd0</tt> /fl puis <tt>umount /fl</tt><br />3) accès au disque Windows : <tt>mkdir /mnt/windows</tt> puis <tt>mount /dev/hda1 /mnt/windows</tt> et enfin <tt>umount /mnt/windows</tt><br />4) accès au disque Linux : <tt>mkdir /mnt/linux</tt> puis <tt>mount /dev/hdb1 /mnt/linux</tt> et en fin <tt>umount /mnt/linux</tt><br />
<br />
Tout en travaillant sur des partitions minix, etx2, msdos fat 16 et fat 32, je n'ai pas rencontré de problème avec ces commandes lors des opérations de montage. Si tel n'était pas votre cas, n'oubliez pas que l'option -t permet de préciser le type du système de fichiers. <br />Si vous n'êtes pas sûr des lettres et numéros (hda1, hdc, etc) attribués à vos différents lecteurs et à leurs partitions, vous pouvez utiliser la commande <tt>dmesg</tt> qui liste les messages affichés au démarrage du système. Sans vous donner obligatoirement la réponse en toutes lettres, elle vous aidera à vous remémorer votre configuration grâce à des lignes telles que : <br />... <br />hda : Quantum Bigfoot, 5748 MB etc. <br />hdb : Maxtor, 14655 MB etc. <br />hdc : Compaq dvd-rom etc. <br />... <br />floppy drive(s) : fd0 is 1.44 M <br />... <br />Partition check : <br />hda : hda1 <br />hdb : hdb1 hdb2 hdb3 < hdb5 hdb6 hdb7 > <br />...<br />
<br />
Une fois ces opérations pour le moins en partie effectuées, vous pouvez utiliser les commandes que la Tomsrtbt met à votre disposition pour résoudre votre problème, si problème il y a. La plupart des commandes sont dans le répertoire <tt>/usr/bin</tt> (et non <tt>/bin</tt>) et de toute façon ces deux répertoires constituent à eux seuls le path de la Tomsrtbt (commande <tt>echo $PATH</tt>). Ces commandes sont beaucoup trop nombreuses pour que nous les passions ici en revue et, en toutes confidences, il y en a même certaines que je ne connais absolument pas :-( Si vous hésitez sur l'utilisation de certaines de ces commandes, vous pouvez avoir recours aux pages man incluses dans la distribution (commande : <tt>man nom_commande</tt>)<br />
<br />
Même si la Tomsrtbt d'origine constitue une excellente disquette de démarrage et d'administration, notez qu'il est possible de la personnaliser sans grandes difficultés (tout est déjà prévu). Pour ce faire je me contenterai à ce jour de vous renvoyer à la [http://www.toms.net/rb/tomsrtbt.FAQ FAQ de Tom Oehser] ... Vraiment, il est très fort ce Tom !<br />
<br />
<div class="merci">Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Marc le 26/07/2001.</div><br />
<br />
= Copyright =<br />
Copyright &copy; 26/07/2001, Marc<br />
{{CC-BY-NC-SA}}<br />
<br />
<br />
=Autres ressources=<br />
<br />
* [http://www.toms.net/rb/download.html Accés direct au download]</div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=Graver_en_ligne_de_commande&diff=9172
Graver en ligne de commande
2005-10-14T18:00:54Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div>[[Category:Créer ses CD et DVD]]<br />
= La gravure en ligne de commandes =<br />
<br />
<div class="leatitre">La gravure en ligne de commandes</div><div class="leapar">Par [mailto:pascal.cussy@libertysurf.fr Pascal], révision par Jice</div><br />
----<br />
<br />
Pour exploiter pleinement les possibilités de gravure sous Linux, il est nécessaire de connaître quelques rudiments sur les outils de base dont les principaux sont ''cdrecord'' , ''cdrdao'', ''cdparanoia'', ''readcd'' et ''cdparanoia''. Voir aussi la logithèque de Léa, [../logi/index.php3?aff_rub=4 section gravure]. <br />Tous les logiciels graphiques destinés à la gravure ne sont en fait que des interfaces qui utilisent ces outils.<br />
<br />
Ces programmes figurent normalement sur toute distribution. <br />Les quatre premiers programmes font partie du package ''cdrtools'' dont les sources sont disponibles [ftp://ftp.focus.gmd.de/pub/unix/cdrecord/ ici] ou encore sur cette [http://www.fokus.gmd.de/research/cc/glone/employees/joerg.schilling/cdrecord.html page] qui contient d'autres informations, notamment une liste des graveurs compatibles. <br />On peut également récupérer les sources de ''cdparanoia'' à cette [http://www.xiph.org/cdparanoia/index.html addresse]<br /><u>Note de Jice</u> : sous Mandrake, les packages correspondants sont ''cdrecord'', ''cdrdao'' et ''cdparanoia''.<br />
<br />
Cette page a été construite à partir notamment :<br />
<br />
* des pages de manuel<br />
* des divers fichiers Readme fournis avec les outils<br />
* de la FAQ sur les CD-R dont la version originale (en anglais) se trouve [http://www.cdrfaq.org/ ici] et dont l'on trouvera une traduction [http://www.lagravuredecd.com ici]<br />
* de multiples essais personnnels<br />
<br />
Cet article contient les informations suivantes :<br />
<br />
* Les prérequis : <br />
** [#config_machine Configurer sa machine],<br />
** [#config_programmes Configurer les programmes],<br />
** [#commandes_utiles Quelques commandes utiles],<br />
** [#cdstruct Un peu de théorie sur les CD-ROM], <br />
* et enfin la pratique : <br />
** [#isoburn Graver une image ISO],<br />
** [#creation_disque_donnees Créer un disque de données (backup, etc.)],<br />
** [#copiecdrom Copier un CD-Rom de données],<br />
** [#multisessions Créer ou copier un disque multisession],<br />
** [#copiecdaudio Copier un CD audio],<br />
** [#casparticuliers Créer ou copier un CD Extra] (mélange de CD Audio et de CD-Rom),<br />
** [#bincue Graver une image .bin/.cue]<br />
<br />
Avant toute chose, il convient de lire les sections suivantes sur la configuration de la machine et des programmes.<br />
<br />
== Avant de commencer ==<br />
<br />
=== Configuration de la machine ===<br />
<br />
Pour graver, il faut disposer d'un graveur SCSI ou d'un graveur IDE avec une émulation SCSI.<br />
<br />
==== Le noyau ====<br />
<br />
''<u>Note de Jice</u> : Si vous avez une distribution récente (Mandrake 8.x, etc.), vous pouvez passer ce paragraphe.''<br />Pour cela, dans la configuration du noyau, les options suivantes doivent être activées (par exemple en module) :<br />
<br />
* ''SCSI emulation support'' (le module ide-scsi.o dans la rubrique ''ATA/IDE/MFM/RLL'' support de ''IDE/ATA and ATAPI Block devices'' pour un noyau 2.4.17 ou dans la rubrique ''Block devices'' pour d'autres noyaux)<br />
* ''SCSI support'' (le module scsi_mod.o dans la rubrique SCSI support)<br />
* ''SCSI CD-ROM support'' (le module sr_mod.o dans la même rubrique ; celui-ci n'est pas indispensable pour la gravure mais est nécessaire pour pouvoir monter le périphérique)<br />
* ''SCSI generic support'' (le module sg.o dans la même rubrique)<br />
<br />
Il peut aussi être utile d'activer l'option ''Loopback device support'' dans la rubrique ''Block Devices''. Ceci permet de monter les images de disques afin d'en visualiser le contenu.<br />
<br />
==== L'émulation SCSI ====<br />
<br />
Enfin, il faut ajouter une entrée du type ''append="hdc=ide-scsi"'' dans le fichier <tt>/etc/lilo.conf</tt> (quelque part sous la ligne ''image=fichier_du_noyau''). Pour obtenir le nom du fichier de périphérique du graveur (''hdc'' dans l'exemple ci-dessus), on tape ''dmesg''|''less'' dans une console et on repère une ligne du type ''hdc: nom du graveur''. <br />Enfin, pour activer l'émulation SCSI, il suffit de charger le module <tt>ide-scsi</tt> par la commande ''modprobe ide-scsi'' (les autres modules seront chargés automatiquement si l'option ''Kernel module loader'' de la rubrique ''Loadable module support'' est activée dans le noyau).<br />
<br />
Dans certaines situations, il est nécessaire de disposer également d'un lecteur de CD-Rom SCSI (ou émulé). C'est le cas par exemple pour la copie directe de Cd-Rom audio avec ''cdrdao''. <br />Pour qu'un lecteur ou un graveur IDE soit émulé en SCSI, il suffit de modifier l'entrée dans le fichier <tt>/etc/lilo.conf</tt> pour obtenir quelque chose du genre :<br />
<br />
<blockquote><tt>append="hdc=ide-scsi hdd=ide-scsi"</tt></blockquote><br />
<br />
avec ici ''hdc'' le lecteur de Cd-Rom et ''hdd'' le graveur (selon la configuration). Les périphériques seront alors accessibles, selon les distributions, à travers <tt>/dev/scd0</tt> et <tt>/dev/scd1</tt> (ou <tt>/dev/sg0</tt> et <tt>/dev/sg1</tt>, cela dépend des distributions), au lieu de <tt>/dev/hdc</tt> et <tt>/dev/hdd</tt>.<br />
<br />
La plupart des programmes ne sont utilisables qu'en mode super-utilisateur. Pour les utiliser en mode utilisateur, on peut utiliser par exemple la commande ''sudo'', ou ''su''.<br />
<br />
==== Obtenir l'adresse SCSI du graveur ====<br />
<br />
Avant toute chose, il faut obtenir cette information en interrogeant le bus SCSI. Pour cela, on tape dans une console :<br />
<br />
  ''cdrecord -scanbus''<br />
<br />
Celui-ci va renvoyer un certain nombre de lignes du type :<br />
<br />
''Â Â 0,0,0Â Â 0) 'Nom du graveur' Removable Cd-Rom''<br />
<br />
Ce sont les trois premiers chiffres qui nous intéressent. <br />Ces trois chiffres correspondent respectivement au numéro de l'adaptateur (''scsibus''), au numéro d'identification du périphérique ou de la cible (''target'') et au numéro d'identification dans la chaîne SCSI (''lun, Logical Unit Number''). <br />Ces trois chiffres seront indispensables pour la suite.<br />
<br />
Par exemple, le programme ''cdrecord'' devra toujours être lancé avec l'option ''dev=x,y,z'' avec ''x'' le premier chiffre (scsibus), ''y'' le deuxième (target) et ''z'' le troisième (lun). En fait, s'il n'y a qu'un seul bus SCSI, il suffit d'entrer les deux derniers. Ainsi, si les trois chiffres sont 0,1,0, on entrera ''cdrecord dev=1,0 etc''. <br />Par la suite, on utilisera la notation ''dev=y,z'' et il faudra remplacer ''y'' et ''z'' par leur valeur.<br />
<br />
C'est la même chose avec le programme ''readcd'' (on entrera donc ''readcd dev=y,z etc'').<br />
<br />
Pour ''cdrdao'', l'option s'écrit ''--device y,z''. Il est possible également que le programme ne reconnaisse pas votre graveur. Choisissez alors un pilote dans la liste qu'il proposera dans ce cas (par exemple, l'option ''--driver generic-mmc'').<br />
<br />
'''Attention''' : vous pouvez très bien avoir plusieurs bus SCSI sans le savoir. Par exemple, si vous utilisez le module ''usb-storage'' (pour un lecteur ZIP USB), celui-ci crée un bus SCSI. Et bien sûr, si vous avez une carte SCSI, vous avez encore un autre bus SCSI. Bref, dans ce cas, vous devrez donner en paramètres aux programmes les 3 chiffres. Par exemple ''cdrecord dev=0,1,0''.<br />
<br />
=== Configuration des programmes ===<br />
<br />
Le programme '''''cdrecord''''' lit un fichier de configuration dans un fichier nommé ''/etc/default/cdrecord''. Si l'on doit passer souvent les mêmes paramètres, il est pratique de les entrer dans ce fichier (si d'autres valeurs de paramètre sont passées en ligne de commande par la suite, celles du fichier correspondantes seront ignorées). Par exemple, si l'on grave à partir du même périphérique dont les numéros SCSI sont x,y,z, alors il faut créer le répertoire ''/etc/default'' s'il n'existe pas ainsi que le fichier ''/etc/default/cdrecord'' (par exemple, en tapant ''touch /etc/default/cdrecord''), et saisir dans ce fichier la ligne :<br />
<br />
<tt>Â Â CDR_DEVICE=x,y,z</tt><br />
<br />
La page de manuel explique les autres options pour ce fichier.<br />
<br />
En ce qui concerne '''''cdrdao''''', ces options sont stockées dans le fichier ''cdrdao.conf'' dans le répertoire ''/etc'' (on peut aussi le placer dans ''/etc/defaults/cdrdao'' ou utiliser le fichier ''$HOME/.cdrdao''). Oui, les pages de man indiquent bien <tt>/etc/default/cdrecord</tt> pour ''cdrecord'' (<tt>default</tt> sans 's') et <tt>/etc/default'''s'''/cdrdao</tt> pour ''cdrdao'' (<tt>default</tt> avec un 's')... Un petit lien symbolique (créé par : <tt>ln -s /etc/default /etc/defaults</tt>) permet d'avoir tout dans le même répertoire. <br />Si l'on utilise un graveur en x,y,z, géré par le pilote ''generic-mmc'', alors ce fichier doit avoir la forme :<br />
<br />
<tt>Â Â write_device: "x,y,z"</tt><br /><tt>Â Â write_driver: "generic-mmc"</tt><br /><tt>Â Â read_driver: "generic-mmc"</tt><br />
<br />
Tout ceci est expliqué dans la page de manuel. On peut également entrer les informations sur le lecteur (par exemple ''read_device=0,1,0''). Il ne faut toutefois pas saisir cette ligne si l'on compte lire et copier un disque à partir du seul graveur car la commande ''copy'' de ''cdrdao'' ne fonctionne pas si les paramètres ''source-device'' et ''device'' ont les mêmes valeurs. <br />Dans ce cas, il faudra préciser le périphérique pour les commandes de lecture comme ''read-cd'' ou ''read-toc'' (par exemple, l'option ''--device y,z'').<br />
<br />
=== Quelques commandes utiles ===<br />
<br />
==== Débloquer le graveur ====<br />
<br />
Si pour une raison ou pour une autre le graveur ne répond plus à aucune commande, renvoie des messages d'erreur et refuse de s'ouvrir même ne appuyant sur le bouton d'éjection, alors vous pouvez utiliser ''cdrdao'' pour le réinitialiser :<br />
<br />
  ''cdrdao unlock --device y,z''<br />
<br />
==== Effacer un CD-RW ====<br />
<br />
Pour effacer un disque, utilisez ''cdrecord'' :<br />
<br />
  ''cdrecord dev=y,z blank=fast''<br />
<br />
ce qui lancera un effacement rapide du disque (il efface notamment la TOC, la PMA et les marques d'intervalle entre pistes, ce qui est généralement suffisant). Pour effacer complètement le disque, il faut remplacer l'option ''fast'' par ''all''.<br />
<br />
==== Obtenir de l'information sur le Cd-Rom ====<br />
<br />
Avant de graver un Cd-Rom de données, il est important d'obtenir quelques informations, notamment pour savoir s'il s'agit d'un disque mono-session ou multi-sessions. <br />On entre alors dans une console :<br />
<br />
  ''cdrdao disk-info --device y,z''<br />
<br />
Il faut pour cela utiliser le graveur (un lecteur de Cd-Rom n'est généralement pas capable d'extraire ces informations). <br />Ceci va permettre de savoir notamment s'il s'agit d'un disque réinscriptible (''CD-RW: yes''), si le disque est vide (''CR-R empty: yes'',) s'il est fixé (''appendable: no'', on ne peut plus rien ajouter; dans ce cas, le programme renvoie également le début de la nouvelle session et la capacité restante sur le disque) et de connaître la capacité totale du disque, la plage de vitesse acceptable (pour un disque réinscriptible), le nombre de sessions et le numéro de la dernière piste (si le disque ne comporte qu'une seule session, ceci correspond au nombre de pistes sur le disque).<br />
<br />
=== Structure d'un Cd-Rom ===<br />
<br />
Sur un Cd, les informations sont gravées en spirale en partant du centre sur des pistes, elles-mêmes regroupées dans une session. Ainsi, un disque contient au moins une session comprenant au moins une piste. Beaucoup de graveurs n'acceptent de graver des pistes que si leur durée est d'au moins 4 secondes ou 300 secteurs. <br />En effet, l'unité de base sur un disque est le bloc ou secteur qui occupe 2352 octets, qu'il s'agisse de musique ou de données (l'occupation n'est toutefois pas la même). <br />Lorsqu'il s'agit de Cd de données, un secteur représente toujours 2352 octets mais seuls 2048 d'entre eux sont utilisés pour stocker les données, le reste étant utilisé en grande partie pour la correction d'erreurs. <br />Ainsi, pour stocker un Mo de données, soit 1024000 octets (1 Ko représente 1024 octets), il faudra 1024000/2048=500 secteurs. <br />Sur un disque audio, les 2352 octets d'un secteur sont occupés par la musique car la correction d'erreurs s'effectue à un autre niveau sur le disque (les couches C1 et C2 d'après les spécialistes).<br />
<br />
La conversion analogique-numérique s'effectue par échantillonnage. Le Red Book (norme qui spécifie le standard des disques audio) précise que la fréquence d'échantillage doit être de 44100 Hz (hertz) ce qui représente 44100 échantillons par secondes, et que chaque échantillon doit être au format 16 bit, stéréo, PCM ("Pulse Code Modulation"). Ceci permet de reproduire des sons d'une fréquence variant entre 0 et 20000 Hz, avec une petite marge, qui est la fréquence audible de l'oreille humaine. <br />D'après certains How-To, pour représenter correctement un son d'une fréquence F, il faut une fréquence d'échantillonage d'au moins 2F Hz (ceci doit être la conséquence entre autre du théorème de Shannon qui indique que l'on peut reproduire un signal qui contient des fréquences inférieures à F si on le connaît aux instants multiples de 1/2 F). <br />Au total, une seconde de musique représentera 44100x16x2=1411200 bits, soit 1411200/8=176400 octets, soit encore 176400/2352=75 blocs ou secteurs.<br />
<br />
Les disques audio ne contiennent en général qu'une seule session car les lecteurs ne sont capables que de lire la première session. Il est toutefois possible de créer des disques mélangeant des pistes de données ou des pistes audio. C'est le cas par exemple des Cd mixtes qui contiennent en général une piste de données et des pistes audio (par exemple, des Cd de jeux). C'est le cas également des Cd Extra qui contiennent une première session audio et une deuxième session de données. Ceci se révèle pratique pour stocker des informations relatives à la musique enregistrée, par exemple des fichiers video, sans que le lecteur audio n'affiche la piste comme une autre piste audio (le lecteur n'a accès qu'à la première session audio et ne voit pas la session de données qui reste néanmoins accessible par un ordinateur). Ce n'est pas le cas avec un Cd mixte: la première piste est considérée comme une piste audio par un lecteur (on pourrait crée une première session pour les données et une deuxième pour l'audio mais la deuxième session ne serait pas accessible par le lecteur audio). <br />Chaque session contient une zone de données dans laquelle sont stockées les pistes de données ou les pistes audio. Elle est précédée d'une en-tête, le Lead-In, qui contient la TOC ("Table of Contents" ou Table des Matières) ainsi que l'adresse éventuelle de la prochaine session. Elle se termine par une zone de fin, le Lead-Out qui ne contient rien mais sert à indiquer la fin de session. Cette zone de fin occupe 6750 secteurs pour la première session et 2250 pour la suivante. <br />La zone d'en-tête n'est écrite que lorsque la session est clôturée et peut occuper jusqu'à 4500 secteurs. Tant que la session n'est pas finie, la TOC est écrite dans la PMA ("Program Memory Area" ou Zone de Mémoire Programme). <br />La Table des Matières contient la longueur totale de la zone de données, le nombre de pistes et l'adresse de ces pistes sur le disque.<br />
<br />
Il existe deux grandes façons de créer un disque: le mode Track At Once (une piste à la fois) ou le mode Disc At Once (le disque en une seule fois). <br />En mode Track At Once (TAO), on écrit les pistes une par une. En fait, le graveur éteint le laser à la fin de chaque piste ce qui laisse quelques secteurs vides entre les pistes qui en général sont silencieux (des run-in et run-out). Cette méthode est utile si l'on souhaite par exemple graver quelques pistes d'un disque et rajouter quelques pistes plus tard. Dans ce cas, il ne faut pas fermer la session mais le disque ne pourra être lu par un lecteur audio car la TOC ne sera pas générée. Cette méthode est dans certains la seule possible avec certains anciens graveurs. En outre certains d'entre eux laissent automatiquement un espace de 2 secondes entre les pistes. <br />En mode Disc-At-Once (DAO), les pistes sont gravées en une seule fois sans que le laser ne soit éteint. Ceci permet d'obtenir des disques sans espace entre les pistes (par exemple un concert). C'est la méthode la plus sûre pour réaliser une copie qui soit la plus proche possible de l'original. <br />Il existe également un mode dit Session At Once (une session à la fois), qui est une variante du mode DAO. Par exemple, on grave en une seule fois une première session audio en mode multissesion et l'on grave ensuite une deuxième session de données afin de créer un Cd-Extra (on peut également de graver une première session de données en mode DAO, mais cela ne semble pas possible pour une autre (''cdrecord'' refuser cela).<br />
<br />
----<br />
<br />
== Graver une image ISO ==<br />
<br />
''(par Jice)''<br />En ces temps de connexion internet par ADSL ou câble, les personnes qui peuvent télécharger des images ISO (c'est à dire un fichier contenant l'image de ce qui se trouve sur un CD) sont de plus en plus nombreuses. On peut par exemple télécharger les CD d'une distribution Linux, etc.<br />
<br />
==== Graver l'image ISO ====<br />
<br />
Oui, mais... Comment graver le fichier <tt>image.iso</tt> ?<br />
<br />
Une ligne de commande suffit :<br />
<br />
''  cdrecord -v -dao speed=8 dev=x,y,z /chemin/image.iso''<br />
<br />
avec : <br /><nowiki>* </nowiki><tt>speed</tt> : la vitesse du graveur 8 pour 8x par exemple, <br /><nowiki>* </nowiki><tt>dev</tt> : l'adresse sur le bus SCSI du graveur, obtenue avec la commande ''cdrecord -scanbus''<br />
<br />
Si vous avez aussi téléchargé le fichier <tt>md5sums</tt> (lorsqu'il existe), vous pouvez tester votre image avant de la graver par la commande :''''<br />
<br />
''Â Â md5sum -c md5sums''<br />
<br />
<u>Note 1</u> : Sous Windows, utilisez votre logiciel de gravure, et choisissez la fonction "graver une image". Ouvrez alors le fichier contenant l'image ISO, et gravez-le. <br />Il paraît que Nero (Les fichiers .nrg de Nero seraient en fait des images ISO) et Easy CD Creator savent le faire.<br />
<br />
<u>Note 2</u> : une erreur classique consiste à graver le fichier <tt>image.iso</tt> sur le système de fichiers du CD (i.e. le CD contient un seul fichier, votre image ISO). Dans ce cas, vous pouvez toujours vous en servir en montant le CD, puis en montant l'image en loopback, mais c'est de la bidouille, et surtout c'est fichu pour booter sur le CD (ex : CD d'une distribution Linux).<br />
<br />
==== Tester l'image ISO ====<br />
<br />
Il est en effet possible de monter l'image dans un répertoire pour en vérifier le contenu. Par exemple, pour monter l'image dans le répertoire ''/mnt/cdrom'', on fera : <br />Â Â ''mount image.iso -t iso9660 -o loop,ro /mnt/disk''<br />et il suffira d'aller visiter le répertoire <tt>/mnt/disk</tt> pour consulter le contenu de notre image ISO.<br />
<br />
----<br />
<br />
== Création d'un disque de données ==<br />
<br />
Pour l'instant, on ne s'intéresse qu'à la création d'un disque mono-session pour sauvegarder des données stockées sur le disque dur (voir plus loin pour la création d'un Cd-Rom multi-sessions). <br />Il existe pour cela deux méthodes : soit on passe par la création d'une image sur le disque qui est ensuite gravée sur le Cd-Rom, soit on grave directement les données à partir des fichiers présents sur le disque dur. <br />Par ailleurs, qu'il s'agisse d'un disque mono ou multi-sessions, chaque session ne doit comporter qu'une seule piste.<br />
<br />
=== Création d'une image ISO-9660 ===<br />
<br />
On a vu ci-dessus comment graver une telle image, mais il est bien plus intéressant de créer soi-même ses propres CD !<br />
<br />
La méthode consiste à créer une image disque à partir des données à sauvegarder, c'est-à-dire un fichier qui pourra être reconnu par le logiciel de gravure, et qui représente le futur contenu d'un CD. On utilise pour cela le programme ''mkisofs''. Par exemple, si l'on souhaite faire une image nommée ''image.iso'' contenant les fichiers du répertoire ''/home/copie'', alors on fera :<br />
<br />
  ''mkisofs -R -o image.iso /home/copie''<br />
<br />
On peut ignorer les éventuels messages du type :<br />
<br />
  ''Using FICH000.TXT;1 for /home/copie/fichier.txt~ (fichier.txt)''<br />
<br />
Ceci signifie qu'il existe un fichier nommé ''fichier.txt'' et un autre nommé ''fichier.txt~'' (qui est par exemple une sauvegarde du premier réalisée par Emacs). Le programme ''mkisofs'' fait cette transformation pour que le système de fichier soit conforme à la norme ISO-9660 mais l'extension Rock Ridge assure que le fichier sera visible à la lecture sous sa forme initiale (en fait, le fichier ''fichier.txt'' est sauvegardé sous le nom ''FICHI000.TXT'' dans l'arborescence du disque et le ''<nowiki>;1</nowiki>'' signifie qu'il s'agit d'une version du premier).<br />
<br />
L'image sera alors gravée par :<br />
<br />
  ''cdrecord -v -dao speed=8 dev=y,z image.iso''<br />
<br />
Si ''cdrecord'' n'est pas lancé à partir du répertoire dans lequel se trouve le fichier ''image.raw'', il faut préciser le chemin. <br />L'option ''-v'' est optionnelle. Elle active le mode bavard ('' verbose'' ) ce qui permet de voir la progression du processsus de gravure. <br />L'option ''-dao'' est également optionnelle. Elle permet de graver l'image en mode Disc at Once. Si elle n'est présente, le Cd-Rom sera gravé en mode Track at Once et le graveur ajoutera à la fin de la piste 2 blocs qui seront illisibles, ce qui peut poser des problèmes si l'on veut par la suite faire une image de ce disque (ce problème peut toutefois être facilement résolu, voir plus loin). <br />L'option ''speed=8'' sélectionne une vitesse de 8x. Si cette option n'est pas précisée, ''cdrecord'' va essayer de lire la vitesse acceptable sur le disque (celle-ci est inscrite sur les CD-RW mais pas sur les CD-R). Au demeurant, si l'on entre une vitesse supérieure à celle acceptable par le support, le programme va automatiquement l'ajuster. Toutefois, si aucune vitesse n'est inscrite, le disque risque d'être inutilisable.<br />
<br />
De façon générale, la syntaxe de ''mkisofs'' est la suivante :<br />
<br />
  ''mkisofs options répertoire_à_sauvegarder''<br />
<br />
Ici, l'option ''-o image.iso'' signifie que l'image portera le nom ''image.iso'' et sera stockée dans le répertoire courant (si l'on veut stocker l'image ailleurs, il faut préciser le chemin). Le nom de l'image est peu important. Il faut seulement savoir que ''cdrecord'' est par défaut lancé avec l'option ''-data'' qui indique qu'il s'agit d'un Cd de données (CD-Rom mode 1) sauf si l'extension du nom de l'image ''.au'' ou ''.wav'' auquel cas ''cdrecord'' est lancé avec l'option ''-audio''.<br />
<br />
L'option ''-R'' signifie que l'on utilise l'extension Rock Ridge du système de fichiers, qui définit l'organisation des données sur le Cd-Rom. Initialement, la première norme définissant un système de fichiers pour Cd-Rom est la norme ISO-9660 qui, au niveau 1, n'autorise notamment que des noms de fichiers comportant 8 caractères (en majuscules) avec une extension de 3 caractères (le format 8.3). Il existe par ailleurs un certain nombre d'autres restrictions. <br />L'extension Rock-Ridge a été mise en place en 1990 pour les systèmes Unix. Elle autorise les noms de fichiers longs (jusqu'à 255 caractères), les liens symboliques et permet de sauvegarder les identifiants d'utilisateur et de groupe ainsi que les permissions.<br />
<br />
'''Attention''' : un tel disque ne sera par lu correctement sous Windows. Les noms de fichiers n'apparaîtront qu'avec 8 caractères. Si l'on veut que le Cd-Rom soit également lisible sous ce système, il faut ajouter l'option Joliet (noms longs sur CD-Rom pour windows) avec : ''-J'' (''mkisofs -R -J etc'').<br />
<br />
On peut si l'on préfère utiliser l'option ''-r'' à la place de l'option ''-R''. Avec celle-ci, les identifiants d'utilisateur et de groupe sont mis à zéro (ce qui correspond à l'utilisateur et au groupe Root). En effet, l'option ''-R'' sera utile si le disque est lu sur la même machine mais donnera des résultats non souhaitables s'il est lu sur une autre machine (par exemple, des fichiers appartiendront à un utilisateur inconnu si le numéro d'identifiant ne correspond à aucun utilisateur ou à un utilisateur qui aura le même numéro que celui de la machine d'origine, ce qui n'est probablement pas ce que l'on souhaite). <br />L'option ''-r'' active également les droits en lecture pour tous, supprime tous les droits en écriture et autorise l'exécution pour tous si elle est autorisée pour un (propriétaire, groupe ou autres) sur le fichier initial.<br />
<br />
Il est possible de créer une image à partir de plusieurs répertoires. Par exemple, si l'on veut sauvegarder l'ensemble des fichiers des répertoires ''/home/rep1'' et ''/home/rep2'', alors on fera :<br />
<br />
  ''mkisofs -o image.iso /home/rep1 /home/rep2''<br />
<br />
Attention : tous les fichiers seront sauvegardés à la racine du CD (voir plus loin l'option ''-graft-points'' si l'on veut recréer une arborescence différente sur le disque).<br />
<br />
Il est possible de monter l'image dans un répertoire pour en vérifier le contenu. Par exemple, pour monter l'image dans le répertoire ''/mnt/cdrom'', on fera :<br />
<br />
  ''mount image.iso -t iso9660 -o loop /mnt/disk''<br />
<br />
==== Quelques options pratiques de ''mkisofs'' ====<br />
<br />
* L'option ''-no-bak'' exclut tous les fichiers qui contiennent les caractères ~ ou # ainsi que les fichiers qui se terminent par ''.bak''.<br />
* L'option ''-m'' permet d'exclure certains fichiers. Par exemple, si l'on veut exclure de l'image les fichiers ''/rep/file1'' et ''/rep/file2'', on lancera ''mkisofs'' avec les options ''-m /rep/file1 -m /rep/file2''. Pour exclure tous les fichiers qui se terminent par ''.ext'', on utilisera l'option ''-m '*.ext'''.<br />
* L'option ''-exclude-list'' permet d'exclure une liste de fichiers contenus dans un fichier. Par exemple, on créera un fichier nommé ''liste'', contenant un ensemble de fichiers (un fichier par ligne) et on lancera ''mkisofs'' avec l'option ''-exclude-list liste''.<br />
* L'option ''-x'' permet d'exclure un répertoire. Par exemple, pour exclure les répertoires ''/home/rep1'' et ''/home/rep2'', on utilisera l'option ''-x /home/rep1 -x /home/rep2''.<br />
* Enfin, l'option ''-graft-points'' permet de créer une arborescence sur le Cd-Rom. Par exemple, si l'on souhaite sauvegarder les fichiers des répertoires ''/home/dir1'' et ''/home/dir2'' et que l'on souhaite les mettre respectivement dans les répertoires ''/rep1/sous_rep1'' et ''/rep2/sous_rep2'', alors on lancera ''mkisofs'' avec l'option ''-graft-points /rep1/sous_rep1=/home/dir1 /rep2/sous_rep2=/home/dir2'' . Ceci fonctionne aussi avec les fichiers. Ainsi, l'option ''-graft-points /home/dir1/readme=/rep1/readme.txt'' copiera le fichier ''readme'' du disque en fichier ''readme.txt'' dans le répertoire ''rep1''.<br />
<br />
Il existe beaucoup d'autres options qui sont documentées dans la page de manuel. <br />Il convient de signaler également que ''mkisofs'' est par défaut lancé avec l'option ''-pad'' qui rajoute 16 blocs ou secteurs à la fin de la piste (soit 32ko) et en ajoute un certain nombre pour que la taille de l'image soit un multiple de 16. D'après la documentation, ceci est nécessaire pour assurer une lecture correcte des derniers fichiers du Cd-Rom sous Linux.<br />
<br />
=== Gravure directe des données ===<br />
<br />
La méthode consiste à rediriger directement la sortie de ''mkisofs'' vers ''cdrecord'' sans passer par un fichier image intermédiaire. Il faut auparavant obtenir la taille de l'image à graver. Pour cela, si les données à sauvegarder se trouvent par exemple dans le répertoire ''/home/copie'' , on tape dans une console :<br />
<br />
  ''mkisofs -R -q -print-size /home/copie''<br />
<br />
L'option ''-R'' sert à créer une image au format Rock Ridge, l'option ''-q'' (quiet) sert à limiter les informations qui seront affichées et l'option ''-print-size'' va donner la taille de l'image. <br />Ceci renvoie la taille de l'image en nombre de secteurs. On relance ensuite ''mkisofs'' en redirigeant la sortie standard vers ''cdrecord''. Par exemple, si la taille de l'image est de 1000 blocs, on saisira :<br />
<br />
  ''mkisofs -R /home/original 2>/dev/null | cdrecord -v -dao speed=12 dev=y,z tsize=1000s -''<br />
<br />
La directive ''2>/dev/null'' permet de rediriger les messages de ''mkisofs'' (la sortie ''stdout'') vers le périphérique vide ''/dev/null'' afin qu'ils ne soient pas affichés (ceci n'est pas indispensable). <br />Les options ''-v'' et ''-dao'' sont optionnelles. <br />L'option ''tsize'' permet de spécifier la taille de l'image. <br />Le ''"s"'' à la fin sert à spécifier qu'il s'agit de secteurs (ou blocs). Si on l'omet, il faut spécifier la taille en octets (1 secteur ou bloc est équivalent à 2048 octets de données). <br />Enfin le signe - à la fin est obligatoire et permet de dire à ''cdrecord'' de rechercher les données dans la sortie de ''mkisofs''. <br />Certains graveurs acceptent de graver sans connaître la taille de l'image. Dans ce cas, il est inutile de préciser l'option ''tsize'' (cela risque malgré tout de ne pas fonctionner en mode DAO).<br />
<br />
Si l'on souhaite automatiser cela dans un script, on peut utiliser une variable pour stocker la taille de l'image. Par exemple, on pourra avoir quelque chose du type :<br />
<br />
  ''taille=`mkisofs -R -q -print-size /home/copie`''<br />
<br />
Le symbole ` est obtenu par Alt Gr 7. <br />On récupère l'information dans ''cdrecord'' par :<br />
<br />
  ''mkisofs -R /home/copie 2>/dev/null | cdrecord -v -dao speed=12 dev=y,z tsize=${taille}s -''<br />
<br />
----<br />
<br />
== Copie d'un Cd-Rom de données ==<br />
<br />
Il existe deux méthodes pour cela : la copie directe d'un lecteur vers le graveur et la copie indirecte par création d'images. <br />Avant de commencer, il faut s'assurer qu'il s'agit d'un disque mono-session (le cas d'un disque multi-session est abordé plus loin). En effet, si le disque comporte plusieurs sessions, seule la première sera copiée. Utilisez ''cdrdao'' avec l'option ''disk-info'' pour obtenir le nombre de sessions sur le disque (utilisez le graveur pour que ''cdrdao'' lise les informations).<br />
<br />
=== Copie directe ===<br />
<br />
==== Copie avec cdrecord ====<br />
<br />
La méthode la plus simple pour copier un Cd dans ce cas est d'utiliser ''cdrecord''. Par exemple, si le disque à copier se situe dans le lecteur dont le fichier de périphérique est ''/dev/hdc'', alors on tapera :<br />
<br />
  ''cdrecord -v -dao -isosize speed=12 dev=y,z /dev/hdc''<br />
<br />
L'option ''-dao'' évite qu'il y ait deux secteurs illisibles en fin de piste (ceci n'est pas indispensable). <br />Avec l'option ''-isosize'', ''cdrecord'' utilise la taille du système ISO-9660 comme taille de l'image qui sera gravée. Ceci évite de lire les deux secteurs illisibles éventuels si le disque original a été gravé en mode Track at Once et des risques de buffer under run. La taille de la piste copiée sera ainsi inférieure à celle du disque original (outre les deux secteurs, d'autres secteurs vides ajoutés en fin ne seront pas non plus copiés). <br />Si l'on veut faire une copie exacte du Cd-Rom (pistes de même taille), il faut supprimer cette option (si le graveur accepte la copie) et supprimer également l'option ''-dao'' si le disque original a été créé en mode Track at Once.<br />
<br />
==== Copie avec cdrdao ====<br />
<br />
Une autre façon de faire consiste à utiliser ''cdrdao''. Si par exemple, les deux derniers chiffres SCSI du lecteur sont 0,0 et ceux du graveur 1,0, alors on entre dans une console :<br />
<br />
  ''cdrdao copy --source-device 0,0 --device 1,0 --on-the-fly''<br />
<br />
Il faut préciser les options ''--source-driver'' et ''--driver'' si le lecteur et le graveur ne sont pas reconnus (ou entrer ces valeurs dans le fichier de configuration, voir la section ''Configuration des programmes'' plus haut).<br />
<br />
On obtient une copie exacte si le disque original a été crée en mode Disc at Once sinon ''cdrdao'' va ajouter deux secteurs vides mais lisibles à la place des deux secteurs illisibles de fin de piste (en affichant un message du type "Warning: Padding with 2 zero sectors"). Pour qu'il ne crée pas ces deux secteurs, il faut activer l'option ''--tao-source''. <br />Si l'option ''--on-the-fly'' n'est pas précisée, ''cdrdao'' va créer une image sur le disque qui sera effacée par la suite (pour la conserver, entrer l'option ''--keepimage'').<br />
<br />
=== Copie indirecte (utilisation d'une image) ===<br />
<br />
C'est la méthode qu'il faut suivre si l'on ne dispose que d'un graveur qui est utilisé également comme lecteur.<br />
<br />
==== Méthode simple ====<br />
<br />
Le plus simple est alors d'utiliser ''cdrdao''. Par exemple, si le disque original est dans le graveur, il suffit de taper dans une console :<br />
<br />
  ''cdrdao copy --device y,z''<br />
<br />
Le programme crée une image qui est effacée à la fin (voir plus haut pour la conserver). A la fin de la lecture, ''cdrdao'' va demander d'entrer un disque dans le graveur. On peut ignorer le message éventuel, ''"Error: cannot determine disk status: hit enter and try again"''. La copie sera exacte si le disque original a été créé en mode Track at Once et ''cdrdao'' ajoutera deux secteurs vides dans le cas contraire (voir plus haut).<br />
<br />
==== Et pour les H4x0rz ;-) ... (utilisation avancée) ====<br />
<br />
On peut utiliser également les programmes ''dd'' ou ''readcd'' pour créer une image d'un disque. Pour cela, on tape dans une console pour ''dd'', si le lecteur est ''/dev/hdc'' et que l'on souhaite créer une image nommée ''image.raw'' dans le répertoire courant :<br />
<br />
  ''dd if=/dev/hdc of=image.raw''<br />
<br />
ou avec ''readcd''Â (il faut alors un lecteur SCSI ou émulé SCSI) :<br />
<br />
  ''readcd dev=y,z f=image.raw''<br />
<br />
Il est préférable d'utiliser ''readcd'' car celui-ci fait plusieurs essais si la lecture sur le disque est difficile du fait d'un endommagement, ce que ''dd'' ne fait pas. <br />Dans les deux cas, il faut préciser le chemin si l'on ne souhaite pas que l'image soit créée dans le répertoire courant. Par ailleurs, le nom de l'image et l'extension (optionnelle) n'importent pas.<br />
<br />
On grave ensuite l'image avec ''cdrecord'' :<br />
<br />
  ''cdrecord -v -dao dev=0,0 image.raw''<br />
<br />
Il est possible que les deux programmes signalent des erreurs d'entrée-sortie (''"Input/output error"''). Ceci vient probablement de ce que le disque initial a été créé en mode Track at Once, les deux programmes ne pouvant lire les deux secteurs illisibles en fin de piste. Normalement, les images sont utilisables. Si l'on veut éviter ces erreurs, il faut déterminer la longueur de la piste avec ''cdrdao'' :<br />
<br />
  ''cdrdao read-toc --device y,z image.toc''<br />
<br />
Avec la commande ''read-toc'', ''cdrdao'' lit la Table des Matières (la TOC) et renvoie les informations de début et de fin de piste à l'écran. Il faut impérativement préciser un fichier (dont le nom importe peu) dans lequel sera stockée la longueur de la piste. <br />L'image est par défaut stockée dans le répertoire courant si l'on ne précise aucun chemin. Si l'on veut éviter que ''cdrdao'' crée ce fichier qui n'est pas utile ici et qu'il faudra effacer, il suffit de donner un nom de répertoire qui n'existe pas (''cdrdao'' signale une erreur mais affiche les informations nécessaires à l'écran). <br />Les valeurs sont données au format ''mm:ss:bb'' avec ''mm'' le nombre de minutes, ''ss'' le nombre de secondes et ''bb'' le nombre de blocs à ajouter. Une seconde d'enregistrement représente 75 blocs et une minute 60 secondes. La conversion en nombre de blocs est donnée par ''cdrdao'' entre parenthèses. <br />Par exemple, si ''cdrdao'' renvoie les valeurs 00:00:00 (0) dans la colonne ''Start'' et les valeurs 00:42:55 (3205) dans la colonne ''Length'', ceci signifie que la piste débute au secteur 0 et a une longueur de 3205 blocs (42x75 + 55). <br />Comme le disque a été écrit en mode Track at Once, il faut retirer les deux secteurs illisibles et copier 3203 secteurs. <br />Pour cela, on utilise uniquement ''readcd'' car ''dd'' continue de signaler des erreurs d'entrée-sortie :<br />
<br />
  ''readcd dev=y,z sectors=0-3203 f=image.raw''<br />
<br />
qui demande à ''readcd'' de lire du secteur 0 au secteur 3202 inclus, soit 3203 secteurs (il faut entrer ''sectors=0-3203'' car ''readcd'' arrête la lecture au début du secteur 3203 et lit ainsi jusqu'au secteur 3202). <br />Il suffit ensuite de graver l'image avec ''cdrecord'' comme indiqué plus haut (avec le paramètre ''-dao'' si l'on veut un Cd en mode Disc at Once, sans si l'on veut faire une copie exacte du disque et conserver un disque en mode Track at Once (les deux secteurs illisibles seront alors rajoutés)).<br />
<br />
On peut chercher à savoir au départ s'il s'agit d'un disque gravé en mode DAO ou en mode TAO. Pour cela, on récupère les informations de début et de longueur de piste avec ''cdrdao'' puis l'on essaie de lire les deux derniers secteurs avec ''readcd'' (pour l'exemple précédent, ''readcd dev=y,z sectors=3203-3205 f=essai'', effacer ensuite le fichier essai). En cas d'errreur, il s'agit d'un disque gravé en mode TAO (à moins que le disque d'origine ne soit endommagé).<br />
<br />
Une autre méthode consiste à utiliser ''cdrdao'' pour faire une image et la graver (ou ''cdrecord'' pour la graver) :<br />
<br />
  ''cdrdao read-cd --device y,z --datafile image.raw image.toc''<br />
<br />
Il faut impérativement préciser le nom d'un fichier pour la Table des Contenus (TOC). <br />Si l'option ''--datafile'' n'est pas précisée, l'image sera stockée sous le nom ''data.bin'' dans le répertoire courant. <br />L'image sera conforme au disque initial si celui-ci a été gravé en mode DAO et deux secteurs vides termineront la piste s'il a été réalisé en mode TAO (sauf si l'option ''--tao-source'' est activée). <br />L'image est ensuite gravée en utilisant le fichier TOC :<br />
<br />
  ''cdrdao write /home/image.toc''<br />
<br />
Il ne faut pas préciser le nom de l'image car celui-ci est présent dans le fichier ''image.toc''. <br />L'image peut également être gravée avec ''cdrecord'' (avec l'option ''-dao'', cela conduit au même résultat et sans, l'image comportera 4 secteurs de plus que la piste du disque original (les 2 secteurs vides rajoutés par ''cdrdao'' et les 2 secteurs illisibles du au mode TAO)).<br />
<br />
==== Copie "logique" ====<br />
<br />
Enfin, une dernière façon de procéder est possible. Elle consiste à monter le disque à graver dans un répertoire, à en faire une image avec ''mkisofs'' puis à la graver. <br /><u>Note de Jice</u> : je nomme cette copie "logique", par opposition à "physique", car on n'a alors pas une copie parfaite ou quasi parfaite du CD d'origine, mais la copie conforme de tous les fichiers et répertoires (ce qui est quand même le but recherché !).<br />
<br />
Par exemple, on pourra faire si le disque original est sur ''/dev/hdc'' :<br />
<br />
  ''mount -t iso9660 /dev/hdc /mnt/cdrom''<br />  ''mkisofs -R -J -q -print-size /mnt/cdrom''<br />  ''mkisofs -R -J /mnt/cdrom 2>/dev/null | cdrecord -v -dao speed=12 dev=y,z tsize=5000s -''<br />
<br />
si mkisofs renvoie 5000 comme taille de l'image (voir plus haut) et pour une image au format Rock Ridge (-R) et Joliet (-J). <br />Les tailles de piste entre le disque original et la copie différeront probablement mais toutes les données seront sauvegardées.<br />
<br />
----<br />
<br />
== Cd-Rom multi-sessions ==<br />
<br />
Si on veut par exemple utiliser le même disque pour faire plusieurs sauvegardes successives, il faut créer un disque multi-sessions. Cela permet de créer un disque que l'on pourra lire entre temps et sur lequel on pourra par la suite rajouter des données. <br />Chaque session contient une piste de données ainsi qu'une Table des Matières qui est liée à la suivante, ce qui permet d'avoir accès à l'ensemble du contenu du disque.<br />
<br />
=== Création d'un disque multi-sessions ===<br />
<br />
La création d'un Cd-Rom de données multi-sessions est très simple. Il suffit d'ajouter quelques options à ''mkisofs'' et ''cdrecord''.<br />
<br />
Prenons un exemple : <br />Dans un premier temps, on cherche à sauvegarder le contenu du répertoire ''/home/session1''. Pour cela, on réalise l'image de la façon habituelle :<br />
<br />
  ''mkisofs -R -o session1.raw /home/session1''<br />
<br />
D'après la documentation, il est indispensable de graver l'image au format Rock Ridge (l'option ''-R''). <br />On grave ensuite l'image sous ''cdrecord'' avec l'option '''''-multi''''' :<br />
<br />
  ''cdrecord dev=y,z -v '''-multi''' session1.raw''<br />
<br />
L'option ''-dao'' peut être activée mais seulement pour la première session (cela ne semble pas fonctionner pour les autres avec ''cdrecord''). <br />La première session est ainsi gravée et lisible comme n'importe quel autre CD-Rom.<br />
<br />
Si l'on veut ensuite rajouter une autre session, il faut obtenir quelques informations sur le Cd-Rom. Pour cela, on place le Cd-Rom à graver contenant les premières sessions dans le graveur et on tape dans une console :<br />
<br />
  ''cdrecord -msinfo dev=y,z''<br />
<br />
Ceci donne deux chiffres qui sont respectivement le numéro de bloc du début de la dernière session et le numéro de bloc du début de la prochaine session (en fait, en multi-sessions, chaque Table des Matières est liée à la suivante). On note respectivement ces deux chiffres ''xxx'' et ''yyy''. <br />Maintenant, si on souhaite graver une autre session qui contiendra le contenu du répertoire ''/home/session2'', il faut inclure ces informations dans ''mkisofs''. Si le disque contenant les sessions précédentes se trouve dans le graveur (dont le fichier de périphérique est ''/dev/scd0''), on entre :<br />
<br />
  ''mkisofs -R -o session2.raw '''-C xxx,yyy''' '''-M /dev/scd0''' /home/session2''<br />
<br />
Note : il est même possible de remplacer le paramètre ''-M /dev/scd0'' par ''-M session_precedente.raw'' si ''session_precedente.raw'' est l'image de la dernière session gravée (bien sûr, en général on ne dispose plus de ce fichier).<br />
<br />
On grave ensuite cette nouvelle session de façon habituelle :<br />
<br />
  ''cdrecord -v '''-multi''' dev=0,0 session2.raw''<br />
<br />
Note : on peut supprimer l'option ''-multi'' si l'on ne souhaite plus rajouter de nouvelle session par la suite.<br />
<br />
=== Copie d'un Cd-Rom multi-sessions ===<br />
<br />
La façon la plus simple de procéder est de monter le Cd-Rom sur un répertoire, d'en faire une image avec ''mkisofs'' puis de la graver avec ''cdrecord'' (éventuellement avec l'option ''-multi'' si l'on souhaite ajouter d'autres sessions par la suite). <br />Le nouveau disque ne comportera qu'une seule session mais contiendra l'ensemble des fichiers du disque original, ce qui est le plus important. Voir le paragraphe [#copielogique Copie logique].<br />
<br />
Si l'on souhaite malgré tout faire une copie du disque original qui contienne le même nombre de sessions, il faut obtenir les informations sur le début et la longueur de chaque session et savoir si les sessions ont été gravées en mode DAO ou en mode TAO.<br />
<br />
Dans un premier temps, on détermine le nombre de sessions sur le disque avec la commande ''cdrdao disk-info --device y,z''.<br />
<br />
Ensuite, on cherche le début et la longueur de chaque session. Par exemple, supposons que le disque original soit constitué de deux sessions. On tape alors dans une console :<br />
<br />
  ''cdrdao read-toc --device y,z --session 1 session1.toc''<br />
<br />
avec ''session1.toc'' le nom du fichier qui sera créé, le paramètre ''--session 1'' permettant de lire les informations sur la première session (si l'on ne veut pas que ''cdrdao'' crée le fichier ''session.toc'' qui est inutile ici, il suffit d'entrer un nom de chemin inexistant (''cdrdao'' renvoie un message d'erreur mais affiche les informations nécessaires)). <br />Supposons que sous la colonne ''Start'', soit inscrit 00:00:00 et sous la colonne ''Length'' 03:00:06 (13506). Ceci signifie que la première session débute au bloc 0 et à une longueur de 13506 blocs ((3x60x75)+6). <br />On fait de même pour la deuxième session :<br />
<br />
  ''cdrdao read-toc --device y,z --session 2 session2.toc''<br />
<br />
Supposons que ''cdrdao'' renvoie un début de deuxième session au bloc 24906 et une longueur de 14568 blocs et une fin de piste en 39474 (la colonne ''Start='', et la ligne ''lout'') ce qui correspond également à la somme des deux premiers. <br />On peut alors savoir si les sessions ont été gravées en mode DAO ou en mode TAO en essayant de lire les deux derniers secteurs de chacune d'entre elles. Par exemple, pour la première session, on fera :<br />
<br />
  ''readcd dev=y,z sectors=13504-13506 f=result''<br />
<br />
Si le disque a été gravé en mode TAO, ''readcd'' va renvoyer un message d'erreur (effacer le fichier ''result'' dans le cas contraire). Il n'est peut être pas nécessaire de faire cela pour les autres sessions car elles ont probablement été créées en mode TAO. <br />On réalise ensuite les images des deux sessions à partir du disque original en supprimant le cas échéant les 2 blocs de fin (les blocs illisibles liés à la gravure en TAO) :<br />
<br />
  ''readcd dev=y,z sectors=0-13504 f=session1.raw''<br />  ''readcd dev=y,z sectors=24906-39472 f=session2.raw''<br />
<br />
On grave ensuite la première session avec ''cdrecord'' :<br />
<br />
  ''cdrecord -v -multi dev=y,z session1.raw''<br />
<br />
On peut ensuite vérifier, par exemple avec ''cdrdao'' que la première session gravée débute en 0 pour se terminer en 13506 et que la deuxième session débute en 24906 pour finir en 39474.<br />
<br />
<u>Note</u> : il est possible de graver la première session avec ''cdrdao'' mais il faut ensuite utiliser ''cdrecord'' pour les suivantes car ''cdrdao'' décale la suivante de deux secteurs (la deuxième session est alors illisibles car les liens entre les deux ne sont plus corrects). Par ailleurs, si l'on enregistre la première session avec ''cdrdao'', celle-ci sera enregistrée au format Mode 2, Forme 2 avec 2336 octets par secteur. La deuxième session, s'il s'agit de la dernière, sera en revanche enregistrée au format de données avec 2048 octets par secteurs. La première session doit alors être gravée avec ''cdrado'' avec l'option ''--multi'' mais la deuxième doit l'être avec ''cdrecord''.<br />
<br />
----<br />
<br />
== Copie de Cd audio ==<br />
<br />
La copie d'un disque audio peut se faire d'au moins trois façons: avec ''cdrdao'', en combinant ''cdda2wav'' et ''cdrecord'' ou encore en combinant ''cdparanoia'' et ''cdrecord''.<br />
<br />
=== Méthode 1 : ''cdrdao'' ===<br />
<br />
Ce logiciel permet de faire une copie directe du lecteur vers le graveur. Il faut que les deux soient reconnus comme des périphériques SCSI (par émulation ou non). Pour ce, si par exemple les deux derniers chiffres SCSI du lecteur sont 0,0 et les deux derniers du graveur 1,0, il suffit de faire :<br />
<br />
  ''cdrdao copy --source-device 0,0 --device 1,0 --on-the-fly''<br />
<br />
L'option ''--speed'' suivie de la vitesse permet de régler la vitesse de gravure.<br />
<br />
Pour faire une copie indirecte du graveur vers le graveur, il suffit de taper :<br />
<br />
  ''cdrdao copy --device y,z fichier.toc''<br />
<br />
Il faut impérativement préciser un nom de fichier (ici ''fichier.toc'', le nom peut être quelconque) dans lequel ''cdrdao'' va enregistrer des informations sur la Table des Matières (la TOC). <br />Le programme ''cdrdao'' va lire les pistes et créer une image dans le répertoire courant (nommée ''cddaxxx.bin'', ''xxx'' étant un nombre aléatoire). Pour conserver cette image, il faut utiliser l'option ''--keepimage''. <br />A la fin de la lecture, il demande d'insérer un disque et d'appuyer sur la touche Entrée. A priori, on peut ignorer les erreurs du type ''"ERROR: Cannot determine disk status - hit enter to try"'' ou encore ''"Cannot read CD text data - maybe not supported by drive"'' (dans ce dernier cas, c'est que le graveur ne peut pas lire les informations CD-Text qui contiennent le nom de l'artiste, le titre de l'album et le titre des pistes, ou que ces informations ne sont pas présentes sur le disque).<br />
<br />
Le fichier de TOC contient un certain nombre d'informations importantes. En voici un exemple pour les trois premières pistes d'un disque :<br />
<br />
  ''// Track 1''<br />  ''TRACK AUDIO''<br />  ''NO COPY''<br />  ''NO PRE_EMPHASIS''<br />  ''TWO_CHANNEL_AUDIO''<br />  ''SILENCE 00:00:32''<br />  ''FILE "data.wav" 0 04:04:46''<br />  ''START 00:00:32''<br />
<br />
  ''// Track 2''<br />  ''TRACK AUDIO''<br />  ''NO COPY''<br />  ''NO PRE_EMPHASIS''<br />  ''TWO_CHANNEL_AUDIO''<br />  ''FILE "data.wav" 04:04:46 03:03:68''<br />  ''START 00:02:42''<br />
<br />
  ''// Track 3''<br />  ''TRACK AUDIO''<br />  ''NO COPY''<br />  ''NO PRE_EMPHASIS''<br />  ''TWO_CHANNEL_AUDIO''<br />  ''FILE "data.wav" 07:08:39 04:20:50''<br />  ''START 00:02:06''<br />
<br />
Les durées sont exprimées au format ''mm:ss:bb'', avec ''mm'' le nombre de minutes, ''ss'' le nombre de secondes et ''bb'' le nombres de blocs ou secteurs. Une seconde audio représentant 75 blocs, ce dernier compteur va de 0 à 74 (à 75, on le met à 0 et on incrémente le compteur de secondes qui va de 0 à 59). <br />La ligne ''SILENCE 00:00:32'' signifie que la piste un débute par un silence de 32 secteurs (il s'agit d'un "pre-gap"). La ligne ''FILE "data.wav" 0 04:04:46'' indique que le début de la piste 1 est fixé à 0 et qu'elle à une longueur de 04:04:46. Enfin, la ligne ''START 00:00:32'' indique que le titre débute après 32 secteurs. <br />En fait, la piste est positionnée au secteur 0 du disque, le lecteur va lire depuis le début du disque et commencer à décompter le début du titre (de la chanson par exemple) à partir du secteur 32. Puis, le compteur va tourner pendant une durée de 04:04:46 avant de commencer le décompte de l'intervalle avant le deuxième titre. <br />Celui-ci a une durée de 00:02:46 comme indiqué sur la ligne ''START'' de la piste 2. Le titre dure lui 03:03:68. <br />Physiquement, la piste 1 commence au secteur 0 et à une longueur équivalente à une durée de 04:07:13 (04:04:46+00:02:42) ce qui correspond à 18538 secteurs (soit ((4x60)+07)x75+13) car l'intervalle avant la prochaine piste est inclut dedans. <br />La piste 1 débutant en 0, elle se termine au secteur 04:07:12 et la piste 2 débute au secteur 04:07:13. Elle a une longueur de 03:03:32 (03:03:68-00:02:42+00:02:06). La piste 3 commencera ainsi physiquement au secteur 07:10:45 (04:07:13+03:03:32).<br />
<br />
La ligne ''SILENCE 00:00:32'' aurait pu être omise. Dans ce cas, on aurait eu pour la piste 1 les lignes ''FILE "data.wav" 0 04:05:03'' et ''START 00:00:32'' et pour la piste 2 ''FILE "data.wav" 04:05:03 03:03:68'' et ''START 00:02:42''. <br />La piste 1 aurait toujours eu une longueur de 04:07:13 (04:05:03-00:00-32+00:02:42). La différence avec la version précédente est que les 32 secteurs de silence initial sont inclus dans le fichier ''data.wav''.<br />
<br />
On peut récupérer ces informations sur la TOC en utilisant la commande ''read-toc'' :<br />
<br />
  ''cdrdao read-toc --device y,z file.toc''<br />
<br />
qui va se contenter de créer le fichier ''file.toc''. <br />Si l'on ajoute l'option ''--fast-toc'', le fichier obtenu ne contient que la durée totale des pistes ainsi que leur secteur de début, les indications sur les intervalles entre pistes étant omises. Un disque copié avec cette méthode aura perdu ces informations.<br />
<br />
La commande ''show-toc'' permet elle d'afficher les informations contenues dans un fichier. Par exemple :<br />
<br />
  ''cdrdao show-toc file.toc ''| ''less''<br />
<br />
affichera notamment la durée des intervalles (pregap), le secteur de début de la piste et le secteur de fin sur le disque.<br />
<br />
Il est possible également d'enregistrer d'abord l'image sur le disque puis de la graver ensuite. On crée l'image par la commande :<br />
<br />
  ''cdrdao read-cd --device y,z file.toc''<br />
<br />
et on la grave ensuite par :<br />
<br />
  ''cdrdao write --device y,z file.toc''<br />
<br />
L'option ''--datafile'' suivie du nom à donner permet de donner un nom à l'image autre que le nom par défaut. <br />L'image qui est créée contient les pistes sous forme brute, c'est-à-dire le contenu des secteurs audio du secteur 0 au secteur de fin de disque, y compris les silences entre pistes. Elle sera multiple de 2352 puisque un secteur audio utilise les 2352 octets d'un secteur. En fait, si l'on fait la somme de la durée totale des pistes et qu'on les convertit en octets, on obtient la longueur du fichier image. Par exemple, si le disque précédent est limité au trois pistes alors, la piste 3 ayant une durée de 04:21:28, la durée totale de l'image est de 11:31:73 (04:07:13+03:03:32+04:21:28) ce qui correspond à 51898 secteurs. Ceci occupe 122064096 octets sur le disque (51898x2352). Dans les deux cas précédents, les 32 secteurs de silence de 32 secteurs au début du disque ne sont pas inclus dans l'image.<br />
<br />
Une dernière chose mérite d'être signalée. Comme le précise le manuel de ''cdrdao'', la copie effectuée sera plus ou moins exacte. Par exemple, avec certains graveurs, la durée physique des pistes est la même mais la durée du titre est augmentée d'un secteur, celui de l'intervalle étant réduit du même secteur. Ceci affecte seulement le moment où le lecteur indique la fin de la piste (il indique la fin de la piste un secteur plus tard) mais cela ne change rien à ce que l'on entend.<br />
<br />
=== Méthode 2 : ''cdda2wav'' et ''cdrecord'' ===<br />
<br />
La méthode consiste à extraire les pistes audio avec ''cdda2wav'' pour en faire des fichiers d'ondes (qui ont souvent l'extension ''.wav'') puis à les graver avec ''cdrecord'' . Si le lecteur audio correspond au fichier de périphérique <tt>/dev/hdc</tt>, on enregistre les pistes avec :<br />
<br />
  ''cdda2wav -v255 -B -D/dev/hdc''<br />
<br />
On grave ensuite les pistes par :<br />
<br />
  ''cdrecord -v -dao -useinfo dev=y,z audio_*.wav''<br />
<br />
Tout ceci mérite quelques explications. Commençons par ''cdrecord''.<br />
<br />
L'option ''-dao'' demande de graver le disque en mode Disc at Once, l'option ''-useinfo'' indique qu'il faut utiliser les fichiers ''inf'' créés par ''cdda2wav'' et l'argument ''audio_*.wav'' précise que les pistes à graver correspondent aux fichiers indiqués.<br />
<br />
En effet, ''cdda2wav'' sauvegarde les pistes dans des fichiers ''audio_xx.wav'' avec ''xx'' un nombre allant de ''01'' au nombre total de pistes sur le disque. <br />En ce qui concerne ce dernier, l'option ''-D'' sélectionne le lecteur sur ''/dev/hdc'' (il est également possible de sélectionner un périphérique SCSI, par exemple en entrant par exemple ''-D y,z''). <br />L'option ''-v255'' active le mode bavard au niveau maximal (pour les différents niveaux possibles, consulter la page de manuel, sachant qu'il faut additionner les chiffres correspondant à chaque niveau). Il faut l'activer au moins au niveau 4 pour que ''cdda2wav'' enregistrer les marques de fin de piste (pour les intervalles). Dans le cas contraire, la copie contiendra des pistes de longueur physique égale à celles de l'original mais tous les intervalles entre les pistes auront une longueur de 2 secondes (en fait 00:01:74) pour être conforme à la norme définie dans le Red Book qui définit les Cd audio. <br />L'option ''-B'' permet de créer un fichier ''.wav'' pour chaque piste. En l'absence de cette option, un seul fichier sera créé pour l'ensemble du disque et la copie ne contiendra qu'une seule piste. <br />Il existe un certain nombre d'options documentées dans la page de manuel ou dans la documentation de ''cdda2wav''. Par exemple, l'option ''-t2'' sauvegarde les pistes de la deuxième à la dernière. L'option ''-t2+4'' sauvegarde les pistes 2 à 4 et l'option ''-t2+2'' sauvegarde uniquement la piste 2. L'option ''-S'' suivie de la vitesse permet de sélectionner la vitesse du lecteur (ne pas dépasser la vitesse maximale indiquée par le constructeur pour éviter les erreurs de lecture). <br />L'option ''-J'' permet de créer uniquement les fichiers ''inf'' (faire par exemple ''cdda2wav -J -D/dev/hdc''). Par défaut, le mode bavard est activé pour sauvegarder les marques de fin de pistes. Il faut activer l'option ''-vX'' avec ''X<4'' si l'on ne veut pas les enregistrer. <br />Ces fichiers nommés par défaut ''audio_xx.inf'' ('' xx'' allant de ''01'' au nombre total de pistes) contiennent un certain nombre d'informations importantes comme le titre de l'album, le titre des pistes, le début de la piste (''"Trackstart"'') ou la longueur de la piste (''"Tracklength"''). Ces fichiers contiennent également une ligne ''"Index0"'' qui contient le début de l'intervalle entre pistes. Toutes les longueurs sont exprimées en blocs (ou secteurs). <br />Avec cette méthode, la copie peut être plus ou moins parfaite. Par exemple, avec certains graveurs, la durée des titres est supérieure de 8 secteurs à celle de l'originale et la longueur de l'intervalle réduite de 8 secteurs. Ceci ne change strictement à la durée totale des pistes mais affecte seulement les durées affichées par le lecteur.<br />
<br />
=== Méthode 3 : ''cdparanoia'' et ''cdrecord'' ===<br />
<br />
Cette méthode est identique à la précédente à la différence que l'on perd les informations sur les intervalles. <br />''cdparanoia'' a ceci de différent par rapport à ''cdda2wav'' qu'il permet de faire de la correction d'erreurs, ce qui peut être intéressant dans le cas d'un CD audio rayé. Si vous entendez des craquements dans les CD copiés avec ''cdda2wav'', essayez ''cdparanoia''. La contre-partie est un temps de copie des pistes audio qui peut être plus long.<br />
<br />
On lance ''cdparanoia'' pour sauvegarder les pistes par :<br />
<br />
  ''cdparanoia -v -B -d /dev/hdc''<br />
<br />
Ceci va créer un ensemble de fichiers nommés ''trackxx.cdda.wav'' avec ''xx'' un nombre compris entre ''01'' et le nombre total de pistes. Ces fichiers sont créés dans le répertoire courant. <br />L'option ''-v'' active le mode bavard, l'option ''-B'' permet de créer un fichier par piste (en son absence, un seul fichier ''wav'' est créé, correspondant à la durée totale du disque) et l'option ''-d'' permet de sélectionner le lecteur. <br />Il est possible que ''cdparanoia'' crée un fichier ''track00.cdda.wav''. Ce sera le cas avec l'exemple précédent du fait du silence de 32 secteurs avant le début réel de la piste 1. Il est préférable de le supprimer afin d'éviter d'avoir une piste vide au début du disque. De plus, si la durée de la piste est inférieure à 4 secondes (300 secteurs), il est fort possible que le graveur refuse de la graver et génère une erreur. <br />On les grave ensuite par :<br />
<br />
  ''cdrecord -v -dao dev=y,z track*.cdda.wav''<br />
<br />
Par défaut, si l'extension des fichiers est ''wav'' ou ''au'', ''cdrecord'' considère qu'il s'agit de fichiers audio et l'option ''-audio'' est activée par défaut. Il faut l'activer si l'extension des fichiers est différente. <br />Avec cette méthode, les intervalles entre les pistes sont tous égaux à 2 secondes (ce qui ne change rien à l'écoute du disque mais modifie seulement la façon dont le lecteur affiche les durées). Si l'on veut supprimer ces intervalles, il faut ajouter l'option ''defpregap=0'' . De façon générale, l'option ''defpregap'' indique l'intervalle entre toutes les pistes en secteurs (sans modifier le début de la première). Si l'on veut définir séparément chaque intervalle, il faut utiliser l'option ''pregap=#'' qui définit l'intervalle avant la prochaine piste exprimé en nombre de secteurs (par exemple ''cdrecord -v -dao dev=y,z track01.cdda.wav pregap=75 track02.cdda.wav pregap=150 track03.cdda.wav'' pour un intervalle de 1 seconde entre la première piste et la deuxième et un intervalle de 2 secondes entre la deuxième et la troisième).<br />
<br />
Le programme ''cdparanoia'' permet également de tester la capacité d'extraction du lecteur. Pour cela, il suffit de taper :<br />
<br />
  ''cdparanoia -vQ /dev/hdc''<br />
<br />
qui va afficher le message ''"Verifying drive can read CDDA..."'' puis, si l'extraction audio est possible, le message ''"Expected command set reads OK"'' et afficher la TOC. <br />Comme pour ''cdda2wav'', il existe un certain nombre d'autres options. Il est par exemple possible de n'extraire qu'une partie d'une piste. On peut également signaler l'option ''-pad'' qui complètera les pistes si leur longueur n'est pas multiple de 2352, évitant ainsi des erreurs de gravure (ce peut être le cas dans des cas autres que la copie, par exemple si les fichiers ont été obtenus par conversion à partir de fichiers ''mp3''). <br />Les fichiers d'ondes créés par ''cdda2wav'' ou par ''cdparanoia'' sont strictement identiques. Leur longueur est égale au nombre de blocs multiplié par 2352, auquel il faut ajouter 44 octets d'en-tête du fichier.<br />
<br />
Il est enfin possible de combiner les deux méthodes précédentes en enregistrant les pistes à partir de ''cdparanoia'', en récupérant les informations sur les marques de fin avec ''cdda2wav'' et en gravant les pistes avec ''cdrecord''. <br />Pour cela, on procède par exemple en trois étapes. <br />On crée les fichiers ''inf'' par :<br />
<br />
  ''cdda2wav -J -D /dev/hdc track''<br />
<br />
Le paramètre ''track'' permet de créer des fichiers nommés ''track_*.inf''. <br />On enregistre ensuite les pistes par :<br />
<br />
  ''cdparanoia -B -d /dev/hdc 1- wav''<br />
<br />
Ceci permet de créer des fichiers qui seront nommés ''track*.wav'' du fait de la présente du paramètre ''track'' . L'option ''1-'' est indispensable avec le paramètre ''wav'' , elle permet de sauvegarder toutes les pistes (de la 1 à la dernière). <br />Comme on veut utiliser les fichiers ''inf'', il faut renommer tous les fichiers ''track_*.inf'' en ''track*.inf''. <br />On utilise pour cela la commande suivante :<br />
<br />
  ''for i in *.inf ; do j=$(echo $i | tr -d '_') ; mv $i $j ; done''<br />
<br />
La commande ''tr -d '_''' permet de supprimer le caractère de soulignement. Si l'on a enregistré les pistes sous le nom ''track*.cdda.wav'' (l'option par défaut de ''cdparanoia'' ), il faut ensuite lancer la commande suivante :<br />
<br />
  ''for i in track??.inf ; do j=$echo( $i | tr -d '.inf').cdda.inf ; mv $i $j ; done''<br />
<br />
On grave ensuite les pistes par :<br />
<br />
  ''cdrecord -v -dao -useinfo dev=y,z track*.wav''<br />
<br />
----<br />
<br />
== Les CD mixtes ==<br />
<br />
Il existe certains disques qui mélangent données (notamment des fichiers video) et audio d'une façon particulière, c'est-à-dire sur une même première piste. Ainsi, sur un disque, ''cdrdao'' indique une première piste audio avec un début en 15:15:15. Le début de la piste est constitué de données lisibles avec ''dd'' ou avec ''readcd''. <br />La copie d'un tel disque avec ''cdrdao'' ne semble pas possible : les données sont illisibles et les pistes audio sont décalées (la piste 1 devient la piste 4 et les dernières pistes ne sont pas copiées). Ceci paraît normal dans la mesure où données et audio n'occupent pas le même espace sur un secteur. <br />Au demeurant, les données ont été enregistrées dans le format hybride ''hfs'', lisibles par un PC (ici Joliet) et par un Macintosh. <br />Le plus simple si l'on souhaite conserver les données est de créer un Cd-Extra contenant les pistes audio dans une première session et les données dans une deuxième. Ainsi, seules les pistes audio seront affichées par le lecteur audio mais la piste de données sera accessible par un ordinateur.<br />
<br />
=== Création du Cd-Extra ===<br />
<br />
Pour cela, le plus simple est d'enregistrer les pistes audio avec ''cdda2wav'' ou ''cdparanoia'' (ou de combiner les deux) et de les graver avec ''cdrecord'' en mode multissession (on n'utilise pas ''cdrdao'' car il faut sauvegarder seulement les pistes audio et pas les données situées au début du disque). Par exemple, si les pistes ont été enregistrées avec ''cdda2wav'' , on fera :<br />
<br />
  ''cdrecord -v -dao -multi dev=0,0 audio_*.wav''<br />
<br />
Il faut ensuite récupérer les informations sur le début de la première session et le début de la prochaine sur le disque par la commande ''cdrecord dev=y,z -msinfo'' (la copie étant dans le graveur). Ceci va renvoyer deux nombres que l'on appelera ''n1'' et ''n2''. Ensuite, pour faire l'image des données, le plus simple est ensuite de monter le disque au format ''hfs'' pour faire une image des données (il faut que l'option ''hfs'' soit activée dans le noyau, il s'agit de la rubrique ''File systems'', ''Apple Macintosh file system support''). <br />Pour être le plus fidèle possible, il faut même cacher les fichiers Apple en mode Joliet. Pour cela, le plus simple est d'utiliser l'option ''hide-joliet-list'' de ''mkisofs''. On crée alors un fichier contenant la liste des fichiers et répertoires et supprimer les fichiers accessibles en Joliet afin qu'il ne reste que les fichiers Apple (et inversement certainement pour les fichiers Joliet à masquer en hfs). <br />Le disque original sera monté par la commande ''mount -t hsf /dev/hdc /cdrom'' (si le périphérique de lecture est lié à ''/dev/hdc'' et le répertoire de montage est ''/cdrom''. <br />On crée ensuite la liste dans le répertoire courant par ''ls /cdrom > liste'', ce qui génère le fichier nommé ''liste'' que l'on édite pour effacer les fichiers accessibles uniquement en Joliet. <br />On peut alors en faire une image (nommée ''image.raw'' dans le répertoire courant) par la commande ''mkisofs -hfs -J -hide-joliet-list liste -o image.raw -C n1,n2 /cdrom''. Il est inutile d'utiliser l'option ''-M'' car il ne faut pas lier les deux sessions (la deuxième n'a pas besoin d'accéder à la TOC de la première). <br />On grave ensuite la deuxième session normalement avec ''cdrecord'' (''cdrecord -v dev=y,z image.raw'').<br />
<br />
=== Copie d'un Cd-Extra ===<br />
<br />
La copie d'un tel disque et d'un Cd-Extra en général peut se faire de plusieurs manières. <br />Une première méthode consiste à procéder comme ci-dessus en enregistrant les pistes audio avec ''cdda2wav'' ou ''cdparanoia'' et à en faire une première session pour à refaire une image de la session de données pour en refaire une deuxième session. <br />Une autre méthode consiste à enregistrer chaque session avec ''cdrdao'' et à les graver ensuite (on utilise ''cdrdao'' pour garder la taille de la première session). <br />Pour sauvegarder la première session, on fera par exemple :<br />
<br />
  ''cdrdao read-cd --device y,z --session 1 --datafile session1.bin session1.toc''<br />
<br />
qui va générer une image nommée ''session1.bin'' et un fichier de la Toc nommé ''session1.toc''. On sauvegarde ensuite la deuxième session par :<br />
<br />
  ''cdrdao read-cd --device y,z --session 2 --datafile session2.bin session2.toc''<br />
<br />
On définit ici les noms des images car en l'absence de cette option ''cdrdao'' va utiliser le nom ''data.bin'' et la deuxième image viendra écraser la première (ou alors, il faut créer la première image et l'enregistrer et créer ensuite la deuxième).<br />
<br />
On peut alors passer à la gravure des deux sessions. <br />On grave la première avec ''cdrdao'' car il s'agit de pistes audio (''cdrecord'' ne créerait qu'une seule piste). Il faut toutefois modifier légèrement le fichier ''session1.toc'' du fait de la multisession. Pour cela, il faut éditer ce fichier et remplacer la première ligne ''CD_DA'' par ''CD_ROM_XA''. On grave alors la première session par :<br />
<br />
  ''cdrdao write --device y,z --multi session1.toc''<br />
<br />
Pour la deuxième session, il faut utiliser ''cdrecord''. En effet, l'image de la deuxième session contenant l'adresse de fin de la première et l'adresse du début de cette deuxième session, il faut impérativement que celle-ci soit située exactement au même endroit sur le disque. Or, ''cdrdao'' grave cette deuxième session avec un décalage de 2 secteurs ce qui rend le disque illisible. <br />On utilise donc ''cdrecord'' qui ne produit pas ce décalage :<br />
<br />
  ''cdrecord -v dev=y,z session2.bin''<br />
<br />
Il est possible de recréer la première session avec ''cdda2wav'' (ou ''cdparanoia'') et ''cdrecord'' mais il faut s'assurer que cette session aura exactement la même taille que l'orginal car il faut que la deuxième soit située au même endroit. En effet, la deuxième session contient son adresse sur le disque et il faut donc que la copie soit située au même endroit.<br />
<br />
----<br />
<br />
== Graver une image .bin/.cue ==<br />
<br />
''(par Jice)''<br />Un logiciel windows bien connu produit ce genre de fichiers en tant qu'images de CD. Le contenu du CD est stocké dans un (gros) fichier <tt>le_cd.bin</tt>, tandis que la table des matières du CD est dans un fichier du même nom, <tt>le_cd.cue</tt>. On trouve fréquemment ce type de fichiers sur internet.<br />
<br />
Sous Linux, vous pouvez graver cette image de cd, avec ''cdrdao''. Il suffit simplement de remplacer le fichier <tt>.toc</tt> par le fichier <tt>.cue</tt>, car ''cdrdao'' comprend aussi la syntaxe des fichiers <tt>.cue</tt>. Par exemple :<br />
<br />
  ''cdrdao write --device 1,0,0 --driver generic-mmc /home/jice/'''le_cd.cue'''''<br />
<br />
<u>Note 1</u> : le seul problème que vous puissiez avoir dans ce cas provient des noms de fichiers contenant des espaces. Si vos fichiers se nomment "<tt>le cd.bin</tt>" et "<tt>le cd.cue</tt>", renommez-les respectivement "<tt>le_cd.bin</tt>" et "<tt>le_cd.cue</tt>", et éditez le fichier <tt>.cue</tt>, afin de mettre à jour la ligne qui contient le nom du fichier .bin avec le nouveau nom.<br />
<br />
<u>Note 2</u> : cdrdao ne sait pas produire de fichiers <tt>.cue</tt> à partir d'un CD. Je ne sais pas actuellement comment faire cela sous Linux.<br />
<br />
----<br />
<br />
== Conclusion ==<br />
<br />
''(par Jice)''<br />Cet article vous permettra d'utiliser au mieux votre graveur de CD. Pour de nombreuses opérations, vous pouvez toutefois utiliser les interfaces graphiques, telles que ''xcdroast'', ''gcombust'' ou autres (voir la [../logi/?aff_rub=4 logithèque]), qui utilisent elles-même les programmes présentés ici, mais simplifient le processus (tout en n'offrant pas autant de flexibilité que la ligne de commande).<br />
<br />
Si vous souhaitez voir ici développées d'autres utilisations du graveur, merci de [mailto:taz98@altern.org me le signaler]. Je pense écrire des parties sur :<br />
<br />
* graver un CD audio depuis des MP3,<br />
* graver un VCD ou SVCD à partir de fichiers MPEG 1 ou 2 (utiliser les logiciels graphiques Arson ou Qvcd, et en ligne de commande vcdimager ; voir la [../logi/index.php3?aff_rub=4 logithèque]),<br />
* etc.<br />
<br />
Je manque de temps pour écrire ces parties, aussi si vous vous en sentez la compétence, vous pouvez [mailto:taz98 chez altern point org me faire parvenir] vos contributions. Merci d'avance.<br />
<br />
<div class="merci">Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Pascal Cussy le 12/03/2002.</div><br />
<br />
= Copyright =<br />
Copyright &copy; 12/03/2002, Pascal Cussy<br />
{{CC-BY-NC-SA}}<br />
<br />
<br />
=Autres ressources=<br />
* Sur Léa : la [../logi/?aff_rub=4 logithèque, sous-partie gravure] <br />
* Le [http://www.freenix.org/unix/linux/HOWTO/CD-Writing-HOWTO.html CD-Writing HOWTO] <br />
* La [http://www-106.ibm.com/developerworks/linux/library/l-cdburn.html?ca=degr-L2%205burncd documentation d'IBM]</div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=Lire_des_vid%C3%A9os&diff=9171
Lire des vidéos
2005-10-14T18:00:52Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div>[[Category:Créer ses CD et DVD]]<br />
= DiVX ;-) et ses amis =<br />
<br />
<div class="leatitre">DiVX ;-) et ses amis </div><div class="leapar">[mailto:emman@agat.net BRARD Emmanuel<br /> ] ''Révision par Jice <jice chez lea-linux point org>''<br /> </div><div class="leadesc">Installer le nécessaire pour lire les videos au format divx ;-), mpeg...<br /> Afin d'extraire un DVD et de le coder en Divx sous Linux, je vous conseille la lecture de [http://www.bunkus.org/dvdripping4linux/fr/single/index.html cet excellent article].</div><br />
----<br />
<br />
Et bien oui ! <br /> Linux est aussi un média OS : il est tout à fait possible de lire des '''divx''', des fichiers '''avi''', des fichiers '''mpeg''' , etc. sous linux. L'avantage majeur, encore une fois, de linux ; c'est qu'il existe plusieurs solutions pour faire ceci.<br /> Ici je vais détailler l'installation et l'optimisation des trois meilleurs (à mon avis) players :<br />
<br />
* [http://mplayer.sourceforge.net MPlayer] <br />
* [http://avifile.sourceforge.net aviplay*] <br />
* [http://xine.sourceforge.net Xine]<br /> <br />
<br />
* : Aviplay est le player livré par défaut dans l'archive d'''' avifile'''.<br />
<br />
Il existe aussi '''XMPS''' - qui malheureusement à mon avis n'est pas encore assez développé pour être correctement utilisable - et encore d'autres players.<br />
<br />
Les choses ayant bien évolué depuis le 27 octobre 2001 (date du premier article), il est maintenant possible de voir ses divx avec une "petite configuration", par exemple un P2 350, 128 Mo de RAM, et une carte graphique moyenne gamme (ex : Voodoo Banshee). <br /> Pour le k6 200, et une petite carte (ex : ATI Rage 2C), ça arrive, patience ;) <br /> Â <br />
<br />
<div class="warning">Avertissement :<br /> Au même titre que la copie de CD audio, la copie de DVD (en DIVX ;-) ou tout autre format) n'est autorisée par la loi que pour l'utilisation privée du copiste. <br /> La loi n'autorise en aucun cas le libre téléchargement de films codés en DIVX (ou autre) sur Internet.</div><br />
<br />
== Présentation ==<br />
<br />
Commençons d'abord par une description de ces trois lecteurs, avec une petite comparaison :<br />
<br />
=== Aviplay ===<br />
<br />
Aviplay est un lecteur extrêmement puissant. Il possède une interface graphique écrite en QT2 (la librairie graphique de KDE), vous devez donc installer ces librairies si ce n'est pas déjà fait.<br /> Il est possible de l'optimiser pour le processeur, pour la librairies SDL installée, ainsi que pour les cartes graphiques Matrox G400.<br /> Il sait utiliser MTRR.<br /> Toute la configuration du lecteur se fait dans un boîte de dialogue à l'intérieur de l'interface graphique.<br /> Aviplay peut volontairement faire avancer la bande son plus ou moins vite, afin de rester synchronisé avec les images.<br />
<br />
=== MPlayer ===<br />
<br />
Ce lecteur est tout simplement génial, aussi puissant que l'autre, il possède lui aussi une interface graphique thèmable !<br /> Il est optimisable pour les jeux d'instructions des processeurs (MMX, SSE, 3DNow...), pour la librairie SDL installée, et comme aviplay utilise MTRR.<br /> Sa configuration se fait dans un fichier de configuration ou directement en ligne de commande.<br /> A l'instar de Aviplay, MPlayer peut utiliser plusieurs drivers de sortie comme le DGA, SDL, X11, et même le frame buffer.<br /> Il peut comme Aviplay être optimisé pour un certain nombre de cartes comme par exemple la 3dfx Banshee et Voodoo 3000, les Matrox G200, G400, et les cartes NVidia.<br /> Il support aussi l'utilisation des sorties TV.<br /> MPlayer sait sauter des ''frames'' (images) du film afin de rester synchronisé avec le son.<br /> Il peut aussi changer sa priorité avec l' option -auto.<br />
<br />
=== Xine<br /> ===<br />
<br />
''(rédigé par Jice) ''Xine est aujourd'hui arrivé au même niveau technique que ses concurrents, et possède une bonne interface graphique que je trouve plus intuitive que celle de mplayer. Il est très simple à installer, léger et performant ; configurable en mode graphique ou en ligne de commande, et avec les plugins d5d j'arrive à lire tous les DVD ; bien sûr, le Divx ;-) est bien supporté. Après avoir activé la sortie Xv (ajouter "-V Xv" à la ligne de commande), la lecture a été parfaite et ne consomme pas beaucoup de CPU.<br /><br />
<br />
=== Conclusion ===<br />
<br />
Ces deux visionneurs sont très similaires, et sont aussi performants l'un que l'autre. <br />''Mplayer'' peut utiliser plusieurs drivers de sortie.<br />''Aviplay'' cherche à toujours avoir une bonne qualité d'image.<br />''Xine'' est équivalent à Mplayer, et très simple à installer.<br /> Ce sera donc encore une fois à l'utilisateur de choisir. Personnellement je préfère garder les deux : si l'un ne lit pas correctement un film, j'essaie avec l'autre. De plus, mplayer sait se lancer sans interface graphique : c'est un plus pour [../trucs/?aff_item=164 écouter les radios en ligne au format Windows média player] :-)<br /> Précision : Xine, contrairement à Mplayer sait lire les menus DVD Â <br />
<br />
== Pré-requis ==<br />
<br />
Vous allez avoir besoin d'un certain nombre de librairies pour pouvoir utiliser ces players, elles devraient normalement être disponibles sur le CD d'installation de votre distribution, ou sur [http://rpmfind.net RPMfind.net] pour les <tt>rpm</tt>, et sur les mirroirs Debian pour les <tt>.deb</tt> .<br /> Pour Mandrake 8.2 et supérieures, nous vous conseillons d'installer la source urpmi du '''Penguin Liberation Front''' ainsi qu'ils l'expliquent sur [http://plf.zarb.org leur page d'accueil] , l'installation de mplayer, aviplay ou xine (y compris les plugins pour lire les Divx ;-) et les DVD cryptés) est ensuite immédiate : <tt>urpmi mplayer</tt> ou <tt>urpmi d5d</tt> par exemple suffisent.<br />
<br />
'''Attention''' : pour Mplayer, les utilisateurs de ''Mandrake'' 8.x et de ''Redhat ''7.x doivent changer leur version du compilateur GCC qui est en 2.96 pour une version antérieur ou suppérieur (bien qu'il soit conseillé de ne pas utiliser les versions 3.x).<br />
<br />
Vous devez donc avoir sur votre machine :<br />
<br />
* binutils<br />
* '''gcc : version de 2.95.2 à 2.95.4'''<br />
* XFree86, toujours la dernière version possible (sauf vielles cartes vidéo)<br />
* make<br />
* SDL (1.2.x, recommandée)<br />
* Win32 codecs (disponible sur le site de MPlayer et d'avifile)<br />
* QT 2 et QT2-devel '''(seulement pour aviplay)'''<br />
* Setcd, seulement pour les lecteurs de cdrom rapides (à partir de 32x)<br />
<br />
<u>Note de Jicé</u> : pour savoir si un logiciel est installé sur votre système, avec rpm essayez la commande "rpm -qa | grep '' le_logiciel''" (voir l'[rpm.php3 article sur rpm] ). Pour les distributions basées sur d'autres types de paquetages (.deb, .tgz), vous devez avoir une commande équivalente.<br />
<br />
Vous pouvez avoir besoin de librairies spécifiques si vous voulez optimiser Mplayer ou Avifile pour votre carte, ou pour la capture par video4linux. <br /> Je vous conseille donc d'aller sur leur site respectif pour avoir la liste complète. <br /> Â <br />
<br />
== Installation ==<br />
<br />
Pour les distributions Mandrake 8.2 et supérieures, le plus simple est d'utiliser la base urpmi du PLF (voir plus haut), qui dispose des logiciels, des codecs, des plugins prêts à installer.<br /><br />
<br />
=== Installation des codecs ===<br />
<br />
(les codecs sont disponibles sur les sites des players)<br />
<br />
Il suffit de décompresser l'archive <tt>win32codecs.zip</tt> et de copier tous les fichiers dans le nouveau repertoire <tt>/usr/lib/win32/</tt> . <br /> Pour ce qui est de DivX4linux, de même, décompresser l'archive puis copier le fichier <tt>libdivxdecore.so.0.0.0</tt> dans <tt>/usr/local/lib</tt> puis créer les liens dans ce répertoire : <tt>libdivxdecore.so.0</tt> et <tt>libdivxdecore.so</tt>. <br /> Puis taper <tt>ldconfig</tt> pour faire prendre an compte la nouvelle librairie au système.<br />
<br />
=== Installation des players ===<br />
<br />
<u>Pour installer les players</u>, il suffit de les compiler :<br />
<br />
# Décompressez l'archive,<br />
# lancez <tt>./configure</tt> dans le nouveau répertoire obtenu,<br />
# tapez <tt>make</tt> pour le compiler (créer le binaire),<br />
# puis tapez <tt>make install</tt>, pour l'installer sur le système.<br />
<br />
==== MPlayer ====<br />
<br />
Si vous êtes sous Mandrake et que vous ne voulez pas toucher à gcc utiliser plutôt <tt>./configure --disable-gcc-checking</tt><br /> Pour utiliser l'interface graphique vous devez rajouter <tt>./configure ''' --enable-new-gui'''</tt><br /> Si vous avez les connaissances suffisantes, vous pouvez encore plus optimiser le binaire pour le processeur en éditant le fichier Makefile et en mettant les nouveaux tags de compilation.<br />
<br />
Vous pouvez désormais utiliser les librairies <tt>divx4linux</tt> ; il suffit de télécharger l'archive et de lancer le script <tt>install.sh</tt><br /> MPlayer trouvera ces librairies lors de sa compilation, pendant l'éxécution du script <tt>./configure</tt><br />'''Attention''', ses librairies ne sont pas libres : le code source n'est pas disponible (''closed-source'') !<br />
<br />
Vous pouvez aussi utiliser les librairies fournies par le projet <tt>ffmpeg</tt> . <br /> Mais ici, une fois son archive décompressée, il faut copier le repertoire <u>libavcodec</u> dans l'arbre de MPlayer : <br /><tt>cp -rf /app/ffmpeg/libavcodec /app/MPlayer-0.60pre2/</tt><br /> Comme pour la librairie <tt>divx4linux</tt>, MPlayer les trouvera lors de l' éxécution du <tt>./configure</tt><br />
<br />
==== Aviplay ====<br />
<br />
Pour celui-ci, rien de particulier, sinon que dans le cas d'une distribution SuSe vous devrez sûrement lui dire où se trouvent les librairies QT (c'est expliqué dans le fichier INSTALL).<br />
<br />
==== Xine ====<br />
<br />
Si vous souhaitez le compiler, il n'y a rien de spécial. Récupérez les fichiers source xine-lib et xine-ui, ainsi que les sources des plugins, et pour chacun, un simple <tt>./configure ; make ; make install</tt> est suffisant. Vous pouvez activer plus ou moins d'options via le ./configure, tapez ./configure --help pour les connaître.<br />
<br />
<u>Dans tous les cas : n'oubliez pas de lire les fichiers README et INSTALL</u> !!!<br /><br /><br />
<br />
==== Les librairies ====<br />
<br />
Je vous recommande nettement d'installer la librairie <tt>ffmpeg</tt>, qui offre la meilleure qualité de lecture. <br /> Cette librairie est dite plus performante que la librairie propriétaire <tt>divx4linux</tt> par l'équipe de MPlayer. <br /> N'oubliez pas que ce sont ces librairies qui permettent aux logiciels de lire les différents formats audio/vidéo, c'est pourquoi vous devez, comme expliqué les haut, les compiler/installer. <br /> Divx4linux marche aussi bien avec MPlayer qu'aviplay, par contre je n'ai pas testé ffmpeg avec aviplay. <br /> Â <br />
<br />
== Utilisation ==<br />
<br />
=== Aviplay ===<br />
<br />
Pour pouvoir lancer une vidéo avec aviplay, il vous suffit de taper : <tt>aviplay</tt>. <br /> Une fenêtre s'ouvre et vous propose de choisir un fichier. <br /> La configuration se fait en appuyant sur "?" puis sur "Config" :<br />
<br />
* '''Vidéo'''<br /> Ici seront placées les options pour l'accélération vidéo, en général dans le cas d'un PC minimum (pour la lecture de divx), c'est à dire un K6-200 34mo de ram, il faut tout cocher.<br />
* '''Audio'''<br /> Rien à mettre ici de plus que ce qui y est déjà.<br />
* ...<br />
<br />
La conception d'aviplay est faite pour que vous puissiez directement lire vos fichiers, sans rien configurer, une option est pourtant à mon avis utile :<br />
<br />
* '''Sync'''<br /> C'est avec cette option que l'on va pouvoir essayer de garder la synchronisation. <br /> Il suffit de placer audio/vidéo synchronisation, vers la gauche si l'image est le son est "en avance" , et inversement à droite s'il est "en retard".<br />
<br />
=== MPlayer ===<br />
<br />
Pour celui ci, il y a beaucoup plus d'option, déjà avec l'option "-vo" on peut choisir son driver de sortie parmi :<br />
<br />
* tdfxfb, le support frame buffer pour les cartes 3dfx citées au début du document<br />
* xv<br />
* x11, en mode fenêtre à utiliser avec sdl : "-vo sdl:x11"<br />
* gl, utilisation de l'OpenGl<br />
* dga, utilisation du DGA (Direct Graphic Access) vous devez posséder les droits root<br />
* sdl<br />
* fbdev, utilisation du frame buffer standard<br />
* png<br />
* null Null video output<br />
<br />
<u>Avec l'option -vc" on peut utiliser un codec particulier pour un driver</u> :<br />
<br />
* odivx (OpenDIVX) , plus rapide, de meilleur qualité<br />
* divx4, (OpenDIVX/DIVX4) peut être préférable au précédent<br />
<br />
On peut aussi essayer de grader la synchronisation avec l'option "-framedump", MPlayer sautera des frames du film pour garder le son synchro.<br />
<br />
On indique à MPlayer d'utiliser XFree86 et le getmodeline pour changer de résolution avec "-vm", ce qui permet d'avoir entre autres des résolutions non indiquées dans le fichier de configuration d'XFree86.<br />
<br />
<u>Par exemple</u> : <br />'''mplayer -framedump -vm -vo sdl /mnt/cdrom/Le\ pacte\ des\ loups\ -\ Divx\ Francais\ -\ SAVUKA\'S\ BOARD\ -\ CD1.avi'''<br />
<br />
Si vous voulez utiliser l'interface graphique il suffit d'ajouter "-gui".<br />
<br />
Mplayer sait également effectuer sa sortie audio sur les démons de son de KDE (arts) ou Gnome (esd) (ces démons permettent de mixer plusieurs sons qui peuvent ainsi être joués simultanément). Il suffit d'ajouter l'option <tt>-ao arts</tt> ou <tt>-ao esd</tt> à la ligne de commandes. Pour connaître les possibilités de cette option, ajouter <tt>-ao help</tt>.<br />
<br />
=== Xine ===<br />
<br />
Xine dispose également de nombreuses options, que vous pouvez régler soit en mode graphique (cliquez sur la petite clef sur l'interface de contrôle) soit en ligne de commande.<br /> Une particularité que je trouve excellente de Xine est de se rappeler les options que vous avez passées sur la ligne de commande. Par exemple, pour lui dire d'utiliser la sortie video Xv, vous tapez une première fois xine -V Xv ; les fois suivantes, il ne sera plus nécessaire d'ajouter l'option à la ligne de commande !<br />
<br />
Le plus simple est de lancer <tt>xine</tt> sans arguments, tout peut ensuite se jouer à la souris (même utiliser le glisser déposer pour lancer un fichier !). Ou vous pouvez taper <tt>xine mon_divx.avi</tt> et le tour est joué.<br />
<br />
Xine sait utiliser les démons de son de KDE (arts) ou Gnome (esd). Pour ce faire, utilisez une fois l'option de ligne de commande <tt>-A arts</tt> ou <tt>-A esd</tt>.<br /><br />
<br />
<tt>xine --help</tt> vous donnera de plus amples informations sur toutes les options disponibles, mais explorez aussi son interface graphique.<br /><br />
<br />
=== Optimisations ===<br />
<br />
<u>Optimisation du lecteur cdrom</u><nowiki>: </nowiki><br /> Les lecteurs rapides peuvent se mettre "en attente" pendant la lecture, le problème est qu'en général ils sont longs à se remettre en service. <br /> Ils peuvent aussi tout simplement vouloir changer leur vitesse de rotation, ce qui pendant quelques secondes va geller le film. <br /> Pour éviter ceci on peut utiliser un petit programme qui permet de "fixer" la vitesse du lecteur, il s'agit de '''setcd''' (setcdrom) disponible par un recherche sur [http://freshmeat.net Freshmeat] .<br />
<br />
<u>Optimisation de Xfree 3.3.6/4.x et mise en place du MTRR (XF3.3.6)</u> : <br /> Pour XFree86 3.3.6 par grand chose à dire, le DGA (Direct Graphics Access) est déjà prêt. <br /> Il faut juste rajouter des résolutions '''(et les modelines correspondantes)''' pour pouvoir changer de résolution.<br />
<br />
Pour XFree86 4.x vous devez seulement vérifier que le DRI (Direct Rendering Interface), le GLX (seulement pour MPlayer et l'option -vo gl), et surtout le DGA ( option -vo dga, ou -vo sdl:dga) sont actifs, car XF4.x peut changer tout seul de résolution même si elles ne sont pas déclarées.<br />
<br />
Dans le fichier <tt>/etc/X11/XF86Config*</tt> : <br /> Â <br />
<br />
<center><br />
<br />
{|<br />
! XFree86 4.x<br />
| Â Â Â <br />
! XFree86 3.3.6<br />
|- valign="top"<br />
|<br />
Section "Module" <br /> Load "dbe" <br />'''Load "glx"'''<br />'''Load "dri"Â '''<br /> SubSection "extmod" <br />'''<nowiki>#Option "omit xfree86-dga"Â </nowiki>'''<br /> # ici le DGA sera activé !!!!!!!!! <br /> EndSubSection <br /> EndSection <br />
<br />
Section "DRI" <br /> Mode 0666 <br /> EndSection<br />
| <br /><br />
| ... <br /> Subsection "Display" <br /> Depth 16 # 16 ou 32 selon la puissance de votre carte <br /> Modes "800x600" "640x480" '''"720x480"'''<br /> ViewPort 0 0 <br /> EndSubsection<br />
|}<br />
<br />
</center><br />
<br />
<u>Pour le MTRR et XFree 3.3.6 (le 4 le fait tout seul)</u> : <br /> Faites : <br /> Soit "<tt>cat /proc/pci</tt>" ou "<tt>lspci</tt>" <br /> ex : <br /><br />
<br />
----<br />
<br />
01:00.0 <br /> VGA compatible controller: Matrox Graphics, Inc.: Unknown device 0525 <br /> Memory at '''d8000000''' (32-bit, prefetchable) <br /><br />
<br />
----<br />
<br />
Ensuite, il suffit de remettre l'adresse et le type de la mémoire dans <tt>/proc/mtrr</tt> : <br /> [emman@funky emman] % echo "base='''0xd8000000'''<u>size=0x2000000</u> type=write-combining" >| /proc/mtrr <br /> Â <br />
<br />
{|<br />
! Correspondance mémoire<br />
|-<br />
| 1 MB<br />
| 0x100000<br />
|-<br />
| 2 MB<br />
| 0x200000<br />
|-<br />
| 4 MB<br />
| 0x400000<br />
|-<br />
| 8 MB<br />
| 0x800000<br />
|-<br />
| 16 MB<br />
| 0x1000000<br />
|-<br />
| 32 MB<br />
| 0x2000000<br />
|}<br />
<br />
Vous pouvez ensuite vérifier : <br /> ex : <br /> [emman@funky emman] % cat /proc/mtrr <br /> reg00: base=0xe4000000 (3648MB), size= 16MB: write-combining, count=9 <br /> reg01: base='''0xd8000000''' (3456MB), size= 128MB: write-combining, count=1 <br /> Â <br />
<br />
<u>FFMPEG et MPlayer</u><br /> Il est conseillé pour celui-ci de forcer MPlayer à utiliser cette librairie en éditant le fichier <tt>~/.mplayer/codecs.conf</tt><br /> Vous devez supprimer tout ce qui concerne <tt>ffmpeg12</tt> : <br /> ... <br /><tt>videocodec ffmpeg12</tt><br /><tt>info "FFmpeg-1"</tt><br /><tt>status working</tt><br /><tt>format 0x10000001 ; mpeg 1</tt><br /><tt>format 0x10000002 ; mpeg 2</tt><br /><tt>fourcc mpg1,mpg2</tt><br /><tt>driver ffmpeg</tt><br /><tt>dll "mpegvideo"</tt><br /><tt>out YV12</tt><br /> ...<br />
<br />
== Conclusion ==<br />
<br />
Grâce aux travaux des différentes équipes : MPlayer, Xine, ffmpeg, , win32codecs... il est maintenant possible de visionner la plupart des Divx ;-) avec au minimum un Pentium II (ou équivalent) à 350Mhz, 128 Mo de Ram, et une carte video qui possède 16 mo, et ceci sans utiliser le "''framedump''" (i.e. le saut d'images).<br />
<br />
Il faut aussi souligner qu'il existe sous Linux de nombreuses optimisations offertes par exemple par le processeur (jeux d'instructions MMX, SSE, 3DNOW), par XFree (DGA, DRI, GLX, MTRR), et par les librairies (SDL) qui pour une meilleure qualité doivent être compilées.<br />
<br />
Pour utiliser corectement le visionneur de votre choix, n'hésitez pas à aller sur son site, et à bien lire sa doc ! <br /><br />
<br />
(c) 2001-2002 BRARD Emmanuel, emman@agat.net  - 2002 Jean-Christophe Jice Cardot, jice chez lea-linux point org<br /> Ce document est sous license GNU FDL.<br /><br />
<br />
<div class="merci">Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par BRARD Emmanuel le 20/10/2001.</div><br />
<br />
= Copyright =<br />
Copyright &copy; 20/10/2001, BRARD Emmanuel<br />
{{FDL}}<br />
<br />
<br />
=Autres ressources=<br />
* [http://mplayer.sourceforge.net MPlayer]<br />
* [http://avifile.sourceforge.net aviplay]<br />
* [http://xine.sourceforge.net Xine]<br />
* Encoder en Divx ;-) sous Linux :<br />
**Â avec [http://212.68.196.9/eclipse/linux.htm EclipseDVD],<br />
** ou cet [http://www.bunkus.org/dvdripping4linux/fr/single/index.html excellent article].<br />
* [http://plf.zarb.org Des rpm pour Mandrake] sur le Penguin Liberation Front<br />
* [http://lis.snv.jussieu.fr/~rousse/linux/transcode.html Transcode, le couteau suisse de la vidéo], par Guillaume Rousse</div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=RPM&diff=9170
RPM
2005-10-14T18:00:50Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div>[[Category:Gérer ses logiciels]]<br />
= RPM (RedHat Package Manager), URPM (User RPM) et apt-get (User RPM) =<br />
<br />
<div class="leatitre">RPM (RedHat Package Manager), URPM (User RPM) et apt-get (User RPM)</div><div class="leapar">par Jean-Christophe 'Jice' Cardot </div><div class="leapar">révision par Jean-Marc Lichtle, puis Jice et Anne, puis Jean-Thomas MUYL (maston28)</div><div class="leadesc">Installer des programmes sous Linux est très simple quand on utilise les bons outils...<br /> </div><br />
<br />
Ce document ne vise pas à remplacer la page de man de RPM, mais plutôt de donner une courte référence des commandes les plus utiles pour gérer vos paquetages à ce format.<br />
<br />
== Introduction ==<br />
<br />
Le format RPM (RedHat Package Manager), a été, comme son nom l'indique, créé à l'origine pour la distribution RedHat. Depuis, de nombreuses distributions l'ont utilisé, on peut citer par exemple Mandriva (ex Mandrake) ou SuSe. D'autres formats de packages dans le monde Linux sont DEB (pour Debian) et TGZ (pour Slackware).<br /><br />'''Qu'est-ce qu'un package ?''' C'est un fichier (une archive, un peu comme un fichier .tar ou .zip) qui contient tous les fichiers appartenant à une application, une bibliothèque, etc. ainsi que des scripts de contrôle qui sont exécutés lors de l'installation ou de la désinstallation de l'application. Ce fichier contient également toutes les dépendances à d'autres applications, bibliothèques, etc.<br /><u>Note</u> : on parle indifféremment de package, paquetage ou même paquet pour désigner le fichier qui contient l'ensemble des fichiers d'un programme (le fichier rpm lui-même)<br /><br />
<br />
Il existe de nombreux utilitaires graphiques tels que Kpackage, GnoRPM, Midnight Commander, etc. qui permettent d'installer et de gérer les packages RPM. L'installation depuis la ligne de commande reste toutefois la solution la plus rapide et la plus efficace pour ce travail.<br />
<br />
La plus grande partie des commandes décrites peuvent être exécutée par un utilisateur lambda. Toutefois les commandes qui intallent, mettent à jour ou suppriment des paquetages nécessitent des droits d'administrateur (root).<br />
<br />
Nous allons voir ici deux méthodes pour gérer les paquets RPM :<br /><br />
<br />
* [#cdes le programme <code>rpm</code>],<br />
* [#urpm les programmes <code>urpm*</code> de Mandrake].<br />
<br />
Les noms de paquetages sont très longs et donc très pénibles à orthographier correctement. Linux offre toutefois des aides à la frappe :<br />
<br />
* lorsque vous installez un RPM, ou travaillez sur un RPM non encore installé, utilisez la complétion de ligne de commande en tapant les premières lettres du nom du fichier RPM puis la touche TAB. Si la correspondance reste équivoque, Linux vous donnera les possibilités trouvées, retapera votre ligne et vous laissera ajouter quelques lettres pour lever l'indétermination.<br />
* lorsque vous travaillez sur un RPM qui est déjà installé, la commande <code>rpm</code> s'adresse à la base de données des paquetages installés, qui consigne les noms courts en plus des noms de fichiers complets. L'indication du numéro de version n'est donc en général pas nécessaire (sauf si le même package est installé 2 fois avec 2 versions différentes).<br />
<br />
== Les commandes rpm usuelles ==<br />
<br />
=== Pour installer un nouveau paquetage : ===<br />
<br />
<code>rpm -ivh toto.rpm</code><br />
<br />
Attention, si vous installez un paquetage par cette méthode et qu'il existe déjà sur votre système dans une version inférieure, vous risquez d'avoir des problèmes pour le désinstaller (voir plus bas). Par contre, pour installer une bibliothèque simultanément en deux version différentes, utilisez cette syntaxe.<br /> Les options <code>h</code> et <code>v</code> ne sont pas obligatoires, <code> -i</code> est suffisant pour faire une installation. L'option <code> h</code> provoque l'affichage d'une barre de progression (ça fait très pro sur l'écran !) et <code>v</code> rend l'installation bavarde, ce qui fournit des messages plus explicites en cas d'erreur. L'option <code> -vh</code> peut être appliquée sur toutes les commandes rpm ci-après afin de rendre rpm plus bavard.<br />
<br />
=== Pour mettre à jour un paquetage : ===<br />
<br />
<code>rpm -Uvh toto.rpm</code><br />
<br />
Avec un "U" comme "Upgrade" (mise à jour en anglais).<br />
<br />
Attention, ceci ne s'applique pas pour upgrader un noyau, voir la [../kernel/kernel.php3#precompile rubrique noyau] à ce sujet.<br />
<br />
Enfin, pour remplacer un paquetage par un paquetage plus ancien ("downgrader"), la commande à utiliser est :<br />
<br />
<code>rpm -Uvh --oldpackage toto.rpm</code><br />
<br />
=== Pour supprimer un paquetage : ===<br />
<br />
<div class="code">>rpm -e toto<br /> rpm -e toto-version</div><br />
<br />
Le "<code>e</code>" correspond à "erase" (effacer en anglais). <br /> La syntaxe complète (avec numéro de version) permet de distinguer deux versions d'un même paquetage qui auraient été installées ensemble.<br />
<br />
=== Pour faire des requêtes sur les paquetages : ===<br />
<br />
Afficher la liste de tous les paquetages déjà installés J'imagine que "<code>a</code>" doit signifier "all" ;-) :<br /><br />
<br />
<code>rpm -qa</code><br />
<br />
et <br /><br />
<br />
<code>rpm -qa | less</code><br />
<br />
Pour afficher la liste page par page... <br />
<br />
Trouve un paquetage identifié par son nom (toto) :<br />
<br />
<code>rpm -qa | grep toto</code><br />
<br />
La recherche peut s'appliquer à une partie seulement du nom, par exemple <code>rpm -qa | grep 'util'</code> vous donne la liste de tous les RPM installés tels que util-linux, nautilus, bind_utils etc.. Attention la syntaxe est sensible à la distinction majuscules / minuscules !<br />
<br />
Pour trier par date d'installation :<br /><br />
<br />
<code>rpm -qa --last</code><br />
<br />
Pour trier par taille :<br /><br /><code>rpm -qa --queryformat '%{name} %{size}\n' | sort -n +1 | column -t</code><br />
<br />
Jolie ligne de commande n'est-ce pas ? ;-)<br />
<br />
Obtenir la liste des fichiers contenus dans un paquetage toto qui est déjà installé :<br />
<br />
<code>rpm -ql toto</code><br />
<br />
On dira que "<code>l</code>" est l'initiale de "list".<br />
<br />
Dans la foulée de la syntaxe précédente, celle-ci donne les informations relatives à ce paquetage, une brève description de ce que fait le paquetage, des dépendances qui doivent être satisfaites, etc. :<br />
<br />
<code>rpm -qi toto</code><br />
<br />
On parie que "<code>i</code>" est mis pour "information" ? <br /> La même chose sur un paquetage pas encore installé : <br />
<br />
<code>rpm -qip toto.rpm</code><br />
<br />
Avec un "<code>p</code>" comme "package".<br />
<br />
Nota :<br /><br />
<br />
* L'option <code>p</code> s'applique aussi à d'autres syntaxes, par exemple <code>rpm -qlp toto.rpm</code> pour avoir la liste des fichiers d'un paquetage non encore installé.<br />
* Les options de requêtes peuvent se cumuler. Par exemple <code>rpm -ql'''ip''' toto.rpm</code> donnera à la fois les infos et la liste des fichiers du paquetage toto.rpm.<br />
<br />
=== Retrouver le paquetage d'origine d'un fichier : ===<br />
<br />
<code>rpm -qf /usr/lib/toto.txt</code><br />
<br />
Il peut se produire que vous vous trouviez en face d'un fichier dont vous vous demandez quel est le paquetage qui a bien pu installer ce fichier. Pas de panique ! Là aussi la commande RPM peut vous être d'une aide précieuse. Ici le '<code>f</code>' signifie fichier (file en anglais).<br />
<br />
Cette commande fonctionne sur les packages installés. Oui, mais si on veut trouver un fichier parmi les paquetages non installés ?<br /> Si vous utilisez Mandrake (voir [#urpm la partie sur urpm plus bas] ), la commande suivante fera l'affaire :<br /><code>urpmf le_fichier</code><br /> Sinon, placez-vous dans le répertoire contenant les .rpm (le CD en général) et faites :<br /><code>for i in *.rpm ; do rpm -qpli $i | grep le_fichier && echo $i ; done</code><br /> ou bien :<br /><code>rpm -q -p -filesbypkg *.rpm | grep le_fichier</code><br />
<br />
=== Tester l'installation d'une paquetage : ===<br />
<br />
<code>rpm -i --test toto</code><br />
<br />
Effectue simplement une vérification sans installer le paquetage toto. Permet essentiellement de vérifier si l'installation pourrait se dérouler sans encombre ou alors si des dépendances non satisfaites risquent de faire avorter l'installation.<br />
<br />
=== Si <code>rpm</code> ne veut pas installer le paquetage toto ===<br />
<br />
Il existe plusieurs options. Premièrement : ne pas vérifier les dépendances.<br />
<br />
<code>rpm -i --nodeps toto</code><br />
<br />
Deuxièmement : forcer l'installation, en cas de conflit avec certains autres <code>rpm</code>.<br />
<br />
<code>rpm -i --force toto</code><br />
<br />
Enfin, combinez les deux options pour vraiment obliger <code>rpm</code> à procéder à l'installation.<br />
<br />
=== Si <code>rpm</code> ne veut pas désinstaller le paquetage toto ===<br />
<br />
Il suffit alors de faire :<br />
<br />
<code>rpm -qa | grep toto</code><br />
<br />
Affiche la liste des paquetages dont le nom contient toto, par exemple :<br />
<br />
<code multi>toto-1.1<br />
toto-1.2</code><br />
<br />
<code>rpm -e toto-1.1</code><br />
<br />
Désinstalle le paquetage désigné par son nom '''et''' son numéro de version. <br />
<br />
=== Extraire des fichiers d'un RPM : ===<br />
<br />
Certains outils comme Midnight Commander (mc, ou gmc) permettent d'ouvrir des fichiers rpm, de se déplacer dedans et de copier des fichiers vers d'autres répertoires.<br /> Vous pouvez aussi convertir le rpm en archive cpio (l'ancêtre de tar), par la commande <code>rpm2cpio</code>, et ensuite utiliser la commande <code>cpio</code> pour extraire le ou les fichiers.<br />
<br />
=== Installer un RPM dans un autre système Linux que celui qui tourne : ===<br />
<br />
Vous avez plusieurs systèmes Linux sur votre machine, ou bien vous avez bouté avec le CD ou une disquette de sauvegarde. Vous souhaitez installer un rpm dans un autre système dont la partition racine est monté dans /mnt/racine. La commande à taper est :<br />
<br />
<code>rpm -i --root=/mnt/racine /chemin/package.rpm</code><br />
<br />
Vous pouvez utiliser l'option <code>--root=/mnt/racine</code> dans toutes les commandes rpm, pour faire des recherches, etc. avec rpm sur l'autre système Linux.<br />
<br />
=== ET TOUJOURS : ===<br />
<br />
<code>man rpm</code><br />
<br />
L'accès à la page du manuel, le réflexe qu'on devrait toujours avoir...<br /><br /><br /><br />
<br />
----<br />
<br />
<br /><br />
<br />
== Quelques précisions concernant rpm ==<br />
<br />
=== Quelle est la différence entre SRPM et RPM ? ===<br />
<br />
Les paquetages SRPM (Source RPM) contiennent les sources d'un logiciel prêtes à être recompilées et transformées en paquetage rpm.<br /> Afin de reconstruire un paquetage rpm à partir d'un srpm (fichier .src.rpm), il faut utiliser la commande :<br /><code> # rpmbuild --rebuild paquetage.src.rpm<br /> </code>Le paquetage rpm résultant se trouvera dans <code>/usr/src/RPM/RPMS/<arch></code> où <code><arch></code> est i386, i586, ppc, etc. suivant votre architecture.<br />
<br />
Pour simplement installer le paquetage, sans reconstruire le fichier .rpm, faire :<br /><code> # rpmbuild --recompile paquetage.src.rpm</code><br /><br />
<br />
Cela peut être très utile pour installer un programme qui a été compilé avec des versions de librairies différentes des votres et qui refuse donc de s'installer, tout en conservant l'intégrité de votre base de données des rpm (tout programme installé devrait être dans la base, mais si vous installez à partir des sources .tar.gz par ./configure && make install, cela ne sera pas le cas.) Par exemple, vous pouvez récupérer un srpm de Mandrake Cooker (la version de développement) et essayer de le reconstruire sur une Mandrake 8.2.<br />
<br />
Note : ce processus nécessite que les paquetages -devel nécessaires aient été installés, ainsi que les compilateurs utilisés, etc. Voir l'article sur la [../kernel/compil.php3 compilation] .<br /><br />
<br />
=== Que sont les fichiers *.rpmsave et *.rpmnew ? ===<br />
<br />
Lorsque rpm installe un paquetage, il peut soit conserver les anciens fichiers de configuration ; les nouveaux seront alors renommés en *.rpmnew.<br /> Si rpm remplace les anciens fichiers de configuration par des nouveaux, alors ce sont les anciens qui seront renommés en *.rpmsave.<br /><br />
<br />
=== Quelle est la différence entre "installer" et "mettre à jour" ? ===<br />
<br />
La mise à jour (''upgrade'' en anglais) remplace l'ancien paquetage par le nouveau, tandis que l'installation conserve si possible l'ancienne version du programme et installe la nouvelle en parallèle.<br />
<br />
Cela peut être fort utile pour les bibliothèques : lorsque vous essayez de mettre à jour une bibliothèque, vous pouvez rompre des dépendances avec les programmes déjà installés (s'il y a un gros saut de version). Afin de ne pas avoir de problèmes, au lieu de mettre à jour la nouvelle version, installez-la ; ainsi l'ancienne version restera présente et les anciens programmes tourneront sans problème. Cela ne pose aucun problème d'avoir plusieurs versions d'un bibliothèque installée sur un système.<br /><br />
<br />
=== Que sont les paquetages -devel ? ===<br />
<br />
Vous avez sans doute remarqué que souvent, pour un package toto.rpm, vous aviez un deuxième package toto-devel.rpm.<br />
<br />
toto.rpm contient le logiciel, bibliothèque, etc. lui-même, c'est à dire la version que vous allez utiliser tous les jours.<br />
<br />
toto-devel.rpm contient des fichiers (les "entêtes", etc.) qui permettent de compiler des programmes qui utilisent toto. Ainsi, toutes les bibliothèques ont leur paquetage -devel.<br />
<br />
Vous avez besoin d'installer les paquetages -devel uniquement si vous désirez compiler des logiciels, que ce soit d'après l'archive tar.gz ou le paquetage src.rpm.<br /><br /><br />
<br />
----<br />
<br />
<br /><br />
<br />
== Les commandes urpm* de Mandrake ==<br />
<br />
Le programme rpm de RedHat souffre de nombreuses limitations que Mandrake a dépassées, en créant les outils urpm* (User RPM - à partir de Mandrake 7.0) :<br />
<br />
* résolution automatique et installation/désistallation automatique des paquetages dépendants (rpm indique seulement le nom de paquetages manquants)<br />
* urpm connaît l'ensemble des paquetages installables depuis différentes sources (les CD, serveurs ftp de mise à jour, [http://plf.zarb.org Penguin Liberation Front] ...)<br />
* urpm permet d'installer des paquetages depuis internet lorsque ceux-ci sont plus récents que sur les CD (depuis Mandrake 8.0)<br />
* urpm permet d'installer des paquetages en donnant seulement un nom incomplet (exemple : <code>urpmi koffice</code> pour chercher et installer Koffice, <code>urpmi mplayer</code>, etc.)<br />
* etc.<br />
<br />
Sur chacune des commandes dont on va parler ci-dessous, je vous conseille de lire la page de man (<code>man urpmi</code>, <code>man urpmf</code>, etc.) afin d'en apprendre plus.<br />
<br />
Toutes les actions décrites ici peuvent également être réalisées de manière graphique, avec le Gestionnaire de Programmes (Software Manager), qui est une façade ou frontend aux programmes urpm*. Je vous conseille de tester les deux manières de faire, car contrairement aux apparences, la ligne de commande peut être plus simple et/ou rapide.<br />
<br />
=== Configurer urpm ===<br />
<br />
==== Ajouter / mettre à jour une source de paquetages ====<br />
<br />
Après avoir installé votre distribution, les CD ont été créés dans la base de données de urpm en tant que source de paquetages.<br /> Cependant, vous pouvez ajouter autant de sources que vous le désirez. Supposons par exemple que vous ayez un répertoire "incoming/rpms" dans lequel vous placez tous les rpm que vous récupérez sur internet. Vous pouvez l'ajouter à votre base de données urpm par la commande :<br />
<br />
<code> # urpmi.addmedia mes_rpm file://home/jice/incoming/rpms</code><br />
<br />
Où mes_rpm est le nom (arbitraire) que vous donnez à votre source de paquetages.<br />
<br />
Par la suite, vous pourrez mettre à jour cette source par :<br /><br />
<br />
<code>urpmi.update mes_rpm</code><br />
<br />
De même, pour ajouter une source ftp de paquetages, on donne l'URL du fichier hdlist.cz sur le serveur. Exemple pour le [http://plf.zarb.org Penguin Liberation Front] et une Mandrake 9.0 :<br /><br />
<br />
<code>urpmi.addmedia plf ftp://ftp.easynet.fr/plf/9.0 with hdlist.cz</code><br />
<br />
Et de la même façon, pour mettre à jour la source de temps en temps :<br />
<br />
<code>urpmi.update plf</code><br />
<br />
L'option -a permet de mettre à jour toutes les sources en même temps<br />
<br />
<code>urpmi.update -a</code><br />
<br />
==== Ajouter des sources distantes ====<br />
<br />
<u>Ajout de Jean-Thomas MUYL</u><br />
<br />
<br /><br />
<br />
Si vous possédez une connexion à haut débit (ce n'est pas obligatoire, mais conseillé pour utiliser cette option), vous pouvez utiliser des sources <code>main</code> <code>contrib</code> et <code>update</code> situées sur internet.<br />
<br />
L'outil en ligne à [http://easyurpmi.zarb.org cette adresse] vous permet de configurer vos sources urpmi facilement selon votre distribution et votre localisation géographique. Si vous avez une connexion à haut débit, je vous conseille même de commencer par un <code>urpmi.removemedia -a</code> pour ne plus utiliser les cdroms comme sources, et ne plus vous fatiguer à les chercher dans la pile de cd.<br />
<br />
<u>Note</u> : le fichier de configuration de urpm est <code>/etc/urpmi/urpmi.cfg</code> et les bases de données dans <code>/var/lib/urpmi</code>.<br />
<br />
==== Supprimer une source de paquetages ====<br />
<br />
Pour supprimer la source mes_rpm, taper :<br /><br />
<br />
<code>urpmi.removemedia mes_rpm</code><br /><br /><br />
<br />
=== Installer avec urpmi ===<br />
<br />
==== Installer depuis les sources urpm<br /> ====<br />
<br />
Pour installer un logiciel avec urpm, rien de pkus simple. Vous tapez simplement la commande '''urpmi''' suivie d'une partie du nom du logiciel. Exemple :<br /><br />
<br />
<code>urpmi mplayer</code><br />
<br />
urpmi va alors chercher la version la plus récente du package correspondant, regarder s'il doit installer des packages dépendants (et vous en demander confirmation), et installer l'ensemble des packages.<br />
<br />
Dans le cas ou l'argument donné à urpmi est ambigü, urpmi renvoie le nom des packages correspondants ; il ne vous reste plus qu'à choisir dans la liste et relancer urpmi avec le bon nom de package.<br />
<br />
Si vous voulez installer le package qui fournit une librairie (par exemple), utilisez le modifieur -p :<br /><br />
<br />
<code> # urpmi -p libe2p.so.2</code><br />
<br />
urpmi va alors rechercher quel paquetage fournit <code>libe2p.so.2</code> et l'installer (ici libext2fs2).<br />
<br />
==== Installer directement un ou plusieurs fichiers rpm ====<br />
<br />
Dans ce cas, il suffit de passer le nom du fichier en argument à urpmi :<br />
<br />
<code>urpmi mon_paquetage-version.i586.rpm</code><br />
<br />
et le package sera mis à jour de la même manière que rpm -U l'aurait fait.<br />
<br />
urpmi peut installer plusieurs paquetages d'un coup : par exemple, pour installer la dernière version de KDE que j'ai téléchargée, je me mets dans le répertoire où j'ai mis les rpm, et je tape :<br />
<br />
<code>urpmi *.rpm</code><br /><br />
<br />
Pour installer (et non mettre à jour un package, par exemple pour ajouter un nouveau noyau en parallèle de l'ancien, ou bien une nouvelle librairie qui doit coexister avec l'ancienne), il faut utiliser l'option -i : urpmi -i<br />
<br />
urpmi peut également utiliser une url pour installer un paquet. Par exemple, <code>urpmi http://example.com/example.rpm</code> va installer le paquet aprés l'avoir téléchargé. urpmi supporte http, ftp, rsync et ssh pour le moment.<br />
<br />
=== Désinstaller avec urpme ===<br />
<br />
Pour désinstaller un paquetage, il faut utiliser '''urpme'''<nowiki>:</nowiki><br />
<br />
<code>urpme mplayer</code><br />
<br />
désinstallera mplayer. S'il y a des paquetages qui en dépendent, urpme demandera s'il doit les désinstaller également. À utiliser avec précaution ;-)<br /><br />
<br />
=== Rechercher avec urpmf (et urpmq) ===<br />
<br />
L'outil de choix pour faire de recherches dans les packages rpm et ''' urpmf'''. Cela permet de rechercher non seulement dans les paquetages installés comme avec rpm -q, mais aussi des paquetages installables !<br />
<br />
<code>urpmf toto</code><br />
<br />
renverra la liste de tous les paquetages qui contiennent le fichier toto.<br />
<br />
urpmf dispose de nombreuses options pour faire des requêtes sur les différentes informations de la base de données des paquetages.<br />
<br />
Par exemple :<br />
<br />
Liste des paquetages du groupe "Games"<br /><code>urpmf --group Games</code><br /> Taille du paquetage "pingus"<br /><br />
<br />
<div class="code">urpmf --size pingus<br /><code>pingus:size:1102629</code></div><br />
<br />
<br /> Recherche du mot "pingus" dans les résumés de paquets<br /><br />
<br />
<div class="code">urpmf --summary pingus<br /> pingus:summary:Pingus - A free Lemmings clone</div><br />
<br />
Voir <code>man urpmf</code> pour de plus amples informations.<br /><br />
<br />
La commande '''urpmq''' vous permet d'autres types de requêtes :<br /><br />
<br />
Liste des paquetages dont le nom contient la chaîne "toto" :<br /><code>urpmq toto</code><br /><br />
Sur quelle source se trouve le paquetage toto :<br /><code>urpmq --archive toto</code><br /><br />
Quels paquetages dépendent du paquetage toto :<br /><code>urpmq -d toto</code><br /><br />
Nom complet du fichier rpm du paquetage toto :<br /><code>urpmq -r toto</code><br /> <br />
Résumé d'une ligne d'un paquet ( summary + nom + cersion ) :<br /><code> urpmq --summary toto</code><br />
<br />
Voir aussi <code>man urpmq</code>.<br /><br />
<br />
=== Mettre à jour le système ===<br />
<br />
urpm vous permet de mettre à jour votre système avec les derniers correctifs de sécurité et les corrections de bugs que Mandrake publie régulièrement.<br /> Pour ce faire, il faut avoir paramétré un miroir ftp de mises à jour de sécurité dans urpm (voir configuration), ou avec le Gestionnaire de Programmes (qui est bien pratique pour cette opération).<br /> Si la source de mise à jour s'appelle maj_secu, il faut lancer la commandes suivante pour la mettre à jour :<br /><code>urpmi.update maj_secu</code><br /> puis :<br /><code>urpmi --auto-select</code><br /> urpm va alors lister les paquetages mis à jour et vous demander si vous souhaitez les installer (pour qu'il installe tout sans demander, pratique pour mettre la commande dans un cron, ajouter l'option <code>--auto</code>).<br />
<br />
Si vous souhaitez que urpm ne mette pas à jour automatiquement certains paquetages, il suffit d'ajouter leur nom dans le fichier <code>/etc/urpmi/skip.list</code> .<br /> Par exemple, pour empêcher urpm de mettre à jour automatiquement le kernel et la glibc, ajouter dans ce fichier :<br /><br />
<br />
<div class="code">kernel<br /> glibc</div><br />
<br />
=== Conclusion sur urpm ===<br />
<br />
Les commandes urpm sont encore trop peu connues, et la maintenance de votre Mandrake sera bien plus aisée avec leur utilisation.<br /><br />
<br />
----<br />
<br />
<br /><br />
<br />
== apt-get sur Redhat ==<br />
<br />
Redhat dispose également d'outils pour faciliter la gestion des packages et la mise à jour du système. J'ai testé <code>rpm-get</code> que je n'ai pas trouvé satisfaisant. Par-contre le portage de <code>apt-get</code> sur redhat est véritablement une réussite. C'est donc cet utilitaire dont je parlerai concernant Redhat (pour l'article je travaille sur une Redhat 7.3)<br />
<br />
Cette version de apt-get pour RPM, même si elle est critiquée parce qu'elle utilise <code>RPM</code> (contre <code>dpkg</code> pour Debian), est extrêmement efficace<br />
<br />
Les principaux apports de <code>apt-get</code><nowiki>:</nowiki><br />
<br />
* Prise en charge des dépendances pour l'installation et la désinstallation de packages<br />
* Mise à jour complète de la distribution avec les dernières versions des packages existantes<br />
* Comme pour urpm, installation des paquetages en donnant seulement un nom incomplet<br />
<br />
=== Installation de apt-get ===<br />
<br />
'''Les packages à installer''' :<br />
<br />
Vous devez installer au moins le package [http://apt.freshrpms.net/ apt-get] . Il contient les binaires que nous allons utiliser par la suite. Pour ceux qui préfèreraient utiliser une interface graphique, il en existe une, extrêmement conviviale, [http://ftp.freshrpms.net/pub/freshrpms/valhalla/synaptic/synaptic-0.25-fr0.1rh73.i386.rpm synaptic]. <br />[[Image:rpm-rpm_synaptic.jpg]]<br />
<br />
'''La configuration''' :<br />
<br />
Elle est très simple. Une fois les packages installés il vous suffit de taper <code>apt-get update</code>. Ceci va synchroniser votre base de données locale avec celle du serveur ftp. Cette commande sera à relancer régulièrement pour remettre à jour cette base de données (à insérer dans une crontab par exemple).<br />
<br />
* <code>/etc/apt/sources.list</code> : contient la liste des dépôts pour la récupération des packages. Ces dépôts peuvent être des CD-ROM, un emplacement sur votre disque dur, des URL.<br />
* <code>/etc/apt/apt.conf</code> : fichier de configuration de apt-get<br />
* <code>/var/cache/apt/archives</code> : contient les packages qui ont été downloadés pour être installés.<br />
<br />
'''Commande supplémentaire''' :<br />
<br />
La commande <code>apt-cdrom</code> vous permet de rajouter directement au fichier <code>sources.list</code> des dépôts sur CD-ROM. <br />La syntaxe de la commande : <code>apt-cdrom --cdrom <point-de-montage> add</code><br />'''Exemple : '''<code>apt-cdrom --cdrom /mnt/cdrom add</code><br /> Il vous reste alors à insérer successivement tous les CD en votre possession qui contiennent les packages Redhat.<br />
<br />
=== Installer / Désinstaller / Mettre à jour des packages ===<br />
<br />
==== Installer / Mettre à jour un ou plusieurs packages ====<br />
<br />
* Pour installer un ou plusieurs packages, on utilisera la commande <code>apt-get</code> avec l'argument <code>install</code>.<br />'''Syntaxe''' : <code>apt-get install package1 [package2...]</code><br />'''Exemple''' : <code>apt-get install mplayer</code> installera mplayer et les packages éventuellement nécessaires pour régler les dépendances.<br />Â <br />
* Vous pouvez également choisir d'installer des sources. Pour ce faire, il suffit d'utiliser l'argument <code>source</code>.<br />'''Exemple :''' <code>apt-get source galeon</code> vous permet de récupérer le RPM source de galeon.<br />Â <br />
* Pour mettre à jour un ou plusieurs packages, on utilisera la commande <code>apt-get</code> avec l'argument <code>upgrade</code>. Il est plus sûr au préalable d'exécuter la commande <code>apt-get update</code> pour mettre à jour la base de données locale et s'assurer que la mise à jour est réalisée avec la dernière version du dit package disponible.<br />'''Syntaxe''' : apt-get upgrade package1 [package2...]<br />'''Exemple''' : <code>apt-get upgrade mplayer</code> mettra à jour mplayer et les packages éventuellement nécessaires pour régler les dépendances.<br />
<br />
==== Désinstaller avec apt-get ====<br />
<br />
Désinstaller un ou plusieurs packages est aussi simple. Il suffit d'utiliser la commande <code>apt-get</code> suivie de l'argument <code>remove</code>.<br />'''Syntaxe''' : apt-get remove package1 [package2...]<br />'''Exemple''' : <code>apt-get remove mplayer</code> supprimera mplayer et les packages qui étaient dépendants de mplayer mais non utilisés par une autre application.<br />
<br />
==== Mettre à jour le système ====<br />
<br />
Enfin <code>apt-get</code> peut vous permettre également de mettre à jour la totalité de votre distribution. Au préalable, on exécutera là encore un <code>apt-get update</code> pou s'assurer de disposer des derniers packages. Puis il suffit de lancer la commande <code>apt-get dist-upgrade</code>. Et le tour est joué ;)<br />
<br />
Vous disposez également de la commande <code>apt-get check</code>. Elle vous permet de vérifier que vous n'avez pas de dépendances non résolues sur votre système.<br />
<br />
==== Rechercher des informations sur un package installé ====<br />
<br />
Enfin la commande <code>apt-cache</code> vous permet d'obtenir un certain nombre d'informations sur les packages installés :<br />
<br />
* Pour vérifier qu'un package est bien installé, il suffit d'utiliser l'argument <code>search</code>.<br />'''Syntaxe''' : <code>apt-cache search chaine_de_caractères</code> (la chaîne de caractères peut contenir des expressions régulières).<br />'''Exemple :''' vous voulez vérifier que mplayer est bien installé :<br /><div class="code">>apt-cache search mplayer<br /> mplayer - MPlayer, the Movie Player for Linux.<br /> mplayer-skins - A collection of skins for MPlayer.<br /> transcode - A Linux video stream processing utility.</div><br />Â <br />
* Pour vérifier les dépendances d'un package, on utilisera l'argument <code>depends</code>.<br />'''Syntaxe''' : <code>apt-cache depends chaine_de_caractères</code><br />'''Exemple :''' vous voulez connaitre les dépendances de mplayer :<br /><div class="code">>apt-cache depends mplayer<br /> mplayer<br /> Depends: libdvdread<br /> Depends: libdvdcss<br /> libdvdcss2<br /> Depends: gtk+<br /> Depends: SDL<br /> Depends: divx4linux<br /> Depends: lame<br /> Depends: libvorbis<br /> Depends: lirc<br /> Depends: libdv<br /> Depends: aalib<br /> Depends: arts </div> <br />
<br />
<div class="merci">Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Jean-Christophe Cardot, Anne-Laure Nicolas le 25/02/2000.</div><br />
<br />
= Copyright =<br />
Copyright &copy; 25/02/2000, Jean-Christophe Cardot, Anne-Laure Nicolas<br />
{{CC-BY-NC-SA}}<br />
<br />
<br />
=Autres ressources=<br />
<br />
* [http://easyurpmi.zarb.org/?language=fr easy URPMI] : un site pour trouver des sources urpmi (toutes ?)<br />
* [http://lis.snv.jussieu.fr/~rousse/linux/urpmi.html Introduction à URPMI] par Guillaume Rousse</div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=Wine&diff=9169
Wine
2005-10-14T18:00:49Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div></div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=Qemu&diff=9168
Qemu
2005-10-14T18:00:47Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div>[[Category:Emuler]]<br />
= Installer et utiliser Qemu =<br />
<br />
<div class="leatitre">Installer et utiliser Qemu</div><br />
<br />
Par David Roux, avec la collaboration de Joël Tarlao et Alain Rivest, relu et complété par Erwan Velu<br />
<br />
Voici un petit guide pour utiliser Qemu facilement<br />
<br />
== Qu'est-ce que Qemu? ==<br />
<br />
Dans le monde des émulateurs, Qemu a actuellement le vent en poupe, et nombreux sont ceux qui l'ont adopté pour faire tourner les applications indisponibles pour leur système d'exploitation. Dans notre cas, on appréciera de pouvoir utiliser des logiciels conçus pour Microsoft Windows ou Mac OS sous Linux, mais il sera également possible de faire l'inverse. Son autre avantage est qu'il peut émuler plusieurs architectures, du x86 au PowerPC en passant par le Sun-SPARC, ce qui permet de lancer une foule d'OS différents. De plus, il est important de signaler que Qemu est disponible sous licence GNU LGPL. Pour en savoir plus, le mieux est d'aller faire un tour [http://fabrice.bellard.free.fr/qemu/ ici]<nowiki>; quand à nous, rentrons dans le vif du sujet...</nowiki><br />
<br />
== L'installation ==<br />
<br />
On ne le répètera jamais assez, le meilleur moyen d'installer une application est de se servir du système de paquetages de sa distribution qui permet de gérer correctement les dépendances et facilite la tâche en cas de désinstallation. Il est également préférable d'utiliser la dernière version de QEMU, (0.6.1 au moment où j'écris ces lignes) et disponible en format deb pour testing et RPM pour Mandriva LE 2005. On peut également trouver la version 0.7.0 dans les branches "unstable" des distributions Linux (Sid, Cooker...). Quoiqu'il en soit, l'installation par cette méthode (urpmi, apt-get,...etc) ne devrait pas poser de problème.Pour ceux qui souhaiteraient quand même compiler, ça passe par les traditionnels <code>./configure</code>, <code>make</code>, et <code><nowiki># make install</nowiki></code>, après avoir déballé l'archive. Je ne rentre pas dans les détails, il y a des articles pour ça, et si vous ne savez pas le faire, reportez-vous à la première méthode. Pour les dépendances de Qemu 0.6.1, vous aurez besoin des paquets suivants: libc6 (>=2.3.2-ds1-4), libsdl (>=1.2), zlib1g (>=1.1.2.1), vgabios (>=0.4c), bochsbios (>=2.1.1). Les noms des paquets peuvent varier suivant les distributions.Je n'ai hélas pas de détail sur les dépendances de la version 0.7.0 qui vient de sortir.<br />
<br />
== Comment ça marche? ==<br />
<br />
=== Premiers pas avec un live-CD ===<br />
<br />
On va se faire la main avec un truc tout simple, l'émulation d'un système d'exploitation en live-CD. Il ne sera pas nécessaire d'écrire sur le disque dur ni même graver le fichier ISO que l'on vient de télécharger sur un site internet. Dans la suite de cet article, ce fichier ISO s'appelera "live.iso". Pour démarrer cette image iso avec Qemu, Il suffit de se rendre dans le répertoire qui contient l'image et lancer Qemu, en tapant:<br />
<br />
cd /home/toto/repertoire_ou_est_l'image_iso<br /> qemu -cdrom live.iso<br />
<br />
Il n'est pas nécessaire d'être « root » pour exécuter QEMU, tout peut être fait par un simple utilisateur.<br />
<br />
Une fenêtre s'ouvre et le système émulé se lance. Pour utiliser la souris de votre système virtuel, il suffit de cliquer dans la fenêtre d'émulation. Pour libérer la souris de la fênetre d'émulation, il suffit d'appuyer sur les touches 'ctrl' & 'alt' en même temps. Pour le pavé numérique, Qemu le considèrera toujours comme inactif donc il faudra presser la touche "VerrNum". Attention aux mots de passe car on peut se retrouver avec le clavier numérique vérouiller avec le voyant "numlock" éteint''' ! '''<br />
<br />
Si l'on souhaite démarrer sur un vrai céderom, il suffit d'utiliser la syntaxe <code>-cdrom /dev/cdrom</code> . Qemu utilise directement le périphérique bloc, il ne faut donc pas monter le cédérom avant l'éxecution de Qemu.<br />
<br />
Le système virtuel peut également accéder au réseau grâce à l'option <code>-user-net</code> : dans ce mode, Qemu utilisera vos interfaces réseaux pour accéder a votre réseau local ou a Internet par exemple. La carte son virtuelle, une carte-son SB16, peut être activée avec l'option <code>-enable-audio</code>. Compte-tenu que le système émulé est tout de même plus lent que lors d'une utilisation normale, et que la charge sur le processeur de l'hôte est importante, faites d'abord un essai avec un live-CD "léger", genre DamnSmall Linux et ce surtout si votre machine n'est pas de la première jeunesse;<br />
<br />
Qemu offre par défaut au système émulé 128 Mo de mémoire vive, il faut donc au moins e, avoir le double sur la machine hôte (plus, c'est mieux). Pour info, j'ai fait tous ces tests sur un Athlon XP1800+ avec 512 Mo de RAM, et mon processeur tournait à 100% tout le temps: n'essayez pas sur un 486 ;-)<br />
<br />
=== Installation d'un système "en dur" ===<br />
<br />
Dans ce mode, Qemu est capable d'utiliser un fichier de votre disque dur et de le transformer en un disque dur virtuel. Pour l'exemple, on installera un Microsoft Windows 98, sur une image de disque dur de 2Go que l'on appelle "hd.img" et située dans un répertoire /home/toto/invite/.<br />
<br />
<div class="code">mkdir /home/toto/invite/<br /> cd /home/toto/invite/<br /> qemu-img create hd.img 2G</div><br />
<br />
La commande qemu-img permet de créer une image disque de la taille spécifiée mais on aurais pu également le faire avec l'outil dd:<br />
<br />
<div class="code">dd of=hd.img bs=2048 seek=1000000 count=0</div><br />
<br />
Dans notre répertoire « invite », on placera aussi une image du CD d'installation nommée msw.iso ainsi qu'une image de sa disquette de boot « mswboot.img ».<br />
<br />
<div class="code">qemu -k fr -fda mswboot.img -cdrom msw.iso -hda hd.img -user-net -boot a</div><br />
<br />
Cette commande permet donc de demarrer Qemu avec une disquette, un disque dur et un cdrom virtuel correspondant respectivement a la disquette d'amorcage de Microsoft Windows 98, le disque virtuel que l'on a créé et l'image ISO de Windows 98. L'option « boot a » indique que l'on souhaite démarrer le système virtuel depuis le lecteur de disquette virtuel. Il n'est pas nécessaire d'utiliser une disquette d'amorçage si l'image ISO est « amorçable ».<br />
<br />
Vous remarquez que j'ai mis des options dont je n'ai pas forcément besoin tout de suite (-cdrom, -user-net), mais comme on va devoir redémarrer notre système virtuel de nombreuses fois pendant l'installation, et donc relancer Qemu, on fera un copier-coller de la commande au lieu de tout retaper. j'ai aussi mis le clavier en français avec <code>-k fr</code>.<br />
<br />
L'installation de Windows débute, on va tout d'abord créer notre partition et l'activer avec Fdisk puis on reboot. On formatte ensuite le disque C: puis on reboot a nouveau. Ceci fait partie de la procédure standard d'installation de Windows, ce n'est pas spécifique a Qemu. Attention, le lecteur de cdrom porte parfois la lettre R: (donc pas de panique si ça ne marche pas avec D:). On est arrive ensuite dans la partie graphique de l'installation, je ne rentre pas dans les détails. Au reboot suivant, on relancera le système en partant du disque dur virtuel en non plus a partir de la disquette en remplaçant <code>-boot a</code> par <code>-boot c</code>. Lorsque l'installation est terminée, on a accès au système virtuel avec la commande suivante, toujours en étant dans le répertoire où se trouve l'image-disque:<br />
<br />
<div class="code">qemu -k fr -hda hd.img -cdrom /dev/cdrom -user-net -boot c</div><br />
<br />
Pour pouvoir démarrer avec l'option <code>-cdrom /dev/cdrom</code>, assurez vous qu'un céderom est présent dans le lecteur avant le démarrage de Qemu.<br />
<br />
J'ai volontairement oublié certaines options que l'on va détailler dans le chapitre suivant.<br />
<br />
== Les principales options ==<br />
<br />
* <code>-hda [image]</code> ou <code>-hda [périphérique]</code><nowiki>: sert à spécifier l'image de disque dur qui va servir pendant l'émulation; il peut aussi s'agir d'un périphérique ou d'une partition, comme /dev/hda1; Il y a aussi </nowiki><code>-hdb</code>, <code>-hdc</code>, <code>-hdd</code>, pour simuler d'autres partitions, mais on ne peut pas utiliser <code>-hdc</code> en même temps que <code>-cdrom</code>.''' L'utilisation de partitions "réelles" présente des risques pour le disque dur, préfèrez les images'''.<br />
* <code>-cdrom [image]</code> ou <code>-cdrom [périphérique]</code><nowiki>: même chose que précèdemment, mais là il est question du cdrom. le périphérique peut être un lien (/dev/cdrom) ou sa cible (/dev/hdc); </nowiki><code>-cdrom</code> peut utiliser n'importe quel hdX qui correspond à un lecteur cédérom qui contient un cédérom mais qui n'est pas monté.<br />
* <code>-fda [image]</code> ou <code>-fda [périphérique]</code><nowiki>: comme pour -cdrom, version disquette, et il y a aussi </nowiki><code>-fdb</code>, et donc certainement la possibilité d'utiliser 2 lecteurs de disquettes.<br />
* <code>-boot X</code><nowiki>: où X peut être a (floppy ou image), c (partition virtuelle), ou d (lecteur CD ou image), soit le périphérique sur lequel on va démarrer. Si l'on utilise qu'un seul périphérique (voir options précédentes), cette option est inutile. </nowiki><br />
* <code>-enable-audio</code><nowiki>: permet le support du son en émulant une carte-son SB16. celà pose quelques problèmes avec l'OS de Bill, qui, suivant les versions, peut avoir des soucis avec cette carte. </nowiki><br />
* <code>-m [memoire]</code><nowiki>: permet de spécifier la quantité de mémoire vive pour le système émulé; ne mettez pas la taille totale de votre mémoire car il faut en laisser pour le système hôte. Par défaut, cette valeur est de 128. </nowiki><br />
* <code>-k [lang]</code><nowiki>: (à partir de Qemu 0.6.1) précise le schéma du clavier: en-gb, en-us, fr, fr-ca, fr-be, fr-ch,...etc. par défaut, c'est en-us, mais une fois le système émulé lancé, c'est lui qui choisira le schéma (sauf pour les consoles virtuelles de Qemu). </nowiki><br />
* <code>-snapshot</code><nowiki>: pour écrire dans un fichier temporaire, au lieu d'une partition ou d'une image disque. </nowiki><br />
* <code>-nographic</code><nowiki>: désactive l'interface graphique, la sortie devenant la console ou a été lancé Qemu; c'est utile pour les systèmes en mode texte (Linux texte, Msdos...). </nowiki><br />
* <code>-fullscreen</code><nowiki>: l'option parle d'elle même. </nowiki><br />
<br />
=== Le réseau ===<br />
<br />
Par défaut, le réseau de l'OS invité transitera sur l'hôte par le biais de l'interface <code>/dev/net/tun0</code><nowiki>; toutefois, ce n'est pas le procédé le plus simple, car celle-ci n'est pas forcément présente sur le système et la créer peut nécessiter une compilation du noyau (rarement avec les distributions récentes). Je lui préfèrerai donc, pour plus de compatibilité, le mode "user":</nowiki><br />
<br />
* <code>-user-net</code><nowiki>: active le mode "user" pour le réseau; Qemu se comporte comme un serveur DHCP, qui attribut au système émulé l'adresse 10.0.2.15; ce système se connecte via une passerelle virtuelle à 10.0.2.2, et le DNS est à 10.0.2.3. L'inconvénient de ce procédé est que le système invité "voit" l'hôte, mais pas l'inverse. Attention, Microsoft Windows ne trouve pas toujours le serveur DHCP, il vaudra mieux le configurer avec une IP fixe. </nowiki><br />
* <code>-smb [dossier]</code><nowiki>: permet à l'invité d'accéder à un dossier partagé sur l'hôte, qui devra être équipé d'un serveur Samba; l'adresse de ce serveur pour l'invité est 10.0.2.4. </nowiki><br />
* <code>-tftp [préfixe]</code><nowiki>: active un serveur TFTP à l'adresse 10.0.2.2. </nowiki><br />
<br />
=== Les raccourcis clavier et le moniteur ===<br />
<br />
Il est aussi possible d'utiliser des raccourcis clavier, pour accéder à des fonctions supplémentaires:<br />
<br />
* <code>ctrl-alt-f</code><nowiki>: passe en plein-écran. </nowiki><br />
* <code>ctrl-alt-1</code><nowiki>: affichage graphique de l'invité. </nowiki><br />
* <code>ctrl-alt-2</code><nowiki>: passage au moniteur Qemu; attention, dans ces deux options, le 1 et le 2 sont à taper sur les chiffres hauts du clavier, pas sur le pavé numérique. </nowiki><br />
* <code>ctrl-alt</code><nowiki>: pour arrêter le contrôle de la souris dans l'invité, alors que pour l'activer, on avait cliqué dans la fenêtre de Qemu. </nowiki><br />
<br />
Le moniteur propose quelques commandes supplémentaires:<br />
<br />
* <code>info</code><nowiki>: affiche une liste des sous-rubriques d'informations. </nowiki><br />
* <code>eject [périphérique amovible]</code><nowiki>: éjecte un CD ou une disquette; on peut ajouter l'option </nowiki><code>-f</code> pour forcer l'éjection.<br />
* <code>change [périphérique ou image]</code><nowiki>: permet de changer de média amovible, périphérique ou image. </nowiki><br />
* <code>q</code> ou <code>quit</code><nowiki>: pour quitter Qemu (sans arrêter l'OS émulé proprement). </nowiki><br />
<br />
Avant la version 0.6.1, les raccourcis clavier était à base de "ctrl-shift...".Il y a existe d'autres commandes, il n'a été présenté que celles qui sont réelement indispensables. Pour plus de détails, je vous recommande de lire le très complet manuel de Qemu et qui se trouve dans <code>/usr/share/doc/qemu/</code>si vous avez installé un paquet binaire, ou dans <code>/usr/local/share/doc/qemu/</code> si vous avez installé à partir des sources. Le site officiel propose aussi une FAQ, et un forum. Enfin, les archives de la liste de diffusion de Lea-aide fourmillent de questions et de réponses, qui sont d'ailleurs à la base de cet article.<br />
<br />
=== Une petite astuce ===<br />
<br />
Si on utilise très souvent Qemu, il peut être pénible de taper toujours la même longue commande. On s'en sort en faisant un script-shell très simple, avec son éditeur de texte favori:<br />
<br />
<div class="code"><nowiki>#!/bin/sh</nowiki><br /> cd /chemin/du/dossier_ou_est_image/<br /> qemu -k fr -cdrom cd_de_OS.iso -hda<br /> hd.img -user-net -smb /home/toto/partage -boot c</div><br />
<br />
On sauvegarde ce fichier puis on le rend le éxécutable. On se fait un raccourci dans son menu, ou sur le bureau, avec le chemin complet du script en guise de commande: on vient de se simplifier la vie. Notez que je charge l'image du CD d'installation, au lieu de penser à mettre un CD dans le lecteur: si j'ai besoin, je pourrais changer via le moniteur de Qemu.<br />
<br />
== Plus... ==<br />
<br />
Sachez enfin qu'il existe un module additionnel pour accélérer l'émulation, Kqemu; celui-ci n'est, hélas, pas libre.Il n'est disponible qu'en tar.gz, et doit être placé dans le dossier où l'on a extrait les sources de Qemu avant la compilation de l'ensemble.Il faut préciser que Qemu ne présente normalement aucun risque pour le système hôte, mais vu la charge sur le processeur, je recommande de s'assurer que celui-ci est convenablement refroidi, et éventuellement de surveiller la température avec un utilitaire adéquat (Gkrellm par exemple); mon Athlon prend facilement 5°C dans ce cas, et c'est un modèle plutôt stable: inutile de préciser que c'est à vos risques et périls, vous êtes seul responsable de votre matériel. L'utilisation de Kqemu permet un gain de performance allant jusqu'a X 10 : dans ce contexte, la différence de temps d'exécution entre un OS natif et d'un OS émulé par Qemu est de l'orde de 20%.<br />
<br />
Voilà, j'espère que cet article est assez complet et simple à comprendre: c'était le but recherché.<br />
<br />
<div class="merci">Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par David Roux le 20/05/2005.</div><br />
<br />
= Copyright =<br />
Copyright &copy; 20/05/2005, David Roux<br />
{{CC-BY-NC-SA}}<br />
<br />
<br />
=Autres ressources=<br />
<br />
* [http://fabrice.bellard.free.fr/qemu/ La page de QEmu]</div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=Configuration_d%27Apache_httpd.conf&diff=9167
Configuration d'Apache httpd.conf
2005-10-14T18:00:44Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div>[[Category:Services Web]]<br />
= Configuration d'apache: httpd.conf =<br />
<br />
<div class="leatitre">Configuration d'apache: httpd.conf</div><div class="leapar">par [mailto:st@lea-linux.org serge]</div><div class="leadesc">Mettez un serveur Web dans votre LinBox.</div><br />
----<br />
<br />
== Introduction ==<br />
<br />
Apache est un serveur Web libre, c'est le standard comme serveur Web sous linux, mais aussi le serveur Web le plus utilisé sur Internet avec plus de 60% des sites d'Internet (contre environ 20% pour IIS). Donc cela ne peut que prouver sa stabilité et ses performances.<br />
<br />
S'il est très souvent disponible en standard sur les distributions mais on doit souvent le configurer pour ses propes besoins. <br />Je vais donc essayer de vous détailler le fichier '''httpd.conf''', fichier de configuration d'apache.<br />
<br />
Attention: Utilisez une version récente d'apache car: <br />- De nombreux bugs de sécurité ont été corrigé<br />- Cette documentation traite de la configuration des derniers serveurs apaches. Dans les anciennes versions, il y avait trois fichiers (<tt>httpd.conf</tt>, <tt>srm.conf</tt>, <tt>access.conf</tt>) mais maitenant tous sont regroupés dans un même fichier: <tt>httpd.conf</tt>. <br />Même si la compabilité avec les anciennes versions a été conservée (on peut toujours utiliser les anciens fichiers) je ne traite ici QUE du fichier <tt>httpd.conf</tt>.<br />
<br />
De plus cette documentation n'est pas encore tout à fait complète, il manque encore quelques options à expliquer, mais certaines me semblent obscures (je ne connais pas tout) ou difficiles à expliquer. J'espère compléter ce document assez vite (de même si vous voulez ajouter vos connaissances à ce document, n'hésitez pas à me [mailto:st@lea-linux.org mailer]<br />
<br />
Je ne traite pas de l'installation d'apache, car il est présent dans toutes les distributions. De plus son installation et sa compilation ne sont pas aisées du tout suivant le support que l'on veut lui intégrer. Il existe en effet plusieurs dizaines de facons de le compiler suivant les options que l'on veut lui passer. Mais dans la plupart des distributions, apache est configuré de telle facon que l'on peut y inclure des fonctionalités facilement grâce à des modules "DSO".<br />
<br />
== Configuration du fichier httpd.conf ==<br />
<br />
Pour cela on va éditer le fichier <tt>/chemin_d'install_apache/conf/httpd.conf</tt>. Si ce fichier n'existe pas vous devez alors avoir un fichier appelé <tt>httpd.conf-dist</tt>. Copiez le en <tt>httpd.conf</tt> et éditez-le. <br />Détaillons ce fichier, en cherchant les lignes enoncées ci dessous (si une ou plusieurs de ces options ne vous servent pas, commentez-les avec un # devant la ligne) <br /> <br />
<br />
'''<tt>ServerType standalone</tt>'''<br />
<br />
Cette ligne indique si apache se lance en '''autonome''' ('''standalone''') ou via '''inetd'''. <br />Pour la plupart des configurations, c'est en standalone. Si vous ne l'avez pas réinstallé, qu'apache était déja installé, ne modifiez pas cette ligne. Ceux qui ont créé votre distrib ont bien configuré cette ligne normalement. Si vous n'êtes pas sur, éditez le fichier '''/etc/inted.conf''' , si aucune ligne ne comporte '''httpd''' et que par contre vous avez un fichier du style '''rc.httpd''' ou '''Sxxhttpd '''ou ''' Sxxapchectl''' dans un sous-répertoire de '''/etc/rc.d''' alors c'est qu'il se lance en autonome. Inversement si une ligne httpd existe dans <tt>/etc/inetd.conf</tt>, alors il se lance en '''inetd'''.<br />
<br />
'''<tt>ServerRoot "/var/lib/apache"</tt>'''<br />
<br />
Vous indiquez ici le répertoire d'installation d'apache. Normalement les scripts d'installation ont bien renseigné cette ligne. Vérifiez quand même.<br />
<br />
'''<tt>LockFile /var/run/httpd.lock</tt>'''<br />
<br />
Laissez cette ligne comme elle est , c'est-à-dire commentée, pour 90% des cas (# devant).<br />
<br />
'''<tt>PidFile /var/run/httpd.pid</tt>'''<br />
<br />
Vérifiez bien que cette ligne soit décommentée. Elle indique au script de démarrage d'enregistrer le numéro de process d'apache pour que, lors de l'arrêt du sytème apache soit stoppé correctement.<br />
<br />
'''<tt>ScoreBoardFile /var/run/httpd.scoreboard</tt>'''<br />
<br />
Idem. Cette ligne doit exister, ce fichier stocke des informations pour le bon fonctionnement d'apache-lui même.<br />
<br />
'''<tt>RessourceConfig /conf/srm.conf</tt>'''<br />'''<tt>AcessConfig /conf/acess.conf</tt>'''<br />
<br />
Les anciens fichiers de configuration d'apache, qui ne sont plus utilisés maitenant (en fait tout est maintenant intégré dans <tt>httpd.conf</tt> pour simplifier). Ces options sont normalement commentées (# devant).<br />
<br />
'''<tt>Timeout 300</tt>'''<br />
<br />
Temps en millisecondes avant que le serveur n'envoie ou recoive un "timeout". <br />En fait quand le serveur attend une réponse d'un programme externe (parseur PHP, script CGI, etc..), si au bout de 3s il ne recoit pas cette réponse, il va envoyer un timeout au programme pour l'arrêter et renvoyer un timeout à l'utilisateur pour le prévenir d'une erreur. Laissez cette valeur par défaut à moins que vous vous aperceviez que des traitements prennent plus de temps que 3s et que le serveur n'attend pas assez longtemps. Ne montez pas trop haut cette valeur non plus car si le programme externe a "planté" ou si une erreur s'est produite, vous risquez de rendre inacessible le serveur apache pour trop de temps (toujours désagréable d'attendre 30s pour rien).<br />
<br />
'''<tt>KeepAlive on</tt>'''<br />
<br />
Autorise ou pas les connexions persistantes (plusieurs requêtes par connexion). En fait cela permet aux utilisateurs de votre serveur de lancer plusieurs requêtes à la fois. Cela permet d'accélérer les réponses du serveur. Laissez cette valeur par défaut la plupart du temps. Mais dans un environement très sollicité (serveur Web trés fréquenté) cela peut rendre le serveur indisponible pour d'autres utilisateurs ou faire monter le système en ressource. En gros pour de petits serveurs, laissez cette option sur "on". Pour un serveur très sollicité dont le système ralenti énormément ou devient indisponible asez souvent, essayez avec la valeur "off". Mais avant, essayez de baisser la valeur de l'option suivante.<br />
<br />
'''<tt>MaxKeepAliveRequests 100</tt>'''<br />
<br />
En combinaison avec l'option précédente, indique le nombre de requêtes pour une connexion. Laissez cette valeur assez haute pour de très bonnes performances. Si vous mettez '''''' comme valeur, '''vous autorisez en fait un nombre illimité '''(attention donc). Laissez la valeur par défaut là aussi.<br />
<br />
'''<tt>KeppAliveTimeout 15</tt>'''<br />
<br />
Valeur en seconde d'attente pour la requette suivante d'un même client sur une même connexion avant de renvoyer un timeout. Là aussi, laissez la valeur par défaut.<br />
<br />
'''<tt>MinSpareServers 5</tt>'''<br />'''<tt>MaxSpareServer 10</tt>'''<br />
<br />
Ces valeurs servent à l'autorégulation de charge du serveur. <br />En fait apache contrôle lui-même sa charge, suivant le nombre de clients qu'il sert et le nombre de requêtes envoyées par chaque client. Il fait en sorte que tout le monde puisse être servi et ajoute tout seul un certain nombre d'instances apaches pour servir de nouveaux clients qui se connecteraient. Si ce nombre est inférieur à '''MinSpareServers''', il en ajoute un. Si ce nombre dépasse la valeur de '''MaxSpareServer''', il en arrête. Ces valeurs par défaut conviennent à la plupart des sites.<br />
<br />
'''<tt>StartServers 5</tt>'''<br />
<br />
Nombre de serveurs à démarrer au lancement d'apache. <br /> <br />
<br />
'''<tt>MaxClients 150</tt>'''<br />
<br />
Contrôle le nombre maximum de serveurs pouvant etre lancés simultanément. Laissez donc cette valeur assez haute. Toutefois attention à son niveau pour ne pas qu'en cas de trop forte sollicitation, le serveur apache fasse "tomber" en ressource votre système. '''Cette valeur ne modifie pas la valeur de MaxKeepAliveRequests car ici Maxclients indique le nombre de clients maximum alors que MaxKeepAliveRequests indique le nombre de requêtes pour UN client'''.<br /><br />'''<u>Remarque:</u>''' Apache par défaut ne peut servir plus de 254 clients à la fois (c'est a dire si au même moment 254 clients se connectent simultanément, le serveur sature et certains clients doivent attendre avant de pouvoir accéder à votre site), donc la valeur de cette directive ne peut excéder 254 (apache vous signale un warning à son démarrage si vous dépassez cette valeur). Pour pouvoir servir plus de 254 clients simultanément, il faut recompiler apache et modifier dans les sources d'apache la valeur max de clients simultanés. Voir la documentation officielle d'apache pour cela.<br />
<br />
'''<tt>Listen 3000</tt>'''<br />'''<tt>Listen 12.34.56.78</tt>'''<br />
<br />
Indique au serveur des ports ou des adresses où il doit "écouter" pour des connexions '''EN PLUS '''de l'adresse et port par défaut. Voir l'option <tt>VirtualHost</tt> plus loin. <br /> <br />
<br />
'''<tt>BindAdress *</tt>'''<br />
<br />
Vous pouvez ici inclure un hôte virtuel en indiquant une adresse, toutes les adresses (*) ou un nom de domaine où le serveur va attendre des connexions. Voir là aussi l'option <tt>VirtualHost </tt>.<br />
<br />
'''<tt>LoadModule xxxxxx.mod libexec/yyyyyy.so</tt>'''<br />'''<tt>.....</tt>'''<br />'''<tt>AddModule zzzz.c</tt>'''<br />
<br />
Support pour les modules DSO. Si vous devez ajouter des modules à prendre en compte (par exemple pour ceux qui installent PHP en module dynamique), attention à l'ordre de chargement des modules qui a son importance car souvent un module dépend d'un autre module. Voir les documentations des modules que vous souhaitez ajouter.<br />
<br />
'''<tt>ExtendedStatus on</tt>'''<br />
<br />
Indique si le serveur doit renvoyer des informations complètes de status ('''on''') ou des informations réduites ('''off'''). <tt>off</tt> par défaut. Laissez cette valeur par défaut sauf en cas de développement et de débuggage. <br /> <br />
<br />
'''<tt>Port 80</tt>'''<br />
<br />
Port d'écoute du serveur par défaut. Vous pouvez le changer si vous désirez mais attention les clients cherchent normalement sur le port 80.<br />
<br />
'''<tt>User nobody</tt>'''<br />'''<tt>Group nobody</tt>'''<br />
<br />
User et group system avec lesquels le serveur est démarré. Pour des questions de sécurité laissez toujours ces options!''' Ne jamais spécifier root!'''<br />En fait si quelqu'un arrive à "exploiter" votre serveur (par exemple il arrive à faire exécuter du code par le serveur apache), il hérite des droits du serveur lui-même. Donc si c'est "nobody", il n'a aucun droit spécifique. Si c'est root ou un user réel, il aura alors les droits de ce user/group et pourra endommager grandement votre système.<br />
<br />
'''<tt>ServerAdmin root@localhost.domainname</tt>'''<br />
<br />
Adresse E-mail réelle de l'administrateur du site. Cette adresse est affichée par le serveur en cas d'erreur par exemple pour que les utilisateurs puissent en avertir l'administrateur. Mettez votre E-mail donc.<br />
<br />
'''<tt>ServerName www.domainname</tt>'''<br />
<br />
Adresse que le serveur va renvoyer au client Web. Il est astucieux de mettre www au lieu du nom de la machine réelle, comme cela les visiteurs ne voient pas le nom réel de votre machine (utile pour la sécurité aussi).<br />
<br />
'''<tt>DocumentRoot "/var/lib/apache/htdocs"</tt>'''<br />
<br />
Répertoire racine où se trouvent vos pages Web.<br />
<br />
'''<tt><Directory /></tt>'''<br />'''<tt> Options FollowSymLinks</tt>'''<br />'''<tt> AllowOverride None</tt>'''<br />'''<tt></Directory></tt>'''<br />
<br />
Pour des questions de sécurité, laissez cela par défaut. Cela laisse les permissions de tous les répertoires par défaut et n'autorise pas d'accès spéciaux même si un .htaccess existe (AllowOverride None). De ce fait, personne ne peux modifier les droits que vous avez imposés sur les répertoires où apache a accès. Voir plus bas les explications de chaque option passée.<br />
<br />
'''<tt><Directory "/var/lib/apache/htdocs"></tt>'''<br />'''<tt> Options Indexes FollowSymlinks Multiviews</tt>'''<br />'''<tt> AllowOverride None</tt>'''<br />'''<tt> Order allow,deny</tt>'''<br />'''<tt> allow from all</tt>'''<br />'''<tt></Directory></tt>'''<br />
<br />
Bon là, ce qu'on a fait, c'est qu'on définit cette fois les règles pour le répertoire <tt>/var/lib/apache/htdocs</tt> (pour notre exemple c'est le repertoire racine des pages Web), on autorise le serveur apache à suivre les liens symboliques (FollowSymlinks) , on empêche quiconque de changer ces règles (AllowOverride None) , puis on définit dans quel ordre appliquer les règles d'autorisation/refus de connexion (order allow,deny) et on autorise les connexions venant de n'importe quel hôte (Allow from all).<br />
<br />
Bon détaillons un peu comment ça marche. On commence toujours par:<br />
<br />
'''<tt><Directory xx></tt>'''<br />
<br />
Pour définir sur quel répertoire ('''xx''') on applique ces règles.<br />
<br />
'''<tt>Options</tt>''' : on définit les options pour ce répertoire qui sont pour les plus importantes : <br /> <br /> <br />
<br />
<center><br />
<br />
{| width="60%" border="1"<br />
| width="30%" | None<br />
| Désactive toutes les options.<br />
|-<br />
| All<br />
| Active toutes les options SAUF Multiviews.<br />
|-<br />
| Indexes<br />
| Permet aux utilisateurs d'avoir des indexes générés par le serveur. C'est à dire si l'index du répertoire (index.htm le + souvent) est manquant, cela autorise le serveur à lister le contenu du répertoire (dangereux suivant les fichiers contenus dans ce répertoire).<br />
|-<br />
| FollowSymLinks<br />
| Autorise à suivre les liens symboliques.<br />
|-<br />
| ExecCGI<br />
| Autorise à exécuter des scripts CGI à partir de ce répertoire.<br />
|-<br />
| Includes<br />
| Autorise des fichiers include pour le serveur.<br />
|-<br />
| IncludesNOEXEC<br />
| Permet les includes mais empêche la commande EXEC (qui permet d'exécuter du code).<br />
|-<br />
| Multiviews<br />
| Autorise les vue multiples suivant un contexte. Cela permet par exemple d'afficher les pages dans un language suivant la configuration du language du client.<br />
|-<br />
| SymLinksIfOwnerMatch<br />
| Autorise à suivre les liens seulement si le user ID du fichier (ou répertoire) sur lequel le lien pointe est le même que celui du lien.<br />
|}<br />
<br />
</center><br />
<br />
'''<tt>AllowOverride</tt>''' : définit comment sont gérés les fichiers .htaccess de ce répertoire: <br /> <br /> <br />
<br />
<center><br />
<br />
{| width="60%" border="1"<br />
| width="30%" | All<br />
| Gère tout ce qui est dans .htaccess<br />
|-<br />
| AuthConfig<br />
| Active les directives d'autorisations AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, <br /> AuthUserFile, require<br />
|-<br />
| FileInfo<br />
| Active les directives d'autorisations AddEncoding, AddLanguage, AddType, DefaultType, ErrorDocument, <br /> LanguagePriority<br />
|-<br />
| Limit<br />
| Active la directive d'autorisation Limit<br />
|-<br />
| None<br />
| Ne lit pas le fichier .htaccess et laisse les droits "Linux" de ce répertoire.<br />
|-<br />
| Options<br />
| Active la directive Option<br />
|}<br />
<br />
</center><br />
<br />
'''<tt>Order</tt>''' : Donne l'ordre d'application des règles Allow Deny: <br /> <br /> <br />
<br />
<center><br />
<br />
{| width="60%" border="1"<br />
| width="30%" | deny,allow<br />
| Applique les règles deny puis allow<br />
|-<br />
| allow,deny<br />
| Applique les règles allow puis deny<br />
|}<br />
<br />
</center><br />
<br />
'''<tt>Allow</tt>''' (ou '''<tt>deny</tt>'''): <br /> <br /> <br />
<br />
<center><br />
<br />
{| width="60%" border="1"<br />
| width="30%" | Nom d'hôte<br />
| Autorise les hôtes spécifié, les adresses IP, le nom de domaine, etc..(ou les refuse si la règle est deny)<br />
|-<br />
| All<br />
| Autorise tout le monde (ou refuse)<br />
|}<br />
<br />
</center><br />
<br />
'''<tt></Directory></tt>''' : Indique la fin des règles pour ce répertoire.<br />
<br />
A vous de placer vos règles suivant le contenu de vos répertoire accessibles par le Web. Il existe les mêmes règles pour les fichiers '''(<Files> </Files>)''' et les locations '''(<Location> </Location>)'''. Voir un exemple pour les fichiers '''(file)''' plus bas. <br /> <br />
<br />
'''<tt>AccesFileName .htaccess</tt>'''<br />
<br />
Nom du fichier des règles d'accès pour les règles AllowOverride. <br />Un conseil : placez comme vu précédemment une règle file du style:<br />
<br />
'''<tt><Files ~ "^\.ht"></tt>'''<br />'''<tt> Order allow,deny</tt>'''<br />'''<tt> Deny from all</tt>'''<br />'''<tt> </Files></tt>'''<br />
<br />
pour interdire aux visiteurs la possibilité voir le contenu des fichiers .ht qui contiennent les règles de sécurité.<br />
<br />
'''<tt><nowiki>#CacheNegotiatedDocs</nowiki></tt>'''<br />
<br />
Autorise ou pas les proxies à mettre en cache les documents (pour autoriser, enlevez le commentaire # en début de ligne)<br />
<br />
'''<tt>UseCanonicalName On</tt>'''<br />
<br />
Sur '''on''', remet l'url par rapport aux valeurs "Server" et "Port" spécifié plus haut dans le fichier <tt>httpd.conf</tt>, sur '''off''' utilise l'url que le client a utilisée. Attention , mettre sur ''on ''si vous utilisez des CGI avec des variables SERVER_NAME car si l'url du client n'est pas la même que celle du CGI, votre script CGI ne marchera pas.<br />
<br />
'''<tt>DefaultType </tt>''' '''<tt>text/plain</tt>'''<br />
<br />
Type mime par défaut que le serveur renvoie aux clients. Convient dans la plupart des cas. Si par-contre votre serveur web envoie principalement des images, du streaming, etc... modifiez la valeur par <br />"'''application/octet-stream'''" pour éviter que les clients essaient de visualiser du binaire (ce qui va leur donner comme résultat des "'''ù*$kfdPmm%ù'''" au lieu d'afficher une video par exemple. Le client doit pouvoir prendre en compte alors le fichier grâce à un plugin et il doit avoir ses types mimes configurés pour lancer l'application associée.<br />
<br />
'''<tt>HostNameLookups off</tt>'''<br />
<br />
Indique si le serveur enregistre le nom (sur on) du client ou l'adresse IP (sur off)<br />
<br />
'''<tt>ErrorLog /var/log/error_log</tt>'''<br />
<br />
Chemin complet du fichier où les erreurs apaches seront enregistrées<br />
<br />
'''<tt>LogLevel warn</tt>'''<br />
<br />
Niveau d'enregistrement des erreurs avec comme valeurs possibles: <br /> <br /> <br />
<br />
<center><br />
<br />
{| width="60%" border="1"<br />
| width="30%" | emerg<br />
| Enregistre seulement les erreurs qui rendent le serveur inutilisable<br />
|-<br />
| Alert<br />
| "emerg" + erreurs nécessitant une intervention.<br />
|-<br />
| Crit<br />
| "emerg" + "Alert" + erreurs critiques (accès réseau impossible par exemple)<br />
|-<br />
| error<br />
| "ermerg" + "Alert" + "Crit" + erreurs dans les pages, les scripts<br />
|-<br />
| warn<br />
| "ermerg" + "Alert" + "Crit" + "error" + erreurs non bloquantes (pages mal codées, scripts comportant des erreurs non bloquantes...)<br />
|-<br />
| info<br />
| "ermerg" + "Alert" + "Crit" + "error" + "Warn" + toutes les informations générées<br />
|-<br />
| debug<br />
| Enregistre TOUT ce qui peut se passer sur le serveur (un client demande une page: on enregistre)<br />
|}<br />
<br />
</center><br />
<br />
La plupart du temps, le niveau warn suffit (info et debug fournissent trop d'informations) <br /> <br />
<br />
'''<tt>ServerSignature on</tt>'''<br />
<br />
Si on ajoute la signature (version, OS...) du serveur lorsqu'il génère des pages lui même (index manquant, erreur de script, etc....) , off ne nontre que l'erreur, et sur Email ajoute un lien vers l'email définit plus haut dans ce fichier.<br />
<br />
'''<tt>Alias faux_nom nom_réel</tt>'''<br />
<br />
permet de faire des alias de répertoires (des liens en quelque sorte)<br />
<br />
'''<tt>ScriptAlias /cgi-bin/ chemin_complet_des_cgi</tt>'''<br />
<br />
Alias pour les scripts CGI<br />
<br />
'''<tt>AddType type extensions</tt>'''<br />
<br />
Permet de définir des extensions de fichiers pour des applications (mime type). Si on veut ajouter le support PHP4, on doit ajouter ici:<br />
<br />
'''<tt>AddType application/x-httpd-php .php</tt>'''<br />'''<tt> AddType application/x-httpd-php-source .phps</tt>'''<br />
<br />
Ou pour du PHP3:<br />
<br />
'''<tt>AddType application/x-httpd-php3 .php3</tt>'''<br />'''<tt> AddType application/x-httpd-php3-source .phps</tt>'''<br />
<br />
Il faut en plus que vous ayez compiler PHP en module DSO (module dynaique) et ajouter les lignes '''<tt>modules </tt>'''comme décrit plus haut pour activer le support PHP (voir la doc d'installation de PHP). <br /> <br />
<br />
'''<tt> AddHandler cgi-script .cgi</tt>''''''<tt></tt>'''<br />
<br />
Pour utiliser les scripts CGI. <br /> <br />
<br />
Et enfin les définitions de "virtual host" pour faire des serveurs virtuels suivant des répertoires, etc...<br />
<br />
'''<tt><VirtualHost ip_ou_adresse_virtuelle></tt>'''<br />'''<tt> ServerAdmin email_webmaster@hoste_virtuel</tt>'''<br />'''<tt> DocumentRoot racine_hote_virtuel</tt>'''<br />'''<tt> ServerName nom_server_virtuel</tt>'''<br />'''<tt> ErrorLog chmein_complet_errorlog</tt>'''<br />'''<tt> </VirtualHost></tt>'''<br /> <br /><br /> Explication sur les VirtualHost:<br /> Les virtualhosts permettent de mettre plus d'un site web par IP, en les appelant par nom de domaine ou par IP. Ce qui permet d'avoir des centaines de sites sur un serveur n'ayant qu'une seule IP (c'est comme cela que font tous les hébergeurs, ils ne prennent pas une nouvelle IP pour chaque nouveau client hébergé).<br /><br /> Par exemple, votre serveur web héberge deux sites web d'url: www.domaine1.com et www.domaine2.com, et a comme adresse IP: 80.10.20.30, voici comment définir les deux VirtualHost:<br /><br /><tt> NameVirtualHost 80.10.20.30<br /><br /> <VirtualHost 80.10.20.30><br /> ServerAdmin webmaster@domain1.com<br /> DocumentRoot /home/domain1/www<br /> ServerName www.domain1.com<br /> ErrorLog /var/log/apache/domain1-error.log<br /> CustomLog /var/log/apache/domain1-access.log combined<br /> ServerAlias domain1.com<br /> </Virtualhost><br /><br /> <VirtualHost 80.10.20.30><br /> ServerAdmin webmaster@domain2.com<br /> DocumentRoot /home/domain2/www<br /> ServerName www.domain2.com<br /> ErrorLog /var/log/apache/domain2-error.log<br /> CustomLog /var/log/apache/domain2-access.log combined<br /> ServerAlias domain2.com<br /> </Virtualhost><br /><br /> </tt> <tt>NameServer</tt> permet de définir sur quelle IP les virtualhosts sont définis.<br /><tt><VirtualHost></tt> permet de définir un nouvel hôte virtuel apache, avec son adresse IP associée. En combinaison avec la directive <tt>ServerName</tt> il définit aussi le nom avec lequel le serveur doit etre appelé. Cela signifie que si le serveur reçoit une requête sur son IP 80.10.20.30 avec le nom "www.domain1.com", le serveur va donc fournir les pages webs contenues dans <tt>/home/domain1/www</tt> (grâce à la directive <tt>DocumentRoot</tt>).<br />De la même facon, il va fournir les pages de <tt>/home/domain2/www</tt> si on appelle celle-ci avec l'url www.domain2.com.<br /><br />Pour que cela fonctionne, il faut bien sur qu'un serveur DNS soit configuré pour faire pointer www.domain1.com et www.domain2.com sur l'IP 80.10.20.30.<br /><br /> Les directives <tt>ErrorLog</tt> et <tt>Customlog</tt> permettent de définir les fichier logs de chaque hôte virtuel (autrement les logs s'ajouteront aux logs principaux du serveur défini dans les directives en dehors de la directive <tt><VirtualHost></tt>.<br /><br /><tt>ServerAlias</tt> permet d'indiquer sous quel autre nom l'hôte virtuel peut etre appelé (ici domainX.com en plus de www.domainX.com), bien sur là aussi le serveur DNS doit être configuré pour faire pointer domainX.com sur 80.10.20.30<br /><br /><br /> Une autre facon de faire des hôtes virtuels, si on n'a pas plusieurs noms de domaine, est de la faire par IP ou par IP et Port.<br /><br /> Par IP, il suffit de faire des <tt><VirtualHost ip1></tt> et <tt><VirtualHost ip2></tt> etc... , et par port il suffit de faire des <tt><VirtualHost ip:port1></tt> <tt><VirtualHost ip:port2></tt><br /><br /> Il faut aussi des directives de <tt>Bind</tt> et <tt>Listen</tt> sur chaque IP et port supplémentaire (voir les directives Listen et Bind plus haut dans ce document).<br /><br /> Dans chaque virtualhost, vous pouvez aussi ajouter d'autres directives, comme les directives de <tt>ScriptAlias</tt> (pour l'exécution de cgi), de <tt>Directory</tt> (option des répertoires du site), ... En gros, toutes les directives peuvent être redéfinies dans chaque VirtualHost pour configurer le site web virtuel. Voir pour cela la documentation officielle d'apache. Pour chaque directive, il est spécifié si elle peut être utilisé dans un contexte de VirtualHost ou pas.<br /><br /> Voilà donc pour les principales directives utilisées dans <tt>httpd.conf</tt>. D'autre directives existent (voir la doc officielle), et les modules chargés par apache ajoutent eux aussi des directives spécifiques (voir la documentation du module ajouté).<br /><br /><br />
<br />
<div class="merci">Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Serge Tchesmeli le 15/10/1999.</div><br />
<br />
= Copyright =<br />
Copyright &copy; 15/10/1999, Serge Tchesmeli<br />
{{LDL}}<br />
<br />
<br />
=Autres ressources=<br />
<br />
* [http://www.apache.org/ Site officiel Apache]</div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=Pont_filtrant&diff=9166
Pont filtrant
2005-10-14T18:00:43Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div>[[Category:Sécurité]]<br />
= Les ponts filtrants =<br />
<br />
<div class="leatitre">Les ponts filtrants</div><div class="leapar">[mailto:olio@altern.org Tchesmeli serge]</div><div class="leadesc">Un firewall totalement invisible</div><br />
----<br />
<br />
== Introduction ==<br />
<br />
Un pont est un équipement réseau qui permet de relier deux sous-réseaux de manière totalement transparente. Pour ceux qui connaissent un peu le modèle OSI, il effectue une interconnexion au niveau 2, c'est-à-dire qu'il travaille au niveau des trames.<br /> En gros, un pont écoute toute l'activité de chaque sous-réseau auquel il est connecté, les stocke en mémoire et les redirige vers le (ou les) sous-réseaux concernés.<br /> Il n'a pas besoin d'adresse MAC (donc pas besoin d'adresse IP non plus) pour fonctionner, et est donc totalement indétectable.<br />
<br />
Schématiquement, on peut représenter un pont reliant deux réseaux de cette facon (le pont est la machine servant de pont, <tt>eth0</tt> et <tt>eth1</tt> ses deux cartes réseau):<br />
<br />
Réseau 1 -------| eth0 Pont eth1 |-------- Réseau 2<br />
<br />
Un pont filtrant, lui, est un pont comme décrit plus haut, mais va en plus appliquer des régles de filtrage (firewalling) sur les trames qui vont le "traverser". On vas donc obtenir un firewall qui ne posséde pas d'adresse réseau, donc indétectable. Difficile pour un "pirate" d'attaquer une machine qui n'est pas visible sur un réseau, et qui ne permet aucune connexion réseau car elle n'as pas d'adresse réseau.<br />
<br />
Un pont filtrant a aussi un autre avantage : il s'interconnecte de façon totalement transparente sur votre réseau, vous n'avez absolument pas besoin de modifier la topologie de votre réseau (routage, passerelle,...) pour l'ajouter. Il se comporte en gros comme un simple cable réseau intelligent qui filtrerait le traffic qui le traverse.<br />
<br />
== Pré-requis ==<br />
<br />
Tout d'abord vous devez avoir un ordinateur avec deux cartes réseaux pour pouvoir interconnecter /filtrer les deux réseaux. Le support du "pont" est intégré à partir du kernel 2.4. , mais vous devez prendre le dernier kernel à jour (2.4.19 lors de la rédaction de ce document) pour avoir le meilleur support du pont. Vous devez aussi appliquer un patch kernel, pour ajouter le support du pont à iptable (pour pouvoir filtrer les paquets qui vont traverser le pont):<br />[http://bridge.sourceforge.net/devel/bridge-nf/bridge-nf-0.0.7-against-2.4.19.diff bridge-nf-0.0.7-against-2.4.19.diff]<br /> Ceci est le patch pourle kernel 2.4.19. Si lors de la lecture de ce document, le dernier kernel n'est plus le 2.4.19, récupérez alors le patch pour la version du kernel actuelle que vous trouverez ici:<br />[http://bridge.sourceforge.net/download.html Site officiel "pont filtrant" pour Linux]<br />
<br />
Appliquez alors le patch à votre kernel, pour le 2.4.19 par exemple, allez dans le répertoire des sources du kernel et faites un :<br /><br /><tt>patch -p1 < bridge-nf-0.0.7-against-2.4.19.diff</tt><br /><br /> Recompilez alors votre kernel, en activant dans la partie <tt> Network Options </tt><nowiki>:</nowiki><br /><tt>Network Packet Filtering (remplace ipchains)</tt> (em module ou en natif)<br /> Passez en module (ou en natif) toutes les options de :<br /><tt> IP: Netfilter Configuration </tt><br /><br /> et activer aussi le support du pont :<br /><br /><tt> [*] 802.1d Ethernet Bridging</tt><br /><br /> A partir de ce moment, notre machine peut faire office de pont, et filtrer les paquets du pont.<br /> Il vous faut aussi les utilitaires de configuration, c'est à dire les programmes pour configurer le pont lui-même, que vous téléchargez ici:<br />[http://bridge.sourceforge.net/bridge-utils/bridge-utils-0.9.6.tar.gz bridge-utils-0.9.6.tar.gz]<br /><br /> Comme avec n'importe quelle source de programmes, vous "détarballez" et compilez le tout :<br /><br /><tt> tar zxvf bridge-utils-0.9.6.tar.gz <br /> cd bridge-utils<br /> ./configure <br /> make <br /> make install <br /><br /> </tt><br />
<br />
== Configuration du pont lui même ==<br />
<br />
Comme nous l'avons dit plus haut, le pont en lui-même n'a pas besoin d'adresse IP (ni même d'adresse MAC) pour fonctionner. Donc dans un premier temps, nous enlevons toute adresse IP des deux cartes réseaux qui constituent notre pont, et les passons en mode "promisc" pour qu'elles puissent écouter tout le réseau et donc transférer les trames réseaux d'un réseau à l'autre.<br />'''<u>ATTENTION</u>''' Si vous etes en telnet ou ssh sur cette machine, la connexion va être coupée, faites donc ces manipulations en console sur la machine elle-même.<br /><br /><tt> ifconfig eth0 0.0.0.0 promisc<br /> ifconfig eth1 0.0.0.0 promisc<br /> </tt> Maitenant nous mettons en place le pont lui-même, c'est-à-dire nous donnons un nom au bridge lui-même (mon-pont) et déclarons les interface réseaux qui vont servir au pont (eth0 et eth1):<br /><br /><tt> brctl addbr mon-pont<br /><br /> brctl addif mon-pont eth0<br /> brctl addif mon-pont eth1<br /> </tt> Pour certains équipement actifs (switch, routeur, etc) le pont doit se "déclarer" pour que tout fonctionne bien. Si la connexion entre les deux réseaux ne fonctionne pas, essayez ces commandes (mais dans 90% des cas cela n'est pas nécessaire) : <br /><br /><tt> brctl sethello mon-pont 1<br /> brctl setfd mon-pont 4<br /> </tt><br />
<br />
Pour vérifier que tout marche, normalement toute machine du réseau1 doit pouvoir pinguer toutes les machines du réseau2 et inversement. Et si vous faites un "traceroute" d'une machine du réseau1 vers le réseau2 (ou inversement), vous ne verrez PAS le pont. Il se comporte là comme un simple "fil" reliant les deux réseaux.<br /><br /> Par contre, vous avez peut-être besoin d'accéder en réseau à la machine qui sert de pont (pour faire du ssh ou autre), il faut donc lui donner une adresse IP. Mais comment faire étant donné que les deux interfaces réseaux servent au pont ? Il y a deux solutions :<br /><br /> - Soit vous ajoutez une 3éme carte réseau a cette machine, que vous configurez normalement, avec une adresse IP etc.... <br /> - Soit vous configurez le pont lui-même AVEC une adresse Ip. Le pont se comporte donc exactement comme une interface réseau et pour lui affecter une adresse IP, on le fait de la même manière que pour une interface "normale", par exemple :<br /><br /><tt>ifconfig mon-pont 192.168.1.50 netmask 255.255.255.0 </tt><br /><br /> Et si vous refaites des traceroute, vous ne le verrez toujours PAS sur le résultat du traceroute.<br /><br /> Placez toute ces commandes dans un fichier de démarrage de votre machine bien sur, pour ne pas avoir à tout retaper à chaque reboot.<br /><br />
<br />
== Mise en place du Filtrage ==<br />
<br />
Maitenant que notre pont est opérationnel, il ne reste plus qu'à lui appliquer les règles de filtrage que l'on souhaite. Comme le traffic réseau ne fait QUE le traverser, les règles de filtrage ne sont que des règles de forwarding bien sûr (pas de INPUT ni OUPUT). On applique les règles comme pour un firewall de type "gateway" sauf la chaîne "FORWARD".<br /><br /> Je vous donne ici un exemple de filtrage (à vous d'adapter, suivant votre réseau, vos applications - voir la rubrique iptable pour cela).<br /> Appeler ce fichier <tt>rc.firewall</tt> par exemple et lancez-le au boot de la machine. <br /><br /><br />
<br />
<nowiki><br />
#!/bin/bash<br />
# Script Firewalling exemple<br />
<br />
PATH="/usr/sbin:$PATH"<br />
<br />
# On vide les chaines <br />
iptables -F<br />
<br />
#On efface toute les chaines utilisateurs<br />
iptables -X<br />
<br />
#Notre réseau que l'on sécurise:<br />
LANS="192.168.0.0/255.255.255.0"<br />
<br />
# Adresse de notre serveur web et ftp<br />
WEB="192.168.0.10"<br />
FTP="192.168.0.20"<br />
<br />
#On créé la chaine KEEP_STATE pour suivre l'état des connexions<br />
iptables -N KEEP_STATE<br />
iptables -F KEEP_STATE<br />
<br />
#On drop les paquets non valides<br />
iptables -A KEEP_STATE -m state --state INVALID -j DROP<br />
<br />
#On accepte les paquets provenant bien<br />
#d'une connexion et dont l'etat est correct<br />
iptables -A KEEP_STATE -m state --state RELATED,ESTABLISHED -j ACCEPT<br />
<br />
#On drop et log tout paquet dans un état incorect et<br />
#qui permet des scans/Denial of service<br />
iptables -A FORWARD -p tcp --tcp-flags ALL FIN,URG,PSH \<br />
-m limit --limit 5/minute \<br />
-j LOG --log-level notice --log-prefix "NMAP-XMAS: "<br />
iptables -A FORWARD -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP<br />
iptables -A FORWARD -p tcp --tcp-flags SYN,FIN SYN,FIN \<br />
-m limit --limit 5/minute \<br />
-j LOG --log-level notice --log-prefix "SYN/FIN: "<br />
iptables -A FORWARD -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP<br />
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN,RST \<br />
-m limit --limit 5/minute \<br />
-j LOG --log-level notice --log-prefix "SYN/RST: "<br />
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN,RST -j DROP<br />
iptables -A FORWARD -p tcp --tcp-flags RST RST,ACK \<br />
-m limit --limit 5/minute \<br />
-j LOG --log-level notice --log-prefix "RST/ACK: "<br />
iptables -A FORWARD -p tcp --tcp-flags RST RST,ACK -j DROP<br />
<br />
#On passe les paquets valides dans notre chaine KEEP_STATE<br />
iptables -A FORWARD -j KEEP_STATE<br />
<br />
#On permet le controle de "time exceeded"<br />
#et de "port not found" sur notre réseau<br />
iptables -A FORWARD -p udp -s $LANS --dport 11 -j ACCEPT<br />
iptables -A FORWARD -p udp -s $LANS --dport 3 -j ACCEPT<br />
<br />
#On permet le http sur notre serveur web<br />
iptables -A FORWARD -p tcp -d $WEB --dport 80 -j ACCEPT<br />
<br />
#On permet le Ftp sur notre serveur FTP<br />
iptables -A FORWARD -p tcp -d $FTP --dport 21 -j ACCEPT<br />
<br />
# Tout notre réseau a le droit de "sortir" vers l'internet<br />
iptables -A FORWARD -s $LANS -j ACCEPT<br />
<br />
# Tout ce qui n'est pas déclaré doit etre bloqué<br />
iptables -A FORWARD -j DROP<br />
</nowiki><br />
<br />
<div class="merci">Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Tchesmeli serge le 01/11/2002.</div><br />
<br />
= Copyright =<br />
Copyright &copy; 01/11/2002, Tchesmeli serge<br />
{{LDL}}<br />
<br />
<br />
=Autres ressources=<br />
<br />
* [http://bridge.sourceforge.net/ Site officiel "Linux ethernet bridging"]<br />
* [http://www.madchat.org/netadm/firewall/Howto_Ipfilter_pdf.PDF construction d'un bridge / firewall sous BSD]</div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=Iptables_pare-feu&diff=9165
Iptables pare-feu
2005-10-14T18:00:41Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div></div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=Iptables&diff=9164
Iptables
2005-10-14T18:00:37Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div>[[Category:Sécurité]]<br />
= IpTables par l'exemple =<br />
<br />
<div class="leatitre">IpTables par l'exemple</div><div class="leapar">Arnaud de Bermingham</div><div class="leadesc">IpTables par l'exemple</div><br />
----<br />
<br />
''Contact : [mailto:duracell chez apinc point org duracell chez apinc point org]''<br />''révision par Jice <[mailto:jice chez lea-linux point org jice chez lea-linux point org]>''<br />''révision par Fred <[mailto:fred chez lea-linux point org fred chez lea-linux point org]>''<br />
<br />
== Introduction ==<br />
<br />
Cet article présente de façon pratique la mise en place d'un firewall / proxy sur une machine Linux tournant avec un noyau 2.4. <br />Pour des informations plus théoriques sur les firewall/proxies, vous pouvez lire l'[firewall.php3 article firewall].<br />
<br />
=== <nowiki>* Présentation d'IpTables</nowiki> ===<br />
<br />
IpTables est une solution complète de firewall (noyau 2.4) remplaçant ''ipchains'' (noyau 2.2) tournant sous le système GNU/Linux. IpTables permet de faire du firewalling ''stateful'' (à états), de la translation de port et d'adresse, du filtrage au niveau 2 et beaucoup d'autres choses que nous n'allons pas aborder comme le "Mangle" ou modification des paquets à la volée (atchoum).<br />
<br />
IpTables est fiable et dispose de très nombreuses options qui permettent de faire du filtrage très fin.<br />
<br />
=== <nowiki>* Licence de cet article</nowiki> ===<br />
<br />
Cette documentation est sous licence LDP<br />
<br />
=== <nowiki>* Licence de NetFilter</nowiki> ===<br />
<br />
NetFilter est sous licence libre GPL, i.e. gratuit et modifiable du moment que les modifications et améliorations apportées soit rendues publiques.<br />
<br />
== 1/ Installation ==<br />
<br />
=== 1.1/ Prérequis ===<br />
<br />
IpTables est installé en standard sur de nombreuses distributions Linux récentes. En particulier, il est installé sur Linux RedHat 7.1 et sur la plupart des distributions basées sur un kernel 2.4.x.<br />
<br />
IpTables a besoin d'un '''kernel de génération 2.4''' compilé avec des options spéciales. Ceci ne pose pas de problèmes avec les noyaux 2.4 génériques des principales distributions basées sur cette génération de kernel.<br />
<br />
=== 1.2/ Options de compilation du kernel ===<br />
<br />
Si vous désirez re-compiler votre kernel, il faut spécifier les options nécessaires au fonctionnement d'iptables.<br />
<br />
Les options suivantes doivent êtres activées en module (<tt>M</tt>) ou dans le kernel (<tt>Y</tt>) :<br />
<br />
<tt>CONFIG_PACKET</tt><br /><tt>CONFIG_NETFILTER</tt><br />
<br />
<tt>CONFIG_IP_NF_CONNTRACK</tt><br /><tt>CONFIG_IP_NF_FTP</tt><br /><tt>CONFIG_IP_NF_IRC</tt><br /><tt>CONFIG_IP_NF_IPTABLES</tt><br /><tt>CONFIG_IP_NF_FILTER</tt><br /><tt>CONFIG_IP_NF_NAT</tt><br /><tt>CONFIG_IP_NF_MATCH_STATE</tt><br /><tt>CONFIG_IP_NF_TARGET_LOG</tt><br /><tt>CONFIG_IP_NF_MATCH_LIMIT</tt><br /><tt>CONFIG_IP_NF_TARGET_MASQUERADE</tt><br />
<br />
et éventuellement :<br />
<br />
<tt>CONFIG_IP_NF_COMPAT_IPCHAINS</tt> pour garder la compatibilité avec <u>ipchains</u>. <br /><tt>CONFIG_IP_NF_COMPAT_IPFWADM</tt> pour garder la compatibilité avec <u>ipfwadm</u>. <br /><tt>CONFIG_IP_NF_TARGET_REDIRECT</tt> indispensable, pour les proxies transparents par exemple. <br /><tt>CONFIG_IP_NF_MATCH_MAC</tt> permet de matcher avec les adresses MAC.<br />
<br />
Ne pas oublier le support réseau et TCP/IP et compiler le kernel comme d'habitude : <br /><tt>make dep && make clean && make bzImage && make modules && make modules_install</tt><br />
<br />
=== 1.3/ Installation ===<br />
<br />
Sur une RedHat 7.1, récupérer le package <tt>netfilter</tt> et l'installer comme d'habitude avec <tt>rpm -Uvh netfilter-x.y.z.rpm</tt>. <br />Sur les versions inférieures a la 7.1, il faut compiler un kernel 2.4 car iptables ne supporte pas les kernels 2.2.x. La compilation de iptables est complexe. Le mieux est de lire le fichier INSTALL du package des sources.<br />
<br />
=== 1.4/ Chargement des modules ===<br />
<br />
Dans le cas ou les options iptables du kernel ont étés compilées en modules, il est nécessaire de charger ces modules avant de pouvoir utiliser iptables :<br />
<br />
<tt><nowiki># modprobe ip_tables</nowiki></tt><br />
<br />
selon les besoins, on peut éventuellement charger les modules suivants :<br />
<br />
<blockquote><tt><nowiki># modprobe ip_nat_ftp</nowiki></tt><br /><tt><nowiki># modprobe ip_nat_irc</nowiki></tt><br /><tt><nowiki># modprobe iptable_filter</nowiki></tt><br /><tt><nowiki># modprobe iptable_mangle</nowiki></tt><br /><tt><nowiki># modprobe iptable_nat</nowiki></tt></blockquote><br />
<br />
Si on a besoin de pouvoir forwarder<sup><nowiki>*</nowiki></sup> les paquets IP (dans la plupart des cas), il sera nécessaire d'exécuter cette commande :<br />
<br />
<blockquote><tt><nowiki># echo 1 > /proc/sys/net/ipv4/ip_forward</nowiki></tt></blockquote><br />
<br />
afin de l'indiquer au noyau.<br />
<br />
; <sup><nowiki>* </nowiki></sup><u>forwarder</u><br />
: il s'agit de faire passer des paquets IP d'une interface réseau vers une autre. Par exemple, un paquet qui arrive de l'internet via un modem ou une carte réseau sera ''redirigé'' (ou ''forwardé'') vers la carte réseau par laquelle le firewall est attaché au réseau local.<br />
<br />
'''Nota Bene :''' tous les modprobe semblent inutiles car le kernel les chargent automatiquement si l'on se sert de l'une des fonctionnalités d'iptables.<br />
<br />
== 2/ Présentation ==<br />
<br />
=== 2.1/ Les tables ===<br />
<br />
* '''Table NAT''' (Network Address Translation) : Table utilisée pour la translation d'adresse ou la translation de port. <br />Il a 2 types de chaînes<sup><nowiki>#</nowiki></sup> : ''PREROUTING'' qui permet de spécifier "à l'arrivée du firewall" et la chaîne ''POSTROUTING'' qui permet de spécifier "à la sortie du firewall". Il existe 3 targets (ou cibles) : ''DNAT<sup><nowiki>*</nowiki></sup>, SNAT<sup><nowiki>*</nowiki></sup>'' et ''MASQUERADE<sup><nowiki>*</nowiki></sup>''.<br />
* '''Table FILTER''' : C'est la table par défaut lorsque l'on en spécifie pas. <br />Cette table contient toutes les règles de filtrage, il existe 3 types de chaînes : ''FORWARD'' pour les paquets passant par le firewall, ''INPUT'' pour les paquets entrant et ''OUTPUT'' pour les paquets sortants. Les cibles disponibles sont : ''ACCEPT, DENY, DROP, REJECT °''.<br />
* '''Table Mangle''' : C'est la table qui contient les règles pour la modification de paquets. <br />Elle est peu utilisée et ne sera pas décrite dans cet article.<br />
<br />
<u>A noter</u> : Les règles sont matchées dans l'ordre, par défaut la table ''FILTER'' est vide et donc accepte tout. Aucune règle de translation d'adresse n'est présente par défaut.<br />
<br />
; <sup><nowiki>#</nowiki></sup> <u>chaîne</u><br />
: une chaîne est une suite de règles, qui sont prises dans l'ordre ; dès qu'une règle matche un paquet, elle est déclenchée, et la suite de la chaîne est ignorée.<br />
; * <u>SNAT</u><br />
: permet de modifier l'adresse source du paquet.<br />
; * <u>DNAT</u><br />
: permet de modifier l'adresse destination du paquet.<br />
; * <u>MASQUERADE</u><br />
: Une gateway transforme les paquets sortants passant par elle pour donner l'illusion qu'ils sortent de la gateway elle-même par un port alloué dynamiquement ; lorsque la gateway recoit une réponse sur ce port, elle utilise une table de correspondance entre le port et les machines du réseau privé qu'elle gère pour lui faire suivre le paquet.<br />
; ° <u>policy ACCEPT</u><br />
: permet d'accepter un paquet grâce à la règle vérifiée.<br />
; ° <u>policy DROP</u><br />
: Rejet d'un paquet sans message d'erreur si la règle est vérifiée ("non ! j'en veux pas mais je dis rien à l'expediteur").<br />
; ° <u>policy REJECT</u><br />
: Rejet avec un retour de paquet d'erreur à l'expediteur si la la règle est verifiée ("un paquet recommandé de La Poste refusé par son destinataire").<br />
<br />
=== 2.2/ Les commandes ===<br />
<br />
IpTables n'est pas livré avec une interface graphique ; les commandes et les règles sont passées en ligne de commande. Le mieux est d'écrire des scripts (à rajouter dans <tt>/etc/rc.d/init.d</tt>) qui permettent d'appliquer toutes les règles d'un seul coup, dès le démarrage du Linux.<br />
<br />
==== 2.2.1/ Commandes principales ====<br />
<br />
<tt>-A --append</tt> : Ajoute la règle à la fin de la chaîne spécifiée <br />''<font color="#770000">Exemple :</font>''<br /><tt><font color="#770000"><nowiki># iptables -A INPUT ...</nowiki></font></tt><br />
<br />
<tt>-D --delete</tt> : Permet de supprimer une chaîne. On peut la matcher de 2 manières, soit en spécifiant le numéros de la chaîne a supprimer, soit en <br />spécifiant la règle à retirer. <br />''<font color="#770000">Exemples :</font>''<br /><tt><font color="#770000"><nowiki># iptables -D INPUT --dport 80 -j DROP</nowiki></font></tt><br /><tt><font color="#770000"><nowiki># iptables -D INPUT 1</nowiki></font></tt><br />
<br />
<tt>-R --replace</tt> : Permet contrairement à <tt>--delete</tt> de remplacer la chaîne spécifiée. <br />''<font color="#770000">Exemple :</font>''<br /><tt><font color="#770000"><nowiki># iptables -R INPUT 1 -s 192.168.0.1 -j DROP</nowiki></font></tt><br />
<br />
<tt>-I --insert</tt> : Permet d'ajouter une chaîne dans un endroit spécifié de la chaîne. <br />''<font color="#770000">Exemple :</font>''<br /><tt><font color="#770000"><nowiki># iptables -I INPUT 1 --dport 80 -j ACCEPT</nowiki></font></tt><br />
<br />
<tt>-L --list</tt> : Permet d'afficher les règles. <br />''<font color="#770000">Exemples :</font>''<br />''<font color="#770000"><tt><nowiki># iptables -L </nowiki></tt><nowiki># Affiche toutes les règles des chaînes de FILTER</nowiki></font>''<br />''<tt><font color="#770000"><nowiki># iptables -L INPUT </nowiki></font></tt><font color="#770000"><nowiki># Affiche toutes les règles de INPUT (FILTER)</nowiki></font>''<br />
<br />
<tt>-F --flush</tt> : Permet de vider toutes les règles d'une chaîne. <br />''<font color="#770000">Exemple :</font>''<br /><tt><font color="#770000"><nowiki># iptables -F INPUT</nowiki></font></tt><br />
<br />
<tt>-N --new-chain</tt> : Permet de créer une nouvelle chaîne. <br />''<font color="#770000">Exemple :</font>''<br /><tt><font color="#770000"><nowiki># iptables -N LOG_DROP</nowiki></font></tt><br />
<br />
<tt>-X --delete-chain</tt> : Permet d'effacer une chaîne. <br />''<font color="#770000">Exemple :</font>''<br /><tt><font color="#770000"><nowiki># iptables -X LOG_DROP</nowiki></font></tt><br />
<br />
<tt>-P --policy</tt> : Permet de spécifier au kernel la target par défaut d'une chaîne DENY, ACCEPT, REJECT, DROP ... <br />''<font color="#770000">Exemple :</font>''<br /><tt><font color="#770000"><nowiki># iptables -P INPUT DROP</nowiki></font></tt><br />
<br />
==== 2.2.2/ Commandes pour matcher ====<br />
<br />
<u>Remarques</u> :<br />
<br />
Le "!" peut être utilisé pour certaines commandes afin de spécifier le contraire (on peut le traduire par "sauf"). Par exemple une commande qui doit refuser tout trafic TCP sauf ce qui provient de l'adresse IP 10.42.42.42 sera traduite par la commande suivante : <br />''<font color="#770000">Exemple :</font>''<br /><tt><font color="#770000"><nowiki># iptables -A INPUT -p tcp --source ! 10.42.42.42 -j DENY</nowiki></font></tt><br />
<br />
Les adresses IP peuvent optionnellement être spécifiées avec le masque associé sous la forme [adresse ip]/[masque].<br />
<br />
<tt>-p --protocol</tt> : Spécifier un protocole : <tt>tcp</tt>, <tt>udp</tt>, <tt>icmp</tt>, <tt>all</tt> (tous) <br />''<font color="#770000">Exemple :</font>''<br /><tt><font color="#770000"><nowiki># iptables -A INPUT -p icmp -j DENY</nowiki></font></tt><br />
<br />
<tt>-s --source</tt> : Spécifier une adresse source à matcher <br />''<font color="#770000">Exemple :</font>''<br /><tt><font color="#770000"><nowiki># iptables -A INPUT -p tcp -s 192.168.42.42 -j ACCEPT</nowiki></font></tt><br />
<br />
<tt>-d --destination</tt> : Spécifier une adresse destination <br />''<font color="#770000">Exemple :</font>''<br /><tt><font color="#770000"><nowiki># iptables -A FORWARD -p tcp -d 10.1.0.1 -j ACCEPT</nowiki></font></tt><br />
<br />
<tt>-i --in-interface</tt> : Spécifier une interface d'entrée <br />''<font color="#770000">Exemple :</font>''<br /><tt><font color="#770000"><nowiki># iptables -A INPUT -p icmp -i eth0 -j DENY</nowiki></font></tt><br />
<br />
<tt>-o --out-interface</tt> : Spécifier une interface de sortie <br />''<font color="#770000">Exemple :</font>''<br /><tt><font color="#770000"><nowiki># iptables -A OUTPUT -p icmp -o eth0 -j DENY</nowiki></font></tt><br />
<br />
<tt>-f --fragment</tt> : Paquet fragmenté <br />''<font color="#770000">Exemple :</font>''<br /><tt><font color="#770000"><nowiki># iptables -A INPUT -p icmp -f -j DENY</nowiki></font></tt><br />
<br />
<tt>--sport --source-port</tt> : Spécifier le port source ou une plage de ports, fonctionne aussi en udp, <tt>-m multiport</tt> permet de <br />spécifier plusieurs ports à matcher. <br />''<font color="#770000">Exemples :</font>''<br /><tt><font color="#770000"><nowiki># iptables -A INPUT -p tcp --sport 80 -j ACCEPT</nowiki></font></tt><br /><tt><font color="#770000"><nowiki># iptables -A INPUT -p udp --sport 80 -j DROP</nowiki></font></tt><br /><tt><font color="#770000"><nowiki># iptables -A OUTPUT -p tcp -m multiport --sport 3128,21,1000 -j DROP</nowiki></font></tt><br /><tt><font color="#770000"><nowiki># iptables -A OUTPUT -p tcp --sport 1024:2042 -j ACCEPT</nowiki></font></tt><br />
<br />
<tt>--dport --destination-port</tt> : Spécifier le port destination ou une plage de ports, fonctionne aussi en udp, <tt>-m multiport</tt><br />permet de spécifier plusieurs ports a matcher. <br />''<font color="#770000">Exemples :</font>''<br /><tt><font color="#770000"><nowiki># iptables -A INPUT -p tcp --dport 110 -j DENY</nowiki></font></tt><br /><tt><font color="#770000"><nowiki># iptables -A INPUT -p udp --dport 110 -j DENY</nowiki></font></tt><br /><tt><font color="#770000"><nowiki># iptables -A INPUT -p tcp -m multiport --dport 110,4242,119 -j DROP</nowiki></font></tt><br /><tt><font color="#770000"><nowiki># iptables -A INPUT -p tcp --sport 4925:4633 -j ACCEPT</nowiki></font></tt><br />
<br />
<tt>--tcp-flags</tt> : Spécifier un flag tcp à matcher : <tt>SYN ACK FIN RST URG PSH ALL NONE</tt><br />''<font color="#770000">Exemple :</font>''<br /><tt><font color="#770000"><nowiki># iptables -A INPUT -p tcp --dport 42 --tcp-flags SYN,ACK -j ACCEPT</nowiki></font></tt><br />
<br />
<tt>--icmp-type</tt> : Spécifier un type de paquet icmp à matcher <br />''<font color="#770000">Exemple :</font>''<br /><tt><font color="#770000"><nowiki># iptables -A INPUT -p icmp --icmp-type 8 -j DROP</nowiki></font></tt><br />
<br />
<tt>--mac-source</tt> : Spécifier l'adresse MAC à matcher <br />''<font color="#770000">Exemple :</font>''<br /><tt><font color="#770000"><nowiki># iptables -A INPUT --mac-source 42.42.AA.42.42.AA -j DROP</nowiki></font></tt><br />
<br />
<tt>--state</tt> : Permet de spécifier l'état du paquet à matcher parmi les états suivants : <br /><tt> ESTABLISHED </tt><nowiki>: paquet associé à une connexion déjà établie </nowiki><br /><tt> NEW </tt><nowiki>: paquet demandant une nouvelle connexion </nowiki><br /><tt> INVALID </tt><nowiki>: paquet associé à une connexion inconnue </nowiki><br /><tt> RELATED </tt><nowiki>: Nouvelle connexion mais liée, idéal pour les connexions FTP </nowiki><br />''<font color="#770000">Exemples :</font>''<br /><tt><font color="#770000"><nowiki># iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT</nowiki></font></tt><br /><tt><font color="#770000"><nowiki># iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT</nowiki></font></tt><br />
<br />
<u>Spécificités NAT</u> :<br />
<br />
<tt>--to-destination</tt> : Utilisé en target pour le DNAT, permet de spécifier l'adresse de destination de la translation, on peut également spécifier un port s'il est différent du port source. <br />''<font color="#770000">Exemples :</font>''<br /><tt><font color="#770000"><nowiki># iptables -t nat -A PREROUTING -d 42.12.42.12 -p tcp --dport 110 -j DNAT --to-destination 192.168.1.2:6110</nowiki></font></tt><br /><tt><font color="#770000"><nowiki># iptables -t nat -A PREROUTING -d ! 42.12.42.12 -p tcp --dport 80 -j DNAT --to-destination 192.168.2.1:3128</nowiki></font></tt><br />
<br />
<tt>--to-source</tt> : Utilisé pour en target pour le SNAT, permet de spécifier l'adresse source de la translation.<br />
<br />
<u>Spécificités pour les LOGS</u> :<br />
<br />
<tt>--log-level</tt> : Level, niveau de log <br />''<font color="#770000">Exemple : Cf. chapitre 3</font>''<br />
<br />
<tt>--log-prefix</tt> : Permet de spécifier un préfixe pour les logs. <br />''<font color="#770000">Exemple : Cf. chapitre 3</font>''<br /> <br />
<br />
==== 2.2.3/ Quelques exemples : ====<br />
<br />
Les exemples qui suivent supposent que vous êtes reliés à internet par modem via l'interface ppp0 (mais en remplaçant ppp0 par eth0 - par exemple, on peut adapter les exemples pour d'autres type de liaisons) et que votre réseau local est 192.168.1.0/24 (classe C).<br />
<br />
* Pour fixer les '''politiques par défaut''' (cad: ce qui se passe quand aucune règle ne correspond - ne matche pas), ici, on refuse tout (normal, on fait un firewall, oui ou non ?) : <blockquote><tt> iptables -P INPUT DROP<br /> iptables -P OUTPUT DROP<br /> iptables -P FORWARD DROP</tt></blockquote> <br />
* Pour '''logguer''' tout ce qu'on jette : <blockquote><tt> iptables -N LOG_DROP<br /> iptables -A LOG_DROP -j LOG --log-prefix '[IPTABLES DROP] : '<br /> iptables -A LOG_DROP -j DROP</tt></blockquote> Et ensuite, plutôt que de mettre <tt>-j DROP</tt>, il faut mettre <tt>-j LOG_DROP</tt> et les trois dernières règles doivent être : <blockquote><tt> iptables -A FORWARD -j LOG_DROP<br /> iptables -A INPUT -j LOG_DROP<br /> iptables -A OUTPUT -j LOG_DROP </tt></blockquote> <br />
* Pour '''accepter''' tout ce qui se passe sur l'interface <tt>lo</tt> (sinon ce n'est pas la peine d'activer le réseau !) : <blockquote><tt> iptables -A INPUT -i lo -j ACCEPT<br /> iptables -A OUTPUT -o lo -j ACCEPT </tt></blockquote> <br />
* Pour '''accepter''' tout ce qui se passe sur le '''réseau local''' <tt>192.168.1.0</tt> : <blockquote><tt> iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT<br /> iptables -A OUTPUT -d 192.168.1.0/24 -j ACCEPT<br /> iptables -A FORWARD -s 192.168.1.0/24 -j ACCEPT </tt></blockquote> <br />
* Pour accepter les résolutions de nom (ie: le '''dns''') : <blockquote><tt> iptables -A INPUT -i ppp0 --protocol udp --source-port 53 -j ACCEPT<br /> iptables -A OUTPUT -o ppp0 --protocol udp --destination-port 53 -j ACCEPT<br /> iptables -A INPUT -i ppp0 --protocol tcp --source-port 53 -j ACCEPT<br /> iptables -A OUTPUT -o ppp0 --protocol tcp --destination-port 53 -j ACCEPT </tt></blockquote> <br />
* Pour accepter le traffic '''web''' (on veut surfer!) : <blockquote><tt> iptables -A INPUT -i ppp0 --protocol tcp --source-port 80 -m state --state ESTABLISHED -j LOG_ACCEPT<br /> iptables -A OUTPUT -o ppp0 --protocol tcp --destination-port 80 -m state --state NEW,ESTABLISHED -j LOG_ACCEPT</tt></blockquote> La première ligne pour accepter ce qui entre sur notre interface ppp0 sur le port 80 (le port http) si c'est une connexion déjà établie, la seconde pour accepter ce qui sort sur ppp0 sur le port 80 si c'est une nouvelle connexion ou si c'est une connexion déjà établie. <br />
Pour autoriser le '''ssh''', il faut préciser le port 22; pour autoriser l''''irc''', le port 6667 (ou celui que vous utilisez pour vous connecter à votre serveur); pour le '''smtp''' (envoi d'emails), le port 25; pour le '''pop3''' (réception d'emails), le port 110; pour le '''imap''' (réception d'emails), les ports 143 et 220 ('''imap3''') ; pour le '''cvs''', le port 2401 ; pour le '''https''', le port 443. De manière générale, le numéros de port se trouvent dans /etc/services.<br />
* Pour le '''ftp''' c'est un peu plus complexe. D'abord, il faut charger le module : <tt>ip_conntrack_ftp</tt> (c'est lui qui suit - track en anglais - les connexions ftp) et, si vous ''nat''ez (en utilisant le masquerading par exemple) vos connexions ftp vers d'autres postes le module : <tt>ip_nat_ftp</tt> : <blockquote><tt> modprobe ip_conntrack_ftp</tt><br /> # éventuellement : <tt> modprobe ip_nat_ftp</tt> </blockquote> Ensuite, il faut taper les commandes suivantes : <blockquote><tt> iptables -A INPUT -i ppp0 -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT<br /> iptables -A OUTPUT -o ppp0 -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT </tt></blockquote> Cela pour que la connexion puisse s'établir. Ensuite (et c'est la qu'on a besoin de <tt>ip_conntrack_ftp</tt>) : <blockquote><tt> iptables -A INPUT -i ppp0 -p tcp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT<br /> iptables -A OUTPUT -o ppp0 -p tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT </tt></blockquote> Pour que serveur puisse établir la connexion pour les données (en mode actif). Et enfin : <blockquote><tt> iptables -A INPUT -i ppp0 -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT<br /> iptables -A OUTPUT -o ppp0 -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT </tt></blockquote> Pour que le serveur puisse établir la connexion pour les données (en mode passif). Ici aussi <tt>ip_conntrack_ftp</tt> est nécessaire. <br />
* Pour '''partager une connexion''', il faut que le forwarding soit activé dans le noyau (<tt>echo 1 > /proc/sys/net/ipv4/ip_forward</tt>), puis il faut autoriser iptable à faire le forwarding : <blockquote><tt> iptables -F FORWARD<br /> iptables -A FORWARD -j ACCEPT </tt></blockquote> et enfin, cacher les machines forward-ées par le firewall : <blockquote><tt> iptables -A POSTROUTING -t nat -o ppp0 -j MASQUERADE </tt></blockquote> Sur chaque machine devant être cachée par le firewall (ou devant partager la connexion avec la machine qui est connectée à internet), il faut ajouter une route par defaut : <blockquote><tt> route add default gw 192.168.1.1 </tt></blockquote> Si la machine connectée à internet a comme ip : 192.168.1.1. Il suffit avec une redhat/mandrake d'éditer : <blockquote><tt>/etc/sysconfig/network</tt></blockquote> et d'ajouter dedans : <blockquote><tt>GATEWAY=192.168.1.1</tt></blockquote> puis de redémarer le réseau :<blockquote><tt>/etc/rc.d/init.d/network restart</tt></blockquote> <br />
<br />
== 3/ Application par l'exemple ==<br />
<br />
Nous allons mettre en place un firewall / proxy.<br />
<br />
Pour cet exemple, le firewall aura la connexion à Internet (interface eth2) et disposera de 2 pattes sur des réseaux privés (eth0 et eth1) :<br />
<br />
* il fait office de proxy sur le port 3128 pour un réseau qui aura ainsi un accès internet<br />
* et une DMZ<sup><nowiki>*</nowiki></sup> ("zone démilitarisée") sur laquelle il y a un ensemble de serveurs disponibles de l'extérieur dont un serveur web qui a pour adresse 192.168.1.2 écoutant sur le port 80 en TCP.<br />
<br />
<blockquote><tt> ____ '''<font color="#009900">eth1</font>''' '''.->''' ---+------+------+---<br /> _/ \_ ____ <font color="#009900">3128</font>'''/''' [PC1] [PC2] [PC3] <br /> ( ) '''<font color="#990000">eth2</font>'''| |'''<--'''' <u>réseau local</u> 198.168.2.0<br /> (INTERNET)'''<--->'''|'''Fire'''|<br /> (_ _) <font color="#990000">ppp0</font>|'''wall'''|<br /> \____/ |____|'''<--.''' <u>DMZ serveurs</u> 198.168.1.0<br /> '''<font color="#3333FF">eth0</font>\''' [WEB] [NEWS] [FTP]<br /> ''''->''' ---+------+------+---<br />''ASCIIArt (c) Jice''</tt></blockquote><br />
<br />
La classe d'adresse IP 192.168.2.0 correspond au réseau interne sur l'interface <tt>eth1</tt>. <br />La classe d'adresse IP 192.168.1.0 correspond a la DMZ sur l'interface <tt>eth0</tt>. <br />L'interface de la connexion Internet est ppp0 sur l'interface <tt>eth2</tt>.<br />
<br />
; <sup><nowiki>* </nowiki></sup><u>DMZ, ou zone démilitarisée</u><br />
: Sous-réseau dans lequel des serveurs accessibles depuis internet sont en adressage privé (classe d'adresse IP réservée comme 192.168.x.x) derrière un firewall.<br />
<br />
=== 3.1/ Le script init.d ===<br />
<br />
Nous allons écrire un script qui permettra de charger automatiquement au démarrage de la machine ou sur demande les règles du firewall qui seront stockées dans le fichier <tt>/etc/firewall.sh</tt>. <br />Le script de démarrage sera nommé <tt>/etc/init.d/firewall</tt>. Bien sûr, on n'oubliera pas d'exécuter un <tt>chmod +x</tt> sur les 2 scripts que nous allons créer au long de ce chapitre.<br />
<br />
Go ! <br />Fichier de chargement <tt>/etc/init.d/firewall</tt> : <br /> <br />
<br />
<center><br />
<br />
{| width="90%" bgcolor="#FFFFCC"<br />
|<br />
<tt><nowiki>#!/bin/bash</nowiki></tt><br /><tt><nowiki>#</nowiki></tt><br /><tt><nowiki># Lancement du script de Firewall</nowiki></tt><br /><tt><nowiki># Arnaud de Bermingham</nowiki></tt><br />
<br />
<tt>. /etc/init.d/functions</tt><br />
<br />
<tt>RETVAL=0</tt><br />
<br />
<tt><nowiki># Fonction pour le lancement du firewall</nowiki></tt><br /><tt>start() {</tt><br /><tt> echo -n "Application des règles IpTables: "</tt><br /><tt> /etc/firewall.sh</tt><br /><tt> RETVAL=0</tt><br /><tt> [ $RETVAL -eq 0 ] && touch /var/lock/subsys/firewall</tt><br /><tt> echo</tt><br /><tt>}</tt><br />
<br />
<tt><nowiki># Fonction pour arrêter le firewall (on flush)</nowiki></tt><br /><tt>stop() {</tt><br /><tt> echo -n "Flush des règles IpTables: "</tt><br /><tt> /etc/flush_iptables.sh</tt><br /><tt> RETVAL=0</tt><br /><tt> [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/firewall</tt><br /><tt> echo</tt><br /><tt>}</tt><br />
<br />
<tt>case $1 in</tt><br /><tt> start)</tt><br /><tt> start</tt><br /><tt> ;;</tt><br /><tt> stop)</tt><br /><tt> stop</tt><br /><tt> ;;</tt><br /><tt> restart)</tt><br /><tt> stop</tt><br /><tt> start</tt><br /><tt> ;;</tt><br /><tt> status)</tt><br /><tt> /sbin/iptables -L</tt><br /><tt> /sbin/iptables -t nat -L</tt><br /><tt> RETVAL=0</tt><br /><tt> ;;</tt><br /><tt> *)</tt><br /><tt> echo "Usage: firewall {start|stop|restart|status}"</tt><br /><tt> RETVAL=1</tt><br /><tt>esac</tt><br />
<br />
<tt>exit</tt><br />
|}<br />
<br />
</center><br />
<br />
C'est tout simple non ?<br />
<br />
=== 3.2/ Le script pour flusher (vider) les règles ===<br />
<br />
Et maintenant : <tt>/etc/flush_iptables.sh</tt>.<br />
<br />
<center><br />
<br />
{| width="90%" bgcolor="#FFFFCC"<br />
|<br />
<tt><nowiki>#!/bin/sh</nowiki></tt><br /><tt><nowiki># </nowiki></tt><br /><tt><nowiki># Script pour vider les règles iptables</nowiki></tt><br /><tt><nowiki># Arnaud de Bermingham</nowiki></tt><br /><tt><nowiki># duracell@apinc.org</nowiki></tt><br />
<br />
<tt><nowiki>#</nowiki></tt><br /><tt><nowiki># On remet la police par défaut à ACCEPT</nowiki></tt><br /><tt><nowiki>#</nowiki></tt><br /><tt>iptables -P INPUT ACCEPT</tt><br /><tt>iptables -P FORWARD ACCEPT</tt><br /><tt>iptables -P OUTPUT ACCEPT</tt><br />
<br />
<tt><nowiki>#</nowiki></tt><br /><tt><nowiki># On remet les polices par défaut pour la table NAT</nowiki></tt><br /><tt><nowiki>#</nowiki></tt><br /><tt>iptables -t nat -P PREROUTING ACCEPT</tt><br /><tt>iptables -t nat -P POSTROUTING ACCEPT</tt><br /><tt>iptables -t nat -P OUTPUT ACCEPT</tt><br />
<br />
<tt><nowiki>#</nowiki></tt><br /><tt><nowiki># On vide (flush) toutes les règles existantes</nowiki></tt><br /><tt><nowiki>#</nowiki></tt><br /><tt>iptables -F</tt><br /><tt>iptables -t nat -F</tt><br />
<br />
<tt><nowiki>#</nowiki></tt><br /><tt><nowiki># Et enfin, on efface toutes les chaînes qui ne</nowiki></tt><br /><tt><nowiki># sont pas à defaut dans la table filter et nat</nowiki></tt><br />
<br />
<tt>iptables -X</tt><br /><tt>iptables -t nat -X</tt><br />
<br />
<tt><nowiki># Message de fin</nowiki></tt><br /><tt>echo " [termine]"</tt><br />
|}<br />
<br />
</center><br />
<br />
Bon, on va enfin commencer les choses sérieuses : le script du firewall :)<br />
<br />
=== 3.3/ Les prérequis pour le script du firewall et création des tables pour les logs ===<br />
<br />
Le script sera commenté au fur et à mesure, afin de décrire chaque étape. <br /> <br />
<br />
<center><br />
<br />
{| width="90%" bgcolor="#FFFFCC"<br />
|<br />
<tt><nowiki>#!/bin/sh</nowiki></tt><br />
<br />
<tt><nowiki># script </nowiki>'''/etc/firewall.sh'''</tt><br />
<br />
<tt><nowiki># Firewall d'exemple a but pédagogique</nowiki></tt><br /><tt><nowiki># Arnaud de Bermingham</nowiki></tt><br /><tt><nowiki># duracell@apinc.org</nowiki></tt><br />
<br />
<tt><nowiki># </nowiki>'''Activation du forwarding'''</tt><br /><tt><font size="-1"><nowiki># C'est pas pour faire joli, on aura des règles</nowiki></font></tt><br /><tt><font size="-1"><nowiki># de forward et il faut bien que les paquets</nowiki></font></tt><br /><tt><font size="-1"><nowiki># traversent la machine, donc on met ce fichier à 1</nowiki></font></tt><br />
<br />
<tt>echo 1 > /proc/sys/net/ipv4/ip_forward</tt><br />
<br />
<tt><nowiki># Alors la, on va appliquer quelques astuces</nowiki></tt><br /><tt><nowiki># pour empêcher les attaques de type </nowiki>''spoofing''</tt><br /><tt><nowiki># et bloquer les réponses ICMP du firewall,</nowiki></tt><br /><tt><nowiki># comme ça c'est très propre. Attention, le</nowiki></tt><br /><tt><nowiki># fait de bloquer le trafic ICMP sur</nowiki></tt><br /><tt><nowiki># le firewall bloque les pings.</nowiki></tt><br />
<br />
<tt><nowiki># Je veux </nowiki>'''pas de spoofing'''</tt><br />
<br />
<tt>if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]</tt><br /><tt>then</tt><br /><tt> for filtre in /proc/sys/net/ipv4/conf/*/rp_filter</tt><br /><tt> do</tt><br /><tt> echo 1 > $filtre</tt><br /><tt> done</tt><br /><tt>fi</tt><br />
<br />
<tt><nowiki># </nowiki>'''pas de icmp'''</tt><br />
<br />
<tt>echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all</tt><br /><tt>echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts</tt><br />
<br />
<tt><nowiki># On va utiliser iptables. Si on l'a compilé en module</nowiki></tt><br /><tt><nowiki># dans le kernel, il faut </nowiki>'''charger le module ip_tables'''.</tt><br />
<br />
<tt>modprobe ip_tables</tt><br />
<br />
<tt><nowiki># on va charger quelques </nowiki>'''modules supplémentaires''' pour</tt><br /><tt><nowiki># gérer la </nowiki>'''translation''' d'adresse, l''''IRC''' et le '''FTP'''</tt><br /><tt><nowiki># Tu me fait 4 pompes. Chef oui chef !</nowiki></tt><br />
<br />
<tt>modprobe ip_nat_ftp</tt><br /><tt>modprobe ip_nat_irc</tt><br /><tt>modprobe iptable_filter</tt><br /><tt>modprobe iptable_nat</tt><br />
<br />
<tt><nowiki># Pour faire bien, on va </nowiki>'''vider toutes les règles'''</tt><br /><tt><nowiki># avant d'appliquer les nouvelles règles de firewall</nowiki></tt><br />
<br />
<tt>iptables -F</tt><br /><tt>iptables -X</tt><br />
<br />
<tt><nowiki># On va rajouter 2 nouvelles </nowiki>'''chaînes'''.</tt><br /><tt><nowiki># Ceci permettra d'ajouter des nouvelles cibles qui</nowiki></tt><br /><tt><nowiki># auront la possibilité de loguer ce qui se passe.</nowiki></tt><br />
<br />
<tt><nowiki># La on logue et on refuse le paquet,</nowiki></tt><br /><tt><nowiki># on rajoute un préfixe pour pouvoir</nowiki></tt><br /><tt><nowiki># s'y retrouver dans les logs</nowiki></tt><br /><tt>iptables -N LOG_DROP</tt><br /><tt>iptables -A LOG_DROP -j LOG \</tt><br /><tt> --log-prefix '[IPTABLES DROP] : '</tt><br /><tt>iptables -A LOG_DROP -j DROP</tt><br />
<br />
<tt><nowiki># ici, on logue et on accepte le paquet,</nowiki></tt><br /><tt><nowiki># on rajoute un préfixe pour pouvoir</nowiki></tt><br /><tt><nowiki># s'y retrouver dans les logs</nowiki></tt><br /><tt>iptables -N LOG_ACCEPT</tt><br /><tt>iptables -A LOG_ACCEPT -j LOG \</tt><br /><tt> --log-prefix '[IPTABLES ACCEPT] : '</tt><br /><tt>iptables -A LOG_ACCEPT -j ACCEPT</tt><br />
<br />
<tt><nowiki># On veut faire un firewall efficace,</nowiki></tt><br /><tt><nowiki># donc la politique a appliquer est de tout</nowiki></tt><br /><tt><nowiki># refuser par défaut et rajouter une a une</nowiki></tt><br /><tt><nowiki># les règles que l'on autorise.</nowiki></tt><br /><tt><nowiki># Bien sur, on a RTFM un peu et on a vu que</nowiki></tt><br /><tt><nowiki># l'option -P permet de définir</nowiki></tt><br /><tt><nowiki># </nowiki>'''la cible par défaut'''</tt><br />
<br />
<tt>iptables -P INPUT DROP</tt><br /><tt>iptables -P OUTPUT DROP</tt><br /><tt>iptables -P FORWARD DROP</tt><br />
<br />
<tt><nowiki># Pour éviter les problèmes, on va </nowiki>'''tout accepter sur'''</tt><br /><tt><nowiki># </nowiki>'''la machine en local''' (interface lo).</tt><br /><tt><nowiki># Je déconseille de retirer cette règle car</nowiki></tt><br /><tt><nowiki># ça pose pas mal de problèmes et ça peut</nowiki></tt><br /><tt><nowiki># faire perdre la main sur la machine</nowiki></tt><br />
<br />
<tt>iptables -A INPUT -i lo -j ACCEPT</tt><br /><tt>iptables -A OUTPUT -o lo -j ACCEPT</tt><br />
<br />
<tt><nowiki># Bon, la partie initialisation et préparation est</nowiki></tt><br /><tt><nowiki># terminée, passons aux choses sérieuses</nowiki></tt><br /><br /><tt><nowiki># Comme on l'a dit dans la présentation de</nowiki></tt><br /><tt><nowiki># l'architecture réseau, le firewall fait</nowiki></tt><br /><tt><nowiki># également office de proxy grâce par exemple</nowiki></tt><br /><tt><nowiki># à un squid installé dessus. On va donc</nowiki></tt><br /><tt><nowiki># accepter que le </nowiki>'''proxy''' ait une '''connexion'''</tt><br /><tt><nowiki># </nowiki>'''internet directe'''. Tant qu'à faire, on va</tt><br /><tt><nowiki># mettre des états pour que ça soit bien sécurisé</nowiki></tt><br />
<br />
<tt>iptables -A OUTPUT -o ppp0 -m state \</tt><br /><tt> --state NEW,ESTABLISHED -p tcp --dport 80 -j ACCEPT</tt><br /><tt>iptables -A INPUT -i ppp0 -m state \</tt><br /><tt> --state ESTABLISHED -p tcp --sport 80 -j ACCEPT</tt><br />
<br />
<tt><nowiki># Maintenant, on va faire en sorte que le</nowiki></tt><br /><tt><nowiki># </nowiki>'''proxy soit totalement transparent pour le LAN'''</tt><br /><tt><nowiki># bénéficiant de la connexion internet.</nowiki></tt><br /><tt><nowiki># L'astuce consiste a rediriger toutes les</nowiki></tt><br /><tt><nowiki># requêtes ayant un port de destination 80</nowiki></tt><br /><tt><nowiki># vers le port 3128 du proxy, ici c'est le</nowiki></tt><br /><tt><nowiki># firewall (qui est sur le firewall et qui</nowiki></tt><br /><tt><nowiki># a l'adresse IP 192.168.2.1 ).</nowiki></tt><br /><tt><nowiki># Une règle de NAT suffira largement pour faire ça.</nowiki></tt><br />
<br />
<tt>iptables -t nat -A PREROUTING -i eth1 -p tcp \</tt><br /><tt> --dport 80 -j DNAT --to-destination 192.168.2.1:3128</tt><br />
<br />
<tt><nowiki># Bon, c'est pas trop compliqué ! Maintenant</nowiki></tt><br /><tt><nowiki># on sait que l'on a un </nowiki>'''serveur web sur la DMZ'''</tt><br /><tt><nowiki># (la machine d'adresse IP 192.168.1.2) sur</nowiki></tt><br /><tt><nowiki># le port 80. On souhaite que toutes les requêtes</nowiki></tt><br /><tt><nowiki># provenant d'internet arrivant sur l'adresse IP</nowiki></tt><br /><tt><nowiki># publique du serveur ( ici 42.42.42.42 ) soit</nowiki></tt><br /><tt><nowiki># redirigées sur le serveur web de la DMZ.</nowiki></tt><br /><tt><nowiki># Rien de bien compliqué. Dans l'exemple,</nowiki></tt><br /><tt><nowiki># on peut retirer le :80 de la target</nowiki></tt><br /><tt><nowiki># --to-destination</nowiki></tt><br />
<br />
<tt>iptables -t nat -A PREROUTING -d 42.42.42.42 \</tt><br /><tt> -p tcp --dport 80 -j DNAT --to-destination 192.168.1.2:80</tt><br />
<br />
<tt><nowiki># C'est bien tout ça ! mais le problème c'est</nowiki></tt><br /><tt><nowiki># que les chaînes de la table FILTER sont toutes</nowiki></tt><br /><tt><nowiki># à DENY, donc tout ceci ne fait rien du tout.</nowiki></tt><br /><tt><nowiki># On va donc passer a la </nowiki>'''configuration du'''</tt><br /><tt><nowiki># </nowiki>'''firewall''' proprement dit.</tt><br />
<br />
<tt><nowiki># On va quand même </nowiki>'''accepter les connexions ssh'''</tt><br /><tt><nowiki># (port 22) provenant d'une machine (la votre en</nowiki></tt><br /><tt><nowiki># l'occurrence, on va dire 192.168.2.42) vers le</nowiki></tt><br /><tt><nowiki># firewall pour pouvoir modifier les règles</nowiki></tt><br /><tt><nowiki># facilement pour bien surveiller, on vas quand</nowiki></tt><br /><tt><nowiki># même loguer les connexions provenant de mon IP</nowiki></tt><br /><tt><nowiki># et à destination du ssh du firewall</nowiki></tt><br />
<br />
<tt>iptables -A INPUT -i eth1 -s 192.168.2.42 -m state \</tt><br /><tt> --state NEW,ESTABLISHED -p tcp --dport 22 -j LOG_ACCEPT</tt><br /><tt>iptables -A OUTPUT -o eth1 -d 192.168.2.42 -m state \</tt><br /><tt> --state ESTABLISHED -p tcp --sport 22 -j LOG_ACCEPT</tt><br />
<br />
<tt><nowiki># On veut que le </nowiki>'''LAN''' connecté à l'interface</tt><br /><tt><nowiki># eth1 ait un accès complet à </nowiki>'''internet'''.</tt><br /><tt><nowiki># La règle de NAT qui permettait d'avoir</nowiki></tt><br /><tt><nowiki># un </nowiki>'''proxy transparent''' sera automatiquement</tt><br /><tt><nowiki># appliqué. L'interface correspondant</nowiki></tt><br /><tt><nowiki># à la connexion internet est ici ppp0</nowiki></tt><br />
<br />
<tt>iptables -A FORWARD -i eth1 -o ppp0 -j ACCEPT</tt><br /><tt>iptables -A FORWARD -o eth1 -i ppp0 -j ACCEPT</tt><br />
<br />
<tt><nowiki># Maintenant on donne le droit au </nowiki>'''LAN''' de</tt><br /><tt><nowiki># </nowiki>'''consulter les pages web du serveur de la DMZ'''</tt><br />
<br />
<tt>iptables -A FORWARD -i eth1 -o eth0 -p tcp \</tt><br /><tt> --dport 80 -state --state NEW,ESTABLISHED -j ACCEPT</tt><br /><tt>iptables -A FORWARD -i eth0 -o eth1 -p tcp \</tt><br /><tt> --sport 80 -state --state ESTABLISHED -j ACCEPT</tt><br />
<br />
<tt><nowiki># Maintenant il n'y a plus qu'à dire au firewall</nowiki></tt><br /><tt><nowiki># d'autoriser à transmettre des paquets TCP à</nowiki></tt><br /><tt><nowiki># destination du port 80 provenant de l'adresse</nowiki></tt><br /><tt><nowiki># IP publique (i.e. d'</nowiki>'''internet''') '''vers le serveur'''</tt><br /><tt><nowiki># </nowiki>'''web de la DMZ''' que nous avons naté précédemment.</tt><br />
<br />
<tt>iptables -A FORWARD -i ppp0 -o eth0 -p tcp \</tt><br /><tt> --destination-port 80 -m state --state NEW,ESTABLISHED -j ACCEPT</tt><br /><tt>iptables -A FORWARD -o ppp0 -i eth0 -p tcp \</tt><br /><tt> --source-port 80 -m state --state ESTABLISHED -j ACCEPT</tt><br />
<br />
<tt><nowiki># Maintenant il ne reste plus grand chose à faire !</nowiki></tt><br />
<br />
<tt><nowiki># Il faut permettre à l'ensemble du LAN de dialoguer</nowiki></tt><br /><tt><nowiki># sur internet avec la même adresse IP sinon, bien</nowiki></tt><br /><tt><nowiki># évidemment ça ne marchera pas (à moins que vous</nowiki></tt><br /><tt><nowiki># ayez 30 adresses ip !).</nowiki></tt><br /><tt><nowiki># Une petite règle de NAT avec un -j MASQUERADE</nowiki></tt><br /><tt><nowiki># suffira (masquerade = dialoguer avec l'adresse</nowiki></tt><br /><tt><nowiki># IP publique sur firewall)</nowiki></tt><br />
<br />
<tt>iptables -t nat -A POSTROUTING \</tt><br /><tt> -s 192.168.2.0/24 -j MASQUERADE</tt><br />
<br />
<tt><nowiki># Il faut également que le serveur web de la DMZ</nowiki></tt><br /><tt><nowiki># soit masqueradé sinon, le serveur</nowiki></tt><br /><tt><nowiki># dialoguera sur internet avec son IP privée</nowiki></tt><br />
<br />
<tt>iptables -t nat -A POSTROUTING \</tt><br /><tt> -s 192.168.1.0/24 -j MASQUERADE</tt><br />
<br />
<tt><nowiki># Toutes les règles qui n'ont pas passé les</nowiki></tt><br /><tt><nowiki># règles du firewall seront refusées et loguées...</nowiki></tt><br /><tt><nowiki># facile :</nowiki></tt><br />
<br />
<tt>iptables -A FORWARD -j LOG_DROP</tt><br /><tt>iptables -A INPUT -j LOG_DROP</tt><br /><tt>iptables -A OUTPUT -j LOG_DROP</tt><br />
<br />
<tt><nowiki># Pour faire zoli</nowiki></tt><br /><tt>echo " [Termine]"</tt><br />
<br />
<tt><nowiki># c'est enfin fini</nowiki></tt><br />
|}<br />
<br />
</center><br />
<br />
Et voilà ! le firewall de compèt' est prêt et fonctionnel.<br />
<br />
Ceci était bien évidemment un exemple, vous pouvez dès à présent préparer votre propre firewall personnalisé ! <br />Vous pouvez l'adapter à vos besoins, votre connexion vers internet (par ADSL par exemple), etc.<br />
<br />
<div class="merci">Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Arnaud de Bermingham le 12/11/2001.</div><br />
<br />
= Copyright =<br />
Copyright &copy; 12/11/2001, Arnaud de Bermingham<br />
{{CC-BY-NC-SA}}<br />
<br />
<br />
=Autres ressources=<br />
Le [http://lea-linux.org/trucs/index.php3?aff_item=272 partage de connexion] facile.<br />
<br />
Tester votre firewall [http://grc.com/default.htm là].<br />
<br />
Cliquez sur 'ShieldsUP!', puis sur l'un des boutons : 'Test My Shields !" et "Probe My Ports !". Ça vaut pas un bon <tt>nmap</tt> fait par un ami, mais ça permet de voir ou on en est.</div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=Reseau-secu-gpg-intro&diff=9163
Reseau-secu-gpg-intro
2005-10-14T18:00:35Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div></div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=Reseau-secu-firewall&diff=9162
Reseau-secu-firewall
2005-10-14T18:00:33Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div>[[Category:Sécurité]]<br />
= Firewall =<br />
<br />
<div class="leatitre">Firewall</div><div class="leapar">par Serge (légèrement modifié par Jicé)</div><div class="leadesc">Protégez vous derrière un mur de feu.</div><br />
----<br />
<br />
Ce document a été inspiré du [http://www.freenix.org/unix/linux/HOWTO/Firewall-HOWTO.html Firewall-HOWTO], de l'[http://www.freenix.org/unix/linux/HOWTO/IPCHAINS-HOWTO.html IPCHAINS-HOWTO] et du [http://www.freenix.org/unix/linux/HOWTO-vo/IP-Masquerade-HOWTO.html IP-Masquerade-HOWTO]. C'est la synthèse de ces trois documents pour permettre la mise en place des techniques de Firewalling. Je vous conseille quand même de lire ces HOWTO pour plus de compréhension. Je suppose que vous savez configurer un réseau IP, au cas où jeter un coup d'oeil sur la rubrique [lan.php3 réseau local]. Il se peut que des erreurs se soient glissées dans cette présentation, de plus je ne pourrai être tenu responsable d'une mauvaise configuration de votre système. La sécurité est un sujet vaste, toujours en évolution et je ne prétends pas vous fournir ici une solution exempte de tout danger. Ce document est à prendre comme une présentation de ces techniques.<br />
<br />
'''''<font color="#FF0000">ATTENTION: rubrique non finie, le filtrage plus fin et les techniques de proxy ne sont pas encore décrits.</font>'''''<br />
<br />
== Explications ==<br />
<br />
<div style="margin-bottom: 0in">Bon qu'est un Firewall ? Si on traduit, cela nous donne « pare-feu » , vous allez me dire « ha bon mon micro me protège du feu ? », bien sûr que non, un Firewall sert en fait à protéger un réseau vis à vis d'un autre ou d'autre réseaux.</div><div style="margin-bottom: 0in">Plusieurs types de Firewall existent et ne travaillent pas de la même façon et n'offrent pas les mêmes sécurités.</div><div style="margin-bottom: 0in">Les Firewall sont de plus en plus utilisés pour protéger les réseaux locaux d'entreprises vis à vis de l'internet. Il s'agit en fait d'une machine qui est reliée vers l'extérieur (Internet) et vers le réseaux local aussi et qui en quelque sorte analyse le trafic réseau qui la traverse pour savoir si oui ou non elle laisse passer ce trafic que ça soit dans un sens ou dans l'autre :</div><blockquote><tt> _ ---- _ ________ +---> PC2</tt><br /><tt> ( ) | | |</tt><br /><tt>( INTERNET )<---->|FIREWALL|<---+---> PC3</tt><br /><tt> (_ _) |________| |</tt><br /><tt> ---- +---> PC4</tt></blockquote><br />
<br />
== Les différents types de Firewall ==<br />
<br />
<div style="margin-bottom: 0in">Le Firewall le plus simple est une machine qui possède une connexion vers l'extérieur et une autre sur le réseau local et qui ne transmet pas le trafic réseau d'un réseau à l'autre. Si une machine du réseau local veut accéder vers l'extérieur, elle ouvre en fait une session sur le Firewall, et travaille directement sur cette machine pour accéder vers l'extérieur. De ce fait aucun trafic réseau de l'extérieur ne peut rentrer sur le réseau local. <br />
<br />
Vous avez compris les problèmes que cela engendre :<br />
<br />
* on travaille directement sur le Firewall donc chaque utilisateur qui va par exemple « naviguer » sur le web vas lancer un nouveau processus « navigateur »,<br />
* on n'a pas accès directement à sa machine avec ses ressources mais à celle du Firewall, et la protection s'arrête juste a une authentification d'utilisateur.<br />
<br />
Ce type de Firewall en fait ne filtre absolument rien et peut donc être sujet à la moindre attaque extérieure. En fait il n'est plus utilisé, on va dire que c'est le « Firewall préhistorique » en quelque sorte. Voyons maintenant les types de Firewall utilisés :</div><br />
<br />
=== <font color="#FF6666">Les Firewalls à filtrage de paquets</font> ===<br />
<br />
<div style="text-indent: 0.49in; margin-bottom: 0in">Ils travaillent sur les paquets réseaux eux-même. Pour les personnes qui ont des connaissances réseaux, ce type de Firewall travaille sur la couche réseau du modèle OSI. Ils analysent les paquets entrants/sortants suivant leur type, leurs adresses source et destination et les ports. Comme ils travaillent directement sur la couche IP, ils sont très peu gourmands en mémoire. <br />
<br />
Avec Linux ce style de filtrage au niveau de la couche IP est intégré directement dans le noyau, il suffit donc d'avoir un 486 avec 8 Mo de mémoire et d'une distribution Linux avec juste un kernel de base et la couche IP pour faire un tel Firewall.<br />
<br />
De plus ils sont totalement transparents pour les utilisateurs, pas d'authentification pour aller vers l'extérieur et pas de paramétrages spécifiques sur les machines des utilisateurs. Un désavantage, c'est qu'il n'y a pas d'authentification possible par utilisateur mais par adresse IP. C'est à dire que si l'on veut en interne interdire à certaine personnes d'aller vers l'extérieur ce n'est possible que si l'on connaît l'adresse de la machine de cet utilisateur, on ne peut pas empêcher que la personne aille sur une autre machine et il faut de plus que les machines aient toujours la même adresse, ce qui peut poser problème lorsqu'on on utilise du DHCP.<br />
<br />
</div><br />
<br />
=== <font color="#FF6666">Les Firewalls Proxy</font> ===<br />
<br />
<div style="margin-bottom: 0in">Les Proxy serveur sont utilisés pour contrôler et analyser tout trafic avec l'extérieur. Certains proxies utilisent en plus un cache, c'est à dire qu'ils stockent des données en local, ce qui permet de réduire le trafic réseau, en effet si une même donnée est demandée plusieurs fois, au lieu d'aller la chercher au nouveau vers l'extérieur c'est le proxy lui même qui la fournit. Leur fonctionnement dépend de leur type :</div><br />
<br />
==== <font color="#CC33CC">Proxy d'applications</font> ====<br />
<br />
<div style="margin-bottom: 0in">Leur fonctionnement ressemble un peu au fonctionnement du premier Proxy, c'est à dire quand une application d'une machine locale va vers l'extérieur, en fait elle se connecte sur le Proxy et c'est le Proxy lui-même qui va chercher l'information puis la renvoyer vers la machine demandeuse.</div><div style="margin-bottom: 0in">Un exemple : vous voulez récupérer un fichier via FTP sur internet, en fait votre client FTP vas se connecter sur le proxy qui va faire serveur FTP, le Proxy va en même temps ouvrir une session FTP sur le serveur distant, il va récupérer le fichier cible et vous le renvoyer via son serveur FTP. En fait c'est toujours le Proxy qui récupère les données et vous les renvoie.</div><div style="margin-bottom: 0in">Ça à l'avantage d'être très sécurisé pour la machine cliente, ça fait cache la plupart du temps donc ça réduit le trafic réseau, ça peut permettre l'authentification aussi si l'on oblige une authentification sur les applications du Proxy. Par contre ça demande des configurations spéciales sur les clients, ça demande aussi d'installer sur le proxy les applications serveur de chaque protocole que l'on souhaite fournir aux utilisateurs et ça consomme énormément de ressources.</div><br />
<br />
==== <font color="#CC33CC">Proxy « SOCKS »</font> ====<br />
<br />
<div style="margin-bottom: 0in">Il ne travaille pas sur les applications, en fait il « refait » en quelque sorte les connexions. Le client passe par le Proxy qui lui en interne refait la connexion vers l'extérieur. Comme les Firewalls filtrants, ils ne font pas d'authentification, mais peuvent quand même enregistrer l'utilisateur qui a demandé la connexion.</div><br />
<br />
== Pré-installation d'un Firewall filtrant sous Linux ==<br />
<br />
<div style="margin-bottom: 0in">On va dans cette partie configurer le kernel pour préparer notre système à devenir un Firewall filtrant.</div><div style="margin-bottom: 0in">Comme je l'ai dit plus haut, les Firewall filtrants sont facilement configurables sous Linux car ils sont pris en charge directement dans le noyau de Linux. Ce type de Firewall étant très léger, il vous suffit d'un 486 avec 16 voire 8 Mo de RAM. Vous avez besoin aussi suivant la version du kernel :</div><br />
<br />
* Version 1.x.x : une copie de <tt>ipfwadm</tt> (mais bon je vous conseille vivement de passer a une version supérieure de kernel).<br />
* Version 2.0.x : <tt>ipwadm</tt> est sûrement déjà présent, vérifiez quand même.<br />
* Version 2.2.x : <tt>ipchains</tt> (sûrement présent aussi).<br />
* ''Version 2.3.x et 2.4 à venir : le format de firewall a encore changé, il n'est pas encore décrit dans ce document.''<br />
<br />
<div style="margin-bottom: 0in">Pour ce document je décris la manière de mettre en place tout ça pour un kernel de version 2.2.X car à mon goût le Firewall est beaucoup plus sûr avec ce kernel (stack IP plus sûre et <tt>ipchains</tt> bien plus puissant que <tt>ipwadm</tt>), de plus il est facile de trouver une distribution à base de kernel 2.2.X, les 2.0.X deviennent rare.</div><div style="margin-bottom: 0in">Si vous voulez de plus faire un Proxy, récupérez l'un de ces programmes :</div><br />
<br />
* Squid<br />
* TIS Firewall toolkit (FWTK)<br />
* Socks<br />
<br />
<div style="margin-bottom: 0in">Une recherche sur freshmeat vous trouvera ça :) Mais bon pour l'instant ce document ne traite que des Firewall filtrant, j'ajouterais une rubrique Proxy plus tard.</div><div style="margin-bottom: 0in">Bon il faut maintenant configurer le kernel pour activer ce filtrage. Cochez les options suivantes :</div><div style="margin-bottom: 0in"><tt><y> Enable experimental</tt></div><div style="margin-bottom: 0in"> <br /><tt><y> Enable loadable module support</tt></div><div style="margin-bottom: 0in"> <br /><tt><*> Packet socket</tt></div><div style="margin-bottom: 0in"><tt>[ ] Kernel/User netlink socket</tt></div><div style="margin-bottom: 0in"><tt>[y] Network firewalls</tt></div><div style="margin-bottom: 0in"><tt>[ ] Socket Filtering</tt></div><div style="margin-bottom: 0in"><tt><y> Unix domain sockets</tt></div><div style="margin-bottom: 0in"><tt>[y] TCP/IP networking</tt></div><br />
<br />
<tt>[ ] IP: multicasting</tt><br />
<br />
<tt>[y] IP: advanced router</tt><br />
<br />
<tt>[ ] IP: kernel level autoconfiguration</tt><br />
<br />
<tt>[y] IP: firewalling</tt><br />
<br />
<tt>[y] IP: always defragment (required for masquerading)</tt><br />
<br />
<tt>[y] IP: transparent proxy support</tt><br />
<br />
<tt>[M] IP: masquerading</tt><br />
<br />
<tt>--- Protocol-specific masquerading support will be built as modules.</tt><br />
<br />
<tt>[M] IP: ICMP masquerading</tt><br />
<br />
<tt>--- Protocol-specific masquerading support will be built as modules.</tt><br />
<br />
<tt>[Y] IP: masquerading special modules support <font color="#FF0000"><- Choisir tout les modules en répondant M</font></tt><br />
<br />
<tt>[y] IP: optimize as router not host</tt><br />
<br />
<tt>< > IP: tunneling</tt><br />
<br />
<tt>< > IP: GRE tunnels over IP</tt><br />
<br />
<tt>[y] IP: aliasing support</tt><br />
<br />
<tt>[y] IP: TCP syncookie support (not enabled per default)</tt><br />
<br />
<tt>--- (it is safe to leave these untouched)</tt><br />
<br />
<tt>< > IP: Reverse ARP</tt><br />
<br />
<tt>[y] IP: Allow large windows (not recommended if <16Mb of memory)</tt><br />
<br />
<tt>< > The IPv6 protocol (EXPERIMENTAL)</tt><br />
<br />
Cochez également toutes les autres options nécessaires (voir la [../kernel/kernel.php3 rubrique noyau]).<br />
<br />
<div style="margin-bottom: 0in">Bon vous recompilez le noyau (<tt>make dep; make clean; make bzImage</tt>), déplacez votre ancien répertoire de module (<tt>mv /lib/module/votre_version /lib/module/votre_version.old</tt>), puis compilez et instakllez les modules (<tt>make modules; make modules_install</tt>), copiez alors le nouveau kernel (c<tt>p /usr/src/linux/arch/i386/boot/bzImage /boot</tt>) et si vous utilisez LILO, reconfigurez le pour qu'il pointe sur votre nouveau kernel (editez <tt>/etc/lilo.conf</tt>) et relancez lilo (<tt>/sbin/lilo</tt>), sinon reconfigurez votre loader (CHOS, LOADLIN, etc.). Enfin on reboute (<tt>reboot</tt>). Ouf ! :)</div><br />
<br />
; '''<u>Remarque</u>''' :<br />
: Vérifiez la configuration réseau, assurez-vous que l'adresse de réseau de votre LAN est bien une des adresses réservée (192.168.2.0 par exemple, voir la [lan.php3 rubrique réseau local] pour ça). Pour la configuration de la carte externe, assurez vous aussi de sa bonne configuration pour accéder au net (testez votre connexion en fait), de même si la connexion se fait par modem. Pour tout ce qui suit je suppose que votre connexion au net se fait via une carte ethernet, en fait si vous utilisez un modem, de toute façon c'est identique. Bon avant de vraiment configurer le firewall on va tout d'abord mettre en place le « masquerading ».<br />
<br />
== Mise en place du filtrage, du masquerading, routage LAN<tt><-></tt>NET et règles de base ==<br />
<br />
<div style="margin-bottom: 0in"><font face="Times New Roman, serif">Assurez-vous d'avoir bien la configuration précédente pour votre kernel (validez les lors de la configuration du kernel).</font></div><div style="margin-bottom: 0in">Compilez le kernel puis les modules. Une fois tout ça réalisé, ajouter dans le fichier <tt>/etc/rc.d/rc.local</tt> (vérifiez le chemin, il peut être différent suivant les distributions) le chargement des modules de masquerade :</div><blockquote><div style="margin-bottom: 0in"><tt>/sbin/depmod -a </tt>''(n'ajoutez cette ligne que si elle n'est pas déjà présente)''</div><div style="margin-bottom: 0in"><tt>/sbin/modprobe ip_masq_ftp </tt>''(pour ftp)''</div><div style="margin-bottom: 0in"><tt>/sbin/modprobe ip_masq_raudio </tt>''(pour real audio)''</div><div style="margin-bottom: 0in"><tt>/sbin/modprobe ip_masq_irc </tt>''(pour IRC)''</div> </blockquote><div style="margin-bottom: 0in">et tout autre module comme <tt>ip_masq_cuseeme</tt>, <tt>ip_masq_vdolive</tt>, etc. que vous pouvez récupérer sur le net, si vous voulez bien sûr que de tels services soit accessibles par votre réseau local.</div> <br />
<br />
<br /> <br />
<br />
; '''<u>Remarque</u>'' '''''<nowiki>:</nowiki><br />
: Je vous rappelle quand même que plus vous ouvrirez de services, plus votre sécurité baissera. En effet certains services « supplémentaires » peuvent contenir des bugs encore inconnus mais exploitables plus tard. Si vous voulez une sécurité accrue n'autorisez que le web ainsi que le FTP, surtout si vous êtes sur un réseau d'entreprise, je ne vois pas pourquoi l'IRC par exemple doit être activé, on n'en a pas besoin pour travailler dans une entreprise :).<br />
<br />
<div style="margin-bottom: 0in; font-weight: medium; text-decoration: none">Avant de continuer vérifiez bien que votre LAN (réseau local) est bien sur une adresse réservée privé, c'est a dire du type:</div><blockquote><div style="margin-bottom: 0in; font-weight: medium; text-decoration: none">'''10.0.0.0 - 10.255.255.255 Classe A'''</div><div style="margin-bottom: 0in">'''172.16.0.0 - 172.31.255.255 Classe B'''</div><div style="margin-bottom: 0in">'''192.168.0.0 - 192.168.255.255 Classe C'''</div> </blockquote><div style="margin-bottom: 0in">Pour plus de simplicité, je considère que votre LAN est sur l'adresse réseau '''192.168.1.0''' et que votre « passerelle » (le firewall Linux) a comme adresse '''192.168.1.1'''</div><div style="margin-bottom: 0in; font-weight: medium; text-decoration: none">Configurez aussi les autres machines de votre LAN avec bien sûr une adresse IP valide (de 192.168.1.2 jusqu'à 192.168.1.254), l'adresse de passerelle et de DNS, celle du Firewall (192.168.1.1).</div><div style="margin-bottom: 0in; font-weight: medium; text-decoration: none">Bon maintenant sur le Firewall, on va activer le masquerade avec:</div><div style="margin-bottom: 0in"><tt>'''<nowiki># </nowiki>'''ipchains -P forward DENY</tt></div><div style="margin-bottom: 0in"><tt>'''<nowiki># </nowiki>'''ipchains -A forward -s yyy.yyy.yyy.yyy/x -j MASQ</tt></div><div style="margin-bottom: 0in; font-weight: medium; text-decoration: none">avec '''x''' qui correspond au masque et '''yyy.yyy.yyy.yyy''' l'adresse réseau de votre LAN (ici 192.168.1.0)</div> <br />
<br />
<br /> <br /> <br />
<br />
{| border="BORDER" cellpadding="2"<br />
|- valign="TOP"<br />
! width="197" | Masque<br />
! width="198" | Valeur de x<br />
! width="197" | Classe<br />
|- valign="TOP"<br />
! width="197" | '''''255.0.0.0'''''<br />
! width="198" | '''''8'''''<br />
! width="197" | '''''A'''''<br />
|- valign="TOP"<br />
| width="197" |<br />
<center>'''''255.255.0.0'''''</center><br />
| width="198" |<br />
<center>'''''16'''''</center><br />
| width="197" |<br />
<center>'''''B'''''</center><br />
|- valign="TOP"<br />
| width="197" |<br />
<center>'''''255.255.255.0'''''</center><br />
| width="198" |<br />
<center>'''''24'''''</center><br />
| width="197" |<br />
<center>'''''C'''''</center><br />
|- valign="TOP"<br />
| width="197" |<br />
<center>'''''255.255.255.255'''''</center><br />
| width="198" |<br />
<center>'''''32'''''</center><br />
| width="197" |<br />
<center>'''''Point à point'''''</center><br />
|}<br />
<br />
Si pour vous ce style de notation de masque vous gêne vous pouvez aussi utiliser la notation xxx.xxx.xxx.xxx du masque pour remplacer x.<br />
<br />
Pour notre exemple on tape alors:<br />
<br />
<tt>'''<nowiki># </nowiki>'''ipchains -P forward DENY</tt><br />
<br />
<div style="margin-bottom: 0in"><tt>'''<nowiki># </nowiki>'''ipchains -A forward -s 192.168.1.0/24 -j MASQ</tt></div><div style="margin-bottom: 0in">ou</div><div style="margin-bottom: 0in"><tt>'''<nowiki># </nowiki>'''ipchains -P forward DENY</tt></div><div style="margin-bottom: 0in"><tt>'''<nowiki># </nowiki>'''ipchains -A forward -s 192.168.1.0/255.255.255.0 -j MASQ</tt></div><div style="margin-bottom: 0in; font-weight: medium; text-decoration: none">Bon on a fait quoi au juste là ?</div><br />
<br />
* La première ligne indique au noyau de ne transmettre AUCUN paquet, donc on bloque TOUT en fait.<br />
* La deuxième ligne elle indique de transmettre les paquets réseaux de notre LAN (192.168.1.0 avec masque 255.255.255.0).<br />
<br />
<div style="margin-bottom: 0in; font-weight: medium; text-decoration: none">Donc en fait notre Firewall Linux ne laissera passer au travers de lui que les communications LAN<->Extérieur.</div><div style="margin-bottom: 0in; font-weight: medium; text-decoration: none">Au lieu de laisser la possibilité à toutes les machines de notre LAN d'avoir accès vers l'extérieur, on aurait pu aussi ne spécifier que certaines machines, par exemple on veut que juste le patron de notre société ainsi que l'administrateur réseau par exemple qui ont des machines avec adresse IP 192.168.1.3 et 192.168.1.10. Pour cela il faut jouer sur le masque, ça nous donne:</div><div style="margin-bottom: 0in"><tt>'''<nowiki># </nowiki>'''ipchains -P forward DENY</tt></div><div style="margin-bottom: 0in"><tt>'''<nowiki># </nowiki>'''ipchains -A forward -s 192.168.1.3/32 -j MASQ</tt></div><div style="margin-bottom: 0in"><tt>'''<nowiki># </nowiki>'''ipchains -A forward -s 192.168.1.10/32 -j MASQ</tt></div><div style="margin-bottom: 0in"> <br />Pour rendre ces règles « permanentes » après chaque reboot, ajoutez-les aussi dans un fichier que vous appelez par exemple '''<tt>rc.firewall</tt>''' que vous placez dans <tt>/etc/rc.d</tt>, sinon vous allez devoir les taper à chaque reboot du système. <br /> </div><div style="margin-bottom: 0in">On résume alors ce qui peut se trouver dans un tel fichier:</div><div style="margin-bottom: 0in"><br />
----<br />
<tt><nowiki>#!/bin/bash</nowiki></tt></div><div style="margin-bottom: 0in"><tt><nowiki>#</nowiki></tt></div><div style="margin-bottom: 0in"><tt><nowiki># Firewall.rc</nowiki></tt></div><div style="margin-bottom: 0in"><tt><nowiki>#</nowiki></tt></div><div style="margin-bottom: 0in"><tt><nowiki># Script de démarrage des règles du firewall</nowiki></tt></div><div style="margin-bottom: 0in"><tt><nowiki>#</nowiki></tt></div><div style="margin-bottom: 0in"><tt><nowiki># Tchesmeli serge , Version 0.2</nowiki></tt></div><div style="margin-bottom: 0in"><tt><nowiki>#</nowiki></tt></div><div style="margin-bottom: 0in"><tt><nowiki># Lea : http://www.lea-linux.org</nowiki></tt></div><div style="margin-bottom: 0in"><tt><nowiki>#</nowiki></tt></div><div style="margin-bottom: 0in"><tt>echo "Démarrage FIREWALL :"</tt></div><div style="margin-bottom: 0in"> <div style="margin-bottom: 0in"><tt>echo "- Activation de l'IP forwarding..."</tt></div><tt>echo "1" > /proc/sys/net/ipv4/ip_forward</tt><br />
<br />
<tt><nowiki># D'abord on bloque tout</nowiki></tt><br />
<br />
</div><div style="margin-bottom: 0in"><tt>echo -n "- Arrêt total des transmissions réseau..."</tt></div><div style="margin-bottom: 0in; font-weight: medium; text-decoration: none"><tt>if [ -x /sbin/ipchains ]; then</tt></div><div style="margin-bottom: 0in; font-weight: medium; text-decoration: none"><tt> /sbin/ipchains -P forward DENY</tt></div><div style="margin-bottom: 0in; font-weight: medium; text-decoration: none"><tt> echo "OK"</tt></div><div style="margin-bottom: 0in; font-weight: medium; text-decoration: none"><tt>else</tt></div><div style="margin-bottom: 0in; font-weight: medium; text-decoration: none"><tt> echo "Erreur !"</tt></div><div style="margin-bottom: 0in; font-weight: medium; text-decoration: none"><tt> echo "Votre noyau n'est pas configuré pour\</tt><br /><tt>permettre le filtrage.... veuillez le recompiler."</tt></div><div style="margin-bottom: 0in; font-weight: medium; text-decoration: none"><tt> exit</tt></div><div style="margin-bottom: 0in; font-weight: medium; text-decoration: none"><tt>fi</tt></div><div style="margin-bottom: 0in; font-weight: medium; text-decoration: none"> <br /><tt><nowiki># On charge les modules de masquerade</nowiki></tt></div><div style="margin-bottom: 0in"><tt>echo -n "- Chargement des modules de masquerade... "</tt></div><div style="margin-bottom: 0in"><tt>/sbin/modprobe ip_masq_ftp</tt></div><div style="margin-bottom: 0in"><tt>/sbin/modprobe ip_masq_raudio</tt></div><div style="margin-bottom: 0in"><tt>/sbin/modprobe ip_masq_irc</tt></div> <br />
<br />
<tt>echo "OK"</tt><br /><tt><nowiki># Vous pouvez y inclure ou enlever</nowiki></tt><br /><tt><nowiki># les modules de votre choix</nowiki></tt><br />
<br />
<tt><nowiki># Puis on applique les règles</nowiki></tt><br />
<br />
<div style="margin-bottom: 0in"><div style="margin-bottom: 0in"><tt>echo -n "- Chargement des règles de filtrage... "</tt></div><tt><nowiki># ipchains -P forward DENY</nowiki></tt></div><div style="margin-bottom: 0in; font-weight: medium; text-decoration: none"><tt>ipchains -A forward -s 192.168.1.0/255.255.255.0 -j MASQ</tt></div> <br />
<br />
<tt>echo "OK"</tt><br /><tt><nowiki># A vous de bien fixer les règles suivant votre réseau</nowiki></tt><br />
<br />
<div style="margin-bottom: 0in; font-weight: medium; text-decoration: none"> </div><div style="margin-bottom: 0in; font-weight: medium; text-decoration: none"><tt>echo "Firewall prêt."</tt><br /><br />
----<br />
<br />
On peut alors appeler ce script depuis <tt>/etc/rc.d/rc.local</tt> en y ajoutant une ligne :<br />
<br />
<blockquote><tt>source rc.firewall</tt></blockquote> Voilà ! Votre firewall est configuré ! A vous de jouer sur les règles afin d'optimiser la sécurité sur votre réseau local...</div><div class="merci">Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Serge Tchesmeli le 05/06/2000.</div><br />
<br />
= Copyright =<br />
Copyright &copy; 05/06/2000, Serge Tchesmeli<br />
{{LDL}}<br />
<br />
<br />
=Autres ressources=<br />
* [http://www.freenix.org/unix/linux/HOWTO/Firewall-HOWTO.html Firewall-HOWTO]<br />
* [http://www.freenix.org/unix/linux/HOWTO/IPCHAINS-HOWTO.html IPCHAINS-HOWTO]<br />
* [http://www.freenix.org/unix/linux/HOWTO-vo/IP-Masquerade-HOWTO.html IP-Masquerade HOWTO]<br />
* [http://www.freenix.org/unix/linux/HOWTO/mini/IP-Masquerade.html IP-Masq. mini-HOWTO]<br />
* [http://www.fwbuilder.org Firewall builder], un excellent outil pour configurer votre firewall sous Linux.<br />
* La logithèque de Léa, [[Logithèque:Oldrub=21|section Sécurité]].</div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=Samba&diff=9161
Samba
2005-10-14T18:00:31Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div>[[Category:Partager ses fichiers]]<br />
= Partager ses fichiers et imprimantes avec Samba =<br />
<br />
<div class="leatitre">Partager ses fichiers et imprimantes avec Samba</div><div class="leapar">Par [mailto:anne at lea-linux point org Anne]</div><br />
<br />
Vous disposez à la maison ou dans votre entreprise de machines sous Linux et d'autres sous Windows. Comment faire en sorte de faire communiquer tout ce petit monde ? Samba va vous permettre de centraliser et rendre accessibles vos fichiers et imprimantes à partir de toutes ces machines.<br />
<br />
L'article se propose de donner les éléments nécessaires pour configurer ce partage dans un contexte de groupe de travail (le plus simple) mais en sécurisant un minimum l'accès à ces ressources, et donc une authentification des utilisateurs. Nous verrons dans un premier temps la configuration en mode texte, qui a l'avantage de vous expliquer les arcanes du fonctionnement du serveur. Vous pourrez également utiliser les interfaces graphiques, ce qui vous permettra d'obtenir le même résultat.<br />
<br />
= Le projet Samba =<br />
<br />
Le projet démarre en 1992, grâce à Andrew TRIDGELL. Etudiant en physique, il développe un protocole de partage de fichiers qui émulait les systèmes Digital. 18 mois plus tard, il apprendra que ce protocole fonctionne également avec Windows.<br />
<br />
Depuis le projet compte des développeurs dans le monde entier et bénéficie également de financements d'entreprise pour l'implémentation de fonctionnalités compatibles Windows.<br />
<br />
= Installer Samba =<br />
<br />
Nous allons travailler à partir d'une distribution Mandrake 10.0. Les postes clients peuvent être indifféremment sous Windows 95/98 et/ou Windows 2000/XP/2003.<br />
<br />
== Récupération et installation des paquetages Samba. ==<br />
<br />
Lors de l'installation de votre distribution, vous avez pu choisir d'installer un certain nombre de serveurs, dont Samba. Nous allons donc commencer par véfifier la présence des paquetages nécessaires.<br />
<br />
<div class="code"><nowiki># rpm -qa | grep samba</nowiki><br /> samba-server-3.0.2a-3mdk<br /> samba-common-3.0.2a-3mdk<br /> samba-client-3.0.2a-3mdk</div><br />
<br />
Si vous obtenez quelque chose de similaire, c'est que tout est déjà prêt. Vous pouvez alors passer à la section suivante. Dans le cas contraire, nous allons installer les paquetages depuis le CD de votre distribution (ou tout autre support contenant votre distribution) :<br />
<br />
<div class="code"><br />
<br />
<nowiki># urpmi samba<br />
Un des paquetages suivants est nécessaire :<br />
1- samba-server-3.0.2a-3mdk.i586<br />
2- samba2-server-2.2.8a-14mdk.i586<br />
Que choisissez-vous ? (1-2)1<br />
Pour satisfaire les dépendances, les paquetages suivants vont être installés (14 Mo):<br />
samba-common-3.0.2a-3mdk.i586<br />
samba-server-3.0.2a-3mdk.i586<br />
Est-ce correct ? (O/n) o<br />
Préparation... ##################################################<br />
1:samba-common ##################################################<br />
2:samba-server ##################################################</nowiki><br />
<br />
</div><br />
<br />
L'installation propose un choix entre Samba2 et Samba3. La dernière version apporte des améliorations considérables et des fonctionnalités supplémentaires, comme la gestion des groupes. Ces fonctionnalités sont surtout utilisées dans une configuration orientée entreprise mais après tout, ne nous refusons rien !<br />
<br />
Nous allons également installer la partie cliente. Elle contient tous les outils qui permettent notamment le montage et le parcours des ressources Samba.<br />
<br />
<div class="code"><br />
<br />
<nowiki># urpmi samba-client<br />
Préparation... ##################################################<br />
1:samba-client ##################################################</nowiki><br />
<br />
</div><br />
<br />
== Premier test de votre installation ==<br />
<br />
Maintenant que Samba est installé, démarrons le serveur :<br />
<br />
<div class="code"><br />
<br />
<nowiki># /etc/rc.d/init.d/smb start<br />
Lancement du service SaMBa : [ OK ]<br />
Lancement du service NMB : [ OK ]</nowiki><br />
<br />
</div><br />
<br />
Deux démons sont lancés, nécessaires au fonctionnement du serveur Samba : smbd et nmbd.<br />
<br />
* smbd permet le partage des fichiers et imprimantes <br />
* nmbd permet quant à lui le parcours du réseau et la résolution de noms Netbios...<br />
<br />
<div class="code"><nowiki># /etc/rc.d/init.d/smb status </nowiki><br /> smbd (pid 970) is running... nmbd (pid 972) is running...</div><br />
<br />
La commande ci-dessus permet de vérifier que Samba fonctionne correctement. Vous devez voir apparaitre les deux dernières lignes.<br />
<br />
== Automatiser le lancement de Samba ==<br />
<br />
La dernière phase de l'installation consiste pour nous à vérifier que Samba sera bien lancé automatiquement à chaque démarrage de la machine (ce qui évite bien des surprises !). Pour le vérifier, exécutons la commande ci-dessous :<br />
<br />
<div class="code"><br />
<br />
<nowiki># chkconfig --list smb<br />
smb 0:Arrêt 1:Arrêt 2:Arrêt 3:Arrêt 4:Arrêt 5:Arrêt 6:Arrêt</nowiki><br />
<br />
</div><br />
<br />
Elle indique les niveaux de fonctionnement auxquels le serveur est démarré. Dans le cas où Samba n'est pas démarré aux niveaux souhaités, ici il n'est jamais démarré, il suffit de reconfigurer l'initialisation du serveur :<br />
<br />
<div class="code"><nowiki># chkconfig --level 345 smb on</nowiki></div><br />
<br />
Dans ce cas, Samba est démarré aux niveaux 3, 4 et 5, ce qui correspond aux niveaux standards de fonctionnement des services réseau.<br />
<br />
Si la ligne de commande vous insupporte, vous pouvez utiliser, en root, la commande drakxservices :<br />
<br />
'''Schema1 : configurer le démarrage de Samba'''<br />
<br />
[[Image:samba-samba1.png]]<br />
<br />
Cliquez sur la case à cocher "Au démarrage" sur la ligne smb pour démarrer le service dès le démarrage.<br />
<br />
== Installation du serveur d'impression ==<br />
<br />
Pour terminer la phase d'installation, nous allons voir comment installer et configurer rapidement le serveur d'impression cups. Encore une fois, l'installation des paquetages est réalisée grâce à la commande urpmi, suivie du démarrage du serveur :<br />
<br />
<div class="code"><br />
<br />
<nowiki># urpmi cups cups-drivers<br />
installation de /var/cache/urpmi/rpms/cups-1.1.20-5mdk.i586.rpm <br />
/var/cache/urpmi/rpms/cups-drivers-1.1-133mdk.i586.rpm<br />
Préparation... ##################################################<br />
1:cups ##################################################<br />
2:cups-drivers ##################################################<br />
# service cups start<br />
Lancement du service d'impression CUPS : [ OK ]</nowiki><br />
<br />
</div><br />
<br />
Ci-dessous la configuration et la gestion d'une imprimante :<br />
<br />
'''Schema2 : interface d'administration de cups'''<br />
<br />
[[Image:samba-samba2.png]]<br />
<br />
La configuration est relativement simple. Sur votre machine, tapez l'url : http://localhost:631. Cliquez sur "Administrer les imprimantes" et laissez-vous guider pour ajouter votre ou vos imprimantes :).<br />
<br />
= Le fichier de configuration principal =<br />
<br />
Le fichier de configuration à connaitre pour Samba est /etc/samba/smb.conf. Nous allons en détailler les grandes rubriques. Celui-ci, on le verra, est modifiable soit à l'aide d'un éditeur de texte soit d'une interface graphique.<br />
<br />
Le fichier est découpé en grandes sections indiquées de cette manière : [section]. Les différents paramètres sont ensuite inscrits de la manière suivante : paramètre = valeur. Toute ligne commencée par un "#" ou ";" est considérée comme un commentaire. Par convention, le ";" est utilisé pour commenter les lignes de configuration.<br />
<br />
Nous allons passer en revue les différentes sections en énonçant les paramètres les plus courants. Les outils graphiques proposés pour paramétrer Samba que nous verrons par la suite, ne font que mettre à jour ce fichier de configuration.<br />
<br />
== Section de configuration générale ==<br />
<br />
La première section est annoncée par [global]. Elle contient les éléments généraux de la configuration du serveur Samba : nom du groupe de travail, réseaux autorisés, utilisateurs administrateurs...<br />
<br />
* '''workgroup''' : nom du groupe de travail ou du domaine<br />
* '''netbios name '''<nowiki>: nom netbios du serveur Samba, par défaut égal au nom de la machine (hostname)</nowiki><br />
* '''server string '''<nowiki>: description affichée lors du parcours réseau, il s'agit d'un commentaire.</nowiki><br />
* '''printing''' : système d'impression utilisé pour le serveur d'impression : sous Linux on trouvera lprng et de plus en plus, cups (le choix réalisé dans cet article).<br />
* '''log file / max log size / log level''' : configuration des logs du serveur : respectivement le nom du fichier de log, sa taille maximum et le niveau des logs (plus le niveau est élevé, plus la quantité d'informations est importante)<br />
* '''hosts allow (deny) '''<nowiki>: entrer ici la liste des adresses IP des machines (ex : 192.168.0.3) ou réseaux ( ex : 192.168.0.) autorisés à se connecter au serveur Samba (et inversement si on utilise le paramètre hosts deny). Le paramètre est important surtout si votre machine est accessible de l'extérieur. Le protocole Netbios fait l'objet de nombreuses attaques. Pensez également à configurer votre firewall pour bloquer les ports 137, 138 et 139 de l'extérieur.</nowiki><br />
* '''security''' : c'est une des options les plus importantes du fichier, qui pourra être bloquante si elle est mal renseignée. Elle indique le mode de discussion du client Windows avec le serveur Samba. Dans les versions 3.x de Samba, le défaut est user, et share pour Samba 2.x. Dans la version qui nous intéresse, on utilisera le mode user si les noms de comptes utilisés pour se connecter au serveur ont un compte équivalent sur la machine Linux (existence d'une entrée dans /etc/passwd). Dans le cas contraire, on préférera share. Il existe également 2 autres types possibles : domain et server que nous n'aborderons pas ici et qui sont réservés dans un fonctionnement de Samba en tant que contrôleur de domaine. Ci-dessous quelques explications sur les implications de ce choix : <br />
** '''share''' : ce mode ne nécessite pas d'authentification par un compte valide. Si le paramètre guest only est renseigné, alors tout nouvel utilisateur sera identifié par le biais de cet utilisateur invité.<br />
** '''user''' : dans ce cas de figure, l'utilisateur doit s'authentifier systématiquement. Son compte windows devra disposer d'un compte correspondant sur le serveur (on parle aussi en bon français de mapping)<br />
* '''encrypt passwords / unix password sync / passwd program / passwd chat ''' : configuration des mots de passe. On aura recours aux mots de passes encryptés. <br /> La synchronisation des mots de passe permet la synchronisation entre le mot de passe de l'utilisateur Samba et son compte sur le système Linux. En l'autorisant, on permet à l'utilisateur de modifier son mot de passe à partir de la machine cliente et donc d'un poste client sous Windows.<br /> Enfin passwd program et passwd chat indiquent le programme utilisé pour réaliser cette modification ainsi que le dialogue qui s'établira avec le serveur. Les paramètres par défaut conviennent parfaitement.<br />
* '''character set / client code page '''<nowiki>: permettent de faire correspondre un code page Windows avec un character set UNIX, pour utiliser notamment les caractères accentués. Par défaut, on utilisera :</nowiki><br /> client code page = 850<br /> character set = ISO8859-1<br />
<br />
== Section de configuration des partages de fichiers ==<br />
<br />
Nous allons maintenant passer aux sections de partages de fichiers. Nous aurons une section par partage défini. A l'intérieur de chacune de ces sections, nous trouverons les options qui définissent le dit partage.<br />
<br />
Nous allons donner un nom à chaque partage. Attention il existe un nom de partage de fichiers spécifique : [homes]. Il définit le partage des répertoires personnels des utilisateurs, sans avoir à spécifier le chemin dans les options. De manière générale, on aura donc [monpartage].<br />
<br />
Ci-dessous le détail des options les plus courantes utilisées :<br />
<br />
* '''path''' : chemin d'accès du partage - il n'est pas à spécifier pour le partage [homes]<br />
* '''comment''' : commentaire décrivant le partage qui apparait lors du parcours du réseau Samba (voisinage réseau sous Windows), il s'agit uniquement d'un commentaire<br />
* '''browseable''' : le partage sera visible lors du parcours du réseau<br />
* '''read only''' : limite l'accès en lecture uniquement<br />
* '''write list''' : limite l'accès en écriture aux données du partage aux utilisateurs et/ou groupes d'utilisateurs spécifiés. Un groupe sera mentionné de cette façon : @nom_du_groupe.<br />
<br />
== Configuration des partages d'imprimantes ==<br />
<br />
Votre serveur Samba peut également vous servir à partager des imprimantes. Nous traiterons ici du cas où ces imprimantes sont gérées par cups.<br />
<br />
Le partage d'imprimante peut se faire à plusieurs niveaux :<br />
<br />
* partage de la ressource (partage intitulé [printers]), mais qui nécessite d'avoir installé les drivers sur le poste client,<br />
* partage des drivers, dans ce dernier cas vous n'avez plus besoin d'installer de driver sur le client Windows, le partage est intitulé [print$]. <br />
<br />
Vous pouvez décider de partager uniquement la ressource ou bien les drivers et la ressource.<br />
<br />
<div class="code"><br />
<br />
<nowiki>[global]<br />
...<br />
# système d'impression utilisé<br />
printing = cups<br />
# administrateur des imprimantes<br />
printer admin = root<br />
...<br />
<br />
# partage des ressources d'impression<br />
[printers]<br />
comment = All Printers<br />
path = /var/spool/samba<br />
create mask = 0700<br />
guest ok = Yes<br />
printable = Yes<br />
browseable = Yes<br />
<br />
# partage des drivers des imprimantes <br />
[print$]<br />
path = /var/lib/samba/printers<br />
browseable = yes<br />
read only = yes<br />
write list = root</nowiki><br />
<br />
</div><br />
<br />
Pour mettre les drivers à disposition sur le serveur Samba, il vous faut vous procurer les drivers Postcript Adobe. Pour les télécharger : http://www.adobe.com/support/downloads. Une fois extraits, nous allons les copier dans /usr/share/cups/drivers.<br />
<br />
Nous allons ensuite procéder à la création effective du partage des imprimantes cups par Samba grâce à la commande cupsaddsmb :<br />
<br />
<div class="code"><nowiki># cupsaddsmb -a</nowiki><br /> ...<br /> passwd:<br /> ...<br /> #</div><br />
<br />
Pour vérifier que le lien a bien été réalisé, vous avez plusieurs possibilités.<br />
<br />
* la commande '''smbclient''' va vous lister, entre autres, les imprimantes partagées : <div class="code"><br />
<nowiki># smbclient -L localhost<br />
Password:<br />
Anonymous login successful<br />
Domain=[MONGROUPE] OS=[Unix] Server=[Samba 3.0.2a]<br />
Sharename Type Comment<br />
--------- ---- -------<br />
print$ Disk<br />
public Disk Public Stuff<br />
IPC$ IPC IPC Service (Samba Server 3.0.2a)<br />
ADMIN$ IPC IPC Service (Samba Server 3.0.2a)<br />
hp4050n Printer<br />
hplaser4000 Printer hplaser4000<br />
Anonymous login successful<br />
Domain=[MONGROUPE] OS=[Unix] Server=[Samba 3.0.2a]<br />
...</nowiki><br />
</div><br />
* la commande '''rpcclient''' permet, selon l'option choisie, d'énumérer les imprimantes et drivers partagés : <div class="code"><br />
<nowiki># rpcclient -d=0 -U root -c 'enumprinters' localhost<br />
Password:<br />
flags:[0x800000]<br />
name:[\\pingu\hp4050n]<br />
description:[\\pingu\hp4050n,hp4050n,]<br />
comment:[]<br />
flags:[0x800000]<br />
name:[\\pingu\hplaser4000]<br />
description:[\\pingu\hplaser4000,hplaser4000,hplaser4000]<br />
comment:[hplaser4000]<br />
# rpcclient -d=0 -U root -c 'enumdrivers' localhost<br />
Password:<br />
[Windows 4.0]<br />
Printer Driver Info 1:<br />
Driver Name: [hplaser4000]<br />
Printer Driver Info 1:<br />
Driver Name: [hp4050n]<br />
[Windows NT x86]<br />
Printer Driver Info 1:<br />
Driver Name: [hplaser4000]<br />
Printer Driver Info 1:<br />
Driver Name: [hp4050n]<br />
[Windows NT x86]<br />
Printer Driver Info 1:<br />
Driver Name: [hplaser4000]<br />
Printer Driver Info 1:<br />
Driver Name: [hp4050n]</nowiki><br />
</div><br />
* enfin la commande '''testprns''' permet de vérifier qu'un nom d'imprimante est valide c'est-à-dire utilisable car correctement reconnu sur le système. <div class="code"><nowiki># testprns hp4050n</nowiki><br /> Looking for printer hp4050n in printcap file /etc/printcap<br /> Printer name hp4050n is valid.<br /> # testprns bidule<br /> Looking for printer bidule in printcap file /etc/printcap<br /> Printer name bidule is not valid.</div> <br />
<br />
= Commandes utiles =<br />
<br />
== Monter des ressources du serveur dans un système de fichiers Linux ==<br />
<br />
Il est possible d'utiliser une un partage de fichiers smb (Samba, Windows©) comme faisant partie du système de fichiers Linux local : il suffit de monter la ressource. Pour que cela fonctionne, il faut que le noyau de Linux ainsi que Samba aient été compilés avec le support du système de fichiers smbfs (ce qui est le cas du noyau et des paquetages Samba de Mandrake ainsi que de nombreuses autres distributions).<br />
<br />
L'opération peut être réalisée avec la commande classique mount mais uniquement en tant que root.<br />
<br />
<u>Exemple :</u><br />
<br />
<div class="code"><nowiki># mount -t smbfs \\\\pingu\\homes /mnt/samba -o username=anne</nowiki></div><br />
<br />
Cet exemple permet de monter le répertoire personnel de l'utilisateur anne partagé par le serveur samba sur le répertoire /mnt/samba. Le montage nécessite de spécifier le type de système de fichiers (-t smbfs) et l'identité utilisée pour accéder au partage (-o username=anne). Ce système de fichiers peut être démonté grâce à la commande umount.<br />
<br />
<div class="code"><nowiki># umount /mnt/samba</nowiki></div><br />
<br />
Ce montage peut être effectué en "non root" grâce à la commande smbmount, à condition que le répertoire de montage soit accessible en écriture pour l'utilisateur, ainsi que le partage lui-même..<br />
<br />
<u>Exemple :</u><br />
<br />
<div class="code">$ smbmount \\\\pingu\\homes /home/anne/samba</div><br />
<br />
Le système de fichiers sera démonté toujours en utilisateur grâce à la commande smbumount.<br />
<br />
<div class="code">$ smbumount home/anne/samba</div><br />
<br />
== Tester la syntaxe de smb.conf : testparm ==<br />
<br />
La commande testparm permet de tester les options utilisées dans le fichier ainsi que la syntaxe. Elle spécifie également, après parcours du fichier, les partages effectifs, le status du serveur.<br />
<br />
Testons la validité de notre fichier de configuration :<br />
<br />
<div class="code"><nowiki># testparm</nowiki><br /> Load smb config files from /etc/samba/smb.conf<br /> Processing section "[homes]"<br /> Processing section "[printers]"<br /> Processing section "[public]"<br /> Loaded services file OK.<br /> Server role: ROLE_STANDALONE<br /> Press enter to see a dump of your service definitions</div><br />
<br />
== Parcourir le réseau : smbclient ==<br />
<br />
smbclient est une commande qui permet d'accéder aux ressources partagées par le serveur. Elle est notamment très utile pour tester le bon fonctionnement des partages avec votre serveur Samba.<br />
<br />
<div class="code"><nowiki># smbclient \\\\pingu\\homes -U anne </nowiki><br /> Password: <br /> Domain=[PINGU] OS=[Unix] Server=[Samba 3.0.2a] <br /> smb: \></div><br />
<br />
La commande ci-dessus est un accès au répertoire personnel sur le serveur en tant qu'utilisateur anne.<br />
<br />
== Machines visibles sur le réseau netbios : findsmb ==<br />
<br />
La commande findsmb va vous permettre de lister les machines visibles grâce aux requêtes smb de votre serveur (script effectuant une combinaison de commandes nmblookup et smbclient).<br />
<br />
<u>Exemple :</u><br />
<br />
<div class="code"><br />
<br />
<nowiki># findsmb<br />
<br />
IP ADDR NETBIOS NAME WORKGROUP/OS/VERSION<br />
---------------------------------------------------------------------<br />
Domain=[LINUXERIES] OS=[Unix] Server=[Samba 3.0.2a]<br />
Domain=[LINUXERIES] OS=[Unix] Server=[Samba 3.0.2a]<br />
192.168.0.3 PINGU +[ LINUXERIES ]<br />
Domain=[WORKGROUP] OS=[Windows 5.0] Server=[Windows 2000 LAN Manager]<br />
Domain=[WORKGROUP] OS=[Windows 5.0] Server=[Windows 2000 LAN Manager]<br />
192.168.0.100 PLOPLAND-OAAHXLR+[ WORKGROUP ]</nowiki><br />
<br />
</div><br />
<br />
Nous pouvons voir ci-dessus 2 machines : PINGU et PLOPLAND-OAAHXLR.<br />
<br />
== Résoudre les noms netbios : nmblookup ==<br />
<br />
La commande nmblookup permet de résoudre les noms netbios en IP. La commande peut permettre de vérifier le bon fonctionnement de la configuration de votre serveur ou de vos machines clientes.<br />
<br />
<u>Exemple :</u><br />
<br />
<div class="code"><nowiki># nmblookup pingu</nowiki><br /> 192.168.10.52 pingu<00></div><br />
<br />
Au nom netbios pingu correspond l'adresse IP 192.168.10.52. indique que la machine est simple station de travail.<br />
<br />
== Lister les connexions au serveur : smbstatus ==<br />
<br />
La commande smbstatus permet de générer une liste des connexions au serveur au moment précis où vous tapez la commande.<br />
<br />
<div class="code"><br />
<br />
<nowiki># smbstatus<br />
<br />
Samba version 3.0.2a<br />
PID Username Group Machine<br />
-------------------------------------------------------------------<br />
6909 lealinux lealinux pingu (192.168.0.3)<br />
6916 bidule bidule pingu (192.168.0.3)<br />
<br />
Service pid machine Connected at<br />
-------------------------------------------------------<br />
lealinux 6909 pingu Sun Jun 27 16:50:06 2004<br />
bidule 6916 pingu Sun Jun 27 16:50:20 2004<br />
No locked files</nowiki><br />
<br />
</div><br />
<br />
Ci-dessus, on peut voir 2 connexions actives au serveur Samba provenant des utilisateurs lealinux et bidule, effectuées en local.<br />
<br />
= Exemple de configuration =<br />
<br />
Pour terminer sur la configuration texte de votre serveur Samba, ci-dessous un exemple type de fichier /etc/samba/smb.conf pour une utilisation courante :<br />
<br />
* authentification par utilisateur<br />
* utilisation de cups en tant que serveur d'impression, root étant administrateur<br />
* partage des imprimantes et de leurs drivers<br />
* partage des répertoires maison dont l'accès est réservé à leur propriétaire<br />
* partage public accessible à tous<br />
<br />
<div class="code"><br />
<br />
[global]<br />
# nom de l'espace de travail workgroup = LINUXERIES<br />
# commentaire sur l'espace de travail server string = Samba Server %v<br />
# Configuration du partage des ressources d'impression<br />
printcap name = cups<br />
load printers = yes<br />
printing = cups<br />
printer admin = root<br />
# Configuration des logs du serveur<br />
log file = /var/log/samba/log.%m<br />
max log size = 50<br />
# Configuration de l'authentification<br />
# type utilisé <br />
security = user<br />
# mots de passe encryptés - pour permettre de modifier le mot de passe à partir de la machine cliente<br />
encrypt passwords = yes<br />
smb passwd file = /etc/samba/smbpasswd<br />
unix password sync = Yes<br />
pam password change = yes<br />
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192<br />
<br />
# Partage des repertoires personnels<br />
[homes]<br />
comment = Home Directories<br />
browseable = no<br />
writable = yes<br />
<br />
# Partage des ressources d'impression<br />
[printers]<br />
comment = All Printers<br />
path = /var/spool/samba<br />
browseable = no<br />
# to allow user 'guest account' to print.<br />
guest ok = yes<br />
writable = no<br />
printable = yes<br />
create mode = 0700<br />
<br />
# Partage des drivers d'impression <br />
[print$]<br />
path = /var/lib/samba/printers<br />
browseable = yes<br />
write list = @adm root<br />
guest ok = yes<br />
inherit permissions = yes<br />
<br />
# Partage accessible à tous <br />
[public]<br />
path = /home/public<br />
public = yes<br />
only guest = yes<br />
writable = yes<br />
printable = no <br />
<br />
</div><br />
<br />
= Test de votre installation depuis Windows© =<br />
<br />
Passons maintenant à la phase de test à partir d'un de vos clients Windows. Cliquez sur le voisinage réseau de votre poste Windows.<br />
<br />
'''Schema3 : visualisation des partages sur un poste client Windows'''<br />
<br />
[[Image:samba-samba3.png]]<br />
<br />
Cliquez ensuite sur le nom du workgroup correspondant au nom de votre serveur Samba. Vous allez alors pouvoir visualiser l'ensemble des partages configurés, à condition que ces ressources soient "browseable" et que vous ayez les droits nécessaires.<br />
<br />
Attention tout changement intervenant sur ces ressources peut mettre un certain temps avant mise à jour de l'affichage. Netbios est en effet un protocole extremement bavard et basé sur ce qu'on appelle le broadcast. Il interpelle tout le reseau à des moments déterminés pour la mise à jour des ressources.<br />
<br />
= Gestion des utilisateurs et des groupes =<br />
<br />
Cette notion va permettre de sécuriser l'accès aux données. Toute la problématique repose sur la nécessité de disposer de comptes sur le système Linux qui vont correspondre aux utilisateurs sur les machines Windows. On parle aussi de synchronisationde ces deux types de comptes. Il en s era de même pour les groupes.<br />
<br />
== Les différents types d'utilisateurs Samba ==<br />
<br />
Il existe plusieurs types d'utilisateurs et donc de droits. Nous distinguerons l'administrateur, les utilisateurs et les invités (guest) :<br />
<br />
<u> Exemple :</u><br />
<br />
<div class="code"><br />
<br />
[global]<br />
...<br />
guest account = nobody<br />
...<br />
[monpartage]<br />
comment = mon joli partage<br />
path = /home/public<br />
guest ok = yes<br />
<br />
</div><br />
<br />
== Synchroniser les utilisateurs ==<br />
<br />
Pour synchroniser les utilisateurs Windows / Linux, on utilisera la commande smbpasswd.<br />
<br />
Dans un premier temps, on ajoute l'utilisateur au fichier /etc/samba/smbpasswd ainsi que son mot de passe qui sera le même pour Linux et Windows. Pour ce faire, utilisez l'option -a.<br />
<br />
<u>Exemple :</u><br />
<br />
# smbpasswd-a anne New SMB password: Retype new SMB password: Added user anne.<br />
<br />
Vous pouvez vérifier le contenu de /etc/samba/smbpasswd :<br />
<br />
<div class="code"><nowiki># cat /etc/samba/smbpasswd</nowiki><br /> anne:500:C4315DF197EED860C2265B23734E0DAC:9C08AB50A2F8864881B0418E3A63B77B:[U ]:LCT-40DC451B:</div><br />
<br />
Renouvelez l'opération pour chaque utilisateur devant accéder au serveur Samba.<br />
<br />
Dans le cas de figure ci-dessus, la méthode utilisée implique que l'utilisateur porte le même nom sur les 2 systèmes, anne dans notre cas. Il est toutefois possible de conserver un nom d'utilisateur sur Windows différent. On aura alors recours à un fichier supplémentaire : /etc/samba/smbusers.<br />
<br />
<u>Exemple :</u><br />
<br />
<div class="code"> # cat /etc/samba/smbusers<br /> # Unix_name = SMB_name1 SMB_name2 ...<br /> root = administrator admin<br /> anne = leanne</div><br />
<br />
Il est ensuite possible de changer le mot de passe de l'utilisateur, à partir de Windows ou bien du serveur Samba grâce à la commande smbpasswd :<br />
<br />
<div class="code"> # smbpasswd anne<br /> New SMB password:<br /> Retype new SMB password:<br /> # </div><br />
<br />
== Gestion des groupes ==<br />
<br />
Depuis la version 3.x de Samba, les groupes sont maintenant entièrement gérés. Là encore nous allons devoir synchroniser les groupes UNIX et Windows grâce à la commande net :<br />
<br />
<div class="code"><nowiki># net groupmap add unixgroup=nom_unix ntgroup=nom_windows</nowiki></div><br />
<br />
Ainsi si je dispose d'un groupe utilisateurs sur Linux, et que ce groupe se nomme utilisateurs ordinaires sur Windows, on procédera de la manière suivante :<br />
<br />
<div class="code"> # net groupmap add unixgroup=utilisateurs ntgroup='utilisateurs ordinaires'<br /> No rid or sid specified, choosing algorithmic mapping Successully added group utilisateurs ordinaires to the mapping db</div><br />
<br />
Pour lister les correspondances existantes :<br />
<br />
<div class="code"> # net groupmap list<br /> utilisateurs ordinaires (S-1-5-21-567158280-4275195276-2466317430-2001) -> utilisateurs</div><br />
<br />
Pour supprimer une correspondance :<br />
<br />
<div class="code"> # net groupmap delete ntgroup='utilisateurs ordinaires'<br /> Sucessfully removed utilisateurs ordinaires from the mapping db</div><br />
<br />
= Outils graphiques de configuration d'un serveur Samba =<br />
<br />
Il existe de nombreux outils graphiques qui vont vous permettre de procéder aux mêmes manipulations mais sans utiliser d'éditeur de texte. Les intitulés des actions à réaliser reprennent généralement les mêmes dénominations que les paramètres utilisés dans le fichier smb.conf décrit ci-dessus.<br />
<br />
== KSambaPlugin ==<br />
<br />
KsambaPlugin est un outil graphique écrit en GTK pour KDE. Il permet de configurer entièrement un serveur Samba. Il s'agit d'un module supplémentaire pour le centre de contrôle de KDE. Il procure également des propriétés supplémentaires à Konqueror, qui lui permettent d'en faire un outil de parcours réseau Samba (voir section suivante de l'article). Pour l'installer :<br />
<br />
<div class="code"><br />
<br />
<nowiki># urpmi ksambaplugin <br />
Préparation... ##################################################<br />
1:ksambaplugin ##################################################</nowiki><br />
<br />
</div><br />
<br />
Pour l'utiliser, allez dans le menu KDE "Système >> Configuration >> Configurez votre bureau". Cliquez alors sur le menu "Réseau >> Configuration de Samba". Passez ensuite en mode superutilisateur. Vous avez alors accès à la configuration de votre serveur Samba sous forme de 5 onglets :<br />
<br />
'''Schema4 : Ksamba - interface de configuration'''<br />
<br />
[[Image:samba-samba4.png]]<br />
<br />
* configuration de base : c'est la section [global]<br />
* configuration des partages de fichiers : nous retrouvons la section [homes] et tout autre partage de fichiers<br />
* configuration des imprimantes partagées : cet onglet permet la configuration des partages [print$] et [printers]<br />
* configuration des comptes utilisateurs : créer, modifier supprimer des utilisateurs et des groupes tout en assurant la synchronisation<br />
* paramètres de configuration avancée : paramétrage avancé du serveur<br />
<br />
'''Schema5 : Ksamba - configuration des utilisateurs'''<br />
<br />
[[Image:samba-samba5.png]]<br />
<br />
== Module Samba pour Webmin ==<br />
<br />
Webmin est un utilitaire accessible par interface web qui va vous permettre de configurer l'ensemble de votre machine (système et réseau). Il est constitué d'un ensemble de modules dont celui consacré au serveur Samba.<br />
<br />
Pour installer Webmin, réutilisons urpmi puis démarrons webmin :<br />
<br />
<div class="code"><br />
<br />
<nowiki># urpmi webmin<br />
Préparation... ##################################################<br />
1:webmin ##################################################<br />
# service webmin start<br />
Lancement de Webmin [ OK ]</nowiki><br />
<br />
</div><br />
<br />
Pour accéder à webmin, tapez dans la barre d'URL de votre navigateur : https://localhost:10000<br /> Authentifiez-vous alors en tant que root avec votre mot de passe. Cliquez sur l'onglet "serveurs" puis "Samba Windows File Sharing"<br />
<br />
'''Schema6 : Webmin - liste des partages du serveur'''<br />
<br />
[[Image:samba-samba6.png]]<br />
<br />
Vous avez alors décrit rapidement l'ensemble des ressources partagées, avec la possibilité de modifier cette configuration. Comme pour KsambaPlugin, l'ensemble du serveur est paramétrable.<br />
<br />
'''Schema7 : Webmin - menu principal de configuration de samba'''<br />
<br />
[[Image:samba-samba7.png]]<br />
<br />
<div class="note">Remarque : l'idée n'est pas ici de décourager l'utilisation de tels outils. Mais ceux-ci proposent l'accès relativement simple à des paramétrages avancés de Samba. Mal maîtrisés, vous pouvez rapidement mettre votre serveur hors d'usage. Alors attention aux clics intempestifs et gardez un oeil sur la configuration texte.</div><br />
<br />
== Outil graphique de parcours des ressources Samba ==<br />
<br />
Konqueror est maintenant un bon moyen d'accéder à un serveur Samba, il suffit pour cela de taper dans la zone URL smb://user@serveur/ ou smb://user:password@serveur/ pour accéder au serveur "serveur" en tant que "user".<br />
<br />
'''Schema8 : parcours des ressources Samba avec Konqueror'''<br />
<br />
[[Image:samba-samba8.png]]<br />
<br />
L'utilisation est relativement aisée, il vous suffit de cliquer sur les fichiers et/ou répertoires, comme pour un système de fichiers local.<br />
<br />
= Conclusion =<br />
<br />
Voilà donc votre serveur Samba fonctionnel. Nous n'avons abordé ici qu'une infime partie des possibilités offertes. Sachez que les dernières versions permettent d'apporter les mêmes fonctionnalités qu'un serveur NT, voire 2000 : contrôleur de domaine (PDC, BDC), serveur de netlogon (authentification centralisée), serveur de résolution de noms netbios (WINS)... Bref de quoi passer de votre configuration personnelle à une véritable architecture d'entreprise !<br />
<br />
== Quelques adresses utiles ==<br />
<br />
* [http://samba.org Le site officiel de Samba ]<br />
* La documentation officielle de Samba (une mine d'or !) : Samba-HOWTO-Collection sur la section documentation du site<br />
* [http://cups.org Le site officiel de cups ]<br />
<br />
<div class="merci">Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Anne le 02/11/2004.</div><br />
<br />
= Copyright =<br />
Copyright &copy; 02/11/2004, Anne<br />
{{CC-BY-NC-SA}}<br />
<br />
<br />
=Autres ressources=<br />
* [http://oreilly.com/catalog/samba/ Le livre O'Reilly]<br />
* [http://www.linux-france.org/~eprigent/samba Une série de PDF]<br />
* [[Admin-samba_nt_auth|Utiliser la base d'utilisateur d'un CPD (ou PDC) NT]].</div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=NFS&diff=9160
NFS
2005-10-14T18:00:30Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div>[[Category:Partager ses fichiers]]<br />
= Installation d'un serveur NFS =<br />
<br />
<div class="leatitre">Installation d'un serveur NFS</div><div class="leapar">Guillaume Pierronnet</div><div class="leadesc">NFS, ou le partage des ressources selon Unix.</div><br />
----<br />
<br />
== Introduction ==<br />
<br />
NFS signifie Network File System. C'est, comme son nom l'indique, un système de fichiers en réseau qui permet de partager ses données principalement entre systèmes UNIX. À la différence de SAMBA, NFS gère les permissions sur les fichiers et on peut donc l'utiliser de manière totalement transparente dans son arborescence Linux.<br />
<br />
'''ATTENTION !'''<br />
<br />
Comme toute application réseau, NFS ouvre des trous dans la sécurité du système. Je t'invite donc à consulter les liens à la fin de cet article pour des précisions sur la sécurité. <br /> <br />
<br />
== Les softs ==<br />
<br />
=== Les modules du noyau ===<br />
<br />
Dans la configuration du noyau, on va dans la section "'''File systems ---> Network File Systems'''"<br />
<br />
* <u>Pour le client:</u><br />
<br /><tt>NFS file system support et Provide NFSv3 client support</tt><br />
CONFIG_NFS_FS=y ou m<br />
CONFIG_NFS_V3=y<br />
* <u>Pour le serveur:</u><br />
<br /><tt>NFS server support et Provide NFSv3 server support</tt><br />
CONFIG_NFSD=y ou m<br />
CONFIG_NFSD_V3=y<br />
<br />
À partir du noyau 2.2.18, les modules supportent entièrement la version 3 du protocole ainsi que différentes corrections de bug. <br />Il serait temps d'upgrader si tu ne l'as pas déjà fait! (profites-en pour passer au 2.4, ce sera réglé :)<br />
<br />
=== Les packages ===<br />
<br />
Les packages (sur ma Debian) sont :<br />
<br />
* <tt>nfs-common</tt><br />
* <tt>nfs-user-server</tt> pour le serveur.<br />
<br />
Tu peux toujours récupérer les sources qui se trouvent sur http://nfs.sourceforge.net/.<br />
<br />
On va aussi installer le ''wrapper'' TCP pour un minimum de sécurité. Toujours sur ma Debian, le paquet s'appelle <tt>tcpd</tt>. Les sources se trouvent [ftp://ftp.porcupine.org/pub/security/index.html ici].<br />
<br />
== Le serveur ==<br />
<br />
Les 3 fichiers de configuration principaux sont <tt>/etc/exports</tt>, <tt>/etc/hosts.deny</tt> et <tt>/etc/hosts.allow</tt>.<br />
<br />
=== /etc/exports ===<br />
<br />
Le fichier <tt>/etc/exports</tt> est très simple :<br />
<br />
<tt>répertoire machine1(option11,option12) machine2(option21,option22)</tt><br />
<br />
par exemple :<br />
<br />
<tt>/home 192.168.0.10(rw) 192.168.0.25(ro)</tt><br />
<br />
signifie que l'on autorisera la machine ''192.168.0.10'' à accéder à notre répertoire <tt>/home</tt> en lecture et écriture (<tt>rw</tt>) ainsi que la machine ''192.168.0.25'' mais uniquement en lecture (<tt>ro</tt>).<br />
<br />
* <tt><u>répertoire</u></tt> :<br /> le répertoire du serveur à partager.<br /> <br />
* <tt><u>machine</u></tt> :<br /> Une liste de machines séparée par des virgules et autorisées à monter ce répertoire (utilisez des adresses IP plutôt que des noms à cause des problèmes de "''dns spoofing''").<br /> <br />
* <tt><u>options</u></tt> : <br />
** '''ro''' : <br />C'est la valeur par défaut, lecture seule.<br />
** '''rw''' : <br />La machine à un accès en lecture/écriture au répertoire.<br />
** '''no_root_squash''' : <br />Les accès par l'utilisateur root sur le serveur se font sous l'identité root, au contraire de nobody (par défaut)<br /> À UTILISER AVEC PRÉCAUTION<br />
** '''sync''' : <u>uniquement NFS v2</u><br />Ne diffère pas les écritures physiques au volume, augmente la fiabilité en cas de mauvais démontage. La version 3 dispose d'un mécanisme de ''commit-rollback'' donc cette option n'est pas utile.<br />
<br />
Un point important, pour un bon fonctionnement : tu dois avoir les mêmes numéros de groupes et d'utilisateurs sur les deux machines. <br />Des systèmes permettent de gérer çà, NIS (assez ancien) ou LDAP (plus récent). Avec peu d'utilisateurs, tu peux tout simplement éditer <tt>/etc/group</tt> et <tt>/etc/passwd</tt> pour synchroniser ces numéros.<br />
<br />
Il n'est pas recommandé d'exporter un système DOS ou VFAT à cause de leurs absences de gestion multi-utilisateurs ; ils ne sont pas fait pour être partagés avec NFS. <br /> <br />
<br />
=== /etc/hosts.deny ===<br />
<br />
On va interdire toutes les machines qui ne sont pas autorisées explicitement dans le <tt>/etc/hosts.allow</tt>. <br />Un bon vieux "<tt>ALL: ALL</tt>" interdira l'accès à tous les services à partir de toutes les machines. On peut cependant être plus précis en écrivant :<br />
<br />
portmap:ALL<br />
lockd:ALL<br />
mountd:ALL<br />
rquotad:ALL<br />
statd:ALL<br />
<br />
<br />
<br />
=== /etc/hosts.allow ===<br />
<br />
Dans le même esprit que pour le <tt>/etc/hosts.deny</tt>, ce fichier a l'architecture suivante :<br />
<br />
[service]: [IP de la machine client]<br />
<br />
Donc pour autoriser 192.168.1.34 à se connecter à un partage NFS, on écrira :<br />
<br />
portmap:192.168.1.34<br />
lockd:192.168.1.34<br />
mountd:192.168.1.34<br />
rquotad:192.168.1.34<br />
statd:192.168.1.34<br />
<br />
On va pouvoir lancer les services ; sur ma Debian, je lance :<br />
<br />
<nowiki># /etc/init.d/nfs-server start</nowiki><br />
<br />
La commande <tt>rpcinfo -p</tt> permet de vérifier que les services fonctionnent. Elle devrait produire un résultat dans cet esprit :<br />
<br />
cacahuete:~# rpcinfo -p<br />
program vers proto port<br />
100000 2 tcp 111 portmapper<br />
100000 2 udp 111 portmapper<br />
100024 1 udp 737 status<br />
100024 1 tcp 739 status<br />
100011 1 udp 851 rquotad<br />
100011 2 udp 851 rquotad<br />
100003 2 udp 2049 nfs<br />
100003 2 tcp 2049 nfs<br />
100005 1 udp 872 mountd<br />
100005 2 udp 872 mountd<br />
100005 1 tcp 875 mountd<br />
100005 2 tcp 875 mountd<br />
cacahuete:~#<br />
<br />
Pour recharger les services NFS (par exemple après une modification du fichier de config) :<br />
<br />
cacahuete:~# killall -HUP nfsd<br />
<br />
le serveur est prêt ! <br /> <br />
<br />
== Le client ==<br />
<br />
Pour utiliser NFS v3, il faut au minimum la version 2.10m du programme <tt>mount</tt>. Pour voir sa version, taper :<br />
<br />
cacahuete:~# mount -V<br />
mount: mount-2.11h<br />
cacahuete:~#<br />
<br />
On va maintenant pouvoir monter notre partage!<br />
<br />
cacahuete:~# mount mon.serveur.nfs:/home /mnt/home<br />
cacahuete:~#<br />
<br />
En principe tout devrait bien se dérouler.<br />
<br />
Pour monter ce partage définitivement à chaque démarrage de la machine, éditons notre <tt>/etc/fstab</tt><nowiki>: </nowiki><br />
<br />
<nowiki># device mountpoint fs-type options dump fsckorder<br />
...<br />
master.foo.com:/home /mnt nfs rw 0 0<br />
...</nowiki><br />
<br />
<br />
<br />
== Liens ==<br />
<br />
* Cet article est principalement basé sur le [http://www.linuxdoc.org/HOWTO/NFS-HOWTO/index.html NFS howto]<br />
* Les sources des logiciels NFS sur http://nfs.sourceforge.net/<br />
* [http://www.linuxdoc.org/HOWTO/LDAP-HOWTO.html LDAP howto]<br />
* [http://www.linuxdoc.org/HOWTO/NIS-HOWTO.html NIS howto]<br />
* Va te faire peur sur [http://www.securityfocus.com/ security focus]<br />
<br />
<div class="merci">Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Guillaume Pierronnet le 22/10/2001.</div><br />
<br />
= Copyright =<br />
Copyright &copy; 22/10/2001, Guillaume Pierronnet<br />
{{CC-BY-NC-SA}}<br />
<br />
<br />
=Autres ressources=<br />
* Cet article est principalement basé sur le [http://www.linuxdoc.org/HOWTO/NFS-HOWTO/index.html NFS howto]<br />
* Les sources des logiciels NFS sur http://nfs.sourceforge.net/ <br />
* [http://en.tldp.org/HOWTO/LDAP-HOWTO/ LDAP howto]<br />
* [http://www.linuxdoc.org/HOWTO/NIS-HOWTO.html NIS howto]<br />
* Va te faire peur sur [http://www.securityfocus.com/ security focus]</div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=PengAOL&diff=9159
PengAOL
2005-10-14T18:00:28Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div>[[Category:Se connecter à Internet]]<br />
= Compiler et configurer pengaol 1.0 =<br />
<br />
<div class="leatitre">Compiler et configurer pengaol 1.0</div><div class="leapar">par [mailto:nasgaia@free.fr Martial]</div><div class="leadesc">Ce document explique comment compiler la dernière version de pengaol sans support de QTKylix, et la configuration de base de pengaol.</div><br />
----<br />
<br />
== 1. Introduction ==<br />
<br />
=== 1.1 Note ===<br />
<br />
Cet article n'a rien d'officiel, et ne décrit pas nécessairement la «bonne méthode» pour installer pengaol. Rapellez vous que des versions précompilées existent déjà dans de nombreux formats (deb, tgz, rpm), et que pour profiter de l'interface graphique, il vaut mieux lire la très bonne documentation officielle sur le site pengaol.org. Le but ici est de compiler pengaol sans avoir besoin de QTkylix pour configurer les options de compilations, et utiliser pengaol uniquement en ligne de commande.<br />
<br />
Suite à certains mails, je precise que je n'ai rien à voir dans le développement de pengaol; contactez plutot son auteur: [mailto:birdy57%20chez%20pengaol%20point%20org birdy57 chez pengaol point org], et visitez leurs forums qui sont prévus à cet effet.<br />
<br />
== 2. Compilation ==<br />
<br />
=== 2.1 Requis ===<br />
<br />
Comme d'habitude, il vous faut un système prêt à compiler, c'est à dire g++, ainsi que les fichiers d'entête (paquets -devel en rpm) et les utilitaires classiques comme autoconf, make etc... passons, c'est hors-sujet.<br />
<br />
J'ai utilisé exactement cette version: [http://prdownloads.sourceforge.net/pengaol/peng1.0a01.tar.gz peng1.0a01.tar.gz] prise sur le [http://www.pengaol.org/ site officiel].<br />
<br />
=== 2.2 Commençons ===<br />
<br />
On désarchive:<br />
<br />
<blockquote><tt>tar zxvf peng1.0a01.tar.gz &&<br /> cd peng </tt></blockquote><br />
<br />
Puis on va génerer un <code>configure</code> plus classique, qui ne cherche pas à lancer une GUI en QTKylix:<br />
<br />
<blockquote><tt>mv configure configure- &&<br /> mv configure.ori configure</tt></blockquote><br />
<br />
On peut alors configurer:<br />
<br />
<blockquote><tt>./configure \<br /> --prefix=/usr \<br /> --mandir=/usr/share/man \<br /> --infodir=/usr/share/info &&<br /> echo "#define WITH_PPP" >> config.h &&<br /> echo "#define WITH_MODEM" >> config.h &&<br /> echo "#define WITH_TUNTAP" >> config.h &&<br /> echo "#define WITH_CABLE" >> config.h</tt></blockquote><br />
<br />
On crée d'avance les répertoires requis:<br />
<br />
<blockquote><tt>mkdir -p /etc/Pengaol <br /> chmod 770 /etc/Pengaol<br /> mkdir -p /usr/share/sound</tt></blockquote><br />
<br />
Et on installe simplement (hum):<br />
<br />
<blockquote><tt>make INSTALL="/bin/install -c" install &&<br /> cp peng/PengMessages.txt /etc/Pengaol &&<br /> cp peng/Dns /etc/Pengaol &&<br /> chown root.peng /etc/Pengaol/PengMessages.txt /etc/Pengaol/Dns &&<br /> chmod 660 /etc/Pengaol/PengMessages.txt /etc/Pengaol/Dns &&<br /> mv /usr/bin/peng /usr/bin/pengaol &&<br /> chmod 755 /usr/bin/pengaol &&<br /> chmod +s /usr/bin/pengaol &&<br /> cp wavplay-1.4/wavplay /usr/bin &&<br /> cp wavplay-1.4/*.wav /usr/share/sound </tt></blockquote><br />
<br />
Au besoin remplacez <tt>/bin/install -c</tt> par <tt>/usr/bin/install -c</tt>. On met les les permissions sur <tt>/etc/Pengaol</tt> comme ceci, pour que, lancé par un utilisateur normal, peng puisse y écrire lors de l'activation du dns.<br />
<br />
Pour que cela marche, créez un nouveau groupe <tt>peng</tt> avec <tt>vigrp</tt> ou une autre commande, pour avoir quelquechose dans ce goût là :<br />
<br />
<blockquote><tt>peng:x:19:martial</tt></blockquote><br />
<br />
En modifiant 19 par un mumero de groupe libre sur votre système, et <tt>martial</tt> (c'est moi, lol) par une liste d'utilisateurs normaux autorisés à se servir de <tt>pengaol</tt>, séparés par des virgules.<br />
<br />
== 3. Utilisation ==<br />
<br />
=== 3.1 ppp ou tun ? ===<br />
<br />
Ce sont les deux drivers possibles - ppp est sans doute un peu plus rapide. En tous cas, il vous faut soit le module <code>tun.o</code>, soit les modules <tt>ppp_generic.o</tt> et <tt>ppp_synctty.o</tt>. Le module <tt>ppp_synctty.o</tt> n'étant pas le plus courant, il se peut que votre distro soit configurée pour charger <tt>ppp_asynctty.o</tt> à la place, il faut alors modifier '''/etc/modules.conf'''.<br />
<br />
Pour ne pas avoir d'erreur de détection des drivers, il faut que les devices soient accesibles par <tt>peng</tt>, donc pensez à ajuster si besoin les permissions de ppp et du modem dans /dev (modules.conf peut automatiser cela avec post-install)<br />
<br />
Pour vérifier que tout est bien configuré, tapez <tt>pengaol -ListDriver</tt>, ce qui doit donner quelque chose comme ceci (au moins):<br />
<br />
<blockquote><tt>Load language : fr <br /> Nom du driver : CPppDriver <br /> Auteur : Birdy57 <br /> Message inclus : Vers 0.55 Linux <br /> Guid : 3812 <br /> Le pilote fonctionne sur cette configuration :Oui<br /><br /> Nom du driver : CTunTapDriver <br /> Auteur : birdy57 <br /> Message inclus : Vers 0.5 Linux <br /> Guid : 4212 <br /> Le pilote fonctionne sur cette configuration :Non<br /><br /> Nom du driver : CCableDriver <br /> Auteur : birdy57 & surfufu <br /> Message inclus : Vers 0.5 Multi <br />Guid : 8301 <br /> Le pilote fonctionne sur cette configuration :Non<br /><br /> Nom du driver : CModemDriver <br /> Auteur : Birdy57 <br /> Message inclus : Vers 0.5 Linux <br /> Guid : 1711 <br /> Le pilote fonctionne sur cette configuration :Oui <br /><br /></tt></blockquote><br />
<br />
Il faut que <tt>CModemDriver</tt> et au moins un des <tt>CTunTapDriver CPppDriver</tt> soit à '''oui''' pour que ca marche. Si ce n'est pas le cas, vérifiez (modprobe) les modules chargés, vérifiez que les devices requis existent dans /dev, et avec les bonnes permissions.<br />
<br />
Ensuite, tapez simplement <tt>pengaol -User [login] [Pass]</tt>. Mais il est conseillé de stocker votre mot de passe une fois pour toute avec: <tt>pengaol -AddUser [login] [Pass]</tt>, et de se connecter ensuite avec: <tt>pengaol -Connect [login]</tt>, ceci évite de dévoiler votre mot de passe dans les logs système et avec la commande '''top'''. Une petite ligne genre <tt>xterm -T AOL -e pengaol -Connect monlogin </tt> dans un menu de gnome, kde, wmaker et on y est.<br />
<br />
=== 3.2 Message d'erreur ===<br />
<br />
'''Load language : fr serveur en attente !''' signifie que vous n'avez pas rentré une option valide pour la version en ligne de commande, et cherche donc à lancer la GUI qui dans notre cas n'existe pas. Lire la doc incluse dans le répertoire doc des sources pour toutes les options.<br />
<br />
== 4. Conclusion ==<br />
<br />
Sous linux il y'a plein de manière d'arriver au même résultat, surtout concernant le chargement des modules du noyau et des permissions, donc ne prenez ce qui est dit ici que comme un exemple; essayez, modifiez selon ce que vous souhaitez obtenir.<br />
<br />
<div class="merci">Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Martial Daumas le 30/03/2002.</div><br />
<br />
= Copyright =<br />
Copyright &copy; 30/03/2002, Martial Daumas<br />
{{CC-BY-NC-SA}}<br />
<br />
<br />
=Autres ressources=<br />
<br />
* [http://www.pengaol.org Le site de PengAOL]</div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=Connexion_%C3%A0_Internet_multi-comptes&diff=9158
Connexion à Internet multi-comptes
2005-10-14T18:00:27Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div></div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=IP-up_et_IP-down&diff=9157
IP-up et IP-down
2005-10-14T18:00:25Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div></div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=Sendmail&diff=9156
Sendmail
2005-10-14T18:00:23Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div></div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=Pppd&diff=9155
Pppd
2005-10-14T18:00:21Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div></div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=Reseau-cxion_net-adsl&diff=9154
Reseau-cxion net-adsl
2005-10-14T18:00:19Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div>[[Category:Se connecter à Internet]]<br />
= Configuration d'une connexion ADSL =<br />
<br />
<div class="leatitre">Configuration d'une connexion ADSL</div><div class="leapar">par [mailto:stchesme@club-internet.fr Serge] (révisions par Jice)</div><div class="leadesc">L'accès internet haut débit sous Linux.</div><br />
----<br />
<br />
== Introduction ==<br />
<br />
Il existe trois protocoles différents pour les connexions ADSL : PPTP (Point to Point Tunneling Protocol), PPPOE (PPP Over Ethernet : modems ethernet...) et PPPOA (PPP over ATM : modems USB...). Les kits founis jusqu'au début de l'année 2001 environ (par France Télécom ou autre) étaient basés sur PPTP. Maintenant ils sont généralement basés sur PPPOE ou PPPOA.<br />
<br />
Si vous avez une debian, lisez plutot ce [../hardware/bewan_pcist.php3 document].<br />
<br />
Ce document traite principalement des modems ADSL avec interface ethernet, pour les modems USB [#usb voir à la fin du document].<br />
<br />
Il existe aussi des modems PCI pour se connecter avec ADSL.<br />
<br />
* Bewan vend une telle carte, mais les pilotes Linux ne sont pas (encore ?) développés et/ou distribués <tt><nowiki>:-(.</nowiki></tt> (décembre 2001 : Bewan a sorti une nouvelle carte PCI qui fonctionne sous Linux, malheureusement pas de nouvelles du driver pour les anciennes cartes, malgré les promesses qui ont été faites... - février 2002 : nouvelle version des drivers Bewan PCI ST, voir cette [http://linuxfr.org/2002/02/19/7192,0,0,0,0.php3 news sur linuxfr] pour les liens)<br />
* D'autre cartes PCI (Olitec...) sont sorties aussi, mais je n'ai pas d'info dessus. Merci de nous contacter si vous pouvez nous aider à compléter cet article à ce sujet.<br />
<br />
Ce document s'inspire largement du HOWTO ADSL.<br />
<br />
== Connexion ADSL via le protocole PPTP ==<br />
<br />
Le protocole pptp permet de créer un "tunnel" ppp au travers d'une connexion ethernet.<br />
<br />
=== Vérification des paramètres du noyau ===<br />
<br />
Tout d'abord vérifions la configuration du noyau : vous devez avoir le support PPP soit dans le noyau, soit en module. Une méthode simple est de lancer en root un :<br />
<br />
<tt>pppd</tt><br />
<br />
Si vous voyez une réponse du style "%!/:." c'est que c'est bon, arrêtez le alors via un CTRL-C, ou ouvrez un autre terminal (ou changez de console virtuelle) et tapez un :<br />
<br />
<tt>killall pppd</tt><br />
<br />
Autrement recompilez votre noyau avec le support ppp (en natif ou en module). Voir la [/kernel section noyau].<br />
<br />
=== Installation de PPTP ===<br />
<br />
Bon il va falloir avant tout ajouter le support pptp. Récupérons donc le package comprenant le client pptp patché : [adsl_pptp-linux-1.0.2-patched.tar.gz pptp-linux-1.0.2-patched.tar.gz]<br />
<br />
Pour installer pptp:<br />
<br />
<tt>tar zxf pptp-linux-1.0.2-patched.tar.gz<br /> </tt><tt>cd pptp-linux-1.0.2<br /> make install -b pptp pptp_callmgr /usr/sbin/</tt><br />
<br />
Et voilà, nous avons le support pptp !<br />
<br />
=== Configuration de ppp ===<br />
<br />
Comme je l'ai indiqué plus haut, pptp se sert de ppp et d'une interface ethernet, donc il est logique de configurer ppp. Nous allons donc modifier les fichiers de configuration de ppp, les fichiers <tt>/etc/ppp/options</tt> et <tt>/etc/ppp/pap-secret</tt> :<br />
<br />
Pour <tt>/etc/ppp/options</tt> :<br />
<br />
<tt>noauth <br /> name "login" # mettre ici le login que vous a fourni votre provider<br /> noipdefault <br /> defaultroute <br /> mtu 1492 <br /> mru 2400</tt><br />
<br />
Et pour <tt>/etc/ppp/pap-secret</tt> :<br />
<br />
<tt> "login" * "password" * # login et password fourni par votre provider, à mettre entre guillemets.</tt><br />
<br />
=== Configuration de l'interface ethernet ===<br />
<br />
Il nous reste maintenant à configurer l'interface ethernet qui est reliée au modem ADSL. Je n'explique pas comment la prendre en charge par le noyau, voir la rubrique connexion [/reseau/lan.php3 réseau local] de cette même section pour ça. Je suppose que cette interface est <tt>eth0</tt>, adaptez suivant votre configuration bien sûr.<br />
<br />
Affectons l'adresse IP '''10.0.0.10 '''à cette interface, attention à '''bien mettre une adresse de ce réseau IP privé et pas d'un autre !'''<br />
<br />
<tt>ifconfig eth0 10.0.0.10</tt><br />
<br />
Et voilà !<br />
<br />
N'oubliez pas non plus de configurer votre <tt>/etc/resolv.conf</tt> pour qu'il contienne les adresses de serveurs DNS (serveurs de nom) de votre fournisseur d'accès :<br />
<br />
<tt>/etc/resolv.conf</tt> :<br />
<br />
<tt>search nom_domain_local.com<br /> nameserver adresse_ip_dns_primaire<br /> nameserver adresse_ip_dns_secondaire</tt><br />
<br />
=== Création des scripts de connexion / déconnexion ===<br />
<br />
Nous allons créer maitenant les scripts de connexion / déconnexion.<br />
<br />
Script de connexion : appelons le <tt>adsl-start</tt>, il contient :<br />
<br />
<tt><nowiki>#!/bin/bash</nowiki><br /> /usr/sbin/pptp 10.0.0.138<br /> sleep 20<br /> echo "Ajout de la route par défaut : "<br /> /sbin/route add -net 0.0.0.0 netmask 0.0.0.0 dev ppp0</tt><br />
<br />
Et un <tt>adsl-stop</tt><br />
<br />
<tt><nowiki>#!/bin/bash</nowiki><br /> killall pptp<br /> sleep 1<br /> killall pppd<br /> rm -rf /var/run/pptp/</tt><br />
<br />
Il suffit alors de lancer les scripts pour se connecter / déconnecter. Vous pouvez aussi mettre dans <tt>/etc/rc.local</tt> une ligne appelant <tt>adsl-start</tt> pour lancer la connexion au boot de la machine. Ou alors faites un script pour gérer la connexion/déconnexion en sysVinit.<br />
<br />
== Connexion ADSL via le protocole PPPOE ==<br />
<br />
=== Connexion via le logiciel fourni par FT ===<br />
<br />
France Télécom vous fournit normalement un CD contenant le support pppoe pour votre modem sous Linux. Comme ce logiciel n'est ni libre ni gratuit, je ne détaille pas ici comment s'en servir. Sachez juste qu'il faut en gros copier le binaire <tt>pppoed-2.x</tt> (x dépendant de la version de votre kernel, 2.0.x ou 2.2.x) dans <tt>/usr/sbin</tt>, ainsi que les scripts <tt>ppoe-start</tt> et <tt>ppoe-stop</tt>, et le fichier de configuration <tt>ppoe.options</tt> dans <tt>/etc</tt>. Un fichier d'aide est fourni avec ce logiciel.<br />
<br />
=== Installation de rp-pppoe ===<br />
<br />
Comme nous sommes dans le monde du logiciel libre, nous allons voir comment utiliser votre connexion ADSL PPPOE via le support libre sous Linux : <tt>rp-pppoe</tt>.<br />
<br />
Téléchargez celui-ci à cette adresse: http://www.roaringpenguin.com/pppoe/ .<br />
<br />
J'explique ici son installation à partir des sources tarball (tar.gz) car cela est applicable à toutes les distributions. On détarre / dégzip les sources dans un répertoire de votre choix et on lance le script <tt>go</tt> qui s'occupe de tout :<br />
<br />
<tt><nowiki># tar xvfz rp-pppoe-3.3.tar.gz</nowiki><br /> # cd rp-pppoe-3.3<br /> # ./go</tt><br />
<br />
À partir de ce moment, répondez juste aux questions que l'on vous pose.<br />
<br />
En cas de problème avec le script <tt>go</tt>, vous pouvez essayer de compiler / installer "à la main" (comme dans les anciennes versions de rp-pppoe) :<br />
<br />
<tt><nowiki># tar xvfz rp-pppoe-2.8.tar.gz</nowiki><br /> # cd rp-pppoe-2.8<br /> # ./configure<br /> # make && make install<br /> # /usr/sbin/adsl.setup</tt><br />
<br />
Vérifiez après dans le fichier <tt>/etc/pppoe.conf</tt> les lignes :<br />
<br />
<tt>ETH=ethx # mettre l'interface sur laquelle est reliée votre modem ADSL<br /> USER=login # mettre le login fourni par le FAI</tt><br />
<br />
=== Configuration de la carte ethernet ===<br />
<br />
Il ne faut pas cette fois ci configurer votre carte ethernet, c'est à dire que vous devez quand même charger le module de votre carte mais '''n'affectez pas d'adresse à cette carte'''. C'est les scripts de connexion qui s'en chargeront.<br />
<br />
N'oubliez pas non plus de configurer votre <tt>/etc/resolv.conf</tt> pour qu'il contienne les adresses de serveurs DNS (serveurs de nom) de votre fournisseur d'accès :<br />
<br />
<tt>/etc/resolv.conf</tt> :<br />
<br />
<tt>search nom_domain_local.com<br /> nameserver adresse_ip_dns_primaire<br /> nameserver adresse_ip_dns_secondaire</tt><br />
<br />
=== Configuration de ppp ===<br />
<br />
Il nous reste à configurer ppp. Editez <tt>/etc/ppp/pap-secrets</tt> et ajoutez ces deux lignes :<br />
<br />
<tt>nom_login * password # login et password fournis par le provider</tt><br /><tt>netissimo@netissimo.fr * netissimo </tt><br /><br />
<br />
Copiez aussi ce fichier en <tt>chap-secrets</tt> (<tt>cp pap-secrets chap-secrets</tt>)<br />
<br />
=== Connexion ===<br />
<br />
Pour lancer alors la connexion : <tt>adsl-start</tt><br /> Pour la stopper : <tt>adsl-stop</tt><br />
<br />
Vous pouvez là aussi mettre dans votre <tt>/etc/rc.local</tt> un appel a <tt>adsl-start</tt> pour lancer votre connexion ADSL dès le boot du PC, ou ecrire un petit script pour les lancer via l'init sysV (aidez vous des scripts existants !).<br />
<br />
== Modem ADSL USB Alcatel Speedtouch. ==<br />
<br />
Ce modem fonctionne grâce à un driver opensource. L'installation est extrêmement simple sur une Mandrake 8.x notamment (voir cet [../trucs/lire.php3?id=132 article]) et doit bien se passer aussi sur les autres distributions (voir l'article sur [../hardware/pack-xtense.php3 l'Alcatel Speedtouch USB]).<br />
<br />
Alcatel fournit aussi des drivers Linux pour ses modems USB : http://www.alcatel.com/consumer/dsl/dvrreg_lx.htm, mais ils sont moins stables que le driver opensource (à préférer). On les récupère juste pour avoir le microcode du modem.<br />
<br />
== Modem ADSL USB ECI. ==<br />
<br />
Décembre 2001 : un driver opensource pour ce driver est également sorti. Voir http://eciadsl.flashtux.org. Il est maintenant assez stable pour pouvoir être utilisé.<br />
<br />
Voici la [http://eciadsl.flashtux.org/modems.php?supported=yes liste des modems supportés par ce driver] (modems basés sur le chipset Globespan).<br />
<br />
Un [../hardware/eci_usb.php3 article] sur Léa explique maintenant comment installer ce modem.<br />
<br />
== Modem ADSL Bewan PCI St. ==<br />
<br />
Voir l'[../hardware/bewan_pcist.php3 article] correspondant sur Léa.<br />
<br />
<div class="merci">Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Serge Tchesmeli le 14/03/2001.</div><br />
<br />
= Copyright =<br />
Copyright &copy; 14/03/2001, Serge Tchesmeli<br />
{{LDL}}<br />
<br />
<br />
=Autres ressources=<br />
<br />
* [http://www.rhapsodyk.net/adsl/HOWTO/ ADSL-HOWTO]<br />
* [ftp://ftp.rhapsodyk.net/pub/linux/pptp/pptp-linux-1.0.2-patched.tar.gz PPTP package]<br />
* [ftp://cs.anu.edu.au/pub/software/ppp/ PPPD Package]<br />
* [http://www.roaringpenguin.com/pppoe/ RP-PPPOE Package]<br />
* [http://www.alcatel.com/consumer/dsl/dvrreg_lx.htm Drivers USB Alcatel]</div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=Mettre_en_place_sa_passerelle_sous_Linux&diff=9153
Mettre en place sa passerelle sous Linux
2005-10-14T18:00:13Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div>[[Category:Réseau local]]<br />
= Mettre en place sa passerelle sous Linux =<br />
<br />
<div class="leatitre">Mettre en place sa passerelle sous Linux</div><div class="leapar">par Anne<br /> Mise à jour pour la Slackware par [http://groupe.lea-linux.org/slack/alive/ Jonesy]</div><div class="leadesc">Où comment mettre en place un PC pour partager sa connexion et sécuriser son réseau</div><br />
----<br />
<br />
Vous diposez d'une connexion Internet et de plusieurs postes à la maison. L'objectif de cet article est de vous permettre de partager la connexion avec ces différents postes tout en sécurisant au minimum ces accès vers l'extérieur.<br />
<br />
== Introduction ==<br />
<br />
Pour la suite de l'article, nous allons partir des hypothèses suivantes :<br />
<br />
* nous disposons de 4 machines dont 2 postes sous Windows<br />
* nous sommes reliés à Internet grâce à un modem, connectés sur un poste installé avec une distribution Linux. <br />
* ces 4 machines sont sur le même réseau local (on reprécisera la notion un peu plus loin dans l'article)<br />
* chacune de ces 4 machines pourra accéder à Internet.<br />
* La connexion Internet se fait grâce à un modem ethernet<br />
<br />
Pour réaliser cette configuration vous aurez besoin du matériel suivant :<br />
<br />
* un modem pour la connexion Internet<br />
* 4 cables réseau RJ45 droits<br />
* un hub ou un switch<br />
* une carte réseau par poste du réseau local<br />
<br />
'''<u>Schéma de notre configuration réseau</u>'''<br />
<br />
[[Image:gateway1]]<br />
<br />
== Mise en place de la passerelle ==<br />
<br />
=== Plusieurs cas de figure ===<br />
<br />
En fonction du type de connexion Internet dont vous disposez, le matériel et le type de configuration pourront différer. Je vais lister ici les cas les plus courants :<br />
<br />
* '''connexion modem RTC''' : si vous n'êtes pas l'heureux bénéficiaire d'une ligne à haut débit, cela vous concerne probablement. Pour notre configuration vous aurez besoin de votre modem et une carte réseau. C'est cette carte qui permettra le partage de la connexion.<br />[[Image:gateway2]] <br />
* '''connexion modem USB ADSL''' : vous disposez d'un modem pour lequel il vous faudra un driver afin qu'il soit reconu par votre système. Il est connecté à votre machine via un cable USB. Vous devrez alors disposer d'une carte réseau pour réaliser le partage de connexion.<br />[[Image:gateway3]]<br />
* '''connexion modem Ethernet ADSL''' : votre modem ADSL est relié directement à une des cartes réseau grâce à un cable réseau croisé. C'est la 2e carte qui permettra le partage vers le réseau local.<br />[[Image:gateway4]]<br />
<br />
les liens utiles :<br />
<br />
* [http://lea-linux.org/reseau/modem.html connexion modem]<br />
* [http://lea-linux.org/hardware/bewan_pcist.html Modem BeWan PCI st]<br />
* [http://lea-linux.org/hardware/eci_usb.html Modem ECI-ADSL USB]<br />
* [http://lea-linux.org/hardware/pack-xtense.html Speedtouch USB ]<br />
* [http://lea-linux.org/hardware/sagem.html modem Sagem F@st 800]<br />
* [http://eagle-usb.ath.cx/pub/ Eagle USB]<br />
<br />
=== Configuration des interfaces ===<br />
<br />
Dans les liens ci-dessus vous trouverez des informations qui vous permettront de configurer votre connexion Internet. Je considère donc ce point réglé. Nous allons donc configurer l'interface qui pointe vers le réseau local.<br />
<br />
==== Choisir la bonne interface ====<br />
<br />
Si vous avez plusieurs interfaces, la question qui se pose c'est laquelle prendre ? Quelle carte réseau pour mon interface eth1 par exemple ? Vous disposez de plusieurs sources d'information : les outils propres à votre distribution mais aussi :<br />
<br />
Avec un noyau 2.6, le fichier /etc/modprobe.conf vous donne ce genre d'information :<br />
<br />
<div class="code"><nowiki># cat /etc/modprobe.conf alias eth0 ne2k-pci alias eth1 via-rhine ...</nowiki></div><br />
<br />
Vous pouvez aussi utiliser la commande lshw :<br />
<br />
<div class="code"><nowiki># lshw -C network -short</nowiki><br /> H/W path Device Class Description<br /> =======================================================<br /> /0/e0000000/6 '''eth1''' network VT6102 [Rhine-II]<br /> /0/e0000000/8 '''eth0''' network RTL-8029(AS)</div><br />
<br />
==== Fixer une adresse IP ====<br />
<br />
Nous supposerons que sur notre schéma, l'interface vers le réseau local est eth1. Nous allons donc lui attribuer son adresse IP.<br />
<br />
<div class="rpm"><br />
<br />
Pour configurer la passerelle, sur des distributions comme '''MandrakeLinux, Fedora, Redhat''', on procédera de la manière suivante :<br />
<br />
définition de l'adresse IP : l'adresse est attribué à une interface réseau. Si vous n'avez qu'une carte dans la machine ce sera probablement eth0. La configuration se trouve dans le fichier /etc/sysconfig/network-scripts/ifcfg-eth0 : <div class="code"><nowiki># cat /etc/sysconfig/network-scripts/ifcfg-eth0</nowiki><br /> DEVICE=eth0<br /> BOOTPROTO=static<br /> IPADDR=192.168.0.1<br /> NETMASK=255.255.255.0<br /> NETWORK=192.168.0.0<br /> BROADCAST=192.168.0.255<br /> ONBOOT=yes<br /> MII_NOT_SUPPORTED=no</div><br />
<br />
L'option "MII_NOT_SUPPORTED=no" permet d'utiliser le daemon ifplugd. Celui-ci détecte le branchement de la carte réseau et la rend active. La plupart des cartes supportent cette option, dans le cas contraire, il suffit de la désactiver.<br />
<br />
</div><div class="deb"> Sur une '''Debian''', la configuration réseau se fait dans le fichier ... '''A compléter ?''' </div> <br />
<br />
<br /><br />
<br />
<div class="slack"> Sur une '''Slackware''', la configuration réseau se fait dans le fichier <code>/etc/rc.d/rc.inet1.conf</code>.<br /><div class="code"><nowiki># Config information for eth0:</nowiki><br /> IPADDR[0]="192.168.0.3"<br /> NETMASK[0]="192.168.0.0"<br /> USE_DHCP[0]="no"<br /> DHCP_HOSTNAME[0]="machine3"<br /><br /> GATEWAY="192.168.0.1"</div> </div><br />
<br />
==== Nom de machine et résolution ====<br />
<br />
Une fois l'adresse attribuée il faut également donner un nom à notre passerelle (si ça n'a pas été déjà fait lors de l'installation).<br />
<br />
<div class="rpm"><br />
<br />
Sur '''Mandrake, Redhet ou Fedora''', tout se passe dans le fichier /etc/sysconfig/network :<br />
<br />
<div class="code"><nowiki># cat /etc/sysconfig/network</nowiki><br /> HOSTNAME=pingu</div> </div><div class="deb"><br />
<br />
Sur '''Debian''' on trouvera le nom de machine uniquement dans le fichier /etc/hosts.<br />
<br />
<div class="code"> # cat /etc/hosts 127.0.0.1 localhost 127.0.0.1 lealinux</div> </div><div class="slack"><br />
<br />
Sur '''Slackware''', tout se passe dans le fichier <code>/etc/HOSTNAME</code> :<br />
<br />
<div class="code"><nowiki># cat /etc/HOSTNAME</nowiki><br /> darkstar.example.net </div> Sachant que le hostname ''court'' sera <code>darkstar</code>.<br /> </div><br />
<br />
Enfin on définit les serveurs de noms qu'on utilisera pour les résolutions externes. Vous pouvez les ajouter dans le fichier /etc/resolv.conf :<br />
<br />
<div class="code"><nowiki># cat /etc/resolv.conf</nowiki><br /> nameserver 213.228.0.95<br /> nameserver 213.228.0.96</div><br />
<br />
=== Partager la connexion Internet ===<br />
<br />
Nous allons utiliser pour cela iptables. Vous trouverez des informations détaillées sur iptables dans [http://lea-linux.org/reseau/iptables.html iptables par l'exemple]. Il vous permet dans l'absolu de mettre en place une solution complète de firewall extrêmement efficace. Dans le cas qui nous intéresse nous allons l'utiliser uniquement pour réaliser le partage de connexion.<br />
<br />
La plupart des distributions actuelles mettent à disposition un noyau 2.4 ou 2.6 qui comprend les modules nécessaires. Vous aurez également besoin des commandes iptables dans un package portant le même nom.<br /> Pour le vérifier :<br />
<br />
<div class="mdk"> Pour '''Mandrake :'''<br /><div class="code"> # rpm -q iptables<br /> iptables-1.2.9-7.1.101mdk<br /></div><br /> </div><div class="deb"> Pour '''Debian :'''<br /><div class="code"> # dpkg -l "*iptables*"</div><br /> </div><div class="slack"> Pour '''Slackware :'''<br /><div class="code"> # ls /var/log/packages/iptables*</div> </div><br />
<br />
Avant toute chose, il faudra s'assurer que la''' redirection de paquets d'information''' est possible. Pour cela, il faut que le fichier <code>/proc/sys/net/ipv4/ip_forward</code> contiennent le chiffre 1 et non 0 qui le désactive :<br />
<br />
<div class="code"><nowiki># echo 1 > /proc/sys/net/ipv4/ip_forward</nowiki></div><br />
<br />
Pour que cette modification soit activée à chaque redémarrage de la machine, nous allons renseigner le fichier /etc/sysctl.conf :<br />
<br />
<div class="code"><nowiki># cat /etc/sysctl.conf</nowiki><br /> ...<br /> # Controls IP packet forwarding<br /> net.ipv4.ip_forward = '''1'''<br /> ...</div><div class="slack"> Pour '''Slackware''', il faut rendre exécutable le fichier <code>/etc/rc.d/rc.ip_forward</code>.<br /> </div><br />
<br />
Puis nous allons faire en sorte que la passerelle puisse non seulement cette redirection soit possible mais en plus qu'elle les dirige de l'extérieur vers les machines situées sur le réseau local. Reprenons notre schéma de départ au niveau de la passerelle :<br />
<br />
[[Image:gateway5]]<br />
<br />
Pour cela, nous allons utiliser la chaîne forward :<br />
<br />
<div class="code"><nowiki># iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE</nowiki></div><br />
<br />
où eth0 est l'interface connectée vers l'extérieur. Cette commande va '''masquer''' les paquets. Ci-dessous un schéma vous représente le principe de fonctionnement de ce que nous venons de réaliser, à savoir le masquerading, ou, comment une machine ne disposant pas d'une adresse publique peut discuter avec l'extérieur, en utilisant la passerelle.<br />
<br />
'''<u>Principe de fonctionnement du masquerading</u>'''<br />
<br />
[[Image:gateway6]]<br />
<br />
Là encore, le résultat ne durera que jusqu'au redémarrage de la machine. Pour activer cette règle de fonctionnement au démarrage de la machine, vous disposez de plusieurs solutions.<br />
<br />
* utilisation du fichier <code>/etc/rc.local</code> : il est systématiquement lu à chaque démarrage, après lancement des services. Il suffit d'ajouter la commande iptables à exécuter :<br /><div class="code"><nowiki># cat "iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE" >> /etc/rc.local</nowiki></div><br />
* utilisation du script de lancement de iptables : comme n'importe quel services, iptables est lancé au démarrage de la machine. Après avoir exécuté vos différentes règles iptables comme vu ci-dessus, il reste à sauvegarder la configuration ainsi obtenue : <div class="code"><nowiki># service iptables save</nowiki></div><br />
<br />
Il vous reste à tester le bon fonctionnement du partage. Pour ceci il suffit '''depuis un client''' de lancer une URL à partir d'un navigateur ou d'exécuter la commande suivante :<br />
<br />
<div class="code"><nowiki># ping google.fr</nowiki><br /> PING google.fr (216.239.39.104) 56(84) bytes of data.<br /> 64 bytes from 216.239.39.104: icmp_seq=1 ttl=241 time=104 ms<br /> 64 bytes from 216.239.39.104: icmp_seq=2 ttl=241 time=105 ms</div><br />
<br />
== Configuration des clients ==<br />
<br />
Après avoir mis en place la passerelle, nous allons configurer les clients de manière à ce qu'ils puissent accéder à Internet et résoudre les noms externes. Trois éléments sont donc à configurer :<br />
<br />
* une adresse IP sur le réseau local (nous ferons la configuration pour l'adresse 192.168.0.2)<br />
* une route par défaut : elle permet d'indiquer où doivent être dirigés les paquets IP non destinés aux machines locales (et donc pour Internet). Ils devront donc dans notre configuration être dirigés vers la passerelle (192.168.0.1).<br />
* un ou plusieurs serveurs de noms qui permettront aux clients de résoudre les noms externes en adresse IP.<br />
<br />
=== Postes clients sous Linux ===<br />
<br />
Nous allons voir ici comment configurer les clients en mode graphique et en mode texte.<br />
<br />
==== En mode texte ====<br />
<br />
<div class="rpm"><br />
<br />
Pour configurer le client, sur des distributions comme '''MandrakeLinux, Fedora, Redhat''', on procédera de la manière suivante :<br />
<br />
# définition de l'adresse IP : l'adresse est attribué à une interface réseau. Si vous n'avez qu'une carte dans la machine ce sera probablement eth0. La configuration se trouve dans le fichier <code>/etc/sysconfig/network-scripts/ifcfg-eth0</code> : <div class="code"><nowiki># cat /etc/sysconfig/network-scripts/ifcfg-eth0</nowiki><br /> DEVICE=eth0<br /> BOOTPROTO=static<br /> IPADDR=192.168.0.2<br /> NETMASK=255.255.255.0<br /> NETWORK=192.168.0.0<br /> BROADCAST=192.168.0.255<br /> ONBOOT=yes<br /> MII_NOT_SUPPORTED=no</div> Si vous obtenez votre adresse IP grâce à un serveur DHCP sur la passerelle alors votre fichier sera : <div class="code"><nowiki># cat /etc/sysconfig/network-scripts/ifcfg-eth0</nowiki><br /> DEVICE=eth0<br /> BOOTPROTO=dhcp<br /> ONBOOT=yes<br /> MII_NOT_SUPPORTED=no</div><br />
# définition de la route par défaut : il suffit de modifier le fichier /etc/sysconfig/network : <div class="code"><nowiki># cat /etc/sysconfig/network</nowiki><br /> HOSTNAME=pingu<br /> NETWORKING=yes<br /> GATEWAY=192.168.0.1</div><br />
# définition des serveurs de noms : vous pouvez les ajouter dans le fichier /etc/resolv.conf : <div class="code"><nowiki># cat /etc/resolv.conf</nowiki><br /> nameserver 213.228.0.95<br /> nameserver 213.228.0.96</div><br />
<br />
</div><div class="deb"><br />
<br />
En ce qui concerne '''Debian''', la configuration réseau se réalise dans le répertoire <code>/etc/network</code> :<br />
<br />
# Pour configurer une adresse statique, modifier le fichier <code>/etc/network/interfaces</code>de la manière suivante : <div class="code"> iface etho inet static<br /> address 192.168.0.3<br /> netmask 255.255.255.0<br /> network 192.168.0.0<br /> broadcast 192.168.0.255<br /> gateway 192.168.0.1</div> Si vous disposez d'un serveur DHCP, il suffira de configurer en conséquence votre interface réseau : <div class="code">iface eth0 inet dhcp</div><br />
# définition de la route par défaut : on l'a vu elle se réalise dans le fichier <code>interfaces</code>.<br />
# De la même façon que dans le paragraphe ci-dessus, les serveurs de noms utilisés sont spécifiés dans <code>/etc/resolv.conf</code>.<br />
<br />
</div><div class="slack"><br />
<br />
Enfin pour une distribution comme '''Slackware''', la configuration réseau est réalisée dans le fichier <code>/etc/rc.d/rc.inet1.conf</code><br />
<br />
<div class="code"><nowiki># Config information for eth0:</nowiki><br /> IPADDR[0]=""<br /> NETMASK[0]=""<br /> USE_DHCP[0]="yes"<br /> DHCP_HOSTNAME[0]="machine3"<br /><br /> GATEWAY=""</div><br />
<br />
Si la machine est configurée en DHCP, il suffit de modifier la ligne <code>USE_DHCP[0]="yes"</code><br />
<br />
</div><br />
<br />
==== En mode graphique ====<br />
<br />
Si vous préférez utiliser des outils graphiques, reportez-vous [#graphgate là] pour effectuer la configuration des clients.<br />
<br />
=== Postes clients sous Windows ===<br />
<br />
Faites un clic droit sur le "Connexion Locale"<br />
<br />
[[Image:gateway7.html]]<br />
<br />
Puis choisissez "protocole TCP/IP" et remplissez les éléments nécessaires (adresse IP, masque, passerelle, serveur DNS)<br />
<br />
== Configuration à l'aide d'outils graphiques ==<br />
<br />
Si vous souhaitez utiliser un outil graphique de configuration, vous avez à votre disposition des outils communs à toutes les distributions comme Webmin et d'autres spécifiques à chacune d'elles.<br />
<br />
=== Outils génériques : Webmin ===<br />
<br />
Installer webmin s'il ne l'est pas déjà :<br />
<br />
<div class="code"> # urpmi webmin<br /> Préparation... ##################################################<br /> 1:webmin ##################################################</div><br />
<br />
Il vous suffit alors d'accéder à l'interface web de webmin : <code>https://localhost:10000</code>.<br />
<br />
La configuration de vos interfaces réseau se fait dans l'onglet "Réseau" puis le menu "Configuration Réseau".<br />
<br />
[[Image:gateway8]]<br />
<br />
Vous trouverez dans ces sous-menus les éléments nécessaires pour fixer des adresses IP vos interfaces mais aussi configurer le routage et les serveurs DNS à utiliser.<br />
<br />
[[Image:gateway9.html]]<br />
<br />
Il vous est alors possible d'éditer chacun de vos interfaces pour éventuellement les modifier.<br />
<br />
<div class="mdk"><br />
<br />
=== Mandrake Control Center(mcc pour les intimes) ===<br />
<br />
Il suffit de le lancer soit à partir du menu soit en tapant <code>mcc</code> à partir d'une console. Le sous-menu "Réseau & Internet" propose de configurer le ou les interfaces réseau ainsi que le partage de la connexion. Il vous suffit de suivre les indications à l'écran. En ce qui concerne le partage de la connexion, il suffit de spécifier l'interface qui permet d'aller sur l'extérieur (ppp0 ou ethx)<br /><br />
<br />
{| width="100%"<br />
| colspan="2" align="center" | '''Le sous-menu "Réseau & Internet"'''<br />
|-<br />
| colspan="2" align="center" |<br />
[[Image:gateway10]]<br />
|-<br />
| align="center" | '''Configurer ses interfaces réseau'''<br />
| align="center" | '''Partager sa connexion'''<br />
|-<br />
| align="center" |<br />
[[Image:gateway11]]<br />
| align="center" |<br />
[[Image:gateway12]]<br />
|}<br />
<br />
</div><div class="slack"><br />
<br />
=== netconf pour Slackware ===<br />
<br />
Là encore il suffit de lancer la commande <code>netconfig</code> à partir d'une console et de suivre les instructions pour configurer vos interfaces.<br />
<br />
[[Image:gateway13.jpeg]]<br />
<br />
</div><div class="debian"><br />
<br />
=== Debian ===<br />
<br />
On peut utiliser des outils standards comme '''network-admin''' appartenant aux gnome-tools :<br />
<br />
[[Image:gateway14]]<br />
<br />
Debian dispose également d'outils comme '''etherconf'''.<br />
<br />
</div><br />
<br />
== Autres fonctionnalités de votre passerelle ==<br />
<br />
Votre passerelle peut également vous permettre de centraliser certains services que nous allons lister rapidement. Il ne s'agit pas ici d'en décrire les arcanes mais de donner les liens nécessaires pour vous permettre de les mettre en place.<br />
<br />
* '''Partager des fichiers''' : pour partager des fichiers entre vos machines vous allez pouvoir utiliser deux grands types de services <br />
** samba : pour partager vos fichiers et/ou imprimantes avec les postes Windows et Linux<br />http://lea-linux.org/reseau/samba.html<br />
** ftp : pour mettre à disposition des fichiers grâce au protocole ftp. Vous disposez de plusieurs serveurs :<br />[http://lea-linux.org/reseau/proftpd.html proftpd], [http://lea-linux.org/reseau/pureftpd.html pure-ftpd], [http://lea-linux.org/reseau/vsftpd.html vsftpd], ... <br />
* '''Résoudre les noms en adresse IP''' sur le réseau local : tout comme pour le réseau Internet, vous pouvez mettre en place un serveur DNS qui permettra de résoudre les noms de machine en adresses IP et inversement<br />http://lea-linux.org/reseau/dns2.html<br />
* '''Accélérer la résolution des noms externes''' : il s'agit de mettre en place un serveur cache DNS<br />http://lea-linux.org/reseau/dns1.html<br />
* '''Mettre à disposition des pages web''' : installer un serveur Apache/MySQL/PHP<br />http://lea-linux.org/reseau/Apache_PHP_MySQL.html<br />
* '''Distribuer des messages''' : votre passerelle pourra être serveur de messagerie<br />http://lea-linux.org/reseau/postfix.html<br />
* '''Optimiser le partage de votre connexion''' : votre passerelle peut faire en sorte que votre connexion soit toujours optimum pour tout le monde<br />http://lea-linux.org/leapro/qos.html<br />
<br />
<div class="merci">Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Anne le 07/02/2005.</div><br />
<br />
= Copyright =<br />
Copyright &copy; 07/02/2005, Anne<br />
{{CC-BY-NC-SA}}<br />
<br />
<br />
=Autres ressources=<br />
<br />
* [http://rv101.dyndns.org/~rv101/linux/gateway.pdf La version pdf de ce HOWTO]</div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=Kernel-kernel26&diff=9151
Kernel-kernel26
2005-10-14T18:00:07Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div>[[Category:Configurer votre noyau]]<br />
= Introduction au kernel 2.6 =<br />
<br />
<div class="leatitre">Introduction au kernel 2.6</div><div class="leapar">par [mailto:julien@gunnm.org Julien Delange]</div><div class="leadesc">Comment tester la nouvelle cuvée du kernel sans se planter ...</div><br />
----<br />
<br />
== Tout d'abord ... ==<br />
<br />
=== A propos de cet article ... ===<br />
<br />
==== Licence de ce document ====<br />
<br />
Ce document est sous licence FDL.<br />
<br />
==== Pourquoi cet article ? ====<br />
<br />
Tout simplement parce que j'utilise la version de développement depuis le 2.5.70, de nouvelles fonctionnalités m'ont séduit. De plus, ce sera la version qui sera utilisée très prochainement dans toutes les distributions, je pense donc qu'il est utile de savoir le maîtriser le plus rapidement possible.<br />
<br />
=== Préambule ===<br />
<br />
Pour les personnes ne sachant pas encore ce qu'est un noyau, je leur conseille '''FORTEMENT''' de consulter la définition dans le [http://lea-linux.org/docs/glossaire.php3 glossaire de lea].<br />
<br />
=== Les principaux changements ===<br />
<br />
Parmi les modifications qui ne sont verront pas physiquement, on peut noter le nouvel ordonnanceur (programme se chargeant, de distribuer le temps de calcul aux différents processus, assurant donc leur ordonnancement), une meilleure répartition du temps machine, et une granularité d'horloge (portion de temps minimum pouvant être traitée par le système) qui passe de 10 ms à 1 ms. Dans les modifications majeures, on peut noter l'intégration des pilotes ALSA au noyau, la possiblité de gérer jusqu'à 4 Go de RAM sur les machines i386, un noyau préemptif (système pour lequel on peut arrêter à tout moment n'importe quelle application pour passer la main à la suivante). Le code des entrée/sorties a même été revu, les architectures ont été divisées ... STOP ! Arrêtons là, une liste complète des nouvelles fonctionnalités peut être trouvée ici.<br />
<br />
=== Nécessaire à la compilation du nouveau noyau ===<br />
<br />
* Les sources, à récupérer sur le serveur FTP suivant : [ftp://ftp.kernel.org/ ftp.kernel.org]<br />
* Une version récente de GCC. En ce qui me concerne, j'utilise GCC 3.3.2.<br />
* La librairie ncurses si vous souhaitez configurer votre noyau en mode graphique dans un terminal (paquet libncurses-dev sous [http://www.debian.org/ Debian].)<br />
* La librairie qt si vous désirez configurer votre noyau sous X (interface graphique) (paquet libqt3-dev sous [http://www.debian.org/ Debian].)<br />
<br />
== Préparation des sources ==<br />
<br />
=== Récupérer les sources ===<br />
<br />
A l'heure où j'écris ces lignes, la dernière version de test est la 2.6-test10. Vous trouverez '''TOUTES''' les versions du noyau sur le serveur ftp [ftp://ftp.kernel.org/ ftp.kernel.org]. Pour récupérer la dernière version du noyau 2.6, il vous suffit d'aller dans le répertoire /pub/linux/kernel/V2.6 et de prendre le fichier correspondant à la dernière version, compressée soit en .tar.gz soit en .tar.bz2.<br />
<br />
=== Installer correctement les sources ===<br />
<br />
<div class="note">Les modifications suivantes se font en root</div><br />
<br />
* Une fois le téléchargement effectué, copier l'archive fraichement récupérée dans le répertoire /usr/src/linux. <div class="code">cp linux-2.6.XX.tar.gz /usr/src/ (ou linux-2.6.XX.tar.bz2 si l'archive est au format bz2)</div><br />
* Ensuite, décompressez l'archive.<br /><code>tar zxvf linux-2.6.XXX.tar.gz (si celle-ci est au format .tar.gz)</code><br /><code>tar xjvf linux-2.6.XXX.tar.bz2 (si format bz2)</code><br />
* Enfin, il est nécessaire que les sources de votre nouveau noyau pointent vers /usr/src/linux. On fait ça tout simplement en créant un lien symbolique, qui fera pointer votre nouveau répertoire vers /usr/src/linux. Il est également fort probable que vous ayez les sources de votre ancien noyau. Il est donc conseillé de les supprimer avant de créer le nouveau lien. Tout cela se fait avec la commande : <div class="code">rm /usr/src/linux && ln -s /usr/src/linux-2.6.XX /usr/src/linux</div> Cela va de soi, mais remplacer linux-2.6.XX par le répertoire nouvellement créé<br />
* Voilà, il nous reste plus qu'à aller configurer notre noyau ;-)<br />
<br />
== La configuration ==<br />
<br />
Zoup, assez discuté sur les futilités, passons à la configuration du noyau !<br />
<br />
=== Entrez dans l'outil de configuration ===<br />
<br />
Positionnez vous dans le répertoire /usr/src/linux : <code>cd /usr/src/linux</code><br /> Puis, plusieurs possiblités s'offre à vous :<br />
<br />
<div class="note">Faîtes attention au préalable à bien avoir installé la librairie nécessaire au mode de configuration que vous choisirez. Voir plus haut pour plus d'informations</div><br />
<br />
* Vous optez pour une configuration en '''mode texte pur'''. Attention, c'est très vite fastidieux, on doit répondre si l'on désire activer chaque option. Cette méthode est donc réservée à tous les barbus/geek. Si vous voulez néanmoins utiliser ce mode de configuration, vous taperez la commande suivante. <br /><div class="code">make config</div><br />
* Vous optez pour une '''configuration graphique en mode texte''' (style curses). Dans ce cas, vous taperez la commande suivante : <br /><div class="code">make menuconfig</div> <br />
* Enfin, vous pouvez '''configurer votre noyau sous X'''. Dans ce cas, vous devez être connecté sur un serveur X, et taper la commande suivante : <br /><div class="code">make xconfig</div> <br />
<br />
<div><div style="float:left;padding:10px;">[[Image:kernel26-menuconfig.png]]<br />Un exemple de configuration avec menuconfig</div><div style="float:left;padding:10px;">[[Image:kernel26-xconfig.png]]<br />Un exemple avec xconfig</div> </div><div style="clear:left;"><br />
<br />
=== Les principaux changements et recommandations concernant la configuration ===<br />
<br />
==== Remarques Générales ====<br />
<br />
* Si vous avez l'habitude du noyau 2.4, sachez que la plupart des options de l'ancienne version du 2.4 sont disponibles, elles ont été , en revanche, bien souvent déplacées dans des sections plus adaptées.<br />
* Les diverses sections sont plus cohérentes. Ainsi, tout ce qui concerne le réseau (support de protocoles, du filtre de paquets, mais aussi des différentes cartes) est inclu dans une seule et même section. Nous avons plus de sections, mais chacune est bien délimitée et concerne une partie précise du noyau (son, réseau, input, ...).<br />
<br />
==== Section par section ====<br />
<br />
===== General Setup =====<br />
<br />
* Grosse surprise, il y a maintenant moins d'élements dans cette section. C'est plutot normal puisque pour cette nouvelle version du noyau, de nombreuses options ont été séparées et replacées dans les sections adéquates.<br />
* Une nouvelle option est la gestion du .config. Cette option vous permet de conserver votre configuration du noyau, ce qui vous facilitera la vie lors d'une future recompilation.<br />
===== Loadable module support =====<br />
* Vous pouvez maintenant compiler le support pour décharger des modules. Je ne peux que vous conseiller de compiler cette option (en dur bien sur). A coté de ça, il faudra installer module-init-tools, qui inclut les nouvelles version des outils pour les modules, comme modprobe et cie ...<br />
===== Processor Type and features =====<br />
* Bien choisir son architecture et son type de processeur. En effet, le noyau 2.6 sépare le processeur et l'architecture. Pour la majeure partie des lecteurs, l'architecture sera PC-Compatible, et le processeur soit Athlon, PIII ou PIV.<br />
* L'option "Generic x86 support" vous permettra d'avoir un support générique pour le x86, surtout sur les processeurs exotiques. Cette option est surtout utile si on ne connait pas le processeur sur lequel ce kernel sera utilisé : elle permet de pouvoir avoir un support générique des processeur i386, avec quelques accélérations. Autrement dit, si le noyau est compilé uniquement pour votre machine, ne la prenez pas !<br />
* Comme dit précédemment, cette nouvelle mouture est préemptive. Veillez à bien cocher l'option "Preemptible Kernel" pour avoir un système plus réactif !<br />
===== Power Management options =====<br />
* L'ACPI a fait un saut en avant par rapport à la version 2.4 du noyau Linux. Même si les mêmes options sont disponibles, l'ACPI, ça n'était pas vraiment ça sous Linux. Néanmoins, je vous déconseille de l'utiliser, un ami têtu en a déjà fait les frais (un portable grillé pour la peine !). Le problème est principalement que les interfaces ACPI ont de grandes différences et il est difficile de fournir un support ACPI complet. Il est donc préférable d'utiliser l'APM.<br />
* L'ajustement de l'horloge du processeur est présent, mais je ne l'ai malheureusement pas testé. Par conséquent, je ne préfère pas en dire plus ;-)<br />
===== Executable File Formats =====<br />
* Je ne peux que vous recommander de mettre en dur tous les types de binaires. En effet, Linux gère de nombreux formats de fichiers binaires comme l'antédéluvien a.out, l'ELF, et bien d'autres (dont les binaires dos, ...).<br />
===== Device Drivers =====<br />
Ce sont précisément les bouts de code qui permettront à votre nouveau noyau d'intéragir avec vos périphériques. Je ne détaillerai pas toutes les sections, je vais parler plutot des avancées majeures de cette nouvelle section.<br />
* On pourra noter que les Input ont bien été séparés du reste dans ce noyau. Dans la section "Input Device Support", vous trouverez aussi bien le support pour le clavier PS2 que pour les écrans tactiles ou les joystick. Allez donc faire un tour pour inclure tous vos périphériques.<br />
* Un des gros changement, c'est l'inclusion des pilotes ALSA. Vous pouvez les compiler soit en dur, soit en modules. ("Device Drivers->Sound"). Si vous n'utilisez pas encore ALSA, c'est l'occasion de découvrir ce fabuleux projet. Pour les autres, ces modules remplaceront les anciens, et les script de démarrage pourront se conserver.<br />
* Ne surtout <font class="warning">pas oublier</font> de compiler votre kernel avec l'option Device Drivers -> Graphics Support -> Console display driver support -> Video mode selection support. Bien sur, vous pouvez utiliser le framebuffer à la place.<br />
===== File Systems =====<br />
* Veillez à bien compiler les systèmes de fichiers en dur, au moins pour le système root (votre /).<br />
* Le support du XFS est maintenant inclu en standard dans notre noyau préféré ! Pour ceux qui ne connaissent pas encore le XFS, c'est le système de fichiers développé par Silicon Graphics pour son OS Irix. Ce dernier est très performant et fiable.<br />
* On note le support expérimental de NFS v4 et de CIFS, nouveaux systèmes de fichiers en réseau.<br />
== Compiler et installer votre nouveau noyau ==<br />
Il est je pense inutile de décrire comment compiler et installer votre noyau, de nombreux articles ayant été écrits à ce sujet. Si toutefois vous ne savez pas, je vous invite à consulter [http://lea-linux.org/kernel/kernel.php3 cette documentation sur lea], ou en chercher une autre :-)<br /> A noter également que la commande <code>make-kpkg</code> fonctionne parfaitement pour Debian pour faire un paquet contenant notre nouveau noyau.<br />
== Problèmes rencontrés ==<br />
=== Le kernel boote, mais rien ne s'affiche ===<br />
Veuillez bien lire les recommandations ci-dessus, il y a de grandes chances pour que vous n'ayez pas activé l'option Video mode selection support ou le framebuffer.<br />
=== Drivers nVidia ===<br />
Pour les possesseurs de cartes nVidia et qui désirent garder le pilote propriétaire, j'ai une mauvaise et une bonne nouvelle.<br /> La mauvaise, c'est que les pilotes officiels ne s'installent pas avec cette nouvelle mouture du kernel.<br /> La bonne, c'est qu'il existe un patch pour pouvoir les installer. Vous trouverez toutes les ressources nécessaires sur [http://www.minion.de/ http://www.minion.de]<br />
=== Ma carte TV ne fonctionne pas ===<br />
Eh oui, vous goutez les joies du devel. Apparemment, les cartes TV ont quelques incompatibilités avec certains matériels.<br />
== Pour finir ==<br />
La meilleure manière de mieux connaitre ce nouveau kernel, c'est de l'essayer, n'hésitez donc pas à compiler votre propre noyau, tout en prenant soin de conserver dans un coin de votre disque un noyau qui fonctionne.<br />
Je vous conseille également de consulter le site [http://www.traduc.org/kernelfr/ kernelfr] qui proposera une traduction des fichiers et autres broutilles autour du kernel.<br />
<br />
</div><div class="merci">Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Julien Delange le 05/11/2003.</div><br />
<br />
= Copyright =<br />
Copyright &copy; 05/11/2003, Julien Delange<br />
{{CC-BY-NC-SA}}<br />
<br />
<br />
=Autres ressources=<br />
<br />
* [http://dsoulayrol.free.fr/articles/wonderful_2.6.html Wonderful World of Linux 2.6]</div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=Pr%C3%A9parer_l%27installation&diff=9150
Préparer l'installation
2005-10-14T18:00:01Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div>[[Category:Installer Linux]]<br />
= Préparation à l'installation de Linux =<br />
<br />
<div class="leatitre">Préparation à l'installation de Linux</div><div class="leapar">Par Jean-Christophe sur la base du travail de Serge</div><div class="leadesc">Cette partie traite de la préparation que vous et votre ordinateur devrez subir avant d'installer Linux ;-)</div><br />
----<br />
<br />
== 1. Vérifier son matériel ==<br />
<br />
<u>Avertissement</u><br />
<br />
Linux ne supporte pas tous les matériels qui existent dans le commerce ou ailleurs. La faute en revient aux constructeurs qui développent des drivers en général uniquement pour Windows. Les drivers Linux sont généralement développés par des personnes qui possèdent un matériel qu'ils souhaitent utiliser avec Linux ; cela n'est possible que si le fabricant ne garde pas secrètes les spécifications de son matériel, ce qui est malheureusement encore souvent le cas. <span style="color:#FF6666;">Dans ce cas, je vous invite à boycotter et à faire boycotter ces fabricants afin de faire pression sur eux</span>.<br />
<br />
<u>Prérequis</u> :<br />
<br />
* '''Microprocesseur''' : Intel x86 à base de microprocesseur 386 minimum (ou compatible comme AMD, CYRIX, etc.) <br /> (Je ne traite ici que des plates-formes "compatibles IBM PC") <br /> Il existe des versions de Linux pour le matériel plus vieux (286, etc.), mais cela dépasse le cadre de cette rubrique. <br /> Il existe aussi des distributions de Linux pour 680xx ([http://www.mklinux.org MkLinux]), PowerPC (Linux PPC, [http://www.debian.org/ports/powerpc debian PPC], [http://qa.mandriva.com/twiki/bin/view/Main/MdkPpcPort Mandriva PPC] ou [http://www.gentoo.org/doc/en/gentoo-ppc-install.xml Gentoo PPC]), [http://www.debian.org/ports/alpha Alpha], etc. <br />
* '''Disque dur''' : prévoyez pour le système lui-même de l'ordre de 3 Go pour une distribution assez récente, surtout si vous installez X Window (le sous-système graphique de Linux) avec des environnements de bureau de type [http://www.kde.org KDE] ou [http://www.gnome.org Gnome] (très à la mode dans les distributions actuelles). Prévoyez aussi environ 256 Mo supplémentaires pour le Swap (i.e. mémoire virtuelle, on en reparle [#partitions plus tard]). <br /> Avec ça, vous allez déjà pouvoir faire tourner plein de choses. Sachez cependant que des "mini distributions" (ou parmi les distributions "classiques", la Slackware ; parmi les distributions light basé sur slackware, il existe [http://drinou.tuxfamily.org drinou-linux]) passent avec 100 ou 150 Mo de disque dur, mais là, pas question d'avoir un système graphique (encore que ...), ni de grosses applications de style base de données, etc.<br />
* '''Mémoire''' : prévoyez environ 128 à 256 Mo avec un système X (ça passe avec 64 Mo, mais avec les nouveaux environnements sous X ça risque de ramer) et plus vous en avez : mieux c'est. <br /> Là aussi, c'est juste une recommendation pour utiliser les logiciels les plus courants compris dans les distributions. Maintenant, si vous prévoyez de faire de votre serveur Linux une vraie usine à gaz (serveur WEB, base de données SQL, proxy serveur, OpenOffice.org...), prévoyez plus de mémoire. <br /> Si vous avez peu de mémoire, vous risquez de ne pas pouvoir installer l'interface graphique Xorg. <br />
<br />
D'une manière général, il vaut mieux éviter de recycler un vieux pc si vous voulez essayer un système linux. Bien que ça soit possible, c'est loin d'être idéal pour une première expérience, les distributions modernes venant par défaut avec la plupart des fonctionnalités activés pour un plus grand confort de l'utilisateur.<br />
<br />
Maintenant voyons de plus près le matériel supporté. Sachez qu'une liste assez complète se trouve dans le Hardware-HOWTO ([http://www.linuxdoc.org/HOWTO/Hardware-HOWTO.html anglais]/[http://www.freenix.org/unix/linux/HOWTO/Hardware-HOWTO.html français]) sur le site TLDP ([http://www.tldp.org The Linux Documentation Project <''www.tldp.org>'']). <br /> En général :<br />
<br />
* Les '''disques durs''' SCSI et IDE ainsi que leurs contrôleurs sont supportés dans la plupart des cas. Pour faire fonctionner un disque Serial ATA vous risquez d'avoir quelques problèmes avec l'installation par défaut des distributions : prévoyez un disque IDE standard pour faire l'installation et vous verrez après comment installer l'éventuel driver Serial ATA.<br />
* Les '''cartes réseau''' de type compatible NE2000 ISA ou PCI, ainsi que les cartes 3COM, HP, AMD... sont très bien supportées. En fait, la très grande majorité des cartes réseau fonctionnent sous Linux sans problème.<br />
* Les '''modems''' compatibles HAYES (attention toutefois à certains US ROBOTICS) mais <span style="color:red">évitez de préférence les "soft-modems" qui ne marchent que sous Windows</span> (US Robotics Winmodem, modems internes PCI en général). En fait, la communauté Linux a développé des drivers pour la plupart de ces modems depuis quelques temps, cependant leur installation reste "pénible", mais c'est de moins en moins vrai. <br /> En bref, les modems <u>externes</u> sur port série ainsi que les modems sur bus <u>ISA</u> sont OK, évitez les modems internes PCI (mais vous devriez pourvoir faire fonctionner la plupart de ceux-ci moyennant un petit investissement technique). <br /> Les '''modems ADSL''' : ECI USB et Alcatel/Thomson SpeedTouch USB sont supportés, ainsi que la plupart des modem BeWAN. Tous les modems ADSL Ethernet sont supportés. <br /> Les fournisseurs d'accès restent souvent un problème. Certains providers (AOL pour ne pas le citer) rendent la connexion depuis Linux très complexe, allant jusqu'à tenter de faire interdire certains logiciels de connexion ([http://www.peng.apinc.org penggy]) alors qu'ils n'en fournissent pas !<br />
* Les '''cartes graphiques''' : toutes les cartes anciennes de type S3, S3 Virge, Trident, Cirrus Logic, etc. passent sans problèmes, mais attention aux dernières cartes vidéo très à la mode sous Windows... Je vous conseille si vous voulez de bonnes performances des cartes de type Matrox G200, les 3Dfx (toute génération, même la Rush est paraît-il supportée). Les cartes vidéo évoluent très vite, et peu de constructeurs font des efforts pour X... Attention donc. Pour une liste à jour, allez sur le site de XFree (voir dans les liens). Au niveau de l'accélération 3D, les cartes 3Dfx sont parfaitement supportées (voir la [../hardware/3dfx.php3 rubrique 3Dfx]), mais [http://www.xfree.org XFree 4.2.x] a changé la donne. La plupart des cartes NVidia fonctionnent sans problème en 2D et assez bien en 3D (pour peu que vous installiez les drivers 'closed-source' de chez NVidia). La plupart des cartes de chez ATI fonctionnent aussi en 2D (y compris les Radeon 8500, ...) et certaines sont supportées en 3D accélérée par XFree 4.3.0.<br />
* Carte '''série multiports'''.<br />
* Carte '''tuner TV''' : les cartes à base de chipset BT8xx (848, 878...) sont très bien supportées (comme la Mìro PCTV). Voir la [../hardware/tv.php3 rubrique TV]. Les cartes ATI ALL in Wonder disposent aussi de drivers, voir [http://gatos.sourceforge.net gatos.sourceforge.net].<br />
* De plus en plus de webcams sont supportées. Les webcams philips sont supportées par un driver spécifique, et beaucoup de webcams sont prises en charge par le module [http://alpha.dyndns.org/ov511 OV511] ou par le module [http://webcam.sourceforge.net CPiA].<br />
* '''Scanner''' : évitez absolument les scanners parallèles (quoi que ca commence à bouger de ce côté-là, mais pour l'instant ils ne sont pas très bien supportés). Par contre, beaucoup de scanner SCSI fonctionnent très bien (Voir la home page de [http://www.mostang.com/sane/ SANE] pour les scanners supportés), en particulier certains scanner n'ont plus de driver pour Windows 2000 et XP mais en ont pour Linux ;-). De plus en plus de scanner USB sont également supportés.<br />
* '''Imprimante''' : évitez certaines anciennes Hewlett Packard jet d'encre qui sont en fait des win-imprimantes (ex : HP820 Cxi) ne fonctionnant que sous Windows 9x (même pas NT !). La plupart des imprimantes LASER fonctionnent très bien, mais des win-imprimantes y sont aussi apparues :-(.<br />
* Lecteur '''ZIP''' sur port parallèle, SCSI ou USB : aucun problème.<br />
* Lecteur JAZ, ZIP, de bandes, etc... SCSI : tous très bien supportés, il n'y a quasiment pas de configuration à faire.<br />
* Lecteur '''CD-ROM''' et '''graveur''' : les graveurs SCSI sont très faciles à configurer ; pour configurer un graveur IDE, allez voir la rubrique [/trucs/?aff_item=8 Trucs]. En bref, les graveurs SCSI ou IDE fonctionnent sous Linux sans problème, les distributions récentes les configurent automatiquement et vous n'aurez aucun souci.<br />
* Les périphériques '''USB''' sont relativement bien supporté quand les constructeurs fournissent des documentations techniques. Ainsi, les souris USB, les claviers USB (même ceux ayant des touches supplémentaires, voir : [http://lineak.sourceforge.net/ LinEAK]), les webcams, les modems ADSL, les appareils photos numériques, les USB-Keys, etc. sont très bien supportés, sauf exception...<br />
* Les '''DVD''' sont maintenant très bien supportés, essentiellement par plusieurs logiciels : xine, mplayer ou oggle. Les graveurs de DVD sont eux aussi assez bien supportés (de la même façon que les graveurs de CD, et par les mêmes logiciels).<br />
<br />
Voilà, cette liste est très incomplète mais permet de débuter. Pour une liste plus complète de matériels supportés, allez voir le Hardware-HOWTO ([http://www.tldp.org/HOWTO/Hardware-HOWTO/index.html anglais]/[http://www.freenix.org/unix/linux/HOWTO/Hardware-HOWTO.html français]) pour les matériels spécifiques.<br />
<br />
== 2. Choisir sa distribution ==<br />
<br />
Il y a dans les listes de distribution et sur Usenet des débats acharnés où chacun cherche à prouver que "sa" distribution est meilleure que les autres. C'est avant tout une question de goût personnel. Voici les principales distributions :<br />
<br />
{| width="100%" cellspacing="5"<br />
|- valign="top"<br />
| width="20%" align="center" |<br />
''Distribution''<br />
| width="70%" |<br />
''Commentaire''<br />
| width="10%" |<br />
''type de''<br />''paquet''<br />
|- valign="top"<br />
|<br />
• '''<span style="color:#FF8080;">Fedora</span>'''<br />
|<br />
la plus connue. Assez simple à installer pour un débutant mais pas la plus simple à maintenir à mon goût.<br />
| align="center" |<br />
'''rpm'''<br />
|- valign="top"<br />
|<br />
• '''<span style="color:#FF8080;">Mandriva</span>'''<br />
|<br />
C'est aujourd'hui la distribution la plus utilisée sur les Desktops. C'est certainement l'un des plus faciles à installer, elle dispose d'un [http://www.mandriva.com/fr/ bon site] pour avoir des correctifs, forums... et de plus elle est francisée (elle est réalisée par une société <span style="color:#3333FF;">fra</span>nça<span style="color:#ff0000;">ise</span>). Vu le support qu'il y a derrière, grâce à leur site et leurs listes de diffusions, je trouve que cette distribution est un bon choix pour un débutant. De plus, cette distribution est complètement libre.<br />
| align="center" |<br />
'''rpm'''<br />
|- valign="top"<br />
|<br />
• '''<span style="color:#FF8080;">SuSE</span>'''<br />
|<br />
très bonne distribution pour les débutants aussi (installation simple) et bon site aussi pour le support.<br />
| align="center" |<br />
'''rpm'''<br />
|- valign="top"<br />
|<br />
• '''<span style="color:#FF8080;">Debian</span>'''<br />
|<br />
c'est vraiment '''LA''' distribution libre (elle ne comporte que des logiciels libres) et à part : le groupe de développeurs ne met à la disposition des personnes intéressées que l'image ISO de la distribution : il n'y a pas de société pour la commercialiser - et aucun impératif marketing, au contraire : la distribution sort quand les développeurs responsables du projet Debian estiment que tout est bon (ce qui donne des décalages entre ce qui était annoncé et la date réelle de sortie !). Bref, c'est une distribution très stable, mais plutôt pour les initiés.<br />
| align="center" |<br />
'''deb'''<br />
|- valign="top"<br />
|<br />
• '''<span style="color:#FF8080;">Slackware</span>'''<br />
|<br />
je la trouve excellente ; l'installation n'est pas toute simple, mais je trouve sa maintenance plus aisée que sur les Red-Hat. Bref, c'est une distribution pour les initiés. Par contre, la Slackware est souvent en retard par rapport aux autres distributions au niveau des versions des logiciels. <br /> Cette distribution permet de s'installer dans très peu de place disque (moins de 100 Mo) en ne choisissant que les packages indispensables.<br />
| align="center" |<br />
'''.tar.gz'''<br />
|- valign="top"<br />
|<br />
• '''<span style="color:#FF8080;">Gentoo</span>'''<br />
|<br />
C'est une distribution 'source' : on démarre avec un CD bootable en mode texte, on lit la documentation fournie et on compile tous les outils qu'on va utiliser. C'est une distribution qu'on choisit lorsqu'on a un peu de pratique.<br /> Sa grande qualité : un excellent gestionnaire de package inspiré des "ports" de BSD.<br />
| align="center" |<br />
'''.ebuild'''<br />
|-<br />
| colspan="3" |<br />
• Il existe encore bien d'autres distributions...<br />
| <br />
|}<br />
<br />
La facilité de trouver des paquets <tt>rpm</tt> milite également en faveur de Fedora et de Mandriva, mais on trouve également tout en <tt>.tar.gz</tt>, ce qui permet d'installer tout logiciel sur toute distribution ; il suffit de le compiler si le package ne contient pas une version binaire.<br />
<br />
'''Se procurer une distribution''' : <br /> Si vous avez une bonne connexion au Net (ADSL, câble ou LS à votre travail) vous pouvez télécharger une distribution complète. Mandriva, Fedora et Debian sont disponibles en image ISO (un seul fichier d'environ 700 Mo qu'il suffit ensuite de graver sur un CD). <br /> Si vous souhaitez/devez acheter une distribution, vous la trouverez dans les librairies, FNAC, etc. Optez pour l'une d'elle avec si possible un gros livre fourni avec. Evitez aussi les distributions en boîte à plus de 60 euros, on est souvent déçu par le soit-disant contenu. Mandriva vend un DVD comportant tous les logiciels de la distribution, il est très pratique. De plus, de nombreux magazines informatiques proposent régulièrement sans supplément de prix (vers les 6 ou 7 euros donc) une distribution toute récente. Vous pouvez également trouver tout un tas de CD à bas prix en suivant ce [http://mandrivastore.com lien] chez Mandriva, ou chez [http://www.ikarios.com Ikarios].<br />
<br />
'''Débuter''' : <br /> Si vous commencez avec Linux, je vous conseille de choisir Mandriva ou SuSE, ou mieux : commencez par tester Linux avec le Live-CD de [http://www.knoppixfr.org/ Knoppix] : c'est une distribution qui est conçue pour fonctionner depuis le CD, sans s'installer sur le disque dur. Pour tester Linux en grandeur nature sur votre matériel, c'est l'idéal.<br />
<br />
== 3. Préparer ses disques durs. ==<br />
<br />
Je ne vais pas vous décrire toute la procédure d'installation, mais vous donner des conseils utiles, avec un peu d'explications. Le installation-HOWTO ([http://www.tldp.org/HOWTO/Installation-HOWTO/index.html anglais]/[http://www.freenix.org/unix/linux/HOWTO/Installation-HOWTO.html français]) ou le [http://www.tldp.org/LDP/gs/index.html Guide d'installation et de démarrage] (en anglais) sont là pour ça, les docs des distribs et des centaines d'autres sites aussi.<br />
<br />
=== Un peu de théorie ===<br />
<br />
==== Les systèmes de fichiers ====<br />
<br />
Le système de fichiers (ou File System ou FS), c'est la façon dont le système d'exploitation structure les données sur le disque dur.<br />
<br />
Comme tout système d'exploitation, Linux dispose de ses propres systèmes de fichiers :<br />
<br />
* '''EXT2FS''' (ou '''ext2''') : c'est le système de fichiers historique de Linux, il n'est pas forcément le meilleur choix car, n'étant pas journalisé, si vous éteignez mal votre ordinateur, linux prendra beaucoup de temps pour tester les disques durs (de la même manière que le scandisk de Microsoft).<br />
* '''EXT3FS''' (ou '''ext3''') : c'est l'évolution logique du ext2. Il présente l'avantage d'être compatible avec l'ext2 tout en étant journalisé. Il n'implémente toute fois pas les toutes dernières innovations en matière de journalisation. Utilisez ce système de fichiers si vous comptez pouvoir relire des informations depuis votre windows.<br />
* '''REISERFS''' : c'est un système de fichiers journalisé. C'est un bon choix. Il est réimplémenté à partir de zéro et bénéficie de beaucoup d'innovations.<br />
<br />
Il en existe d'autres, mais préférez-leur l'un de ceux-là, sauf si vous avez une bonne raison.<br />
<br />
Windows utilise quant à lui un système VFAT (partitions limitées à 2 Go) ou FAT32, voire FAT (l'ancien système de fichier du DOS). Vous ne pouvez pas installer Linux sur une partition de ce type, car elles ne gèrent pas les [../admin/permissions.php3 permissions]. Les dernières versions de Windows (NT, 2000 et XP) utilisent aussi le système de fichiers NTFS, mais Microsoft n'a pas fourni les spécifications techniques de ce format et Linux (ainsi que la plupart des autres systèmes d'exploitation) est incapable de le gérer correctement (prévoyez une partition en VFAT-FAT32 pour partager des informations facilement entre Linux et Windows) : Linux sait lire les informations sur une partitions NTFS mais pas en écrire (cette fonctionnalité est en cours de développement).<br />
<br />
==== Les disques durs et les partitions sous Linux ====<br />
<br />
Tout d'abord, voyons comment Linux identifie et organise les disques durs.<br />
<br />
Pour les disques '''IDE''', la numérotation se fait avec un préfixe "'''<tt>hd</tt>'''", suivi par une lettre, "'''<tt>a</tt>'''" pour le premier IDE maître, "'''<tt>b</tt>'''" pour le premier esclave, etc. <br /> En résumé on a :<br />
<br />
* <tt>hda </tt> Disque maître sur le 1er contrôleur IDE<br />
* <tt>hdb </tt> Disque esclave sur le 1er contrôleur IDE<br />
* <tt>hdc </tt> Disque maître sur le 2eme contrôleur IDE<br />
* <tt>hdd </tt> Disque esclave sur le 2eme contrôleur IDE<br />
<br />
Si vous avez d'autres contrôleurs IDE (hé oui, cela arrive !) la numérotation se poursuit (<tt>hde</tt>, <tt>hdf</tt>, etc.). <br /> Attention : les lecteurs de CD-ROM IDE apparaissent comme un disque dur. Si votre CD est maître sur la deuxième nappe par exemple, il sera nommé <tt>hdc</tt>.<br />
<br />
Pour les disques '''SCSI''', cette fois c'est l'ID SCSI qui va donner la lettre, le préfixe étant "'''<tt>sd</tt>'''". <br /> Prenons par exemple 3 disques scsi d'id 0,1 et 3 on va avoir :<br />
<br />
* <tt>sda </tt> Disque d'ID 0<br />
* <tt>sdb </tt> Disque d'ID 1<br />
* <tt>sdd </tt> Disque d'ID 3<br />
<br />
Attention : les lecteurs de CD-ROM SCSI, les ZIP, JAZ, etc. SCSI ainsi que les périphériques de stockage USB (appareils photo, clefs USB...) apparaissent comme un disque dur SCSI ; ils se nomment aussi <tt>sdx</tt> suivant leur ID. Astuce : pour connaître la liste de vos périphériques de ce type, tapez : <code>cdrecord -scanbus</code>.<br />
<br />
Les '''partitions''' sont quant à elles représentées par le nom du disque dur, suivi d'un chiffre représentant la partition. <br /> Par exemple, la première partition du premier disque IDE se nomme '''<tt>hda1</tt>''', de même, la troisième partition du disque SCSI d'ID 1 se nommera '''<tt>sdb3</tt>'''.<br />
<br />
==== Organisation des fichiers sous Linux ====<br />
<br />
'''L'arborescence'''<br /><br />
<br />
Sous Linux, ou tout autre Unix d'ailleurs, il n'y a pas de lettre représentant le disque dur comme le <tt>C:</tt> de Windows/DOS. <br /> De plus, le signe '<tt>\</tt>' est remplacé par '<tt>/</tt>' pour séparer les répertoires. <br /> Il y a une seule arborescence, qui débute à la "racine", notée '<tt>/</tt>', et tous les disques durs/partitions apparaissent dans cette arborescence avec leur contenu de façon transparente comme un répertoire.<br />
<br />
'''Les périphériques'''<br /> De plus, tout périphérique est identifié à un fichier qui se trouve dans le répertoire <tt>/dev</tt> (comme '''dev'''ice, périphérique en anglais). Par exemple, le disque maître du deuxième port IDE est identifié par <tt>/dev/hdc</tt>, sa deuxième partition par <tt>/dev/hdc2</tt>. <br /> Le lecteur de disquette est représenté par <tt>/dev/fd0</tt>, etc.<br />
<br />
'''Les partitions / les points de montage'''<br /> Les partitions que l'on va créer sur les disques durs seront attachées à des répertoires de l'arborescence, ou "'''points de montage'''". C'est ce qu'on appelle "''monter une partition''". Le point de montage est un simple répertoire, vide avant le montage, et qui après le montage, représente le contenu de la partition montée. <br /> Par exemple, supposons que nous ayons créé une partition <tt>/dev/hda2</tt> (premier disque IDE, 2ème partition) pour contenir le système. On ''montera'' cette partition (automatiquement, heureusement !) dans le répertoire racine <tt>/</tt>. Si la partition <tt>/dev/hda3</tt> est destinée à contenir les données utilisateur, on la montera dans le ''point de montage'' (=répertoire) <tt>/home</tt>. On verra le contenu de cette partition dans le répertoire <tt>/home</tt> comme si c'était n'importe quel autre répertoire, alors que physiquement les données sont sur une autre partition. <br /> De même, pour accéder à la disquette, on montera le périphérique <tt>/dev/fd0</tt> dans le point de montage <tt>/mnt/floppy</tt> ou <tt>/floppy</tt> (selon la distribution) et pour accéder au CD-ROM, on montera le périphérique <tt>/dev/cdrom</tt> dans le point de montage <tt>/mnt/cdrom</tt> ou <tt>/cdrom</tt>.<br />
<br />
'''Les répertoires standards'''<br /> Linux possède des répertoires "spéciaux" à la racine (un peu comme le <tt>C:\windows</tt>), qui sont classiques dans les systèmes Unix et peuvent ou non représenter un point de montage pour une partition.<br />
<br />
On a déjà vu par exemple le répertoire spécial <tt>/dev</tt> où tous les périphériques sont répertoriés en tant que fichiers, ou encore le répertoire <tt>/home</tt> qui contient les données personnelles des utilisateurs.<br />
<br />
Chacun des répertoires ci-dessous peut être soit un simple répertoire dans la partition racine, soit le ''point de montage'' d'une autre partition, mais dans tous les cas le résultat est le même : des fichiers dans des répertoires.<br />
<br />
<center><br />
<br />
<u>Les répertoires standards de Linux sont :</u><br />
<br />
</center><br />
<br />
<br /><br />
<br />
{| width="100%" border="1"<br />
| width="20%" |<br />
/<br />
| width="80%" |<br />
La racine du système = la base.<br />
|-<br />
| width="20%" |<br />
/boot<br />
| width="80%" |<br />
Fichiers utilisés pour booter le noyau<br />
|-<br />
|<br />
/usr<br />
|<br />
Programmes, données, accessibles par les utilisateurs et non nécessaires lors du boot<br />
|-<br />
| width="20%" |<br />
/home<br />
| width="80%" |<br />
Tous les répertoires de base des utilisateurs et de certains services comme le FTP, le serveur Web, Samba, etc.<br />
|-<br />
| width="20%" |<br />
/dev <br />
| width="80%" |<br />
Tous les périphériques. Le repertoire est en général géré dynamiquement par le système.<br />
|-<br />
| width="20%" |<br />
/bin<br />
| width="80%" |<br />
Programmes nécessaires au boot, et disponibles ensuite à tous les utilisateurs<br />
|-<br />
|<br />
/sbin<br />
|<br />
Programmes nécessaires au boot, disponibles au root uniquement<br />
|-<br />
| width="20%" |<br />
/var<br />
| width="80%" |<br />
Fichiers de log, spool d'impression, de mail, etc. En général, fichiers qui changent tout le temps ( variable, d'ou le nom /var )<br />
|-<br />
| width="20%" |<br />
/etc <br />
| width="80%" |<br />
Fichiers de configuration du système<br />
|-<br />
| width="20%" |<br />
/root<br />
| width="80%" |<br />
Répertoire home de l'administrateur<br />
|-<br />
| width="20%" |<br />
/lib<br />
| width="80%" |<br />
Bibliothèques et modules (comme les DLL de Windows) nécessaires au boot<br />
|-<br />
| width="20%" |<br />
/tmp<br />
| width="80%" |<br />
Fichiers temporaires<br />
|-<br />
| width="20%" |<br />
/mnt<br />
| width="80%" |<br />
Répertoire proposé pour monter des périphériques (ou /mnt/cdrom, /mnt/floppy, /mnt/zip, etc.)<br />
|-<br />
| width="20%" |<br />
/proc et /sys<br />
| width="80%" |<br />
Fichiers d'information sur la configuration système (les fichiers sont générés dynamiquement, pas de modifications possibles). Les fichiers dans ce répertoire n'existent pas sur le disque, c'est Linux qui les crée en temps réel lorsque vous en avez besoin.<br />
|-<br />
|<br />
/opt<br />
|<br />
Dans ce répertoire (optionnel), on peut ajouter des logiciels afin qu'ils ne s'installent pas dans les répertoires système. Peu utilisé, sauf par certaines applications commerciales.<br />
|}<br />
<br />
<blockquote><br />
<br />
Et j'en passe...<br />
<br />
</blockquote><br />
<br />
=== Passons à la pratique ! ===<br />
<br />
On peut installer Linux sur une partition DOS/Windows avec par exemple Linux4win de Mandrake. Cette méthode est pratique car elle nécessite un minimum de travail sur le système d'exploitation d'origine (en général Windows) : Linux s'installe dans un gros fichier sur le disque Windows. <br /> Cependant, je vous déconseille cette méthode, à moins que vous y soyez obligé. Un tel système est très ralenti (au moins d'un facteur 2) et vous allez être très déçu des performances de Linux ; de plus il arrive parfois des problèmes d'incompatibilités avec cette méthode. Au prix où sont les disques durs aujourd'hui et vu leur taille grandissante, vous trouverez bien de la place pour créer des partitions Linux.<br />
<br />
==== Préparation ====<br />
<br />
Avant de commencer l'installation, vous allez donc devoir libérer de la place pour les nouvelles partitions Linux. Si vous comptez installer Linux sur un disque vierge, pas de problème. Par contre, si vous voulez faire cohabiter Windows et Linux sur le même disque, et que Windows est déjà installé sur la totalité du disque, il va falloir arranger ça :) (à moins que vous ne vouliez réinstaller Windows de zéro).<br />
<br />
On va devoir passer de ça :<br />
<br />
<div class="code"> <----------------- Windows --------------><br /> |==========================================| <- disque dur </div><br />
<br />
à ça :<br />
<br />
<div class="code"> <- Windows -> <- place libre pour Linux -><br /> |=============|============================| <- disque dur </div><br />
<br />
Alors soit vous virez tout et vous réinstallerez Windows, c'est le plus simple évidemment, <br /> soit vous redimensionnez votre partition Windows. Pour ce faire, utilisez un logiciel approprié, comme FIPS (souvent sur les CD des distributions), ou [http://www.users.intercom.com/~ranish/part/ Partition Manager] (un freeware sous DOS) encore Partition Magic (produit commercial). Pour ça, je vous renvoie à la documentation du logiciel utilisé.<br />
<br />
<div class="note"><br />
<br />
<u>Remarque 1</u> : Partition Manager a l'air intéressant, il fonctionne sous DOS, est ''freeware'', et existe en version française. Il permet de gérer les partitions, de sauver le MBR (Master Boot Record, c'est là que vient s'enregistrer [install.php3#lilo LILO]) dans un fichier, de le restaurer, de modifier la taille d'une partition, de la formater, etc. (Voir la [http://www.users.intercom.com/~ranish/part/ page de Partition Manager].)<br />
<br />
</div><div class="note"><br />
<br />
<u>Remarque 2</u> : la distribution Mandriva est livrée avec un utilitaire de repartitionnement très performant, sachant même redimensionner les partitions au format NTFS.<br />
<br />
</div><br />
<br />
Dans tous les cas, pensez à sauvegarder vos données perso !<br />
<br />
==== Installation proprement dite : le partitionnement des disques ====<br />
<br />
La plupart des installations commencent de la même façon : on crée une disquette de boot sous DOS/Windows avec l'utilitaire "RAWRITE" (livré sur les CD des distributions), des fois même deux disquettes (pour la Slackware) ; en général le CD de la distribution est bootable (Mandrake par exemple) et il n'y a alors pas besoin de disquette. Puis on boote sur la disquette ou le CD. <br /> Ensuite on suit les indications du programme d'installation, puis on arrive sur le partitionnement des disques (attention à la Slackware où on n'atterrit pas sur ce point directement : après s'être logué en <tt>root</tt> il faut taper "<tt>fdisk</tt>" AVANT de taper "<tt>setup</tt>"). Détaillons un peu cette procédure de partitionnement.<br />
<br />
Pour partitionner votre disque vous allez appeler la commande <tt>fdisk</tt> suivie du nom du disque sur lequel vous voulez installer Linux, par exemple "<tt>fdisk /dev/hda</tt>". Des logiciels plus conviviaux existent comme DiskDruid (disponible lors de l'installation d'une Red Hat par exemple) ou [http://www.linux-mandrake.com/diskdrake/ DiskDrake] de MandrakeSoft fonctionnant en mode graphique (mais il me semble qu'il nécessite que Linux soit déjà installé !).<br />
<br />
Je vous renvoie à l'installation HOWTO ([http://www.tldp.org/HOWTO/Installation-HOWTO/index.html anglais]/[http://www.freenix.org/unix/linux/HOWTO/Installation-HOWTO.html français]) pour toutes les commandes de <tt>fdisk</tt> ; les principales sont :<br />
<br />
* <tt>n </tt> Crée une partition, de type linux native (<tt>ext2fs</tt>) par défaut.<br />
* <tt>t </tt> Change le type d'une partition (83 linux native, 82 linux swap).<br />
<br />
Dans <tt>fdisk</tt>, tapez "<tt>m</tt>", afin d'accéder à la liste de toutes les commandes possibles. C'est assez bien indiqué dans l'installation-HOWTO.<br />
<br />
'''Attention''' : le nombre de partitions dites "''primaires''" est limité à 4. Ainsi, si vous souhaitez définir plus de 4 partitions sur un même disque, l'une de ces 4 partitions primaires doit être définie comme "''étendue''", elle contiendra alors toutes les autres partitions. Les partitions primaires sont numérotées de 1 à 4, les partitions créés à l'intérieur de la partition étendue sont numérotées à partir de 5.<br />
<br />
==== De '''combien de partitions''' allez vous avoir besoin ? ====<br />
<br />
* Tout d'abord, une partition pour le '''swap'''. Le swap c'est la mémoire virtuelle de Linux. La taille ? Ca va dépendre de votre mémoire physique. Une partition de swap de 128Mo avec 64 ou 128 Mo de RAM physique suffit amplement pour une utilisation standard. Je vous conseille donc un swap de 128 Mo : créez sous Linux avec <tt>fdisk</tt> une partition de type 82 de 128 Mo.<br />
* Pour le reste, vous avez le choix : <br /> La chose la plus simple est une seule partition (en plus du swap), qui contiendra toutes les données (système & utilisateur) ; prenez le plus de place possible (1 Go mini). <br /> En fait, il est intéressant de créer au moins deux partitions : une qui contiendra le système et une autre pour vos données personnelles. Comme ça, vous pouvez réinstaller Linux et même formater la partition système sans perdre vos données perso. Pour la même raison, on peut pousser le raffinement jusqu'à avoir une troisième partition afin de contenir les logiciels que vous installerez par la suite (OpenOffice par exemple). (voir plus haut le tableau des [#repertoires_std répertoires standards])<br />
À ces partitions, on attribuera des ''points de montage''. <br /> - C'est quoi un point de montage ? <br /> - Ah mais vous n'avez pas lu le paragraphe [#orga_fichiers précédent] ? :-)<br />
<br />
===== Si vous installez un serveur : =====<br />
<br />
L'une des méthodes les plus utilisées, c'est de mettre le <tt>/</tt> sur un petit disque ou une partition, puis <tt>/usr</tt> sur un autre disque en point de montage. Si notre système va être un serveur avec beaucoup d'utilisateurs, qui vont avoir beaucoup de données personnelles à stocker, on peut créer aussi un <tt>/home</tt> en point de montage sur un autre disque. On va aussi généralement réserver un disque ou une partition pour le répertoire temporaire que l'on montera dans <tt>/tmp</tt>, et encore une autre pour le <tt>/var</tt>. En fait, on ne va laisser dans le disque contenant la racine que les informations qui bougent peu et dont le volume augmente peu. <br /> Ainsi on ne charge pas le disque de point de montage <tt>/</tt> des répertoires <tt>/usr</tt>, <tt>/home</tt>, etc., ce qui permet de facilement maintenir le système (si <tt>/home</tt> est plein, on prend un disque + gros que l'on monte en <tt>/home</tt> et on recopie tout dessus, ça permet de ne pas casser le reste...), etc. Ca a plein d'avantages, je vous conseille de faire comme ça si vous avez plusieurs disques. De plus si un disque crashe, si ce n'est pas le disque contenant la racine <tt>/</tt>, ça permet de rebooter quand même la machine, de travailler un minimum pour réinstaller un disque sans à avoir à réinstaller un système de base. <br /> Remarque : si vous installez un serveur qui sera très sollicité, soyez généreux pour la taille du swap (2 fois la taille de la RAM est un bon début).<br />
<br />
===== Si vous installez sur une machine perso : =====<br />
<br />
Sur une machine mono-utilisateur, voire mono-disque, on peut faire une partition pour le <tt>/</tt> (mini 1Go recommandé 2Go), une pour <tt>/home</tt> et une pour le swap (128 Mo par exemple). Vous pouvez aussi éventuellement faire une partition pour <tt>/opt</tt> qui contiendra les logiciels que vous avez installés vous-même et qui ne proviennent pas de la distribution. Ca permet de mettre à jour voire de réinstaller la distribution sans trop devoir travailler derrière pour que ça fonctionne comme avant.<br />
<br />
''exemple de partionnement :''<br />
<br />
<div class="code"> <- /dev/hda1 -> <--- /dev/hda2 (étendue) --><br /> (primaire) /dev/hda5 hda6 hda7<br /> <-- Windows --> <-- / --> <- /home -> <swap> <-pt de montage<br /> |===============|=========|===========|======| <-disque dur<br /> 2,5 Go 2,5 Go 5 Go 128 Mo </div><br />
<br />
Lorsque vous disposez de beaucoup de place sur vos disques (j'ai par exemple 2 disques de 80 Go), pour une utilisation personnelle, 3 ou 4 Go suffisent pour la racine (ou alors 1 Go pour la racine et 2 Go pour /usr), gardez votre swap entre 128 et 512 Mo, et enfin, le reste pour /home (j'ai monté un de mes disques contenant une seule partition dans /mnt/data et j'y stocke mes fichiers multimédia).<br />
<br />
<div class="merci">Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par J.C. Cardot & S. Tchesmeli le 29/11/1999.</div><br />
<br />
= Copyright =<br />
Copyright &copy; 29/11/1999, J.C. Cardot &amp; S. Tchesmeli<br />
{{CC-BY-NC-SA}}<br />
<br />
<br />
=Autres ressources=<br />
* Hardware-HOWTO ([http://www.tldp.org/HOWTO/HOWTO-INDEX/hardware.html anglais]/[http://www.freenix.org/unix/linux/HOWTO/Hardware-HOWTO.html français]) <br />
* Installation-HOWTO ([http://www.tldp.org/HOWTO/HOWTO-INDEX/os.html#OSINSTALL anglais]/[http://www.freenix.org/unix/linux/HOWTO/Installation-HOWTO.html français])<br />
plus... <br />
* [http://www.users.intercom.com/~ranish/part/ Partition Manager]<br />
* [http://jc.bellamy.free.fr/fr/multiboot.html Tout sur le MBR]</div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=Nasgaia&diff=9149
Nasgaia
2005-10-14T18:00:00Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div>[[Category:Installer Linux]]<br />
= Nasgaïa GNU/Linux =<br />
<br />
<div class="leatitre">Nasgaïa GNU/Linux</div><br />
<br />
par [mailto:marc_at_nasgaia_dot_org Marc] et [mailto:jonesy_at_nasgaia_dot_org Jonesy]<br />
<br />
Future distribution GNU/Linux francaise.<br />
<br />
----<br />
<br />
Nasgaïa est un projet de distribution GNU/Linux qui a pris naissance dans le cerveau de Martial sous le nom de Domino, puis a vu le jour sur les [../pho forums de Léa]. Rien d'étonnant donc si son équipe de départ est essentiellement composée de fervents Léatiens : Martial bien sûr, mais aussi Michel, Arnaud, Jonesy et Marc. Mais, au-delà de ce qui précède, Nasgaïa est en fait tout simplement l'envie de quelques passionnés de créer leur propre distribution et, pour les moins techniciens d'entre eux, de participer d'une façon ou d'une autre à cette création.<br />
<br />
== L'esprit ==<br />
<br />
Plusieurs aspects sont ici prépondérants mais le premier d'entre eux est l'aspect humain, comme en témoigne le premier des articles de la Charte du projet : La personne humaine passe avant tout. Chacun travaille selon ses compétences, ses envies et le temps dont il dispose. Il reste donc autant que possible libre dans sa participation qui, cela va de soi, ne saurait être que volontaire et bénévole. Les décisions concernant les grands axes à adopter sont prises en commun et en public, tout simplement sur les forums du site ou sur quelque chat. <br />L'aspect légal n'est pas à négliger non plus. D'une façon générale, Nasgaïa a opté pour la [http://www.gnu.org/copyleft/gpl.html licence GPL] pour tout ce qui concerne les sources et pour la [http://www.gnu.org/copyleft/fdl.html licence FDL] pour ce qui est des documents (ceci ne concerne bien sûr que les créations, les licences originales des logiciels et documents inclus étant naturellement conservées). Cependant si un participant le souhaite, il peut opter pour une autre licence tant que celle-ci reste conforme à l'esprit du Libre. Pour résumer on peut dire que, si chacun reste le propriétaire de son travail, il le met volontiers et gracieusement à la disposition de tous. <br />Le dernier aspect que nous entreverrons, fondamental lui aussi, est l'aspect technique. Le principal objectif est ici de faire le plus simple et le plus compréhensible possible, sans préjuger des intentions de l'utilisateur et donc sans ne rien lui imposer d'office. Le point de départ de Nasgaïa est une LFS, mais sa version finale ne devrait tout de même pas être aussi minimaliste qu'une LFS ! Elle se veut une distribution générique, relativement accessible et donnant une base solide et sécurisée dans les domaines d'utilisation les plus courants tels l'internet, les réseaux, le développement ou le multimédia. Notons également que Nasgaïa est totalement optimisée i686 ce qui signifie que son fonctionnement nécessite au minimum un processeur Pentium II ou compatible, ceci afin d'obtenir une distribution non seulement stable mais rapide. Pour l'instant, bien que déjà évoqué, aucun portage n'est réellement prévu vers d'autres plateformes.<br />
<br />
== La distribution ==<br />
<br />
Nasgaïa s'est fixée un certain nombre d'objectifs précis. La distribution doit tenir sur un seul cdrom, sources incluses, et donc offrir un choix raisonné de programmes dans leur version la plus récente possible. Elle inclut également le dernier noyau stable, non patché et très modulaire, un support ext2, ext3 et reiserfs, devfs et devfsd, une organisation du système de fichiers claire et logique. Un programme d'installation et de configuration, alliant autant que faire se peut légèreté et efficacité, est prévu. Il reste cependant à écrire ou à trouver : diverses possibilités sont à l'étude à ce jour. Le système de paquets spécifique (les .nba) est déjà fonctionnel dans ses grandes lignes. Celui-ci facilite la gestion, installation, désinstallations des programmes sans toutefois gérer les dépendances qui seront signalées.<br />
<br />
Les programmes fournis sont presque exclusivement sous licence GPL, ou autres licences conformes à cet esprit, et accompagnés de leurs sources originales. Une sélection a été faite afin d'éviter au maximum les redondances inutiles et de ne proposer que ceux qui, à notre avis, offre le meilleur rapport simplicité / qualité / performance. Ces programmes sont installés en incluant leur aspect développement, comme si l'utilisateur les avait lui-même compilés. <br />Côté console on trouve notamment : ''vim, mc, sendmail, fetchmail, pine, w3m...'' Bref tout ce qu'il faut pour gérer confortablement son pc, se connecter ou encore effectuer des tâches réseau (firewall, passerelle, etc) ou de développement. Côté graphique les programmes précédents peuvent bien sûr tourner dans un xterm, un aterm ou encore un gnome-terminal puisque l'environnement de bureau Gnome est inclus dans Nasgaïa. Cet environnement y est d'ailleurs accompagné de quelques gestionnaires de fenêtres incontournables tels ''wmaker, e16, fluxbox ou icewm''. Pour les inconditionnels de twm, ils pourront aussi s'ils le souhaitent, continuer à l'utiliser. Dès lors, pour occuper dignement tous ces sympathiques gestionnaires, notons dans la liste des programmes au programme : ''nedit, rox-filer, sylpheed, galeon, mozilla, xchat, gimp, xmms, xcdroast, mplayer...'' Enfin la connexion internet devrait être simplifiée au maximum, Nasgaïa offrant notamment un support pour les cas particuliers les plus répandus tels que AOL avec pengaol ou l'ADSL speedtouch USB avec les drivers de B. Papillault, sans oublier bien sûr les modems classiques avec ppp. <br />Mais, vous l'avez sans doute remarqué, l'environnement de bureau KDE est le grand absent de ce qui précède. En effet les environnements Gnome et KDE offrent pour une large part les mêmes services ; dans ce cadre Gnome a été préféré pour des raisons d'universalité, de performances et parfois de licences. Cependant que les amateurs de KDE se rassurent, si celui-ci ne figure pas sur le cdrom, il devrait être téléchargeable sous forme de paquets nba et donc très facilement installable. D'autre part les outils de développement de Nasgaïa seront simplifiés et mis à disposition. Chacun pourra ainsi créer aisément ses propres paquets nba et, n'en doutons pas, se fera un plaisir de les mettre à la disposition de tous les Nasgaéens. Mais il faut bien l'avouer, cet aspect du programme Nasgaïa, par ailleurs très généreusement hébergé par la [http://tuxfamily.org Tux Family], souffre encore aujourd'hui d'un manque cruel : un serveur FTP !<br />
<br />
Bien sûr une documentation minimale accompagne tous ces jolis programmes. Les inénarrables pages man en français, quand elles existent. L'incontournable, indescriptible, seul et unique Léa-Book, pour répondre à toutes les questions concernant les aspects généraux de GNU/Linux. Un modeste Nasgaïa-Book (encore à rédiger, avis aux amateurs) traitant des points les plus spécifiques de Nasgaïa : installation, configuration, gestion des paquets...<br />
<br />
== Et vous ? ==<br />
<br />
Si ce qui précède n'a pas satisfait totalement votre curiosité mais l'a mise en éveil, tant mieux ! Nasgaïa évolue rapidement et, à vouloir être trop précis, il faudrait réécrire cet article chaque semaine. Vous souhaitez toutefois en savoir plus, connaître l'état d'avancement de ce projet, nous dire un petit bonjour ? Rendez-vous donc sur le site de [http://nasgaia.org Nasgaïa], consultez la page équipe, la charte, la liste des programmes, les forums de développement, enfin tout ce que vous voulez puis laissez nous un gentil message sur le forum Visiteurs. N'hésitez pas ! Une petite remarque, un simple avis peut nous être très utile, cela a déjà été plusieurs fois le cas. Vous aimeriez participer plus activement ? Quelles que soient vos compétences et le temps dont vous disposez votre aide est la bienvenue : rédacteur, graphiste, testeur, programmeur ou simple inspecteur des travaux finis ?<br />
<br />
A vous de choisir et à bientôt. <br /><u>Note</u> : cet article a été rédigé dans le cadre du partenariat entre Léa-Linux et Nasgaïa. Toute l'équipe de Nasgaïa remercie donc vivement son amie Léa pour son soutien et lui souhaite bonheur, prospérité et longue vie. <br /><u>Note de Léa</u> : houlala je suis toute rouge :-)<br />
<br />
<div class="merci">Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Marc le 02/06/2002.</div><br />
<br />
= Copyright =<br />
Copyright &copy; 02/06/2002, Marc<br />
{{CC-BY-NC-SA}}<br />
<br />
<br />
=Autres ressources=<br />
<br />
* [http://nasgaia.org Le site de Nasgaïa]</div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=Script_shell&diff=9148
Script shell
2005-10-14T17:59:48Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div>[[Category:Développer sous Linux]]<br />
= Programmation de Script: Une introduction =<br />
<br />
<div class="leatitre">Programmation de Script: Une introduction</div><div class="leapar">par Fred, correction et ajouts de Marc</div><div class="leadesc">Comment écrire de petits scripts permettant d'automatiser la réalisation de taches répétitives.</div><br />
----<br />
<br />
== Introduction ==<br />
<br />
Vous aurez envie d'écrire un script (petit programme écrit avec un langage simple : shell, perl ou autre) dès que vous aurez tapé dans un terminal quatre fois la même série de commandes et que vous vous apercevrez que vous êtes ammené à le refaire de nombreuses fois. <br />Un script est une suite d'instructions élémentaires qui sont éxécutées de façon séquencielle (les unes après les autres) par le langage de script. <br />Dans cet article nous nous limiterons à l'utilisation du shell comme langage, et en particulier à du shell <tt>bash</tt>. En guise de première introduction, vous pouvez lire ce qui concerne les commandes du shell dans l'article [http://lea-linux.org/admin/shell.php3 Le Shell et les Commandes]. Attention, n'espérez pas que le présent document constitue un manuel complet de programmation ! C'est une courte introduction qui nous l'espérons, vous permettra d'écrire de petits scripts qui vous rendront de précieux services.<br />
<br />
== Notions de base ==<br />
<br />
=== Mon premier script. ===<br />
<br />
Pour commencer, il faut savoir qu'un script est un fichier texte standard pouvant être créé par n'importe quel éditeur : [http://lea-linux.org/software/vi.php3 vi], [http://lea-linux.org/software/emacs.php3 emacs], kedit, gnotepad, ou autre. D'autre part, conventionnellement, un script commence par une ligne de commentaire contenant le nom du langage à utiliser pour interpréter ce script, soit dans notre cas : <tt>/bin/sh</tt> (on parle alors de "script shell"). Donc un script shell élémentaire pourrait être :<br />
<br />
<blockquote><tt><nowiki>#!/bin/sh</nowiki></tt></blockquote> <br />
<br />
<u>Note</u> : <tt>"#!"</tt> se prononce "''she bang''", soit "chi-bang". <br />Évidemment un tel script ne fait rien ! Changeons cela. La commande qui affiche quelque chose à l'écran est <tt>echo</tt>. Donc pour créer le script <tt>bonjour_monde</tt> nous pouvons écrire :<br />
<br />
<blockquote><tt><nowiki>#!/bin/sh</nowiki></tt><br /><tt>echo "Bonjour, Monde !"</tt><br /><tt>echo "un premier script est né."</tt></blockquote><br />
<br />
Comment on l'éxécute ? C'est simple il suffit de faire :<br />
<br />
<blockquote><tt>[user@becane user]$ '''sh bonjour_monde'''</tt><br /><tt>Bonjour, Monde !</tt><br /><tt>un premier script est né.</tt><br /><tt>[user@becane user]$ <font color="red">_</font></tt></blockquote><br />
<br />
C'est pas cool, vous préféreriez taper quelque chose comme :<br />
<br />
<blockquote><tt>[user@becane user]$ '''./bonjour_monde'''</tt><br /><tt>Bonjour, Monde !</tt><br /><tt>un premier script est né.</tt><br /><tt>[user@becane user]$ _</tt></blockquote><br />
<br />
C'est possible si vous avez au préalable rendu votre script exécutable par la commande :<br />
<br />
<blockquote><tt>[user@becane user]$ '''chmod +x bonjour_monde'''</tt><br /><tt>[user@becane user]$ '''./bonjour_monde'''</tt><br /><tt>Bonjour, Monde !</tt><br /><tt>un premier script est né.</tt><br /><tt>[user@becane user]$ _</tt></blockquote> <br />
<br />
<u>Résumons</u> : un script shell commence par : <tt><nowiki>#!/bin/sh</nowiki></tt>, il contient des commandes du shell et est rendu exécutable par <tt>chmod +x</tt>.<br />
<br />
=== Quelques conseils concernant les commentaires ===<br />
<br />
Dans un shell-script, est considéré comme un commentaire tout ce qui suit le caractère # et ce, jusqu'à la fin de la ligne. <br />Usez et abusez des commentaires : lorsque vous relirez un script 6 mois après l'avoir écrit, vous serez bien content de l'avoir documenté. Un programme n'est jamais trop documenté. Par contre, il peut être mal documenté ! Un commentaire est bon lorsqu'il décrit pourquoi on fait quelque chose, pas quand il décrit ce que l'on fait. Exemple :<br />
<br />
<blockquote><tt><nowiki>#!/bin/sh</nowiki></tt><br /><tt><nowiki># pour i parcourant tous les fichiers,</nowiki></tt><br /><tt>for i in * ; do</tt><br /><tt><nowiki># copier le fichier vers .bak</nowiki></tt><br /><tt> cp $i $i.bak</tt><br /><tt><nowiki># fin pour</nowiki></tt><br /><tt>done</tt></blockquote><br />
<br />
Que fait le script ? Les commentaires ne l'expliquent pas ! Ce sont de mauvais commentaire. Par contre :<br />
<br />
<blockquote><tt><nowiki>#!/bin/sh</nowiki></tt><br /><tt><nowiki># on veut faire un copie de tous les fichiers</nowiki></tt><br /><tt>for i in * ; do</tt><br /><tt><nowiki># sous le nom *.bak</nowiki></tt><br /><tt> cp $i $i.bak</tt><br /><tt>done</tt></blockquote><br />
<br />
Là, au moins, on sait ce qu'il se passe. (Il n'est pas encore important de connaître les commandes de ces deux fichiers.)<br />
<br />
=== Le passage de paramètres ===<br />
<br />
Un script ne sera, en général, que d'une utilisation marginale si vous ne pouvez pas modifier son comportement d'une manière ou d'une autre. On obtient cet effet en "passant" un (ou plusieurs) paramètre(s) au script via la ligne de commande. Voyons comment faire cela. Soit le script <tt>essai01</tt><nowiki>: </nowiki><br />
<br />
<blockquote><tt><nowiki>#!/bin/sh</nowiki></tt><br /><tt>echo le paramètre \$1 est \"$1\"</tt><br /><tt>echo le paramètre \$2 est \"$2\"</tt><br /><tt>echo le paramètre \$3 est \"$3\"</tt></blockquote><br />
<br />
Que fait-il ? Il affiche, les uns après les autres les trois premiers paramètres du script, donc si l'on tappe :<br />
<br />
<blockquote><tt>$ '''./essai01 paramètre un'''</tt><br /><tt>le paramètre $1 est "paramètre"</tt><br /><tt>le paramètre $2 est "un"</tt><br /><tt>le paramètre $3 est ""</tt><br /><tt>$ _</tt></blockquote><br />
<br />
Donc, les variables <tt>$1</tt>, <tt>$2</tt> ... <tt>$9</tt> contiennent les "mots" numéro 1, 2 ... 9 de la ligne de commande. Attention : par "mot" on entend ensemble de caractères ne contenant pas de caractères de séparations. Les caractères de séparation sont l'espace, la tabulation, le point virgule.<br />
<br />
Vous avez sans doute remarqué que j'ai utilisé les caractères : <tt>\$</tt> à la place de <tt>$</tt> ainsi que <tt>\"</tt> à la place de <tt>"</tt> dans le script. Pour quelle raison ? La raison est simple, si l'on tape : <tt>echo "essai"</tt> on obtient : <tt>essai</tt>, si l'on veut obtenir <tt>"essai"</tt> il faut dire à <tt>echo</tt> que le caractère <tt>"</tt> n'indique pas le début d'une chaîne de caractère (comme c'est le comportement par défaut) mais que ce caractère fait partie de la chaîne : on dit que l'on "échappe" ou "protège" le caractère <tt>"</tt> en tapant <tt>\"</tt>. En "échappant" le caractère <tt>\</tt> (par <tt>\\</tt>) on obtient le caractère <tt>\</tt> sans signification particulière. On peut dire que le caractère <tt>\</tt> devant un autre lui fait perdre sa signification particulière s'il en a une, ne fait rien si le caractère qui suit <tt>\</tt> n'en a pas.<br />
<br />
Maintenant, essayons de taper :<br />
<br />
<blockquote><tt>$ '''./essai01 *'''</tt><br /><tt>le paramètre $1 est "Mail"</tt><br /><tt>le paramètre $2 est "essai01"</tt><br /><tt>le paramètre $3 est "nsmail"</tt><br /><tt>$ _</tt></blockquote><br />
<br />
(Le résultat doit être sensiblement différent sur votre machine). Que s'est-il passé ? Le shell a remplacé le caractère * par la liste de tous les fichiers non cachés présents dans le répertoire actif. En fait, toutes les substitutions du shell sont possibles ! C'est le shell qui "substitue" aux paramètres des valeurs étendues par les caractères spéciaux : * (toute suite de caractères) ? (un caractère grave quelconque), [dze] (l'un des caractères d, z ou e), [d-z] (les caractères de 'd' à 'z')... Autre exemple :<br />
<br />
<blockquote><tt>$ '''./essai01 \*'''</tt><br /><tt>le paramètre $1 est "*"</tt><br /><tt>le paramètre $2 est ""</tt><br /><tt>le paramètre $3 est ""</tt><br /><tt>$ _</tt></blockquote><br />
<br />
Hé oui, on a "échappé" le caractère <tt><nowiki>*</nowiki></tt> donc il a perdu sa signification particulière : il est redevenu un simple <tt><nowiki>*</nowiki></tt>.<br />
<br />
C'est bien, me direz vous, mais si je veux utiliser plus de dix paramètres ? Il faut utiliser la commande shift ; à titre d'exemple voici le script <tt>essai02</tt> :<br />
<br />
<blockquote><tt><nowiki>#!/bin/sh</nowiki></tt><br /><tt>echo le paramètre 1 est \"$1\"</tt><br /><tt>shift</tt><br /><tt>echo le paramètre 2 est \"$1\"</tt><br /><tt>shift</tt><br /><tt>echo le paramètre 2 est \"$1\"</tt><br /><tt>shift</tt><br /><tt>echo le paramètre 4 est \"$1\"</tt><br /><tt>shift</tt><br /><tt>echo le paramètre 5 est \"$1\"</tt><br /><tt>shift</tt><br /><tt>echo le paramètre 6 est \"$1\"</tt><br /><tt>shift</tt><br /><tt>echo le paramètre 7 est \"$1\"</tt><br /><tt>shift</tt><br /><tt>echo le paramètre 8 est \"$1\"</tt><br /><tt>shift</tt><br /><tt>echo le paramètre 9 est \"$1\"</tt><br /><tt>shift</tt><br /><tt>echo le paramètre 10 est \"$1\"</tt><br /><tt>shift</tt><br /><tt>echo le paramètre 11 est \"$1\"</tt></blockquote><br />
<br />
Si vous tapez :<br />
<br />
<blockquote><tt>$ '''./essai02 1 2 3 4 5 6 7 8 9 10 11 12 13'''</tt><br /><tt>le paramètre 1 est "1"</tt><br /><tt>le paramètre 2 est "2"</tt><br /><tt>le paramètre 2 est "3"</tt><br /><tt>le paramètre 4 est "4"</tt><br /><tt>le paramètre 5 est "5"</tt><br /><tt>le paramètre 6 est "6"</tt><br /><tt>le paramètre 7 est "7"</tt><br /><tt>le paramètre 8 est "8"</tt><br /><tt>le paramètre 9 est "9"</tt><br /><tt>le paramètre 10 est "10"</tt><br /><tt>le paramètre 11 est "11"</tt><br /><tt>$ _</tt></blockquote><br />
<br />
A chaque appel de <tt>shift</tt> les paramètres sont décalés d'un numéro : le paramètre 2 devient le paramètre 1, 3 devient 2, etc... Évidemment le paramètre 1 est perdu par l'appel de shift : vous devez donc vous en servir avant d'appeler <tt>shift</tt> (ou le sauvegarder dans une variable).<br />
<br />
=== Les variables ===<br />
<br />
Le passage des paramètres nous a montré l'utilisation de "noms" particuliers : <tt>$1</tt>, <tt>$2</tt> etc. Ce sont les substitutions des variables <tt>1</tt>, <tt>2</tt>, etc. par leur valeurs. Mais vous pouvez définir et utiliser n'importe quel nom. Attention toutefois à ne pas confondre le nom d'une variable (notée par exemple <tt>machin</tt>) et son contenu (noté dans cas <tt>$machin</tt>). Vous connaissez peut-être la variable <tt>PATH</tt> (attention, le shell différencie les majuscules des minuscules) qui contient la liste des répertoires (séparés par des <tt>":"</tt>) dans lesquels il doit rechercher les programmes. Si dans un script vous tapez :<br />
<br />
<blockquote><tt>1:#!/bin/sh</tt><br /><tt>2:PATH=/bin # PATH contient /bin</tt><br /><tt>3:PATH=PATH:/usr/bin # PATH contient PATH:/usr/bin</tt><br /><tt>4:PATH=/bin # PATH contient /bin</tt><br /><tt>5:PATH=$PATH:/usr/bin # PATH contient /bin:/usr/bin</tt></blockquote><br />
<br />
(Les numéros ne sont là que pour repérer les lignes, il ne faut pas les taper) <br />La ligne 3 est très certainement une erreur, à gauche du signe <tt>"="</tt> il faut une variable (donc un nom sans <tt>$</tt>) mais à droite de ce même signe il faut une valeur, et la valeur que l'on a mis est <tt>"PATH:/usr/bin"</tt> : il n'y a aucune substitution à faire. <br />Par contre la ligne 5 est certainement correcte : à droite du <tt>"="</tt> on a mis <tt>"$PATH:/usr/bin"</tt>, la valeur de <tt>$PATH</tt> étant <tt>"/bin"</tt>, la valeur après substitution par le shell de <tt>"$PATH:/usr/bin"</tt> est <tt>"/bin:/usr/bin"</tt>. Donc, à la fin de la ligne 5, la valeur de la variable <tt>PATH</tt> est <tt>"/bin:/usr/bin"</tt>.<br />
<br />
Attention : il ne doit y avoir aucun espace de part et d'autre du signe <tt>"="</tt>.<br />
<br />
<u>Résumons</u> : <tt>MACHIN</tt> est un nom de variable que l'on utilise lorsque l'on a besoin d'un nom de variable (mais pas de son contenu), et <tt>$MACHIN</tt> est le contenu de la variable <tt>MACHIN</tt> que l'on utilise lorsque l'on a besoin du contenu de cette variable.<br />
<br />
=== Variables particulières ===<br />
<br />
Il y a un certain nombre de variables particulières, en voici quelques unes :<br />
<br />
* la variable <tt><nowiki>*</nowiki></tt> (dont le contenu est <tt>$*</tt>) contient l'ensemble de tous les "mots" qui on été passé au script (c'est à dire toute la ligne de commande, sans le nom du script).<br />
* la variable <tt><nowiki>#</nowiki></tt> contient le nombre de paramètres (<tt>$#</tt>) qui ont été passés au programme.<br />
* la variable <tt></tt> (zéro) contient le nom du script (ou du lien si le script a été appelé depuis un lien).<br />
<br />
Il y en a d'autres, moins utilisées : allez voir la man page de <tt>bash</tt>.<br />
<br />
=== Saisir la valeur d'une variable ===<br />
<br />
Les paramètres permettent à l'utilisateur d'agir sur le déroulement du script avant son exécution. Mais il est aussi souvent intéressant de pouvoir agir sur le déroulement du script lors de son exécution, c'est ce que permet la commande : <tt>read nom_variable</tt>. Dans cette commande vous pouvez bien sûr remplacer nom_variable par le nom de variable qui vous convient le mieux. Voici un exemple simple.<br />
<br />
<blockquote><tt><nowiki>#!/bin/sh</nowiki></tt><br /><tt>echo -n "Entrez votre prénom : "</tt><br /><tt>read prenom</tt><br /><tt>echo -n "Entrez votre nom de login : "</tt><br /><tt>read nomlogin</tt><br /><tt>echo "Le nom de login de $prenom est $nomlogin."</tt></blockquote><br />
<br />
Ce script se déroule ainsi :<br />
<br />
<blockquote><tt>'''./essai02bis<br /> '''Entrez votre prénom : '''Marc<br /> '''Entrez votre nom de login : '''spoutnik<br /> '''Le nom de login de Marc est spoutnik.</tt></blockquote><br />
<br />
Lors du déroulement du script vous devez valider vos entrées en appuyant sur la touche "Entrée".<br />
<br />
=== Arithmétique ===<br />
<br />
Vous vous doutez bien qu'il est possible de faire des calculs avec le shell. En fait, le shell ne "sait" faire que des calculs sur les nombres entiers (ceux qui n'ont pas de virgules ;-). Pour faire un calcul il faut encadrer celui-ci de : <tt>$(( un calcul ))</tt> ou <tt>$[ un calcul ]</tt>. Exemple, le script essai03 :<br />
<br />
<blockquote><tt><nowiki>#!/bin/sh</nowiki></tt><br /><tt>echo 2+3*5 = $((2+3*5))</tt><br /><tt>MACHIN=12</tt><br /><tt>echo MACHIN*4 = $[$MACHIN*4]</tt></blockquote><br />
<br />
Affichera :<br />
<br />
<blockquote><tt>$ '''sh essai03'''</tt><br /><tt>2+3*5 = 17</tt><br /><tt>MACHIN*4 = 48</tt></blockquote><br />
<br />
Vous remarquerez que le shell respecte les priorités mathématiques habituelles (il fait les multiplications avant les additions !). L'opérateur puissance est <tt>"**"</tt> (ie : 2 puissance 5 s'écrit : <tt>2**5</tt>). On peut utiliser des parenthèses pour modifier l'ordre des calculs. <br /><br />
<br />
== Les instructions de contrôle de scripts ==<br />
<br />
Les instructions de contrôle du shell permettent de modifier l'exécution purement séquencielle d'un script. Jusqu'à maintenant, les scripts que nous avons créés n'étaient pas très complexes. Ils ne pouvaient de toute façon pas l'être car nous ne pouvions pas modifier l'ordre des instructions, ni en répéter.<br />
<br />
=== L'exécution conditionnelle ===<br />
<br />
Lorsque vous programmerez des scripts, vous voudrez que vos scripts fassent une chose si une certaine condition est remplie et autre chose si elle ne l'est pas. La construction de bash qui permet cela est le fameux test : <tt>if then else fi</tt>. Sa syntaxe est la suivante (la partie <tt>else...</tt> en italique est optionnelle) :<br />
<br />
<blockquote><tt>'''if''' <test> ; '''then'''</tt><br /><tt> <instruction 1></tt><br /><tt> <instruction 2></tt><br /><tt> ...</tt><br /><tt> <instruction n></tt><br />''<tt>else</tt>''<br />''<tt> <instruction n+1></tt>''<br />''<tt> ...</tt>''<br />''<tt> <instruction n+p></tt>''<br />'''<tt>fi</tt>'''</blockquote><br />
<br />
Il faut savoir que tous les programmes renvoient une valeur. Cette valeur est stockée dans la variable <tt>?</tt> dont la valeur est, rappelons le : "<tt>$?</tt>". <br />Pour le shell une valeur nulle est synonyme de VRAI et une valeur non nulle est synonyme de FAUX (ceci parce que, en général les programmes renvoie zéro quand tout c'est bien passé et un code d'erreur (numéro non nul) quand il s'en est produit une).<br />
<br />
Il existe deux programmes particuliers : <tt>false</tt> et <tt>true</tt>. <tt>true</tt> renvoie toujours 0 et <tt>false</tt> renvoie toujours 1. Sachant cela, voyons ce que fait le programme suivant :<br />
<br />
<blockquote><tt><nowiki>#!/bin/sh</nowiki></tt><br /><tt>if true ; then</tt><br /><tt> echo Le premier test est VRAI($?)</tt><br /><tt>else</tt><br /><tt> echo Le premier test est FAUX($?)</tt><br /><tt>fi</tt><br />
<br />
<tt>if false ; then</tt><br /><tt> echo Le second test est VRAI($?)</tt><br /><tt>else</tt><br /><tt> echo Le second test est FAUX($?)</tt><br /><tt>fi</tt><br />
<br />
</blockquote><br />
<br />
Affichera :<br />
<br />
<blockquote><tt>$ ./test</tt><br /><tt>Le premier test est VRAI(0)</tt><br /><tt>Le second test est FAUX(1)</tt><br /><tt>$ _</tt></blockquote><br />
<br />
On peut donc conclure que l'instruction <tt>if ... then ... else ... fi</tt>, fonctionne de la manière suivante : si ('''if''' en anglais) le test est VRAI(0) alors ('''then''' en anglais) le bloc d'instructions compris entre le <tt>then</tt> et le <tt>else</tt> (ou le <tt>fi</tt> en l'absence de <tt>else</tt>) est exécuté, sinon ('''else''' en anglais) le test est FAUX(différent de 0)) et on exécute le bloc d'instructions compris entre le <tt>else</tt> et le <tt>fi</tt> si ce bloc existe.<br />
<br />
Bon, évidemment, des tests de cet ordre ne paraissent pas très utiles. Voyons maintenant de vrais tests.<br />
<br />
=== Les tests ===<br />
<br />
Un test, nous l'avons vu, n'est rien de plus qu'une commande standard. Une des commandes standard est '<tt>test</tt>', sa syntaxe est un peu complexe, je vais la décrire avec des exemples.<br />
<br />
* si l'on veut tester l'existence d'un répertoire <tt><machin></tt>, on tapera : <tt>test -d <machin></tt> ('d' comme '''''<font size="+1">d</font>'''irectory'')<br />
* si l'on veut tester l'existence d'un fichier <tt><machin></tt>, on tapera : <tt>test -f <machin></tt> ('f' comme '''''<font size="+1">f</font>'''ile'')<br />
* si l'on veut tester l'existence d'un fichier ou répertoire <tt><machin></tt>, on tapera : <tt>test -e <machin></tt> ('e' comme '''''<font size="+1">e</font>'''xist'')<br />
<br />
Pour plus d'information faites : <tt>man test</tt>.<br />
<br />
On peut aussi combiner deux tests par des opérations logiques : 'ou' correspond à <tt>-o</tt> ('o' comme '''''<font size="+1">o</font>'''r''), 'et' correspond à <tt>-a</tt> ('a' comme '''''<font size="+1">a</font>'''nd'') (à nouveau allez voir la man page), exemple :<br />
<br />
<blockquote><tt>test -x /bin/sh -a -d /etc</tt></blockquote><br />
<br />
Cette instruction teste l'existence de l'éxécutable <tt>/bin/sh</tt> (<tt>-x /bin/sh</tt>) et (<tt>-a</tt>) la présence d'un répertoire <tt>/etc</tt> (<tt>-d /etc</tt>).<br />
<br />
On peut remplacer la commande <tt>test <un test></tt> par <tt>[ <un test> ]</tt> qui est plus lisible, exemple :<br />
<br />
<blockquote><tt>if [ -x /bin/sh ] ; then</tt> # ('x' comme ''e'''<font size="+1">x</font>'''ecutable'') <br /><tt> echo /bin/sh est exécutable. C\'est bien.</tt><br /><tt>else</tt><br /><tt> echo /bin/sh n\'est pas exécutable.</tt><br /><tt> echo Votre système n\'est pas normal.</tt><br /><tt>fi</tt></blockquote><br />
<br />
Toujours avec les crochets de <tt>test</tt>, si vous n'avez qu'une seule chose à faire en fonction du résultat d'un test, alors vous pouvez utiliser la syntaxe suivante :<br /><br />
<br />
<blockquote><tt>[ -x /bin/sh ] && echo /bin/sh est exécutable.</tt><br /> ou encore :<br /><tt>[ -x /bin/sh ] || echo /bin/sh n\'est pas exécutable.</tt><br /> </blockquote><br />
<br />
L'affichage du message est effectué, dans le premier cas que si le test est vrai et dans le second cas, que si le test est faux. Dans l'exemple on teste si /bin/sh est un fichier exécutable.<br /> Cela allége le script sans pour autant le rendre illisible, si cette syntaxe est utilisée à bon essient.<br />
<br />
<br />Mais il n'y a pas que la commande <tt>test</tt> qui peut être employée. Par exemple, la commande <tt>grep</tt> renvoie 0 quand la recherche a réussi et 1 quand la recherche a échoué. <br />Par exemple :<br />
<br />
<blockquote><tt>if grep -E "^frederic:" /etc/passwd > /dev/null ; then</tt><br /><tt> echo L\'utilisateur frederic existe.</tt><br /><tt>else</tt><br /><tt> echo L'utilisateur frederic n\'existe pas.</tt><br /><tt>fi</tt></blockquote><br />
<br />
Cette série d'instruction teste la présence de l'utilisateur <tt>frederic</tt> dans le fichier <tt>/etc/passwd</tt>. Vous remarquerez que l'on a fait suivre la commande <tt>grep</tt> d'une redirection vers <tt>/dev/null</tt> pour que le résultat de cette commande ne soit pas affiché : c'est une utilisation classique. Ceci explique aussi l'expression : "Ils sont tellement intéressants, tes mails, que je les envoie vers /dev/null" ;-).<br />
<br />
=== Faire quelque chose de différent suivant la valeur d'une variable ===<br />
<br />
L'instruction <tt>case ... esac</tt> permet de modifier le déroulement du script selon la valeur d'un paramètre ou d'une variable. On l'utilise le plus souvent quand les valeurs possibles sont en nombre restreint et peuvent être prévues. Les imprévus peuvent alors être représentés par le signe *. Demandons par exemple à l'utilisateur s'il souhaite afficher ou non les fichiers cachés du répertoire en cours.<br />
<br />
<blockquote><tt><nowiki>#!/bin/sh</nowiki><br /> # pose la question et récupère la réponse<br /> echo "Le contenu du répertoire courant va être affiché."<br /> echo -n "Souhaitez-vous afficher aussi les fichiers cachés (oui/non) : "<br /> read reponse<br /> # agit selon la réponse<br /> case $reponse in<br /> oui)<br /> clear<br /> ls -a;;<br /> non)<br /> ls;;<br /> *)<br /> echo "Erreur, vous deviez répondre par oui ou par non.";;<br /> esac</tt></blockquote><br />
<br />
Seules les réponses "oui" et "non" sont réellement attendues dans ce script, toute autre réponse engendrera le message d'erreur. On notera qu'ici l'écran est effacé avant l'affichage dans le cas d'une réponse positive, mais pas dans celui d'une réponse négative. Lorsque vous utilisez l'instruction <tt>case ... esac</tt>, faites bien attention de ne pas oublier les doubles points-virgules terminant les instructions de chacun des cas envisagés.<br />
<br />
=== Faire la même chose pour tous les éléments d'une liste ===<br />
<br />
Lorsqu'on programme, on est souvent amené à faire la même chose '''pour tous''' les élément d'une liste. Dans un shell script, il est bien évidemment possible de ne pas réécrire dix fois la même chose. On dira que l'on fait une boucle. L'instruction qui réalise une boucle est<br />
<br />
<blockquote><tt>for <variable> in <liste de valeurs pour la variable> ; do</tt><br /><tt> <instruction 1></tt><br /><tt> ...</tt><br /><tt> <instruction n></tt><br /><tt>done</tt></blockquote><br />
<br />
Voyons comment ça fonctionne. Supposons que nous souhaitions renommer tous nos fichiers *.tar.gz en *.tar.gz.old, nous taperons le script suivant :<br />
<br />
<blockquote><tt><nowiki>#!/bin/sh</nowiki></tt><br /><tt><nowiki># I prend chacune des valeurs possibles correspondant</nowiki></tt><br /><tt><nowiki># au motif : *.tar.gz</nowiki></tt><br /><tt>for I in *.tar.gz ; do</tt><br /><tt> # tous les fichiers $I sont renommés $I.old</tt><br /><tt> echo "$I -> $I.old"</tt><br /><tt> mv $I $I.old</tt><br /><tt><nowiki># on finit notre boucle</nowiki></tt><br /><tt>done</tt></blockquote><br />
<br />
Simple, non ? Un exemple plus complexe ? Supposons que nous voulions parcourir tous les sous-répertoires du répertoire courant pour faire cette même manipulation. Nous pourrons taper :<br />
<br />
<blockquote><tt> 1:#!/bin/sh</tt><br /><tt> 2:for REP in `find -type d` ; do</tt><br /><tt> 3: for FICH in $REP/*.tar.gz ; do</tt><br /><tt> 4: if [ -f $FICH ] ; then</tt><br /><tt> 5: mv $FICH $FICH.old</tt><br /><tt> 6: else</tt><br /><tt> 7: echo On ne renomme pas $FICH car ce n\'est pas un répertoire</tt><br /><tt> 8: fi</tt><br /><tt> 9: done</tt><br /><tt>10:done</tt></blockquote> <br />
<br />
<u>Explications</u> : dans le premier 'for', on a précisé comme liste : <tt>`find -type d`</tt> (attention au sens des apostrophes, sur un clavier azerty français, on obtient ce symbole en appuyant sur <tt>ALTGR+é</tt>, ce ne sont pas des simples quotes '). <br />Lorsque l'on tape une commande entre apostrophes inverses, le shell exécute d'abord cette commande, et remplace l'expression entre apostrophes inverses par la sortie standard de cette commande (ce qu'elle affiche à l'écran). <br />Donc, dans le cas qui nous intéresse, la liste est le résultat de la commande <tt>find -type d</tt>, c'est à dire la liste de tous les sous-répertoires du répertoire courant. <br />Ainsi, en ligne 2, on fait prendre à la variable REP le nom de chacun des sous-répertoires du répertoire courant, puis (en ligne 3) on fait prendre à la variable FICH le nom de chacun des fichiers .tar.gz de $REP (un des sous-répertoires), puis si $FICH est un fichier, on le renomme, sinon on affiche un avertissement.<br />
<br />
<u>Remarque</u> : ce n'est pas le même fonctionnement que la boucle <tt>for</tt> d'autres langage (le pascal, le C ou le basic par exemple).<br />
<br />
=== Faire une même chose tant qu'un certaine condition est remplie ===<br />
<br />
Pour faire une certaine chose '''tant qu''''une condition est remplie, on utilise un autre type de boucle :<br />
<br />
<blockquote><tt>while <un test> ; do</tt><br /><tt> <instruction 1></tt><br /><tt> ...</tt><br /><tt> <instruction n></tt><br /><tt>done</tt></blockquote><br />
<br />
Supposons, par exemple que vous souhaitiez afficher les 100 premiers nombres (pour une obscure raison), alors vous taperez :<br />
<br />
<blockquote><tt>i=0</tt><br /><tt>while [ $i -lt 100 ] ; do</tt><br /><tt> echo $i</tt><br /><tt> i=$[$i+1]</tt><br /><tt>done</tt></blockquote> <br />
<br />
<u>Remarque</u> : <tt>-lt</tt> signifie "'''<tt><font color="#ff0000">l</font></tt>'''esser '''<tt><font color="#ff0000">t</font></tt>'''han" ou "plus petit que" (et <tt>-gt</tt> signifie "plus grand", ou "'''<tt><font color="#ff0000">g</font></tt>'''reater '''<tt><font color="#ff0000">t</font></tt>'''han").<br />
<br />
Ici, on va afficher le contenu de <tt>i</tt> et lui ajouter 1 tant que <tt>i</tt> sera (<tt>-lt</tt>) plus petit que 100. Remarquez que 100 ne s'affiche pas, car <tt>-lt</tt> est "plus petit", mais pas "plus petit ou égal" (dans ce cas, utilisez <tt>-le</tt> et <tt>-ge</tt> pour "plus grand ou égal").<br />
<br />
=== Refaire à un autre endroit la même chose ===<br />
<br />
Souvent, vous voudrez refaire ce que vous venez de taper autre part dans votre script. Dans ce cas il est inutile de retaper la même chose, préférez utiliser l'instruction <tt>function</tt> qui permet de réutiliser une portion de script (on dit : une "'''fonction'''"). Voyons un exemple :<br />
<br />
<blockquote><tt><nowiki>#!/bin/sh</nowiki></tt><br /><tt>function addpath ()</tt><br /><tt>{</tt><br /><tt> if echo $PATH | grep -v $1 >/dev/null; then</tt><br /><tt> PATH=$PATH:$1;</tt><br /><tt> fi;</tt><br /><tt> PATH=`echo $PATH|sed s/::/:/g`</tt><br /><tt>}</tt><br />
<br />
<tt>addpath /opt/apps/bin</tt><br /><tt>addpath /opt/office52/program</tt><br /><tt>addpath /opt/gnome/bin</tt><br />
<br />
</blockquote><br />
<br />
Au début, nous avons défini une fonction nommée <tt>addpath</tt> dont le but est d'ajouter le premier argument (<tt>$1</tt>) de la fonction <tt>addpath</tt> à la varaible <tt>PATH</tt> si ce premier argument n'est pas déjà présent (<tt>grep -v $1</tt>) dans la variable <tt>PATH</tt>, ainsi que supprimer les chemins vides (<tt>sed s/::/:/g</tt>) de PATH. <br />Ensuite, nous exécutons cette fonction pour trois arguments : /opt/apps/bin, /opt/office52/bin et /opt/gnome/bin.<br />
<br />
En fait, une fonction est seulement un script écrit à l'intérieur d'un script. Les fonctions permettent surtout de ne pas multiplier les petits scripts, ainsi que de partager des variables sans se préoccuper de la clause <tt>export</tt> mais cela constitue une utilisation avancée du shell, nous n'irons pas plus loin dans cet article.<br />
<br />
<u>Remarque</u> : le mot <tt>function</tt> peut être omis, mais son utilisation facilite la lecture du script.<br />
<br />
=== Autres types de répétitions. ===<br />
<br />
Il existe d'autres types de répétitions, mais nous ne nous en occuperons pas dans cet article, je vous conseille la lecture, forcément profitable, de la "man page" de bash (<tt>man bash</tt>).<br />
<br />
À vous de jouer !<br />
<br />
<div class="merci">Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Frédéric Bonnaud le 29/08/2000.</div><br />
<br />
= Copyright =<br />
Copyright &copy; 29/08/2000, Frédéric Bonnaud<br />
{{CC-BY-NC-SA}}<br />
<br />
<br />
=Autres ressources=<br />
* [http://jipe.homelinux.org/trucs_bash.html Pour aller plus loin...]</div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=GD&diff=9147
GD
2005-10-14T17:59:47Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div>[[Category:Développer sous Linux]]<br />
= Utiliser la librairie gd =<br />
<br />
<div class="leatitre">Utiliser la librairie gd</div><div class="leapar">par [mailto:xgarreau@club-internet.fr Xavier GARREAU (alaide)]</div><div class="leadesc">Vous avez sûrement déjà vu ou utilisé la librairie gd. En effet, si vous créez les statistiques de votre serveur web avec webalizer ou si vous avez déjà généré des images avec php, vous avez déjà bénéficié des bienfaits de cette librairie. Il s'agit d'une librairie permettant de générer des images dans un programme. Initialement gd est écrite pour le C mais il existe des portages pour perl, tcl, pascal, haskell. Bien évidemment, gd est utilisable depuis php.</div><br />
----<br />
<br />
== Introduction ==<br />
<br />
=== Présentation ===<br />
<br />
'''Traduction de la présentation de gd1.8.3 sur le site officiel.'''<br />
<br />
'' " gd1.8.3 permet la création d'images aux formats png, jpeg et wbmp, mais pas gif. C'est une bonne chose, png est un format plus compact, et la "full compression" est permise. le format JPEG est bien pour les images photographiques et est plus compatible avec les browsers actuels que le format png. le format WBMP sert aux appareils sans fils (ndt: applications wap) mais pas aux browsers classiques. Le code existant basé sur d'anciennes versions de gd qui prenaient en charge le format gif devra être modifié. Il faudra utiliser gdImagePng ou gdImageJpeg en lieu et place des appels à gdImageGif. Ne nous demandez pas de vous fournir d'anciennes versions de gd. Unisys possède une licence sur l'algorithme de compression LZW qui est utilisé pour générer les "images GIF compressées". La meilleure solution est d'adopter des formats modernes, libres, bien compressés tels que PNG et JPEG autant que possible et le plus tôt sera le mieux. " ''<br />'''Nota :''' Cet article est basé sur la version 1.8.3 de la librairie gd.<br />
<br />
=== Il vous faut ===<br />
<br />
Pour installer la version minimale de gd1.8.3 vous devez avoir sur votre système (les librairies + les .h):<br />
<br />
* la librairie mathématique (libm)<br />
* la librairie libpng pour les images PNG<br />
* la librairie de compression zip (libz)<br />
<br />
Si vous désirez inclure le support du format jpeg, vous devez également avoir la librairie jpeg6b ou supérieure.<br /> Si vous désirez inclure le support des TrueTypeFonts, vous devez également avoir la librairie Freetype et quelques polices ttf.<br /> Si vous désirez inclure le support de chargement d'images XPM, vous devez avoir X et la librairie XPM sur votre système.<br /><br />
<br />
== Préparatifs ==<br />
<br />
=== Trouver le tout ===<br />
<br />
Sur ma machine, j'avais déjà toutes les librairies et fichiers .h requis (sauf gd naturellement et freetype) mais ça ne sera peut être pas le cas pour tout le monde. J'ai donc regroupé ci-dessous les emplacements des choses dont vous pourriez avoir besoin, y compris gd bien sûr.<br />
<br />
* gd : http://www.boutell.com/gd/ (homepage)<br /> ftp://ftp.boutell.com/pub/boutell/gd/gd-1.8.3.tar.gz<br /> ou par http : http://www.boutell.com/gd/http/gd-1.8.3.tar.gz<br />
* zlib : http://www.info-zip.org/pub/infozip/zlib/ (homepage)<br /> http://www.gzip.org/zlib.tar.gz<br />
* png : http://www.libpng.org/pub/png/ (homepage)<br /> http://www.libpng.org/pub/png/src/libpng-1.0.8.tar.gz<br />
* freetype : http://www.freetype.org/<br />
<br />
=== Compilation et installation ===<br />
<br />
Vous avez à ce stade compilé et installé les pré-requis. Nous sommes donc prêts à aller plus avant.<br /> Commencez par vous placer dans le répertoire où vous avez placé l'archive de gd puis tapez <code>tar xvfz gd-1.8.3.tar.gz</code>. Cela vous créé un répertoire gd-1.8.3. Débarrassez vous de l'archive éventuellement en tapant <code>rm -f gd-1.8.3.tar.gz</code>.<br /> Placez vous dans le répertoire en tapant <code>cd gd-1.8.3</code>. Editez le makefile en fonction des librairies dont vous disposez et de leurs emplacements.<br /><br />
<br />
1. Mettez un ''''<nowiki>#</nowiki>'''' devant les lignes commençant par LIBS puis tapez la vôtre comme suit :<br /><code>LIBS=-lm -lgd -lpng -lz [-ljpeg] [-lttf] [-lXpm -lX11]</code><br /> Expliquons ce que les options sont :<br />
<br />
* -lm pour la librairie mathématique '''obligatoire'''<br />
* -lgd pour la librairie gd.'''obligatoire'''<br />
* -lpng pour générer des images png. '''obligatoire pour les images PNG'''<br />
* -ljpeg pour générer des images jpeg. '''très conseillée si vous l'avez'''<br />
* -lz pour la compression des images. '''obligatoire pour les images PNG'''<br />
* -lttf pour le support des polices truetype. '''facultatif'''<br />
* -lXpm pour le support des images XPM. '''facultatif'''<br />
* -lX11 pour le support des images XPM. '''facultatif mais obligatoire pour les images XPM'''<br />
<br />
En clair, la ligne libs minimale pour réaliser des images png est <code>LIBS=-lm -lgd -lpng -lz</code>. C'est ce qui est saisi par défaut donc si cela vous va, ne changez rien à cette ligne.<br />
<br />
2. Editez les lignes INCLUDEDIRS et LIBDIRS si vos librairies ne se trouvent pas dans les répertoires saisis par défaut.<br />
<br />
3. Editez les lignes INSTALL_LIB, INSTALL_INCLUDE et INSTALL_BIN si les valeurs par défaut ne vous conviennent pas (respectivement /usr/local/lib, /usr/local/include et /usr/local/bin). Il est à noter que, généralement, ces répertoires ne sont pas parcourus par défaut. Donc, si vous êtes root et que vous voulez rendre accessible gd à tous sans vous poser de questions, remplacez ces lignes par :<br /><code> INSTALL_LIB=/usr/lib<br /> INSTALL_INCLUDE=/usr/include<br /> INSTALL_BIN=/usr/bin<br /> </code><br />
<br />
4. Mettez un ''''<nowiki>#</nowiki>'''' devant les lignes commençant par CFLAGS puis tapez la vôtre comme suit:<br /><code>CFLAGS=-O [-DHAVE_XPM] [-DHAVE_JPEG] [-DHAVE_LIBTTF]</code><br /> Expliquons :<br />
<br />
* -O doit rester là.<br />
* -DHAVE_XPM si vous avez mis dans le 1. -lXpm et -lX11<br />
* -DHAVE_JPEG si vous avez mis dans le 1. -ljpeg<br />
* -DHAVE_LIBTTF si vous avez mis dans le 1. -lttf<br />
<br />
Comme il est dit dans le Makefile, les lignes du dessous ne vous regardent pas. Vous pouvez quand même les modifier si vous voulez, notamment pour corriger le numéro de version ;-).<br />
<br />
A ce point vous pouvez taper <code>make</code>. Tout devrait bien se passer. Continuer en tapant make install '''si vous êtes root ou si vous avez les droits en écriture dans les répertoires spécifiés dans l'étape 3. ci-dessus'''. Sinon, ce n'est pas grave, il vous suffira d'indiquer au compilateur où trouver les librairies et fichiers d'en-tête quand vous compilerez vos applications.<br />
<br />
== Utilisation ==<br />
<br />
Je considère ici que vous avez installé les librairies dans des répertoires habituels, où le compilateur et le linker peuvent trouver les fichiers nécessaires.<br />'''Dans le cas contraire''', créez un répertoire de travail où vous saisirez les exemples, copiez y le répertoire gd-1.8.3 et lors de la compilation, ajoutez après <code>gcc -o expl_gd_x</code> les options <code>-I./gd-1.8.3 -L./gd-1.8.3</code>.<br />
<br />
=== Préambule ===<br />
<br />
Avec gd vous pouvez créer vos images entièrement, à partir de rien, où vous servir d'images existantes. Les exemples simplistes ci-dessous vous montrent comment faire. Si vous avez déjà utilisé php pour réaliser des images, vous ne serez pas dépaysés par la syntaxe ;-).<br />
<br />
=== Exemple1 ===<br />
<br />
Dans cet exemple nous allons créer une image simple, il s'agira d'une croix rouge sur fond blanc. Notez qu'il faut, dans l'ordre :<br />
<br />
* Allouer les couleurs que l'on utilise dans l'image.<br />
* "Construire" l'image.<br />
* L'écrire ou la sortir, ici dans un fichier.<br />
* La "détruire".<br />
<br />
<nowiki><br />
/*<br />
* Fichier expl_1.c<br />
*/<br />
#include <stdlib.h> /* Y'en aura bien besoin (pour le exit) */<br />
<br />
#include <gd.h> /* On va utiliser gd */<br />
/* Théoriquement il faut inclure stdio.h<br />
MAIS c'est fait dans gd.h donc ... */<br />
<br />
int main(void) {<br />
gdImagePtr image; /* Pointeur vers notre image */<br />
FILE *image_png; /* Fichier image PNG */<br />
int rouge, blanc; /* Deux couleurs */<br />
<br />
/* On créée un image de 100 par 100 */<br />
image = gdImageCreate(100, 100);<br />
<br />
/*<br />
* On "alloue" deux couleurs.<br />
* Notez que la première sera la couleur de fond<br />
*<br />
* En paramètres : - l'image<br />
* - les valeurs de rouge, vert et bleu (de 0 à 255)<br />
*/<br />
blanc = gdImageColorAllocate(image, 255, 255, 255);<br />
rouge = gdImageColorAllocate(image, 255, 0, 0);<br />
<br />
/*<br />
* On trace la croix, deux rectangles pleins qui se croisent<br />
* le premier de x=20,y=45 à x=80,y=55<br />
* le second de x=45,y=20 à x=55,y=80<br />
* tous les deux de couleurs rouge.<br />
*/<br />
gdImageFilledRectangle(image, 20, 45, 80, 55, rouge);<br />
gdImageFilledRectangle(image, 45, 20, 55, 80, rouge);<br />
<br />
/* Ouvrir le fichier image en écriture. */<br />
image_png = fopen("expl1.png", "w");<br />
<br />
/* Créer l'image au format PNG. */<br />
gdImagePng(image, image_png);<br />
<br />
/* On ferme le fichier de l'image. */<br />
fclose(image_png);<br />
<br />
/* On détruit l'image. */<br />
gdImageDestroy(image);<br />
<br />
exit (0);<br />
}<br />
</nowiki><br />
<br />
On compile en tapant<br /><code>gcc -o expl_gd_1 expl_1.c -lgd -lpng</code><br />ou<br /><code>gcc -o expl_gd_1 expl_1.c -I./gd-1.8.3 -L./gd-1.8.3 -lgd -lpng</code> (Voir plus haut)<br /> Après exécution par <code>./expl_gd_1</code>, vous obtenez dans le répertoire courant une image expl1.png. [[Image:libgd-expl1.png]]<br />
<br />
Nous avons vu ici la fonction permettant de créer des rectangles pleins. Mais, nous pouvons également avec gd créer des rectangles vides, des lignes continues où non (tirets, style défini par l'utilisateur), des polygones pleins ou non, des arcs et ce en utilisant des lignes basiques ou en créant des "pinceaux" (brushes) ou bien encore ajouter du texte ...<br />
<br />
=== Exemple2 ===<br />
<br />
Nous allons maintenant écrire, en noir, en utilisant les polices par défaut de gd, contenues dans les fichiers fournis dans l'archive. Ce sont les fichiers gdfont*.h. A ces fichiers correspondent les polices gdFontTiny, gdFontSmall, gdFontMediumBold, gdFontLarge et gdFontGiant<br /> Dans cet exemple, on va générer une image de la taille requise par les textes, ni plus ni moins. La hauteur et la largeur d'un caractère étant données par gdFontxxx->h et gdFontxxx->w.<br /> Si on souhaite écrire verticalement, on utilisera la fontion gdImageStringUp.<br /> Si on souhaite utiliser les polices TrueType on pourra se référer à la fonction gdImageStringTTF. '''Attention''', pour les polices TT, les prototypes de fonctions sont différents et la récupération de l'espace occupé ne se fait pas de la même manière. D'autre part, les polices TT ne sont pas fournies dans l'archive gd, faites un <code>find / -name *.ttf</code> pour rechercher les polices sur votre système.<br /><br />
<br />
<nowiki><br />
/*<br />
* Fichier expl_2.c<br />
*/<br />
#include <stdlib.h> /* Y'en aura bien besoin (pour le exit) */<br />
<br />
#include <gd.h> /* On va utiliser gd */<br />
/* Théoriquement il faut inclure stdio.h <br />
MAIS c'est fait dans gd.h donc ... */<br />
<br />
#include <gdfontt.h> /*on va utiliser la police gdFontTiny */<br />
#include <gdfonts.h> /*on va utiliser la police gdFontSmall */<br />
#include <gdfontmb.h> /*on va utiliser la police gdFontMediumBold */<br />
#include <gdfontl.h> /*on va utiliser la police gdFontLarge */<br />
#include <gdfontg.h> /*on va utiliser la police gdFontGiant */<br />
<br />
int main(void) {<br />
gdImagePtr image; /* Pointeur vers notre image */<br />
gdFontPtr mesPolices[5]; /* tableau des polices */<br />
FILE *image_png; /* Fichier image PNG */<br />
int blanc, bleu; /* Nos deux couleurs */<br />
char *message = "Hello World !"; /* Un message original */<br />
int long_message; /* La taille du message */<br />
int tmp_larg, larg = 0, haut = 40; /* Dimension de l'image */<br />
int posx = 10, posy = 10; /* Position du texte */<br />
int i; /* Ca ressemble à une variable pour une boucle for ;-) */<br />
<br />
/* on remplit le tableau */<br />
mesPolices[0] = gdFontTiny;<br />
mesPolices[1] = gdFontSmall;<br />
mesPolices[2] = gdFontMediumBold;<br />
mesPolices[3] = gdFontLarge;<br />
mesPolices[4] = gdFontGiant;<br />
<br />
/* On calcule la longueur du message */<br />
long_message = strlen(message);<br />
<br />
/* On calcule les dimensions de l'image */<br />
for (i=0 ; i<5 ; i++) {<br />
haut += mesPolices[i]->h;<br />
larg = ( larg < ( <br />
tmp_larg = long_message*mesPolices[i]->w + 20 ) <br />
) ? tmp_larg : larg;<br />
}<br />
<br />
/* On créée un image de larg par haut */<br />
image = gdImageCreate(larg, haut);<br />
<br />
/* On alloue deux couleurs. */<br />
blanc = gdImageColorAllocate(image, 255, 255, 255);<br />
bleu = gdImageColorAllocate(image, 0, 0, 88);<br />
<br />
/*<br />
* On écrit le texte avec les cinq polices en bleu.<br />
* On remet à jour la hauteur<br />
*/<br />
for (i=0 ; i<5 ; i++) {<br />
posy += mesPolices[i]->h;<br />
gdImageString(image, mesPolices[i], posx, posy, message, bleu);<br />
}<br />
<br />
/* Ouvrir le fichier image en écriture. */<br />
image_png = fopen("expl2.png", "w");<br />
<br />
/* Créer l'image au format PNG. */<br />
gdImagePng(image, image_png);<br />
<br />
/* On ferme le fichier de l'image. */<br />
fclose(image_png);<br />
<br />
/* On détruit l'image. */<br />
gdImageDestroy(image);<br />
<br />
exit (0);<br />
}<br />
</nowiki><br />
<br />
On compile en tapant<br /><code>gcc -o expl_gd_2 expl_2.c -lgd -lpng</code><br /> Après exécution par <code>./expl_gd_2</code>, vous obtenez dans le répertoire courant une image expl2.png. [[Image:libgd-expl2.png]]<br />
<br />
=== Exemple3 ===<br />
<br />
Nous savons à présent créer des images mais il peut être utile d'en utiliser une existante qui servira de base à notre création afin de créer un histogramme sur un fond dégradé, pour rendre une couleur d'image transparente où créer des boutons personnalisés sur une page web.<br />
<br />
Prenons ce cas de figure comme exemple : <br />''Vous avez une page qui permet de contacter les 10 personnes les plus actives d'un forum en cliquant sur un bouton contenant leur pseudo. Vous ne pouvez pas à l'avance savoir qui sera dans les 10 personnes ou non, vous avez donc un script qui vous donne les dix personnes et un lien vers eux. Examinons ce qu'il faut faire pour générer un bouton contenant leur nom.''<br />
<br />
Jusqu'à maintenant on a créé les images avec gdImageCreate. Il existe aussi :<br />
<br />
* gdImageCreateFromGd, gdImageCreateFromGd2, gdImageCreateFromGd2Part pour ouvrir des images aux formats gd, ce format est là pour améliorer les performances si vous travaillez avec des fichiers asez lourds.<br />
* gdImageCreateFromJpeg pour ouvrir une image au format JPEG<br />
* gdImageCreateFromPng pour ouvrir une image au format PNG<br />
* gdImageCreateFromXpm pour ouvrir une image au format XPM<br />
* gdImageCreateFromPngSource pour ouvrir une image au format PNG à partir d'un flux de données autre qu'un fichier. (non testé)<br />
* gdImageCreateFromXbm pour ouvrir une image au format XBM. (non testé)<br />
<br />
Ces fonctions permettent de récupérer, pour traitement, une image existante. Nous allons travailler à partir d'un fichier image PNG contenant le bouton, vide, bout_in.png. [[Image:libgd-bout_in.png]]<br /> Je sais, ce n'est pas beau mais le but est de montrer ce que l'on peut faire, pas de faire beau. On pourra améliorer cela en partant d'un plus beau bouton et en utilisant une police TrueType pour le texte. <br />On va créer un cgi, pour changer. Il enverra l'image sur le flux standard, précédée de l'entête adéquate, ici <code>Content-type: image/png</code> suivi de deux retours à la ligne, comme le veux la norme.<br />
<br />
<nowiki><br />
/*<br />
* Fichier expl_3.c<br />
*/<br />
#include <stdlib.h> /* Y'en aura bien besoin (pour le exit) */<br />
<br />
#include <stdlib.h> /* Pour le getenv */<br />
<br />
#include <gd.h> /* On va utiliser gd */<br />
/* Théoriquement il faut inclure stdio.h <br />
MAIS c'est fait dans gd.h donc ... */<br />
<br />
#include <gdfontmb.h> /* On va utiliser la police gdFontMediumBold */<br />
<br />
int main(void) {<br />
gdImagePtr image; /* Pointeur vers notre image */<br />
FILE *image_png_in; /* Fichier image PNG */<br />
int jaune; /* Notre couleur */<br />
char *texte;<br />
int long_texte; /* La taille du texte */<br />
<br />
/* récupère le texte */<br />
if ( !(texte = getenv("QUERY_STRING")) ) {<br />
texte = "Erreur !";<br />
}<br />
long_texte = strlen(texte);<br />
<br />
/* On ouvre l'image initiale */<br />
if ( !(image_png_in = fopen ("bout_in.png", "rb")) ) {<br />
fprintf (stderr, "Impossible de trouver l'image bout_in.png.\n\n");<br />
exit (1);<br />
}<br />
image = gdImageCreateFromPng(image_png_in);<br />
<br />
/* On ferme le fichier de l'image. */<br />
fclose(image_png_in);<br />
<br />
/* On alloue une couleur. */<br />
jaune = gdImageColorResolve(image, 0xff, 0xff, 0);<br />
<br />
/*<br />
* On écrit le texte<br />
*/<br />
gdImageString(image, gdFontMediumBold,<br />
(image->sx-long_texte*gdFontMediumBold->w)/2,<br />
(image->sy-gdFontMediumBold->h)/2,<br />
texte, jaune);<br />
<br />
/* Envoyer l'image au format PNG. */<br />
printf ("Content-type: image/png\n\n");<br />
gdImagePng(image, stdout);<br />
<br />
/* On détruit l'image. */<br />
gdImageDestroy(image);<br />
exit (0);<br />
}<br />
</nowiki><br />
<br />
On compile en tapant<br /><code>gcc -o expl_gd_3 expl_3.c -lgd -lpng</code><br /> On place le binaire obtenu et un fichier contenant le bouton vide (bout_in.png) dans le répertoire cgi-bin de son serveur web.<br /> Pour utiliser ce que l'on vient de faire, il suffit d'inclure dans un fichier html (ce fichier peut être généré par un cgi, vous me suivez ?), un tag img, en passant le texte au script en "query_string". '''Et Hop ''!'''''<br />'''Exemple :'''<br />
<br />
<html><br />
<body bgcolor="#ffffff" text="#000088"><br />
<p><b>Mes boutons : </b></p><br />
<p><img src="/cgi-bin/expl_gd_3?Zazou"></p><br />
<p><img src="/cgi-bin/expl_gd_3?Xavier"></p><br />
<p><img src="/cgi-bin/expl_gd_3?alaide"></p><br />
</body><br />
</html><br />
<br />
On obtient alors une page semblable à celle-ci :<br />[[Image:libgd-expl3.png]]<br />
<br />
== Aller plus loin ==<br />
<br />
J'ai présenté ici quelques fonctionnalités de la librairie gd. Cela vous aura, j'espère, donné envie de creuser plus avant par vous mêmes. D'autres fonctionnalités dont je n'ai pas parlé sont la copie de portions d'images, l'ouverture de portions d'images uniquement avec changement d'échelle à la volée, fonctionnalités très utiles pour se lancer dans la génération d'extraits de grosses images (photos aériennes ou satellitaires ou je ne sais quoi d'autre). Pour plus d'informations et pour la liste complète des fonctions de lalibrairie, consultez le fichier index.html de l'archive de gd ou la page officielle : [http://www.boutell.com/gd http://www.boutell.com/gd/]<br />
<br />
J'ai placé les images, sources et toutes les archives nécessaires à la réalisation de ces exemples ainsi que les 3 binaires obtenus sur [http://perso.club-internet.fr/xgarreau/contribs_lea/c2 cette page]. '''Attention''', les versions des archives seront sans doute vite obsolètes mais ce sont celles utilisées pour cet article.<br />
<br />
Pour info, si vous voulez tester les binaires, il vous faudra (en plus de la libc et ld-linux que vous avez) :<br /><br />
<br />
* libpng.so.2<br />
* libz.so.1<br />
* libm.so.6<br />
<br />
Comme d'habitude, j'ai "''appris''" ça en tapant ldd expl_gd_1, ldd expl_gd_2 et ldd expl_gd_3 dans ma console préférée.<br />
<br />
N'hésitez pas à envoyer vos commentaires par mail en cliquant sur mon nom en haut de la page. <br /> A bientôt, Xavier GARREAU (alaide)<br />
<br />
<div class="merci">Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Xavier GARREAU le 05/01/2001.</div><br />
<br />
= Copyright =<br />
Copyright &copy; 05/01/2001, Xavier GARREAU<br />
{{CC-BY-NC-SA}}<br />
<br />
<br />
=Autres ressources=<br />
'''Voir aussi le [[Dev-libgd2|second article sur gd]].'''</div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=Polices_freetype_et_GD_2&diff=9146
Polices freetype et GD 2
2005-10-14T17:59:45Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div>[[Category:Développer sous Linux]]<br />
= Polices Freetype et gd-2.0 =<br />
<br />
<div class="leatitre">Polices Freetype et gd-2.0</div><div class="leapar">par [mailto:xgarreau@club-internet.fr Xavier GARREAU]</div><div class="leadesc">Voici le deuxième article concernant <tt>gd</tt>. Il traite de l'utilisation de <tt>Freetype</tt> pour inclure du texte dans vos images et des nouveautés apportées à <tt>gd</tt> par la version 2.</div><br />
----<br />
<br />
== Introduction ==<br />
<br />
L'inclusion de textes dans les images est quelque chose de très utile, pour ne pas dire indispensable et cette facette de gd méritait bien un article à elle toute seule. Je parlerai donc ici de l'utilisation de la librairie <tt>freetype-2.x</tt> pour la génération d'images avec <tt>gd-2.0.1</tt>, en langage c. En effet, à l'heure où j'écris ces lignes la librairie <tt>gd-2</tt> n'est pas encore stable mais bon, elle le sera bientôt et les seules nouveautés d'ici là ne seront que corrections d'éventuels bugs. Pour ce qui est du choix de ne traiter que la librairie <tt>freetype-2</tt>, il vient du fait que la version 2 de <tt>gd</tt> fait pareil. Les anciennes fonction liées à <tt>freetype-1</tt> (celles qui se terminent par TTF) ne font que renvoyer vers celles liées à <tt>freetype-2</tt> (celles qui se terminent par FT). <br />A l'issue de cette première partie de l'article, vous pourrez utiliser vos polices de windows à partir de programmes c sous linux, ainsi que toutes les autres polices truetype, freetype, ... (voir http://www.freetype.org pour plus d'infos) <br />La deuxième partie de cet article examinera les nouveautés de <tt>gd</tt> dans sa deuxième version.<br />
<br />
== Préparatifs ==<br />
<br />
=== Compilation et installation de <tt>freetype-2</tt> ===<br />
<br />
Téléchargez la dernière version de <tt>Freetype-2</tt>. Lors de l'écriture de l'article, il s'agissait de la version 2.0.3. <br />Voici comment on l'installe : <br />Placez vous dans le répertoire dans lequel vous avez téléchargé <tt>freetype</tt> puis tapez :<br />
<br />
tar xvfy freetype-2.0.3.tar.bz2<br />
cd freetype-2.0.3<br />
make setup<br />
make<br />
su<br />
make install<br />
<br />
Cela installe <tt>freetype</tt> sous <tt>/usr/local</tt>. Vous pouvez ensuite redevenir "''simple utilisateur''".<br />
<br />
=== Compilation et installation de <tt>gd</tt> ===<br />
<br />
Pour avoir plus d'informations sur l'installation de <tt>gd</tt>, consultez le premier article sur <tt>[libgd.php3 gd]</tt>, sur léa.<br />
<br />
Placez vous dans le répertoire dans lequel vous avez téléchargé <tt>gd</tt> puis tapez<br />
<br />
tar xvfz gd-2.0.1.tar.gz<br />
cd gd-2.0.1<br />
<br />
Editez le début du <tt>Makefile</tt> comme suit :<br />
<br />
COMPILER=gcc<br />
AR=ar<br />
CFLAGS=-g -DHAVE_LIBPNG -DHAVE_LIBJPEG -DHAVE_LIBFREETYPE<br />
LIBS=-lgd -lpng -lz -ljpeg -lfreetype -lm<br />
INCLUDEDIRS=-I. -I/usr/local/include/freetype2<br />
LIBDIRS=<br />
INSTALL_LIB=/usr/local/lib<br />
INSTALL_INCLUDE=/usr/local/include<br />
INSTALL_BIN=/usr/local/bin<br />
<br />
Puis tapez:<br />
<br />
su<br />
make install<br />
<br />
Il ne s'agit pas d'une erreur de ma part, il faut bien taper directement <tt>make install</tt>, c'est comme ça ! <br />Si vous obtenez une erreur du type : <tt>unresolved symbol</tt> (sur <tt>gdImageCreateFromPng</tt> par exemple) :<br />
<br />
* Vérifiez que vous avez supprimé les anciennes librairies libgd.so*, sinon faites-le.<br />
* lancez ldconfig.<br />
* Vérifiez que <tt>/usr/local/lib</tt> est dans votre fichier <tt>/etc/ld.so.conf</tt> sur une ligne seule<br />
* Vérifiez que vous avez bien installé <tt>freetype-2</tt> par défaut. Sinon, trouvez le répertoire contenant un sous-répertoire freetype et mettez le en lieu et place de <tt>/usr/local/include/freetype2</tt> dans la ligne <tt>INCLUDEDIRS</tt> du Makefile.<br />
<br />
== Utilisation ==<br />
<br />
Pour les notions de base concernant <tt>gd</tt>, reportez vous à l'[libgd.php3 article précédent], celui-ci constitue une suite.<br />
<br />
=== Exemple1 ===<br />
<br />
Dans cet exemple nous allons recréer l'image simple du premier exercice du premier article mais ajouterons dans la croix la mention <tt>santé</tt> écrite en Comics, par exemple, et ce, en jaune. <br />Il faut :<br />
<br />
* Aller chercher la police. Si vous avez un Windows d'installé, allez les récupérer dans le répertoire win*\Fonts. <br />'''par exemple :'''<br /><tt> mkdir /usr/share/ttf</tt><br /><tt> cp /mnt/NTC/winnt/Fonts/comic.ttf /usr/share/ttf/</tt><br />
* Créer la croix comme la dernière fois<br />
* Créer le texte<br />
* Finir l'image comme la dernière fois<br />
<br />
La declaration de la fonction permettant d'écrire du texte en utilisant FreeType est la suivante :<br />
<br />
char *gdImageStringFT(gdImagePtr im,<br />
int *brect,<br />
int color,<br />
char *fontname,<br />
double ptsize,<br />
double angle,<br />
int x, int y,<br />
char *chaine)<br />
<br />
où :<br />
<br />
* im est un pointeur vers l'image dans laquelle on "écrit".<br />
* brect est un pointeur vers un tableau dans lequel on range les coordonnées du plus petit rectangle contenant le texte<br />
* color est la coueleur utilisée pour le texte. Notons que si on utilise -fg, la couleur est la même mais celà désactive l'anti-aliasing (l'anti-crénelage pour les francophones)<br />
* fontname est un pointeur vers le chemin de la police<br />
* ptsize est la taille désirée du texte<br />
* angle est l'angle du texte par rapport à l'horizontale<br />
* x et y sont les coordonées de placement du texte<br />
* chaine est un pointeur vers le texte à écrire<br />
<br />
<br />'''Le code :'''<br />
<br />
<nowiki>/*<br />
* Fichier expl_gd2_1.c<br />
*<br />
* Pour les explications de base,<br />
* se reporter à l'article sur gd.<br />
*/<br />
#include <stdlib.h><br />
#include <gd.h><br />
<br />
// Deux macros qui simplifient la vie<br />
#define brect_largeur (brect[4]-brect[0])<br />
#define brect_hauteur (brect[1]-brect[5])<br />
<br />
int main(void) {<br />
gdImagePtr image;<br />
FILE *image_png;<br />
char *err;<br />
int rouge, blanc, jaune, noir;<br />
char *chaine = "santé"; // La chaîne à écrire<br />
char *font = "/usr/share/ttf/comic.ttf"; // La police<br />
double taille = 20; // La taille de la police<br />
int brect[8]; // Les coordonnées du rectangle<br />
// entourant le texte entier.<br />
/* brect[0] X bas gauche<br />
* brect[1] Y bas gauche<br />
* brect[2] X bas droit<br />
* brect[3] Y bas droit<br />
* brect[4] X haut droit<br />
* brect[5] Y haut droit<br />
* brect[6] X haut gauche<br />
* brect[7] Y haut gauche<br />
*/<br />
<br />
image = gdImageCreate(100, 100);<br />
blanc = gdImageColorAllocate(image, 255, 255, 255);<br />
rouge = gdImageColorAllocate(image, 255, 0, 0);<br />
jaune = gdImageColorAllocate(image, 255, 255, 0);<br />
noir = gdImageColorAllocate(image, 0, 0, 0);<br />
<br />
gdImageFilledRectangle(image, 20, 40, 80, 60, rouge);<br />
gdImageFilledRectangle(image, 40, 20, 60, 80, rouge);<br />
<br />
/* Les nouveautés commencent ici */<br />
/* On a droit à 60x20 pour placer notre chaîne<br />
* soit brect[4]-brect[0]<60 ET brect[1]-brect[5]<20<br />
* --> Pour récupérer brect sans écrire<br />
* le texte, on place im à NULL<br />
* Si on a un dépassement on réduit la <br />
* taille de la police et on recommence<br />
*/<br />
do {<br />
err = gdImageStringFT (NULL, brect,<br />
jaune, font,<br />
taille--,<br />
0,<br />
0,<br />
0,<br />
chaine);<br />
if (err) fprintf(stderr, "%s\n", err);<br />
fprintf (stderr, "Essai taille : %.0f\n", taille+1);<br />
fprintf (stderr,<br />
"* bas gauche ( %d, %d ), haut droite ( %d, %d )\n",<br />
brect[0], brect[1],<br />
brect[4], brect[5]);<br />
fprintf (stderr,<br />
"* largeur x hauteur : %dx%d\n",<br />
brect_largeur,<br />
brect_hauteur);<br />
} while ( ( brect_hauteur >= 20 ) || ( brect_largeur >= 60 ) );<br />
<br />
/* A décommenter pour voir le brect<br />
gdImageRectangle (image,<br />
50-brect_largeur/2,<br />
50-brect_hauteur/2,<br />
50+brect_largeur/2,<br />
50+brect_hauteur/2,<br />
noir);<br />
*/<br />
<br />
/* Une fois ici on a la bonne taille moins un.<br />
* Le milieu de l'image la moitié de la<br />
* largeur nous donne le x gauche.<br />
* Le milieu de l'image + la moitié de<br />
* la hauteur nous donne le y bas.<br />
* On retracnche la moitié des brect[0] et brect[1]<br />
* car on a vu qu'il ne valaient pas <br />
* nécessairement 0 d'où un décalage<br />
*/<br />
err = gdImageStringFT (image,<br />
brect,<br />
// mettre -jaune pour<br />
// supprimer l'anti-aliasing<br />
jaune,<br />
font,<br />
++taille,<br />
0,<br />
50-(brect_largeur-brect[0])/2,<br />
50+(brect_hauteur-brect[1])/2,<br />
chaine);<br />
if (err) fprintf(stderr, "%s\n", err);<br />
<br />
/* Les nouveautés s'arrêtent ici */<br />
<br />
image_png = fopen("gd2_expl1.png", "w");<br />
gdImagePng(image, image_png);<br />
fclose(image_png);<br />
<br />
gdImageDestroy(image);<br />
<br />
exit (0);<br />
}</nowiki><br />
<br />
On compile en tapant <br /><tt>gcc -o expl_gd2_1 expl_gd2_1.c -lgd -ljpeg -lpng -lfreetype</tt><br />Après exécution par <tt>./expl_gd2_1</tt>, vous obtenez dans le répertoire courant une image gd2_expl1.png, qui sera une des 4 présentées ci-dessous selon les modifications que vous aurez apportées au code :<br />
<br />
<blockquote> <br />
<br />
{| border="BORDER"<br />
! Image normale<br />
! Sans anti-aliasing <br />(-jaune)<br />
|- align="CENTER"<br />
|<br />
[[Image:libgd2-gd2_expl1.png]]<br />
|<br />
[[Image:libgd2-gd2_expl1_alias.png]]<br />
|-<br />
! Avec dessin <br />du brect<br />
! Avec brect <br />Sans anti-aliasing<br />
|-<br />
|<br />
[[Image:libgd2-gd2_expl1_brect.png]]<br />
|<br />
[[Image:libgd2-gd2_expl1_alias_brect.png]]<br />
|}<br />
<br />
</blockquote> <br />
<br />
'''Remarque :''' Dans une application réelle, une fois connue la bonne taille de police, vous enleveriez la boucle permettant de la trouver, vous ne traceriez pas le <tt>brect</tt>, etc ... Je l'ai fait ici dans un but pédagogique.<br />
<br />
=== Exemple2 : Selon un angle ? ===<br />
<br />
Nous allons maintenant écrire, selon un angle. Pas de gros changements ... On en profitera toutefois au passage pour faire connaissance avec le type <tt>gdPoint</tt>, utilisé pour tracer des polygones de façon aisée. Il nous servira pour tracer le brect de ce texte "en pente", grâce à la fonction <tt>gdImagePolygon</tt>. <br />On note qu'un type <tt>gdPoint</tt> a deux champs, x et y. C'est pas plus compliqué que ça ! <br />'''Le code :'''<br />
<br />
<nowiki>/*<br />
* Fichier expl_gd2_2.c<br />
*<br />
* Pour les explications de base,<br />
* se reporter à l'article sur gd.<br />
*/<br />
#include <stdlib.h><br />
#include <stdio.h><br />
#include <gd.h><br />
#include <math.h><br />
<br />
// Une macro pour transformer des degrés en radians<br />
// NB: M_PI est définie dans math.h<br />
#define en_radians(ndeg) (M_PI*(ndeg)/180)<br />
<br />
// Deux macros qui simplifient la vie<br />
#define brect_largeur (brect[4]-brect[0])<br />
#define brect_hauteur (brect[1]-brect[5])<br />
<br />
int main(void) {<br />
gdImagePtr image;<br />
FILE *image_png;<br />
char *err;<br />
int rouge, blanc, jaune, noir;<br />
char *chaine = "santé"; // La chaîne à écrire<br />
char *font = "/home/xavier/Docs/contribs_lea/c4/comic.ttf";<br />
double taille = 20; // La taille de la police<br />
int brect[8]; // Les coordonnées du rectangle<br />
// entourant le texte entier.<br />
gdPoint brect_points[4]; // Le tableau de points<br />
// pour tracer le polygone<br />
<br />
image = gdImageCreate(100, 100);<br />
blanc = gdImageColorAllocate(image, 255, 255, 255);<br />
rouge = gdImageColorAllocate(image, 255, 0, 0);<br />
jaune = gdImageColorAllocate(image, 255, 255, 0);<br />
noir = gdImageColorAllocate(image, 0, 0, 0);<br />
<br />
gdImageFilledRectangle(image, 20, 40, 80, 60, rouge);<br />
gdImageFilledRectangle(image, 40, 20, 60, 80, rouge);<br />
<br />
err = gdImageStringFT (NULL, brect,<br />
jaune, font,<br />
taille,<br />
en_radians(45),<br />
0,<br />
0,<br />
chaine);<br />
/* on stocke les points dans le tableau de gdPoints */<br />
brect_points[0].x = brect[0]+50-(brect_largeur-brect[0])/2;<br />
brect_points[0].y = brect[1]+50+(brect_hauteur-brect[1])/2;<br />
brect_points[1].x = brect[2]+50-(brect_largeur-brect[0])/2;<br />
brect_points[1].y = brect[3]+50+(brect_hauteur-brect[1])/2;<br />
brect_points[2].x = brect[4]+50-(brect_largeur-brect[0])/2;<br />
brect_points[2].y = brect[5]+50+(brect_hauteur-brect[1])/2;<br />
brect_points[3].x = brect[6]+50-(brect_largeur-brect[0])/2;<br />
brect_points[3].y = brect[7]+50+(brect_hauteur-brect[1])/2;<br />
<br />
/* On trace le polygone */<br />
gdImagePolygon (image, brect_points, 4, noir);<br />
<br />
/* On ajoute la chaîne de caractères<br />
comme avant, mais avec un angle */<br />
err = gdImageStringFT (image,<br />
brect,<br />
jaune,<br />
font,<br />
taille,<br />
en_radians(45),<br />
50-(brect_largeur-brect[0])/2,<br />
50+(brect_hauteur-brect[1])/2,<br />
chaine);<br />
if (err) fprintf(stderr, "%s\n", err);<br />
<br />
image_png = fopen("gd2_expl2.png", "w");<br />
gdImagePng(image, image_png);<br />
fclose(image_png);<br />
<br />
gdImageDestroy(image);<br />
<br />
exit (0);<br />
}</nowiki><br />
<br />
On compile en tapant <br /><tt>gcc -o expl_gd2_2 expl_gd2_2.c -lgd -ljpeg -lpng -lfreetype</tt><br />Après exécution par <tt>./expl_gd2_2</tt>, vous obtenez dans le répertoire courant une image <tt>gd2_expl2.png</tt>.<br />
<br />
<blockquote>[[Image:libgd2-gd2_expl2.png]]</blockquote><br />
<br />
== Quoi de neuf dans gd-2 ? ==<br />
<br />
Ben oui !!! Vous devez bien vous le demander ! Alors voici ce que dit (en résumé) la section '''''"what's new ?"''''' de la page officielle pour la version 2.0.1 par rapport à la 1.8.3 du précédent article :<br />
<br />
* Support <tt>Freetype2</tt>. (1.8.4)<br />
* Recherche des polices dans les répertoires pointés par les variables d'environement <tt>DEFAULT_FONTPATH</tt> et <tt>GDFONTPATH</tt>. (1.8.4)<br />
* Support des images truecolor (2.0)<br />
* Support du canal alpha (pour la transparence) (2.0)<br />
* Gestion de l'épaisseur de tracé des lignes, ça fera plaisir à des gens dans le forum de léa ;-) (2.0)<br />
* Suppression de l'utilisation de Freetype1.x en faveur de Freetype2.x, les anciennes fonctions ne font qu'appeler les nouvelles. (2.0)<br />
* Correction et améliorations pour la version 2.0.1, y compris un meilleur support des caractères japonais et mise à jour de la doc.<br />
<br />
Plus des améliorations et corrections que je vous conseille de lire directement sur la page, http://www.boutell.com/gd/<br />Notez que ce lien vous emmène pour l'instant sur la page de la version stable, qui, à l'heure où ces lignes sont écrites, est encore la 1.8.4. Il y a toutefois un (gros) lien vers la page des versions 2.0.x.<br />
<br />
=== Exemple3 : Transparence ===<br />
<br />
<nowiki>/*<br />
* Fichier expl_gd2_3.c<br />
*<br />
* Pour les explications de base,<br />
* se reporter à l'article sur gd.<br />
*/<br />
#include <stdlib.h><br />
#include <gd.h><br />
<br />
int main(void) {<br />
FILE *image_png;<br />
gdImagePtr image, image_d_avant;<br />
int orange, bleu;<br />
<br />
// On crée une image TrueColor<br />
image = gdImageCreateTrueColor(100, 100);<br />
// On alloue une couleur<br />
orange = gdTrueColor (255, 128, 0);<br />
// On trace un rectangleorange<br />
gdImageFilledRectangle(image, 0, 0, 100, 100, orange);<br />
<br />
// On ouvre l'image du premier exercice<br />
// et on en crée une image<br />
image_png = fopen("expl1.png", "r");<br />
image_d_avant = gdImageCreateFromPng (image_png);<br />
fclose (image_png);<br />
<br />
// on copie avec remise à l'échelle de 100x100 pixels<br />
// en partant de (0,0) de l'ancienne image<br />
// on place le résultat de taille 90x90 à<br />
// (5,5) dans la nouvelle<br />
gdImageCopyResampled(image, image_d_avant, <br />
5, 5, 0, 0, 90, 90, 100, 100);<br />
// on détruit l'ancienne image en mémoire.<br />
gdImageDestroy (image_d_avant);<br />
<br />
// On alloue une couleur bleue semi transparente<br />
bleu = gdTrueColorAlpha(0, 0, 255, <br />
gdAlphaTransparent / 2);<br />
// on se met en mode écrasement<br />
// La où on dessinera il y aura <br />
// du bleu semi-transparent, c'est tout<br />
gdImageAlphaBlending(image, 0);<br />
// ontrca eun rectangle<br />
gdImageFilledRectangle(image, 10, 10, 90, 30, bleu);<br />
<br />
// On se met en mode "mélange"<br />
// Ce qu'on dessine, se mélange avec<br />
// ce qu'il y a dessous<br />
// 50% de bleu et 50% du dessous<br />
gdImageAlphaBlending(image, 1);<br />
gdImageFilledRectangle(image, 40, 10, 90, 90, bleu);<br />
<br />
image_png = fopen("gd2_expl3.png", "w");<br />
gdImagePng(image, image_png);<br />
fclose(image_png);<br />
<br />
gdImageDestroy(image);<br />
<br />
exit (0);<br />
}</nowiki><br />
<br />
On compile en tapant <br /><tt>gcc -o expl_gd2_3 expl_gd2_3.c -lgd -ljpeg -lpng -lfreetype</tt><br />On obtient après exécution, dans gimp :<br />
<br />
<blockquote>[[Image:libgd2-gd2_expl_gd2_3.png]]</blockquote><br />
<br />
Notez :<br />
<br />
* en haut à gauche qu'on voit l'arrière plan de Gimp (mode écrasement, il n'y a plus de trace de l'image du dessous)<br />
* à droite le bleu se mélange à l'image du dessous<br />
* en haut à droite 50% de bleu mélangé à 50% de bleu, ça fait ??? 100% de bleu !!!<br />
* La fonction gdImageCopyResampled marche bien mieux que l'ancienne gdImageCopyResized !<br />
<br />
C'est tout pour cette fois ! <br />N'hésitez pas à envoyer vos commentaires par mail en cliquant sur mon nom en haut de la page. <br />Retrouvez prochainement l'article remis en forme, les sources, archives et binaires sur mon site perso..., http://perso.club-internet.fr/xgarreau. <br />Vous pouvez également me contacter dans le forum Développement de Léa, je le regarde (très) souvent. <br />A bientôt.<br />
<br />
<div class="merci">Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Xavier GARREAU le 16/06/2001.</div><br />
<br />
= Copyright =<br />
Copyright &copy; 16/06/2001, Xavier GARREAU<br />
{{CC-BY-NC-SA}}<br />
<br />
<br />
=Autres ressources=<br />
'''Voir aussi, l'[[Dev-libgd|introduction à gd]]'''</div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=Bash_Dialog&diff=9145
Bash Dialog
2005-10-14T17:59:43Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div>[[Category:Développer sous Linux]]<br />
= Dialog avec le bash =<br />
<br />
<div class="leatitre">Dialog avec le bash</div><div class="leapar">par [mailto:mj.spi@wanadoo.fr Marc]</div><div class="leadesc">T'as d'belles boîtes t'sais ?</div><br />
<br />
== Introduction ==<br />
<br />
Le programme dialog comporte de nombreuses "boîtes" et options qui permettent d'améliorer la présentation et donc la convivialité des scripts bash. De grandes distributions comme Debian et Slackware (célèbres entre toutes pour leur aspect user friendly...) l'utilisent d'ailleurs dans leurs scripts d'installation et de configuration. Vous-mêmes, vous ne pourrez bien utiliser dialog que si vous possédez déjà quelques connaissances des scripts bash. Si tel n'est pas le cas, consultez en priorité l'article [shell_script.php3 Introduction aux scripts]<br />
<br />
Cette page de présentation de dialog n'a pas la structure d'un article traditionnel mais repose avant tout sur un script: demo_dialog.sh. Ce script a été écrit et commenté avec un souci de simplicité et de clarté. A chacune des "boîtes" de dialog qui y est présentée est associée une fonction afin que vous... Mais tout ceci est justement expliqué dans les commentaires placés au début du script que vous trouverez ci-dessous et dont voici le menu principal.<br />
<br />
<div style="text-align: center;">[[Image:dialog-demo_dialog.jpg]] </div><br />
<br />
Si vous le souhaitez, continuez donc à lire cette page tout en faisant tourner le script dans un (x)terminal. Pour ce faire, [demo_dialog.txt téléchargez demo_dialog.txt] ; renommez-le en demo_dialog.sh (<code>mv demo_dialog.txt demo_dialog.sh</code>), rendez-le executable (<code>chmod +x demo_dialog.sh</code>) et enfin lancez-le (<code>./demo_dialog.sh</code>).<br />
<br />
== Démo dialog ==<br />
<br />
<div class="code"><br />
<br />
<nowiki>#!/bin/sh</nowiki><br /> # Script de présentation de dialog<br /> # demo_dialog.sh copyleft spi.marc 2004<br />
<br />
<nowiki># Pour découvrir dialog par la pratique :</nowiki><br /> # faites tourner ce script, examinez son code.<br />
<br />
'''<nowiki># Différentes boîtes de dialog sont ici présentées dans</nowiki><br /> # un contexte minimal. A chacune de ces boîtes correspond<br /> # une fonction ; elles apparaissent dans l'ordre suivant.<br /> # [message d'introduction à dialog (fonction intr)]<br /> # Définition<br /> # - d'une boîte d'information (fonction info)<br /> # - d'une boîte de message (fonction mess)<br /> # - d'une boîte de sélection de fichier (fonction fsel)<br /> # - d'une boîte de fichier texte (fonction text)<br /> # - d'une boîte de barre d'avancement (fonction gaug)<br /> # - d'une boîte oui non (fonction yesn)<br /> # - d'une boîte d'entrée de valeur (fonction inpu)<br /> # - d'une boîte de mot de passe (fonction pass)<br /> # - d'une boîte d'heure (fonction time)<br /> # - d'une boîte de menu (fonction menu)<br /> # [message sur les boîtes de cases à cocher (fonction mche)]<br /> # - d'une boîte de cases à cocher (fonction chec)'''<br />
<br />
<nowiki># # # Début du script proprement dit # # #</nowiki><br />
<br />
'''<nowiki># Définition d'un fichier temporaire</nowiki>'''<br /> # Il sert à conserver les sorties de dialog qui sont normalement<br /> # redirigées vers la sortie d'erreur (2). trap sert à être propre.<br /> touch /tmp/dialogtmp && FICHTMP=/tmp/dialogtmp<br /> trap "rm -f $FICHTMP" 0 1 2 3 5 15<br />
<br />
'''<nowiki># Définitions des différentes fonctions</nowiki><br /> # Message d'introduction à dialog<br /> # (boîtes de message voyez plutôt la fonction mess)'''<br /> function intr ()<br /> {<br /> dialog --backtitle "Présentation de dialog" --title "Introduction" \<br /> --ok-label "Suite" --msgbox "<br /> Dialog vous permet d'améliorer la présentation de vos<br /> scripts bash en mode texte. Il comporte de nombreuses<br /> boîtes et options, vous en découvrirez quelques unes<br /> en utilisant ce script (console 80x25 recommandée).<br />
<br />
En mode graphique vous pouvez utiliser xdialog dont la<br /> syntaxe est proche de celle de dialog." 12 60<br />
<br />
dialog --backtitle "Présentation de dialog" --title "Introduction (suite)" \<br /> --msgbox "<br /> Une instruction dialog possède la syntaxe suivante:<br /> dialog --options communes --options de boîte<br />
<br />
Par exemple --title est une option commune que l'on<br /> peut utiliser avec toutes les boîtes. Alors que<br /> --info est une option spécifique (de boîte info)." 12 60<br /> }<br />
<br />
'''<nowiki># Définition d'une boîte d'information</nowiki>'''<br /> function info ()<br /> {<br />'''dialog --backtitle "Présentation de dialog" --title "Boîte d'information" \<br /> --sleep 12 --infobox "<br /> Ceci est une boîte d'information.<br /> Sa syntaxe est --infobox text height width<br /> Elle ne comporte pas de bouton par défaut.<br /> Ici l'option --sleep 12 fixe son temps de vie à 12 s.'''<br />
<br />
'''Pour la tester vous pouvez entrer dans une console:<br /> dialog --sleep 4 --infobox Information 8 40" 12 60'''<br /> }<br />
<br />
'''<nowiki># Définition d'une boîte de message</nowiki>'''<br /> function mess ()<br /> {<br />'''dialog --backtitle "Présentation de dialog" --title "Boîte de message" \<br /> --msgbox "<br /> Ceci est une boîte de message.<br /> Sa syntaxe est --msgbox text height width<br /> Elle ne comporte qu'un seul bouton par défaut.'''<br />
<br />
'''Pour la tester vous pouvez entrer dans une console:<br /> dialog --msgbox Message 8 40" 12 60'''<br /> }<br />
<br />
'''<nowiki># Définition d'une boîte de sélection de fichier</nowiki>'''<br /> function fsel ()<br /> {<br />'''<nowiki># message sur les boîtes de sélection de fichier (boîte de message)</nowiki>'''<br /> dialog --backtitle "Présentation de dialog" --title "Les boîtes de sélection de fichier" \<br /> --ok-label "Suite" --msgbox "<br /> Une boîte de sélection de fichier permet ...<br /> de sélectionner un fichier.<br /> Sa syntaxe est --fselect filepath height width<br /> Pour l'afficher vous pouvez entrer dans une console:<br /> dialog --fselect $HOME/ 12 60<br />
<br />
Voyez aussi la boîte suivante de ce script." 12 60<br />'''<nowiki># boîte de sélection de fichier proprement dite</nowiki><br /> dialog --backtitle "Présentation de dialog" --title "Boîte de sélection de fichier" \<br /> --ok-label "Valider" --fselect $HOME/ 8 60 2> $FICHTMP'''<br />'''<nowiki># retour d'information (boîte d'info)</nowiki>'''<br /> # 0 est le code retour du bouton Valider<br /> # seul celui-ci permet ici de sélectionner un fichier.<br /> if [ $? = 0 ]<br /> then INFO="Le fichier sélectionné est `cat $FICHTMP`"<br /> else INFO="Vous n'avez pas sélectionné de fichier!"<br /> fi<br /> dialog --backtitle "Présentation de dialog" --title "Votre sélection" \<br /> --sleep 2 --infobox "<br /> $INFO" 8 40<br /> }<br />
<br />
'''<nowiki># Définition d'une boîte de fichier texte</nowiki>'''<br /> function text ()<br /> {<br />'''<nowiki># message sur les boîtes de fichier texte (boîte de message)</nowiki>'''<br /> dialog --backtitle "Présentation de dialog" --title "Les boîtes texte" \<br /> --ok-label "Suite" --msgbox "<br /> Une boîte texte permet d'afficher le contenu d'un<br /> fichier texte passé en paramètre.<br /> Sa syntaxe est --textbox file height width<br /> Pour l'essayer vous pouvez entrer dans une console:<br /> dialog --textbox /etc/inittab 18 60<br />
<br />
La boîte texte suivante va afficher ce script.<br /> Utilisez les 4 flèches pour vous déplacer." 14 60<br />'''<nowiki># boîte de fichier texte proprement dite</nowiki><br /> # $0 est la variable correspondant au script<br /> dialog --backtitle "Présentation de dialog" --title "Boîte de fichier texte" \<br /> --textbox $0 18 60'''<br /> }<br />
<br />
'''<nowiki># Définition d'une boîte de barre d'avancement</nowiki>'''<br /> # La jauge avance par la redirection |<br /> # de la sortie du sous shell ( ) qui la précède.<br /> function gaug ()<br /> {<br />'''(for i in `seq 0 10 100` ; do echo $i ; sleep 1 ; done) | \<br /> dialog --backtitle "Présentation de dialog" --title "Boîte de barre d'avancement" \<br /> --gauge "<br /> Ceci est une boîte de barre d'avancement.<br /> Sa syntaxe est --gauge text height width [percent]<br /> Sa progression vient du sous shell () qui la précède.'''<br />
<br />
'''Vous avez 10 secondes pour lire ce message.<br /> " 12 60 0'''<br /> }<br />
<br />
'''<nowiki># Définition d'une boîte oui non</nowiki>'''<br /> function yesn ()<br /> {<br />'''<nowiki># boîte oui non proprement dite</nowiki><br /> dialog --backtitle "Présentation de dialog" --title "Boîte oui non" \<br /> --yesno "<br /> Ceci est une boîte oui non.<br /> Elle sert bien sûr à poser une question fermée.<br /> Sa syntaxe est --yesno text height width<br /> Pour l'essayer vous pouvez entrer dans une console:<br /> dialog --yesno Question 8 40'''<br />
<br />
'''Souhaitez-vous quitter ce script ? " 12 60'''<br />'''<nowiki># traitement de la réponse</nowiki>'''<br /> # O est le code retour du bouton Oui<br /> # ici Oui arrête le script<br /> # toute autre action (Non, Esc, Ctrl-C) le poursuit<br /> if [ $? = 0 ]<br /> then exit 0<br /> else<br />'''<nowiki># boîte d'info</nowiki>'''<br /> dialog --backtitle "Présentation de dialog" --title "Remerciements" \<br /> --sleep 4 --infobox "<br /> L'auteur de ce script vous trouve<br /> de ce fait bien sympathique." 8 40<br /> fi<br /> }<br />
<br />
'''<nowiki># Définition d'une boîte d'entrée de valeur</nowiki>'''<br /> function inpu ()<br /> {<br />'''<nowiki># boîte d'entrée de valeur proprement dite</nowiki><br /> dialog --backtitle "Présentation de dialog" --title "Boîte d'entrée" \<br /> --inputbox "<br /> Ceci est une boîte d'entrée.<br /> Sa syntaxe est --inputbox text height width [init]<br /> Ici l'option init est utilisée et contient user<br /> Pour l'afficher vous pouvez entrer dans une console:<br /> dialog --inputbox Entrée 8 40'''<br />
<br />
'''Entrez votre nom de login:" 14 60 user 2> $FICHTMP'''<br />'''<nowiki># retour d'information (boîte d'info)</nowiki>'''<br /> # 0 est le code retour du bouton Accepter<br /> # ici seul celui-ci attribue un nom de login.<br /> if [ $? = 0 ]<br /> then INFO="Votre nom de login est `cat $FICHTMP`"<br /> else INFO="Vous n'avez pas de nom de login!"<br /> fi<br /> dialog --backtitle "Présentation de dialog" --title "Votre login" \<br /> --sleep 2 --infobox "<br /> $INFO" 8 40<br /> }<br />
<br />
'''<nowiki># Définition d'une boîte de mot de passe</nowiki>'''<br /> function pass ()<br /> {<br /> # '''boîte de mot de passe proprement dite<br /> dialog --backtitle "Présentation de dialog" --title "Boîte de mot de passe" \<br /> --insecure --passwordbox "<br /> Ceci est une boîte de mot de passe.<br /> Sa syntaxe est --passwordbox text height width [init]<br /> Ici l'option --insecure est utilisée pour avoir des *<br /> Pour la tester vous pouvez entrer dans une console:<br /> dialog --passwordbox Password 8 40'''<br />
<br />
'''Entrez un mot de passe fictif (il sera affiché):" 14 60 2> $FICHTMP'''<br />'''<nowiki># retour d'information (boîte d'info)</nowiki>'''<br /> # pour la démo, à éviter en temps normal !<br /> # 0 est le code retour du bouton Accepter<br /> # ici seul celui-ci attribue un mot de passe.<br /> if [ $? = 0 ]<br /> then INFO="Le mot de passe choisi est `cat $FICHTMP`"<br /> else INFO="Vous n'avez pas de mot de passe!"<br /> fi<br /> dialog --backtitle "Présentation de dialog" --title "Votre mot de passe" \<br /> --sleep 2 --infobox "<br /> $INFO" 8 40<br /> }<br />
<br />
'''<nowiki># Définition d'une boîte d'heure</nowiki>'''<br /> function time ()<br /> {<br />'''<nowiki># boîte d'heure proprement dite</nowiki><br /> dialog --backtitle "Présentation de dialog" --title "Boîte d'heure" \<br /> --timebox "<br /> Ceci est une boîte d'heure. Sa syntaxe est<br /> --timebox text height width [hour minute second]<br /> Pour l'afficher vous pouvez entrer dans une console:<br /> dialog --timebox Heure 4 40'''<br />
<br />
'''Quelle est votre heure locale ?" 10 60 2> $FICHTMP'''<br />'''<nowiki># retour d'information (boîte d'info)</nowiki>'''<br /> # 0 est le code retour du bouton Accepter<br /> # seul celui-ci permet de définir une heure différente.<br /> if [ $? = 0 ]<br /> then INFO="Votre heure locale est `cat $FICHTMP`"<br /> else INFO="Vous n'avez pas défini d'heure.<br /> L'heure par défaut est `date +%X`"<br /> fi<br /> dialog --backtitle "Présentation de dialog" --title "Heure locale" \<br /> --sleep 2 --infobox "<br /> $INFO" 8 40<br /> }<br />
<br />
'''<nowiki># Définition d'une boîte de menu</nowiki>'''<br /> function menu ()<br /> {<br />'''<nowiki># boîte de menu proprement dite</nowiki><br /> dialog --backtitle "Présentation de dialog" --title "Boîte de menu" \<br /> --menu "<br /> Ceci est une boîte de menu. Sa syntaxe est<br /> --menu text height width menu-height [tag item] ...<br /> Elle permet de faire un choix parmi une liste.'''<br />
<br />
'''Choisissez une des entrées proposées:" 18 60 6 \<br /> "Continuer" "Continuer selon les choix déjà faits" \<br /> "Introduction" "Relire l'intro à dialog puis continuer" \<br /> "Arrêter" "Et au revoir..." 2> $FICHTMP'''<br />'''<nowiki># traitement de la réponse</nowiki>'''<br /> if [ $? = 0 ]<br /> then<br /> for i in `cat $FICHTMP`<br /> do<br /> case $i in<br /> # Continuer est par défaut<br /> Introduction) intr ;;<br /> Arrêter) exit 0 ;;<br /> esac<br /> done<br /> fi<br /> }<br />
<br />
'''<nowiki># Message sur les boîtes de cases à cocher</nowiki><br /> # (boîtes de message voyez plutôt la fonction mess)'''<br /> function mche ()<br /> {<br /> dialog --backtitle "Présentation de dialog" --title "Les boîtes de cases à cocher" \<br /> --ok-label "Suite" --msgbox "<br /> Une boîte de cases à cocher permet de proposer un menu<br /> à choix multiples. Sa syntaxe est --checklist<br /> text height width list-height [tag item status] ...<br />
<br />
Le menu principal de ce script est une boîte de ce<br /> type. Vous la retrouverez en quittant cet écran." 12 60<br /> }<br />
<br />
'''<nowiki># Définition d'une boîte de cases à cocher</nowiki>'''<br /> # Menu principal de choix des boîtes du script<br /> function chec ()<br /> {<br />'''<nowiki># boîte de cases à cocher proprement dite</nowiki><br /> dialog --backtitle "Présentation de dialog" --title "Liste des boîtes" \<br /> --ok-label "Valider" --cancel-label "Quitter" \<br /> --checklist "<br /> Cochez les boîtes dont vous souhaitez une présentation." 18 60 10 \<br /> "intr" "Introduction à dialog" off \<br /> "info" "Boîte d'information" off \<br /> "mess" "Boîte de message" off \<br /> "fsel" "Boîte de sélection de fichier" off \<br /> "text" "Boîte de fichier texte" off \<br /> "gaug" "Boîte de barre d'avancement" off \<br /> "yesn" "Boîte oui non" off \<br /> "inpu" "Boîte d'entrée de valeur" off \<br /> "pass" "Boîte de mot de passe" off \<br /> "time" "Boîte d'heure" off \<br /> "menu" "Boîte de menu" off \<br /> "mche" "Boîte de cases à cocher (message sur)" off 2> $FICHTMP'''<br />'''<nowiki># traitement de la réponse</nowiki>'''<br /> # 0 est le code retour du bouton Valider<br /> # ici seul le bouton Valider permet de continuer<br /> # tout autre action (Quitter, Esc, Ctrl-C) arrête le script.<br /> if [ $? = 0 ]<br /> then<br /> for i in `cat $FICHTMP`<br /> do<br /> case $i in <br /> \"intr\") intr ;;<br /> \"info\") info ;;<br /> \"mess\") mess ;;<br /> \"fsel\") fsel ;;<br /> \"text\") text ;;<br /> \"gaug\") gaug ;;<br /> \"yesn\") yesn ;;<br /> \"inpu\") inpu ;;<br /> \"pass\") pass ;;<br /> \"time\") time ;;<br /> \"menu\") menu ;;<br /> \"mche\") mche ;;<br /> esac<br /> done<br /> else exit 0<br /> fi<br /> }<br />
<br />
'''<nowiki># Fin des définitions des fonctions</nowiki><br /> # Boucle d'appel du menu principal à l'infini'''<br /> while :<br /> do chec<br /> done<br />
<br />
<nowiki># dialog offre de nombreuses autres possibilités.</nowiki><br /> # A vous maintenant de les découvrir au travers<br /> # par exemple de sa page man :o)<br />
<br />
<nowiki># # # Fin du script # # #</nowiki><br />
<br />
</div><br />
<br />
== Conclusion ==<br />
<br />
Le programme dialog offre bien d'autres possibilités qui ne sont ni présentées dans cette page ni exploitées dans le script. On ne peut faire simple et compliqué à la fois. La plupart des boîtes ont été mises dans un contexte minimum que vous pouvez enrichir. Ainsi par exemple certains boutons et codes retour n'ont pas été utilisés. En voici la liste car ils pourraient cependant vous être utiles. Les boutons pouvant être renommés à volonté, les labels attribués peuvent donc varier selon les scripts.<br />
<br />
<div style="margin-left: 40px;">Bouton Yes ou OK (Oui ou Accepter) : 0<br /> Bouton No ou Cancel (Non ou Annuler) : 1 <br /> Bouton Help (Aide) : 2<br /> Bouton Extra : 3<br /> Touche Esc : 255<br /> Erreurs dans dialog : -1</div><br />
<br />
Maintenant que vous avez fait connaissance avec dialog, et avez certainement compris le principe général de son fonctionnement, vous pourrez tirer plus de profit de sa page man dont voici une [http://www.delafond.org/traducmanfr/man/man1/dialog.1.html traduction française].<br />
<br />
Merci d'avoir lu cet article. Si en utilisant le script vous y trouviez quelques bugs, merci de me mailer afin de m'en avertir. Si vous avez des idées d'améliorations qui s'accordent avec la simplicité et la lisibilité souhaitées de l'ensemble, merci aussi de m'en faire part... en joignant autant que possible le code correspondant à celles-ci.<br />
<br />
Merci à Léa d'avoir accepté de publier cet article.<br />
<br />
<div class="merci">Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Marc le 30/12/2004.</div><br />
<br />
= Copyright =<br />
Copyright &copy; 30/12/2004, Marc<br />
{{CC-BY-NC-SA}}<br />
<br />
<br />
=Autres ressources=<br />
<br />
* [http://www.delafond.org/traducmanfr/man/man1/dialog.1.html La page de man de Dialog en français]</div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=Driver:WinModems&diff=9089
Driver:WinModems
2005-10-14T15:44:48Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div>==WinModems==<br />
modems RTC (téléphoniques) ou Numéris internes (cartes PCI ou ISA)<br />
<br />
===Navigation dans les logiciels===<br />
<br />
* [[Driver:Modems|Retour à Modems]]<br />
<br />
===Liste des logiciels [WinModems]===<br />
<br />
<br />
====3Com PCI 56K Fax====<br />
ce modem est supporté par le kernel de Linux directement via le port ttyS4 (cf doc de Léa)<br />
* [http://lea-linux.org/trucs/lire.php3?id=26 La doc de Léa]<br />
<br />
<br />
====ACP modem (Mwave)====<br />
Il s'agit d'un driver linux pour le modem ACP (Mwave), un WinModem. Il est composé d'un module kernel et d'une application. Ce driver fournit du support pour l'IBM ThinkPad 600E. le modem supporte aussi le port serie standard (ttySx) et est compatible avec le set de commande AT. <br />
<br />
* [http://oss.software.ibm.com/acpmodem/ http://oss.software.ibm.com/acpmodem/]<br />
<br />
<br />
====Aztech cnr2800 winmodem====<br />
C'est un winmodem monté dans beaucoup de pc premier prix, mais un pilote pour linux existe.<br />
* [http://www.aztech.com/driver/modem_amrcnr.htm http://www.aztech.com/driver/modem_amrcnr.htm]<br />
<br />
<br />
====Broadcom BCM421x====<br />
Dell's Broadcom BCM421x driver<br />
* [http://www.idir.net/~gromitkc/broadcom/bcm421x.html http://www.idir.net/~gromitkc/broadcom/bcm421x.html]<br />
<br />
<br />
====Connexant types HCF, HSF, Riptide====<br />
<br />
<br />
Pilotes officiels (dont le source n'est pas complètement libre) pour les modems basés sur les chipsets Connexant. <br />
<br />
<br />
Attention : après avoir utilisé la communauté pour réaliser ses béta-tests et réaliser ainsi un produit de bonne qualité, Linuxant a rendu ses drivers payants !<br />
* [http://www.linuxant.com/drivers/ http://www.linuxant.com/drivers/]<br />
<br />
<br />
====ELSA PCI HCF WINMODEM 56K V90 (chipset rockwell)====<br />
<br />
<br />
Carte PCI WInModem type HCF Microlink<br /><br />
<br />
Constructeur : ELSA <br /><br />
<br />
Norme : V90 56K<br /><br />
<br />
Chipset : Rockwell <br />
<br />
<br />
Infos de lspci sous MDK 9.1 :<br /><br />
<br />
00:0b.0 Serial controller: Rockwell International HCF 56k <br /><br />
Data/Fax/Voice Modem (rev 01) (prog-if 00 [8250])<br /><br />
<br />
Subsystem: Elsa AG MicroLink 56k Modem<br /><br />
<br />
Flags: bus master, medium devsel, latency 0, IRQ 3<br /><br />
<br />
Memory at de000000 (32-bit, non-prefetchable) [size=64K]<br /><br />
<br />
Capabilities: <br /><br />
<br />
00:0b.0 Class 0700: 127a:1004 (rev 01) <br />
<br />
<br />
Le driver de Connexant fonctionne très bien sous MDK 9.1. Fichier RPM testé : <br /><br />
hcfpcimodem-0.99mbsibeta02123100-1.i386.rpm <br />
<br />
* [http://www.linuxant.com/drivers/hcf/downloads.html http://www.linuxant.com/drivers/hcf/downloads.html]<br />
<br />
<br />
====ELSA PCI V90====<br />
Si votre modem est basé sur un chip connexant il est possible d'utiliser le driver développé par olitec pour sa "Carte PCI 56K V92 Ready V2". Téléchargez le pilote qui correspond à votre distribution et suivez les indications d'Olitec pour l'installation. Ce pilote fonctionne avec une carte ELSA alors que les pilotes génériques essayés n'ont pas fonctionnés.<br />
* [http://www.olitec.com/pci56kv2.html http://www.olitec.com/pci56kv2.html]<br />
<br />
<br />
====modems basés sur les chipsets Lucent====<br />
Pour les modems basés sur les chipsets Lucent Apollo et Mars.<br />
* [http://www.sfu.ca/~cth/ltmodem/ http://www.sfu.ca/~cth/ltmodem/]<br />
<br />
<br />
====Modems USB Cable====<br />
Les modems suivants sont supportés par le kernel au moyen du module CDCEther.o <br />
<br />
* Ericsson PipeRider (toutes les variantes) <br />
* Motorola (DM100 and SB4100) <br />
* Broadcom Cable Modem <br />
* Toshiba PCX1100U <br />
<br />
<!--A l'attention des moderateurs, je peux fournir la doc pour utiliser ces drivers mat-hieu@ifrance.com --><br />
* [http://kernel.org http://kernel.org]<br />
<br />
<br />
====motorola SM56 V90====<br />
Winmodem courament distribué à une époque (reculée ? ;-) <br />
La doc est disponible au lien indiqué. Ce driver a été testé avec la Red Hat, je n'ai pas encore essayé avec la Mandrake.<br />
* [http://e-www.motorola.com/collateral/SM56_DRIVERS.html#linux http://e-www.motorola.com/collateral/SM56_DRIVERS.html#linux]<br />
<br />
<br />
====Olitec 56K PCI v90/v92====<br />
Driver du modem Olitec 56k PCI v90/v92 pour Mandrake, Slackware, Suse, RedHat...<br /><br />
Il semblerait que ces drivers soit très instables, au moins sur certaines configuration (comme la Slackware)<br />
* [http://www.olitec.com/linux.html http://www.olitec.com/linux.html]<br />
<br />
<br />
====Olitec PCI 128 RNIS====<br />
le driver est dans le kernel<br />
* [http://lea-linux.org/hardware/olitec.php3 La doc de Léa]<br />
<br />
<br />
====PCTel Linmodem====<br />
Driver pour les modems internes PCI basés sur le chipset de PCTel. Inclus le support pour chipsets Via, Asus, CM8x, Sis, PCT et les modems AMR.<br />
* [http://linmodems.technion.ac.il/pctel-linux/ http://linmodems.technion.ac.il/pctel-linux/]<br />
* [http://pctelcompdb.sourceforge.net/index.php La base de données des modems gérés par ce driver]<br />
<br />
<br />
====Smart Link Soft Modem====<br />
<br />
* Winmodems inclus sur les chipsets ICH0, ICH2, Via 686A, 686B, 8231, 8233, SiS 630, ALI 1535. <br />
* PCI SmartPCI56, SmartPCI561 <br />
* USB SmartUSB56 (chipset ST7554: 0x483/0x7554, utilisé dans de NOMBREUX modems usb). <br />
* Le support pour ALI 15x3 + ALi5451 est "prévu"... <br />
<br />
* [http://www.smlink.com http://www.smlink.com]<br />
* [ftp://ftp.smlink.com/Update/linux/unsupported ftp://ftp.smlink.com/Update/linux/unsupported]<br />
<br />
<br />
====Winmodem avec puce Intel v90 Data/Fax Host Acceler====<br />
Modem PCI utilisé entre autres dans les HP Pavilion. <br />
Je n'ai jamais réussi à l'installer.<br />
* [http://developer.intel.com/design/modems/support/drivers_linux.htm http://developer.intel.com/design/modems/support/drivers_linux.htm]<br />
<br />
<br />
====WS-5614PASG====<br />
Les drivers pour Smarlink proposés pour le driver "Smart Link Soft Modem" de la même rubrique fonctionnent très bien pour ce modem<br />
* [http://www.smlink.com http://www.smlink.com]</div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=Driver:Wifi&diff=9088
Driver:Wifi
2005-10-14T15:44:47Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div>==Wifi==<br />
Le matériel sans fil sous Linux. Voir [http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Wireless.html le Linux Wireless LAN Howto] [anglais] et [http://www.fuw.edu.pl/~pliszka/hints/wireless.html cette autre page] [anglais] pour plus d'infos sur le wifi.<br />
<br />
===Navigation dans les logiciels===<br />
<br />
* [[Driver:Réseau|Retour à Réseau]]<br />
<br />
===Liste des logiciels [Wifi]===<br />
<br />
<br />
====3COM 3CDRW696 (carte PCI)====<br />
Cette carte a comme chipset Prism2. Utiliser le driver linux-wlan pour la faire fonctionner, et suivre les indications du fichier README !<br />
* [http://www.linux-wlan.org/ http://www.linux-wlan.org/]<br />
<br />
<br />
====Apple Airport====<br />
la carte wifi des Apple. Fonctionne avec le module airport.o<br />
* [ http://www.linux-wlan.org/]<br />
<br />
<br />
====Apple AirPort Extreme====<br />
Carte mini-pci Apple 802.11g avec un chipset broadcom. <br />
<br />
Aucun driver n'est disponible et la solution NDISwrapper/DriverLoader ne fonctionne pas sur powerpc (les drivers binaires sont pour i386). <br />
<br />
La seule solution : que Broadcom donne suffisement d'infos pour que des drivers puissent être développés sous linux. C'est l'objet de la pétition ci-dessous :<br />
* [http://www.petitiononline.com/BCM4301/ http://www.petitiononline.com/BCM4301/]<br />
<br />
<br />
====Chipset Atmel (Pack InvenTel Wanadoo)====<br />
Chipset de multiples cartes WIFI dont la DLink DWL-120<br />
* [http://sourceforge.net/projects/at76c503a/ Le site du driver]<br />
* [http://download.berlios.de/at76c503a/at76c503-0.11.tar.gz Le driver]<br />
<br />
<br />
====Chipset ISL38xx====<br />
Pour des cartes supportant le protocole 802.11g<br />
* [http://ruslug.rutgers.edu/~mcgrof/802.11g/ http://ruslug.rutgers.edu/~mcgrof/802.11g/]<br />
<br />
<br />
====Chipset RealTek RTL8180====<br />
On le trouve sur les cartes d'entrée de gamme... <br />
Il existe un driver non libre propoée par Realtek. <br />
Il semble que ce driver ne fonctionne qu'avec un noyau 2.4.20 <br />
Il subsite quelques problèmes : déconnection, plantage. <br />
Bref pas recommandé pour une utilisation sous linux<br />
* [http://www.realtek.com.tw/downloads/downloads1-3.aspx?software=True&compamodel=RTL8180L http://www.realtek.com.tw/downloads/downloads1-3.aspx?software=True&compamodel=RTL8180L]<br />
<br />
<br />
====Chipset TI ACX 100====<br />
7/2003 : un driver opensource vient de sortir (version alpha !) pour le chipset wifi TI ACX 100...<br />
* [http://acx100.sourceforge.net/ http://acx100.sourceforge.net/]<br />
<br />
<br />
====Compaq HNW 100====<br />
Carte PCMCIA. Fonctionne parfaitement sous MDK 9.0 et 9.1.<br />
* [http://zeck.netliberte.org/linux/howto/lecture.php?fic=hnw100 http://zeck.netliberte.org/linux/howto/lecture.php?fic=hnw100]<br />
<br />
<br />
====Compaq HNW 200====<br />
Adaptateur USB. Fonctionne sous MDK 9.0 et 9.1 avec des drivers GPL. Il semblerait que la version de ifconfig de la mdk 8.2 pose probleme lors de l'affectation de l'ip. Il faudrait tester avec une version plus recente de cet outil.<br />
* [http://zeck.netliberte.org/linux/howto/lecture.php?fic=hnw200 http://zeck.netliberte.org/linux/howto/lecture.php?fic=hnw200]<br />
<br />
<br />
====D-Link di-614+====<br />
Il s'agit d'un routeur rj45 et wifi, très facile à configurer : <br />
un port wan pour brancher un modem rj 45 10, <br />
4 ports rj 45 10/100 pour les branchement des machines. Il <br />
prend en charge toutes les connections internet (win;linux;mac ).<br />
* [ http://zeck.netliberte.org/linux/howto/lecture.php?fic=hnw200]<br />
<br />
<br />
====D-link DWL 520+ et DWL 650+====<br />
Ces deux cartes fonctionnent sous Linux (ainsi que celles basée sur le TI ACX100) avec un driver non officiel. Voir le [[Trucs:Oldid=345|truc et astuce correspondant]].<br />
* [http://support.dlink.com/products/view.asp?productid=DWL%2D520%2B la page chez Dlink]<br />
* [http://www.ivor.it/wireless/acx.html Les drivers Linux (binaires seulement)]<br />
* [http://acx100.sourceforge.net/ http://acx100.sourceforge.net/]<br />
<br />
<br />
====D-link DWL G520====<br />
D-Link ne propose pas de driver officiel pour cette carte mais madwifi, un project sourceforge propose une solution. La dernière version est sur CVS, c'est facile à installer, et ça marche trés bien (en 54Mbits et pas 108Mbits domage).<br />
* [http://sourceforge.net/projects/madwifi/ http://sourceforge.net/projects/madwifi/]<br />
* [http://www.dlink.com/products/?pid=12 http://www.dlink.com/products/?pid=12]<br />
<br />
<br />
====dell truemobile 1150====<br />
Carte PCMIA ou mini-pci Wifi commercialisée par Dell. Reconnue et marche très bien sous la Redhat 8.<br />
* [ http://www.dlink.com/products/?pid=12]<br />
<br />
<br />
====driverloader linuxant: proposition de mise à jour====<br />
Le DriverLoader pour cartes wifi développé par Linuxant est maintenant payant (passé la période d'essai de 30 j), au prix de $29 environ. <br />
Le Ndiswrapper qui lui est VRAIMENT libre peut fonctionner très bien à la place à la seule condition d'enlever TOUTE référence à une version précédente, y compris manuellement.<br />
* [http://www.linuxant.com/driverloader/wlan/install.php?PHPSESSID=f99527b10616639714f84038d387e870 http://www.linuxant.com/driverloader/wlan/install.php?PHPSESSID=f99527b10616639714f84038d387e870]<br />
<br />
<br />
====DriverLoader pour cartes wifi====<br />
<br />
<br />
Fonctionne pour les chipsets Broadcom, Intel (Centrino), Atheros, Texas Instruments (ATX100), Intersil (Prism GT/Duette/Indigo), Realtek (RTL8180L). Permet de faire fonctionner à pleine capacité le Wifi sous Linux en utilisant le driver Windows. <br />
<br />
<br />
La licence est assez restrictive, mais comme les sources sont fournies, ces drivers ne devraient pas poser de problème à chaque nouvelle version du kernel. <br />
<br />
<br />
Attention, le fabricant de ce driver est Linuxant qui a aussi réalisé les drivers pour les winmodems à base de chipset connexant, se basant sur la communauté pour le béta test. Linuxant a par la suite rendu ses drivers payants ! Pour ce driver, il semble qu'il y ait une licence à durée de validité limitée dans le temps.<br />
* [http://www.linuxant.com/drivers_bcmwl/bcmwl5/ http://www.linuxant.com/drivers_bcmwl/bcmwl5/]<br />
<br />
<br />
====Intel PRO/Wireless 2100 (IPW2100) mini PCI adapter====<br />
Drivers pour les cartes Intel PRO/Wireless 2100<br />
* [http://ipw2100.sourceforge.net http://ipw2100.sourceforge.net]<br />
<br />
<br />
====Intel PRO/Wireless 2200 (IPW2200)====<br />
Drivers pour les cartes Intel PRO/Wireless 2200 : i.e. Intel Centrino pour 802.11g<br />
* [http://ipw2200.sourceforge.net/ http://ipw2200.sourceforge.net/]<br />
<br />
<br />
====MadWifi====<br />
Pour carte à base de chipset Atheros <br />
Fonctionne très bien en 802.11b ET g mais demande un peu de temps pour l'înstallation. Nécessite le paquet wireless-tools.<br /><br />
<br />
Important: supporte, en plus des modes adhoc et infrastructure, un mode master qui permet de transformer votre PC en point d'accès. Idéal pour éviter le couteux achat d'un point d'accès routeur 802.11g<br />
* [http://sourceforge.net/projects/madwifi/ http://sourceforge.net/projects/madwifi/]<br />
* [http://madwifiwiki.thewebhost.de/wiki/WifiCards Liste des cartes supportées]<br />
<br />
<br />
====NdisWrapper====<br />
NdisWrapper est un module noyau qui permet de charger certains pilotes Windows. Il permet actuellement de faire fonctionner les cartes Broadcom. Il remplit le même office que DriverLoader de Linuxant, mais il est libre.<br />
* [http://ndiswrapper.sourceforge.net/ http://ndiswrapper.sourceforge.net/]<br />
<br />
<br />
====NetGear MA 101====<br />
Le NetGear MA101 fonctionne très bien avec le driver at76c503a<br />
* [http://at76c503a.berlios.de/ http://at76c503a.berlios.de/]<br />
<br />
<br />
====Netgear MA111 usb (fcc id: PY3MA111)====<br />
<br />
<br />
Les modules nécessaires sont : prism2_usb, p80211 issus de linux-wlan-ng. <br />
<br />
<br />
Démarrage sous Debian/Knoppix : <code>/etc/init.d/wlan start</code> <br />
<br />
<br />
Fichiers de configuration : dans /etc/wlan, wlancfg (ex: specifier un SSID) et wlancfg-DEFAULT ou wlancfg-SSID <br />
source=wlanng,wlan0, prism2source,11 #pour kismet ;) <br />
<br />
<br />
iwconfig ne passe pas.<br />
* [ http://at76c503a.berlios.de/]<br />
<br />
<br />
====Netgear MA311====<br />
Carte Wifi 802.11b <br />
Les drivers de wlan fonctionnent avec encore un peu de difficulté pour la mise en place.<br />
* [http://www.linux-wlan.com http://www.linux-wlan.com]<br />
<br />
<br />
====NetGear WG511T====<br />
C'est une carte avec un chipset Atheros dont les drivers sont fournis par le projet madwifi. Aucun problème particulier, si ce n'est que pour utiliser cette carte sur une mandrake, il faut un kernel ET ses sources puis compiler le driver comme indiquer par Dimitri Clatot sur la page de Léa.<br />
* [http://madwifi.sourceforge.net/ Le driver]<br />
* [http://lea-linux.org/hardware/wifi.html La page de Léa]<br />
<br />
<br />
====Pilotes Libres chipsets Ralink====<br />
Après un passage des pilotes de rt2400 et rt2500 en GPL de la société Ralink, un pilote commun rt2x00 [pci/usb] est en développement !<br />
* [http://rt2400.sf.net http://rt2400.sf.net]<br />
<br />
<br />
====Prism54====<br />
Les drivers libres pour les chipsets Prism GT / Prism Duette / Prism Indigo (802.11g). <br />
<br />
* [http://www.prism54.org http://www.prism54.org]<br />
<br />
<br />
====Ralink RT2400 et RT2500====<br />
Permet le support des cartes MSI PC54G2 et autres cartes avec un chipset Ralink<br />
* [http://www.ralinktech.com/supp-1.htm http://www.ralinktech.com/supp-1.htm]<br />
* [http://gentoo-wiki.com/HARDWARE_rt2500#Headline_text http://gentoo-wiki.com/HARDWARE_rt2500#Headline_text]<br />
<br />
<br />
====SMC 2802w V2====<br />
Cette carte wifi de SMC est la seconde version de la 2802w. Contrairement à la version 1, la version 2 n'est pas supportée par prism54. Malgré tout, vous pouvez la faire fonctionner en mode ad-hoc et managed avec ndiswrapper et les pilotes Windows. Les performances restent très bonnes mais la connexion est parfois instable. Attention à utiliser l'une des dernières versions de ndiswrapper (seules les plus récentes la supportent)<br />
* [http://ndiswrapper.sourceforge.net/ http://ndiswrapper.sourceforge.net/]<br />
* [http://http://forum.hardware.fr/hardwarefr/Hardware/Linux-SMC-2802w-sujet-658341-1.htm http://http://forum.hardware.fr/hardwarefr/Hardware/Linux-SMC-2802w-sujet-658341-1.htm]<br />
<br />
<br />
====trendnet tew-423PI====<br />
fonctionne sous linux avec le module acx100 qui supporte les <br />
chipsets axc111, WEP non supporté.<br />
* [http://acx100.sourceforge.net/ http://acx100.sourceforge.net/]<br />
<br />
<br />
====WIFI Asus WL-130b/Ralink RT2460====<br />
WIFI Asus WL-130b et chipset Ralink RT2460 : identique a celui d' une carte PCI de www.minitar.com qui elle est compatible RED HAT (SME/FREE-EOS). Les source des drivers peuvent être téléchargés.<br />
* [http://www.minitar.com http://www.minitar.com]<br />
* [http://xoomer.virgilio.it/flavio.stanchina/debian/rt2400.html installation du driver WIFI pour Asus WL-130 sur Debian]<br />
<br />
<br />
====Z-Com xi-735 (ou Sagem xi-735)====<br />
Driver prism2 modifié afin de fonctionner avec le dongle Wifi Z-Com xi-735 (fourni avec le pack Wifi Tiscali)<br />
* [http://gabshome.chez.tiscali.fr http://gabshome.chez.tiscali.fr]</div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=Driver:Webcams&diff=9087
Driver:Webcams
2005-10-14T15:44:46Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div>==Webcams==<br />
L'[../hardware/webcam.php3 article sur les webcams USB sur Léa].<br />
<br />
===Navigation dans les logiciels===<br />
<br />
* [[Driver:Multimédia|Retour à Multimédia]]<br />
<br />
===Liste des logiciels [Webcams]===<br />
<br />
<br />
====CPiA====<br />
Un autre chip équipant les webcams. Le module est inclu dans le kernel. Pour les webcams supportées, voir le site du driver.<br />
* [http://webcam.sourceforge.net http://webcam.sourceforge.net]<br />
<br />
<br />
====Creative NX Pro====<br />
Après quelques essais, c'est pour l'instant le module spca de michel xhaard (voir lien ci-dessous) qui fonctionne. <br />
Attention, difficultés pour le noyau de la mandrake 10.0, mais pas de problèmes avec mandrake 10.1.<br />
* [http://mxhaard.free.fr/ http://mxhaard.free.fr/]<br />
<br />
<br />
====Creative WebCam Go (<b>pas 3 USB</b>)====<br />
Cette webcam n'est pas encore supportée, mais des travaux sont en route (cf lien). Là encore Creative ne fait rien pour que ça avance plus vite.<br />
* [http://winbond-webcam.sourceforge.net http://winbond-webcam.sourceforge.net]<br />
<br />
<br />
====Logitech Quick Cam Express====<br />
Voici les pilotes pour la webcam logitech quickcam express, une fois décompréssés faites un make install et fini . <br />
<br /><br />
Pour associer la webcam à Gnomeeting, on peut utiliser <tt>usbmgr</tt>. <br />
<br /><br />
NDM:Le site mirroir est étrange, je ne sais si l'on peut faire une entière confiance à la provenance de ces packages (une page indiquant d'ou viennent les packages etc... serait la bienvenue)<br />
* [http://qce-ga.sourceforge.net http://qce-ga.sourceforge.net]<br />
* [http://www.dotaster.com/~shuu/linux/usbmgr/ http://www.dotaster.com/~shuu/linux/usbmgr/]<br />
* [http://sylpard.free.fr Un mirroir ?]<br />
<br />
<br />
====NW802====<br />
ici, la doc du site dont le lien suit n'est pas très claire, mais si tous les autres drivers de webcams n'ont pas marché essayez celui-là, bien qu'il ne semble pas vraiment finalisé et est très instable. Il est reporté fonctionner avec les BTC SurfCam CMOS300k et le Mustek WCam 300, et a priori toute webcam basée sur le chipset NW802 et 801. C'est un driver encore '''très''' expérimental.<br />
* [http://nw802.sourceforge.net/news.html http://nw802.sourceforge.net/news.html]<br />
<br />
<br />
====OV511 et OV518====<br />
Ce driver (ov511.o et ov511_decomp.o/ov518_decomp.o) est inclu dans le kernel, mais cette version n'est pas toujours à jour. Les chips ov511 ou ov518 équipent bon nombre de webcams bon marché. Le driver semble relativement efficace depuis que la compression est prise en charge.<br />
* [http://alpha.dyndns.org/ov511 http://alpha.dyndns.org/ov511]<br />
* [http://alpha.dyndns.org/ov511/cameras.html Les Webcams supportées]<br />
* [http://lea-linux.org/hardware/webcam.php3 L'article de Léa]<br />
<br />
<br />
====Philips====<br />
Les webcams USB Philips ont un driver dont le décompresseur, initialement développé sous NDA (Non Disclosure Agreement) donc closed source, a été redéveloppé sous licence libre, et fonctionne très bien.<br /><br />
<br />
Pour la liste des webcams supportées, voir la page du driver.<br />
* [http://www.saillard.org/linux/pwc/ http://www.saillard.org/linux/pwc/]<br />
* [http://www.smcc.demon.nl/webcam ancien driver (decompresseur closed source)]<br />
<br />
<br />
====SPCA5xx USB====<br />
Ce driver supporte actuellement 147 webcams (voir lien ci-dessous) : chipsets Sunplus, Etoms, Conexant, Z-star, Vimicro, Sonix, Zoran, IcMedia, TransVision utilisées dans de nombreuses webcams du marché.<br />
* [http://mxhaard.free.fr/ http://mxhaard.free.fr/]<br />
* [http://mxhaard.free.fr/spca5xx.html Webcams supportées]<br />
<br />
<br />
====STV0680 USB====<br />
ce chip équipe par exemple les webcams : Aiptek Pencam et Nisis Quickpix 2<br />
* [http://personal.atl.bellsouth.net/clt/k/j/kjsisson/ http://personal.atl.bellsouth.net/clt/k/j/kjsisson/]<br />
<br />
<br />
====Webcam Go (Plus) USB====<br />
Supportée sans problème grâce aux drivers w9968cf et ovcamchip (ov511 patché par un fichier dans w9968cf, lire les instructions), marche sous gnomemeeting.<br />
* [http://go.lamarinapunto.com http://go.lamarinapunto.com]<br />
* [http://alpha.dyndns.org/ov511 http://alpha.dyndns.org/ov511]</div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=Driver:USB&diff=9086
Driver:USB
2005-10-14T15:44:45Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div>==USB==<br />
modems ADSL connectés sur le port USB<br />
<br />
===Navigation dans les logiciels===<br />
<br />
* [[Driver:ADSL|Retour à ADSL]]<br />
<br />
===Liste des logiciels [USB]===<br />
<br />
<br />
====Asus AAM6000UG alc/ame====<br />
Modem asus avec chipset ALCATEL !<br />
* [http://sourceforge.net/projects/aam6000ug/ http://sourceforge.net/projects/aam6000ug/]<br />
<br />
<br />
====Atlantis USB ADSL====<br />
Les pilotes Linux (Red Hat, Fedora) du modem Atlantis USB AO1-AU1 se trouvent sur le site de Atlantis Land <br />
http://www.atlantis-land.com <br />
Quelqu'un peut-il les essayer sous ubuntu ? <br />
Bonne chance. N.R.<br />
* [http://www.nv2r.com http://www.nv2r.com]<br />
<br />
<br />
====Bewan ADLS USB====<br />
Driver pour modem bewan ADSL USB.<br />
* [http://www.bewan.fr/bewan/utilisateurs/telechargement/download.php?id=86 http://www.bewan.fr/bewan/utilisateurs/telechargement/download.php?id=86]<br />
* [http://www.bewan.fr/bewan/utilisateurs/telechargement/pilotes/adsl/linux/A1012-A1006-A904-A888-0.8.7.tgz Le TGZ]<br />
<br />
<br />
====Comtrend CT-650====<br />
Le driver que donne 9telecom ne marche pas ! Il faut utiliser eagle-usb. J'ai moi-même eu des problemes avec ce modem ; il faut les sources du kernel pour le compiller.<br />
* [http://eagle-usb.fr.st http://eagle-usb.fr.st]<br />
<br />
<br />
====ECI - Eicon - Speedtouch ADSL Modem====<br />
Des modifications des drivers pour supporter le pppoe, un driver pour le modem eicon adsl (vendu en belgique), voila ce qu'on peut trouver à cette page <br />
* [http://www.prout.be/ECI/index.html http://www.prout.be/ECI/index.html]<br />
<br />
<br />
====ECI B-Focus ADSL USB====<br />
Livré avec l'offre ADSL de Club-Internet, ce modem utilise les mêmes drivers que le Hi-Focus.<br />
* [http://eciadsl.flashtux.org http://eciadsl.flashtux.org]<br />
<br />
<br />
====ECI Hi-Focus ADSL USB====<br />
un autre modem ADSL USB bien supporté.<br />
* [http://eciadsl.flashtux.org http://eciadsl.flashtux.org]<br />
* [http://lea-linux.org/hardware/eci_usb.php3 La doc de Léa]<br />
<br />
<br />
====ELSA Microlink ADSL USB====<br />
Modem ADSL d'ELSA (en faillite depuis). Basé sur les drivers SAGEM/ADI.<br />
* [http://sourceforge.net/projects/elsausbadsl/ http://sourceforge.net/projects/elsausbadsl/]<br />
<br />
<br />
====Olitec adsl usb v2 & v3====<br />
Driver pour Linux pour les modems Olitec ADSL USB (pack Tiscali notamment).<br />
* [http://www.olitec.com/adsl-linux.html Le driver développé par Olitec]<br />
* [http://bcrp-web.chez.tiscali.fr le driver libre]<br />
<br />
<br />
====Sagem F@st 800 USB====<br />
C'est le modem USB fourni par Free dans son offre ADSL. Il est livré avec un driver Linux (à priori kernel 2.4.10). <br />
<br /><br />
Par contre, j'ignore si ces drivers sont libres ou non (ce n'est pas précisé sur le site de free). <br />
<br /><br />
Attention aux frais de résiliation de contrat pouvant s'élever jusqu'a 99&euro;.<br />
* [http://adsl.free.fr http://adsl.free.fr]<br />
* [http://eagle-usb.fr.st Eagle-USB : Site communautaire pour vous aider à installer ce modem sous Linux]<br />
* [http://extranet.sagem.com/ama90 Le driver lui-même]<br />
* [http://www.minet.net/pierre/sagem/INSTALL.txt Un HowTo 'spécifique' debian]<br />
* [http://www.minet.net/pierre/sagem/hitDriver.php Le driver modifié pour le HowTo précédant]<br />
* [http://dim.tuxfamily.org/debian-sagem-fast-800.html Un autre HowTo pour debian Woody]<br />
* [http://dim.tuxfamily.org/free-Howto Un Howto pour la RedHat]<br />
* [http://ftp.club-internet.fr/pub/unix/linux/distributions/Mandrake-devel/cooker/i586/Mandrake/RPMS/adiusbadsl-1.0.2-0.cc3.1mdk.i586.rpm Le RPM Mandrake]<br />
<br />
<br />
====Sagem Fast 800 USB====<br />
Un pilote 'officiel' est disponible sur le site de Sagem... Ainsi que le mode d'emploi<br />
* [http://www.sagem.fr/web-modems/download/support-fast1000-fr.htm#800 http://www.sagem.fr/web-modems/download/support-fast1000-fr.htm#800]<br />
<br />
<br />
====Speed Touch 330 (Alcatel/Thomson)====<br />
Encore un SpeedTouch et bien qu'il soit USB ce n'est pas le SpeedTouch USB (celui la c'est la raie manta), c'est un modèle différent, avec un driver différent.<br /><br />
<br />
Note de Jice : ce modem fonctionne aussi avec les même drivers libres que la raie manta (Speedtouch USB Alcatel), mais il faut prendre la toute dernière version. Par exemple, vous devrez mettre à jour les drivers de la Mandrake 9, car ils ne supportent pas ce modem.<br />
* [http://www.speedtouch.fr/support_fr.htm Le support en français]<br />
* [http://www.speedtouch.com/dvrdownload_lx.htm Le driver]<br />
* [http://speedtouch.sourceforge.net Le driver open source]<br />
<br />
<br />
====Speed Touch ADSL USB====<br />
un modem ADSL bien supporté sous Linux. Il s'agit de la "raie manta" fabriquée par Alcatel. Les toutes dernières versions (20/1/2003) supportent aussi le Speedtouch 330 de Thomson.<br />
* [http://speedtouch.sourceforge.net Le driver OpenSource (le plus stable...)]<br />
* [http://www.speedtouchdsl.com/support.htm Le driver d'Alcatel (à éviter, intéressant juste pour le firmware)]<br />
* [http://lea-linux.org/trucs/lire.php3?id=132 Les articles de Léa sur ce modem]</div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=Driver:Scanners&diff=9085
Driver:Scanners
2005-10-14T15:44:44Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div>==Scanners==<br />
<br />
<br />
===Navigation dans les logiciels===<br />
<br />
* [[Driver:Index|Retour à l'index]]<br />
<br />
===Liste des logiciels [Scanners]===<br />
<br />
<br />
====Canon parallèle====<br />
Voilà enfin un driver pour les scanners Canon en port parallèle. Pour les modèles : <br />
* FB630P et FB330P <br />
* FB620P et FB320P<br />
* [http://canon-fb330p.sourceforge.net/ http://canon-fb330p.sourceforge.net/]<br />
<br />
<br />
====EPSON Perfection 1240U====<br />
Scanner USB. Fonctionne directement avec SANE. Il suffit <br />
de mettre "usb /dev/usb/scanner0" (sans les guillemets!) <br />
comme unique ligne de "/etc/sane.d/epson.conf"<br />
* [http://panda.mostang.com/sane/ http://panda.mostang.com/sane/]<br />
<br />
<br />
====EPSON Perfection 1250U====<br />
Sane ne reconnait pas les scanners perfection 1250U et 1250U photo ; malgré tout la société Epson Kowa propose un programme se voulant l'èquivalent de twain pour Windows : il est maintenant partiellement disponible sous une license similaire à la GPL (un pas dans la bonne direction).<br />
* [http://www.epkowa.co.jp/english/linux_e/linux.html http://www.epkowa.co.jp/english/linux_e/linux.html]<br />
* [http://www.epkowa.co.jp/english/linux_e/lsd_e.html Les Download]<br />
<br />
<br />
====Epson Perfection 1650====<br />
parfaitement supporté par SANE<br />
* [http://panda.mostang.com/sane/ http://panda.mostang.com/sane/]<br />
<br />
<br />
====Epson Perfection 1660 Photo====<br />
les scanners Epson Perfection 1660 Photo fonctionnent avec SANE 'out of the box' (ie:sans rien faire ... ou presque ;-)<br />
* [http://panda.mostang.com/sane SANE]<br />
<br />
<br />
====Genius GS-4500 Scanner====<br />
Driver pour scanner Genius<br />
* [http://www.willamowius.com/gs4500.html http://www.willamowius.com/gs4500.html]<br />
<br />
<br />
====Primax Colorado D300/600 et compatibles====<br />
Pour les scanners Primax non supportés par SANE.<br />
* [http://primax.sourceforge.net/download.html http://primax.sourceforge.net/download.html]<br />
<br />
<br />
====Scanner HP 3400c====<br />
enfin reconnu avec Xsane, testé avec mdk 9.1.<br />
* [ http://primax.sourceforge.net/download.html]<br />
<br />
<br />
====Scanner parallèle====<br />
Sane est aussi le driver de référence pour les scanners parallèles.<br />
* [http://panda.mostang.com/sane SANE]<br />
* [http://www.buzzard.org.uk/jonathan/scanners.html Les scanners supportés]<br />
* [http://lea-linux.org/hardware/scannerpp.php3 La doc de Léa]<br />
<br />
<br />
====Scanner SCSI====<br />
Sane est le driver pour la plupart des scanners SCSI.<br />
* [http://www.mostang.com/sane SANE]<br />
* [http://panda.mostang.com/sane/sane-backends.html Les scanners supportés]<br />
* [http://lea-linux.org/hardware/scanner.php3 La doc de Léa (un peu obsolète, mais toujours utile)]<br />
<br />
<br />
====Scanner USB====<br />
Sane est aussi le driver de référence pour les scanners USB.<br />
* [http://panda.mostang.com/sane SANE]<br />
* [http://www.buzzard.org.uk/jonathan/scanners-usb.html Les scanners supportés]<br />
* [http://lea-linux.org/hardware/usbscan.php3 La doc de Léa]<br />
<br />
<br />
====Snapscan Touch, HP3300, HP3400C====<br />
De façon générale, un excellent projet pour les scanners basés sur le chipset "niash" (HP 3300C, HP3400C, Agfa Snapscan Touch). <br />
Le driver fonctionne sur le HP3300 ; pour l'Agfa, il est en cours de finition (Fignolage du 600 DPI) mais est tout à fait utilisable. Les courageux pourront utiliser CVS (C'est que j'ai en ce moment). <br />
Ce driver ne fait pas nécessairement appel au module "scanner", il peut aussi appeler directement la librairie "libusb".<br />
* [http://sourceforge.net/projects/hp3300backend http://sourceforge.net/projects/hp3300backend]<br />
* [http://home.kabelfoon.nl/~bertrik/hp3300c/hp3300c.html Les scanners supportés]</div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=Driver:R%C3%A9seau&diff=9084
Driver:Réseau
2005-10-14T15:44:44Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div>==Réseau==<br />
<br />
<br />
===Navigation dans les logiciels===<br />
<br />
* [[Driver:Index|Retour à l'index]]<br />
* [[Driver:Modems]]<br />
* [[Driver:Wifi]]<br />
* [[Driver:Cartes Ethernet]]<br />
<br />
===Liste des logiciels [Réseau]===<br />
<br />
<br />
====hsflinmodem pour mdk 9.2====<br />
Contrairement à ce qui est dit sur le site, Olitec met à disposition le driver à jour pour la mandrake 9.2. <br />
Et en plus, contrairement à linuxant, il est gratuit. <br />
Fonctionne sur Laptop Vaio PCG-FR285E<br />
* [http://www.olitec.com/pci56kv2.html http://www.olitec.com/pci56kv2.html]<br />
<br />
<br />
====modem Sagem fast 800 usb (driver alternatif)====<br />
Lle driver pour le modem sagem fast 800 (eagle) du site de Sagem ne fonctionne pas sur mon i686 et apparemment pas du tout ou très peu (forums).<br /><br />
<br />
Un autre driver existe sur eagle-usb.org (1er lien). <br />
On peut trouver un tar.bz2 sur sourceforge (2me lien). <br />
<br />
<br />
<br />
* [http://www.eagle-usb.org/article.php3?id_article=36 eagle-usb.org]<br />
* [https://sourceforge.net/project/showfiles.php?group_id=81588&package_id=83540&release_id=244557 sourceforge]<br />
<br />
<br />
====routeur wifi sitecom wl-018====<br />
Ce routeur wifi avec serveur d'impression est très facile à configurer grâce à sa page web intégrée.<br /><br />
<br />
Tout fonctionne bien sous Linux.<br /><br />
<br />
Seul problème : pour le serveur impression il faut une imprimante gdi ou ppa.<br /><br />
<br />
Sitecom fourni les pilotes linux sur son site.<br />
* [http://www.sitecom.com http://www.sitecom.com]<br />
<br />
<br />
====Usb-Usb network Bridge Adapter====<br />
Le driver pour cable réseau Usb-Usb network bridge, de chez Prolific Technology (pl-2302)<br />
* [http://tech.prolific.com.tw/visitor/fcabdl.asp?fid=10629852 Le driver]<br />
<br />
<br />
====z600 series lexmark====<br />
Pilotes pour imprimantes lexmark z6xx. Il fonctionne sur avec les z301, 602 et 605... Le tar.gz sort 2 rpm, un pour pddk, l'autre pour cups. <br />
Je m'étais fait ça pour ne pas me galèrer en la ré-installant sur mandrake 9.2, mais ca doit etre possible ailleurs! <br />
Télécharger les sources du driver sur: <br />
http://www.downloaddelivery.com/srfilecache/CJLZ600LE-CUPS-1.0-1.TAR.gz <br />
<br />
Se mettre root. <br />
<br />
L'ouvrir avec la commande <br />
tar xvzf CJLZ600....tar.gz <br />
<br />
puis se donner les droits sur le fichier avec <br />
chmod u+x le_fichier <br />
<br />
Exécuter le fichier avec <br />
./z600cups-1.0-1.gz.sh -keep <br />
<br />
Satisfaire les dependences libtcl et tk avec <br />
ln -s /usr/lib/libtcl8.4.so /usr/lib/libtcl8.3.so <br />
ln -s /usr/lib/libtk8.4.so /usr/lib/libtk8.3.so <br />
<br />
Aller dans le repertoire créé à l'installation du premier fichier <br />
cd ./installer <br />
<br />
installer les paquets sans tenir compte des dépendances avec <br />
urpmi -allow-nodeps z600cups....rpm <br />
urpmi -allow-nodeps z600pddk....rpm <br />
<br />
Pour finir, configurer soit avec printerdrake, soit en tapant http://localhost:631 dans le navigateur, en utilisant les droits root <br />
<br />
* [http://www.downloaddelivery.com/srfilecache/CJLZ600LE-CUPS-1.0-1.TAR.gz http://www.downloaddelivery.com/srfilecache/CJLZ600LE-CUPS-1.0-1.TAR.gz]</div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=Driver:PCI&diff=9083
Driver:PCI
2005-10-14T15:44:43Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div>==PCI==<br />
modems ADSL internes (carte PCI)<br />
<br />
===Navigation dans les logiciels===<br />
<br />
* [[Driver:ADSL|Retour à ADSL]]<br />
<br />
===Liste des logiciels [PCI]===<br />
<br />
<br />
====BEWAN ADSL PCI====<br />
C'est la première carte PCI ADSL de Bewan. <br />
Et contrairement à la version ST, Bewan n'a pas voulu adapter les drivers fournis par Conexant... mais ils fonctionnent quand même.<br />
* [http://www.themad-house.co.uk/Conexant/conexant-specification.html http://www.themad-house.co.uk/Conexant/conexant-specification.html]<br />
<br />
<br />
====BEWAN ADSL PCIst====<br />
Les driver sont fournis en tant que source par BeWan eux-même, le statut concernant la license des drivers n'est pas clair (il faut s'enregistrer pour pourvoir télécharger les sources) ; néanmoins, c'est un constructeur qui supporte Linux.<br />
* [http://www.bewan.fr/bewan/produits/modems/adslpcist.php http://www.bewan.fr/bewan/produits/modems/adslpcist.php]<br />
* [http://lea-linux.org/hardware/bewan_pcist.php3 La doc de Léa]<br />
<br />
<br />
====Carte PCI ADSL Conexant====<br />
Fonctionne sous Linux, voir l'article ci-dessous pour plus d'infos.<br />
* [http://frlinux.net/?section=reseau&article=95 http://frlinux.net/?section=reseau&article=95]<br />
<br />
<br />
====Driver pour Alcatel speedtouch PCI ADSL====<br />
Un joli manuel dans le tarball permet de configurer ça facilement. <br />
Le seul problème c'est qu'il est conçu pour un noyau 2.4.16. En espérant des nouvelles mises à jour.<br /><br />
<br />
Note : la société qui construisait le chipset (Itex) étant en liquidation, il n'y aura sans doute jamais de driver libre pour cette puce :-( <br />
<br />
* [http://www.nzdsl.co.nz/software/other/Kernel-2.4.16.tar.gz http://www.nzdsl.co.nz/software/other/Kernel-2.4.16.tar.gz]<br />
* [http://www.dlink.com.au/tech/drivers/files/modems/Linux1483.zip http://www.dlink.com.au/tech/drivers/files/modems/Linux1483.zip]<br />
* [http://www.dlink.com.au/tech/drivers/files/modems/dsl100dv227_1483.zip http://www.dlink.com.au/tech/drivers/files/modems/dsl100dv227_1483.zip]<br />
<br />
<br />
====Drivers Bewan Adsl Pci St====<br />
Howto Bewan Adsl Pci st spécial Mandrake + drivers en download <br />
<br />
* [http://www.justlinux.org http://www.justlinux.org]</div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=Driver:Ordinateurs_portables&diff=9082
Driver:Ordinateurs portables
2005-10-14T15:44:41Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div>==Ordinateurs portables==<br />
Liens pour vous aider à configurer les périphériques de votre portable. Voir aussi les sites : <br />
<br />
* <a href="http://linux-on-laptops.com">Linux on Laptops <br />
* [http://mobilix.org Mobilix] <br />
<br />
<br />
===Navigation dans les logiciels===<br />
<br />
* [[Driver:Index|Retour à l'index]]<br />
<br />
===Liste des logiciels [Ordinateurs portables]===<br />
<br />
<br />
====acer aspire 1300====<br />
<br />
* processeur amd atlon xp 1400+ <br />
* chipset via proSavage kn133 carte son via <br />
* reseau via <br />
* usb via <br />
* modem connexant hsf <br />
<br />
<br />
<br />
Plusieurs versions de Linux se sont très bien installées, <br />
tous les périphériques ont été reconnus, <br />
sauf le modem pour lequel il faut aller chercher le driver chez Connexant.<br />
* [http://www.mbsi.ca/cnxtlindrv/ http://www.mbsi.ca/cnxtlindrv/]<br />
<br />
<br />
====ACER Aspire1601LC====<br />
<br />
<br />
Installation de Mandrake 9.2 (Edition Download) mais sûrement possible avec d'autre distributions. Néanmoins le fait que les pilotes ATI ne soient distribués que sous forme d'un paquet RPM limite peut être le choix (mais Debian par ex est possible en utilisant alien cf howto cité dans les URLs) <br />
<br />
<br />
Démarrer l'installation avec linux noapic pci=noacpi. Avec Mandrake, l'ACPI n'est pas installé par défaut. Il faut recompiler le noyau (au moins version 2.4.22) <br />
<br />
<br />
Le modem fontionne avec le pilote smartlink !<br />
* [http://home.gna.org/aspire1601lc/french.html http://home.gna.org/aspire1601lc/french.html]<br />
* [http://www.ati.com/support/drivers/linux/radeon-linux.html Drivers]<br />
* [http://www.smlink.com/content.aspx?id=53 Smartlink]<br />
<br />
<br />
====Acer Hotkey Driver====<br />
le driver Acer Hotkey est un module kernel permettant d'utiliser les touches raccourcies des Portables Acer dans la serie Travelmate.<br /><br />
<br />
Il peut générer des codes de touches réelles et est accessible via procfs ou un /dev<br />
* [http://www.informatik.hu-berlin.de/~tauber/acerhk/ http://www.informatik.hu-berlin.de/~tauber/acerhk/]<br />
<br />
<br />
====Acer travelmate 290 series====<br />
Installation sur Debian : tout fonctionne à condition d'installer xfree4.3 pour le chip graphique i820, et le kernel 2.6.7 pour le son ... <br />
Les touches multimédia fonctionnent bien. <br />
Penser à installer ipw2100 pour le wifi. <br />
Gravure et lecture dvd impeccables. <br />
Modem et iee1394 non testés<br />
* [ http://www.informatik.hu-berlin.de/~tauber/acerhk/]<br />
<br />
<br />
====ACER Travelmate 4001LMi====<br />
<br />
<br />
Processeur Intel Centrino 1.5Ghz, Carte graphique ATI Radeon Mobility 9700, Carte WIFI Intel Pro Wireless 2200BG, Chipset Intel 855GME, Lecteur/Graveur CD DVD <br />
<br />
<br />
<br />
Installation sans problème de Mandrake 10. Avec des versions récentes de cdrecord et dvd+rw-tools, la gravure de cd et dvd fonctionne. Les derniers pilotes d'ATI permettent d'utiliser l'accélération 3D. Carte WIFI et modem fonctionnent<br />
* [http:/tm4001lmi.tuxfamily.org http:/tm4001lmi.tuxfamily.org]<br />
<br />
<br />
====Apple iBook====<br />
Fonctionne parfaitement bien avec une Mandrake 8.2 PPC (son, modem, réseau, gestion de l'énergie ("<tt>xosview +pmu</tt>"...), etc.).<br /><br />
<br />
(Mon iBook est une "palourde" bleue de la première génération : G3 300, 128 Mo RAM, 6,4 Go HD).<br />
* [http://www.linux-mandrake.com/fr http://www.linux-mandrake.com/fr]<br />
* [http://lea-linux.org/hardware/ibook.php3 Le journal de Linux sur iBook]<br />
<br />
<br />
====ASUS L2400D====<br />
Tout marche (sauf l'accélération 3D et la sortie TV).<br />
* [http://julien.lerouge.free.fr/md9675.html http://julien.lerouge.free.fr/md9675.html]<br />
<br />
<br />
====ASUS L3500D====<br />
Mandrake Linux 9.1 s'installe correctement, mais certains éléments du chipset SiS 740 ne sont pas reconnus : le modem interne (un winmodem), le port IEEE 1394. De plus, le chipset graphique ne fonctionne qu'avec un pilote VESA générique.<br /><br />
<br />
Mandrake installe par défaut le module APM, qui ne fonctionne pas avec ce portable, mais pas le module ACPI. Il est possible d'installer les modules "acpi" et "acpid" depuis les CD d'installation de Mandrake, mais ils ne seront opérationnels qu'après avoir modifié le fichier /etc/lilo.conf (remplacer "acpi=off" par "acpi=on"). Une fois cette opération effectuée, les modules en question sont correctement lancés au démarrage... mais la température du processeur semble rester élevée.<br /><br />
<br />
Des drivers pour le winmodem et la carte graphique existent sur internet... mais je n'ai pas réussi à les faire fonctionner, bien que j'aie suivi à la lettre les instructions de leurs auteurs.<br /><br />
<br />
Tous les autres composants sont OK : le combo dvd/graveur, le son, l'ethernet, l'USB, la souris infrarouge fournie par ASUS, le touchpad... Je n'ai pas testé le PCMCIA.<br />
* [ http://julien.lerouge.free.fr/md9675.html]<br />
<br />
<br />
====Compaq Armada M700 PIII 1gigahertz====<br />
De la MDK 8.2 à la 9.2.je n'ai rencontré aucun problème, à part le winmodem integré, maintenant reconnu par la 9.2. De plus, j'utilise un modem en PCMCIA, une carte Wifi Belkin ref:F5D6020f qui est reconnue sans anicroche, carte reseau intel / son sur alsa ou arts, carte video rage mobility avec sortie tv, tout fonctionne sans problème. Bref, rien que du bon ce portable.<br />
* [ http://julien.lerouge.free.fr/md9675.html]<br />
<br />
<br />
====Compaq Evo n1005V====<br />
<br />
<br />
Ce portable m'a posé beaucoup de problèmes à cause du chipset ALI M5229. <br />
<br />
<br />
J'ai réussi à installer Mandrake 9.0 (kernet 2.4.19) avec les commandes suivantes pour l'installation et le démarrage (configurer Lilo.conf pour que ce soit automatique) :<br /><br />
<br />
<tt>linux devfs=mount hdc=ide nopentium nobiospnp pci=biosirq ide=nodma nomce idebus=66 nousb</tt> <br />
<br />
<br />
Tout marche parfaitement sauf le son et l'USB mais je n'ai pas dit mon dernier mot ! <br />
<br />
<br />
Update : le son fonctionne avec Mandrake 9.1, mais toujours pas l'USB. <br />
<br />
<br />
Mise à jour : Installation de Mandrake 9.2 édition download : Cliquer sur F1 lors du démarrage, puis saisir : <code>alt1 noauto nomce nousb</code>. L'installation ne pose aucun problème avec une souris PS/2 ou le Touchpad du portable. Par contre, ne pas utiliser de souris USB. Sinon, aucun problème !<br />
* [ http://julien.lerouge.free.fr/md9675.html]<br />
<br />
<br />
====Compaq Evo n1015V====<br />
<br />
<br />
Testé sur la MDK9.1rc2 <br />
<br />
<br />
Comme pour le portable Compaq Evo n1005V, il faut ajouter : <br />
devfs=nomount nobiospnp pci=biosirq nomce<br /><br />
<br />
à lilo. <br />
<br />
<br />
Pour le son, l'usb et le réseau, il y a dans /etc/modules.conf :<br /><br />
<br />
alias eth0 8139cp<br /><br />
<br />
alias souns-slot-0 snd-ali5451<br /><br />
<br />
probeall usb-interface usb-ohci <br />
<br />
<br />
Ce qui ne marchera pas :<br /><br />
<br />
les touches supplémentaires du clavier (il y en a 6) et de la souris (il y à un gamepad en dessous du touch-pad),<br /><br />
<br />
la carte ATI intégrée, Xfree fonctionne avec le driver "vesa" en 1024x768 16M couleurs mais pas de 3D pour l'instant. <br />
<br />
* [ http://julien.lerouge.free.fr/md9675.html]<br />
<br />
<br />
====Compaq Presario 1700====<br />
Pas de problème avec ce portable à part le combo ethernet/modem que ce soit sur mandrake, RedHat ou Debian. <br />
<br />
Le son recquiert le module maestro3 (expérimental sur 2.2.x et 2.4.x) => nécéssite une recompilation du kernel sur Debian (sur la Potatoes en tout cas). <br />
Reconnu sans problème en revanche sous RedHat et Mdk. <br />
<br />
Tout le reste fonctionne parfaitement: le combo DVD/CD-RW, touchpad, sortie TV pour les Divx et DVD, ports USB, PCMCIA... <br />
<br />
* [ http://julien.lerouge.free.fr/md9675.html]<br />
<br />
<br />
====Compaq presario 920====<br />
Après quelques problèmes j'arrive à faire tourner une debian (unstable) <br />
<br />
* pour les kernel 2.4 non patchés, il faut passer des paramètres au kernel (cf compaq evo) <br />
* après recompilation avec les bon patchs (cf url proposées) cela n'est plus nécessaire et l'acpi, l'usb, le dma fonctionnent <br />
* le son fonctionne avec oss et alsa (cf liens) <br />
* la carte réseau à base de chipset 8139 fonctionne, je n'ai pas testé le modem <br />
* xfree fonctionne avec vesa et depuis peu il existe un module pour xfree 4.3 qui asssure une accélération vidéo (mais pas 3D) : cool pour lire les divx et dvd mais pas encore stable <br />
<br />
<br />
* [http://videl.ics.hawaii.edu/mailman/listinfo/linuxpresario900 http://videl.ics.hawaii.edu/mailman/listinfo/linuxpresario900]<br />
* [http://metaverse.wuh.wustl.edu/~cypher/presario900/ http://metaverse.wuh.wustl.edu/~cypher/presario900/]<br />
<br />
<br />
====compaq presario x1000====<br />
<br />
<br />
Pas de problème avec ce portable : <br /><br />
<br />
Xfree OK, son (module intel8x0 de alsa) OK, Divx et DVD OK, USB OK. <br />
<br />
<br />
Je n'ai pas testé PCMCIA, ni gravure, mais à mon avis cela doit aller. <br />
<br />
<br />
Test avec une Mdk 8.1 et une LFS maison.<br />
* [ http://metaverse.wuh.wustl.edu/~cypher/presario900/]<br />
<br />
<br />
====dell c810====<br />
la mandrake 8.1 8.2 et 9 semble fonctionner parfaitement, à une exception près : quand l'ordinateur se met en veille par rapport au minutage du bios, alors l'écran se sépare en deux parties et il est impossible de récupérer un écran normal par la suite. C'est un bug très très pénible pour lequel il faudrait un driver ou un patch correct ... merci de faire un appel en ce sens svp.<br />
* [ http://metaverse.wuh.wustl.edu/~cypher/presario900/]<br />
<br />
<br />
====Dell Inspiron 7500====<br />
Installer une distribution GNU/Linux Debian. <br />
Tous les périphériques fonctionnent.<br />
* [http://a.labarthe.free.fr http://a.labarthe.free.fr]<br />
<br />
<br />
====Fujitsu Lifebook e350====<br />
Tout fonctionne parfaitement : tous les périphériques fonctionnent. Bien penser à activer la carte son dans le bios, et la configurer à la main dans sndconfig (irq, I/O) en recopiant les paramètres donnés par le bios.<br />
* [ http://a.labarthe.free.fr]<br />
<br />
<br />
====Fujitsu-Siemens Amilo A 1630====<br />
Tout fonctionne parfaitement sous Mandrake 10.0 mais le seul problème c'est qu'il n'existe pas de driver approprié pour la carte graphique : <br />
<br />
- ATI Radeon Mobility 9700 (128 Mo) <br />
<br />
--> Au final pas d'accélération 3D possible !! Quelle déception !!<br />
* [ http://a.labarthe.free.fr]<br />
<br />
<br />
====Fujitsu-Siemens C series LIFEBOOK====<br />
Tout marche parfaitement, il faut juste penser à remplacer "usb-uhci" par "uchi" dans /etc/modules.conf lors de l'installation de la carte MA101 (wireless usb) sinon, ça plante......<br />
* [ http://a.labarthe.free.fr]<br />
<br />
<br />
====FUJITSU/SIEMENS AMILO A7614-09GD / A1400 / CY26====<br />
<br />
<br />
Linux Knoppix (Distribution basée sur Debian bootable sur CD et installable) est relativement bien supportée mais le modem et la carte video posent problèmes : <br />
* la carte video fonctionne (mais pas d acceleration 3D), <br />
* un driver pour le winmodem est en cours de developement. <br />
<br />
* [http://rzr.online.fr/linux.htm Infos]<br />
<br />
<br />
====FUJITSU/SIEMENS AMILO Pro V2020====<br />
L'installation de Linux Mandrake 10.0 est houleuse ! Toujours le problème de carte graphique non reconnue (Intel 82855 ...).<br /><br />
<br />
J'ai essayé la version complète 10.0 ( 7CD), ça a l'air un peu mieux mais pas parfait (il faut prévoir au moins 10G en tout pou Linux) <br />
<br />
* [ Infos]<br />
<br />
<br />
====Gericom Hollywood====<br />
Fedora (core 4 au moment où je poste ce message) <br />
presque tout fonctionne! ;) <br />
Je ne me suis pas encore penché sur le modem, mais je vais bientôt devoir le faire!<br />
* [http://saliouk.free.fr/gericom/ http://saliouk.free.fr/gericom/]<br />
<br />
<br />
====Gericom Hollywood 15,2'' TFT 15:10 WideScreen====<br />
<br />
<br />
Je viens de m'acheter récemment le portable Géricom Hollywood pour la modique somme de 1600 euros. <br />
<br />
<br />
Au programme : <br />
* P4M 2 GHz <br />
* 512 MB DDR-RAM extensible à 1024 <br />
* 40 GB <br />
* 15.2 TFT Display (WXGA 1280 x 854) au format 15/10 (pour lecture DVD) <br />
* Nvidia GeForce4 440 64 MB <br />
* Combo CD-RW/DVD-RW (graveur de DVD) <br />
* carte PCMCIA Wireless, adaptateur Flash 4 en 1 <br />
* garantie 3 ans (Carrefour) <br />
<br />
<br />
Sous linux, tout passe à peu près, vous trouverez sur ma page les résultats de l'installation d'une Debian testing/unstable. (sarge/sid) sur un noyau 2.4.20 patché.<br />
* [http://cubitus.info.unicaen.fr:8080/samir/53 http://cubitus.info.unicaen.fr:8080/samir/53]<br />
<br />
<br />
====Gericom webshox p4 2000====<br />
Tout fonctionne avec la mdk 9.1 édition download. <br />
(j'ai juste un bug avec le modem, il a fonctionné pendant 2 mois avec la 9.0, puis s'est arrêté, et ne fonctionne plus même avec la 9.1)<br />
* [ http://cubitus.info.unicaen.fr:8080/samir/53]<br />
<br />
<br />
====Gericom X5 force====<br />
<br />
<br />
Un portable à prix intéressant vendu en grande surface pour moins de 1500<br /><br />
<br />
Ci-joint le résultat d'un '''lspci''' <br />
<br />
<br />
<tt>00:00.0 Host bridge: VIA Technologies, Inc. VT8753 [P4X266 AGP] (rev 01)<br /><br />
<br />
00:01.0 PCI bridge: VIA Technologies, Inc. VT8633 [Apollo Pro266 AGP]<br /><br />
<br />
00:03.0 CardBus bridge: Texas Instruments PCI1410 PC card Cardbus Controller (rev 02)<br /><br />
<br />
00:07.0 USB Controller: VIA Technologies, Inc. USB (rev 50)<br /><br />
<br />
00:07.1 USB Controller: VIA Technologies, Inc. USB (rev 50)<br /><br />
<br />
00:07.2 USB Controller: VIA Technologies, Inc. USB 2.0 (rev 51)<br /><br />
<br />
00:0a.0 FireWire (IEEE 1394): VIA Technologies, Inc. IEEE 1394 Host Controller (rev 46)<br /><br />
<br />
00:11.0 ISA bridge: VIA Technologies, Inc. VT8233 PCI to ISA Bridge<br /><br />
<br />
00:11.1 IDE interface: VIA Technologies, Inc. Bus Master IDE (rev 06)<br /><br />
<br />
00:11.2 USB Controller: VIA Technologies, Inc. USB (rev 23)<br /><br />
<br />
00:11.3 USB Controller: VIA Technologies, Inc. USB (rev 23)<br /><br />
<br />
00:11.5 Multimedia audio controller: VIA Technologies, Inc. VT8233 AC97 Audio Controller (rev 30)<br /><br />
<br />
00:11.6 Communication controller: VIA Technologies, Inc. AC97 Modem Controller (rev 70)<br /><br />
<br />
00:12.0 Ethernet controller: VIA Technologies, Inc. VT6102 [Rhine-II] (rev 70)<br /><br />
<br />
01:00.0 VGA compatible controller: nVidia Corporation NV17 [GeForce4 420 Go 32M] (rev a3)</tt> <br />
<br />
<br />
Le modem interne fonctionne, les drivers sont [ftp://ftp.smlink.com/Update/linux/unsupported disponibles ].<br /><br />
<br />
L'infrarouge ne fonctionne pas. <br />
L'APM ne fonctionne pas mais l'ACPI le remplace <br /><br />
<br />
Pour l'utilisateur d'une Mandrake, il faut upgrader avec le kernel gérant [http://people.mandrakesoft.com/~quintela/acpi/ l'ACPI]. <br />
Avec ça on peut avoir la surveillance des batterie via '''Kacpi''' ou la dernième version de '''gkrellm'''. <br />
Ce dernier point sera géré sans modif avec la prochaine Mandrake 9.1.<br /><br />
<br />
La carte graphique NVidia est prise en charge par les drivers de la marque.<br /><br />
<br />
La carte son n'est gérée que par '''ALSA'''<br />
<br />
<br />
L'USB 2.0 et le firewire sont parfaitement fonctionnels. <br />
<br />
<br />
En résumé, si l'infra rouge n'est pas fonctionnel, il s'agit d'une super bécane pour LINUX<br />
* [http://artm-friends.at/rm/mylinux.php http://artm-friends.at/rm/mylinux.php]<br />
<br />
<br />
====Hp Omnibook Xe3====<br />
Ce portable fonctionne très bien avec Linux Mandrake 8 et 9. La carte réseau est reconnue sans problème.<br />
* [ http://artm-friends.at/rm/mylinux.php]<br />
<br />
<br />
====IBM thinkapd 600E====<br />
La carte son marche (sur trois pattes NDM: cela n'engage que l'auteur de ces propos que nous ne connaissons pas ;-) avec le driver OSS de la cs4232; mais si vous voulez utiliser au maximum ses possibilités, il faudra vous tourner vers les drivers ALSA de la cs 46xx ;). La carte graphique fonctionne parfaitement avec XFree 4.1.0 (XAA supporté), mais la version 4.2.0 peut-être patchée (NDM: est-ce de la diffamation ?) afin de supporter XV. Ci joint un binaire précompilé <br />
<br />
<br />
<br />
<font color=red>/!\</font> Pensez à lire la doc d'Mplayer avant de l'installer !!! <br />
<br />
<br />
<br />
Rien d'autre à ajouter, si ce n'est qu'IBM a fait une page expliquant tout ça mieux que moi. (NDM:Les autres constructeurs peuvent-ils se plaindre de cette publicité pour IBM ?)<br />
* [http://http://www.pc.ibm.com/qtechinfo/MIGR-4BP6Q6.html http://http://www.pc.ibm.com/qtechinfo/MIGR-4BP6Q6.html]<br />
* [http://http://panopticon.csustan.edu/thood/tp600lnx.htm http://http://panopticon.csustan.edu/thood/tp600lnx.htm]<br />
* [http://www.mplayerhq.hu/DOCS/video.html http://www.mplayerhq.hu/DOCS/video.html]<br />
* [http://www.mplayerhq.hu/MPlayer/contrib/NeoMagic-driver/ http://www.mplayerhq.hu/MPlayer/contrib/NeoMagic-driver/]<br />
<br />
<br />
====IBM Thinkpad 116 71G====<br />
Un IBM : 1200 Serie<br /><br />
<br />
Installation impeccable de la Redhat 8.0. Le un modem RNIS USB Djinn 128 USB est reconnu (pilote Siemens I-Surf 1.0). Le graveur Freecom USB2 16/40 monté sur une carte PCMCIA Sitecom CB-003 en USB2 fonctionne, même si l'extinction bloque et qu'il n'est quelquefois pas reconnu au démarrage. Il faut au moins 192 Mo de RAM, c'est-à-dire le maxi pour ce modèle. <br />
En conclusion, c'est la distrib' que je vais laisser à demeure sur le portable car c'est celle qui reconnaît le plus de matériel et son installation est aussi simple que celle de Jaguar (MAC OSX).<br />
* [ http://www.mplayerhq.hu/MPlayer/contrib/NeoMagic-driver/]<br />
<br />
<br />
====LifeBook B2610====<br />
Tout est expliqué dans un truc et astuces de Léa.<br />
* [http://lea-linux.org/trucs/index.php3?aff_item=501 Le truc &amp; astuce en question]<br />
<br />
<br />
====MDK 9.1 sur un Compaq Série 900 (dont 915EA)====<br />
Eh voui.. On rencontre quelques problèmes lorsqu'on souhaite installer le tout dernier Bébé de Mandrake sur un Compaq 915EA... Grâce à toute la communauté Linuxienne du web, j'ai pu, sans trop de difficultés, l'installer... Voici un petit guide fait de mes propres mains qui je l'espère vous sera d'une grande aide. <br />
<br />
°°{gMiNi}°°<br />
* [http://perso.wanadoo.fr/gminisite/mdkcompaq.html http://perso.wanadoo.fr/gminisite/mdkcompaq.html]<br />
<br />
<br />
====MEDION / Microstar MD2624====<br />
Je n'ai pas réussi à faire fonctionner le modem (winmodem) et l'affichage sous X demande un peu de patience malgré la dernière version des drivers NVIDIA. Pour le reste ça marche. Pour le reste voir sur mon site la page consacrée à cette installation.<br />
* [http://www.om-conseil.com/article.php?sid=46 http://www.om-conseil.com/article.php?sid=46]<br />
<br />
<br />
====Medion MD9438====<br />
Tout fonctionne à peu près. Les détails sont donnés sur cette page :<br />
* [http://upsilon.free.fr/md9438/index.html http://upsilon.free.fr/md9438/index.html]<br />
<br />
<br />
====Redhat 9 sur un Compaq Presario 736====<br />
L'installation d'un Redhat 9 sur ce portable ne pose pas de difficultés majeures ; seuls le modem et la gestion de l'acpi ne fonctionnent pas nativement. Vous pourrez trouver sur ma page, citée ci-dessous, les opérations à effectuer pour profiter pleinement du portable.<br />
* [http://cosinux.tuxfamily.org/linux_on_presario.php http://cosinux.tuxfamily.org/linux_on_presario.php]<br />
<br />
<br />
====Samsung V20CXT====<br />
Comme j'ai écrit un article concernant le support de ce laptop sous linux, je pense que c'est pas mal d'en faire profiter la communauté. <br />
Tout fonctionne, sauf le modem interne ....<br />
* [http://julien.spontanet.com/article.php3?id_article=1 http://julien.spontanet.com/article.php3?id_article=1]<br />
<br />
<br />
====Sony VAIO FX 601====<br />
Cette machine et toutes ses déclinaisons sont un excellent choix pour installer GNU/Linux. <br />
<br />
Tout le hard de ces machines est supporté sous linux (éventuellement au prix d'un peu de travail). <br />
<br />
Le lien plus bas est un excellent point d'entrée.<br />
* [http://www.p-weissgerber.de/en/notebook.html http://www.p-weissgerber.de/en/notebook.html]<br />
<br />
<br />
====Sony VAIO FX702====<br />
Il fonctionne globalement... c'est à dire, tout sauf :* les touches spéciales du clavier,* conflit avec la carte son (module sonypi),* le processeur tourne à fond car pas de support powernow. <br />
La carte 3d doit marcher, ou va bientot marcher. <br />
<br /><br />
La sortie télé marche impeccable, je n'ai juste pas trouvé de logiciel pour basculer du mode TV au mode normal. <br />
<br /><br />
Le touchpad fonctionne, mais possède moins de fonctionnalités que sous windows... <br />
<br /><br />
L'acpi, le software suspend, etc, sont en plein developpement, je n'ai pas testé. <br />
<br /><br />
Le modem a encore quelques problèmes, chez moi du moins. <br />
<br /><br />
Tout le reste marche du tonnerre de dieu. <br />
<br /><br />
Note : il est livré préinstallé avec Windows XP, et plein de logiciels, et est partitionné en NTFS. C'est ennuyeux de payer tous ces logiciels pour en faire une utilisation tout Linux...<br />
* [ http://www.p-weissgerber.de/en/notebook.html]<br />
<br />
<br />
====Sony Vaio PCG-FR105====<br />
Ce qui foncitonne : <br />
<br />
* <br />
La carte 3d (encore mieux avec le pilotes Nvidia). <br />
* La sortie TV. <br />
* Le touchpad. <br />
* Le Firewire (testé avec camescope "Sony" et le logiciel "Kino"). <br />
* Le port // fonctionne <br />
* Les lecteurs (disquette, graveur, dvd) <br />
* La sortie 2ème moniteur fonctionne (essais sur rétroprojecteur) <br />
* L'USB 1.1 <br />
<br />
Ne fonctionnent pas : <br />
<br />
* l'acpi <br />
* le software suspend <br />
* le modem <br />
* l'USB 2.0 <br />
<br />
* [ http://www.p-weissgerber.de/en/notebook.html]<br />
<br />
<br />
====Sony Vaio PCG-FR105====<br />
Pour corriger ce qui est déjà indiqué : <br />
Sur une Fedora Core 2 <br />
Le modem interne est reconnu <br />
L'usb2 a toujours fonctionné chez moi <br />
Pour le soft suspend, je cherche <br />
<br />
* [ http://www.p-weissgerber.de/en/notebook.html]<br />
<br />
<br />
====Sony Vaio PCG-R505JEK====<br />
configurer votre laptop Sony<br />
* [http://rooster.stanford.edu/~ben/linux/sony.html http://rooster.stanford.edu/~ben/linux/sony.html]<br />
<br />
<br />
====Targa visionary====<br />
Athlon4 1600+, 256MO, DD "40"Go. Avec Mandrake 9b4 c'est excellent. <br />
<br />
* Carte vidéo reconnu: savage4 <br />
* Carte son -> OK <br />
* Carte réseau -> OK <br />
* USB -> OK <br />
* (lecteur de CF/SM sur usb -> OK) <br />
* PCMCIA -> OK <br />
* (adaptation CF sur pcmcia)-> OK (un pb avec la 9.0) <br />
* Clavier -> OK <br />
* Le touche pad -> OK <br />
* Combo cdrom/graveur/dvd -> OK <br />
* xine -> plante <br />
<br />
Reste le modem, mais j'utilise une passerelle ;) <br />
Le plus génant c'est que depuis j'ai enlevé les options d'éconnomie d'énergie, il y a des "gels" fréquents. <br />
xmms, mplayer et ogle -> excellent<br />
* [http://pascal62fr.free.fr http://pascal62fr.free.fr]<br />
<br />
<br />
====Toshiba Portégé 7200 series====<br />
Testé avec une MDK 9.1, <br />
le module yenta_socket (pcmcia) fait planter la machine, j'ai donc ajouté ceci à /etc/lilo.conf :<br /><br />
<br />
linux acpi=off devfs=mount<br /><br />
<br />
<br />
Encore une fois, pensez à remplacer "usb-uhci" par "uchi" dans /etc/modules.conf lors de l'installation de la carte MA101 (wireless usb) sinon, ça plante...<br />
* [ http://pascal62fr.free.fr]<br />
<br />
<br />
====Toshiba Satellite 200 CDT====<br />
<br />
<br />
J'ai un vieux Pentium 100 Mhz, 40 RAM, 810 HD, tournant sous Drinou-Linux 1.8 (basé sur Slackware 7.1) parfaitement en mode UMSDOS, car besoin de garder window$ 98 pour certaines applications. <br />
<br />
<br />
<br />
Drinou-Linux fonctionne à merveille et me permet de surfer sur le net via le navigateur Dillo, de faire de l'irc (Xchat), écrire des documents (Ted), et même de jouer à Tétris sous environnement graphique ICEwm (par défaut), BlackBox et même XFCE !! <br />
<br />
<br />
<br />
Je la recommande à tout linuxien ayant une petite machine peu puissante, en particulier un portable! <br />
<br />
<br />
<br />
Inconvénients : <br />
<br />
<br />
nombreux paramétrages à effectuer à la main (modem, droits users, carte son, etc.), via la ligne de commande. <br />
<br />
<br />
Néanmoins, la documentation fournie avec Drinou-Linux permet de régler rapidement bon nombres de petits problèmes de paramétrage, le reste étant disponible sur de nombreux sites web ou forums. <br />
<br />
* [http://toshiba.linux.site.voila.fr http://toshiba.linux.site.voila.fr]<br />
<br />
<br />
====Toshiba Satellite 5005-S504 Laptop====<br />
faire fonctionner tous les périphériques de votre laptop Toshiba <br />
* [http://rooster.stanford.edu/~ben/toshiba http://rooster.stanford.edu/~ben/toshiba]<br />
<br />
<br />
====Toshiba Satellite M30X-142====<br />
<br />
<br />
Tout fonctionne sous Debian unstable. <br />
wifi: module ipw2200 (ne pas oublier de mettre l interupteur wifi sur on ;) <br />
<br />
<br />
Lors de linstallation de deb il faut lancer le noyau avec certaines options mais je ne me rapelle plus lesquelles xD (consulter les messages d erreur au boot) <br />
Sinon y a le traditionnel fichier de config d X a éditer. <br />
Je n'ai pas éssayé les fonctionalité avacés de mise en veille avec recompilation du noyau et tout ca (le portable n'est pas a moi :/ )<br />
* [ http://rooster.stanford.edu/~ben/toshiba]<br />
<br />
<br />
====Toshiba Sattelite 2410-515====<br />
Support du Toshiba Sattelite 2410-515 sous Mandrake (et une petite partie sous Debian)<br />
* [http://julien.gunnm.org/article.php3?id_article=14 http://julien.gunnm.org/article.php3?id_article=14]<br />
<br />
<br />
====Toshiba Tecra 8100====<br />
Tout marche impeccable. Même les drivers pour le winmodem intégré fonctionnent. Ce ne sont pas des drivers libres mais ils sont open source. C'et déjà correct et ils sont très bien faits. <br />
Voir annonce préfédente pour les outils pour manager un laptop toshiba.<br />
* [ http://julien.gunnm.org/article.php3?id_article=14]<br />
<br />
<br />
====TP600E IBM====<br />
<br />
<br />
RedHat 8.0 installée sans problèmes sauf : <br />
- Au préalable désactiver QuickBoot dans le bios sinon la carte son ne sera jamais reconnue.<br /><br />
<br />
- SndConfig --noprobe et choisir CS42XX et mettre en place le script dispo sur le site IBM pour start-stop le driver au boot pour avoir un son clean (OSS)<br /><br />
<br />
- ModemV90 sur PCMCIA IBM marche impeccable.<br /><br />
<br />
- USB marche également (graveur externe BurnMax 52x Polaroid). <br />
Je n'ai pas testé l'APM car je ne fonctionne que sur secteur et j'ai désactivé les fonctions de gestion d'alimentation.<br /><br />
<br />
<br />
<br />
Sinon besoin d'aucun driver externe (même pour le graveur).<br />
* [ http://julien.gunnm.org/article.php3?id_article=14]<br />
<br />
<br />
====xbook xb402====<br />
Livré directement avec une Mandrake, j'y ai installé (presque) sans problème une debian (je préfère). le presque c'est pour 2 choses : <br /><br />
<br />
- le wireless qui doit s'activer logiciellement. Il y a eu des plaintes auprès du fournisseur, du coup un update du bios est sorti qui active automatiquement le wireless, sinon, le module acerhk le fait.<br /><br />
<br />
- le boot un peu capricieux : il faut booter avec l'option vga=788, sinon, on n'a pas de console. Génant pour des install "texte" comme ubuntu ou debian ;-)<br /><br />
<br />
* [http://www.xbook-computer.com/public/product_info.php?cPath=40_81_91&products_id=215 Infos]</div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=Driver:Oldrub%3D77&diff=9081
Driver:Oldrub=77
2005-10-14T15:44:41Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div>#redirect [[Driver:Appareil photo numérique]]</div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=Driver:Oldrub%3D76&diff=9080
Driver:Oldrub=76
2005-10-14T15:44:40Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div>#redirect [[Driver:Cartes mères]]</div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=Driver:Oldrub%3D74&diff=9079
Driver:Oldrub=74
2005-10-14T15:44:40Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div>#redirect [[Driver:Ordinateurs portables]]</div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=Driver:Oldrub%3D73&diff=9078
Driver:Oldrub=73
2005-10-14T15:44:39Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div>#redirect [[Driver:PCI]]</div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=Driver:Oldrub%3D72&diff=9077
Driver:Oldrub=72
2005-10-14T15:44:38Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div>#redirect [[Driver:Cartes son]]</div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=Driver:Oldrub%3D71&diff=9076
Driver:Oldrub=71
2005-10-14T15:44:38Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div>#redirect [[Driver:WinModems]]</div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=Driver:Oldrub%3D70&diff=9075
Driver:Oldrub=70
2005-10-14T15:44:37Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div>#redirect [[Driver:ADSL]]</div>
PingouinMigrateur
https://lea-linux.org/docs/index.php?title=Driver:Oldrub%3D69&diff=9074
Driver:Oldrub=69
2005-10-14T15:44:37Z
<p>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</p>
<hr />
<div>#redirect [[Driver:USB]]</div>
PingouinMigrateur