Copyright © 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Groupe de Documentation FreeBSD
Bienvenue à FreeBSD! Ce manuel décrit l'installation et l'utilisation quotidienne de la Version 8.3-RELEASE de FreeBSD et FreeBSD 9.0-RELEASE. Ce manuel est en constante évolution. Il est le résultat du travail de nombreuses personnes. Par conséquent, certaines sections peuvent prendre de l'âge et demandent à être mises à jour. Si vous voulez participer à ce projet, envoyez un courrier électronique à la liste de diffusion du groupe de documentation de FreeBSD. La dernière version anglaise de ce document est disponible sur le serveur World Wide Web FreeBSD (les versions antérieures de ce manuel peuvent être obtenues auprès de http://docs.FreeBSD.org/doc/). Il peut être aussi téléchargé dans divers formats et options de compression depuis le serveur FTP FreeBSD ou l'un des nombreux sites miroirs. Si vous préférez avoir une version imprimée du manuel, vous pouvez en acquérir une auprès de FreeBSD Mall. Vous pouvez aussi faire des recherches dans le Manuel.
N.d.T.: Contactez Marc Fonvieille <blackend@FreeBSD.org> si vous voulez
collaborer à la traduction.
Version française de Marc Fonvieille
<blackend@FreeBSD.org> avec la
collaboration de Gregory Delfly <gregoryd.freebsd@free.fr>
Première version de
Frédéric Haby <frederic.haby@mail.dotcom.fr>
La redistribution du code source (SGML), modifié ou non, et compilé (HTML, PostScript, etc.) est soumise aux conditions suivantes :
Le copyright ci-dessus, la présente liste de conditions et l'avertissement qui la suit doivent figurer dans le code source.
Le code source distribué sous forme compilée doit faire apparaître le copyright ci-dessus, la présente liste de conditions et l'avertissement qui la suit.
Important : CE DOCUMENT EST FOURNI ``TEL QU'EN L'ÉTAT'' PAR LE PROJET DE DOCUMENTATION FRANÇAISE DE FreeBSD ET IL N'EST DONNÉ AUCUNE GARANTIE, IMPLICITE OU EXPLICITE, QUANT À SON UTILISATION COMMERCIALE, PROFESSIONNELLE OU AUTRE. LES COLLABORATEURS DU PROJET DE DOCUMENTATION FRANÇAISE DE FreeBSD NE PEUVENT EN AUCUN CAS ÊTRE TENUS POUR RESPONSABLES DE QUELQUE DOMMAGE OU PRÉJUDICE DIRECT, INDIRECT, SECONDAIRE OU ACCESSOIRE (Y COMPRIS LES PERTES FINANCIèRES DUES AU MANQUE À GAGNER, À L'INTERRUPTION D'ACTIVITÉS, OU LA PERTE D'INFORMATIONS ET AUTRES) DÉCOULANT DE L'UTILISATION DE LA DOCUMENTATION OU DE L'IMPOSSIBILITÉ D'UTILISER CELLE-CI, ET DONT L'UTILISATEUR ACCEPTE L'ENTIÈRE RESPONSABILITÉ.
FreeBSD is a registered trademark of the FreeBSD Foundation.
3Com and HomeConnect are registered trademarks of 3Com Corporation.
3ware and Escalade are registered trademarks of 3ware Inc.
ARM is a registered trademark of ARM Limited.
Adaptec is a registered trademark of Adaptec, Inc.
Adobe, Acrobat, Acrobat Reader, and PostScript are either registered trademarks or trademarks of Adobe Systems Incorporated in the United States and/or other countries.
Apple, AirPort, FireWire, Mac, Macintosh, Mac OS, Quicktime, and TrueType are trademarks of Apple Computer, Inc., registered in the United States and other countries.
Corel and WordPerfect are trademarks or registered trademarks of Corel Corporation and/or its subsidiaries in Canada, the United States and/or other countries.
Sound Blaster is a trademark of Creative Technology Ltd. in the United States and/or other countries.
CVSup is a registered trademark of John D. Polstra.
Heidelberg, Helvetica, Palatino, and Times Roman are either registered trademarks or trademarks of Heidelberger Druckmaschinen AG in the U.S. and other countries.
IBM, AIX, EtherJet, Netfinity, OS/2, PowerPC, PS/2, S/390, and ThinkPad are trademarks of International Business Machines Corporation in the United States, other countries, or both.
IEEE, POSIX, and 802 are registered trademarks of Institute of Electrical and Electronics Engineers, Inc. in the United States.
Intel, Celeron, EtherExpress, i386, i486, Itanium, Pentium, and Xeon are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries.
Intuit and Quicken are registered trademarks and/or registered service marks of Intuit Inc., or one of its subsidiaries, in the United States and other countries.
Linux is a registered trademark of Linus Torvalds.
LSI Logic, AcceleRAID, eXtremeRAID, MegaRAID and Mylex are trademarks or registered trademarks of LSI Logic Corp.
M-Systems and DiskOnChip are trademarks or registered trademarks of M-Systems Flash Disk Pioneers, Ltd.
Macromedia, Flash, and Shockwave are trademarks or registered trademarks of Macromedia, Inc. in the United States and/or other countries.
Microsoft, IntelliMouse, MS-DOS, Outlook, Windows, Windows Media and Windows NT are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries.
Netscape and the Netscape Navigator are registered trademarks of Netscape Communications Corporation in the U.S. and other countries.
GateD and NextHop are registered and unregistered trademarks of NextHop in the U.S. and other countries.
Motif, OSF/1, and UNIX are registered trademarks and IT DialTone and The Open Group are trademarks of The Open Group in the United States and other countries.
Oracle is a registered trademark of Oracle Corporation.
PowerQuest and PartitionMagic are registered trademarks of PowerQuest Corporation in the United States and/or other countries.
RealNetworks, RealPlayer, and RealAudio are the registered trademarks of RealNetworks, Inc.
Red Hat, RPM, are trademarks or registered trademarks of Red Hat, Inc. in the United States and other countries.
SAP, R/3, and mySAP are trademarks or registered trademarks of SAP AG in Germany and in several other countries all over the world.
Sun, Sun Microsystems, Java, Java Virtual Machine, JavaServer Pages, JDK, JRE, JSP, JVM, Netra, OpenJDK, Solaris, StarOffice, Sun Blade, Sun Enterprise, Sun Fire, SunOS, Ultra and VirtualBox are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries.
Symantec and Ghost are registered trademarks of Symantec Corporation in the United States and other countries.
MATLAB is a registered trademark of The MathWorks, Inc.
SpeedTouch is a trademark of Thomson.
U.S. Robotics and Sportster are registered trademarks of U.S. Robotics Corporation.
VMware is a trademark of VMware, Inc.
Waterloo Maple and Maple are trademarks or registered trademarks of Waterloo Maple Inc.
Mathematica is a registered trademark of Wolfram Research, Inc.
XFree86 is a trademark of The XFree86 Project, Inc.
Ogg Vorbis and Xiph.Org are trademarks of Xiph.Org.
Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this document, and the FreeBSD Project was aware of the trademark claim, the designations have been followed by the “™” or the “®” symbol.
Version française de Marc Fonvieille
<blackend@FreeBSD.org>.
Le nouveau venu à FreeBSD constatera que la première section de ce livre guide l'utilisateur à travers le processus d'installation de FreeBSD, et présente progressivement les concepts et les conventions qui sont les fondements d'UNIX®. Travailler avec cette section demande un peu plus que le simple désire d'explorer, et la capacité d'assimiler de nouveaux concepts quand ils sont présentés.
Une fois que vous en êtes arrivé là, la seconde, bien plus grande, section du Manuel est une référence complète de tous les sujets qui intéressent les administrateurs systèmes de FreeBSD. Certains de ces chapitres peuvent vous recommander d'effectuer des lectures préliminaires, cela est noté dans le synopsis au début de chaque chapitre.
Pour une liste de sources d'informations complémentaires, veuillez consulter Annexe B.
Cette seconde édition est le point culminant de plus de deux ans de travail pour les membres du Groupe de Documentation de FreeBSD. Ce qui suit présente les changements principaux de cette nouvelle édition:
Chapitre 11, le chapitre “Configuration et optimisation”, a été augmenté avec des informations nouvelles sur la gestion ACPI des ressources et de l'énergie, sur l'utilitaire système cron, et sur d'autres d'options supplémentaires d'optimisation du noyau.
Chapitre 14, le chapitre “Sécurité”, a été augmenté avec de nouvelles informations sur les réseaux privés virtuels (VPNs), les listes de contrôle d'accès au système de fichiers (ACLs), et sur les avis de sécurité.
Chapitre 16, “Le contrôle d'accès obligatoire” (MAC) est un nouveau chapitre ajouté avec cette édition. Il explique ce qu'est le MAC et comment ce mécanisme peut être utilisé pour sécuriser un système FreeBSD.
Chapitre 18, le chapitre “Stockage des données”, a bénéficié de l'ajout de nouvelles sections concernant les périphériques de stockage USB, les instantanés de systèmes de fichiers, les quotas d'utilisation des disques, les systèmes de fichiers réseaux et sauvegardés sur fichier, et le chiffrage de partitions.
Chapitre 20, “Vinum”, est un nouveau chapitre apparaissant avec cette édition. Il décrit l'utilisation de Vinum, un gestionnaire de volume qui permet la création de disques logiques indépendants du périphérique, et l'utilisation de systèmes RAID-0, RAID-1 et RAID-5 logiciels.
Une section dépannage a été ajoutée au chapitre Chapitre 26, PPP et SLIP.
Chapitre 27, le chapitre “Courrier électronique”, bénéficie de nouvelles sections sur l'utilisation d'agents de transfert de courrier alternatifs, sur l'authentification SMTP, l'UUCP, fetchmail, procmail, et d'autres sujets avancés.
Chapitre 28, le chapitre “Serveurs réseau”, apparaît avec cette édition. Ce chapitre traite de la configuration du serveur HTTP Apache, de ftpd, et celle d'un serveur pour clients Microsoft® Windows® à l'aide de Samba. Certaines sections du chapitre Chapitre 30, “Administration réseau avancée” ont été déplacées vers ce nouveau chapitre.
Chapitre 30, le chapitre “Administration réseau avancée” a été complété avec des informations sur l'utilisation des périphériques Bluetooth® sous FreeBSD, la configuration de réseaux sans fil, et sur le mode de transfert réseau asynchrone (ATM).
Un glossaire a été ajouté pour centraliser les définitions des termes techniques employés tout au long de cet ouvrage.
La présentation des tableaux et des figures a été améliorée.
La seconde édition est le point culminant de deux ans de travail pour les membres du Groupe de Documentation de FreeBSD. Ce qui suit présente les changements principaux de cette nouvelle édition:
Un sommaire complet a été ajouté.
Toutes les figures ASCII ont été remplacées par des graphiques.
Un synopsis standard a été ajouté à chaque chapitre pour donner un rapide résumé des informations contenues par ce dernier et ce qu'est sensé connaître le lecteur.
Le contenu a été réorganisé de façon logique en trois parties: ``Pour commencer'', ``L'Administration Système'', et ``Annexes''.
Le Chapitre 2 (``Installer FreeBSD'') fut complètement réécrit avec de nombreuses photos d'écrans pour rendre le texte plus facile à comprendre pour les nouveaux utilisateurs.
Le Chapitre 3 (``Quelques bases d'UNIX'') a été augmenté pour contenir des informations additionnelles sur les processus, daemons et signaux.
Le Chapitre 4 (``Installer des applications'') a été augmenté pour contenir des informations complémentaires sur la gestion des applications pré-compilées.
Le Chapitre 5 (``Le système X Window'') a complètement été réécrit en insistant sur l'utilisation de technologies modernes d'environnement de travail comme KDE et GNOME sous XFree86™ 4.X.
Le Chapitre 12 (``Le processus de démarrage de FreeBSD'') a été augmenté.
Le Chapitre 18 (``Stockage des données'') fut réécrit à partir de ce qui était à l'origine deux chapitres séparés ``Disques'' et ``Sauvegardes''. Nous pensons que le sujet est plus facile à appréhender quand il est présenté en un seul chapitre. Une section sur RAID (matériel et logiciel) fut également ajoutée.
Le Chapitre 25 (``Communications série'') a été complètement réorganisé et mis à jour pour FreeBSD 4.X/5.X.
Le Chapitre 26 (``PPP et SLIP'') a été sensiblement mis à jour.
Plusieurs nouvelles sections ont été ajouté au Chapitre 30 (``Administration réseau avancée'').
Le Chapitre 27 (``Courrier électronique'') fut augmenté pour inclure plus d'informations au sujet de la configuration de sendmail.
Le Chapitre 10 (``Compatibilité Linux®'') a été augmenté pour inclure des informations sur l'installation d'Oracle® et SAP® R/3®.
Les nouveaux sujets suivants sont abordés dans cette seconde édition:
Configuration et optimisation (Chapitre 11).
Multimédia (Chapitre 7)
Ce livre est divisé en cinq parties logiquement distinctes. Le première section, Pour commencer, couvre l'installation et les bases de l'utilisation de FreeBSD. On s'attend à ce que le lecteur suive ces chapitres dans l'ordre, sautant éventuellement les chapitres traitant de sujets familiers. La seconde section Tâches courantes, couvre les fonctionnalités de FreeBSD fréquemment utilisées. Cette section, ainsi que toutes les sections suivantes, peuvent être lues dans n'importe quel ordre. Chaque chapitre débute avec un synopsis succinct qui décrit ce dont parle le chapitre et ce qu'on s'attend à ce que le lecteur sache déjà. Cela en vue de permettre au lecteur occasionnel de se rendre directement aux chapitres qui l'intéresse. La troisième section, Administration système, traite des sujets concernant l'administration. La quatrième section, Réseaux, couvre le domaine des réseaux et des serveurs. La cinquième section contient des annexes d'information de référence.
Présente FreeBSD à un nouvel utilisateur. Il décrit l'histoire du projet FreeBSD, ses objectifs, son mode de développement.
Guide un utilisateur à travers le processus d'installation. Quelques sujets d'installation avancée, comme l'installation avec une console série, sont aussi couverts.
Couvre les commandes et fonctionnalités de base du système d'exploitation FreeBSD. Si vous êtes familier avec Linux ou un autre type d'UNIX alors vous pouvez probablement passer ce chapitre.
Couvre l'installation de logiciels tiers avec l'innovant ``Catalogue de logiciels portés'' de FreeBSD et les logiciels pré-compilés.
Décrit le système X Window en général et l'utilisation d'X11 sur FreeBSD en particulier. Décrit également les environnements de travail comme KDE et GNOME.
Liste les applications de bureautique courantes, comme les navigateurs Web et les suites de bureautique, et décrit comment les installer sous FreeBSD.
Montre comment installer le support du son et de la vidéo pour votre système. Décrit également quelques applications audio et vidéo.
Explique pour quelles raisons vous devriez configurer un nouveau noyau et fournit des instructions détaillées pour la configuration, la compilation et l'installation d'un noyau sur mesures.
Décrit la gestion des imprimantes sous FreeBSD, y compris les informations sur les pages d'en-tête, la comptabilisation de l'usage et la configuration de base.
Décrit les caractéristiques de la compatibilité Linux sous FreeBSD. Fournit également les instructions détaillées de l'installation de plusieurs applications Linux populaires comme Oracle, SAP R/3 et Mathematica®.
Décrit les paramètres disponibles pour les administrateurs systèmes afin d' optimiser les performances d'un système FreeBSD. Décrit également les différents fichiers de configuration utilisés dans FreeBSD et où les trouver.
Décrit le processus de démarrage de FreeBSD et explique comment contrôler ce processus avec des options de configuration.
Décrit la création et la manipulation des comptes utilisateur. Traite également des limitations de ressources qui peuvent être appliquées aux utilisateurs et des autres tâches de gestion des comptes.
Décrit différents outils disponibles pour vous aider à sécuriser votre système FreeBSD, dont Kerberos, IPsec et OpenSSH.
Décrit l'organisation des environnements jail, et les améliorations apportées par ces environnements par rapport au support chroot traditionnel de FreeBSD.
Explique ce qu'est le contrôle d'accès mandataire (MAC) et comment ce mécanisme peut être utilisé pour sécuriser un système FreeBSD.
Décrit ce qu'est l'audit d'événements sous FreeBSD, comment cette fonctionnalité peut être installée, configurée et comment les audits peuvent être examinés et surveillés.
Décrit comment gérer les supports de stockage et les systèmes de fichiers avec FreeBSD. Cela inclut les disques physiques, les systèmes RAID, les supports optiques et bandes, les disques mémoires, et les systèmes de fichiers réseau.
Décrit ce qu'est le système GEOM sous FreeBSD et comment configurer les différents niveaux de RAID supportés.
Décrit comment utiliser Vinum, un gestionnaire de volume logique qui permet d'avoir des disques logiques indépendants du périphérique, et le RAID-0, RAID-1 et RAID-5 logiciel.
Décrit ce que les systèmes de virtualisation apportent, et comment ils peuvent être utilisés avec FreeBSD.
Décrit comment utiliser FreeBSD avec des langues autres que l'anglais. Couvre la localisation du système et des applications.
Explique les différences entre FreeBSD-STABLE, FreeBSD-CURRENT et les versions de publication;. Décrit quel type d'utilisateurs pourrait tirer profit de suivre un système de développement et présente le processus.
Explique comment connecter terminaux et modems à votre système FreeBSD aussi bien pour les connexions entrantes que sortantes.
Décrit comment utiliser PPP, SLIP ou PPP sur Ethernet pour se connecter à des systèmes distants à l'aide de FreeBSD.
Explique les différents composants d'un serveur de courrier et plonge dans la configuration de base du serveur de courrier le plus populaire: sendmail.
Fournit des instructions détaillées et des exemples de fichiers de configuration pour configurer votre machine FreeBSD comme serveur de fichiers, serveur de noms de domaine, serveur d'information réseau, ou comme serveur de synchronisation d'horloge.
Explique la philosophie des coupe-feux logiciels et fournit des informations détaillées sur la configuration des différents coupe-feux disponibles pour FreeBSD.
Décrit de nombreux sujets sur l'utilisation réseau, dont le partage d'une connexion Internet avec d'autres ordinateurs sur votre réseau local, routage, réseaux sans-fils, Bluetooth, ATM, IPv6, et bien plus.
Enumère les différentes sources pour obtenir FreeBSD sur CDROM ou DVD, ainsi que les différents sites Internet qui vous permettent de télécharger et d'installer FreeBSD.
Cet ouvrage aborde de nombreux sujets cela peut vous laisser sur votre faim et à la recherche de plus de détails. La bibliographie énumère d'excellents ouvrages qui sont référencés dans le texte.
Décrit les nombreux forums disponibles pour les utilisateurs de FreeBSD pour poster des questions et engager des conversations techniques au sujet de FreeBSD.
Liste les clés PGP de nombreux développeurs FreeBSD.
Pour fournir un texte logique et facile à lire, plusieurs conventions sont respectées tout au long du livre.
Une police de caractères italique est utilisée pour les noms de fichiers, les URLs, le texte à mettre en valeur et la première utilisation de termes techniques.
Une police de caractères à chasse fixe est utilisée pour les messages d'erreurs, les commandes, les variables d'environnement, les noms des logiciels portés, les noms d'hôtes, les noms d'utilisateurs, les noms de groupes, les noms de périphériques, les variables et les morceaux de code source.
Des caractères gras sont utilisés pour les applications, les commandes et les touches.
Les touches sont représentées en gras pour ressortir du texte. Les combinaisons de touches qui sont sensées être tapées simultanément sont représentées avec `+' entre chaque touche, comme par exemple:
Ctrl+Alt+Del
Indiquant que l'utilisateur devra appuyer simultanément sur les touches Ctrl, Alt, et Del.
Les touches qui sont sensées être tapées en séquence seront séparées par une virgule, par exemple:
Ctrl+X, Ctrl+S
Signifiera que l'on on attend à ce que l'utilisateur tape les touches Ctrl et X simultanément et ensuite tape Ctrl et S simultanément.
Les exemples commençant par E:\> indiquent une commande MS-DOS®. Sauf indication contraire, on peut exécuter ces commandes depuis une fenêtre ``d'invite de commande'' dans un environnement Microsoft Windows moderne.
E:\> tools\fdimage floppies\kern.flp A:
Les exemples commençant par # indiquent que la commande doit être lancée en tant que super-utilisateur sous FreeBSD. Vous pouvez ouvrir une session en tant que root pour taper cette commande, ou ouvrir une session sous votre compte normal et utiliser su(1) pour obtenir les privilèges de super-utilisateur.
# dd if=kern.flp of=/dev/fd0
Les exemples commençant par % indiquent une commande qui devrait être lancée par un utilisateur normal. Sauf indication contraire, la syntaxe de l'interpréteur de commandes C-shell est utilisée pour configurer les variables d'environnement et autres commandes de l'interpréteur.
% top
L'ouvrage que vous avez en main représente les efforts de plusieurs centaines de personnes dans le monde. Qu'ils aient envoyé des corrections de fautes de frappe, ou soumis des chapitres entiers, toutes les contributions ont été utiles.
Plusieurs entreprises ont supporté le développement de ce document en payant des auteurs à travailler à plein temps dessus, en payant pour la publication etc... En particulier, BSDi (rachetée plus tard par Wind River Systems) a payé à temps plein des membres du Groupe de Documentation de FreeBSD à l'amélioration de ce livre menant ainsi à la publication de la première version imprimée en Mars 2000 (ISBN 1-57176-241-8). Wind River Systems a ensuite payé plusieurs auteurs supplémentaires pour apporter un certain nombre d'améliorations à l'infrastructure de publication et à l'ajout de chapitres. Ce travail a abouti à la publication de la deuxième édition imprimée en Novembre 2001 (ISBN 1-57176-303-1). En 2003-2004, FreeBSD Mall, Inc, a payé plusieurs auteurs pour travailler sur l'amélioration de ce manuel en vue de la publication de la troisième édition papier.
Cette partie du Manuel FreeBSD est destinée aux nouveaux venus à FreeBSD, utilisateurs et administrateurs. Ces chapitres:
Vous présenteront FreeBSD.
Vous guideront à travers le processus d'installation.
Vous apprendront quelques bases et fondements d'UNIX.
Vous montreront comment installer la profusion d'applications tiers disponibles pour FreeBSD.
Vous présenteront X, le système de fenêtrage d'UNIX, et détailleront comment configurer un environnement de travail qui vous rendra plus productif.
Nous avons essayé de limiter le nombre de références dans le texte à un minimum afin que vous puissiez lire cette section du Manuel du début jusqu'à la fin avec le moins de mouvements de pages possibles.
Version française de Marc Fonvieille
<blackend@FreeBSD.org>.
Merci de votre intérêt pour FreeBSD! Le chapitre suivant traite de divers aspects concernant le projet FreeBSD, comme son histoire, ses objectifs, son mode de développement, et d'autres.
Après la lecture de ce chapitre, vous connaîtrez:
Comment FreeBSD est lié aux autres systèmes d'exploitation.
L'histoire du Projet FreeBSD.
Les objectifs du Projet FreeBSD.
Les bases du mode de développement open-source de FreeBSD.
Et bien sûr: l'origine du nom ``FreeBSD''.
FreeBSD est une système d'exploitation basé sur 4.4BSD-Lite2 pour les ordinateurs à base d'architecture Intel (x86 et Itanium®), AMD64, les ordinateurs DEC Alpha™, et Sun UltraSPARC®. Le portage pour d'autres architectures est également en cours. Pour connaître l'histoire du projet, lisez Un court historique de FreeBSD. Pour avoir une description de la version la plus récente, allez à la section A propos de cette version. Si vous voulez contribuer d'une façon ou d'une autre au projet FreeBSD (code, matériel, dons), voyez s'il vous plaît à la section Contribuer à FreeBSD.
FreeBSD dispose de nombreuses caractéristiques remarquables. Parmi lesquelles:
Multi-tâche préemptif avec ajustement dynamique des priorités pour garantir un partage équilibré et fluide de l'ordinateur entre les applications et les utilisateurs et cela même sous les charges les plus importantes.
Accès multi-utilisateurs qui permet à de nombreuses personnes d'utiliser en même temps un système FreeBSD à des fins très différentes. Cela signifie, par exemple, que des périphériques tels que les imprimantes ou les lecteurs de bandes peuvent être partagés entre tous les utilisateurs sur le système ou sur le réseau et que des limitations d'utilisation des ressources peuvent être appliquées à des utilisateurs ou groupes d'utilisateurs, protégeant ainsi les ressources systèmes critiques d'une sur-utilisation.
Réseau TCP/IP complet dont le support de standards industriels comme SCTP, DHCP, NFS, NIS, PPP, SLIP, IPsec, et IPv6. Cela signifie que votre machine FreeBSD peut coopérer facilement avec d'autres systèmes ou être utilisée comme serveur d'entreprise, fournissant des fonctions essentielles comme NFS (accès aux fichiers en réseau) et le service de courrier électronique, ou encore l'accès de votre entreprise à l'Internet grâce aux services WWW, FTP, et aux fonctionnalités de routage et de coupe-feu (sécurité).
La protection de la mémoire garantit que les applications (ou les utilisateurs) ne peuvent interférer entre eux. Une application qui plante n'affectera en rien les autres.
FreeBSD est un système d'exploitation 32-bits (64-bits sur l'architecture Alpha, Itanium, AMD64, et UltraSPARC) et a été conçu comme tel dès le début.
Le Système X Window (X11R7), standard industriel, fournit une interface graphique à l'utilisateur (Graphical User Interface - GUI), moyennant l'achat d'une carte VGA ordinaire et d'un moniteur, et est livré avec l'intégralité de son code source.
Compatibilité binaire avec de nombreux programmes compilés pour Linux, SCO, SVR4, BSDI et NetBSD.
Des milliers d'applications prêtes à l'emploi sont disponibles grâce au catalogue des logiciels portés (ports) et au catalogue des logiciels pré-compilés (packages). Pourquoi chercher sur l'Internet alors que tout est là?.
Des milliers d'applications faciles à porter sont disponibles sur l'Internet. FreeBSD est compatible au niveau du code source avec les systèmes UNIX commerciaux les plus répandus et donc la plupart des applications exigent peu, sinon aucune modification, pour les compiler.
Mémoire virtuelle à la demande et ``cache unifié pour les disques et la mémoire virtuelle'' cela permet de répondre aux besoins des applications gourmandes en mémoire tout en garantissant le temps de réponse aux autres utilisateurs.
Support du traitement symétrique multiprocesseurs (SMP).
Des outils complets de développement C, C++, et Fortran. De nombreux autres langages pour la recherche de pointe et le développement sont aussi disponibles dans les catalogues des logiciels portés et pré-compilés.
La disponibilité Code source de l'intégralité du système vous donne un contrôle total sur votre environnement. Pourquoi être prisonnier d'une solution propriétaire et dépendant de votre fournisseur alors que vous pouvez avoir un véritable système ouvert?
Une documentation en ligne très complète.
Et beaucoup d'autres choses encore!
FreeBSD est basé sur la version 4.4BSD-Lite2 du ``Computer Systems Research Group'' (CSRG) de l'Université de Californie à Berkeley et continue la tradition de développement renommée des systèmes BSD. En plus de l'excellent travail fourni par le CSRG, le Projet FreeBSD a investi des milliers d'heures de travail pour optimiser le système pour arriver aux meilleures performances et au maximum de fiabilité sous la charge d'un environnement de production. Alors que la plupart des géants dans le domaine des systèmes d'exploitation pour PC s'acharnent encore à obtenir de telles possibilités, performances et fiabilité, FreeBSD peut les offrir dès maintenant!
La seule limite aux domaines d'application auxquels FreeBSD peut satisfaire est votre propre imagination. Du développement de logiciels à la production robotisée, de la gestion de stocks à la correction d'azimut pour les antennes satellites; si un UNIX commercial peut le faire, il y a de très fortes chances que FreeBSD le puisse aussi! FreeBSD bénéficie aussi de centaines d'applications de haute qualité développées par les centres de recherche et les universités du monde entier, souvent disponibles gratuitement ou presque. Il existe aussi des applications commerciales et leur nombre croît de jour en jour.
Comme le code source de FreeBSD lui-même est globalement disponible, le système peut aussi être adapté sur mesure à un point pratiquement jamais atteint pour des applications ou des projets particuliers, d'une façon qui serait habituellement impossible avec les systèmes d'exploitation commerciaux de la plupart des principaux fournisseurs. Voici juste quelques exemples d'applications pour lesquelles FreeBSD est utilisé:
Services Internet: les fonctionnalités réseau TCP/IP robustes qu'inclut FreeBSD en font la plate-forme idéale pour un éventail de services Internet, tels que:
Serveurs FTP
Serveurs World Wide Web (standard ou sécurisé [SSL])
Routage IPv4 et IPv6
Coupe-feux et passerelles de traduction d'adresses (``IP masquerading'')
Serveurs de courrier électronique
Serveurs de News USENET (forums de discussion) ou Bulletin Board Systems (BBS)
Et plus...
Avec FreeBSD, vous pouvez facilement commencer petit avec un PC 386 à bas prix et évoluer jusqu'à un quadri-processeurs Xeon avec stockage RAID au fur et à mesure que votre entreprise s'agrandit.
Education: Etes-vous étudiant en informatique ou dans un domaine d'ingénierie apparenté? Il n'y a pas de meilleur moyen pour étudier les systèmes d'exploitation, l'architecture des ordinateurs et les réseaux que l'expérience directe et de ``derrière la coulisse'' que FreeBSD peut vous apporter. Il y a aussi un grand nombre d'outils mathématiques, graphiques et de Conception Assistée par Ordinateur qui en font un outil très utile pour ceux qui s'intéressent aux ordinateurs essentiellement pour faire un autre travail!
Recherche: Avec le code source de la totalité du système disponible, FreeBSD est un excellent outil de recherche sur les systèmes d'exploitation tout autant que pour d'autres branches de l'informatique. Le fait que FreeBSD soit librement disponible rend aussi possible l'échange d'idées et le développement partagé entre groupes éloignés sans avoir à se préoccuper de problèmes de licence particulières ou de restrictions à ce qui pourrait être discuté sur des forums ouverts.
Réseau: Il vous faut un nouveau routeur? Un serveur de domaine (DNS)? Un coupe-feu pour tenir les gens à l'écart de votre réseau interne? FreeBSD peut facilement faire de votre vieux 386 ou 486 inutilisé qui traîne dans un coin un routeur évolué avec des fonctionnalités sophistiquées de filtrage de paquets.
Station de travail X Window: FreeBSD est un excellent choix pour faire un terminal X peu coûteux,i en utilisant le serveur X11 librement disponible. Au contraire d'un terminal X, FreeBSD permet d'exécuter localement, si désiré, un grand nombre d'applications, déchargeant ainsi le serveur central. FreeBSD peut même démarrer ``sans disque'', ce qui permet de concevoir des postes de travail individuels moins chers et plus faciles à administrer.
Développement de logiciel: Le système FreeBSD de base inclut un environnement de développement complet dont les compilateur et débogueur GNU C/C++ réputés.
FreeBSD est disponible sous forme de code source ou binaire sur CDROM, DVD ou par ftp anonyme, Voyez Annexe A pour plus de détails.
FreeBSD est utilisé par certains des plus importants sites sur l'Internet, parmi lesquels:
et de nombreux autres.
La section suivante fournit des informations générales sur le projet, dont un court historique, les objectifs du projet, et le mode de développement du projet.
Le projet FreeBSD a vu le jour au début de 1993, en partie comme extension du ``Kit de mise à jour non officiel de 386BSD'' des trois derniers coordinateurs du kit de mise à jour : Nate Williams, Rod Grimes et moi-même.
Notre objectif de départ était de fournir une distribution intermédiaire de 386BSD pour corriger un certain nombre de problèmes que le mécanisme du kit de mise à jour ne permettait pas de résoudre. Certains d'entre vous se rappellent peut-être que l'intitulé de travail d'origine du projet était ``386 BSD 0.5'' ou ``386BSD Interim'' en référence à ce problème.
386BSD était le système d'exploitation de Bill Jolitz, qui souffrait assez sévèrement à ce moment-là d'avoir été négligé pendant presque un an. Comme le kit de mise à jour enflait de plus en plus inconfortablement au fil des jours, nous avons décidé à l'unanimité qu'il fallait faire quelque chose et aider Bill en fournissant cette distribution provisoire de ``remise à plat''. Ces projets se sont brutalement interrompus lorsque Bill a décidé de retirer son aval au projet sans dire clairement ce qui serait fait à la place.
Il ne nous a pas fallu longtemps pour décider que l'objectif restait valable, même sans l'adhésion de Bill, et nous avons donc adopté le nom ``FreeBSD'', une proposition de David Greenman. Nos objectifs de départ ont été définis après avoir consulté les utilisateurs du moment du système et, dès qu'il est devenu clair que le projet était parti pour devenir un jour éventuellement réalité, nous avons contacté Walnut Creek CDROM dans l'optique d'améliorer la distribution de FreeBSD pour le grand nombre de ceux qui n'avaient pas la chance de pouvoir accéder facilement à l'Internet. Non seulement Walnut Creek CDROM a adopté l'idée de distribuer FreeBSD sur CDROM, mais a été jusqu'à fournir au projet une machine pour travailler et une connexion rapide à l'Internet. Sans le degré pratiquement sans précédent de confiance de Walnut Creek CDROM en ce qui n'était alors qu'un projet totalement inconnu, il y a peu de chance que FreeBSD ait été aussi loin, aussi vite, que là où il en est aujourd'hui.
La première version sur CDROM (et sur l'ensemble du Net) fut FreeBSD 1.0, parue en Décembre 1993. Elle reposait sur la bande 4.3BSD-Lite (``Net/2'') de l'Université de Californie à Berkeley, avec de nombreux composants venant aussi de 386BSD et de la ``Free Software Foundation''. Ce fut un succès honnête pour une version initiale, qui fut suivi par le franc succès de la version 1.1 de FreeBSD, publiée en Mai 1994.
A peu près à cette époque, des nuages menaçants et inattendus apparurent lorsque commença la bataille juridique entre Novell et l'U.C. Berkeley autour du statut légal de la bande Net/2 de Berkeley. Dans les termes de l'accord, l'U.C. Berkeley concédait qu'une grande partie de Net/2 était du code ``protégé'' et propriété de Novell, qui l'avait à son tour racheté à AT&T quelque temps auparavant. Berkeley obtint en retour la ``bénédiction'' de Novell que 4.4BSD-Lite soit, lorsqu'il vit finalement le jour, déclaré non protégé et que tous les utilisateurs de Net/2 soit fortement incités à migrer. Cela incluait FreeBSD, et l'on donna au projet jusqu'à Juillet 1994 pour mettre un terme à son propre produit basé sur Net/2. Selon les termes de cet accord, une dernière livraison était autorisée avant le délai final; ce fut FreeBSD 1.1.5.1.
FreeBSD s'attela alors à la tâche difficile de littéralement se réinventer à partir de fragments totalement nouveaux et assez incomplets de 4.4BSD-Lite. Les versions ``Lite'' étaient légères (``light'') en partie parce que le CSRG avait retiré de gros morceaux du code nécessaires pour que l'on puisse effectivement en faire un système qui démarre (pour différentes raisons légales) et parce que le portage pour Intel de la version 4.4 était très partiel. Il fallu au projet jusqu'à Novembre 1994 pour terminer cette étape de transition et que FreeBSD 2.0 paraisse sur l'Internet et sur CDROM (fin Décembre). Bien qu'elle fut encore assez rugueuse aux angles, cette livraison obtint un succès significatif et fut suivie par la version 2.0.5 de FreeBSD, plus fiable et facile à installer, en Juin 1995.
Nous avons publié FreeBSD 2.1.5 en Août 1996, et il s'avéra suffisamment populaire chez les fournisseurs d'accès et les utilisateurs professionnels pour qu'une nouvelle version sur la branche 2.1-STABLE soit justifiée. Ce fut la version FreeBSD 2.1.7.1, parue en Février 1997 et qui marque la fin de 2.1-STABLE comme branche principale de développement. Dès lors, il n'y aurait plus que des améliorations quant à la sécurité et autres corrections de bogues critiques sur cette branche, (RELENG_2_1_0), passée en phase de maintenance.
La branche FreeBSD 2.2 fut créée à partir de la branche principale de développement (``-CURRENT'') en Novembre 1996 en tant que branche RELENG_2_2, et la première version complète (2.2.1) parut en Avril 1997. Il y eut d'autres versions sur la branche 2.2 à l'été et à l'automne 97, la dernière (2.2.8) parut en Novembre 1998. La première version officielle 3.0 sortira en Octobre 1998 et annoncera le début de la fin pour la branche 2.2.
Il y eut la création de nouvelles branches le 20 Janvier 1999, donnant une branche 4.0-CURRENT et une branche 3.X-STABLE. De cette dernière il y eut la version 3.1 livrée le 15 Février 1999, la version 3.2 livrée le 15 Mai 1999, la 3.3 le 16 Septembre 1999, la 3.4 le 20 Décembre 1999 et la 3.5 le 24 Juin 2000, qui fut suivit quelques jours plus tard par une mise à jour mineure 3.5.1 pour rajouter quelques correctifs de sécurité de dernière minute sur Kerberos. Cela sera la dernière version de la la branche 3.X à paraître.
Le 13 Mars 2000 a vu l'apparition d'une nouvelle branche: la branche 4.X-STABLE. Il y a eu plusieurs versions jusqu'ici: la 4.0-RELEASE est sortie en Mars 2000, et la dernière version, la 4.11-RELEASE est sortie en Janvier 2005.
La tant attendue 5.0-RELEASE a été annoncée le 19 Janvier 2003. Etant le point culminant de près de trois ans de travail, cette version a engagé FreeBSD sur la voie d'un support avancé des systèmes multiprocesseurs et des ``threads'', et a introduit le support des plateformes UltraSPARC et ia64. Cette version fut suivie de la 5.1 en Juin 2003. La dernier version 5.X issue de la branche -CURRENT fut la 5.2.1-RELEASE présentée en Février 2004.
La branche RELENG_5 créée en Août 2004, suivie par la 5.3-RELEASE, marque le début de la branche 5-STABLE. La version la plus récente, la 8.3-RELEASE, est sortie en Mai 2006. Il n'est pas prévu de publier d'autres versions de la branche RELENG_5.
La branche RELENG_6 a été créée en Juillet 2005. La version 6.0-RELEASE, la première version issue de la branche 6.X a été rendue publique en Novembre 2005. La version la plus récente, la 9.0-RELEASE, est sortie en Janvier 2007. De nouvelles versions sont prévues pour la branche RELENG_6.
Pour le moment, les projets de développement à long terme continuent à se faire dans la branche (tronc) 7.X-CURRENT, et des ``instantanées'' de la 7.X sur CDROM (et, bien sûr, sur le net) sont continuellement mises à disposition sur le serveur d'instantané pendant l'avancement des travaux.
L'objectif du projet FreeBSD est de fournir du logiciel qui puisse être utilisé à n'importe quelle fin et sans aucune restriction. Nombre d'entre nous sont impliqués de façon significative dans le code (et dans le projet) et ne refuseraient certainement pas une petite compensation financière de temps à autre, mais ce n'est certainement pas dans nos intentions d'insister là dessus. Nous croyons que notre première et principale ``mission'' est de fournir du code à tout le monde, pour n'importe quel projet, de façon à ce qu'il soit utilisé le plus possible et avec le maximum d'avantages. C'est, nous le pensons, l'un des objectifs les plus fondamentaux du Logiciel Libre et l'un de ceux que nous soutenons avec enthousiasme.
Le code de l'arborescence des sources, qui est régi par la Licence Publique GNU (``GNU Public License'' - GPL) ou la Licence Publique GNU pour les Bibliothèques (``GNU Library Public License'' - GLPL) impose légèrement plus de contraintes, bien que plutôt liées à une disponibilité plus grande qu'au contraire, comme c'est généralement le cas. En raison des complications supplémentaires qui peuvent résulter de l'utilisation commerciale de logiciels GPL, nous essayons, cependant de remplacer ces derniers par des logiciels soumis à la licence BSD qui est plus souple, chaque fois que c'est possible.
Le développement de FreeBSD est un processus très ouvert et très souple, c'est littéralement le résultat de contributions de centaines de personnes dans le monde entier, ce que reflète notre liste des participants. L'infrastructure de développement de FreeBSD permet à ces centaines de développeurs de collaborer via l'Internet. Nous sommes toujours à l'affût de nouveaux développeurs et de nouvelles idées, et ceux que s'impliquer de plus près intéresse n'ont besoin que de contacter la liste de diffusion pour les discussions techniques sur FreeBSD. La liste de diffusion pour les annonces relatives à FreeBSD est aussi disponible pour ceux qui veulent faire connaître aux autres utilisateurs de FreeBSD les principaux domaines de développement en cours.
Quelques points utiles à connaître à propos du projet FreeBSD et de son processus de développement, que vous travailliez indépendamment ou en collaboration étroite:
L'arborescence centrale des sources de FreeBSD est gérée sous CVS (Concurrent Version System), un système librement disponible de gestion de version des sources qui est livré avec FreeBSD. Les archives CVS principales sont sur une machine à Santa Clara CA, USA, d'où elles sont répliquées sur de nombreuses machines miroir à travers le monde. L'arborescence CVS qui contient les branches -CURRENT et -STABLE peut facilement être dupliquée sur votre propre machine. Reportez-vous à la section Synchroniser votre arborescence des sources pour plus d'informations sur la façon de procéder.
Les personnes autorisées (committers) sont celles qui ont les droits en écriture sur l'arborescence CVS, et sont autorisées à faire des modifications dans les sources de FreeBSD (le terme ``committer'' vient de la commande cvs(1) commit, que l'on utilise pour reporter des modifications dans les archives CVS). La meilleure façon de proposer des modifications pour qu'elles soient validées par les ``committers'' est d'utiliser la commande send-pr(1). S'il semble y avoir un problème dans ce système, vous pouvez aussi les joindre en envoyant un courrier électronique à liste de diffusion pour les committers de FreeBSD.
L'équipe de base de FreeBSD serait l'équivalent du comité de direction si le Projet FreeBSD était une entreprise. La responsabilité principale de l'équipe de base est de s'assurer que le projet, dans son ensemble, fonctionne correctement et va dans la bonne direction. Proposer à des développeurs impliqués et responsables de rejoindre notre groupe de personnes autorisées est une des fonctions de l'équipe de base, ainsi que le recrutement de nouveaux membres de l'équipe de base quand d'autres s'en vont. L'actuelle équipe de base a été élu à partir d'un ensemble de ``committers'' candidats en Juillet 2006. Des élections ont lieu tous les 2 ans.
Certains membres de l'équipe de base ont aussi leur propre domaine de responsabilité, ce qui signifie qu'il leur est dévolu de veiller à ce qu'une partie significative du système satisfasse aux fonctionnalités annoncées. Pour une liste complète des développeurs FreeBSD et de leurs domaines de responsabilité, veuillez consulter la liste des participants au projet.
Note : La plupart des membres de l'équipe de base sont volontaires en ce qui concerne le développement de FreeBSD et ne retirent aucun profit financier du projet, donc ``implication'' ne doit pas être compris ``support garanti''. La comparaison précédente avec un comité directeur n'est pas tout à fait exacte, et il serait plus juste de dire que ce sont des gens qui ont sacrifié leur vie à FreeBSD contre toute raison!
Enfin, mais certainement pas des moindres, le groupe le plus important de développeurs est constitué par les utilisateurs eux-mêmes qui nous fournissent de façon quasi régulière leur retour d'expérience et leurs corrections de bogues. Le principal moyen d'entrer en contact avec le développement plus décentralisé de FreeBSD est de s'inscrire sur la liste de diffusion pour les discussions techniques sur FreeBSD où ces questions sont abordées. Voyez Annexe C pour plus d'informations concernant les diverses listes de discussion FreeBSD.
La liste de ceux qui ont contribué au projet est longue et en augmentation, pourquoi donc ne pas vous y joindre et contribuer à quelque chose en retour dès aujourd'hui?
Fournir du code n'est pas la seule manière de contribuer au projet; pour avoir une liste plus complète de ce qu'il y a à faire, voyez s'il vous plaît le site du projet FreeBSD.
En résumé, notre modèle de développement est organisé comme un ensemble relâché de cercles concentriques. Ce modèle centralisé est en place pour la commodité des utilisateurs de FreeBSD, qui disposent ainsi d'un moyen facile de suivre l'évolution d'une base de code centrale, et non pour tenir à l'écart d'éventuels participants! Nous souhaitons fournir un système d'exploitation stable avec un nombre conséquent de programmes d'application cohérents que les utilisateurs puissent facilement installer et employer -- c'est un modèle qui fonctionne très bien pour cela.
Tout ce que nous attendons de ceux qui se joindraient à nous pour développer FreeBSD est un peu de la même implication que les développeurs actuels ont vis-à-vis de sa réussite continue!
FreeBSD est une version librement disponible et incluant tout le code source basé sur 4.4BSD-Lite2 pour les ordinateurs à architectures Intel i386™, i486™, Pentium®, Pentium Pro, Celeron®, Pentium II, Pentium III, Pentium 4 (ou compatible), Xeon™, DEC Alpha et systèmes basés sur UltraSPARC de Sun. Il est basé essentiellement sur du logiciel du groupe CSRG de l'Université de Californie à Berkeley, avec des additions venant de NetBSD, OpenBSD, 386BSD, et de la ``Free Software Foundation''.
Depuis la publication de FreeBSD 2.0 fin 1994, les performances, fonctionnalités et la stabilité de FreeBSD ont été améliorées de façon spectaculaire. La plus grosse modification est un gestionnaire de mémoire virtuelle totalement revu qui comprend un cache commun au disque et à la mémoire virtuelle, qui n'améliore pas seulement les performances, mais diminue aussi l'occupation de la mémoire, de telle sorte qu'une configuration avec 5 MO devienne un minimum acceptable. D'autres ajouts concernent le support intégral des clients et serveurs NIS, le support des transactions TCP, les connexions PPP à la demande, le support intégré DHCP, un sous-système SCSI amélioré, support ISDN, support pour l'ATM, FDDI, les cartes ``Fast et Gigabit Ethernet'' (1000 Mbit), un meilleur support des derniers contrôleurs Adaptec et des milliers de corrections de bogues.
En plus du système lui-même, FreeBSD offre un nouveau catalogue de logiciels portés (``ports'') qui inclut des milliers de programmes habituellement demandés. A l'heure où sont écrites ces lignes il y avait plus de 23,000 logiciels portés! La liste va des serveurs HTTP (WWW) aux jeux, langages, éditeurs et presque tout ce qui existe entre. Le catalogue complet des logiciels demande près de 440 Mo d'espace disque, les portages se présentant sous forme de ``delta'' avec les sources d'origine. Cela rend leur mise à jour bien plus facile, et diminue de façon sensible l'espace nécessaire par rapport à l'ancien catalogue 1.0. Pour compiler un logiciel porté, il vous suffit d'aller dans le répertoire du programme que vous désirez installer, de taper make install, et de laisser le système faire le reste. La distribution originale complète de chaque logiciel est chargée dynamiquement depuis le CDROM ou un site FTP proche, il vous suffit de disposer de suffisamment d'espace disque pour compiler le logiciel que vous voulez. Presque tous les logiciels sont aussi fournis sous forme pré-compilée (``package''--paquetage) qui peut être installé avec une seule commande (pkg_add), si vous ne voulez pas les compiler à partir des sources. Plus d'information sur les paquetages et les logiciels portés peut être trouvée dans le Chapitre 4.
Il y a un certain nombre d'autres documents qui vous serons peut-être très utiles à l'installation et à l'utilisation de FreeBSD, que vous pouvez maintenant trouver dans le répertoire /usr/share/doc de n'importe quelle machine sous une version récente de FreeBSD. Vous pouvez consulter les manuels localement disponibles avec n'importe quel navigateur HTML aux URLs suivantes:
Vous pouvez aussi consulter les exemplaires originaux (et les plus souvent mis à jour) sur http://www.FreeBSD.org.
Version française de Marc Fonvieille
<blackend@FreeBSD.org>.
FreeBSD est fourni avec un programme d'installation en mode texte, facile d'emploi, appelé sysinstall. C'est le programme d'installation par défaut de FreeBSD, bien que les vendeurs soient libres de fournir leur propre suite d'installation s'ils le désirent. Ce chapitre décrit comment utiliser sysinstall pour installer FreeBSD.
Après la lecture de ce chapitre, vous saurez:
Comment créer les disquettes d'installation de FreeBSD.
Comment FreeBSD attribue, et subdivise votre disque dur.
Comment lancer sysinstall.
Les questions que sysinstall vous posera, ce qu'elles signifient, et comment y répondre.
Avant de lire ce chapitre, vous devrez:
Lire la liste du matériel supporté fournie avec la version de FreeBSD que vous allez installer, et vérifier que votre matériel est supporté.
Note : En général, ces instructions d'installation sont écrites pour l'architecture i386 (``compatible PC''). Où elles seront applicables, les instructions spécifiques à d'autres plateformes (par exemple Alpha) seront indiquées. Bien que ce guide soit maintenu à jour autant que possible, vous pourrez constater des différences mineures entre le programme d'installation et ce qui est montré ici. Il est aussi suggéré d'utiliser ce chapitre comme un guide général plutôt comme un manuel d'installation à suivre à la ligne près.
La configuration minimale pour installer FreeBSD varie avec la version de FreeBSD et l'architecture matérielle concernée.
Des informations au sujet de la configuration minimale sont disponibles dans les notes d'installation présentes sur la page d'Information des versions du site de FreeBSD. Un résumé de ces informations est présenté dans les sections suivantes. En fonction de la méthode d'installation de FreeBSD que vous avez choisie, vous pourrez avoir besoin d'un lecteur de disquette, d'un lecteur de CDROM supporté, et dans certains cas d'une carte réseau. Cela sera abordé dans la Section 2.3.7.
FreeBSD/i386 et FreeBSD/pc98 nécessitent un processeur 486 ou plus performant et au moins 24 Mo de RAM. Vous aurez également besoin d'au moins 150 Mo d'espace libre sur un disque dur pour l'installation la plus réduite.
Note : Dans le cas d'anciennes configurations, la plupart du temps, il sera plus important d'avoir plus de RAM et plus d'espace disque que d'avoir un processeur plus rapide.
Pour installer FreeBSD/alpha, une plate-forme supportée sera nécessaire (voir Section 2.2.2) ainsi qu'un disque dédié à FreeBSD. Il n'est pas, pour le moment, possible de partager un disque avec un autre système d'exploitation. Ce disque devra être raccordé à un contrôleur SCSI supporté par le firmware SRM ou devra être un disque IDE en supposant que votre machine permet le démarrage à partir de disques IDE.
Vous aurez besoin du firmware SRM pour votre plate-forme. Dans certains cas, il est possible de basculer entre AlphaBIOS (ou ARC) et SRM. Dans d'autres cas, il sera nécessaire de récupérer un nouveau firmware sur le site du constructeur.
Note : Le support pour l'architecture Alpha cesse avec FreeBSD 7.0. Les versions FreeBSD 6.X sont les dernières proposant le support de cette architecture.
Il existe deux classes de processeurs en mesure d'utiliser FreeBSD/amd64. La première est composée des processeurs AMD64, dont les processeurs AMD Athlon™64, AMD Athlon64-FX, AMD Opteron™ et suivants.
La seconde classe de processeurs pouvant utiliser FreeBSD/amd64 comprend les processeurs basés sur l'architecture Intel® EM64T. Comme par exemple, les familles de processeur Intel Core™ 2 Duo, Quad, et Extreme et la série des processeurs Intel Xeon 3000, 5000, et 7000.
Si vous avez une machine basée sur le circuit nVidia nForce3 Pro-150, vous devez désactiver l'option IO APIC dans le BIOS de votre machine. Si vous n'avez pas la possibilité de le faire, vous devrez désactiver à la place l'ACPI. Il existe un certain nombre de bogues dans le circuit Pro-150 pour lesquels nous n'avons toujours pas trouvé de solution.
Pour installer FreeBSD/sparc64, une plate-forme supportée sera nécessaire (voir Section 2.2.2).
Vous aurez besoin d'un disque dédié pour FreeBSD/sparc64. Il n'est pas, pour le moment, possible de partager un disque avec un autre système d'exploitation.
Une liste du matériel supporté est disponible avec chaque version de FreeBSD dans la liste de compatibilité matérielle. Ce document peut être généralement trouvé sous la forme d'un fichier nommé HARDWARE.TXT, sur la racine d'un CDROM ou le répertoire d'un FTP de distribution ou dans le menu de documentation de sysinstall. Ce fichier énumère, pour une architecture donnée, quels sont les périphériques supportés par chaque version de FreeBSD. La liste du matériel supporté par chaque version et architecture peut également être trouvée sur la page d'Information sur les versions du site Web de FreeBSD.
Avant d'installer FreeBSD vous devriez faire l'inventaire des composants de votre ordinateur. Les routines d'installation de FreeBSD afficheront ces composants (disques durs, cartes réseaux, lecteurs de CDROM et ainsi de suite) avec leur type et leur constructeur. FreeBSD essaiera également de déterminer la configuration correcte pour ces périphériques, ce qui inclut les informations sur les IRQs et l'utilisation des ports d'E/S. En raison des caprices du matériel PC ce processus n'est pas toujours complètement réussi, et vous pourrez avoir besoin de corriger FreeBSD dans sa détection de votre configuration.
Si vous avez déjà un autre système d'exploitation installé, tel que Windows ou Linux, c'est une bonne idée d'utiliser les moyens que proposent ces systèmes d'exploitation pour voir comment votre matériel est actuellement configuré. Si vous n'êtes pas sûr des réglages utilisés par une carte d'extension, vous pouvez les trouver imprimés sur la carte elle-même. Des valeurs d'IRQ courantes sont 3, 5 et 7, et les ports d'E/S sont normalement inscrits en hexadécimal, comme par exemple 0x330.
Nous vous recommandons de prendre note de ces informations avant d'installer FreeBSD. Il pourra être utile d'utiliser une table comme celle-ci:
Tableau 2-1. Exemple d'inventaire de périphériques
| Nom du Périphérique | IRQ | Port(s) d'E/S | Notes |
|---|---|---|---|
| Premier disque dur | N/A | N/A | 40 Go, fabriqué par Seagate, premier disque IDE maître |
| CDROM | N/A | N/A | Premier disque IDE esclave |
| Second disque dur | N/A | N/A | 20 Go, fabriqué par IBM, second disque IDE maître |
| Premier contrôleur IDE | 14 | 0x1f0 | |
| Carte réseau | N/A | N/A | Intel 10/100 |
| Modem | N/A | N/A | 3Com® 56K faxmodem, sur COM1 |
| ... |
Une fois l'inventaire des composants présents dans votre ordinateur effectué, vous devez vérifier s'ils correspondent au matériel nécessaire à l'installation de la version de FreeBSD que vous voulez utiliser.
Si l'ordinateur sur lequel vous allez installer FreeBSD contient des données importantes alors assurez vous que vous les avez sauvegardées, et que vous avez testé ces sauvegardes avant d'installer FreeBSD. Le programme d'installation de FreeBSD vous sollicitera avant d'écrire sur votre disque, mais une fois que ce processus aura été lancé, il ne pourra être annulé.
Si vous voulez que FreeBSD utilise tout votre disque, alors il n'y rien de particulier à ajouter à ce niveau là -- vous pouvez passer cette section.
Cependant, si FreeBSD doit coexister avec d'autres systèmes d'exploitation alors vous avez besoin de comprendre approximativement comment les données sont disposées sur le disque, et comment cela vous affecte.
Le disque d'un PC peut être divisé en portions indépendantes. Ces portions sont appelées partitions. Comme FreeBSD possède en interne également des partitions, cette appellation peut rapidement être une source de confusion, aussi ces portions de disque sont appelées “tranches de disque” (disk slices) ou tout simplement tranche (slice) sous FreeBSD. Par exemple, l'utilitaire FreeBSD fdisk qui agit sur les partitions PC, fait référence aux slices plutôt qu'aux partitions. De par sa conception le PC ne supporte que quatre partitions par disque. Ces partitions sont appelées partitions primaires. Pour contourner cette limitation et autoriser plus de quatre partitions, un nouveau type de partition a été créé, la partition étendue. Un disque ne pourra contenir qu'une seule partition étendue. Des partitions spéciales, appelées partitions logiques, peuvent être créées à l'intérieur de la partition étendue.
Chaque partition a un identifiant de partition, qui est un nombre utilisé pour identifier le type de donnée présent sur la partition. Les partitions de FreeBSD ont l'identifiant 165.
En général, chaque système d'exploitation que vous utilisez identifiera les partitions d'une manière particulière. Par exemple, DOS, et ses descendants, comme Windows, associe à chaque partition primaire et logique une lettre appelée lecteur, en commençant avec C:.
FreeBSD doit être installé sur une partition primaire. FreeBSD peut conserver toutes ses données, y compris tous les fichiers que vous créez, sur cette partition. Cependant, si vous avez de multiples disques, alors vous pouvez créer une partition FreeBSD sur tous ou certains d'entre eux. Quand vous installez FreeBSD, vous devez avoir une partition disponible. Cela pourrait être une partition vierge que vous avez préparé, ou une partition existante qui contient des données dont vous n'avez plus besoin.
Si vous utilisez déjà toutes les partitions sur tous vos disques, alors vous devrez libérer l'une d'elle pour FreeBSD à l'aide des outils fournis par les autre systèmes d'exploitation (e.g. fdisk sous DOS ou Windows).
Si vous avez une partition disponible alors vous pouvez l'utiliser. Cependant, vous aurez peut être besoin de diminuer une ou plusieurs de vos partitions existantes en premier lieu.
Une installation minimale de FreeBSD prend aussi peu que 100 Mo d'espace disque. Cependant c'est vraiment une installation minimale, ne laissant presque aucun espace pour vos propres fichiers. Un minimum plus réaliste est 250 Mo sans environnement graphique, et 350 Mo ou plus si vous désirez une interface graphique. Si vous avez l'intention d'installer beaucoup d'applications alors vous aurez besoin de plus d'espace.
Vous pouvez utiliser un outil commercial comme PartitionMagic® ou un outil libre comme GParted pour redimensionner vos partitions et faire de la place à FreeBSD. Le répertoire tools sur le CDROM contient deux logiciels libres qui peuvent se charger de cette tâche, FIPS et PResizer. La documentation pour deux de ces programmes se trouve dans le même répertoire. FIPS, PResizer, et PartitionMagic peuvent redimensionner les partitions FAT16 et FAT32-- utilisées sous MS-DOS jusqu'à Windows ME. Les logiciels PartitionMagic et GParted fonctionne également avec les partitions NTFS. GParted est disponible sur plusieurs CD Live Linux, comme SystemRescueCD.
Des problèmes ont été rapportés concernant le redimensionnement des partitions Microsoft Vista. Il est recommandé d'avoir un CDROM de Vista sous la main quand l'on tente une telle opération. Comme pour toute tâche de maintenance des disques, il est fortement conseillé de disposer d'un ensemble de sauvegardes à jour.
Avertissement : Une utilisation incorrecte de ces outils peut détruire les données sur votre disque. Soyez sûr d'avoir des sauvegardes récentes et qui fonctionnent avant d'utiliser ces outils.
Exemple 2-1. Utilisation d'une partition existante
Supposez que vous avez un ordinateur avec un seul disque de 4 Go qui a déjà une version de Windows installée, et que vous avez divisé ce disque en deux lecteurs C: et D:, chacun de 2 Go. Vous avez 1Go de donnée sur C: et 0.5 Go sur D:.
Cela signifie que vous avez deux partitions sur ce disque, une par lecteur. Vous pouvez transférer toutes les données de D: vers C:, ce qui libérera la partition pour FreeBSD.
Exemple 2-2. Redimensionner une partition existante
Supposez que vous avez un ordinateur avec un seul disque de 4 Go qui a déjà une version de Windows installée. Quand vous avez installé Windows vous avez créé une seule grande partition, vous donnant un lecteur C: de 4 Go. Vous utilisez actuellement un espace de 1.5 GB, et vous désirez 2 Go pour FreeBSD.
Afin d'installer FreeBSD vous devrez soit:
Sauvegarder vos données Windows, et ensuite réinstaller Windows, en utilisant qu'une partition de 2 Go à l'installation.
Soit utiliser un des outils comme PartitionMagic, décrits plus haut, pour redimensionner votre partition Windows
Vous aurez besoin d'un disque dédié pour FreeBSD sur un Alpha. Il n'est pas possible de partager un disque avec un autre système d'exploitation pour le moment. Selon le type de machine Alpha dont vous disposez, ce disque peut soit être un disque SCSI ou un disque IDE, dès l'instant que votre machine est capable de démarrer depuis ce disque.
Suivant les conventions des manuels de Digital / Compaq, toute entrée SRM sera donnée en majuscule. SRM n'est pas sensible à la casse des caractères.
Pour déterminer les noms et les types de disques présent dans votre machine, utilisez la commande SHOW DEVICE à l'invite de la console SRM:
>>>SHOW DEVICE dka0.0.0.4.0 DKA0 TOSHIBA CD-ROM XM-57 3476 dkc0.0.0.1009.0 DKC0 RZ1BB-BS 0658 dkc100.1.0.1009.0 DKC100 SEAGATE ST34501W 0015 dva0.0.0.0.1 DVA0 ewa0.0.0.3.0 EWA0 00-00-F8-75-6D-01 pkc0.7.0.1009.0 PKC0 SCSI Bus ID 7 5.27 pqa0.0.0.4.0 PQA0 PCI EIDE pqb0.0.1.4.0 PQB0 PCI EIDE
Cet exemple provient d'une machine ``Digital Personal Workstation 433au'' et fait apparaître trois disques attachés à la machine. Le premier est un lecteur de CDROM appelé DKA0 et les deux autres sont des disques dur nommés respectivement DKC0 et DKC100.
Les disques avec des noms de la forme DKx sont des disques SCSI. Par exemple DKA100 correspond à un disque SCSI situé sur le premier bus SCSI (A) et avec pour identifiant 1, tandis que DKC300 correspond à un disque SCSI situé sur le troisième bus (C) et ayant l'identifiant 3. Le nom de périphérique PKx correspond au contrôleur SCSI. Comme le montre le résultat de la commande SHOW DEVICE, les lecteurs de CDROM SCSI sont traités comme n'importe quel disque dur SCSI.
Les disque IDE ont des noms du type DQx et PQx correspond au contrôleur IDE associé.
Si vous avez l'intention d'utiliser un réseau pour votre installation de FreeBSD (par exemple, si vous allez installer à partir d'un site FTP, ou d'un serveur NFS), alors vous devez connaître votre configuration réseau. On vous demandera ces informations durant l'installation afin que FreeBSD puisse se connecter au réseau pour terminer l'installation.
Si vous vous connectez à un réseau Ethernet, ou que vous avez une connexion Internet par câble ou DSL utilisant une carte Ethernet, alors vous aurez besoin des informations suivantes:
Adresse IP
Adresse IP de la passerelle par défaut
Nom de l'hôte
Adresses IP du serveur DNS
Masque de sous-réseau
Si vous ne connaissez pas ces informations, alors adressez-vous à votre administrateur système ou votre fournisseur d'accès. Ils peuvent vous dire que ces informations sont assignées automatiquement par l'intermédiaire de DHCP. Si c'est le cas prenez en note.
Si vous vous connectez à un fournisseur d'accès en utilisant un modem classique alors vous pouvez toujours installer FreeBSD en utilisant Internet, cela prendra juste beaucoup de temps.
Vous devrez connaître:
Le numéro de téléphone de connexion à votre fournisseur d'accès
Le port COM: le port auquel votre modem est connecté
Le nom d'utilisateur et le mot de passe de votre compte Internet
Bien que le projet FreeBSD s'efforce de s'assurer que chaque version de FreeBSD soit aussi stable que possible, des bogues peuvent parfois exister. Il est très rare que ces bogues affectent le processus d'installation. Dès que ces problèmes sont découverts et corrigés, ils sont notés dans l'Errata de FreeBSD, présent sur le site web de FreeBSD. Vous devriez vérifier l'errata avant l'installation afin d'être sûr qu'il n'y a pas de problème de dernière minute à prendre en compte.
Les informations sur chaque version, y compris les errata, peuvent être trouvé dans la section d'information sur les différentes versions située sur le site web de FreeBSD.
Le processus d'installation de FreeBSD peut installer FreeBSD à partir de fichiers placés dans les endroits suivants:
Un média local
Un CDROM ou un DVD
Une partition DOS sur le même ordinateur
Une bande SCSI ou QIC
Des disquettes
Le réseau
Un site FTP, en passant par un coupe-feu, ou en utilisant un proxy HTTP si nécessaire
Un serveur NFS
Une connexion dédiée parallèle ou série
Si vous avez acheté FreeBSD sur CD ou DVD alors vous disposez déjà de ce que vous avez besoin, et vous devriez passer à la section suivante (Section 2.3.7).
Si vous n'avez pas récupéré les fichiers d'installation de FreeBSD vous devriez aller directement à la Section 2.13 qui explique comment se préparer à installer FreeBSD à partir d'une des solutions données ci-dessus. Après avoir lu cette section, vous devrez revenir ici, et continuer la lecture avec la Section 2.3.7.
Le processus d'installation de FreeBSD est lancé en démarrant votre ordinateur dans l'installateur de FreeBSD--ce n'est pas un programme que vous exécutez à partir d'un autre système d'exploitation. Votre ordinateur démarre normalement en utilisant le système d'exploitation installé sur votre disque dur, mais il peut également être configuré pour utiliser une disquette ``bootable''. La plupart des ordinateurs modernes peuvent également démarrer à partir d'un CDROM présent dans le lecteur de CDROM.
Astuce : Si vous avez FreeBSD sur CDROM ou DVD (soit un que vous avez acheté, soit préparez vous-même), et que votre ordinateur vous permet de démarrer sur le lecteur de CDROM ou DVD (typiquement une option du BIOS appelée ``Boot Order'' ou équivalent) alors vous pouvez passer cette section. Les CDROMs ou DVDs de FreeBSD sont bootable et peuvent être utilisés pour installer FreeBSD sans autre préparation.
Pour créer les images des disquettes de démarrage, suivez les étapes suivantes:
Obtenir les images des disquettes de démarrage
Les images des disquettes de démarrage sont disponibles sur votre média d'installation dans le répertoire floppies/ et peuvent également être téléchargées par FTP depuis le répertoire floppies, ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/<arch>/<version>-RELEASE/floppies/. Remplacez <arch> et <version> avec respectivement l'architecture et le numéro de version que vous désirez installer. Par exemple, les images de disquettes de démarrage de FreeBSD/i386 9.0-RELEASE sont disponibles à partir de l'adresse ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/9.0-RELEASE/floppies/.
Les images de disquettes ont l'extension .flp. Le répertoire floppies/ contient un certain nombre d'images différentes, et celles que vous devrez utiliser dépendent de la version de FreeBSD que vous allez installer, et dans certains cas, du matériel sur lequel vous effectuez l'installation. Dans la plupart des cas vous aurez besoin de quatre disquettes: boot.flp, kern1.flp, kern2.flp, et kern3.flp. Consultez README.TXT dans le même répertoire pour une information actualisée sur ces images de disquette.
Important : Votre programme FTP doit utiliser le mode binaire pour télécharger ces images. Quelques navigateurs sont connus pour employer le mode texte (ou ASCII), ce qui sera manifeste si vous ne pouvez démarrer depuis ces images.
Préparer les disquettes
Vous devez préparer une disquette par fichier que vous avez dû télécharger. Il est impératif que ces disquettes soient exemptes de défauts. La manière la plus simple de tester cela est de les formater soi-même. Ne faites pas confiance aux disquettes préformatées. L'utilitaire de formatage Windows n'indiquera pas la présence de blocs défectueux, il les marquera simplement comme étant ``défectueux'' et les ignorera. Il est recommandé d'utiliser des disquettes neuves si l'on choisit cette méthode d'installation.
Important : Si vous essayez d'installer FreeBSD et que le programme d'installation ``plante'', se bloque, ou présente d'autres dysfonctionnements, les premières choses à suspecter sont les disquettes. Essayez de copier les images sur des disquettes neuves et essayez encore.
Ecrire les fichiers image sur les disquettes
Les fichiers .flp ne sont pas des fichiers que vous pouvez copier directement sur une disquette. Ce sont des images du contenu complet de disquettes. Cela signifie que vous ne pouvez pas simplement copier les fichiers d'un disque vers un autre. Vous devez utilisez des outils spécifiques pour écrire directement les images sur les disquettes.
Si vous créez ces disquettes depuis un ordinateur fonctionnant sous MS-DOS/Windows, alors nous fournissons pour faire cela un outil appelé fdimage.
Si vous utilisez les images présentes sur le CDROM, et que votre lecteur CDROM est E:, alors vous devez procéder comme suit:
E:\> tools\fdimage floppies\boot.flp A:
Répétez cette commande pour chaque fichier .flp, en remplaçant la disquette à chaque fois, en étant sûr de noter sur les disquettes le nom du fichier copié. Ajuster la ligne de commande selon l'endroit où vous avez placé les fichiers .flp. Si vous n'avez pas de CDROM, alors fdimage peut être téléchargé de puis le répertoire tools sur le site FTP de FreeBSD.
Si vous créez les disquettes depuis un système UNIX (comme par exemple un autre système FreeBSD) vous pouvez utiliser la commande dd(1) pour écrire les fichiers image directement sur les disquettes. Sous FreeBSD, vous lanceriez:
# dd if=boot.flp of=/dev/fd0
Sous FreeBSD, /dev/fd0 correspond au premier lecteur de disquettes ( le lecteur A:). /dev/fd1 serait le lecteur B:, et ainsi de suite. D'autres variantes d'UNIX peuvent avoir des noms différents pour les lecteurs de disquettes, et vous devrez consulter la documentation du système si besoin est.
Vous êtes maintenant prêt à commencer l'installation de FreeBSD.
Important : Par défaut, le processus d'installation ne modifiera rien sur le(s) disque(s) dur(s) jusqu'à ce que vous voyiez le message suivant.
Last Chance: Are you SURE you want continue the installation? If you're running this on a disk with data you wish to save then WE STRONGLY ENCOURAGE YOU TO MAKE PROPER BACKUPS before proceeding! We can take no responsibility for lost disk contents!L'installation peut être quittée à tout moment avant l'avertissement final sans changer le contenu du disque dur. Si vous avez mal configuré quelque chose, vous pouvez juste éteindre l'ordinateur avant l'étape finale sans aucun risque.
Commencez avec votre ordinateur éteint.
Allumez l'ordinateur. En démarrant il devrait afficher une option pour entrer dans le menu de configuration du système, ou BIOS, généralement à l'aide des touches F2, F10, Suppr, ou Alt+S. Employez ce qui est indiqué à l'écran. Dans certains cas votre ordinateur peut afficher une image pendant son démarrage. Typiquement, l'appui sur Esc effacera l'image et vous permettra de voir les messages de démarrage.
Trouvez le paramètre qui contrôle à partir de quel périphérique le système démarre. Cela est généralement nommé ``Boot Order`` (ordre de démarrage) et habituellement sous la forme d'une liste de périphériques, comme Floppy, CDROM, First Hard Disk, et ainsi de suite.
Si vous avez dû préparer des disquettes de démarrage, assurez-vous alors que le lecteur de disquettes est sélectionné. Si vous démarrez depuis le CDROM alors vérifiez que c'est celui-ci qui est sélectionné à la place. En cas de doute, vous devriez consulter le manuel fourni avec votre ordinateur, et/ou sa carte mère.
Effectuez les changements, ensuite sauvez et quittez. L'ordinateur devrait maintenant redémarrer.
Si vous avez dû préparer des disquettes de démarrage, comme décrit dans la Section 2.3.7 alors l'une d'elles sera la première disquette de démarrage, probablement celle contenant boot.flp. Introduisez cette disquette dans votre lecteur.
Si vous démarrez depuis le CDROM, alors vous devrez allumer votre ordinateur, et insérer le CDROM à la première occasion.
Si votre ordinateur démarre comme à l'accoutumé, et charge le système d'exploitation existant, alors soit:
Les disques (CDROM ou disquette) n'ont pas été insérés assez tôt dans le processus de démarrage. Laissez-les, et essayez de redémarrer votre ordinateur.
Soit les changements du BIOS, plus tôt, n'ont pas fonctionné correctement. Vous devriez refaire cette étape jusqu'à obtenir la bonne option.
Soit votre BIOS ne supporte pas le démarrage à partir du support désiré.
FreeBSD démarrera. Si vous démarrez depuis le CDROM vous verrez un affichage similaire à ceci (information sur la version omise):
Booting from CD-Rom... CD Loader 1.2 Building the boot loader arguments Looking up /BOOT/LOADER... Found Relocating the loader and the BTX Starting the BTX loader BTX loader 1.00 BTX version is 1.01 Console: internal video/keyboard BIOS CD is cd0 BIOS drive C: is disk0 BIOS drive D: is disk1 BIOS 639kB/261120kB available memory FreeBSD/i386 bootstrap loader, Revision 1.1 Loading /boot/defaults/loader.conf /boot/kernel/kernel text=0x64daa0 data=0xa4e80+0xa9e40 syms=[0x4+0x6cac0+0x4+0x88e9d] \
Si vous démarrez depuis une disquette, vous verrez un affichage similaire à ceci (information sur la version omise):
Booting from Floppy... Uncompressing ... done BTX loader 1.00 BTX version is 1.01 Console: internal video/keyboard BIOS drive A: is disk0 BIOS drive C: is disk1 BIOS 639kB/261120kB available memory FreeBSD/i386 bootstrap loader, Revision 1.1 Loading /boot/defaults/loader.conf /kernel text=0x277391 data=0x3268c+0x332a8 | Insert disk labelled "Kernel floppy 1" and press any key...
Suivez ces instructions en retirant la disquette boot.flp, puis insérez la disquette kern1.flp et enfin appuyez sur Entrée. Démarrez sur la première disquette; quand on vous le demande, insérez les autres disquettes.
Que vous démarriez à partir de disquettes ou de CDROM, le processus de démarrage vous amènera au menu du chargeur FreeBSD:
Attendez dix secondes, ou appuyez sur Entrée.
Commencez avec votre ordinateur éteint.
Allumez votre ordinateur et attendez l'invite de commande du moniteur de démarrage.
Si vous avez dû préparer des disquettes de démarrage, comme décrit dans la Section 2.3.7 alors l'une d'elles sera la première disquette de démarrage, probablement celle contenant boot.flp. Introduisez cette disquette dans votre lecteur et tapez les commandes suivantes pour démarrer la disquette (en remplaçant le nom de votre lecteur de disquette si nécessaire):
>>>BOOT DVA0 -FLAGS '' -FILE ''
Si vous démarrez depuis le CDROM, insérez le CDROM dans son lecteur et tapez la commande suivante pour démarrer l'installation (en remplaçant le nom du lecteur de CDROM si nécessaire par celui approprié):
>>>BOOT DKA0 -FLAGS '' -FILE ''
FreeBSD démarrera. Si vous démarrez depuis une disquette, au bout d'un moment vous verrez le message:
Insert disk labelled "Kernel floppy 1" and press any key...
Suivez ces instructions en retirant la disquette boot.flp, puis insérez la disquette kern1.flp et enfin appuyez sur Entrée.
Que vous démarriez à partir de disquettes ou du CDROM, le processus de démarrage vous amènera au point suivant:
Hit [Enter] to boot immediately, or any other key for command prompt. Booting [kernel] in 9 seconds... _
Attendez dix secondes, ou appuyez sur Entrée. Cela lancera le menu de configuration du noyau.
La plupart des systèmes SPARC64® sont configurés pour démarrer automatiquement à partir du disque dur. Pour installer FreeBSD, vous devez démarrer à partir du réseau ou à partir d'un CDROM, ce qui nécessitera un passage par le PROM (OpenFirmware).
Pour cela, redémarrez le système, et attendez l'affichage des messages de démarrage. En fonction du modèle, vous devriez voir quelque chose comme ce qui suit:
Sun Blade 100 (UltraSPARC-IIe), Keyboard Present Copyright 1998-2001 Sun Microsystems, Inc. All rights reserved. OpenBoot 4.2, 128 MB memory installed, Serial #51090132. Ethernet address 0:3:ba:b:92:d4, Host ID: 830b92d4.
Si votre système tente de démarrer à partir du disque dur en cet endroit, vous devrez alors appuyer sur L1+A ou Stop+A sur le clavier, ou envoyer un BREAK par l'intermédiaire de la console série (en utilisant par exemple ~# sous tip(1) ou cu(1)) pour obtenir l'invite PROM. Elle ressemble à ceci:
okok {0}
![]()
En ce point, placez le CDROM dans le lecteur, et à l'invite PROM, tapez boot cdrom.
La dernière centaine de lignes qui a été affichée à l'écran est stockée et peut être relue.
Pour relire le tampon, appuyez sur Arrêt Défil. Cela activera le défilement de l'affichage. Vous pouvez alors utiliser les touches fléchées, ou PageUp et PageDown pour visualiser les résultats. Appuyer à nouveau sur Arrêt Défil pour revenir dans le mode normal.
Faites cela maintenant, pour relire le texte qui a défilé en dehors de l'écran quand le noyau effectuait la détection du matériel. Vous verrez quelque chose de semblable à la Figure 2-2, bien que le texte sera différent en fonction des périphériques que vous avez dans votre ordinateur.
Figure 2-2. Résultats typiques de la détection du matériel
avail memory = 253050880 (247120K bytes) Preloaded elf kernel "kernel" at 0xc0817000. Preloaded mfs_root "/mfsroot" at 0xc0817084. md0: Preloaded image </mfsroot> 4423680 bytes at 0xc03ddcd4 md1: Malloc disk Using $PIR table, 4 entries at 0xc00fde60 npx0: <math processor> on motherboard npx0: INT 16 interface pcib0: <Host to PCI bridge> on motherboard pci0: <PCI bus> on pcib0 pcib1:<VIA 82C598MVP (Apollo MVP3) PCI-PCI (AGP) bridge> at device 1.0 on pci0 pci1: <PCI bus> on pcib1 pci1: <Matrox MGA G200 AGP graphics accelerator> at 0.0 irq 11 isab0: <VIA 82C586 PCI-ISA bridge> at device 7.0 on pci0 isa0: <iSA bus> on isab0 atapci0: <VIA 82C586 ATA33 controller> port 0xe000-0xe00f at device 7.1 on pci0 ata0: at 0x1f0 irq 14 on atapci0 ata1: at 0x170 irq 15 on atapci0 uhci0: <VIA 83C572 USB controller> port 0xe400-0xe41f irq 10 at device 7.2 on pci0 usb0: <VIA 83C572 USB controller> on uhci0 usb0: USB revision 1.0 uhub0: VIA UHCI root hub, class 9/0, rev 1.00/1.00, addr 1 uhub0: 2 ports with 2 removable, self powered pci0: <unknown card> (vendor=0x1106, dev=0x3040) at 7.3 dc0: <ADMtek AN985 10/100BaseTX> port 0xe800-0xe8ff mem 0xdb000000-0xeb0003ff ir q 11 at device 8.0 on pci0 dc0: Ethernet address: 00:04:5a:74:6b:b5 miibus0: <MII bus> on dc0 ukphy0: <Generic IEEE 802.3u media interface> on miibus0 ukphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto ed0: <NE2000 PCI Ethernet (RealTek 8029)> port 0xec00-0xec1f irq 9 at device 10. 0 on pci0 ed0 address 52:54:05:de:73:1b, type NE2000 (16 bit) isa0: too many dependant configs (8) isa0: unexpected small tag 14 orm0; <Option ROM> at iomem 0xc0000-0xc7fff on isa0 fdc0: <NEC 72065B or clone> at port 0x3f0-0x3f5,0x3f7 irq6 drq2 on isa0 fdc0: FIFO enabled, 8 bytes threshold fd0: <1440-KB 3.5'' drive> on fdc0 drive 0 atkbdc0: <keyboard controller (i8042)> at port 0x60-0x64 on isa0 atkbd0: <AT Keyboard> flags 0x1 irq 1 on atkbdc0 kbd0 at atkbd0 psm0: <PS/2 Mouse> irq 12 on atkbdc0 psm0: model Generic PS/2 mouse, device ID 0 vga0: <Generic ISA VGA> at port 0x3c0-0c3df iomem 0xa0000-0xbffff on isa0 sc0: <System console> at flags 0x100 on isa0 sc0: VGA <16 virtual consoles, flags-0x300> sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0 sio0: type 16550A sio1: at port 0x2f8-0x2ff irq3 on isa0 sio1: type 16550A ppc0: <Parallel port> at port 0x378-0x37f irq 7 on isa0 ppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode ppc0: FIFO with 16/16/15 bytes threshold plip0: <PLIP network interface> on ppbus0 ad0: 8063MB <IBM-DHEA-38451> [16383/16/63] at ata0-master using UDMA33 acd0: CD-RW <LITE-ON LTR-1210B> at ata1-slave PIO4 Mounting root from ufs:/dev/md0c /stand/sysinstall running as init on vty0
Vérifiez les résultats de la détection soigneusement pour s'assurer que FreeBSD a trouvé tous les périphériques que vous attendiez. Si un périphérique n'a pas été trouvé, il ne sera alors pas affiché. Un noyau personnalisé vous permet d'ajouter le support pour des périphériques qui ne sont pas présents dans le noyau GENERIC, comme les cartes son.
Pour FreeBSD 6.2 et les versions suivantes, après la détection des périphériques, vous verrez l'écran correspondant à la Figure 2-3. Utilisez les touches fléchées pour choisir un pays, une région, ou un groupe. Appuyez ensuite sur la touche Enter, pour sélectionner votre pays et votre table de clavier. Il est facile de quitter le programme sysinstall et de recommencer à nouveau.
Utilisez les touches fléchées pour sélectionner Exit Install dans le menu principal d'installation. Le message suivant apparaîtra:
User Confirmation Requested
Are you sure you wish to exit? The system will reboot
(be sure to remove any floppies/CDs/DVDs from the drives).
[ Yes ] No
Le programme d'installation redémarrera à nouveau si le CDROM est resté dans le lecteur et que [ Yes ] est sélectionné.
Si vous démarrez à partir de disquettes, il sera nécessaire de retirer la disquette boot.flp avant de redémarrer.
L'utilitaire sysinstall est l'application d'installation fournie par le projet FreeBSD. C'est une application pour la console et qui est divisée en un certain nombre de menus et d'écrans que vous pouvez utiliser pour configurer et contrôler le processus d'installation.
Le système de menu de sysinstall est contrôlé à l'aide des touches fléchées, Entrée, Tab, Espace et d'autres touches. Une description détaillée de ces touches, et de ce qu'elles font, se trouve dans les informations d'utilisation de sysinstall.
Pour voir ces informations, assurez-vous que l'entrée Usage est surlignée et que le bouton [Select] est sélectionné, comme montré dans la Figure 2-5, ensuite appuyez sur Entrée.
Les instructions sur l'utilisation du système de menu seront affichées. Après les avoir lues, appuyez sur Entrée pour revenir au menu principal.
Depuis le menu principal, sélectionnez Doc avec les touches fléchées et appuyez sur Entrée.
Cela affichera le menu de documentation.
Il est important de lire la documentation fournie.
Pour voir un document, sélectionnez-le avec les touches fléchées et appuyez sur Entrée. Quand vous avez terminé la lecture d'un document, l'appui sur Entrée vous ramènera au menu de documentation.
Pour revenir au menu principal d'installation, sélectionnez Exit avec les touches fléchées et appuyez sur Entrée.
Pour changer le type de clavier, utilisez les touches fléchées pour sélectionner Keymap depuis le menu et appuyez sur Entrée. Ceci est nécessaire seulement si vous utilisez un clavier non-standard ou non-américain.
Une table de clavier différente peut être choisie en sélectionnant l'élément du menu en utilisant les touches fléchées et en appuyant sur Espace. Appuyer à nouveau sur Espace désélectionnera l'élément. Une fois terminé, choisissez [ OK ] en utilisant les touches fléchées et appuyez sur Entrée.
Seule une liste partielle est montrée dans cet exemple. Utiliser [ Cancel ] en appuyant sur Tab sélectionnera la table de clavier par défaut et ramènera au menu principal d'installation.
Sélectionner Options et appuyez sur Entrée.
Les valeurs par défaut sont généralement parfaites pour la plupart des utilisateurs et ne nécessitent pas d'être modifiées. Le nom de la version variera en fonction de la version que l'on installe.
La description de l'élément sélectionné apparaîtra en bas de l'écran surlignée en bleu. Notez qu'une des options est Use Defaults pour réinitialiser toutes les options à leur valeur de départ.
Appuyez sur F1 pour lire l'écran d'aide à propos des diverses options.
L'appui sur Q ramènera au menu principal d'installation.
L'installation Standard est l'option recommandée pour ceux qui sont nouveaux à UNIX ou FreeBSD. Utilisez les touches fléchées pour sélectionner Standard et ensuite appuyez sur Entrée pour débuter l'installation.
Votre première tâche est d'allouer de l'espace disque à FreeBSD, et labéliser cet espace de sorte que sysinstall puisse le préparer. Afin de faire cela vous devez savoir comment FreeBSD s'attend à trouver l'information sur le disque.
Avant que vous installiez et configuriez FreeBSD sur votre système, il y a un sujet important dont vous devriez être conscient, particulièrement si vous avez plusieurs disques durs.
Dans un PC utilisant un système d'exploitation dépendant du BIOS comme MS-DOS ou Microsoft Windows, le BIOS est capable de modifier l'ordre normal des disques, et le système d'exploitation suivra le changement. Ceci permet à l'utilisateur de démarrer depuis un disque autre que le prétendu ``premier disque maître''. C'est particulièrement commode pour les utilisateurs qui ont trouvé que la manière la plus simple et la moins onéreuse de sauvegarder un système est d'acheter un second disque dur identique, et d'exécuter des copies régulières du premier disque vers le second en utilisant Ghost® ou XCOPY. Alors, si le premier disque tombe en panne, ou est attaqué par un virus, ou corrompu par un défaut du système d'exploitation, on peut facilement y faire face en demandant au BIOS de permuter logiquement les disques. C'est comme si l'on échangeait les câbles sur les disques, mais sans avoir à ouvrir le boîtier.
Des systèmes plus onéreux avec des contrôleurs SCSI incluent souvent des extensions de BIOS permettant aux disques SCSI d'être réorganisés dans un mode semblable et cela jusqu'à sept disques.
Un utilisateur qui est accoutumé à tirer profit de ces caractéristiques pourra s'étonner quant aux résultats inattendus obtenus sous FreeBSD. FreeBSD n'utilise pas le BIOS, et ne connaît pas ``la table logique des disques du BIOS''. Cela peut mener à des situations relativement déconcertantes, particulièrement quand les disques sont physiquement identiques, et que ce sont également des clones au niveau des données.
Quand vous utilisez FreeBSD, veillez à rétablir la numérotation naturelle des disques dans le BIOS, et laissez-là telle quelle. Si vous devez inverser les disques, alors faites-le mais au niveau matériel en ouvrant votre boîtier et en déplaçant les cavaliers et les câbles.
Note : Aucun changement que vous faites à ce niveau de l'installation ne sera écrit sur le disque. Si vous pensez que vous avez fait une erreur et que vous voulez recommencer, vous pouvez utiliser les menus pour quitter sysinstall et essayer encore ou appuyez sur U pour utiliser l'option Undo. Si vous êtes perdu et ne voyez pas comment quitter, vous pouvez toujours éteindre votre ordinateur.
Après avoir choisi de commencer une installation standard sysinstall affichera ce message:
Message
In the next menu, you will need to set up a DOS-style ("fdisk")
partitioning scheme for your hard disk. If you simply wish to devote
all disk space to FreeBSD (overwriting anything else that might be on
the disk(s) selected) then use the (A)ll command to select the default
partitioning scheme followed by a (Q)uit. If you wish to allocate only
free space to FreeBSD, move to a partition marked "unused" and use the
(C)reate command.
[ OK ]
[ Press enter or space ]
Appuyez sur Entrée comme demandé. On vous affichera alors une liste de tous les disques durs que le noyau a trouvés durant la détection des périphériques. La Figure 2-13 présente l'exemple d'un système avec deux disques IDE. Ils ont été appelés ad0 et ad2.
Vous pourriez vous demander pourquoi ad1 n'est pas listé ici. Pourquoi est-il manquant?
Considérez ce qu'il se produirait si vous aviez deux disques durs IDE, un en tant que maître sur le premier contrôleur IDE, et un autre en tant que maître sur le second contrôleur IDE. Si FreeBSD numérotait ces derniers comme il les a trouvés, en tant que ad0 et ad1 alors tout devrait fonctionner.
Mais si vous ajoutiez un troisième disque, en tant que disque esclave sur le premier contrôleur IDE, ce serait maintenant ad1, et l'ad1 précédent deviendrait ad2. Puisque les noms de périphériques (comme ad1s1a) sont utilisés pour trouver les systèmes de fichiers, vous pouvez soudainement découvrir que certains de vos systèmes de fichiers n'apparaissent plus correctement, et vous devrez modifier votre configuration de FreeBSD.
Pour s'affranchir de cela, le noyau peut être configuré pour nommer les périphériques IDE en fonction de l'endroit où ils sont placés, et non pas en fonction de l'ordre dans lequel ils ont été trouvés. Avec cet arrangement le disque maître sur le second contrôleur IDE sera toujours ad2, même s'il n'y a aucun disque ad0 ou ad1.
Cette configuration est celle par défaut du noyau de FreeBSD, c'est pourquoi notre exemple montre ad0 et ad2. La machine sur laquelle furent prises les captures d'écran avait des disques IDE sur les canaux maîtres de chaque contrôleur IDE, et aucun disque esclave.
Vous devrez choisir le disque sur lequel vous désirez installer FreeBSD, et ensuite appuyer sur [ OK ]. FDisk démarrera, avec un écran semblable à celui montré sur la Figure 2-14.
L'affichage de FDisk est séparé en trois parties.
La première partie, occupant les deux premières lignes de l'écran, montre les détails au sujet du disque actuellement sélectionné, dont son nom sous FreeBSD, sa géométrie, et la taille du disque.
La deuxième partie montre les tranches qui sont actuellement présentes sur le disque, où elles débutent et se terminent, leur taille, le nom que leur donne FreeBSD, et leur description et sous-type. Cette exemple montre deux petites tranches inutilisées, qui sont les conséquences de l'arrangement du disque sous PC. Il montre également une grande tranche de type FAT, qui est presque certainement le lecteur C: sous MS-DOS / Windows, et une tranche étendue, qui doit contenir d'autres lecteurs pour MS-DOS / Windows.
La troisième partie affiche les commandes disponibles dans FDisk.
Ce que vous allez faire maintenant dépend de comment vous voulez diviser votre disque.
Si vous voulez utiliser tout le disque pour FreeBSD (ce qui effacera toutes les autres données sur votre disque quand vous confirmerez, plus tard dans le processus d'installation, que vous voulez que sysinstall continue) alors vous pouvez appuyer sur A, ce qui correspond à l'option Use Entire Disk (utiliser l'intégralité du disque). Les tranches existantes seront supprimées, et remplacées par une petite zone étiquetée unused (encore une fois, une particularité de l'organisation des disques sous PC), et ensuite une grande tranche pour FreeBSD. Si vous faites cela vous devriez sélectionner la tranche FreeBSD nouvellement créée en utilisant les touches fléchées, et appuyer sur S pour marquer la tranche comme pouvant être démarrable. L'écran sera alors semblable à la Figure 2-15. Notez le A dans la colonne Flags, qui indique que cette tranche est active, et sera démarrable.
Si vous supprimez une tranche existante pour faire de la place pour FreeBSD alors vous devriez sélectionner la tranche en utilisant les touches fléchées, et ensuite appuyer sur D. Vous pouvez alors appuyer sur C, on vous demandera la taille de la tranche que vous désirez créer. Entrez la taille requise et appuyez sur Entrée. La valeur par défaut dans cette boîte de dialogue représente la tranche la plus grande possible que vous pouvez créer, qui peut être le plus grand bloc d'espace contiguë non alloué ou la taille de l'intégralité du disque dur.
Si vous avez déjà fait de la place pour FreeBSD (peut-être en utilisant un outil comme PartitionMagic®) alors vous pouvez appuyer sur C pour créer une nouvelle tranche. Encore une fois, vous serez sollicité pour entrer la taille de la tranche que vous désirez créer.
Une fois terminé, appuyez sur Q. Vos modifications seront sauvegardées dans sysinstall, mais ne seront pas encore inscrites sur le disque.
Vous avez maintenant la possibilité d'installer un gestionnaire de démarrage. En général, vous devriez installer le gestionnaire de démarrage de FreeBSD si:
Vous avez plus d'un disque, et vous avez installé FreeBSD sur un disque autre que le premier.
Vous avez installé FreeBSD à côté d'un autre système d'exploitation sur le même disque, et vous voulez pouvoir choisir de lancer soit FreeBSD soit l'autre système d'exploitation au démarrage de votre ordinateur.
Si FreeBSD sera le seul système d'exploitation sur cette machine, installé sur le premier disque dur, alors le gestionnaire de démarrage Standard suffira. Sélectionnez None si vous utilisez un gestionnaire de démarrage tiers capable de démarrer FreeBSD.
Faites votre choix, et appuyez sur Entrée.
L'écran d'aide, obtenu par l'appui sur F1, discute des problèmes qui peuvent être rencontrés quand on essaye de partager un disque entre plusieurs systèmes d'exploitation.
S'il y a plus d'un disque, on reviendra à l'écran de sélection des disques après la sélection du gestionnaire de démarrage. Si vous souhaitez installer FreeBSD sur plus d'un disque, alors vous pouvez choisir un autre disque ici et répéter le processus en utilisant FDisk.
Important : Si vous installez FreeBSD sur un disque différent de votre premier disque, alors le gestionnaire de démarrage de FreeBSD doit être installé sur les deux disques.
La touche Tab permet de basculer entre le dernier disque sélectionné, [ OK ], et [ Cancel ].
Appuyez sur Tab une fois pour basculer sur [ OK ], ensuite appuyez sur Entrée pour continuer l'installation.
Vous devez maintenant créer des partitions à l'intérieur de chaque tranche que vous venez de créer. Rappelez-vous que chaque partition est représentée par une lettre, depuis a jusqu'à h, et que les partitions b, c, et d ont par convention des significations particulières que vous devriez respecter.
Certaines applications peuvent tirer avantage d'un partionnement particulier, tout spécialement si vous organisez vos partitions sur plus d'un disque. Cependant, pour votre première installation de FreeBSD, vous ne devriez ne pas trop attacher d'importance à la façon dont vous divisez votre disque. Il est plus important que vous installiez FreeBSD et commenciez à apprendre à l'utiliser. Vous pouvez toujours réinstaller FreeBSD pour modifier votre partionnement quand vous serez plus familier avec le système d'exploitation.
Cette organisation présente quatre partitions--une pour l'espace de pagination, et trois pour les systèmes de fichiers.
Tableau 2-2. Partitionnement du premier disque
| Partition | Système de fichiers | Taille | Description |
|---|---|---|---|
| a | / | 512 Mo | C'est le système de fichiers racine. Tous les autres systèmes de fichiers seront montés sous ce dernier. 512 Mo est une taille raisonnable pour ce système de fichiers. Vous ne devrez pas stocker trop de données dessus, comme une installation habituelle de FreeBSD prendra environ 128 Mo. La place restante est pour les données temporaires, et laisse également de l'espace si les futures version de FreeBSD nécessitent plus de place dans / |
| b | N/A | 2-3 x RAM |
L'espace de pagination du système est placé sur la partition b. Choisir la bonne quantité d'espace de pagination peut s'avérer être tout un art. Un bon principe est de prendre un espace de pagination égal à deux ou trois fois la mémoire physique disponible sur le système (RAM). Vous devrez également avoir au moins 64 Mo d'espace de pagination, donc si vous avez moins de 32 Mo de RAM dans votre ordinateur fixez la taille de l'espace de pagination à 64 Mo. Si vous avez plus d'un disque alors vous pouvez mettre de l'espace de pagination sur chaque disque. FreeBSD utilisera alors chaque disque pour la pagination, ce qui accélérera le processus de pagination. Dans ce cas calculez la quantité d'espace dont vous avez besoin (e.g., 128 Mo), et divisez-la par le nombre de disques que vous avez (e.g., deux disques) pour obtenir la quantité à mettre sur chaque disque, dans cet exemple, 64 Mo d'espace de pagination par disque. |
| e | /var | 256 Mo à 1024nbsp;Mo | Le répertoire /var contient des fichiers variant constamment; fichiers de traces, et autre fichiers d'administration. Beaucoup de ces fichiers sont lus et écrits de façon intensive durant le fonctionnement de FreeBSD. Mettre ces fichiers sur un autre système de fichiers permet à FreeBSD d'optimiser l'accès à ces fichiers sans affecter les autres fichiers d'autres répertoires n'ayant pas les même conditions d'accès. |
| f | /usr | Le reste du disque (au moins 2nbsp;Go) | Tous vos autres fichiers seront normalement stockés dans /usr, et ses sous-répertoires. |
Avertissement : Les valeurs ci-dessus sont données à titre d'exemple et ne devraient être utilisées que par des utilisateurs expérimentés. Les utilisateurs sont encouragés à utiliser le partitionnement automatique appelé Auto Defaults par l'éditeur de partition de FreeBSD.
Si vous installez FreeBSD sur plus d'un disque alors vous devez également créer des partitions sur les autres tranches que vous avez configurées. La manière la plus simple est de créer deux partitions sur chaque disque, une pour l'espace de pagination, et une autre pour le système de fichiers.
Tableau 2-3. Partitionnement pour les disques suivants
| Partition | Système de fichiers | Taille | Description |
|---|---|---|---|
| b | N/A | Voir description | Comme déjà discuté, vous pouvez répartir l'espace de pagination sur chaque disque. Même si la partition a est libre, les conventions nous dictent que l'espace de pagination doit rester sur la partition b. |
| e | /disquen | le reste du disque | Le reste du disque est utilisé en une seule grande partition. Cela pourrait facilement être la partition a, au lieu de la partition e. Cependant, conventionnellement la partition a sur une tranche est réservée au système de fichiers racine (/). Vous n'êtes pas obligé de suivre cette convention mais sysinstall le fait, et donc la suivre rendra l'installation plus claire. Vous pouvez choisir de monter ce système de fichiers n'importe où; cet exemple suggère que vous les montiez en tant que répertoires /disquen, où n est un nombre qui change pour chaque disque. Mais vous pouvez choisir une autre organisation si vous le préférez. |
Après avoir choisi votre partitionnement vous pouvez maintenant le créer en utilisant sysinstall. Vous verrez ce message:
Message
Now, you need to create BSD partitions inside of the fdisk
partition(s) just created. If you have a reasonable amount of disk
space (200MB or more) and don't have any special requirements, simply
use the (A)uto command to allocate space automatically. If you have
more specific needs or just don't care for the layout chosen by
(A)uto, press F1 for more information on manual layout.
[ OK ]
[ Press enter or space ]
Appuyez sur Entrée pour lancer l'éditeur de partition de FreeBSD, appelé Disklabel.
La Figure 2-18 présente l'affichage que l'on obtient quand on lance pour la première fois Disklabel. L'écran est divisé en trois parties.
Les premières lignes affichent le nom du disque sur lequel vous êtes en train de travailler, et la tranche qui contient les partitions que vous êtes en train de créer (à cet endroit Disklabel nomme cela Partition name, nom de partition, plutôt que le nom slice). Cet écran montre également la quantité d'espace libre dans la tranche; c'est à dire l'espace qui a été mis de côté dans la tranche, et qui n'a pas été encore attribué à une partition.
Le centre de l'écran présente les partitions qui ont été créées, le nom du système de fichiers que chaque partition contient, leur taille, et des options concernant la création du système de fichiers.
Le bas de l'écran donne les combinaisons de touches valides dans Disklabel.
Disklabel peut automatiquement créer des partitions pour vous et leur assigner des tailles par défaut. Les tailles par défaut sont déterminées à l'aide d'un algorithme interne basé sur la taille du disque. Essayez cette fonction en appuyant sur A. Vous verrez un affichage semblable à celui donné par la Figure 2-19. En fonction de la taille de votre disque, les valeurs par défaut peuvent être ou non appropriées. Cela n'a pas d'importance, car vous n'êtes pas obligé d'accepter ces valeurs.
Note : Le partionnement par défaut assigne au répertoire /tmp sa propre partition plutôt que d'appartenir à la partition /. Cela permet d'éviter de remplir la partition / avec des fichiers temporaires.
Si vous décidez de ne pas utiliser les partitions par défaut et vous désirez les remplacer par les vôtres, utilisez les touches fléchées pour sélectionner la première partition, et appuyez sur D pour l'effacer. Répétez cela pour effacer toutes les partitions suggérées.
Pour créer la première partition (a, montée en / -- racine), assurez-vous que la tranche du disque correcte en haut de l'écran est sélectionnée, et appuyez sur C. Une boîte de dialogue s'affichera et vous demandera la taille de la nouvelle partition (comme montré sur la Figure 2-20). Vous pouvez entrer la taille sous la forme du nombre de blocs disque que vous voulez utiliser, ou sous forme d'un nombre suivi soit par M pour mégaoctets, G pour gigaoctets, ou soit par C pour cylindres.
La taille par défaut proposée créera une partition qui occupera le reste de la tranche. Si vous utilisez les tailles de partitions comme décrit dans l'exemple précédent, alors effacez la valeur proposée en utilisant Backspace, et ensuite tapez 512M, comme présenté sur la Figure 2-21. Puis appuyez sur [ OK ].
Après avoir choisi la taille de la partition on vous demandera si cette partition contiendra un système de fichiers ou de l'espace de pagination. La boîte de dialogue est présentée dans la Figure 2-22. Cette première partition contiendra un système de fichiers, vérifiez donc que FS est sélectionné et appuyez sur Entrée.
Finalement, comme vous créez un système de fichiers, vous devez indiquer à Disklabel où le système de fichiers sera monté. La boîte de dialogue est montrée sur la Figure 2-23. Le point de montage du système de fichiers racine est /, tapez donc /, et appuyez sur Entrée.
L'affichage sera mis à jour pour montrer la partition nouvellement créée. Vous devrez répéter cette procédure pour les autres partitions. Quand vous créerez la partition de l'espace de pagination, on ne vous demandera pas de point de montage pour le système de fichiers, étant donné que les partitions de pagination ne sont jamais montées. Quand vous créez la dernière partition /usr, vous pouvez laisser la taille suggérée telle qu'elle, pour utiliser le reste de la tranche.
Votre dernier écran de l'éditeur DiskLabel de FreeBSD apparaîtra semblable à la Figure 2-24, bien que vos valeurs puissent être différentes. Appuyez sur Q pour terminer.
Décider quel ensemble de distribution installer dépendra en grande partie de l'utilisation prévue du système et de la quantité d'espace disque disponible. Les options prédéfinies vont de l'installation la plus petite possible à l'installation de la totalité des éléments disponibles. Ceux qui sont nouveaux à UNIX et/ou FreeBSD devraient presque certainement choisir une de ces options prédéfinies. Personnaliser un ensemble de distribution est normalement réservé à l'utilisateur plus expérimenté.
Appuyez sur F1 pour plus d'informations sur les options des ensembles de distribution et sur ce qu'ils contiennent. Une fois la lecture de l'aide terminée, l'appui sur Entrée ramènera au menu de sélection des distributions.
Si une interface graphique utilisateur est désirée alors un ensemble de distribution qui est précédé par un X devra être choisi. La configuration du serveur X et la sélection d'un environnement de travail doivent être effectuées après l'installation de FreeBSD. Plus d'information concernant la configuration d'un serveur X peut être trouvé dans le Chapitre 5.
Xorg est la version d'X11 qui sera installée par défaut.
Si la compilation d'un noyau personnalisé est prévue, sélectionnez une option qui inclut le code source. Pour plus d'information sur l'intérêt d'un noyau personnalisé ou comment compiler un noyau personnalisé voir le Chapitre 8.
A l'évidence, le système le plus versatile est celui qui inclut tout. S'il y a l'espace disque adéquat, choisissez All comme montré sur la Figure 2-25 en utilisant les touches fléchées et appuyez sur Entrée. S'il y a un problème quant à l'espace disque considérez l'utilisation d'une option plus appropriée à la situation. Ne vous tracassez pas au sujet des choix d'ensembles, comme les autres ensembles de distribution peuvent être ajoutés après l'installation.
Après le choix de l'ensemble de distribution désiré, l'opportunité d'installer le catalogue des logiciels portés pour FreeBSD se présente. Le catalogue des logiciels portés est une méthode simple et commode pour installer des logiciels. Le catalogue des logiciels portés ne contient pas le code source nécessaire pour compiler le logiciel. A la place, c'est un ensemble de fichiers qui automatise le téléchargement, la compilation et l'installation de logiciels tierce-partie. Le Chapitre 4 discute de l'utilisation du catalogue des logiciels portés.
Le programme d'installation ne vérifie pas si vous avez l'espace requis. Sélectionnez cette option uniquement si vous disposez de l'espace disque adéquat. Sous FreeBSD 9.0, le catalogue des logiciels portés occupe environ 440 Mo d'espace disque. Vous pouvez sans risque envisager une plus grande valeur pour les versions de FreeBSD plus récentes.
User Confirmation Requested
Would you like to install the FreeBSD ports collection?
This will give you ready access to over 23,000 ported software packages,
at a cost of around 440 Mo of disk space when "clean" and possibly much
more than that if a lot of the distribution tarballs are loaded
(unless you have the extra CDs from a FreeBSD CD/DVD distribution
available and can mount it on /cdrom, in which case this is far less
of a problem).
The ports collection is a very valuable resource and well worth having
on your /usr partition, so it is advisable to say Yes to this option.
For more information on the ports collection & the latest ports,
visit:
http://www.FreeBSD.org/ports
[ Yes ] No
Sélectionnez [ Yes ] avec les touches fléchées pour installer le catalogue des logiciels portés ou [ No ] pour passer cette option. Appuyez sur Entrée pour continuer. Le menu de sélection de l'ensemble de distribution réapparaîtra.
Si vous êtes satisfait avec les options, sélectionnez Exit avec les touches fléchées, vérifiez que [ OK ] est surligné, et appuyez sur Entrée pour continuer.
Si vous installez à partir d'un CDROM ou DVD, utilisez les touches fléchées pour sélectionner Install from a FreeBSD CD/DVD. Vérifiez que [ OK ] est surligné, puis appuyez sur Entrée pour procéder à l'installation.
Pour les autre méthodes d'installation, sélectionnez l'option appropriée et suivez les instructions.
Appuyez sur F1 pour afficher l'aide en ligne pour le support d'installation. Appuyez sur Entrée pour revenir au menu de sélection du support.
Modes d'installation par FTP : Il y a trois modes d'installation par FTP, vous pouvez choisir parmi: FTP actif, FTP passif, ou par l'intermédiaire d'un proxy HTTP.
- FTP actif: Install from an FTP server
Cette option fera que tous les transferts FTP utiliseront le mode ``actif''. Cela ne fonctionnera pas à travers un coupe-feu, mais fonctionnera souvent avec de vieux serveurs FTP ne supportant pas le mode passif. Si votre connexion se bloque avec le mode passif (mode par défaut), essayez le mode actif!
- FTP passif: Install from an FTP server through a firewall
Cette option demande à sysinstall d'utiliser le mode ``passif'' pour toutes les opérations FTP. Cela permet à l'utilisateur de traverser les coupes-feu qui n'acceptent pas les connexions entrantes sur des ports TCP aléatoires.
- FTP par l'intermédiaire d'un proxy HTTP: Install from an FTP server through a http proxy
Cette option demande à sysinstall d'utiliser le protocole HTTP (comme pour un navigateur web) pour se connecter à un proxy pour toutes les opérations FTP. Le proxy traduira toutes les requêtes et les transmettra au serveur FTP. Cela permet aux utilisateurs de traverser les coupes-feu qui n'autorisent pas les connexions FTP, mais offrent un proxy HTTP. Dans ce cas, vous devez préciser le proxy en plus du serveur FTP.
Pour un serveur proxy FTP, vous devriez normalement donner le nom du serveur que vous désirez comme partie du nom d'utilisateur, après le signe ``@''. Le serveur proxy ``simulera'' le serveur réel. Par exemple, en supposant que vous voulez installer à partir de ftp.FreeBSD.org, en utilisant le serveur proxy FTP foo.example.com, écoutant sur le port 1234.
Dans ce cas, rendez-vous dans le menu d'options, et fixez le nom d'utilisateur FTP (``username'') à ftp@ftp.FreeBSD.org, et le mot de passe (``password'') à votre adresse émail. Comme support d'installation, vous spécifiez FTP (ou FTP passif, si le proxy le supporte), et l'URL ftp://foo.example.com:1234/pub/FreeBSD.
Puisque le répertoire /pub/FreeBSD de ftp.FreeBSD.org est traduit par le proxy en foo.example.com, vous êtes en mesure d'installer depuis cette machine (qui ira chercher les fichiers sur ftp.FreeBSD.org quand l'installation réclamera des fichiers).
L'installation peut être maintenant effectuée si désirée. C'est également la dernière chance pour annuler l'installation et empêcher l'écriture sur le disque dur.
User Confirmation Requested
Last Chance! Are you SURE you want to continue the installation?
If you're running this on a disk with data you wish to save then WE
STRONGLY ENCOURAGE YOU TO MAKE PROPER BACKUPS before proceeding!
We can take no responsibility for lost disk contents!
[ Yes ] No
Sélectionnez [ Yes ] et appuyez sur Entrée pour poursuivre.
La durée de l'installation variera en fonction de la distribution choisie, du support d'installation, et de la vitesse de l'ordinateur. Une série de messages sera affichée pour indiquer la progression de l'installation.
L'installation est achevée quand le message suivant est affiché:
Message
Congratulations! You now have FreeBSD installed on your system.
We will now move on to the final configuration questions.
For any option you do not wish to configure, simply select No.
If you wish to re-enter this utility after the system is up, you may
do so by typing: /usr/sbin/sysinstall .
[ OK ]
[ Press enter or space ]
Appuyez sur Entrée pour poursuivre avec les configurations de post-installation.
Sélectionner [ No ] et appuyer sur Entrée annulera l'installation et aucun changement ne sera fait à votre système. Le message suivant apparaîtra:
Message
Installation complete with some errors. You may wish to scroll
through the debugging messages on VTY1 with the scroll-lock feature.
You can also choose "No" at the next prompt and go back into the
installation menus to retry whichever operations have failed.
[ OK ]
Ce message est généré parce que rien n'a été installé. L'appui sur Entrée ramènera au menu principal d'installation pour quitter l'installation.
La configuration de diverses options suit l'installation. Une option peut être configurée en accédant aux options de configuration avant de redémarrer le nouveau système FreeBSD ou après l'installation en utilisant la commande sysinstall et en sélectionnant Configure.
Si vous avez précédemment configuré PPP pour une installation par FTP, cet écran n'apparaîtra pas et peut être configuré plus tard comme décrit ci-dessus.
Pour une information détaillée sur les réseaux locaux et la configuration de FreeBSD en passerelle/routeur référez-vous au chapitre Administration réseau avancée.
User Confirmation Requested
Would you like to configure any Ethernet or SLIP/PPP network devices?
[ Yes ] No
Pour configurer un périphérique réseau, sélectionnez [ Yes ] et appuyez sur Entrée. Sinon, sélectionnez [ No ] pour continuer.
Sélectionnez l'interface à configurer avec les touches fléchées et appuyez sur Entrée.
User Confirmation Requested
Do you want to try IPv6 configuration of the interface?
Yes [ No ]
Dans ce réseau local privé l'actuel protocole Internet (IPv4) était suffisant et [ No ] a été sélectionné avec les touches fléchées et suivie d'Entrée.
Si vous êtes connecté à une réseau (IPv6), existant avec un serveur RA, alors choisissez [ Yes ] et appuyez sur Entrée. Cela prendra plusieurs secondes pour rechercher des serveurs RA.
User Confirmation Requested
Do you want to try DHCP configuration of the interface?
Yes [ No ]
Si DHCP (``Dynamic Host Configuration Protocol'') n'est pas requis sélectionnez [ No ] à l'aide des touches fléchées et appuyez sur Entrée.
Sélectionner [ Yes ] exécutera dhclient, et en cas de succès, complétera l'information de configuration du réseau automatiquement. Référez-vous à la Section 28.5 pour plus d'information.
L'écran de configuration réseau suivant montre la configuration du périphérique Ethernet pour un système qui sera passerelle pour un réseau local.
Utilisez Tab pour choisir les champs d'information et compléter avec l'information appropriée:
Le nom complet de la machine, e.g. k6-2.exemple.com dans ce cas.
Le nom du domaine auquel appartient votre machine, e.g. exemple.com dans le cas présent.
L'adresse IP de l'hôte transmettant les paquets aux destinations non-locales. Vous devez complétez cela seulement si la machine est un noeud sur le réseau. Laissez ce champ vide si la machine est destinée à être la passerelle vers l'Internet pour le réseau. La passerelle (``gateway'') IPv4 est également connue sous le nom de passerelle par défaut ou route par défaut.
L'adresse IP de votre serveur DNS local. Il n'y a pas de serveur DNS local sur ce réseau local privé aussi l'adresse IP du serveur DNS du fournisseur d'accès (208.163.10.2) fut utilisée.
L'adresse IP employée pour cette interface fut 192.168.0.1
Le bloc d'adresse utilisé pour ce réseau local est le bloc 192.168.0.0 - 192.168.0.255) avec un masque de sous-réseau de 255.255.255.0.
Toutes options d'ifconfig spécifiques aux interfaces que vous voudriez ajouter. Il n'y en avait aucune dans ce cas-ci.
Utilisez Tab pour sélectionner [ OK ] une fois terminé et appuyez sur Entrée.
User Confirmation Requested
Would you like to Bring Up the ed0 interface right now?
[ Yes ] No
La sélection de [ Yes ] suivie d'Entrée rendra l'accès réseau de la machine opérationnel. Cependant, cela ne n'accomplit pas grand chose durant l'installation puisque la machine a encore besoin d'être redémarrée.
User Confirmation Requested
Do you want this machine to function as a network gateway?
[ Yes ] No
Si la machine jouera le rôle de passerelle pour le réseau local et transmettra les paquets entre machines alors sélectionnez [ Yes ] et appuyez sur Entrée. Si la machine est un noeud sur le réseau alors sélectionnez [ No ] et appuyez sur Entrée pour continuer.
User Confirmation Requested
Do you want to configure inetd and the network services that is provides?
Yes [ No ]
Si [ No ] est sélectionné, divers services tel que telnetd ne seront pas activés. Cela signifie que des utilisateurs à distance ne pourront pas se connecter par l'intermédiaire de telnet à cette machine. Les utilisateurs locaux seront toujours en mesure d'accéder à des machines distantes avec telnet.
Ces services peuvent être activés après l'installation en éditant /etc/inetd.conf avec votre éditeur de texte favori. Voir la Section 28.2.1 pour plus d'information.
Choisissez [ Yes ] si vous souhaitez configurer ces services pendant l'installation. Une confirmation supplémentaire s'affichera:
User Confirmation Requested
The Internet Super Server (inetd) allows a number of simple Internet
services to be enabled, including finger, ftp and telnetd. Enabling
these services may increase risk of security problems by increasing
the exposure of your system.
With this in mind, do you wish to enable inetd?
[ Yes ] No
Sélectionnez [ Yes ] pour continuer.
User Confirmation Requested
inetd(8) relies on its configuration file, /etc/inetd.conf, to determine
which of its Internet services will be available. The default FreeBSD
inetd.conf(5) leaves all services disabled by default, so they must be
specifically enabled in the configuration file before they will
function, even once inetd(8) is enabled. Note that services for
IPv6 must be seperately enabled from IPv4 services.
Select [Yes] now to invoke an editor on /etc/inetd.conf, or [No] to
use the current settings.
[ Yes ] No
Le choix [ Yes ] permettra d'ajouter des services en supprimant le # au début d'une ligne.
Après avoir ajouté les services désirés, l'appui sur Echap affichera un menu qui permettra de quitter et sauver les changements.
User Confirmation Requested
Would you like to enable SSH login?
Yes [ No ]
Sélectionner [ Yes ] activera sshd(8), le programme “daemon” pour OpenSSH. Cela permettra l'ouverture à distance de sessions sécurisées sur votre machine. Pour plus d'information au sujet d'OpenSSH voir la Section 14.11.
User Confirmation Requested
Do you want to have anonymous FTP access to this machine?
Yes [ No ]
Choisir le [ No ] par défaut et appuyer sur Entrée permettra toujours aux utilisateurs ayant des comptes avec mot de passe d'utiliser FTP pour accéder à la machine.
N'importe qui peut accéder à votre machine si vous choisissez d'autoriser les connexions par FTP anonyme. Les implications au niveau de la sécurité devraient être considérées avant d'activer cette option. Pour plus d'information sur la sécurité voir le Chapitre 14.
Pour autoriser le FTP anonyme, utilisez les touches fléchées pour sélectionner [ Yes ] et appuyez sur Entrée. Une confirmation supplémentaire apparaîtra:
User Confirmation Requested
Anonymous FTP permits un-authenticated users to connect to the system
FTP server, if FTP service is enabled. Anonymous users are
restricted to a specific subset of the file system, and the default
configuration provides a drop-box incoming directory to which uploads
are permitted. You must separately enable both inetd(8), and enable
ftpd(8) in inetd.conf(5) for FTP services to be available. If you
did not do so earlier, you will have the opportunity to enable inetd(8)
again later.
If you want the server to be read-only you should leave the upload
directory option empty and add the -r command-line option to ftpd(8)
in inetd.conf(5)
Do you wish to continue configuring anonymous FTP?
[ Yes ] No
Ce message vous indique que le servec FTP devra également être activé dans le fichier /etc/inetd.conf si vous voulez autoriser les connexions FTP anonymes, voir la Section 2.10.3. Sélectionnez [ Yes ] et appuyez sur Entrée pour continuer; l'écran suivant (ou semblable) apparaîtra:
Utilisez la touche Tab pour choisir les champs d'information et compléter avec l'information appropriée:
L'ID utilisateur que vous voulez affecter à l'utilisateur du FTP anonyme. Tous les fichiers chargés sur le serveur appartiendront à cet ID.
Le groupe auquel appartiendra l'utilisateur du FTP anonyme.
La chaîne de caractères décrivant cet utilisateur dans le fichier /etc/passwd.
L'emplacement où seront conservés les fichiers du FTP anonyme.
L'emplacement où seront stockés les fichiers téléchargés sur le serveur par les utilisateurs du FTP anonyme.
Le répertoire racine du FTP sera placé dans /var par défaut. Si vous n'avez pas de place à cet endroit pour les besoins prévus du FTP, le répertoire /usr pourra être utilisé en configurant le répertoire racine FTP à /usr/ftp.
Quand vous êtes satisfait de ces valeurs, appuyez sur Entrée pour continuer.
User Confirmation Requested
Create a welcome message file for anonymous FTP users?
[ Yes ] No
Si vous sélectionnez [ Yes ] et appuyez sur Entrée, un éditeur sera automatiquement lancé vous permettant d'éditer le message.
C'est un éditeur de texte appelé ee. Utilisez les instructions pour modifier le message ou faites-le plus tard en utilisant l'éditeur de texte de votre choix. Notez l'emplacement/le nom du fichier au bas de l'écran.
Appuyez sur Echap et une boîte de dialogue apparaîtra avec l'option a) leave editor sélectionnée. Appuyez sur Entrée pour quitter et continuer. Appuyez à nouveau sur Entrée pour sauvegarder les modifications si vous en avez fait.
Le système de fichiers réseau (NFS) permet le partage de fichiers à travers un réseau. Une machine peut être configurée en serveur, client, ou les deux. Référez-vous à la Section 28.3 pour plus d'information.
User Confirmation Requested
Do you want to configure this machine as an NFS server?
Yes [ No ]
S'il n'y a aucun de besoin de serveur NFS, sélectionnez [ No ] et appuyez sur Entrée.
Si [ Yes ] est choisi, un message apparaîtra indiquant que le fichier exports doit être créé.
Message
Operating as an NFS server means that you must first configure an
/etc/exports file to indicate which hosts are allowed certain kinds of
access to your local file systems.
Press [Enter] now to invoke an editor on /etc/exports
[ OK ]
Appuyez sur Entrée pour continuer. Un éditeur de texte sera lancé pour permettre la création et l'edition du fichier exports.
Suivez les instructions pour ajouter les systèmes de fichiers à exporter maintenant ou plus tard en utilisant l'éditeur de texte de votre choix. Notez le nom/l'emplacement au bas de l'écran de l'éditeur.
Appuyez sur Echap et une boîte de dialogue apparaîtra avec l'option a) leave editor sélectionnée. Appuyez sur Entrée pour quitter et continuer.
Le client NFS permet à votre machine d'accéder à des serveurs NFS.
User Confirmation Requested
Do you want to configure this machine as an NFS client?
Yes [ No ]
Avec les touches fléchées, sélectionnez [ Yes ] ou [ No ] selon vos besoins et appuyez sur Entrée.
Ils y a plusieurs options disponibles pour personnaliser la console système.
User Confirmation Requested
Would you like to customize your system console settings?
[ Yes ] No
Pour visualiser et configurer ces options, sélectionnez [ Yes ] et appuyez sur Entrée.
Une option généralement utilisée est l'économiseur d'écran. Utilisez les touches fléchées pour sélectionner Saver et appuyez ensuite sur Entrée.
Sélectionnez l'économiseur d'écran désiré en utilisant les touches fléchées et puis appuyez sur Entrée. Le menu de configuration de la console système réapparaîtra.
L'intervalle de temps par défaut est de 300 secondes. Pour changer cet intervalle de temps, sélectionnez Saver à nouveau. Au menu de configuration de l'économiseur d'écran, sélectionnez Timeout en utilisant les touches fléchées et appuyez sur Entrée. Une boîte de dialogue apparaîtra:
La valeur peut être changée, ensuite sélectionnez [ OK ] et appuyez sur Entrée pour retourner au menu de configuration de la console système.
En sélectionnant Exit et en appuyant sur Entrée on poursuivra avec les options de post-installation.
Régler le fuseau horaire sur votre machine lui permettra de corriger automatiquement tout changement horaire régional et d'exécuter d'autres fonctions liées au fuseau horaire correctement.
L'exemple présenté est pour une machine située dans le fuseau horaire oriental des Etats-Unis. Vos choix changeront en fonction de votre position géographique.
User Confirmation Requested
Would you like to set this machine's time zone now?
[ Yes ] No
Sélectionnez [ Yes ] et appuyez sur Entrée pour régler le fuseau horaire.
User Confirmation Requested
Is this machine's CMOS clock set to UTC? If it is set to local time
or you don't know, please choose NO here!
Yes [ No ]
Sélectionnez [ Yes ] ou [ No ] en fonction de la configuration de l'horloge de la machine et appuyez sur Entrée.
La région appropriée est sélectionnée en utilisant les touches fléchées, puis en appuyant sur Entrée.
Sélectionnez le pays approprié en utilisant les touches fléchées et appuyez sur Entrée.
Le fuseau horaire approprié est sélectionné en utilisant les touches fléchées et en appuyant sur Entrée.
Confirmation
Does the abbreviation 'EDT' look reasonable?
[ Yes ] No
Confirmez que l'abréviation pour le fuseau horaire est correcte. Si cela semble bon, appuyez sur Enter pour continuer avec la configuration de post-installation.
User Confirmation Requested
Would you like to enable Linux binary compatibility?
[ Yes ] No
La sélection de [ Yes ] et l'appui sur Entrée permettra d'exécuter des logiciels Linux sous FreeBSD. L'installation ajoutera les logiciels pré-compilés appropriés pour la compatibilité Linux.
Si l'on installe par FTP, la machine devra être connectée à l'Internet. Parfois un site FTP distant n'aura pas tous les ensembles de distributions comme la compatibilité binaire Linux. Cela peut être installé plus tard si nécessaire.
Cette option vous permettra de copier-coller du texte dans la console et les programmes utilisateur avec une souris 3 boutons. Si vous utilisez une souris 2 boutons, référez-vous à la page de manuel moused(8), après l'installation pour des détails sur l'émulation du troisième bouton. Cet exemple décrit la configuration d'une souris non-USB (comme une souris PS/2 ou sur port COM):
User Confirmation Requested
Does this system have a PS/2, serial, or bus mouse?
[ Yes ] No
Sélectionnez [ Yes ] pour une souris PS/2 ou série, ou [ No ] pour une souris USB et appuyez sur Entrée.
Utilisez les touches fléchées pour sélectionner Type et appuyez sur Entrée.
La souris utilisée dans cet exemple est de type PS/2, aussi la valeur par défaut Auto était appropriée. Pour changer le protocole, utilisez les touches fléchées pour sélectionner une autre option. Vérifiez que [ OK ] est surligné puis appuyez sur Entrée pour quitter ce menu.
Utilisez les touches fléchées pour sélectionner Port et appuyez sur Entrée.
Ce système avait une souris PS/2, aussi la valeur par défaut PS/2 était appropriée. Pour changer le port, utilisez les touches fléchées et puis appuyez sur Entrée.
Finalement, utilisez les touches fléchées pour sélectionner Enable, et appuyez sur Entrée pour activer et tester le gestionnaire de la souris.
Déplacez la souris sur l'écran et vérifiez que le curseur répond correctement. Si c'est le cas, sélectionnez [ Yes ] et appuyez sur Enter. Si ce n'est pas le cas, la souris n'a pas été configurée correctement -- sélectionnez [ No ] et essayez d'utiliser des options de configuration différentes.
Sélectionnez Exit avec les touches fléchées et appuyez sur Entrée pour continuer la configuration de post-installation.
Les ``packages'' sont des logiciels pré-compilés et sont une manière commode d'installer des programmes.
L'installation d'un logiciel pré-compilé est présenté comme illustration. Des logiciels pré-compilés supplémentaires peuvent être également ajoutés à ce moment-là si désiré. Après l'installation sysinstall peut être utilisé pour ajouter des logiciels pré-compilés supplémentaires.
User Confirmation Requested
The FreeBSD package collection is a collection of hundreds of
ready-to-run applications, from text editors to games to WEB servers
and more. Would you like to browse the collection now?
[ Yes ] No
La sélection de [ Yes ] et l'appui sur Entrée seront suivis par les écrans de sélection des logiciels pré-compilés:
Seuls les logiciels du support d'installation sont disponibles pour être installés à n'importe quel moment.
Tous les logiciels disponibles seront affichés si All est sélectionné ou vous pouvez choisir une catégorie particulière. Faites votre sélection en utilisant les touches fléchées puis appuyez sur Entrée.
Un menu s'affichera en montrant tous les logiciels pré-compilés disponibles pour la catégorie sélectionnée:
L'interpréteur de commande bash apparaît sélectionné. Choisissez autant de logiciels que désiré en les surlignant et en appuyant sur la touche Espace. Une courte description de chaque logiciel apparaîtra dans le coin inférieur gauche de l'écran.
En appuyant sur la touche Tab on basculera entre le dernier logiciel pré-compilé, [ OK ], et [ Cancel ].
Quand vous avez fini de marquer les logiciels pré-compilés pour l'installation, appuyez sur Tab une nouvelle fois pour basculer sur [ OK ] et appuyez sur Entrée pour revenir au menu de sélection des logiciels pré-compilés.
Les touches fléchées gauche et droite basculeront également entre [ OK ] et [ Cancel ]. Cette méthode peut être utilisée pour sélectionner [ OK ] et ensuite appuyer sur Entrée pour retourner au menu de sélection des logiciels pré-compilés.
Utilisez la touche Tab et les touches fléchées pour sélectionner [ Install ] et appuyez sur Entrée. Vous devrez alors confirmer que vous voulez installer les logiciels pré-compilés:
Sélectionner [ OK ] et l'appui sur Entrée lancera l'installation des logiciels. Des messages d'installation apparaîtront jusqu'à la fin de l'installation. Prenez note des éventuels messages d'erreur.
La configuration se poursuit après que les logiciels pré-compilés soient installés. Si vous ne choisissez aucun logiciel, et souhaitez retourner à la configuration finale, sélectionnez Install.
Vous devriez ajouter au moins un utilisateur pendant l'installation de sorte que vous puissiez utiliser le système sans être attaché en tant que root. La partition racine est généralement petite et utiliser des applications en tant que root peut rapidement la remplir. Un plus grand danger est signalé ci-dessous:
User Confirmation Requested
Would you like to add any initial user accounts to the system? Adding
at least one account for yourself at this stage is suggested since
working as the "root" user is dangerous (it is easy to do things which
adversely affect the entire system).
[ Yes ] No
Sélectionnez [ Yes ] et appuyez sur Entrée pour continuer avec l'ajout d'un utilisateur.
Sélectionnez User avec les touches fléchées et appuyez sur Entrée.
Les descriptions suivantes apparaîtront dans la partie inférieure de l'écran au fur et à mesure que les éléments seront sélectionnés avec Tab pour aider dans l'entrée des informations nécessaires:
L'identifiant du nouvel utilisateur (obligatoire).
L'identifiant numérique pour cet utilisateur (laisser tel quel pour le choix automatique).
Le nom du groupe pour cet utilisateur (laisser tel quel pour le choix automatique).
Le mot de passe pour cet utilisateur (compléter ce champ avec précaution!).
Le nom complet de l'utilisateur (commentaire).
Les groupes auxquels appartient l'utilisateur (i.e. dont il a les droits accès).
Le répertoire de l'utilisateur (laisser tel quel pour le choix automatique).
L'interpréteur de commande de l'utilisateur (laisser tel quel pour le choix automatique, i.e. /bin/sh).
On a changé l'interpréteur de commande /bin/sh pour /usr/local/bin/bash afin d'utiliser bash qui a été installé précédemment sous forme de logiciel pré-compilé. N'essayez pas d'utiliser un interpréteur de commande qui n'existe pas ou vous ne serez pas en mesure d'ouvrir de session. L'interpréteur de commande le plus commun dans le monde BSD est l'interpréteur C shell, qui peut être spécifié à l'aide de /bin/tcsh.
L'utilisateur a aussi été ajouté au groupe wheel pour qu'il puisse devenir super-utilisateur avec les privilèges de root.
Quand vous êtes satisfait, appuyez sur [ OK ] et le menu de gestion des utilisateurs et des groupes réapparaîtra:
Des groupes peuvent également être ajoutés à ce moment si des besoins spécifiques sont connus. Sinon, cela pourra être fait en utilisant sysinstall quand l'installation sera achevée.
Quand vous en avez terminé avec l'ajout d'utilisateurs, sélectionnez Exit avec les touches fléchées et appuyez sur Entrée pour continuer l'installation.
Message
Now you must set the system manager's password.
This is the password you'll use to log in as "root".
[ OK ]
[ Press enter or space ]
Appuyez sur Entrée pour définir le mot de passe de root.
Le mot de passe devra être saisi deux fois correctement. Inutile de dire, que vous devez vous assurer d'avoir un moyen de retrouver le mot de passe si vous l'oubliez. Notez que le mot de passe que vous taperez ne s'affichera pas, il ne sera pas non plus remplacé par des astérisques.
New password: Retype new password :
L'installation continuera après que le mot de passe ait été entré avec succès.
Si vous devez configurer des services réseau supplémentaires ou toute autre configuration, vous pouvez le faire à ce moment-là ou après l'installation en utilisant sysinstall.
User Confirmation Requested
Visit the general configuration menu for a chance to set any last
options?
Yes [ No ]
Sélectionnez [ No ] avec les touches fléchées et appuyez sur Entrée pour retourner au menu principal d'installation.
Sélectionnez [X Exit Install] avec les touches fléchées et appuyez sur Entrée. On vous demandera de confirmer votre désir de quitter l'installation:
User Confirmation Requested
Are you sure you wish to exit? The system will reboot (be sure to
remove any floppies/CDs/DVDs from the drives).
[ Yes ] No
Sélectionnez [ Yes ] et retirez la disquette si vous avez démarré depuis le lecteur de disquette. Le lecteur de CDROM est verrouillé jusqu'au redémarrage de la machine. Le lecteur de CDROM est alors déverrouillé et le CDROM peut être retiré du lecteur (rapidement).
Le système redémarrera aussi faites attention à tout message d'erreur qui pourrait apparaître, voir la Section 2.10.16 pour plus de détails.
La configuration des services réseaux peut être une tâche intimidante pour les nouveaux utilisateurs s'ils ne possèdent pas de connaissances dans ce domaine. L'accès réseau, y compris l'Internet, est un élément essentiel de tout système d'exploitation moderne, c'est le cas de FreeBSD; il en résulte, qu'il est très utile de comprendre un peu les capacités réseau étendues de FreeBSD. Effectuer cette configuration lors de l'installation garantira que les utilisateurs ont une compréhension des divers services qui leur sont disponibles.
Les services réseaux sont des programmes qui acceptent des entrées depuis n'importe quel endroit du réseau. De nombreux efforts sont fait pour s'assurer que ces programmes ne feront rien de ``nocif''. Malheureusement, les programmeurs ne sont pas parfait et par le passé il y a eu des cas où des bogues dans les services réseaux ont été exploités par des personnes malveillantes pour faire de mauvaises choses. Il est donc important que vous n'activiez que les services dont vous avez besoin. Dans le doute, il vaut mieux que vous n'activiez pas un service réseau avant que vous ne vous rendiez compte que vous en avez réellement besoin. Vous pouvez toujours l'activer plus tard en relançant sysinstall ou en utilisant les options fournies par le fichier /etc/rc.conf.
Sélectionner Networking fera apparaître un menu similaire au suivant:
La première option, Interfaces, a été précédemment abordée dans la Section 2.10.1, aussi cette option peut être ignorée sans risque.
La sélection de l'option AMD ajoute le support de l'utilitaire de montage automatique BSD. Il est généralement employé en conjonction avec le protocole NFS (voir plus bas) pour monter automatiquement les systèmes de fichiers distants. Aucune configuration particulière n'est ici nécessaire.
La ligne suivante est l'option AMD Flags. Quand elle est sélectionnée, un menu s'affichera pour que vous puissiez saisir les paramètres spécifiques à AMD. Le menu affiche déjà un ensemble d'options par défaut:
-a /.amd_mnt -l syslog /host /etc/amd.map /net /etc/amd.map
L'option -a fixe l'emplacement de montage par
défaut qui est ici /.amd_mnt. L'option -l spécifie le fichier journal par défaut,
cependant quand syslogd est utilisé toutes les
traces seront envoyées au ``daemon'' gérant les journaux
systèmes. Le répertoire /host est
employé pour monter un système de fichiers exporté par une
machine distante, tandis que le répertoire /net est
utilisé pour monter un système de fichiers exporté à
partir d'une adresse IP. Le fichier
/etc/amd.map définit les options par
défaut pour les exportations AMD.
L'option Anon FTP autorise les connexions FTP anonymes. Sélectionnez cette option pour faire de la machine un serveur FTP anonyme. Soyez cependant conscient des risques de sécurité impliqués avec cette option. Un autre menu sera affiché pour expliquer les risques au niveau de la sécurité et la configuration en détail.
Le menu de configuration Gateway paramétrera la machine pour agir en passerelle comme expliqué précédemment. Cela peut être utilisé pour désactiver l'option Gateway si vous l'avez sélectionné accidentellement durant le processus d'installation.
L'option Inetd peut être utilisée pour configurer ou complètement désactiver le ``daemon'' inetd(8) comme exposé plus haut.
L'option Mail est employée pour configurer l'agent de transfert du courrier électronique (``MTA'') par défaut du système. Choisir cette option fera afficher le menu suivant:
On vous propose ici un choix de MTA à installer et à utiliser par défaut. Un MTA n'est ni plus ni moins qu'un serveur de courrier électronique qui délivre le courrier électronique aux utilisateurs sur le système ou sur l'Internet.
Sélectionner Sendmail installera le serveur sendmail qui est celui par défaut sous FreeBSD. L'option Sendmail local fera en sorte que sendmail soit le MTA par défaut, mais désactivera sa capacité à recevoir du courrier électronique en provenance de l'Internet. Les autres options, Postfix et Exim agissent de façon similaire à Sendmail. Dans les deux cas le courrier électronique sera également distribué; cependant, certains utilisateurs, préfèrent ces alternatives au MTA sendmail.
Après la sélection d'un MTA, ou avoir choisi de ne pas sélectionner de MTA, le menu de configuration du réseau apparaîtra avec l'option suivante qui est NFS client.
L'option NFS client configurera le système pour communiquer avec un serveur via NFS. Un serveur NFS rend disponible à d'autres serveurs des systèmes de fichiers par l'intermédiaire du protocole NFS. Si c'est une machine indépendante, cette option peut rester désactivée. Ce système peut demander plus de configuration ultérieurement, consultez la Section 28.3 pour plus d'informations sur la configuration du client et du serveur.
Sous cette option se trouve l'option NFS server, vous permettant de configurer le système comme serveur NFS. Ceci ajoute l'information nécessaire pour démarrer les services d'appel de procédures distantes (RPC). Les RPC sont utilisées pour coordonner les connexions entre machines et programmes.
L'option suivante est Ntpdate, qui traite de la synchronisation de l'horloge. Quand cette option est sélectionnée, un menu semblable au suivant apparaît:
A partir de ce menu, sélectionnez le serveur le plus proche de chez vous. En choisir un proche rendra la synchronisation plus précise qu'avec un serveur éloigné qui pourra présenter plus de délais dans la connexion.
L'option suivante est la sélection de PCNFSD. Cette option installera le paquetage net/pcnfsd. C'est un programme très utile qui fournit des services d'authentification pour les systèmes qui sont dans l'incapacité de fournir leur propre service d'authentification, comme le système d'exploitation MS-DOS de Microsoft.
Maintenant vous devez faire défiler l'écran vers le bas pour voir les autres option:
Les utilitaires rpcbind(8), rpc.statd(8), et rpc.lockd(8) sont utilisés pour les appels de procédures distantes (RPC). L'utilitaire rpcbind gère la communication entre serveurs et clients NFS, et est nécessaire aux serveurs NFS pour fonctionner correctement. Le ``daemon'' rpc.statd interagit avec le ``daemon'' rpc.statd d'autres machines pour fournir une possibilité de surveiller l'état des communications. Le rapport est généralement conservé dans le fichier /var/db/statd.status. La dernière option proposée ici est l'option rpc.lockd, qui, quand elle est sélectionnée, fournira des services de verrouillage des fichiers. Cela est habituellement utilisé avec rpc.statd pour surveiller quelles machines demandent des verrous et la fréquence de ces demandes. Alors que ces options sont parfaites pour le déboguage, elles ne sont pas nécessaires pour le bon fonctionnement des serveurs et clients NFS.
En parcourant la liste, l'option suivante est Routed, qui est le ``daemon'' de routage. L'utilitaire routed(8)
gère les tables de routage réseau, repère les routeurs
multicast, et fournit sur demande une copie des tables de routage à toute
machine connectée sur le réseau. Ceci est principalement
utilisé pour les machines jouant le rôle de passerelle pour le
réseau local. Quand cette option est sélectionnée, un menu
apparaîtra demandant l'emplacement par défaut de l'utilitaire. Cet
emplacement par défaut est déjà défini pour vous,
et peut être acquitté avec la touche Entrée. Vous sera alors présenté un nouveau
menu, demandant cette fois les paramètres à passer à routed. Par défaut: -q
qui devrait apparaître sur l'écran.
La ligne suivante est l'option Rwhod, qui quand elle est sélectionnée, lancera le ``daemon'' rwhod(8) à l'initialisation du système. L'utilitaire rwhod diffuse les messages système sur le réseau régulièrement, ou les collecte quand il est dans le mode ``consumer''. Plus d'informations peuvent être obtenues dans les pages de manuel ruptime(1) et rwho(1).
L'option suivante dans la liste est le ``daemon'' sshd(8). C'est le serveur de connexions sécurisées pour OpenSSH et est hautement recommandé à la place de telnet et des serveurs FTP. Le serveur sshd est employé pour créer une connexion sécurisée d'une machine vers une autre en utilisant des connexions cryptées.
Enfin, il y a l'option TCP Extensions. Celle-ci active les extensions TCP comme définies dans les RFC 1323 et RFC 1644. Alors que cela peut sur certaines machines rendre les connexions plus rapides, cela peut également être à l'origine de pertes de connexion. Cette option n'est pas recommandée pour les serveurs, mais peut être bénéfique pour les machines individuelles.
Une fois que vous avez configuré les services réseaux, vous pouvez remonter l'écran jusqu'à la toute première option qui est X Exit et poursuivre avec la section de configuration suivante ou tout simplement quitter sysinstall en sélectionnant deux fois à suite X Exit puis [X Exit Install].
Si tout s'est bien passé, vous verrez des messages défiler à l'écran et vous arriverez à l'invite de session. Vous pouvez visualiser ces messages en appuyant sur Arrêt-défil et en utilisant les touches PgUp et PgDn. En appuyant à nouveau sur Arrêt-défil on retournera à l'invite.
L'intégralité des messages peut de pas être affichée (limitation du tampon) mais peut être visualisée depuis la ligne de commande après l'ouverture d'une session en tapant dmesg à l'invite.
Attachez-vous au système en utilisant le nom d'utilisateur et le mot de passe définis durant l'installation (rpratt, dans cet exemple). Evitez d'ouvrir des sessions en tant que root excepté quand cela est nécessaire.
Messages de démarrage typiques (information sur la version omise):
Copyright (c) 1992-2002 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
The Regents of the University of California. All rights reserved.
Timecounter "i8254" frequency 1193182 Hz
CPU: AMD-K6(tm) 3D processor (300.68-MHz 586-class CPU)
Origin = "AuthenticAMD" Id = 0x580 Stepping = 0
Features=0x8001bf<FPU,VME,DE,PSE,TSC,MSR,MCE,CX8,MMX>
AMD Features=0x80000800<SYSCALL,3DNow!>
real memory = 268435456 (262144K bytes)
config> di sn0
config> di lnc0
config> di le0
config> di ie0
config> di fe0
config> di cs0
config> di bt0
config> di aic0
config> di aha0
config> di adv0
config> q
avail memory = 256311296 (250304K bytes)
Preloaded elf kernel "kernel" at 0xc0491000.
Preloaded userconfig_script "/boot/kernel.conf" at 0xc049109c.
md0: Malloc disk
Using $PIR table, 4 entries at 0xc00fde60
npx0: <math processor> on motherboard
npx0: INT 16 interface
pcib0: <Host to PCI bridge> on motherboard
pci0: <PCI bus> on pcib0
pcib1: <VIA 82C598MVP (Apollo MVP3) PCI-PCI (AGP) bridge> at device 1.0 on pci0
pci1: <PCI bus> on pcib1
pci1: <Matrox MGA G200 AGP graphics accelerator> at 0.0 irq 11
isab0: <VIA 82C586 PCI-ISA bridge> at device 7.0 on pci0
isa0: <ISA bus> on isab0
atapci0: <VIA 82C586 ATA33 controller> port 0xe000-0xe00f at device 7.1 on pci0
ata0: at 0x1f0 irq 14 on atapci0
ata1: at 0x170 irq 15 on atapci0
uhci0: <VIA 83C572 USB controller> port 0xe400-0xe41f irq 10 at device 7.2 on pci0
usb0: <VIA 83C572 USB controller> on uhci0
usb0: USB revision 1.0
uhub0: VIA UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub0: 2 ports with 2 removable, self powered
chip1: <VIA 82C586B ACPI interface> at device 7.3 on pci0
ed0: <NE2000 PCI Ethernet (RealTek 8029)> port 0xe800-0xe81f irq 9 at
device 10.0 on pci0
ed0: address 52:54:05:de:73:1b, type NE2000 (16 bit)
isa0: too many dependant configs (8)
isa0: unexpected small tag 14
fdc0: <NEC 72065B or clone> at port 0x3f0-0x3f5,0x3f7 irq 6 drq 2 on isa0
fdc0: FIFO enabled, 8 bytes threshold
fd0: <1440-KB 3.5" drive> on fdc0 drive 0
atkbdc0: <keyboard controller (i8042)> at port 0x60-0x64 on isa0
atkbd0: <AT Keyboard> flags 0x1 irq 1 on atkbdc0
kbd0 at atkbd0
psm0: <PS/2 Mouse> irq 12 on atkbdc0
psm0: model Generic PS/2 mouse, device ID 0
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
sc0: <System console> at flags 0x1 on isa0
sc0: VGA <16 virtual consoles, flags=0x300>
sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0
sio0: type 16550A
sio1 at port 0x2f8-0x2ff irq 3 on isa0
sio1: type 16550A
ppc0: <Parallel port> at port 0x378-0x37f irq 7 on isa0
ppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode
ppc0: FIFO with 16/16/15 bytes threshold
ppbus0: IEEE1284 device found /NIBBLE
Probing for PnP devices on ppbus0:
plip0: <PLIP network interface> on ppbus0
lpt0: <Printer> on ppbus0
lpt0: Interrupt-driven port
ppi0: <Parallel I/O> on ppbus0
ad0: 8063MB <IBM-DHEA-38451> [16383/16/63] at ata0-master using UDMA33
ad2: 8063MB <IBM-DHEA-38451> [16383/16/63] at ata1-master using UDMA33
acd0: CDROM <DELTA OTC-H101/ST3 F/W by OIPD> at ata0-slave using PIO4
Mounting root from ufs:/dev/ad0s1a
swapon: adding /dev/ad0s1b as swap device
Automatic boot in progress...
/dev/ad0s1a: FILESYSTEM CLEAN; SKIPPING CHECKS
/dev/ad0s1a: clean, 48752 free (552 frags, 6025 blocks, 0.9% fragmentation)
/dev/ad0s1f: FILESYSTEM CLEAN; SKIPPING CHECKS
/dev/ad0s1f: clean, 128997 free (21 frags, 16122 blocks, 0.0% fragmentation)
/dev/ad0s1g: FILESYSTEM CLEAN; SKIPPING CHECKS
/dev/ad0s1g: clean, 3036299 free (43175 frags, 374073 blocks, 1.3% fragmentation)
/dev/ad0s1e: filesystem CLEAN; SKIPPING CHECKS
/dev/ad0s1e: clean, 128193 free (17 frags, 16022 blocks, 0.0% fragmentation)
Doing initial network setup: hostname.
ed0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
inet6 fe80::5054::5ff::fede:731b%ed0 prefixlen 64 tentative scopeid 0x1
ether 52:54:05:de:73:1b
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x8
inet6 ::1 prefixlen 128
inet 127.0.0.1 netmask 0xff000000
Additional routing options: IP gateway=YES TCP keepalive=YES
routing daemons:.
additional daemons: syslogd.
Doing additional network setup:.
Starting final network daemons: creating ssh RSA host key
Generating public/private rsa1 key pair.
Your identification has been saved in /etc/ssh/ssh_host_key.
Your public key has been saved in /etc/ssh/ssh_host_key.pub.
The key fingerprint is:
cd:76:89:16:69:0e:d0:6e:f8:66:d0:07:26:3c:7e:2d root@k6-2.example.com
creating ssh DSA host key
Generating public/private dsa key pair.
Your identification has been saved in /etc/ssh/ssh_host_dsa_key.
Your public key has been saved in /etc/ssh/ssh_host_dsa_key.pub.
The key fingerprint is:
f9:a1:a9:47:c4:ad:f9:8d:52:b8:b8:ff:8c:ad:2d:e6 root@k6-2.example.com.
setting ELF ldconfig path: /usr/lib /usr/lib/compat /usr/X11R6/lib
/usr/local/lib
a.out ldconfig path: /usr/lib/aout /usr/lib/compat/aout /usr/X11R6/lib/aout
starting standard daemons: inetd cron sshd usbd sendmail.
Initial rc.i386 initialization:.
rc.i386 configuring syscons: blank_time screensaver moused.
Additional ABI support: linux.
Local package initilization:.
Additional TCP options:.
FreeBSD/i386 (k6-2.example.com) (ttyv0)
login: rpratt
Password:
La génération des clés RSA et DSA peut prendre du temps sur les machines lentes. Cela ne se produit qu'au premier démarrage d'une nouvelle installation. Les démarrages suivants seront plus rapides.
Si le serveur X a été configuré et l'environnement de travail par défaut choisi, il peut être lancé en tapant startx sur la ligne de commande.
Une fois la procédure d'installation terminée, vous serez en mesure de démarrer FreeBSD en tapant quelque chose comme ceci à l'invite SRM:
>>>BOOT DKC0
Cela demande au firmware de démarrer sur le disque indiqué. Pour faire démarrer FreeBSD automatiquement dans le futur, utilisez ces commandes:
>>> SET BOOT_OSFLAGS A >>> SET BOOT_FILE '' >>> SET BOOTDEF_DEV DKC0 >>> SET AUTO_ACTION BOOT
Les messages de démarrage seront semblables (mais pas identiques) à ceux produits par le démarrage de FreeBSD sur i386.
Il est important d'arrêter proprement le système d'exploitation. N'appuyez pas directement sur votre bouton de marche-arrêt. Tout d'abord, devenez super-utilisateur en tapant su sur la ligne de commande et en entrant le mot de passe de root. Cela ne fonctionnera que si l'utilisateur est membre du groupe wheel. Sinon, ouvrez une session en tant que root et utilisez shutdown -h now.
The operating system has halted. Please press any key to reboot.
On peut arrêter la machine sans risques après la que commande d'arrêt ait été effectuée et que le message ``Please press any key to reboot'' (Veuillez appuyez sur une touche pour redémarrer) apparaît. Si une touche est enfoncée plutôt que d'arrêter l'ordinateur, le système redémarrera.
Vous pouvez également utiliser la combinaison de touches Ctrl+Alt+Suppr, cependant cela n'est pas recommandé pour une utilisation normale.
La section suivante couvre le dépannage de base de l'installation, les problèmes courants qui ont été rapportés. Il y a aussi un ensemble de questions-réponses pour les personnes désirant un double démarrage FreeBSD et MS-DOS ou Windows.
En raison des nombreuses limitations de l'architecture PC, il est impossible que la détection du matériel soit à 100% fiable, cependant, il y a quelques petites choses que vous pouvez faire si cela échoue.
Vérifiez la liste du matériel supporté pour votre version de FreeBSD pour être sûr que votre matériel est bien supporté.
Si votre matériel est supporté et que vous expérimentez toujours des blocages ou autres problèmes, vous devrez compiler un noyau personnalisé. Cela permettra d'ajouter le support pour les périphériques qui ne sont pas présent dans le noyau GENERIC. Le noyau présent sur les disques de démarrage est configuré de telle façon qu'il supposera que la plupart des périphériques seront dans leur configuration d'usine en termes d'IRQs, d'adresses d'E/S, et canaux de DMA. Si votre matériel a été reconfiguré vous devrez très probablement éditer le fichier de configuration du noyau et de le recompiler pour indiquer à FreeBSD où trouver les choses.
Il est également possible que la détection d'un périphérique absent provoque plus tard l'échec de la détection d'un périphérique présent. Dans ce cas, les pilotes de périphériques conflictuels devraient être désactivés.
Note : Quelques problèmes d'installation peuvent être évités ou allégés en mettant à jour le firmware de divers composants matériels, en particulier la carte mère. Le firmware de la carte mère peut également être désigné par le terme BIOS et la plupart des constructeurs de cartes mères ou d'ordinateur ont un site web où peuvent être trouvées les mises à jour et les informations de mises à jour.
La plupart des fabricants déconseillent fortement de mettre à jour le BIOS de la carte mère à moins d'avoir une bonne raison de le faire, ce qui pourrait probablement être une mise à jour critique si l'on peut dire. Le processus de mise à jour peut mal se passer, causant des dommages permanents au circuit contenant le BIOS.
De nombreux utilisateurs veulent installer FreeBSD sur des PCs qui fonctionnent sous un système d'exploitation de Microsoft. Dans ce cas, FreeBSD dispose d'un utilitaire connu sous le nom de FIPS. Cette utilitaire peut être trouvé dans le répertoire tools du CD-ROM d'installation, ou téléchargé à partir des différents miroirs FreeBSD.
L'utilitaire FIPS vous permet de scinder en deux une partition MS-DOS existante, tout en préservant le contenu de la partition originale et vous permettant d'installer FreeBSD sur la partition ainsi créée. Vous devez défragmenter tout d'abord votre partition MS-DOS en utilisant l'utilitaire Windows Défragmenteur de disque (allez dans l'Explorateur, clic-droit sur le disque dur, et choisissez de défragmenter votre disque dur) ou les Norton Disk Tools. Vous pouvez ensuite lancer le programme FIPS. Il vous demandera le reste des informations dont il a besoin, suivez juste les instructions à l'écran. Ensuite, vous pouvez redémarrer et installer FreeBSD sur la tranche libre. Voyez le menu Distributions pour avoir une estimation de l'espace libre dont vous aurez besoin pour le type d'installation que vous désirez.
Il existe également un produit très utile de chez PowerQuest appelé PartitionMagic. Cette application a bien plus de fonctionnalités que FIPS, et est fortement recommandée si vous projetez d'ajouter/retirer régulièrement des systèmes d'exploitation. Cependant ce programme n'est pas gratuit, et si vous projetez d'installer FreeBSD et ensuite le laisser installé, FIPS sera probablement parfait pour vous.
Pour le moment, FreeBSD, ne supporte pas les systèmes de fichiers compressés avec l'application Double Space™. Par conséquent, le système de fichiers doit être décompressé avant que FreeBSD ne puisse accéder aux données. Cela peut être fait en lançant l'Agent de compression situé dans le menu Démarrer> Programmes > Outils Système.
FreeBSD supporte les systèmes de fichiers MS-DOS (parfois appelés systèmes de fichiers FAT). La commande mount_msdosfs(8) greffe ce type de système de fichiers sur l'arborescence déjà existante permettant ainsi l'accès au contenu du système de fichiers. La commande mount_msdosfs(8) n'est, en général, pas invoquée directement; au lieu de cela, elle est appelée par le système via une ligne du fichier /etc/fstab pour par un appel à l'utilitaire mount(8) avec les paramètres adéquates.
Une entrée typique de /etc/fstab sera:
/dev/ad0sN /dos msdosfs rw 0 0
Note : Pour que cela fonctionne, il faut que le répertoire /dos existe déjà. Pour plus de détails au sujet du format de /etc/fstab, consultez la page de manuel fstab(5).
Un appel à mount(8) pour un système de fichiers MS-DOS ressemblera à:
# mount -t msdosfs /dev/ad0s1 /mnt
Dans cet exemple, le système de fichiers MS-DOS est situé sur la première partition du premier disque dur. Votre situation peut être différente, contrôlez les sorties des commandes dmesg et mount. Elles doivent fournir suffisamment d'information pour donner une idée de l'organisation des partitions.
Note : FreeBSD peut numéroter les tranches (par exemple les partitions MS-DOS) différemment des autres systèmes d'exploitation. En particulier, les partitions MS-DOS étendues sont généralement affectées d'un numéro de tranche supérieur à celui des partitions primaires MS-DOS. L'utilitaire fdisk(8) peut aider à déterminer les tranches qui appartiennent à FreeBSD et celles appartenant à d'autres systèmes d'exploitation.
Les partitions NTFS peuvent également être montées d'une manière similaire en employant la commande mount_ntfs(8).
2.11.4.1. Mon système se bloque au niveau de la détection du matériel lors du démarrage, ou se comporte de manière étrange lors de l'installation, ou le lecteur de disquette n'est pas détecté.
FreeBSD utilise de manière intensive le système ACPI sur les plateformes i386, amd64 et ia64 s'il est détecté au démarrage pour aider à la détection du matériel. Malheureusement, des bogues persistent dans le pilote ACPI, et sur les cartes mères et leur BIOS. L'utilisation de l'ACPI peut être désactivé en fixant le paramètre hint.acpi.0.disabled pour le chargeur:
set hint.acpi.0.disabled="1"
Ce paramètre est réinitialisé à chaque démarrage du système, il est donc nécessaire d'ajouter hint.acpi.0.disabled="1" au fichier /boot/loader.conf. Plus d'information au sujet du chargeur peut être trouvée dans la Section 12.1.
2.11.4.2. Je tente de démarrer à partir du disque dur pour la première fois après l'installation de FreeBSD, le noyau est chargé et détecte mon matériel, mais s'arrête avec un message du type:
changing root device to ad1s1a panic: cannot mount root
Qu'est-ce qui ne va pas? Que puis-je faire?
Que représente la ligne bios_drive:interface(unit,partition)kernel_name qui est affichée comme message d'aide?
Il existe un problème de longue date dans le cas où le disque de démarrage n'est pas le premier disque du système. Le BIOS utilise un modèle de numérotation des disques différent de celui de FreeBSD, et déterminer quel numéro correspond avec quoi est relativement compliqué.
Si le disque de démarrage n'est pas le premier disque du système, FreeBSD peut avoir besoin d'aide pour le trouver. Nous sommes en général en face de deux situations et dans ces deux cas vous devez indiquer à FreeBSD où se trouve le système de fichiers racine. Cela se fait en précisant le numéro du disque BIOS, le type de disque et le numéro FreeBSD de disque pour ce type de disque.
La première situation correspond au cas où vous disposez de deux disques IDE, configurés chacun en maître sur leur bus IDE respectif, et que vous désirez démarrer FreeBSD à partir du second disque. Le BIOS voit ces disques en tant que disque 0 et disque 1, tandis que FreeBSD en tant que ad0 et ad1.
FreeBSD se trouve sur le disque BIOS numéro 1 qui est de type ad alors que le numéro de disque pour FreeBSD sera le 2, aussi vous utiliserez la syntaxe:
1:ad(2,a)kernel
Notez que si vous avez un esclave sur le bus primaire, ce qui précède n'est pas nécessaire (et est en fait erroné).
Le deuxième cas concerne le démarrage à partir d'un disque SCSI quand on dispose d'un ou plusieurs disques IDE dans le système. Dans ce cas, le numéro de disque FreeBSD est inférieur au numéro de disque BIOS. Si vous avez deux disques IDE en plus du disque SCSI, le disque SCSI sera le disque BIOS numéro 2, de type da et sera vu en tant que disque 0 par FreeBSD, aussi vous utiliserez la syntaxe:
2:da(0,a)kernel
pour indiquer à FreeBSD que vous voulez démarrer à partir du disque BIOS numéro 2, qui est le premier disque SCSI du système. Si vous n'avez qu'un seul disque IDE, vous utiliseriez à la place 1:.
Une fois que vous avez déterminé les valeurs correctes à employer, vous pouvez ajouter dans le fichier /boot.config à l'aide d'un éditeur de textes la commande que vous auriez tapé. A moins d'une instruction contraire, FreeBSD utilisera le contenu de ce fichier comme réponses par défaut à l'invite boot:.
2.11.4.3. J'essaye de démarrer à partir du disque dur pour la première fois après l'installation de FreeBSD, mais l'invite du gestionnaire de démarrage n'affiche que F? et la procédure de démarrage ne va pas plus loin.
La géométrie du disque dur n'a pas été correctement configurée dans l'éditeur de partitions quand vous avez installé FreeBSD. Retournez dans l'éditeur de partitions et indiquez la géométrie réelle de votre disque dur. Vous devez réinstaller complètement FreeBSD avec la bonne géométrie.
Si vous ne parvenez pas à déterminer la géométrie de votre disque, voici une astuce: créez une petite partition DOS au début du disque et installez ensuite FreeBSD. Le programme d'installation verra la partition DOS et tentera d'en déduire la géométrie correcte, ce qui fonctionne généralement.
L'astuce suivante n'est plus conseillée, mais est conservée comme référence:
Si vous montez un serveur ou une station de travail complètement dédiés à FreeBSD pour lesquels vous n'avez que faire (dans le futur) d'une compatibilité avec DOS, Linux, ou tout autre système d'exploitation, vous avez également l'option d'utiliser l'intégralité du disque (A dans l'éditeur de partition), en sélectionnant l'option non-standard pour laquelle FreeBSD occupe entièrement le disque du premier jusqu'au dernier secteur. Cela laissera de côté toutes les considérations au sujet de la géométrie du disque, mais c'est quelque peu limitatif à moins que vous n'ayez pas l'intention d'utiliser autre chose que FreeBSD sur ce disque.
2.11.4.4. Le système trouve ma carte réseau ed(4), mais je continue à avoir des erreurs de dépassement des délais d'attente.
Votre carte utilise probablement une IRQ différente de celle spécifiée dans le fichier /boot/device.hints. Le pilote ed(4) n'utilise pas la configuration “soft” par défaut (les valeurs entrées à l'aide de EZSETUP sous DOS), mais utilisera la configuration logicielle si vous précisez la valeur -1 pour les paramètres de l'interface en question.
Positionnez le cavalier sur la carte pour une configuration “hard” (en modifiant les paramètres du noyau si nécessaire), ou spécifiez l'IRQ en tant que -1 en fixant le paramètre hint.ed.0.irq="-1". Cela demandera au noyau d'utiliser la configuration logicielle.
Une autre possibilité est que votre carte utilise l'IRQ 9, qui est partagée avec l'IRQ 2 et est une cause fréquente de problèmes (tout particulièrement dans le cas où vous avez une carte VGA utilisant l'IRQ 2!). Vous ne devriez pas utiliser les IRQs 2 et 9 autant que possible.
Cette section décrit comment installer FreeBSD dans des cas exceptionnels.
Ce type d'installation est appelé ``headless install'' (installation sans écran), parce que la machine sur laquelle vous êtes en train d'installer FreeBSD soit n'a pas de moniteur, soit n'a même pas de sortie VGA. Comment est-ce possible, allez-vous demander? En utilisant une console série. Une console série est en quelques mots l'utilisation d'une autre machine comme écran et clavier pour un autre système. Pour cela, suivez juste les étapes de création des disquettes d'installation, expliquées dans Section 2.3.7.
Pour modifier ces disquettes afin de démarrer à travers une console série, suivez les étapes suivantes:
Configurer les disquettes de démarrage pour démarrer à travers la console série
Si vous deviez démarrer avec les disquettes que vous venez de faire, FreeBSD démarrerait dans son mode d'installation normal. Nous voulons que FreeBSD démarre sur la console série pour notre installation. Pour faire cela, vous devez monter la disquette boot.flp sur votre système FreeBSD en utilisant la commande mount(8).
# mount /dev/fd0 /mnt
Maintenant que vous avez la disquette montée, vous devez vous rendre dans le répertoire /mnt:
# cd /mnt
C'est à cet endroit que vous devez configurer la disquette pour démarrer sur la console série. Vous devez créer un fichier appelé boot.config contenant la ligne /boot/loader -h. Tout ceci provoque le passage d'une option au chargeur pour démarrer sur la console série.
# echo "/boot/loader -h" > boot.config
Maintenant que vous avez votre disquette correctement configurée, vous devez démonter la disquette en utilisant la commande umount(8):
# cd / # umount /mnt
Maintenant vous pouvez retirer la disquette de son lecteur.
Connecter votre câble null-modem
Vous devez maintenant connecter un câble null-modem entre les deux machines. Connectez juste le câble sur le port série des deux machines. Un câble série normal ne conviendra pas ici, vous avez besoin d'un câble null-modem parce certains fils sont croisés à l'intérieur.
Démarrer l'installation
Il est maintenant temps de lancer l'installation. Mettez la disquette boot.flp dans le lecteur de la machine que vous allez installer sans moniteur et clavier, et allumez la machine.
Connexion à la machine sans moniteur ni clavier
Maintenant vous devez vous connecter à cette machine à l'aide de cu(1):
# cu -l /dev/cuad0
Voilà! Vous devriez maintenant pouvoir contrôler la machine sans moniteur et sans clavier à travers votre session cu. On vous demandera d'insérer la disquette kern1.flp, et ensuite on vous proposera de choisir le type de terminal à utiliser. Sélectionnez la console couleur FreeBSD et effectuez votre installation!
Note : Pour éviter les répétitions, ``disque FreeBSD'' dans ce contexte signifie un CDROM ou DVD FreeBSD que vous avez acheté, ou produit vous-même.
Il peut y avoir quelques situations dans lesquelles vous devez créer votre propre support et/ou source d'installation de FreeBSD. Cela pourrait être un support physique, comme une bande, ou une source que sysinstall pourrait employer pour récupérer les fichiers, comme un site FTP local, ou une partition MS-DOS.
Par exemple:
Vous avez beaucoup de machines connectées sur votre réseau local, et un seul disque FreeBSD. Vous voulez créer un site FTP local utilisant le contenu du disque FreeBSD, et ensuite faire utiliser ce site FTP local par vos machines plutôt que de se connecter à l'Internet.
Vous avez un disque FreeBSD, et FreeBSD ne reconnaît pas votre lecteur de CD/DVD, mais MS-DOS/Windows oui. Vous voulez copier les fichiers d'installation de FreeBSD sur une partition DOS sur le même ordinateur, et ensuite installer FreeBSD en utilisant ces fichiers.
L'ordinateur sur lequel vous voulez installer n'a pas de lecteur de CD/DVD, ou de carte réseau, mais vous pouvez connecter un câble série ou parallèle de ``type Laplink'' sur un ordinateur qui lui dispose d'un lecteur de CD/DVD ou d'une carte réseau.
Vous voulez créer une bande qui peut être utilisée pour installer FreeBSD.
Comme élément de chaque nouvelle version, le projet FreeBSD met à disposition au moins deux images de CDROM (``images ISO'') par architecture supportée. Ces images peuvent être inscrites (``gravées'') sur CDs si vous disposez d'un graveur de CD, et puis être utilisées pour installer FreeBSD. Si vous avez un graveur de CD, et comme la bande passante est bon marché, alors c'est la méthode la plus simple pour installer FreeBSD.
Télécharger les bonnes images ISO
Les images ISO de chaque version peuvent être téléchargées à partir de ftp://ftp.FreeBSD.org/pub/FreeBSD/ISO-IMAGES-arch/version ou du miroir le plus proche. Remplacez arch et version par les valeurs appropriées.
Ce répertoire contiendra normalement les images suivantes:
Tableau 2-4. Noms des images ISO FreeBSD 6.X et 7.X et leurs significations
| Nom du fichier | Contenu |
|---|---|
| version-RELEASE-arch-bootonly.iso | Tout ce dont vous avez besoin pour démarrer un noyau FreeBSD et lancer l'interface d'installation. Les fichiers d'installation doivent être récupérés par FTP ou à partir d'une autre source supportée. |
| version-RELEASE-arch-disc1.iso | Tout ce dont vous avez besoin pour installer FreeBSD et incorpore un système de fichiers “live”, qui est utilisé avec la fonction de “Repair” de sysinstall. |
| version-RELEASE-arch-disc2.iso | Autant de logiciels tiers pré-compilés que l'espace sur le disque le permet. |
| version-RELEASE-arch-docs.iso | La documentation FreeBSD. |
Vous devez télécharger soit l'image ISO bootonly (si elle existe), soit l'image du disque numéro un. Ne télécharger pas les deux, étant donné que le disque numéro un contient tout le contenu de l'image ISO bootonly.
Utilisez l'ISO bootonly si votre accès Internet est bon marché. Elle vous laissera installer FreeBSD, et vous pourrez ensuite installer des logiciels tiers en les téléchargeant en employant le système de logiciels pré-compilés/logiciels portés (voir le Chapitre 4) si nécessaire.
Utilisez l'image du disque numéro un si vous voulez installer FreeBSD avec également une bonne sélection de logiciels tiers.
Les images des autres disques sont utiles, mais pas indispensables, tout particulièrement si vous disposez d'un accès Internet à haut débit.
Graver les CDs
Vous devez ensuite graver les images de CD. Si vous faites cela à partir d'un autre système FreeBSD consultez alors la Section 18.6 pour plus d'informations (en particulier les Section 18.6.3 et Section 18.6.4).
Si vous le faites à partir d'une autre plate-forme alors vous devrez utiliser les utilitaires existants pour commander votre graveur de CD sur cette plate-forme. Les images fournies le sont dans le standard ISO qui est supporté par de nombreuses applications de gravure de CD.
Note : Si vous vous intéressez à la réalisation d'une version sur mesure de FreeBSD, veuillez consulter l'article sur la création des versions.
Les disques FreeBSD sont présentés comme le site FTP. Cela rend très facile la création d'un site FTP local qui peut être utilisé par d'autres machines de votre réseau lors de l'installation de FreeBSD.
Sur l'ordinateur FreeBSD qui hébergera le site FTP, soyez sûr que le CDROM est dans la lecteur, et monté en /cdrom.
# mount /cdrom
Créez un compte pour le FTP anonyme dans /etc/passwd. Faites cela en éditant /etc/passwd avec vipw(8) et en ajoutant cette ligne:
ftp:*:99:99::0:0:FTP:/cdrom:/nonexistent
Vérifiez que le service FTP est activé dans /etc/inetd.conf.
N'importe qui avec un accès réseau à votre machine peut désormais choisir un support de type FTP et taper ftp://votre machine après avoir sélectionné ``Other'' dans le menu des sites FTP durant l'installation.
Note : Si la version du support de démarrage (des disquettes en général) pour vos clients FTP n'est pas exactement la même que celle du site FTP local, alors sysinstall ne vous laissera pas achever l'installation. Si les versions ne sont pas identiques mais que vous désirez forcer l'installation, vous devez vous rendre dans le menu Options et changer le nom de la distribution pour any.
Avertissement : Cette approche est correcte pour une machine qui est sur votre réseau local, et qui est protégée par votre coupe-feu. Offrir un accès FTP à d'autres machines sur Internet (et non sur votre réseau local) expose votre ordinateur à l'attention de crackers et autres indésirables. Nous recommandons fortement de suivre de bonnes pratiques de sécurité si vous faites cela.
Si vous devez installer à partir de disquettes (ce que nous suggérons de ne pas faire), soit en raison d'un matériel non supporté, soit que vous aimez vous compliquer la vie, vous devez d'abord préparer des disquettes pour l'installation.
Il vous faudra au minimum autant de disquettes 1.44 Mo que nécessaire pour y mettre tous les fichiers du répertoire base (distribution de base). Si vous préparez ces disquettes sous DOS, alors elles doivent être formatées en utilisant la commande MS-DOS FORMAT. Si vous utilisez Windows, utilisez l'Explorateur pour formater les disquettes (clic-droit sur le lecteur A: , et sélectionnez ``Formater'').
Ne faites pas confiance aux disquettes préformatées en usine. Reformatez-les vous-même, de façon à être sûr. Nos utilisateurs nous ont, dans le passé, signalé de nombreux problèmes dus à des disquettes incorrectement formatées, ce qui explique pourquoi nous insistons autant maintenant.
Si vous créez les disquettes sur une autre machine FreeBSD, ce n'est toujours pas une mauvaise idée de les formatter, bien que vous n'ayez pas besoin de mettre un système de fichiers MS-DOS sur chaque disquette. Vous pouvez utiliser les commandes bsdlabel et newfs pour y mettre un système de fichier UFS à la place, comme le montre la séquence de commandes suivantes (pour une disquette 3.5" de 1.44 Mo):
# fdformat -f 1440 fd0.1440 # bsdlabel -w fd0.1440 floppy3 # newfs -t 2 -u 18 -l 1 -i 65536 /dev/fd0
Vous pouvez alors les monter et y écrire comme sur n'importe quel autre système de fichiers.
Après avoir formatter les disquettes, vous devrez y copier les fichiers. Les fichiers de la distribution sont scindés en morceaux de taille telle que cinq d'entre eux tiendront sur une disquette 1.44 Mo ordinaire. Préparez les disquettes les unes après les autres, en y mettant sur chacune autant de fichiers que vous pouvez, jusqu'à ce que vous ayez recopié toutes les distributions que vous voulez installer. Chaque distribution doit avoir son propre sous-répertoire sur la disquette, e.g.: a:\base\base.aa, a:\base\base.ab, et ainsi de suite.
Important : Le fichier base.inf doit également être présent sur la première disquette de l'ensemble base puisqu'il est lu par le programme d'installation pour déterminer le nombre de fichiers à rechercher lors de la récupération et l'assemblage de la distribution.
Une fois que vous êtes à l'écran de sélection du support d'installation, sélectionnez Floppy (disquette) et vous aurez ensuite des indications sur la marche à suivre.
Pour préparer l'installation depuis une partition MS-DOS, copiez les fichiers de la distribution dans un répertoire appelé freebsd dans le répertoire racine de cette partition. Par exemple, c:\freebsd. L'arborescence des répertoires du CDROM ou du site FTP doit être partiellement reproduite dans ce répertoire, aussi nous suggérons l'utilisation de la commande DOS xcopy si vous copiez à partir d'un CDROM. Par exemple, pour préparer une installation minimale de FreeBSD:
C:\> md c:\freebsd C:\> xcopy e:\bin c:\freebsd\bin\ /s C:\> xcopy e:\manpages c:\freebsd\manpages\ /s
En supposant que C: est l'endroit où vous avez de l'espace libre et que votre CDROM soit monté sur E:.
Si vous n'avez pas de lecteur de CDROM, vous pouvez télécharger la distribution depuis ftp.FreeBSD.org. Chaque distribution est dans son propre répertoire; par exemple la distribution base peut être trouvée dans le répertoire 9.0/base/.
Copiez chaque distribution que vous voulez installer depuis la partition MS-DOS (et pour laquelle vous avez de l'espace libre) dans c:\freebsd -- la distribution BIN n'est que le minimum obligatoire.
Installer à partir de bandes est probablement la méthode la plus simple, mis à part l'installation en ligne avec FTP ou depuis le CDROM. Le programme d'installation s'attend à ce que les fichiers soient simplement archivés sur la bande. Après avoir récupéré tous les fichiers des distributions qui vous intéressent, archivez-les avec tar sur la bande:
# cd /freebsd/distdir # tar cvf /dev/rwt0 dist1 ... dist2
Quand vous installez, vous devez vous assurer qu'il y a assez de place dans un répertoire temporaire (que vous pourrez choisir) pour y mettre le contenu entier de la bande que vous avez créée. En raison de l'accès non-aléatoire des bandes, cette méthode exige un espace de stockage temporaire important.
Note : Au moment d'installer, la bande doit être dans le lecteur avant de démarrer avec la disquette. Sinon les tests risquent de ne pas la trouver.
Il y a trois types d'installation réseau disponibles. Par Ethernet (un contrôleur Ethernet standard), par port série (SLIP ou PPP), ou par port parallèle (PLIP (câble laplink)).
Pour une installation réseau la plus rapide possible, une carte Ethernet est toujours un bon choix! FreeBSD supporte la plupart des cartes Ethernet PC courantes; une liste des cartes supportées (et leur paramétrage requis) est fournie dans la liste de compatibilité matérielle de chaque version de FreeBSD. Si vous utilisez une des cartes Ethernet PCMCIA supportée, assurez-vous qu'elle soit en place avant d'allumer le portable! FreeBSD ne supporte pas, malheureusement, actuellement l'insertion à chaud des cartes PCMCIA pendant l'installation.
Vous devrez aussi connaître votre adresse IP sur le réseau, le masque de réseau pour votre classe d'adresses, et le nom de votre machine. Si vous installez par l'intermédiaire d'une connexion PPP et que vous n'avez pas d'IP fixe, ne prenez pas peur, l'adresse IP peut être dynamiquement assignée par votre fournisseur d'accès. Votre administrateur système peut vous dire quelles valeurs utiliser pour votre configuration réseau particulière. Si vous devez référencer d'autres machines par leur nom plutôt que par leurs adresses IP, vous devrez aussi connaître un serveur de noms et peut-être l'adresse d'une passerelle (si vous utilisez PPP, c'est l'adresse IP de votre fournisseur d'accès) pour accéder à ce serveur. Si vous voulez installer par FTP via un proxy HTTP, vous aurez également besoin de l'adresse du proxy. Si vous n'avez pas les réponses à toutes ou la plupart de ces questions, alors vous devriez vraiment en discuter avec votre administrateur système ou votre fournisseur d'accès avant d'essayer ce type d'installation.
Le support SLIP est assez rudimentaire, et essentiellement limité aux lignes directes, comme un câble série entre un ordinateur portable et un autre ordinateur. La liaison devra être directe car l'installation par SLIP n'offre pas la possibilité de se connecter par téléphone; cette fonctionnalité est fournie par l'utilitaire PPP, qu'il faut utiliser de préférence à SLIP chaque fois que c'est possible.
Si vous utilisez un modem, PPP est presque certainement votre seul choix. Veillez à avoir sous la main les informations concernant votre fournisseur d'accès car vous en aurez besoin assez tôt dans la procédure d'installation.
Si vous utilisez PAP ou CHAP pour vous connecter à votre fournisseur d'accès (en d'autres termes, si vous pouvez vous connecter au fournisseur d'accès sous Windows sans utiliser de script), alors tout ce que vous aurez à faire est de taper dial à l'invite de ppp. Sinon, vous devrez savoir comment se connecter à votre fournisseur d'accès en utilisant les ``commandes AT'' propres à votre modem, car le programme d'appel PPP ne fournit qu'un émulateur de terminal très simplifié. Veuillez vous reporter aux sections concernant ppp utilisateur du Manuel et de la FAQ pour plus d'informations. Si vous avez des problèmes, connectez-vous directement à l'écran avec la commande set log local ....
Si vous disposez d'une liaison directe à une autre machine FreeBSD (2.0-R ou ultérieure), vous pourrez envisager d'installer avec un câble ``laplink'' sur le port parallèle. La vitesse de transmission sur le port parallèle est plus importante que celle que l'on obtient habituellement avec une liaison série (jusqu'à 50 Koctets/sec), ce qui accélère l'installation.
L'installation NFS est assez directe. Copiez simplement les fichiers de la distribution FreeBSD que vous voulez quelque part sur un serveur NFS et ensuite mentionnez-le au moment de sélectionner le support NFS.
Si le serveur n'accepte que les accès sur les ``ports privilégiés'' (ce qui est généralement le cas par défaut sur les stations de travail Sun), vous devrez préciser l'option NFS Secure dans le menus des Options avant de procéder à l'installation.
Si vous avez une carte Ethernet de mauvaise qualité qui souffre de vitesses de transfert très faibles, vous devrez peut-être aussi positionner l'option NFS Slow.
Pour que l'installation NFS fonctionne, le serveur doit pouvoir monter des sous-répertoires, par exemple, si le répertoire pour votre distribution de FreeBSD 9.0 est: ziggy:/usr/archive/stuff/FreeBSD, alors ziggy devra autoriser le montage de /usr/archive/stuff/FreeBSD, et non seulement de /usr ou /usr/archive/stuff.
Dans le fichier /etc/exports de FreeBSD, on
contrôle cela avec l'option -alldirs. D'autres
serveurs NFS peuvent avoir d'autres conventions. Si le serveur vous envoie des
messages “permission denied”, alors il est
probable que vous n'avez pas activé correctement cette
fonctionnalité.
Version française de Marc Fonvieille
<blackend@FreeBSD.org>.
Le chapitre suivant couvrira les commandes et fonctionnalités de base du système d'exploitation FreeBSD. La plupart de ces informations sera valable pour n'importe quel système d'exploitation UNIX. Soyez libre de passer ce chapitre si vous êtes familier avec ces informations. Si vous êtes nouveau à FreeBSD, alors vous voudrez certainement lire attentivement ce chapitre.
Après la lecture de ce chapitre, vous saurez:
Comment utiliser les ``consoles virtuelles'' de FreeBSD.
Comment les permissions des fichiers d'UNIX fonctionnent ainsi que l'utilisation des indicateurs de fichiers sous FreeBSD.
L'architecture par défaut du système de fichiers sous FreeBSD.
L'organisation des disques sous FreeBSD.
Comment monter et démonter des systèmes de fichier.
Ce que sont les processus, daemons et signaux.
Ce qu'est un interpréteur de commande, et comment changer votre environnement de session par défaut.
Comment utiliser les éditeurs de texte de base.
Ce que sont les périphériques et les fichiers spéciaux de périphérique.
Quel est le format des binaires utilisé sous FreeBSD.
Comment lire les pages de manuel pour plus d'information.
FreeBSD peut être utilisé de diverses façons. L'une d'elles est en tapant des commandes sur un terminal texte. Une bonne partie de la flexibilité et de la puissance d'un système d'exploitation UNIX est directement disponible sous vos mains en utilisant FreeBSD de cette manière. Cette section décrit ce que sont les ``terminaux'' et les ``consoles'', et comment les utiliser sous FreeBSD.
Si vous n'avez pas configuré FreeBSD pour lancer automatiquement un environnement graphique au démarrage, le système vous présentera une invite d'ouverture de session après son démarrage, juste après la fin des procédures de démarrage. Vous verrez quelque chose de similaire à:
Additional ABI support:. Local package initialization:. Additional TCP options:. Fri Sep 20 13:01:06 EEST 2002 FreeBSD/i386 (pc3.example.org) (ttyv0) login:
Les messages pourront être différents sur votre système, mais cela devrait y ressembler. Les deux dernières lignes sont celles qui nous intéressent actuellement. La seconde de ces lignes nous donne:
FreeBSD/i386 (pc3.example.org) (ttyv0)
Cette ligne contient quelques éléments d'information sur le système que vous venez de démarrer. Vous êtes en train de lire une console ``FreeBSD'', tournant sur un processeur Intel ou compatible de la famille x86[1]. Le nom de cette machine (chaque machine UNIX a un nom) est pc3.example.org, et vous regardez actuellement sa console système--le terminal ttyv0.
Et enfin, la dernière ligne est toujours:
login:
C'est le moment où vous êtes supposé taper votre ``nom d'utilisateur'' pour vous attacher au système FreeBSD. La section suivante décrit comment procéder.
FreeBSD est un système multi-utilisateur, multi-processeur. C'est la description formelle qui est habituellement donnée pour un système qui peut être utilisé par différentes personnes, qui exécutent simultanément de nombreux programmes sur une machine individuelle.
Chaque système multi-utilisateur a besoin d'un moyen pour distinguer un ``utilisateur'' du reste. Sous FreeBSD (et sous tous les systèmes de type UNIX), cela est effectué en demandant à chaque utilisateur de ``s'attacher'' au système avant d'être en mesure d'exécuter des programmes. Chaque utilisateur possède un nom unique (le nom d'utilisateur) et une clé secrète personnelle (le mot de passe). FreeBSD demandera ces deux éléments avant d'autoriser un utilisateur à lancer un programme.
Juste après que FreeBSD ait démarré et en ait terminé avec l'exécution des procédures de démarrage[2], il présentera une invite et demandera un nom d'utilisateur valide:
login:
Pour cet exemple, supposons que votre nom d'utilisateur est john. Tapez john à cette invite puis appuyez sur Entrée. Alors vous devrez être invité à entrer un ``mot de passe'':
login: john Password:
Tapez maintenant le mot de passe de john, et appuyez sur Entrée. Le mot de passe n'est pas affiché! Vous n'avez pas à vous préoccuper de cela maintenant. Il suffit de penser que cela est fait pour des raisons de sécurité.
Si vous avez tapé correctement votre mot de passe, vous devriez être maintenant attaché au système et prêt à essayer toutes les commandes disponibles.
Vous devriez voir apparaître le MOTD ou message du jour suivi de l'invite de commande (un caractère #, $, ou %). Cela indique que vous avez ouvert avec succès une session sous FreeBSD.
Exécuter des commandes UNIX dans une console est bien beau, mais FreeBSD peut exécuter plusieurs programmes à la fois. Avoir une seule console sur laquelle les commandes peuvent être tapées serait un peu du gaspillage quand un système d'exploitation comme FreeBSD peut exécuter des dizaines de programmes en même temps. C'est ici que des ``consoles virtuelles'' peuvent être vraiment utiles.
FreeBSD peut être configuré pour présenter de nombreuses consoles virtuelles. Vous pouvez basculer d'une console virtuelle à une autre en utilisant une combinaison de touches sur votre clavier. Chaque console a son propre canal de sortie, et FreeBSD prend soin de rediriger correctement les entrées au clavier et la sortie vers écran quand vous basculez d'une console virtuelle à la suivante.
Des combinaisons de touches spécifiques ont été réservées par FreeBSD pour le basculement entre consoles[3]. Vous pouvez utiliser Alt-F1, Alt-F2, jusqu'à Alt-F8 pour basculer vers une console virtuelle différente sous FreeBSD.
Quand vous basculez d'une console à une autre, FreeBSD prend soin de sauvegarder et restaurer la sortie d'écran. Il en résulte l'``illusion'' d'avoir plusieurs écrans et claviers ``virtuels'' que vous pouvez utiliser pour taper des commandes pour FreeBSD. Les programmes que vous lancez sur une console virtuelle ne cessent pas de tourner quand cette console n'est plus visible. Ils continuent de s'exécuter quand vous avez basculé vers une console virtuelle différente.
La configuration par défaut de FreeBSD démarre avec huit consoles virtuelles. Cependant ce n'est pas un paramétrage fixe, et vous pouvez aisément personnaliser votre installation pour démarrer avec plus ou moins de consoles virtuelles. Le nombre et les paramétrages des consoles virtuelles sont configurés dans le fichier /etc/ttys.
Vous pouvez utiliser le fichier /etc/ttys pour configurer les consoles virtuelles de FreeBSD. Chaque ligne non-commentée dans ce fichier (les lignes qui ne débutent pas par le caractère #) contient le paramétrage d'un terminal ou d'une console virtuelle. La version par défaut de ce fichier livrée avec FreeBSD configure neuf consoles virtuelles, et en active huit. Ce sont les lignes commençant avec le terme ttyv:
# name getty type status comments # ttyv0 "/usr/libexec/getty Pc" cons25 on secure # Virtual terminals ttyv1 "/usr/libexec/getty Pc" cons25 on secure ttyv2 "/usr/libexec/getty Pc" cons25 on secure ttyv3 "/usr/libexec/getty Pc" cons25 on secure ttyv4 "/usr/libexec/getty Pc" cons25 on secure ttyv5 "/usr/libexec/getty Pc" cons25 on secure ttyv6 "/usr/libexec/getty Pc" cons25 on secure ttyv7 "/usr/libexec/getty Pc" cons25 on secure ttyv8 "/usr/X11R6/bin/xdm -nodaemon" xterm off secure
Pour une description détaillée de chaque colonne de ce fichier et toutes les options que vous pouvez utiliser pour configurer les consoles virtuelles, consultez la page de manuel ttys(5).
Une description détaillée de ce qu'est “le mode mono-utilisateur” peut être trouvée dans Section 12.6.2. Il est important de noter qu'il n'y a qu'une console de disponible quand vous exécutez FreeBSD en mode mono-utilisateur. Il n'y a aucune console virtuelle de disponible. Le paramétrage de la console en mode mono-utilisateur peut être également trouvé dans le fichier /etc/ttys. Recherchez la ligne qui commence avec le mot console:
# name getty type status comments # # If console is marked "insecure", then init will ask for the root password # when going to single-user mode. console none unknown off secure
Note : Comme l'indiquent les commentaires au-dessus de la ligne console, vous pouvez éditer cette ligne et changer secure pour insecure. Si vous faites cela, quand FreeBSD démarrera en mode mono-utilisateur, il demandera le mot de passe de root.
Cependant faites attention quand vous modifiez cela pour insecure. Si vous oubliez le mot de passe de root, le démarrage en mode mono-utilisateur sera condamné. Il est encore possible, mais cela pourra être relativement compliqué pour quelqu'un qui n'est pas à l'aise avec le processus de démarrage de FreeBSD et les programmes entrant en jeu.
La résolution (ou encore le mode vidéo) de la console FreeBSD peut être réglée à 1024x768, 1280x1024, ou tout autre résolution supportée par le circuit graphique et le moniteur. Pour utiliser une résolution vidéo différente vous devez en premier lieu recompiler votre noyau en ajoutant deux options supplémentaires:
options VESA options SC_PIXEL_MODE
Une fois votre noyau recompilé avec ces deux options, vous pouvez déterminer quels sont les modes vidéo supportés par votre matériel en utilisant l'outil vidcontrol(1). Pour obtenir une liste des modes supportés, tapez la ligne suivante:
# vidcontrol -i mode
La sortie de cette commande est une liste des modes vidéo que supporte votre matériel. Vous pouvez ensuite décider d'utiliser un nouveau mode en le passant à la commande vidcontrol(1) tout en ayant les droits de root:
# vidcontrol MODE_279
Si le nouveau mode vidéo est satisfaisant, il peut être activé au démarrage de manière permanente en le configurant dans le fichier /etc/rc.conf:
allscreens_flags="MODE_279"
FreeBSD, étant un descendant direct de l'UNIX BSD, est basé sur plusieurs concepts clés d'UNIX. Le premier, et le plus prononcé, est le fait que FreeBSD est un système d'exploitation multi-utilisateurs. Le système peut gérer plusieurs utilisateurs travaillant tous simultanément sur des tâches complètement indépendantes. Le système est responsable du partage correct et de la gestion des requêtes pour les périphériques matériels, la mémoire, et le temps CPU de façon équitable entre chaque utilisateur.
Puisque le système est capable de supporter des utilisateurs multiples, tout ce que le système gère possède un ensemble de permissions définissant qui peut écrire, lire, et exécuter la ressource. Ces permissions sont stockées sous forme de trois octets divisés en trois parties, une pour le propriétaire du fichier, une pour le groupe auquel appartient le fichier, et une autre pour le reste du monde. Cette représentation numérique fonctionne comme ceci:
| Valeur | Permission | Contenu du répertoire |
|---|---|---|
| 0 | Pas d'accès en lecture, pas d'accès en écriture, pas d'accès en exécution | --- |
| 1 | Pas d'accès en lecture, pas d'accès en écriture, exécution | --x |
| 2 | Pas d'accès en lecture, écriture, pas d'accès en exécution | -w- |
| 3 | Pas d'accès en lecture, écriture, exécution | -wx |
| 4 | Lecture, pas d'accès en écriture, pas d'accès en exécution | r-- |
| 5 | Lecture, pas d'accès en écriture, exécution | r-x |
| 6 | Lecture, écriture, pas d'accès en exécution | rw- |
| 7 | Lecture, écriture, exécution | rwx |
Vous pouvez utiliser l'option -l avec la commande ls(1) pour afficher le
contenu du répertoire sous forme une longue et détaillée qui inclut
une colonne avec des informations sur les permissions d'accès des fichiers pour le
propriétaire, le groupe, et le reste du monde. Par exemple un ls -l dans un répertoire quelconque devrait donner:
% ls -l total 530 -rw-r--r-- 1 root wheel 512 Sep 5 12:31 myfile -rw-r--r-- 1 root wheel 512 Sep 5 12:31 otherfile -rw-r--r-- 1 root wheel 7680 Sep 5 12:31 email.txt ...
Voici comment est divisée la première colonne de l'affichage généré par ls -l:
-rw-r--r--
Le premier caractère (le plus à gauche) indique si c'est un fichier normal, un répertoire, ou un périphérique mode caractère, une socket, ou tout autre pseudo-périphérique. Dans ce cas, - indique un fichier normal. Les trois caractères suivants, rw- dans cet exemple, donnent les permissions pour le propriétaire du fichier. Les trois caractères qui suivent, r--, donnent les permissions pour le groupe auquel appartient le fichier. Les trois derniers caractères, r--, donnent les permissions pour le reste du monde. Un tiret signifie que la permission est désactivée. Dans le cas de ce fichier, les permissions sont telles que le propriétaire peut lire et écrire le fichier, le groupe peut lire le fichier, et le reste du monde peut seulement lire le fichier. D'après la table ci-dessus, les permissions pour ce fichier seraient 644, où chaque chiffre représente les trois parties des permissions du fichier.
Tout cela est bien beau, mais comment le système contrôle les permissions sur les périphériques? En fait FreeBSD traite la plupart des périphériques sous la forme d'un fichier que les programmes peuvent ouvrir, lire, et écrire des données dessus comme tout autre fichier. Ces périphériques spéciaux sont stockés dans le répertoire /dev.
Les répertoires sont aussi traités comme des fichiers. Ils ont des droits en lecture, écriture et exécution. Le bit d'exécution pour un répertoire a une signification légèrement différente que pour les fichiers. Quand un répertoire est marqué exécutable, cela signifie qu'il peut être traversé, i.e. il est possible d'utiliser ``cd'' (changement de répertoire). Ceci signifie également qu'à l'intérieur du répertoire il est possible d'accéder aux fichiers dont les noms sont connus (en fonction, bien sûr, des permissions sur les fichiers eux-mêmes).
En particulier, afin d'obtenir la liste du contenu d'un répertoire, la permission de lecture doit être positionnée sur le répertoire, tandis que pour effacer un fichier dont on connaît le nom, il est nécessaire d'avoir les droits d'écriture et d'exécution sur le répertoire contenant le fichier.
Il y a d'autres types de permissions, mais elles sont principalement employées dans des circonstances spéciales comme les binaires ``setuid'' et les répertoires ``sticky''. Si vous désirez plus d'information sur les permissions de fichier et comment les positionner, soyez sûr de consulter la page de manuel chmod(1).
Les permissions symboliques, parfois désignées sous le nom d'expressions symboliques, utilisent des caractères à la place de valeur en octal pour assigner les permissions aux fichiers et répertoires. Les expressions symboliques emploient la syntaxe: (qui) (action) (permissions), avec les valeurs possibles suivantes:
| Option | Lettre | Représente |
|---|---|---|
| (qui) | u | Utilisateur |
| (qui) | g | Groupe |
| (qui) | o | Autre |
| (qui) | a | Tous (“le monde entier”) |
| (action) | + | Ajouter des permissions |
| (action) | - | Retirer des permissions |
| (action) | = | Fixe les permissions de façon explicite |
| (permissions) | r | Lecture |
| (permissions) | w | Ecriture |
| (permissions) | x | Exécution |
| (permissions) | t | bit collant (sticky) |
| (permissions) | s | Exécuter avec l'ID utilisateur (UID) ou groupe (GID) |
Ces valeurs sont utilisées avec la commande chmod(1) comme précédemment mais avec des lettres. Par exemple, vous pourriez utiliser la commande suivante pour refuser l'accès au fichier FICHIER à d'autres utilisateurs:
% chmod go= FICHIER
Une liste séparé par des virgules peut être fournie quand plus d'un changement doit être effectué sur un fichier. Par exemple la commande suivante retirera les permissions d'écriture au groupe et au ``reste du monde'' sur le fichier FICHIER, puis ajoutera la permission d'exécution pour tout le monde:
% chmod go-w,a+x FICHIER
En addition des permissions sur les fichiers précédemment présentées, FreeBSD supporte l'utilisation d'“indicateurs de fichiers”. Ces indicateurs rajoutent un niveau de contrôle et de sécurité sur les fichiers, mais ne concernent pas les répertoires.
Ces indicateurs ajoutent donc un niveau de contrôle supplémentaire des fichiers, permettant d'assurer que dans certains cas même le super-utilisateur root ne pourra effacer ou modifier des fichiers.
Les indicateurs de fichiers peuvent être modifiés avec l'utilitaire chflags(1), ce dernier présentant une interface simple. Par exemple, pour activer l'indicateur système de suppression impossible sur le fichier file1, tapez la commande suivante:
# chflags sunlink file1
Et pour désactiver l'indicateur de suppression impossible, utilisez la
commande précédente avec le préfixe “no” devant
l'option sunlink:
# chflags nosunlink file1
Pour afficher les indicateurs propres à ce fichier, utilisez la commande
ls(1) avec l'option
-lo:
# ls -lo file1
La sortie de la commande devrait ressembler à:
-rw-r--r-- 1 trhodes trhodes sunlnk 0 Mar 1 05:54 file1
Plusieurs indicateurs ne peuvent être positionnés ou retirés que par le super-utilisateur root. Dans les autres cas, le propriétaire du fichier peut activer ces indicateurs. Pour plus d'information, la lecture des pages de manuel chflags(1) et chflags(2) est recommandée à tout administrateur.
L'organisation de l'arborescence des répertoires de FreeBSD est essentielle pour obtenir une compréhension globale du système. Le concept le plus important à saisir est celui du répertoire racine, ``/''. Ce répertoire est le premier a être monté au démarrage et il contient le système de base nécessaire pour préparer le système d'exploitation au fonctionnement multi-utilisateurs. Le répertoire racine contient également les points de montage pour les autres systèmes de fichiers qui sont montés lors du passage en mode multi-utilisateurs.
Un point de montage est un répertoire où peuvent être
greffés des systèmes de fichiers supplémentaires au système
de fichiers parent (en général le système de fichiers racine). Cela
est décrit plus en détails dans la Section
3.5. Les points de montage standards incluent /usr, /var, /tmp, /mnt, et /cdrom. Ces répertoires
sont en général référencés par des entrées dans
le fichier /etc/fstab. /etc/fstab est
une table des divers systèmes de fichiers et de leur point de montage
utilisé comme référence par le système. La plupart des
systèmes de fichiers présents dans /etc/fstab
sont montés automatiquement au moment du démarrage par la procédure
rc(8) à moins
que l'option noauto soit présente. Plus de
détails peuvent être trouvés dans la Section
3.6.1.
Une description complète de l'arborescence du système de fichiers est disponible dans la page de manuel hier(7). Pour l'instant, une brève vue d'ensemble des répertoires les plus courants suffira.
| Répertoire | Description |
|---|---|
| / | Répertoire racine du système de fichiers. |
| /bin/ | Programmes utilisateur fondamentaux aux deux modes de fonctionnement mono et multi-utilisateurs. |
| /boot/ | Programmes et fichiers de configuration utilisés durant le processus de démarrage du système. |
| /boot/defaults/ | Fichiers de configuration par défaut du processus de démarrage; voir la page de manuel loader.conf(5). |
| /dev/ | Fichiers spéciaux de périphérique; voir la page de manuel intro(4). |
| /etc/ | Procédures et fichiers de configuration du système. |
| /etc/defaults/ | Fichiers de configuration du système par défaut; voir la page de manuel rc(8). |
| /etc/mail/ | Fichiers de configuration pour les agents de transport du courrier électronique comme sendmail(8). |
| /etc/namedb/ | Fichiers de configuration de named; voir la page de manuel named(8). |
| /etc/periodic/ | Procédures qui sont exécutées de façon quotidienne, hebdomadaire et mensuelle par l'intermédiaire de cron(8); voir la page de manuel periodic(8). |
| /etc/ppp/ | Fichiers de configuration de ppp; voir la page de manuel ppp(8). |
| /mnt/ | Répertoire vide habituellement utilisé par les administrateurs système comme un point de montage temporaire. |
| /proc/ | Le système de fichiers pour les processus; voir les pages de manuel procfs(5), mount_procfs(8). |
| /rescue/ | Programmes liés en statique pour les réparations d'urgence; consultez la page de manuel rescue(8). |
| /root/ | Répertoire personnel du compte root. |
| /sbin/ | Programmes systèmes et utilitaires systèmes fondamentaux aux environnements mono et multi-utilisateurs. |
| /tmp/ | Fichiers temporaires. Le contenu de /tmp n'est en général PAS préservé par un redémarrage du système. Un système de fichiers en mémoire est souvent monté sur /tmp. Cela peut être automatisé en utilisant les variables rc.conf(5) relatives au système “tmpmfs” (ou à l'aide d'une entrée dans le fichier /etc/fstab; consultez la page de manuel mdmfs(8)). |
| /usr/ | La majorité des utilitaires et applications utilisateur. |
| /usr/bin/ | Utilitaires généraux, outils de programmation, et applications. |
| /usr/include/ | Fichiers d'en-tête C standard. |
| /usr/lib/ | Ensemble des bibliothèques. |
| /usr/libdata/ | Divers fichiers de données de service. |
| /usr/libexec/ | Utilitaires et daemons système (exécutés par d'autres programmes). |
| /usr/local/ | Exécutables, bibliothèques, etc... Egalement utilisé comme destination de défaut pour les logiciels portés pour FreeBSD. Dans /usr/local, l'organisation générale décrite par la page de manuel hier(7) pour /usr devrait être utilisée. Exceptions faites du répertoire man qui est directement sous /usr/local plutôt que sous /usr/local/share, et la documentation des logiciels portés est dans share/doc/port. |
| /usr/obj/ | Arborescence cible spécifique à une architecture produite par la compilation de l'arborescence /usr/src. |
| /usr/ports | Le catalogue des logiciels portés (optionnel). |
| /usr/sbin/ | Utilitaires et daemons système (exécutés par les utilisateurs). |
| /usr/share/ | Fichiers indépendants de l'architecture. |
| /usr/src/ | Fichiers source FreeBSD et/ou locaux. |
| /usr/X11R6/ | Exécutables, bibliothèques etc... de la distribution d'X11R6 (optionnel). |
| /var/ | Fichiers de traces, fichiers temporaires, et fichiers tampons. Un système de fichiers en mémoire est parfois monté sur /var. Cela peut être automatisé en utilisant les variables rc.conf(5) relatives au système “varmfs” (ou à l'aide d'une entrée dans le fichier /etc/fstab; consultez la page de manuel mdmfs(8)). |
| /var/log/ | Divers fichiers de trace du système. |
| /var/mail/ | Boîtes aux lettres des utilisateurs. |
| /var/spool/ | Divers répertoires tampons des systèmes de courrier électronique et d'impression. |
| /var/tmp/ | Fichiers temporaires. Ces fichiers sont généralement conservés lors d'un redémarrage du système, à moins que /var ne soit un système de fichiers en mémoire. |
| /var/yp | Tables NIS. |
Le plus petit élément qu'utilise FreeBSD pour retrouver des fichiers est le nom de fichier. Les noms de fichiers sont sensibles à la casse des caractères, ce qui signifie que readme.txt et README.TXT sont deux fichiers séparés. FreeBSD n'utilise pas l'extension (.txt) d'un fichier pour déterminer si ce fichier est un programme, un document ou une autre forme de donnée.
Les fichiers sont stockés dans des répertoires. Un répertoire peut ne contenir aucun fichier, ou en contenir plusieurs centaines. Un répertoire peut également contenir d'autre répertoires, vous permettant de construire une hiérarchie de répertoires à l'intérieur d'un autre. Cela rend plus simple l'organisation de vos données.
Les fichiers et les répertoires sont référencés en donnant le nom du fichier ou du répertoire, suivi par un slash, /, suivi par tout nom de répertoire nécessaire. Si vous avez un répertoire foo, qui contient le répertoire bar, qui contient le fichier readme.txt, alors le nom complet, ou chemin (``path'') vers le fichier est foo/bar/readme.txt.
Les répertoires et les fichiers sont stockés sur un système de fichiers. Chaque système de fichiers contient à son niveau le plus haut un répertoire appelé répertoire racine pour ce système de fichiers. Ce répertoire racine peut alors contenir les autres répertoires.
Jusqu'ici cela est probablement semblable à n'importe quel autre système d'exploitation que vous avez pu avoir utilisé. Il y a quelques différences: par exemple, MS-DOS utilise \ pour séparer les noms de fichier et de répertoire, alors que MacOS utilise :.
FreeBSD n'utilise pas de lettre pour les lecteurs, ou d'autres noms de disque dans le chemin. Vous n'écrirez pas c:/foo/bar/readme.txt sous FreeBSD.
Au lieu de cela, un système de fichiers est désigné comme système de fichiers racine. La racine du système de fichiers racine est représentée par un /. Tous les autres systèmes de fichiers sont alors montés sous le système de fichiers racine. Peu importe le nombre de disques que vous avez sur votre système FreeBSD, chaque répertoire apparaît comme faisant partie du même disque.
Supposez que vous avez trois systèmes de fichiers, appelés A, B, et C. Chaque système de fichiers possède un répertoire racine, qui contient deux autres répertoires, nommés A1, A2 (et respectivement B1, B2 et C1, C2).
Appelons A le système de fichiers racine. Si vous utilisiez la commande ls pour visualiser le contenu de ce répertoire, vous verriez deux sous-répertoires, A1 et A2. L'arborescence des répertoires ressemblera à ceci:

Un système de fichiers doit être monté dans un répertoire d'un autre système de fichiers. Supposez maintenant que vous montez le système de fichiers B sur le répertoire A1. Le répertoire racine de B remplace A1, et les répertoires de B par conséquent apparaissent:

Tout fichier de B1 ou B2 peut être atteint avec le chemin /A1/B1 ou /A1/B2 si nécessaire. Tous les fichiers qui étaient dans A1 ont été temporairement cachés. Ils réapparaîtront si B est démonté de A.
Si B a été monté sur A2 alors le diagramme sera semblable à celui-ci:

et les chemins seront /A2/B1 et respectivement /A2/B2.
Les systèmes de fichiers peuvent être montés au sommet d'un autre. En continuant l'exemple précédent, le système de fichiers C pourrait être monté au sommet du répertoire B1 dans le système de fichiers B, menant à cet arrangement:

Où C pourrait être monté directement sur le système de fichiers A, sous le répertoire A1:

Si vous êtes familier de MS-DOS, ceci est semblable, bien que pas identique, à la commande join.
Ce n'est normalement pas quelque chose qui doit vous préoccuper. Généralement vous créez des systèmes de fichiers à l'installation de FreeBSD et décidez où les monter, et ensuite ne les modifiez jamais à moins que vous ajoutiez un nouveau disque.
Il est tout à fait possible de n'avoir qu'un seul grand système de fichiers racine, et de ne pas en créer d'autres. Il y a quelques inconvénients à cette approche, et un avantage.
Avantages des systèmes de fichiers multiples
Les différents systèmes de fichiers peuvent avoir différentes options de montage. Par exemple, avec une planification soigneuse, le système de fichiers racine peut être monté en lecture seule, rendant impossible tout effacement par inadvertance ou édition de fichier critique. La séparation des systèmes de fichiers inscriptibles par l'utilisateur permet leur montage en mode nosuid; cette option empêche les bits suid/guid des exécutables stockés sur ce système de fichiers de prendre effet, améliorant peut-être la sécurité.
FreeBSD optimise automatiquement la disposition des fichiers sur un système de fichiers, selon la façon dont est utilisé le système de fichiers. Aussi un système de fichiers contenant beaucoup de petits fichiers qui sont écrits fréquemment aura une optimisation différente à celle d'un système contenant moins, ou de plus gros fichiers. En ayant un seul grand système de fichiers cette optimisation est perdue.
Les systèmes de fichiers de FreeBSD sont très robustes même en cas de coupure secteur. Cependant une coupure secteur à un moment critique pourrait toujours endommager la structure d'un système de fichiers. En répartissant vos données sur des systèmes de fichiers multiples il est plus probable que le système redémarre, vous facilitant la restauration des données à partir de sauvegardes si nécessaire.
Avantage d'un système de fichiers unique
Les systèmes de fichiers ont une taille fixe. Si vous créez un système de fichiers à l'installation de FreeBSD et que vous lui donnez une taille spécifique, vous pouvez plus tard vous apercevoir que vous avez besoin d'une partition plus grande. Cela n'est pas facilement faisable sans sauvegardes, recréation du système de fichiers, et enfin restauration des données.
Important : FreeBSD dispose d'une commande, growfs(8), qui permettra d'augmenter la taille d'un système de fichiers au vol, supprimant cette limitation.
Les systèmes de fichiers sont contenus dans des partitions. Cela n'a pas la même signification que l'utilisation commune du terme partition (par exemple une partition MS-DOS), en raison de l'héritage Unix de FreeBSD. Chaque partition est identifiée par une lettre de a à h. Chaque partition ne contient qu'un seul système de fichiers, cela signifie que les systèmes de fichiers sont souvent décrits soit par leur point de montage typique dans la hiérarchie du système de fichiers, soit par la lettre de la partition qui les contient.
FreeBSD utilise aussi de l'espace disque pour l'espace de pagination (``swap''). L'espace de pagination fournit à FreeBSD la mémoire virtuelle. Cela permet à votre ordinateur de se comporter comme s'il disposait de beaucoup plus de mémoire qu'il n'en a réellement. Quand FreeBSD vient à manquer de mémoire il déplace certaines données qui ne sont pas actuellement utilisées vers l'espace de pagination, et les rapatrie (en déplaçant quelque chose d'autre) quand il en a besoin.
Quelques partitions sont liées à certaines conventions.
| Partition | Convention |
|---|---|
| a | Contient normalement le système de fichiers racine |
| b | Contient normalement l'espace de pagination |
| c | Normalement de la même taille que la tranche (``slice'') contenant les partitions. Cela permet aux utilitaires devant agir sur l'intégralité de la tranche (par exemple un analyseur de blocs défectueux) de travailler sur la partition c. Vous ne devriez normalement pas créer de système de fichiers sur cette partition. |
| d | La partition d a eu dans le passé une signification particulière, ce n'est plus le cas aujourd'hui, et d pourra être utilisée comme une partition classique. |
Chaque partition contenant un système de fichiers est stockée dans ce que FreeBSD appelle une tranche (``slice''). Tranche - ``slice'' est le terme FreeBSD pour ce qui est communément appelé partition, et encore une fois, cela en raison des fondations Unix de FreeBSD. Les tranches sont numérotées, en partant de 1, jusqu'à 4.
Les numéros de tranche suivent le nom du périphérique, avec le préfixe s, et commencent à 1. Donc ``da0s1'' est la première tranche sur le premier disque SCSI. Il ne peut y avoir que quatre tranches physiques sur un disque, mais vous pouvez avoir des tranches logiques dans des tranches physiques d'un type précis. Ces tranches étendues sont numérotées à partir de 5, donc ``ad0s5'' est la première tranche étendue sur le premier disque IDE. Elles sont utilisées par des systèmes de fichiers qui s'attendent à occuper une tranche entière.
Les tranches, les disques ``en mode dédié'', et les autres disques contiennent des partitions, qui sont représentées par des lettres allant de a à h. Cette lettre est ajoutée au nom de périphérique, aussi ``da0a'' est la partition a sur le premier disque da, qui est en ``en mode dédié''. ``ad1s3e'' est la cinquième partition de la troisième tranche du second disque IDE.
En conclusion chaque disque présent sur le système est identifié. Le nom d'un disque commence par un code qui indique le type de disque, suivi d'un nombre, indiquant de quel disque il s'agit. Contrairement aux tranches, la numérotation des disques commence à 0. Les codes communs que vous risquez de rencontrer sont énumérés dans le Tableau 3-1.
Quand vous faites référence à une partition, FreeBSD exige que vous nommiez également la tranche et le disque contenant la partition, et quand vous faites référence à une tranche vous devrez également faire référence au nom du disque. On fait donc référence à une partition en écrivant le nom du disque, s, le numéro de la tranche, et enfin la lettre de la partition. Des exemples sont donnés dans l'Exemple 3-1.
L'Exemple 3-2 montre un exemple de l'organisation d'un disque qui devrait aider à clarifier les choses.
Afin d'installer FreeBSD vous devez tout d'abord configurer les tranches sur votre disque, ensuite créer les partitions dans la tranche que vous utiliserez pour FreeBSD, et alors créer un système de fichiers (ou espace de pagination) dans chaque partition, et décider de l'endroit où seront montés les systèmes de fichiers.
Tableau 3-1. Codes des périphériques disques
| Code | Signification |
|---|---|
| ad | Disque ATAPI (IDE) |
| da | Disque SCSI |
| acd | CDROM ATAPI (IDE) |
| cd | CDROM SCSI |
| fd | Lecteur de disquette |
Exemple 3-2. Modèle conceptuel d'un disque
Ce diagramme montre comment FreeBSD voit le premier disque IDE attaché au système. Supposons que le disque a une capacité de 4 Go, et contient deux tranches de 2 Go (partitions MS-DOS). La première tranche contient un disque MS-DOS, C:, et la seconde tranche contient une installation de FreeBSD. Dans cet exemple l'installation de FreeBSD a trois partitions de données, et une partition de pagination.
Les trois partitions accueilleront chacune un système de fichiers. La partition a sera utilisée en tant que système de fichiers racine, la partition e pour le contenu du répertoire /var, et f pour l'arborescence du répertoire /usr.

Le système de fichiers peut être vu comme un arbre enraciné sur le répertoire /. /dev, /usr, et les autres répertoires dans le répertoire racine sont des branches, qui peuvent avoir leurs propres branches, comme /usr/local, et ainsi de suite.
Il y a diverses raisons pour héberger certains de ces répertoires sur des systèmes de fichiers séparés. /var contient les répertoires log/, spool/, et divers types de fichiers temporaires, et en tant que tels, peuvent voir leur taille augmenter de façon importante. Remplir le système de fichiers racine n'est pas une bonne idée, aussi séparer /var de / est souvent favorable.
Une autre raison courante de placer certains répertoires sur d'autres systèmes de fichiers est s'ils doivent être hébergés sur des disques physiques séparés, ou sur des disques virtuels séparés, comme les systèmes de fichiers réseau, ou les lecteurs de CDROM.
Durant le processus de démarrage, les systèmes
de fichiers listés dans /etc/fstab sont
automatiquement montés (à moins qu'il ne soient listés avec
l'option noauto).
Le fichier /etc/fstab contient une liste de lignes au format suivant:
device /mount-point fstype options dumpfreq passno
Un nom de périphérique (qui devrait exister), comme expliqué dans la Section 18.2.
Un répertoire (qui devrait exister), sur lequel sera monté le système de fichier.
Le type de système de fichiers à indiquer à mount(8). Le système de fichiers par défaut de FreeBSD est l'ufs.
Soit rw pour des systèmes de fichiers
à lecture-écriture, soit ro pour des
systèmes de fichiers à lecture seule, suivi par toute option
qui peut s'avérer nécessaire. Une option courante est noauto pour les systèmes de fichiers qui ne sont
normalement pas montés durant la séquence de démarrage.
D'autres options sont présentées dans la page de manuel mount(8).
C'est utilisé par dump(8) pour déterminer quels systèmes de fichiers nécessitent une sauvegarde. Si ce champ est absent, une valeur de zéro est supposée.
Ceci détermine l'ordre dans lequel les systèmes de fichiers devront être vérifiés. Les systèmes de fichiers qui doivent être ignorés devraient avoir leur passno positionné à zéro. Le système de fichiers racine (qui doit être vérifié avant tout le reste) devrait avoir son passno positionné à un, et les options passno des autres systèmes fichiers devraient être positionnées à des valeurs supérieures à un. Si plus d'un système de fichiers ont le même passno alors fsck(8) essaiera de vérifier les systèmes de fichiers en parallèle si c'est possible.
Consultez la page de manuel de fstab(5) pour plus d'information sur le format du fichier /etc/fstab et des options qu'il contient.
La commande mount(8) est ce qui est finalement utilisé pour monter des systèmes de fichiers.
Dans sa forme la plus simple, vous utilisez:
Il y beaucoup d'options, comme mentionné dans la page de manuel mount(8), mais les plus courantes sont:
Options de montage
-aMonte tous les systèmes de fichiers listés dans /etc/fstab. Exception faite de ceux marqués comme
``noauto'', ou exclus par le drapeau -t, ou encore ceux
qui sont déjà montés.
-dTout effectuer à l'exception de l'appel système de montage
réel. Cette option est utile conjointement avec le drapeau -v pour déterminer ce que mount(8) est en train
d'essayer de faire.
-fForce le montage d'un système de fichiers non propre (dangereux), ou force la révocation de l'accès en écriture quand on modifie l'état de montage d'un système de fichiers de l'accès lecture-écriture à l'accès lecture seule.
-rMonte le système de fichiers en lecture seule. C'est identique à
l'utilisation de l'argument ro (rdonly pour les versions de FreeBSD antérieures
à la 5.2) avec l'option -o.
-t fstypeMonte le système de fichiers comme étant du type de système
donné, ou monte seulement les systèmes de fichiers du type
donné, si l'option -a est
précisée.
``ufs'' est le type de système de fichiers par défaut.
-uMets à jour les options de montage sur le système de fichiers.
-vRends la commande prolixe.
-wMonte le système de fichiers en lecture-écriture.
L'option -o accepte une liste d'options
séparées par des virgules, dont les suivantes:
Ne pas autoriser l'exécution de binaires sur ce système de fichiers. C'est également une option de sécurité utile.
Ne pas prendre en compte les indicateurs setuid ou setgid sur le système de fichiers. C'est également une option de sécurité utile.
La commande umount(8) prend, comme
paramètre, un des points de montage, un nom de périphérique, ou
l'option -a ou -A.
Toutes les formes acceptent -f pour forcer de
démontage, et -v pour le mode prolixe. Soyez
averti que l'utilisation de -f n'est
généralement pas une bonne idée. Démonter de force des
systèmes de fichiers pourrait faire planter l'ordinateur ou endommager les
données sur le système de fichiers.
Les options -a et -A sont
utilisées pour démonter tous les systèmes de fichiers
actuellement montés, éventuellement modifié par les types de
systèmes de fichiers listés après l'option -t. Cependant l'option -A,
n'essaye pas de démonter le système de fichiers racine.
FreeBSD est un système d'exploitation multi-tâches. Cela veut dire qu'il semble qu'il y ait plus d'un programme fonctionnant à la fois. Tout programme fonctionnant à un moment donné est appelé un processus. Chaque commande que vous utiliserez lancera au moins un nouveau processus, et il y a de nombreux processus système qui tournent constamment, maintenant ainsi les fonctionnalités du système.
Chaque processus est identifié de façon unique par un nombre appelé process ID (identifiant de processus), ou PID, et, comme pour les fichiers, chaque processus possède également un propriétaire et un groupe. Les informations sur le propriétaire et le groupe sont utilisées pour déterminer quels fichiers et périphériques sont accessibles au processus, en utilisant le principe de permissions de fichiers abordé plus tôt. La plupart des processus ont également un processus parent. Le processus parent est le processus qui les a lancés. Par exemple, si vous tapez des commandes sous un interpréteur de commandes, alors l'interpréteur de commandes est un processus, et toute commande que vous lancez est aussi un processus. Chaque processus que vous lancez de cette manière aura votre interpréteur de commandes comme processus parent. Une exception à cela est le processus spécial appelé init(8). init est toujours le premier processus, donc son PID est toujours 1. init est lancé automatiquement par le noyau au démarrage de FreeBSD.
Deux commandes sont particulièrement utiles pour voir les processus sur le système, ps(1) et top(1). La commande ps est utilisée pour afficher une liste statique des processus tournant actuellement, et peut donner leur PID, la quantité de mémoire qu'ils utilisent, la ligne de commande par l'intermédiaire de laquelle ils ont été lancés, et ainsi de suite. La commande top(1) affiche tous les processus, et actualise l'affichage régulièrement, de sorte que vous puissiez voir de façon intéractive ce que fait l'ordinateur.
Par défaut, ps(1) n'affiche que les commandes que vous faites tourner et dont vous êtes le propriétaire. Par exemple:
% ps PID TT STAT TIME COMMAND 298 p0 Ss 0:01.10 tcsh 7078 p0 S 2:40.88 xemacs mdoc.xsl (xemacs-21.1.14) 37393 p0 I 0:03.11 xemacs freebsd.dsl (xemacs-21.1.14) 48630 p0 S 2:50.89 /usr/local/lib/netscape-linux/navigator-linux-4.77.bi 48730 p0 IW 0:00.00 (dns helper) (navigator-linux-) 72210 p0 R+ 0:00.00 ps 390 p1 Is 0:01.14 tcsh 7059 p2 Is+ 1:36.18 /usr/local/bin/mutt -y 6688 p3 IWs 0:00.00 tcsh 10735 p4 IWs 0:00.00 tcsh 20256 p5 IWs 0:00.00 tcsh 262 v0 IWs 0:00.00 -tcsh (tcsh) 270 v0 IW+ 0:00.00 /bin/sh /usr/X11R6/bin/startx -- -bpp 16 280 v0 IW+ 0:00.00 xinit /home/nik/.xinitrc -- -bpp 16 284 v0 IW 0:00.00 /bin/sh /home/nik/.xinitrc 285 v0 S 0:38.45 /usr/X11R6/bin/sawfish
Comme vous pouvez le voir dans cet exemple, la sortie de ps(1) est organisée en un certain nombre de colonnes. PID est l'identifiant de processus discuté plus tôt. Les PIDs sont assignés à partir de 1, et vont jusqu'à 99999, et puis repassent à 1 quand le maximum est atteint (un PID n'est pas réassigné s'il est déjà utilisé). La colonne TT donne le terminal sur lequel tourne le programme, et peut être pour le moment ignoré sans risque. STAT affiche l'état du programme, peut être également ignoré. TIME est la durée d'utilisation du CPU--ce n'est généralement pas le temps écoulé depuis que vous avez lancé le programme, comme la plupart des programmes passent beaucoup de temps à attendre que certaines choses se produisent avant qu'ils n'aient besoin de dépenser du temps CPU. Et enfin, COMMAND est la ligne de commande qui a été utilisée lors du lancement du programme.
ps(1) supporte un
certain nombre d'options différentes pour modifier les informations
affichées. Un des ensembles d'options les plus utiles est auxww. a affiche l'information au sujet
de tous les processus tournant, et pas seulement les vôtres. u donne le nom de l'utilisateur du propriétaire du
processus, ainsi que l'utilisation de la mémoire. x
affiche des informations sur les processus ``daemon'', et ww
oblige ps(1) à
afficher la ligne de commande complète pour chaque processus, plutôt que de
la tronquer quand elle est trop longue pour tenir à l'écran.
La sortie de top(1) est semblable. Un extrait de session ressemble à ceci:
% top last pid: 72257; load averages: 0.13, 0.09, 0.03 up 0+13:38:33 22:39:10 47 processes: 1 running, 46 sleeping CPU states: 12.6% user, 0.0% nice, 7.8% system, 0.0% interrupt, 79.7% idle Mem: 36M Active, 5256K Inact, 13M Wired, 6312K Cache, 15M Buf, 408K Free Swap: 256M Total, 38M Used, 217M Free, 15% Inuse PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND 72257 nik 28 0 1960K 1044K RUN 0:00 14.86% 1.42% top 7078 nik 2 0 15280K 10960K select 2:54 0.88% 0.88% xemacs-21.1.14 281 nik 2 0 18636K 7112K select 5:36 0.73% 0.73% XF86_SVGA 296 nik 2 0 3240K 1644K select 0:12 0.05% 0.05% xterm 48630 nik 2 0 29816K 9148K select 3:18 0.00% 0.00% navigator-linu 175 root 2 0 924K 252K select 1:41 0.00% 0.00% syslogd 7059 nik 2 0 7260K 4644K poll 1:38 0.00% 0.00% mutt ...
La sortie est divisée en deux sections. L'entête (les cinq premières lignes) donne le PID du dernier processus lancé, la charge système moyenne (qui est une mesure de l'occupation du système), la durée de fonctionnement du système (le temps écoulé depuis le dernier redémarrage), et l'heure actuelle. Les autres éléments de l'entête concernent le nombre de processus en fonctionnement (47 dans notre cas), combien d'espace mémoire et d'espace de pagination sont occupés, et combien de temps le système passe dans les différents états du CPU.
En dessous il y a une série de colonnes contenant des informations semblables à celles données par ps(1). Comme précédemment vous pouvez lire le PID, le nom d'utilisateur, la quantité de temps CPU consommée, et la commande qui a été lancée. top(1) vous affiche par défaut la quantité d'espace mémoire utilisée par chaque processus. Cela est divisé en deux colonnes, une pour la quantité totale, et une autre pour la quantité résidente--la quantité totale représente l'espace mémoire dont a eu besoin l'application, et la quantité résidente représente l'espace qui est en fait utilisé actuellement. Dans cet exemple vous pouvez voir que Netscape® a exigé presque 30 Mo de RAM, mais utilise actuellement seulement 9Mo.
top(1) actualise
l'affichage toutes les deux secondes; cela peut être modifié avec l'option
s.
Quand vous utilisez un éditeur il est facile de le contrôler, de lui dire de charger des fichiers, et ainsi de suite. Vous pouvez faire cela parce que l'éditeur fournit les possibilités de le faire, et parce qu'un éditeur est attaché à un terminal. Certains programmes ne sont pas conçus pour fonctionner avec un dialogue constant avec l'utilisateur, et donc ils se déconnectent du terminal à la première occasion. Par exemple, un serveur web passe son temps à répondre aux requêtes web, il n'attend normalement pas d'entrée de votre part. Les programmes qui transportent le courrier électronique de site en site sont un autre exemple de cette classe d'application.
Nous appelons ces programmes des daemons (démons). Les ``daemons'' étaient des personnages de la mythologie Grecque: ni bon ni mauvais, c'étaient de petits esprits serviteurs qui, généralement, ont été à l'origine de choses utiles à l'humanité, un peu comme les serveurs web ou de messagerie d'aujourd'hui nous sont utiles. C'est pourquoi la mascotte BSD a été, pendant longtemps, un démon à l'apparence joyeuse portant des chaussures de tennis et une fourche.
Il existe une convention pour nommer les programmes qui fonctionnent normalement en tant que daemons qui est d'utiliser une terminaison en ``d''. BIND est le ``Berkeley Internet Name Domain'', mais le programme réel qui est exécuté s'appelle named); le programme correspondant au serveur web Apache est appelé httpd; le daemon de gestion de la file d'attente de l'imprimante est lpd, et ainsi de suite. C'est une convention, mais pas une obligation pure et simple; par exemple le daemon principal de gestion du courrier électronique pour l'application Sendmail est appelé sendmail, et non pas maild, comme vous pourriez l'imaginer.
Parfois vous devrez communiquer avec un processus daemon. Une manière de procéder est de lui (ou à tout processus en cours d'exécution) envoyer ce que l'on appelle un signal. Il existe un certain nombre de signaux différents que vous pouvez envoyer--certains d'entre eux ont une signification précise, d'autres sont interprétés par l'application, et la documentation de l'application vous indiquera comment l'application interprète ces signaux. Vous ne pouvez envoyer de signaux qu'aux processus dont vous êtes le propriétaire. Si vous envoyez un signal à un processus appartenant à quelqu'un d'autre avec kill(1) ou kill(2), vous obtiendrez un refus de permission. Il existe une exception à cela: l'utilisateur root, qui peut envoyer des signaux aux processus de chacun.
Dans certain cas FreeBSD enverra également aux applications des signaux. Si une application est mal écrite, et tente d'accéder à une partie de mémoire à laquelle elle n'est pas supposée avoir accès, FreeBSD envoie au processus le signal de violation de segmentation (SIGSEGV). Si une application a utilisé l'appel système alarm(3) pour être avertie dès qu'une période de temps précise est écoulée alors lui sera envoyé le signal d'alarme (SIGALRM), et ainsi de suite.
Deux signaux peuvent être utilisés pour arrêter un processus, SIGTERM et SIGKILL. SIGTERM est la manière polie de tuer un processus; le processus peut attraper le signal, réaliser que vous désirez qu'il se termine, fermer les fichiers de trace qu'il a peut-être ouvert, et généralement finir ce qu'il était en train de faire juste avant la demande d'arrêt. Dans certains cas un processus peut ignorer un SIGTERM s'il est au milieu d'une tâche qui ne peut être interrompue.
SIGKILL ne peut être ignoré par un processus. C'est le signal ``Je me fiche de ce que vous faites, arrêtez immédiatement''. Si vous envoyez un SIGKILL à un processus alors FreeBSD stoppera le processus[4].
Les autres signaux que vous pourriez avoir envie d'utiliser sont SIGHUP, SIGUSR1, et SIGUSR2. Ce sont des signaux d'usage général, et différentes applications se comporteront différemment quand ils sont envoyés.
Supposez que vous avez modifié le fichier de configuration de votre serveur web--vous voudriez dire à votre serveur web de relire son fichier de configuration. Vous pourriez arrêter et relancer httpd, mais il en résulterait une brève période d'indisponibilité de votre serveur web, ce qui peut être indésirable. La plupart des daemons sont écrits pour répondre au signal SIGHUP en relisant leur fichier de configuration. Donc au lieu de tuer et relancer httpd vous lui enverriez le signal SIGHUP. Parce qu'il n'y a pas de manière standard de répondre à ces signaux, différents daemons auront différents comportements, soyez sûr de ce que vous faites et lisez la documentation du daemon en question.
Les signaux sont envoyés en utilisant la commande kill(1), comme cet exemple le montre:
Envoyer un signal à un processus
Cet exemple montre comment envoyer un signal à inetd(8). Le fichier de configuration d'inetd est /etc/inetd.conf, et inetd relira ce fichier de configuration quand un signal SIGHUP est envoyé.
Trouvez l'identifiant du processus (PID) auquel vous voulez envoyer le signal.
Faites-le en employant ps(1) et grep(1). La commande
grep(1) est
utilisée pour rechercher dans le résultat la chaîne de
caractères que vous spécifiez. Cette commande est lancée en
tant qu'utilisateur normal, et inetd(8) est
lancé en tant que root, donc les options ax doivent être passées à ps(1).
% ps -ax | grep inetd 198 ?? IWs 0:00.00 inetd -wW
Donc le PID d'inetd(8) est 198. Dans certains cas la commande grep inetd pourrait aussi apparaître dans le résultat. C'est à cause de la façon dont ps(1) recherche la liste des processus en fonctionnement.
Utilisez kill(1) pour envoyer le signal. Etant donné qu'inetd(8) tourne sous les droits de l'utilisateur root vous devez utilisez su(1) pour devenir, en premier lieu, root.
% su Password: # /bin/kill -s HUP 198
Comme la plupart des commandes UNIX, kill(1) n'affichera rien si la commande est couronnée de succès. Si vous envoyez un signal à un processus dont vous n'êtes pas le propriétaire alors vous verrez “kill: PID: Operation not permitted”. Si vous avez fait une erreur dans le PID, vous enverrez le signal soit à un mauvais processus, ce qui peut être mauvais, soit, si vous êtes chanceux, vous enverrez le signal à un PID qui n'est pas actuellement utilisé, et vous verrez “kill: PID: No such process”.
Pourquoi utiliser /bin/kill? : De nombreux interpréteurs de commandes fournissent la commande kill comme commande interne; c'est à dire, que l'interpréteur de commandes enverra directement le signal, plutôt que de lancer /bin/kill. Cela peut être utile, cependant les différents interpréteurs ont une syntaxe différente pour spécifier le nom du signal à envoyer. Plutôt que de tenter de les apprendre toutes, il peut être plus simple de juste employer directement la commande /bin/kill ....
Envoyer d'autres signaux est très semblable, substituez juste TERM ou KILL dans la ligne de commande si nécessaire.
Important : Tuer au hasard des processus sur le système peut être une mauvaise idée. En particulier, init(8), processus à l'identifiant 1, qui est très particulier. Lancer la commande /bin/kill -s KILL 1 est une manière rapide d'arrêter votre système. Vérifiez toujours à deux fois les arguments que vous utilisez avec kill(1) avant d'appuyer sur Entrée.
Sous FreeBSD, beaucoup du travail quotidien est effectué sous une interface en ligne de commande appelée interpréteur de commandes ou ``shell''. Le rôle principal d'un interpréteur de commandes est de prendre les commandes sur le canal d'entrée et de les exécuter. Beaucoup d'interpréteurs de commandes ont également des fonctions intégrées pour aider dans les tâches quotidiennes comme la gestion de fichiers, le mécanisme de remplacement et d'expansion des jokers (``file globbing''), l'édition de la ligne de commande, les macros commandes, et les variables d'environnement. FreeBSD est fournit avec un ensemble d'interpréteurs de commandes, comme sh, l'interpréteur de commandes Bourne, et tcsh, l'interpréteur de commandes C-shell amélioré. Beaucoup d'autres interpréteurs de commandes sont disponibles dans le catalogue des logiciels portés, comme zsh et bash.
Quel interpréteur de commandes utilisez-vous? C'est vraiment une question de goût. Si vous programmez en C vous pourriez vous sentir plus à l'aise avec un interpréteur de commandes proche du C comme tcsh. Si vous venez du monde Linux ou que vous êtes nouveau à l'interface en ligne de commande d'UNIX vous pourriez essayer bash. L'idée principale est que chaque interpréteur de commandes à des caractéristiques uniques qui peuvent ou ne peuvent pas fonctionner avec votre environnement de travail préféré, et que vous avez vraiment le choix de l'interpréteur de commandes à utiliser.
Une des caractéristiques communes des interpréteurs de commandes est de pouvoir compléter les noms de fichiers (``filename completion''). En tapant les premières lettres d'une commande ou d'un fichier, vous pouvez habituellement faire compléter automatiquement par l'interpréteur de commandes le reste de la commande ou du nom du fichier en appuyant sur la touche Tab du clavier. Voici un exemple. Supposez que vous avez deux fichiers appelés respectivement foobar et foo.bar. Vous voulez effacer foo.bar. Donc ce que vous devriez taper sur le clavier est: rm fo[Tab].[Tab].
L'interpréteur de commandes devrait afficher rm foo[BEEP].bar.
Le [BEEP] est la sonnerie de la console, c'est l'interpréteur de commande indiquant qu'il n'est pas en mesure de compléter totalement le nom du fichier parce qu'il y a plus d'une possibilité. foobar et foo.bar commencent tous les deux par fo, mais il fut capable de compléter jusqu'à foo. Si vous tapez ., puis appuyez à nouveau sur Tab, l'interpréteur de commandes devrait pouvoir compléter le reste du nom du fichier pour vous.
Une autre caractéristique de l'interpréteur de commandes est l'utilisation de variables d'environnement. Les variables d'environnement sont une paire variable/valeur stockées dans l'espace mémoire d'environnement de l'interpréteur de commandes. Cet espace peut être lu par n'importe quel programme invoqué par l'interpréteur de commandes, et contient ainsi beaucoup d'éléments de configuration des programmes. Voici une liste des variables d'environnement habituelles et ce qu'elles signifient:
| Variable | Description |
|---|---|
| USER | Le nom d'utilisateur de la personne actuellement attachée au système. |
| PATH | La liste des répertoires, séparés par deux points, pour la recherche des programmes. |
| DISPLAY | Le nom réseau de l'affichage X11 auquel on peut se connecter, si disponible. |
| SHELL | Le nom de l'interpréteur de commandes actuellement utilisé. |
| TERM | Le nom du type de terminal de l'utilisateur. Utilisé pour déterminer les capacités du terminal. |
| TERMCAP | L'entrée de la base de données des codes d'échappement pour permettre l'exécution de diverses fonctions du terminal. |
| OSTYPE | Type du système d'exploitation, e.g. FreeBSD. |
| MACHTYPE | L'architecture du CPU sur lequel tourne actuellement le système. |
| EDITOR | L'éditeur de texte préferé de l'utilisateur. |
| PAGER | Le visualisateur de page de texte préferré de l'utilisateur. |
| MANPATH | La liste des répertoires, séparés par deux points, pour la recherche des pages de manuel. |
Fixer une variable d'environnement diffère légèrement d'un interpréteur de commandes à l'autre. Par exemple, dans le style de l'interpréteur de commandes de type C-shell comme tcsh et csh, vous utiliseriez setenv pour fixer le contenu d'une variable d'environnement. Sous les interpréteurs de commandes Bourne comme sh et bash, vous utiliseriez export pour configurer vos variables d'environnement. Par exemple, pour fixer ou modifier la variable d'environnement EDITOR, sous csh ou tcsh une commande comme la suivante fixera EDITOR à /usr/local/bin/emacs:
% setenv EDITOR /usr/local/bin/emacs
Sous les interpréteurs de commandes Bourne:
% export EDITOR="/usr/local/bin/emacs"
Vous pouvez faire afficher à la plupart des interpréteurs de commandes la variable d'environnement en plaçant un caractère $ juste devant son nom sur la ligne de commande. Par exemple, echo $TERM affichera le contenu de $TERM, car l'interpréteur de commande complète $TERM et passe la main à echo.
Les interpréteurs de commandes traitent beaucoup de caractères spéciaux, appelés métacaractères, en tant que représentation particulière des données. Le plus commun est le caractère *, qui représente zéro ou plusieurs caractères dans le nom du fichier. Ces métacaractères spéciaux peuvent être utilisés pour compléter automatiquement le nom des fichiers. Par exemple, taper echo * est presque la même chose que taper ls parce que l'interpréteur de commandes prendra tous les fichiers qui correspondent à * et les passera à echo pour les afficher.
Pour éviter que l'interpréteur de commande n'interprète les caractères spéciaux, ils peuvent être neutralisés en ajoutant un caractère antislash (\) devant. echo $TERM affichera votre type de terminal. echo \$TERM affichera $TERM tel quel.
La méthode la plus simple pour changer votre interpréteur de commandes est d'utiliser la commande chsh. En lançant chsh vous arriverez dans l'éditeur correspondant à votre variable d'environnement EDITOR; si elle n'est pas fixée, cela sera vi. Modifiez la ligne ``Shell:'' en conséquence.
Vous pouvez également passer le paramètre -s à chsh; cela modifiera
votre interpréteur de commandes sans avoir à utiliser un
éditeur. Par exemple, si vous vouliez changer votre interpréteur de
commandes pour bash, ce qui suit devrait faire
l'affaire:
% chsh -s /usr/local/bin/bash
Note : L'interpréteur de commandes que vous désirez utiliser doit être présent dans le fichier /etc/shells. Si vous avez installé l'interpréteur de commandes à partir du catalogue des logiciels portés, alors cela a dû déjà être fait pour vous. Si vous avez installé à la main l'interpréteur de commandes, vous devez alors le faire.
Par exemple, si vous avez installé bash à la main et l'avez placé dans /usr/local/bin, vous devrez faire:
# echo "/usr/local/bin/bash" >> /etc/shellsPuis relancer chsh.
Beaucoup de configurations sous FreeBSD sont faites en éditant des fichiers textes. Aussi ce serait une bonne idée de se familiariser avec un éditeur de texte. FreeBSD est fourni avec quelques-uns en tant qu'éléments du système de base, et beaucoup d'autres sont disponibles dans le catalogue des logiciels portés.
L'éditeur de plus facile et le plus simple à apprendre est un éditeur appelé ee, qui signifie l'éditeur facile (easy editor). Pour lancer ee, on taperait sur la ligne de commande ee fichier où fichier est le nom du fichier qui doit être édité. Par exemple, pour éditer /etc/rc.conf, tapez ee /etc/rc.conf. Une fois sous ee, toutes les commandes pour utiliser les fonctions de l'éditeur sont affichées en haut de l'écran. Le caractère ^ représente la touche Ctrl sur le clavier, donc ^e représente la combinaison de touches Ctrl+e. Pour quitter ee, appuyez sur la touche Echap, ensuite choisissez ``leave editor''. L'éditeur vous demandera s'il doit sauver les changements si le fichier a été modifié.
FreeBSD est également fourni avec des éditeurs de texte plus puissants comme vi en tant qu'élément du système de base, alors que d'autres éditeurs, comme Emacs et vim, en tant qu'élément du catalogue des logiciels portés de FreeBSD (editors/emacs et editors/vim). Ces éditeurs offrent beaucoup plus de fonctionnalités et de puissance aux dépens d'être un peu plus compliqués à apprendre. Cependant si vous projetez de faire beaucoup d'édition de texte, l'étude d'un éditeur plus puissant comme vim ou Emacs vous permettra d'économiser beaucoup plus de temps à la longue.
Un périphérique est un terme utilisé la plupart du temps pour les activités en rapport avec le matériel présent sur le système, incluant les disques, les imprimantes, les cartes graphiques, et les claviers. Quand FreeBSD démarre, la majorité de ce qu'affiche FreeBSD est la détection des périphériques. Vous pouvez à nouveau consulter les messages de démarrage en visualisant le fichier /var/run/dmesg.boot.
Par exemple, acd0 est le premier lecteur de CDROM IDE, tandis que kbd0 représente le clavier.
La plupart de ces périphériques sous un système d'exploitation UNIX peuvent être accédés par l'intermédiaire de fichiers appelés fichiers spéciaux de périphérique (``device node''), qui sont situés dans le répertoire /dev.
Quand vous ajoutez un nouveau périphérique à votre système, ou compilez le support pour des périphériques supplémentaires, de nouveaux fichiers spéciaux de périphérique doivent être créés.
Le système de fichiers de périphérique, ou DEVFS, fournit un accès à l'espace nom des périphériques du noyau dans l'espace nom du système de fichiers global. Au lieu d'avoir à créer et modifier les fichiers spéciaux de périphérique, DEVFS maintient ce système de fichiers particulier pour vous.
Voir la page de manuel de devfs(5) pour plus d'information.
Afin de comprendre pourquoi FreeBSD utilise le format elf(5), vous devez d'abord connaître quelques détails concernant les trois formats ``dominants'' d'exécutables actuellement en vigueur sous UNIX:
Le plus vieux et le format objet ``classique'' d'UNIX. Il utilise une entête courte et compacte avec un nombre magique au début qui est souvent utilisé pour caractériser le format (voir la page de manuel a.out(5) pour plus de détails). Il contient trois segments chargés: .text, .data, et .bss plus une table de symboles et une table de chaînes de caractères.
COFF
Le format objet SVR3. L'entête comprend une table de section, de telle sorte que vous avez plus de sections qu'uniquement .text, .data et .bss.
Le successeur de COFF, qui permet des sections multiples et des valeurs possibles de 32 bits et 64 bits. Un inconvénient majeur: ELF a aussi été conçu en supposant qu'il y aurait qu'un seul ABI par architecture système. Cette hypothèse est en fait assez incorrecte, et même dans le monde SYSV (qui a au moins trois ABIs: SVR4, Solaris, SCO) cela ne se vérifie pas.
FreeBSD essaye de contourner ce problème en fournissant un utilitaire pour marquer un exécutable connu ELF avec des informations sur l'ABI qui va avec. Consultez la page de manuel de brandelf(1) pour plus d'informations.
FreeBSD vient du camp ``classique'' et a utilisé le format a.out(5), une technologie employée et éprouvée à travers des générations de BSDs, jusqu'aux débuts de la branche 3.X. Bien qu'il fut possible de compiler et d'exécuter des binaires natifs ELF (et noyaux) sous FreeBSD avant cela, FreeBSD a initialement résisté à la ``pression'' de passer à ELF comme format par défaut. Pourquoi? Bien, quand le camp Linux ont fait leur pénible transition vers ELF, ce n'est pas tant fuir le format a.out qui rendait difficile la construction de bibliothèques partagée pour les développeurs mais le mécanisme de bibliothèques partagées basé sur des tables de sauts inflexible. Puisque les outils ELF disponibles offraient une solution au problème des bibliothèques partagées et étaient perçus comme ``le chemin à suivre'' de toute façon, le coût de la migration a été accepté comme nécessaire, et la transition a été réalisée. Le mécanisme FreeBSD de bibliothèques partagées se rapproche plus du style de mécanisme de bibliothèques partagées de SunOS™ de Sun, et est très simple à utiliser.
Pourquoi existe-t-il tant de formats différents?
Dans un obscure et lointain passé, il y avait du matériel simple. Ce matériel simple supportait un simple petit système. a.out était complètement adapté pour représenter les binaires sur ce système simple (un PDP-11). Au fur et à mesure que des personnes portaient UNIX à partir de ce système simple, ils ont maintenus le format a.out parce qu'il était suffisant pour les premiers portages d'UNIX sur des architectures comme le Motorola 68k, les VAX, etc.
Alors un certain ingénieur matériel brillant a décidé qu'il pourrait forcer le matériel à faire des choses bizarre, l'autorisant ainsi à réduire le nombre de portes logiques et permettant au coeur du CPU de fonctionner plus rapidement. Bien qu'on l'a fait fonctionner avec ce nouveau type de matériel (connu de nos jour sous le nom de RISC), a.out n'était pas adapté à ce matériel, aussi beaucoup de formats ont été développés pour obtenir de meilleures performances de ce matériel que ce que pouvait offrir le simple et limité format qu'était a.out. Des choses comme COFF, ECOFF, et quelques autres obscures formats ont été inventé et leur limites explorées avant que les choses ne se fixent sur ELF.
En outre, les tailles des programmes devenaient énormes alors que les disques (et la mémoire physique) étaient toujours relativement petits, aussi le concept de bibliothèque partagée est né. Le système de VM (mémoire virtuelle) est également devenu plus sophistiqué. Tandis que chacune de ces avancées était faites en utilisant le format a.out, son utilité a été élargie de plus en plus avec chaque nouvelle fonction. De plus les gens ont voulu charger dynamiquement des choses à l'exécution, ou se débarrasser de partie de leur programme après l'initialisation pour économiser de l'espace mémoire et de pagination. Les langages sont devenus plus sophistiqués et les gens ont voulu du code appelé automatiquement avant la partie principale du programme. Beaucoup de modifications ont été apportées au format a.out pour rendre possible toutes ces choses, et cela a fonctionné pendant un certain temps. Avec le temps, a.out n'était plus capable de gérer tous ces problèmes sans une augmentation toujours croissante du code et de sa complexité. Tandis ELF résolvait plusieurs de ces problèmes, il aurait été pénible de quitter un système qui a fonctionné. Ainsi ELF a dû attendre jusqu'au moment où il était plus pénible de rester avec a.out que d'émigrer vers ELF.
Cependant, avec le temps, les outils de compilation desquels ceux de FreeBSD sont dérivés (l'assembleur et le chargeur tout spécialement) ont évolué en parallèle. Les développeurs FreeBSD ajoutèrent les bibliothèques partagées et corrigèrent quelques bogues. Les gens de chez GNU qui ont à l'origine écrit ces programmes, les récrivirent et ajoutèrent un support plus simple pour la compilation multi-plateformes, avec différents formats à volonté, et ainsi de suite. Lorsque beaucoup de personnes ont voulu élaborer des compilateurs multi-plateformes pour FreeBSD, elles n'eurent pas beaucoup de chance puisque les anciennes sources que FreeBSD avait pour as et ld n'étaient pas adaptées à cette tâche. Le nouvel ensemble d'outils de GNU (binutils) supporte la compilation multi-plateformes, ELF, les bibliothèques partagées, les extensions C++, etc. De plus, de nombreux vendeurs de logiciels fournissent des binaires ELF, et c'est une bonne chose pour permettre leur exécution sous FreeBSD.
ELF est plus expressif qu'a.out et permet plus d'extensibilité dans le système de base. Les outils ELF sont mieux maintenus, et offrent un support pour la compilation multi-plateformes, ce qui est important pour de nombreuses personnes. ELF peut être légèrement plus lent qu'a.out, mais tenter de mesurer cette différence n'est pas aisé. Il y a également de nombreux détails qui diffèrent entre les deux dans la façon dont ils mappent les pages mémoire, gère le code d'initialisation, etc. Dans le futur, le support a.out sera retiré du noyau GENERIC, et par la suite retiré des sources du noyau une fois que le besoin d'exécuter d'anciens programmes a.out aura disparu.
La documentation la plus complète sur FreeBSD est sous la forme de pages de manuel. Presque chaque programme sur le système est fournit avec un court manuel de référence expliquant l'utilisation de base et les diverses options. Ces manuels peuvent être visualisés avec la commande man. L'utilisation de la commande man est simple:
% man command
command est le nom de la commande à propos de laquelle vous désirez en savoir plus. Par exemple, pour en savoir plus au sujet de la commande ls tapez:
% man ls
Les manuels en ligne sont divisés en sections numérotées:
Commandes utilisateur.
Appels système et numéros d'erreur.
Fonctions des bibliothèques C.
Pilotes de périphérique.
Formats de fichier.
Jeux et autres divertissements.
Information diverse.
Commandes de maintenance et d'utilisation du système.
Information de développement du noyau.
Dans certains cas, le même sujet peut apparaître dans plus d'une
section du manuel en ligne. Par exemple, il existe une commande utilisateur chmod et un appel système chmod(). Dans ce cas, vous pouvez préciser à
la commande man laquelle vous désirez en
spécifiant la section:
% man 1 chmod
Cela affichera la page de manuel de la commande utilisateur chmod. Les références à une section particulière du manuel en ligne sont traditionnellement placées entre parenthèses, ainsi chmod(1) se rapporte à la commande utilisateur chmod et chmod(2) se rapporte à l'appel système.
C'est parfait si vous connaissez le nom de la commande et vous souhaitez
simplement savoir comment l'utiliser, mais qu'en est-il si vous ne pouvez pas vous
rappelez du nom de la commande? Vous pouvez utiliser man
pour rechercher des mots-clés dans les descriptions de commandes en
employant l'option -k:
% man -k mail
Avec cette commande on vous affichera la liste des commandes qui ont le mot-clé ``mail'' dans leurs descriptions. C'est en fait équivalent à l'utilisation de la commande apropos.
Ainsi, vous regardez toutes ces commandes fantaisistes contenues dans /usr/bin mais vous n'avez pas la moindre idée de ce quelles font vraiment? Faites simplement:
% cd /usr/bin % man -f *
ou
% cd /usr/bin % whatis *
ce qui fait la même chose.
FreeBSD inclut beaucoup d'applications et d'utilitaires produit par la Fondation pour le Logiciel Libre ( Free Software Foundation). En plus des pages de manuel, ces programmes sont fournis avec des documents hypertexte appelés fichiers info qui peuvent être lus avec la commande info ou, si vous avez installé emacs, dans le mode info d'emacs.
Pour utiliser la commande info(1), tapez simplement:
% info
Pour une brève introduction, tapez h. Pour une référence rapide sur la commande, tapez ?.
Version française de Marc Fonvieille
<blackend@FreeBSD.org>.
FreeBSD est livré avec une riche collection d'outils en tant que partie du système de base. Beaucoup de choses peuvent être faites avant d'avoir besoin de recourir à l'installation d'une application tiers pour effectuer un travail précis. FreeBSD fournit deux technologies complémentaires pour installer des logiciels tiers sur votre système: le Catalogue des logiciels portés de FreeBSD (pour une installation à partir des sources), et les logiciels pré-compilés ou “paquetages” (pour installer des binaires pré-compilés). N'importe laquelle de ces deux méthodes peut être utilisée pour installer les nouvelles versions de vos applications favorites à partir d'un support local ou directement depuis le réseau.
Après la lecture de ce chapitre, vous saurez:
Comment installer des logiciels tiers pré-compilés.
Comment compiler des logiciels tiers à partir des sources en utilisant le catalogue de logiciels portés.
Comment effacer les logiciels pré-compilés ou portés précédemment installés.
Comment modifier les paramètres par défaut utilisés par le catalogue des logiciels portés.
Comment trouver l'application recherchée.
Comment mettre à jour vos applications.
Si vous avez utilisé auparavant un système UNIX vous saurez que la procédure typique pour installer les logiciels tiers ressemble à ceci:
Télécharger le logiciel, qui peut être distribué sous forme de code source, ou sous forme d'un binaire.
Extraire le logiciel de son format de distribution (généralement une archive tar compressée soit avec compress(1), soit avec gzip(1), ou encore bzip2(1)).
Recherchez la documentation (peut être un fichier INSTALL ou README, ou des fichiers dans un sous répertoire doc/) et lisez les informations sur comment installer le logiciel.
Si le logiciel était distribué sous forme de sources, compilez-le. Cela peut impliquer l'édition d'un Makefile, ou l'exécution d'une procédure configure, et d'autres activités.
Tester et installer le logiciel.
Et cela si seulement tout se passe bien. Si vous installez un logiciel qui n'a pas été spécialement porté pour FreeBSD, il se peut que vous deviez éditer le code source pour le faire fonctionner correctement.
Si vous le voulez, vous pouvez continuer d'installer des logiciels suivant la méthode ``traditionnelle'' sous FreeBSD. Cependant, FreeBSD fournit deux technologies avec lesquelles vous pouvez vous économiser beaucoup d'efforts: les logiciels pré-compilés et le catalogue des logiciels portés. A l'heure de l'écriture de ces lignes, plus de 23,000 applications tierces sont ainsi mises à disposition.
Pour n'importe quelle application donnée, le logiciel pré-compilé FreeBSD pour cette application est un unique fichier à télécharger. Il contient les copies pré-compilées de toutes les commandes de l'application, ainsi que tous fichiers de configuration et documentation. Un logiciel pré-compilé téléchargé peut être manipulé avec les commandes FreeBSD de gestion des logiciels pré-compilés, comme pkg_add(1), pkg_delete(1), pkg_info(1), et ainsi de suite. L'installation d'une nouvelle application peut être effectuée grâce à une unique commande.
Un logiciel porté pour FreeBSD est un ensemble de fichiers conçus pour automatiser le processus de compilation d'une application à partir du code source.
Rappelez-vous qu'il y a un certain nombre d'étapes que vous effectueriez si vous compiliez un programme vous-même (téléchargement, extraction, application de correctifs, compilation, installation). Les fichiers qui composent un logiciel porté contiennent toute l'information nécessaire pour permettre au système de faire cela pour vous. Vous lancez une poignée de commandes simples et le code source de l'application est automatiquement téléchargé, extrait, corrigé, compilé, et installé pour vous.
En fait, le catalogue des logiciels portés peut être utilisé pour générer ce qui pourra plus tard être manipulé avec pkg_add et d'autres commandes de gestion des logiciels pré-compilés qui seront présentés sous peu.
Les logiciels pré-compilés et le catalogue des logiciels portés comprennent la notion de dépendances. Supposez que vous voulez installer une application qui dépend de l'installation d'une bibliothèque particulière. L'application et la bibliothèque ont été toutes deux rendues disponibles sous forme de logiciel porté pour FreeBSD ou de logiciel pré-compilé. Si vous utilisez la commande pkg_add ou le catalogue des logiciels portés pour ajouter l'application, tous les deux remarqueront que la bibliothèque n'a pas été installée, et installeront automatiquement en premier la bibliothèque.
Etant donné que les deux technologies sont presque semblables, vous pourriez vous demander pourquoi FreeBSD s'ennuie avec les deux. Les logiciels pré-compilés et le catalogue de logiciels portés ont chacun leurs propres forces, et celle que vous emploierez dépendra de votre préférence.
Avantages des logiciels pré-compilés
L'archive compressée d'un logiciel pré-compilé est généralement plus petite que l'archive compressée contenant le code source de l'application.
Les logiciels pré-compilés ne nécessitent pas de compilation supplémentaire. Pour les grosses applications, comme Mozilla, KDE, ou GNOME cela peut s'avérer important, particulièrement si vous êtes sur un système lent.
Les logiciels pré-compilés ne demandent pas une compréhension du processus impliqué dans la compilation de logiciels sous FreeBSD.
Avantages du catalogue des logiciels portés
Les logiciels pré-compilés sont normalement compilés avec des options conservatrices, parce qu'ils doivent pouvoir tourner sur le plus grand nombre de systèmes. En installant à partir du catalogue des logiciels portés, vous pouvez ajuster les options de compilation pour (par exemple) générer du code spécifique au Pentium 4 ou à l'Athlon.
Certaines applications ont des options de compilation concernant ce qu'elles peuvent faire et ne pas faire. Par exemple, Apache peut être configuré avec une très large variété d'options intégrées différentes. En compilant à partir du catalogue des logiciels portés vous n'avez pas à accepter les options par défaut, et vous pouvez les configurez vous-même.
Dans certains cas, de multiples logiciels pré-compilés existeront pour la même application pour spécifier certaines configurations. Par exemple, Ghostscript est disponible comme logiciel pré-compilé ghostscript et ghostscript-nox11 , en fonction de si vous avez installé ou non un serveur X11. Ce type d'arrangement est possible avec les logiciels pré-compilés, mais devient rapidement impossible si une application a plus d'une ou deux options de compilation.
Les licences de certains logiciels interdisent les distributions binaires. Ils doivent être distribués sous forme de code source.
Certaines personnes ne font pas confiance aux distributions binaires. Au moins avec le code source, vous pouvez (en théorie) le parcourir et chercher les problèmes potentiels par vous-même.
Si vous avez des correctifs locaux, vous aurez besoin du code source afin de les appliquer.
Certaines personnes aiment avoir le code source à portée de main, ainsi elles peuvent le lire si elles s'ennuient, le modifier, y faire des emprunts (si la licence le permet bien sûr), etc...
Pour suivre les mises à jour du catalogue des logiciels portés, inscrivez-vous à la liste de diffusion à propos du catalogue des logiciels portés de FreeBSD et la liste de diffusion à propos des rapports de bogue concernant le catalogue des logiciels portés de FreeBSD.
Avertissement : Avant d'installer une application, vous devriez consulter http://vuxml.freebsd.org/ à la recherche de problème de sécurité concernant votre application.
Vous pouvez également installer ports-mgmt/portaudit qui contrôlera automatiquement toutes les applications installées à la recherche de vulnérabilités connues, un contrôle sera également effectué avant toute compilation de logiciel porté. De même, vous pouvez utiliser la commande portaudit -F -a après avoir installé des logiciels pré-compilés.
Le reste de ce chapitre expliquera comment utiliser les logiciels pré-compilés et le catalogue des logiciels portés et la gestion des logiciels tiers sous FreeBSD.
Avant que vous puissiez installer des applications vous devez savoir ce que vous voulez, et comment se nomment les applications.
La liste des applications disponibles pour FreeBSD augmente de jours en jours. Heureusement, il y a plusieurs façons de trouver ce que vous désirez:
Le site web de FreeBSD maintient à jour une liste, dans laquelle on peut effectuer des recherches, de toutes les applications disponibles à l'adresse http://www.FreeBSD.org/ports/. Le catalogue des logiciels portés est divisé en catégories, et vous pouvez soit chercher une application par son nom (si vous le connaissez), soit lister toutes les applications disponibles dans une catégorie.
Dan Langille maintient FreshPorts, à l'adresse http://www.FreshPorts.org/. FreshPorts suit les modifications des applications dans le catalogue des logiciels portés, vous permet de ``surveiller'' un ou plusieurs logiciels portés, et peut vous envoyer un courrier électronique quand ils sont mis à jour.
Si vous ne connaissez pas le nom de l'application que vous voulez, essayez d'utiliser un site comme FreshMeat (http://www.freshmeat.net/) pour trouver une application, ensuite vérifiez sur le site de FreeBSD si l'application a déjà été portée.
Si vous connaissez le nom exact du logiciel, vous devez juste déterminer dans quelle catégorie il se trouve, vous pouvez utiliser la commande whereis(1) pour cela. Tapez simplement whereis file où file est le programme que vous voulez installer. S'il est trouvé sur le système, on vous indiquera où il se trouve, de la manière suivante:
# whereis lsof lsof: /usr/ports/sysutils/lsof
Cela nous indique que lsof (un utilitaire système) peut être trouvé dans le répertoire /usr/ports/sysutils/lsof.
Vous pouvez également utiliser une simple commande echo(1) pour déterminer où se trouve un logiciel porté dans le catalogue de logiciels portés. Par exemple:
# echo /usr/ports/*/*lsof* /usr/ports/sysutils/lsof
Notez que cette commande retournera tout fichier téléchargé du répertoire /usr/ports/distfiles correspondant à ce motif de recherche.
Encore une autre façon de trouver un logiciel porté particulier est d'utiliser le mécanisme de recherche interne du catalogue des logiciels portés. Pour utiliser la fonction de recherche, vous devrez vous trouver dans le répertoire /usr/ports. Une fois dans ce répertoire, lancez make search name=program-name où program-name représente le nom du programme que vous voulez localiser. Par exemple, si vous recherchiez lsof:
# cd /usr/ports # make search name=lsof Port: lsof-4.56.4 Path: /usr/ports/sysutils/lsof Info: Lists information about open files (similar to fstat(1)) Maint: obrien@FreeBSD.org Index: sysutils B-deps: R-deps:
La partie du message de sortie à laquelle vous devez prêter attention est la ligne ``Path:'', car cela vous indique où trouver le logiciel porté. Les autres informations ne sont pas nécessaires afin d'installer le logiciel porté, aussi on en parlera pas ici.
Pour une recherche plus en profondeur vous pouvez également utiliser make search key=string où string est le texte à rechercher. Cela recherche les noms de logiciels portés, les commentaires, les descriptions et les dépendances et peut être utilisé pour trouver des logiciels portés se rapportant à un sujet particulier si vous ne connaissez pas le nom du programme que vous cherchez.
Dans les deux cas, la chaîne de caractère de recherche n'est pas sensible à la casse des caractères. Rechercher ``LSOF'' mènera aux même résultats que la recherche de ``lsof''.
Il existe plusieurs outils utilisés pour la gestion des logiciels pré-compilés sur FreeBSD
L'utilitaire sysinstall peut être invoqué à partir d'un système en fonctionnement pour installer, supprimer et afficher les logiciels disponibles et installés. Pour plus d'information, consultez la Section 2.10.11.
Les outils de gestion en ligne de commande des logiciels pré-compilés, qui sont le sujet de la suite de cette section.
Vous pouvez utiliser l'utilitaire pkg_add(1) pour installer un logiciel pré-compilé FreeBSD à partir d'un fichier local ou d'un serveur sur le réseau.
Exemple 4-1. Télécharger un logiciel pré-compilé à la main puis l'installer localement
# ftp -a ftp2.FreeBSD.org Connected to ftp2.FreeBSD.org. 220 ftp2.FreeBSD.org FTP server (Version 6.00LS) ready. 331 Guest login ok, send your email address as password. 230- 230- This machine is in Vienna, VA, USA, hosted by Verio. 230- Questions? E-mail freebsd@vienna.verio.net. 230- 230- 230 Guest login ok, access restrictions apply. Remote system type is UNIX. Using binary mode to transfer files. ftp> cd /pub/FreeBSD/ports/packages/sysutils/ 250 CWD command successful. ftp> get lsof-4.56.4.tgz local: lsof-4.56.4.tgz remote: lsof-4.56.4.tgz 200 PORT command successful. 150 Opening BINARY mode data connection for 'lsof-4.56.4.tgz' (92375 bytes). 100% |**************************************************| 92375 00:00 ETA 226 Transfer complete. 92375 bytes received in 5.60 seconds (16.11 KB/s) ftp> exit # pkg_add lsof-4.56.4.tgz
Si vous ne disposez pas d'une source locale de logiciels
pré-compilés (comme l'ensemble de CDROM de FreeBSD) alors il sera
probablement plus facile d'utiliser l'option -r de pkg_add(1). Cela fera
déterminer automatiquement à l'utilitaire le format objet et la
version corrects et ensuite récupérer et installer le logiciel
pré-compilé à partir d'un site FTP.
# pkg_add -r lsof
L'exemple ci-dessus téléchargera le logiciel pré-compilé correct sans plus d'intervention de l'utilisateur. Si vous désirez indiquer un autre miroir FreeBSD pour les logiciels pré-compilés à la place du site de distribution principal, vous devez positionner en conséquence la variable d'environnement PACKAGESITE, pour remplacer les paramètres par défaut. pkg_add(1) utilise fetch(3) pour télécharger les fichiers, qui respecte diverses variables d'environnement, dont FTP_PASSIVE_MODE, FTP_PROXY, et FTP_PASSWORD. Il se peut que vous ayez besoin de configurer une ou plusieurs de ces dernières si vous êtes derrière un coupe-feu, ou devez utiliser un proxy FTP/HTTP. Consultez la page de manuel fetch(3) pour la liste complète des variables. Vous pouvez également remarquer que dans l'exemple ci-dessus lsof est utilisé au lieu de lsof-4.56.4. Quand la fonction de récupération à distance est utilisée, le numéro de version doit être retiré. pkg_add(1) téléchargera automatiquement la toute dernière version de l'application.
Note : pkg_add(1) téléchargera la dernière version de votre application si vous êtes sous FreeBSD-CURRENT ou FreeBSD-STABLE. Si vous utilisez une version -RELEASE, il récupérera la version compilée avec votre version lors de sa publication. Il est possible de modifier ce comportement en surchargeant la variable d'environnement PACKAGESITE. Par exemple, si vous utilisez un système FreeBSD 8.1-RELEASE, par défaut pkg_add(1) tentera de récupérer les applications pré-compilées à partir de ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8.1-release/Latest/. Si vous désirez forcer pkg_add(1) à télécharger les versions des logiciels pré-compilés pour FreeBSD 8-STABLE, positionnez la variable PACKAGESITE à ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8-stable/Latest/.
Les logiciels pré-compilés sont distribués dans les formats .tgz et .tbz. Vous pouvez les trouver sur ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/, ou sur le CDROM de distribution de FreeBSD. Chaque CD de l'ensemble de 4-CD de FreeBSD (et le PowerPak, etc...) contient des logiciels pré-compilés dans le répertoire /packages. L'organisation des logiciels pré-compilés est semblable à celle de l'arborescence /usr/ports. Chaque catégorie possède son propre répertoire, et chaque logiciel pré-compilé peut être trouvé dans le répertoire All.
La structure de répertoires du système de logiciels pré-compilés correspond à celle du catalogue des logiciels portés; ils travaillent ensemble pour former l'intégralité du système de logiciels pré-compilés/portés.
pkg_info(1) est un utilitaire qui liste et décrit les divers logiciels pré-compilés installés.
# pkg_info cvsup-16.1 A general network file distribution system optimized for CV docbook-1.2 Meta-port for the different versions of the DocBook DTD ...
pkg_version(1) est un utilitaire qui récapitule les versions de tous les logiciels pré-compilés installés. Il compare la version du logiciel pré-compilé avec la version actuelle trouvée dans le catalogue des logiciels portés.
# pkg_version cvsup = docbook = ...
Les symboles dans la seconde colonne indiquent l'âge relatif de la version installée et de la version disponible dans le catalogue des logiciels portés local.
| Symbole | Signification |
|---|---|
| = | La version du logiciel pré-compilé installée est équivalente à celle de celui trouvé dans le catalogue des logiciels portés local. |
| < | La version installée est plus ancienne que celle disponible dans le catalogue des logiciels portés. |
| > | La version installée est plus récente que celle trouvée dans le catalogue local des logiciels portés. (le catalogue local des logiciels portés est probablement ancien) |
| ? | Le logiciel pré-compilé ne peut être trouvé dans l'index du catalogue des logiciels portés. (Cela peut se produire quand, par exemple, un logiciel installé est supprimé du catalogue des logiciels portés ou renommé.) |
| * | Il y a de multiples versions de ce logiciel pré-compilé. |
| ! | Le logiciel installé existe dans l'index mais pour une raison inconnue, pkg_version a été incapable de comparer le numéro de version du paquetage installé avec l'entrée correspondante dans l'index. |
Pour désinstaller un logiciel pré-compilé précédemment installé, utilisez l'utilitaire pkg_delete(1).
# pkg_delete xchat-1.7.1
Notez que pkg_delete(1) a besoin du nom complet du paquetage et du numéro de version; la commande précédente n'aurait pas fonctionné avec xchat à la place de xchat-1.7.1. It est cependant facile de retrouver la version du paquetage installé à l'aide de la commande pkg_version(1). Vous pouvez à la place simplement utiliser un joker:
# pkg_delete xchat\*
dans ce cas, tous les logiciels dont le nom commence par xchat seront supprimés.
Toute l'information sur les logiciels pré-compilés est stockée dans le répertoire /var/db/pkg. La liste des fichiers installés pour chaque logiciel pré-compilé peut être trouvée dans des fichiers de ce répertoire.
Les sections suivantes fournissent des instructions de base sur l'utilisation du catalogue des logiciels portés pour installer et désinstaller des programmes sur votre système. Une description détaillée des cibles make et de variables d'environnement est disponible dans la page de manuel ports(7).
Avant que vous puissiez installer des logiciels portés, vous devez d'abord récupérer le catalogue des logiciels portés-- qui est essentiellement un ensemble de Makefiles, de correctifs, et de fichiers de description habituellement placés dans /usr/ports.
Quand vous avez installé votre système FreeBSD, sysinstall vous a demandé si vous aimeriez installer le catalogue des logiciels portés. Si vous avez choisi non, vous pouvez suivre ces instructions pour obtenir le catalogue des logiciels portés:
La méthode CVSup
C'est une méthode rapide pour récupérer le catalogue des logiciels portés en utilisant le protocole CVSup. Si vous voulez en apprendre plus au sujet de CVSup, lisez la section Utiliser CVSup.
Note : L'implémentation du protocole CVSup présente dans le système de base de FreeBSD se nomme csup.
Assurez-vous que le répertoire /usr/ports est vide avant d'utiliser csup pour la première fois. Si vous avez déjà un catalogue des logiciels portés, obtenu à partir d'une autre source, csup n'effacera pas les correctifs qui ont été supprimés.
Exécuter la commande csup:
# csup -L 2 -h cvsup.FreeBSD.org /usr/share/examples/cvsup/ports-supfile
Remplacez cvsup.FreeBSD.org avec un serveur CVSup proche de vous. Voir Sites CVSup (Section A.5.7) pour une liste complète des sites miroirs.
Note : Certains peuvent vouloir utiliser leur propre ports-supfile, par exemple pour éviter d'avoir à passer le serveur CVSup sur la ligne de commande.
Dans ce cas, en tant que root, copier /usr/share/examples/cvsup/ports-supfile à un nouvel emplacement, comme /root ou votre répertoire d'utilisateur.
Editez ports-supfile.
Remplacez CHANGE_THIS.FreeBSD.org avec un serveur CVSup proche de vous. Voir Sites CVSup (Section A.5.7) pour une liste complète des sites miroirs.
Maintenant pour lancer csup, utilisez ce qui suit:
# csup -L 2 /root/ports-supfile
L'exécution ultérieure de csup(1) téléchargera et appliquera tous les changements récents à votre catalogue des logiciels portés sans pour autant recompiler vos logiciels.
La méthode Portsnap
Portsnap est un système alternatif de distribution du catalogue des logiciels portés. Veuillez vous reporter à la section Utiliser Portsnap pour une description détaillée de toutes les caractéristiques de Portsnap.
Téléchargez un instantané compressé du catalogue des logiciels portés dans le répertoire /var/db/portsnap. Vous pouvez vous déconnecter de l'Internet, si vous le désirez, après cette opération:
# portsnap fetch
Si vous exécutez Portsnap pour la première fois, il faut extraire l'instantané dans le répertoire /usr/ports:
# portsnap extract
Si votre répertoire /usr/ports contient déjà une version du catalogue des logiciels portés et que vous désirez juste mettre à jour, utilisez plutôt la commande:
# portsnap update
La méthode Sysinstall
Cette méthode implique l'utilisation de sysinstall pour installer le catalogue des logiciels portés à partir du disque d'installation. Il faut noter que la version du catalogue qui sera installée est la version datant de la publication de votre disque d'installation. Si vous disposez d'un accès à l'Internet, vous devriez toujours utiliser une des méthodes précédemment exposées.
En tant que root, lancez sysinstall comme montré ci-dessous:
# sysinstall
Faites défiler l'écran vers le bas et sélectionnez Configure, appuyez sur Entrée.
Faites défiler l'écran vers le bas et sélectionnez Distributions, appuyez sur Entrée.
Faites défiler l'écran vers le bas jusqu'à ports, appuyez sur Espace.
Remontez jusqu'à Exit, appuyez sur Entrée.
Choisissez le support d'installation désiré, comme un CDROM, par FTP, etc.
Remontez jusqu'à Exit et appuyez sur Enter.
Appuyez sur la touche X pour quitter sysinstall.
La première chose qui devrait être expliquée quand on aborde le catalogue des logiciels portés est ce que l'on entend par ``squelette''. En bref, un squelette est un ensemble minimal de fichiers qui indique à votre système FreeBSD comment compiler et installer proprement un programme. Chaque squelette contient:
Un fichier Makefile. Le fichier Makefile contient les diverses déclarations qui indiquent comment l'application devrait être compilée et où elle devrait être installée sur votre système.
Un fichier distinfo. Ce fichier contient l'information à propos des fichiers qui doivent être téléchargés pour compiler le logiciel, et leurs sommes de contrôle (en utilisant sha256(1)), pour s'assurer que ces fichiers n'ont pas été corrompus durant le téléchargement.
Un répertoire files. Ce répertoire contient les correctifs pour permettre la compilation et l'installation du programme sur votre système FreeBSD. Les correctifs sont à la base de petits fichiers qui indiquent des modifications sur des fichiers particuliers. Ils sont sous forme de fichiers texte, qui disent ``Effacer la ligne 10'' ou ``Modifier la ligne 26 par...''. Les correctifs sont également connus sous le nom de ``diffs'' car ils sont générés par le programme diff(1).
Ce répertoire peut également contenir d'autres fichiers utilisés pour la compilation du logiciel porté.
Un fichier pkg-descr. C'est une description plus détaillée du programme, souvent en plusieurs lignes.
Un fichier pkg-plist. C'est une liste de tous les fichiers qui seront installés par le logiciel porté. Il indique également au système des logiciels portés quels fichiers sont à effacer lors d'une désinstallation.
Certains logiciels portés utilisent d'autres fichiers, comme pkg-message. Le catalogue des logiciels portés utilise ces fichiers pour faire face à certaines situations spéciales. Si vous désirez plus de détails au sujet de ces fichiers, et sur les logiciels portés en général, consultez le Manuel du développeur de logiciels portés.
Le logiciel porté contient les instructions pour compiler le code source, mais ne contient pas le code source. Vous pouvez obtenir le code source à partie d'un CDROM ou de l'Internet. Le code source est distribué de la façon dont l'auteur le désire. Fréquemment c'est une archive tar compressée avec gzip, mais elle pourra être compressée avec un autre outil ou même non compressée. Le code source d'un programme, peu importe la forme sous laquelle il est distribué, est appelé un fichier ``distfile''. Les deux méthodes pour l'installation d'un logiciel porté pour FreeBSD sont décrites ci-dessous.
Note : Vous devez avoir ouvert une session sous l'utilisateur root pour installer des logiciels portés.
Avertissement : Avant d'installer un logiciel porté, vous devez vous assurer d'avoir un catalogue des logiciels portés à jour et vous devez consulter http://vuxml.freebsd.org/ pour les problèmes de sécurité relatifs à votre logiciel.
Un contrôle des problèmes de sécurité peut être effectué automatiquement par portaudit avant toute nouvelle installation d'application. Cet outil peut être trouvé dans le catalogue des logiciels porté (security/portaudit). Vous pouvez lancer portaudit -F avant l'installation d'un nouveau logiciel porté, pour télécharger la base de données actualisée des vulnérabilités. Un audit de sécurité et une mise à jour de la base de données sera effectuée lors du contrôle quotidien de sécurité de la machine. Pour plus d'informations, lisez les pages de manuel portaudit(1) et periodic(8).
Le catalogue des logiciels portés suppose que vous disposez d'une connection active à l'Internet. Si ce n'est pas le cas, vous devez placer manuellement une copie du distfile dans le répertoire /usr/ports/distfiles.
Pour commencer, rendez-vous dans le répertoire du logiciel porté que vous voulez installer:
# cd /usr/ports/sysutils/lsof
Une fois à l'intérieur du répertoire lsof vous verrez le squelette du logiciel porté. L'étape suivante est de compiler (également appelé la ``construction'') le logiciel porté. Cela est fait en tapant simplement make à l'invite. Une fois que c'est fait, vous devriez voir quelque chose comme ceci:
# make >> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/. >> Attempting to fetch from ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/. ===> Extracting for lsof-4.57 ... [extraction output snipped] ... >> Checksum OK for lsof_4.57D.freebsd.tar.gz. ===> Patching for lsof-4.57 ===> Applying FreeBSD patches for lsof-4.57 ===> Configuring for lsof-4.57 ... [configure output snipped] ... ===> Building for lsof-4.57 ... [compilation output snipped] ... #
Notez qu'une fois la compilation terminée, vous vous retrouvez face à l'invite. L'étape suivante est d'installer le logiciel porté. Afin de l'installer, vous devez juste ajouter un mot à la commande make, et ce mot est install:
# make install
===> Installing for lsof-4.57
...
[installation output snipped]
...
===> Generating temporary packing list
===> Compressing manual pages for lsof-4.57
===> Registering installation for lsof-4.57
===> SECURITY NOTE:
This port has installed the following binaries which execute with
increased privileges.
#
Une fois de retour à l'invite, vous devriez être en mesure d'exécuter l'application que vous venez juste d'installer. Comme lsof est un programme qui tourne avec des privilèges accrus, un avertissement sur la sécurité est affiché. Durant la compilation et l'installation de logiciels portés, vous devriez faire attention à tout avertissement qui pourrait apparaître.
Il est conseillé de supprimer le sous-répertoire de travail, qui contient tous les fichiers temporaires utilisés lors de la compilation. Non seulement cela consomme de l'espace disque, mais cela posera problème plus tard lors de la mise à jour vers une nouvelle version du logiciel porté.
# make clean ===> Cleaning for lsof-4.57 #
Note : Vous pouvez vous économiser deux étapes supplémentaires en lançant juste make install clean à la place de make, make install et make clean sous la forme de trois étapes séparées.
Note : Certains interpréteurs de commandes maintiennent un cache des commandes qui sont disponibles dans les répertoires listés dans la variable d'environnement PATH, pour accélérer les opérations de recherche des fichiers exécutables de ces commandes. Si vous utilisez un de ces interpréteurs de commandes, vous pourrez avoir à utiliser la commande rehash après l'installation d'un logiciel porté, avant que la commande fraîchement installée ne puisse être utilisée. Cette commande fonctionnera pour les interpréteurs de commandes comme tcsh. Utilisez la commande hash -r pour les interpréteurs tels que sh. Consultez la documentation de votre interpréteur de commandes pour plus d'information.
Certains DVD-ROMs comme le FreeBSD Toolkit de FreeBSD Mall contiennent des distfiles. Ils peuvent être utilisés avec le catalogue des logiciels portés. Montez le DVD-ROM sous /cdrom. Si vous utilisez un point de montage différent, positionnez la variable make(1) CD_MOUNTPTS. Les distfiles nécessaires seront automatiquement utilisés s'ils sont présent sur le disque.
Note : Soyez conscient que les licences de quelques logiciels portés n'autorisent pas leur présence sur le CD-ROM. Cela peut être dû à la nécessité de remplir un formulaire d'enregistrement avant le téléchargement, ou que la redistribution n'est pas permise, ou toute autre raison. Si vous désirez installer un logiciel porté qui n'est pas disponible sur le CD-ROM, vous devrez vous connecter afin de récupérer les fichiers nécessaires.
Le catalogue des logiciels portés utilise fetch(1) pour télécharger les fichiers, qui respecte diverses variables d'environnement, dont FTP_PASSIVE_MODE, FTP_PROXY, et FTP_PASSWORD. Il se peut que vous ayez besoin de configurer une ou plusieurs de ces dernières si vous êtes derrière un coupe-feu, ou devez utiliser un proxy FTP/HTTP. Consultez la page de manuel fetch(3) pour la liste complète des variables.
Pour les utilisateurs qui ne peuvent rester connectés à l'Internet indéfiniment, il existe la commande make fetch. Exécutez cette commande à la base du catalogue des logiciels portés (/usr/ports) et les fichiers nécessaires seront téléchargés. Cette commande fonctionnera également dans les sous-répertoires du catalogue, par exemple: /usr/ports/net. Notez que si un logiciel porté dépend de bibliothèques particulières ou d'autres logiciels portés, cette commande de récupérera pas les sources de ces logiciels. Remplacez fetch par fetch-recursive si vous voulez récupérer également les sources des logiciels dont dépend un logiciel porté.
Note : Vous pouvez compiler tous les logiciels d'une catégorie ou de l'ensemble du catalogue en exécutant la commande make dans un répertoire de base, juste comme la commande make fetch précédente. C'est, cependant, une idée dangereuse étant donné que certains logiciels portés ne peuvent coexister. Dans d'autres cas, certains logiciels portés peuvent installer des fichiers différents ayant le même nom.
Dans de rares cas les utilisateurs peuvent vouloir récupérer les archives à partir d'un site différent du MASTER_SITES par défaut (l'emplacement par défaut à partir duquel les fichiers sont téléchargés). Vous pouvez surcharger l'option MASTER_SITES avec la commande suivante:
# cd /usr/ports/répertoire # make MASTER_SITE_OVERRIDE= \ ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch
Dans cet exemple nous modifions la valeur par défaut de l'option MASTER_SITES pour ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/.
Note : Certains logiciels portés autorisent (ou même nécessitent) des options de compilation qui permettent l'activation/désactivation de parties de l'application qui ne sont pas nécessaires, de certaines options de sécurité, et autres personnalisations. Quelques noms de logiciels viennent immédiatement à l'esprit: www/mozilla, security/gpgme, et mail/sylpheed-claws. Un message sera affiché quand de telles options sont disponibles.
Il est parfois utile (ou obligatoire) d'utiliser des répertoires de travail ou cible différents. Les variables WRKDIRPREFIX et PREFIX permettent de modifier les répertoires par défaut. Par exemple:
# make WRKDIRPREFIX=/usr/home/example/ports install
compilera le logiciel dans le répertoire /usr/home/example/ports et installera tout dans /usr/local.
# make PREFIX=/usr/home/example/local install
le compilera dans /usr/ports et l'installera dans /usr/home/example/local.
Et bien sûr
# make WRKDIRPREFIX=../ports PREFIX=../local install
combinera les deux (c'est trop long pour tenir sur cette page, mais cela devrait vous donner une idée générale).
Alternativement, ces variables peuvent également être configurées dans votre environnement. Consultez la page de manuel de votre interpréteur de commandes pour des instructions sur la procédure à suivre.
Certains logiciels portés qui utilisent imake (une partie du système X Window) ne fonctionnent pas correctement avec la variable PREFIX, et insisteront pour s'installer sous /usr/X11R6. De façon similaire, certains logiciels Perl ignorent PREFIX et s'installent dans l'arborescence Perl. Faire en sorte que ces logiciels portés respectent PREFIX est une tâche difficile voire impossible.
Lors de la compilation de certains logiciels portés, un menu ncurses(3) pourra s'afficher et à partir de celui-ci vous pourrez sélectionner certaines options de compilation. Il n'est pas inhabituel pour les utilisateurs de vouloir revoir ce menu pour ajouter, supprimer, ou modifier ces options après la compilation d'un logiciel. Il y a plusieurs manières pour y parvenir. Une possibilité est de se rendre dans le répertoire contenant le logiciel porté et de taper make config, qui affichera à nouveau le menu avec les mêmes options sélectionnées. Une autre possibilité est d'utiliser make showconfig qui vous affichera toutes les options de configuration pour le logiciel porté. Enfin, une autre possibilité est d'exécuter make rmconfig qui supprimera toutes les options sélectionnées et permettra donc de repartir à zéro. Toutes ces options, et bien d'autres, sont détaillées dans la page de manuel ports(7).
Maintenant que vous savez comment installer des logiciels portés, vous vous demandez probablement comment les effacer, juste au cas où vous en installez un et plus tard vous vous apercevez que vous n'avez pas installé le bon logiciel porté. Nous désinstallerons notre exemple précédent (qui était lsof pour ceux d'entre vous qui n'ont pas suivi). Les logiciels portés sont supprimés de la même manière que pour les logiciels pré-compilés (comme décrit dans la section Utiliser le système des logiciels pré-compilés) en utilisant la commande pkg_delete(1):
# pkg_delete lsof-4.57
Tout d'abord, listez les logiciels portés périmés dont une nouvelle version est disponible dans le catalogue des logiciels portés à l'aide de la commande pkg_version(1):
# pkg_version -v
Une fois que vous avez mis à jour le catalogue des logiciels portés, avant de tenter la mise à jour d'un logiciel porté, vous devrez consulter le fichier /usr/ports/UPDATING. Ce fichier décrit les divers problèmes et les étapes supplémentaires que les utilisateurs pourront rencontrer ou devront effectuer lors de la mise à jour un logiciel porté, comme la modification de format de fichiers, le changement des emplacements des fichiers de configuration, ou des incompatibilités avec les versions antérieures.
Si le contenu du fichier UPDATING prime même s'il est en est en contradiction avec des informations présentées ici.
Le logiciel portupgrade a été conçu pour une mise à jour aisée des logiciels portés installés. Il est disponible via le logiciel porté ports-mgmt/portupgrade. Installez-le de la même manière que pour n'importe quel autre logiciel en employant la commande make install clean:
# cd /usr/ports/ports-mgmt/portupgrade # make install clean
Ensuite, parcourez la liste des logiciels installés avec la commande pkgdb -F et corrigez toutes les inconsistances qu'il signale. C'est une bonne idée d'effectuer ce contrôle régulièrement avant chaque mise à jour.
En lançant portupgrade -a, portupgrade mettra à jour tous les logiciels
portés périmés installés sur votre système.
Ajoutez l'indicateur -i si vous voulez être
consulté pour confirmer chaque mise à jour individuelle.
# portupgrade -ai
Si vous désirez mettre à jour qu'une seule application bien
particulière et non pas l'intégralité des applications,
utilisez la commande: portupgrade nom_du_logiciel_porté. Ajoutez l'option
-R si portupgrade doit mettre
à jour en premier lieu tous les logiciels portés
nécessaires à l'application.
# portupgrade -R firefox
Pour utiliser les versions pré-compilées plutôt que les
logiciels portés pour l'installation, utilisez l'option -P. Avec cette option portupgrade
cherche les répertoires locaux listé dans la variable PKG_PATH, ou récupère les paquetages à
partir d'un site distant s'ils ne sont pas trouvés localement. Si les
paquetages ne peuvent pas être trouvés localement ou
récupérés à distance, portupgrade utilisera les logiciels portés. Pour
éviter l'usage des logiciels portés, spécifiez l'option
-PP.
# portupgrade -PP gnome2
Pour juste récupérer les sources (ou les paquetages, si l'option
-P est utilisée) sans compiler ni installer
quelque chose, utilisez -F. Pour plus d'informations
consultez la page de manuel
portupgrade(1).
Portmanager est un autre utilitaire de mise à jour aisée des logiciels portés installés. Il est disponible via le logiciel portés ports-mgmt/portmanager:
# cd /usr/ports/ports-mgmt/portmanager # make install clean
Tous les logiciels portés installés peuvent être mis à jour en utilisant cette simple commande:
# portmanager -u
Vous pouvez ajouter l'option -ui pour être
sollicité pour une confirmation à chaque opération
qu'effectuera Portmanager. Portmanager peut également être employé
pour installer de nouveaux logiciels portés sur le système.
Contrairement à la commande make install clean habituelle, il mettra à jour
toutes les dépendances avant de compiler et d'installer le logiciel
sélectionné.
# portmanager x11/gnome2
Si des problèmes concernant les dépendances du logiciel porté sélectionné apparaissent, vous pouvez utiliser Portmanager pour toutes les recompiler dans le bon ordre. Cette recompilation achevée, le logiciel porté en question peut alors être à son tour recompilé.
# portmanager graphics/gimp -f
Pour plus d'information, consultez la page de manuel de Portmanager.
Portmaster est un autre utilitaire destiné à la mise à jour des logiciels installés. Portmaster a été conçu pour utiliser les outils présents dans le système de “base” (il ne dépend pas d'un autre logiciel porté) et utilise les informations contenues dans le répertoire /var/db/pkg/ pour déterminer quel logiciel doit être mis à jour. Il est disponible à partir du logiciel porté ports-mgmt/portmaster:
# cd /usr/ports/ports-mgmt/portmaster # make install clean
Portmaster répartit les logiciels portés en quatre catégories:
logiciels dits “Root” (pas de dépendance, aucun logiciel n'en dépend);
logiciels dits “Trunk” (pas de dépendance, d'autres logiciels en dépendent);
logiciels dits “Branch” (ont des dépendances, d'autres logiciels en dépendent);
logiciels dits “Leaf” (ont des dépendances, aucun logiciel n'en dépend).
Vous pouvez lister tous les logiciels installés et rechercher les mises
à jour en utilisant l'option -L:
# portmaster -L
===>>> Root ports (No dependencies, not depended on)
===>>> ispell-3.2.06_18
===>>> screen-4.0.3
===>>> New version available: screen-4.0.3_1
===>>> tcpflow-0.21_1
===>>> 7 root ports
...
===>>> Branch ports (Have dependencies, are depended on)
===>>> apache-2.2.3
===>>> New version available: apache-2.2.8
...
===>>> Leaf ports (Have dependencies, not depended on)
===>>> automake-1.9.6_2
===>>> bash-3.1.17
===>>> New version available: bash-3.2.33
...
===>>> 32 leaf ports
===>>> 137 total installed ports
===>>> 83 have new versions available
L'ensemble des logiciels portés installés peut être mis à jour en utilisant cette simple commande:
# portmaster -a
Note : Par défaut Portmaster fera une sauvegarde avant la suppression d'un logiciel porté. Si l'installation de la nouvelle version se passe correctement, Portmaster supprimera la sauvegarde. L'option
-bdemandera à Portmaster de ne pas supprimer automatiquement la sauvegarde. L'ajout de l'option-ilancera Portmaster en mode interactif, vous serez alors sollicité avant la mise à jour de chaque logiciel.
Si vous rencontrez des erreurs lors du processus de mise à jour, vous
pouvez utiliser l'option -f pour mettre à jour
ou recompiler tous les logiciels installés:
# portmaster -af
Vous pouvez également employer Portmaster pour installer de nouveaux logiciels portés en mettant à jour toutes les dépendances avant la compilation et l'installation du nouveau logiciel:
# portmaster shells/bash
Pour plus d'information veuillez consulter la page de manuel portmaster(8).
A la longue, l'utilisation du catalogue des logiciels portés consommera rapidement votre espace disque. Après la compilation et l'installation de logiciels à partir du catalogue des logiciels portés, vous devriez toujours penser à supprimer les répertoires de travail temporaires, work, en utilisant la commande make clean. Vous pouvez balayer l'intégralité du catalogue des logiciels portés pour supprimer tous les répertoires temporaires oubliés précédement, employez alors la commande suivante:
# portsclean -C
Avec le temps, vous accumulerez beaucoup de fichiers sources obsolètes dans le répertoire distfiles. Vous pouvez les supprimer manuellement, ou vous pouvez utiliser la commande suivante pour effacer toutes les sources qui ne correspondent plus à des logiciels portés d'actualité:
# portsclean -D
Ou pour supprimer les fichiers sources ne correspondant à aucun logiciel installé sur votre systèmes.
Note : L'utilitaire portsclean fait partie de la suite portupgrade.
Pensez à supprimer les logiciels portés installés que vous n'utilisez plus. Un outil qui permet d'automatiser cette tâche est disponible via le logiciel porté ports-mgmt/pkg_cutleaves.
Après l'installation d'une nouvelle application vous voudrez normalement lire la documentation qui a pu être également installée, éditer les fichiers de configuration nécessaires, vérifier que l'application est lancée au démarrage (si c'est un daemon), et ainsi de suite.
Les étapes que vous devez suivre pour configurer chaque application seront bien évidemment différentes. Cependant, si vous venez juste d'installer une nouvelle application et que vous vous demandez ``Et maintenant?'' les astuces suivantes pourront vous aider:
Utilisez pkg_info(1) pour déterminer quels fichiers ont été installés et à quel endroit. Par exemple, si vous venez juste d'installer FooPackage version 1.0.0, alors la commande
# pkg_info -L foopackage-1.0.0 | less
affichera tous les fichiers installés par le logiciel pré-compilé. Portez une attention toute particulière aux fichiers dans les répertoires man/, qui seront des pages de manuel, dans les répertoires etc/ , qui seront des fichiers de configuration, et dans doc/ qui seront de la documentation plus complète.
Si vous n'êtes pas sûr de la version de l'application qui vient juste d'être installée, une commande comme
# pkg_info | grep -i foopackage
déterminera tous les logiciels pré-compilés installés qui ont foopackage dans leur nom. Remplacez foopackage dans votre ligne de commande par ce qui convient.
Une fois que vous avez identifié où les pages de manuel de l'application ont été installées, consultez-les en utilisant la commande man(1). De même, jetez un coup d'oeil aux exemples de fichiers de configuration, et toute autre documentation additionnelle qui peut avoir été fournie.
Si l'application a un site web, consultez-le pour de la documentation supplémentaire, des listes de questions fréquemment posées, etc. Si vous n'êtes pas sûr de l'adresse du site web, elle peut être affichée dans le résultat de la commande:
# pkg_info foopackage-1.0.0
La ligne WWW:, si elle est présente, devrait donner l'URL du site web de l'application.
Les logiciels qui doivent être lancés au démarrage (comme les serveurs Internet) installent généralement un exemple de procédure de lancement dans le répertoire /usr/local/etc/rc.d. Vous devriez contrôler si ce fichier est correct et l'éditer ou le renommer si nécessaire. Consultez la section Démarrer des services pour plus d'informations.
Si vous rencontrez un portage qui ne fonctionne pas, il y a certaines choses que vous pouvez faire:
Vérifiez s'il n'y a pas de correctif en attente pour le logiciel porté dans la base des rapports de bogue. Si c'est le cas, il se peut que vous puissiez utiliser le correctif proposé.
Demandez l'aide du responsable du logiciel porté. Tapez la commande make maintainer ou lisez le fichier Makefile pour trouver l'adresse électronique du responsable. Pensez à préciser le nom et la version du logiciel porté (envoyer la ligne $FreeBSD: du fichier Makefile) et les messages d'erreurs quand vous écrivez au responsable.
Note : Certains logiciels portés ne sont pas maintenus par une personne mais par une liste de diffusion. Plusieurs, si ce n'est toutes, les adresses de ces listes ressemblent à
<freebsd-listname@FreeBSD.org>. Veuillez prendre cela en compte en rédigeant vos questions.En particulier, les logiciels portés apparaissant comme maintenus par
<ports@FreeBSD.org>ne sont en fait maintenus par personne. Correctifs et aide, s'ils y en a, provient de la communauté qui est abonnée à cette liste de diffusion. Des volontaires supplémentaires sont toujours les bienvenus!
Si vous n'obtenez pas de réponse, vous pouvez utiliser send-pr(1) pour soumettre un rapport de bogue (consultez Ecrire des rapports de bogue pour FreeBSD).
Corrigez le problème! Le Manuel du développeur de logiciels portés inclut des informations détaillées sur l'infrastructure des logiciels portés vous permettant de corriger le portage éventuellement défectueux ou même soumettre le votre!
Récupérez la version pré-compilée sur un serveur FTP proche de vous. Le catalogue de ``référence'' des logiciels pré-compilés se trouve sur ftp.FreeBSD.org dans le répertoire packages, mais vérifiez d'abord votre miroir local! Il y a globalement plus de chances que cela marche, que d'essayez de compiler à partir des sources, et cela va également beaucoup plus vite. Utilisez le programme pkg_add(1) pour installer le logiciel pré-compilé sur votre système.
Version française de Marc Fonvieille
<blackend@FreeBSD.org>.
FreeBSD utilise X11 pour fournir aux utilisateurs une interface graphique puissante. X11 est une version libre du système X Window qui est implémentée dans Xorg et XFree86 (et d'autres logiciels qui ne seront pas abordés ici). Les versions de FreeBSD jusqu'à FreeBSD 5.2.1-RELEASE utilisent par défaut XFree86, le serveur X11 publié par le projet XFree86. Depuis FreeBSD 5.3-RELEASE, la version officielle par défaut d'X11 a été remplacée par Xorg, le serveur X11 de la fondation X.Org qui est disponible sous une license semblable à celle de FreeBSD. Des serveurs X commerciaux pour FreeBSD sont également disponibles.
Ce chapitre couvrira l'installation et la configuration d'X11 avec en insistant sur Xorg version 7.5.2. Pour des informations sur la configuration d'XFree86 (c'est à dire sur d'anciennes versions de FreeBSD où XFree86 était la distribution X11 par défaut) ou d'anciennes versions de Xorg, il est toujours possible de consulter les versions archivées de ce manuel à l'adresse http://docs.FreeBSD.org/doc/.
Pour plus d'informations sur le matériel vidéo supporté par X11, consultez le site d'Xorg.
Après la lecture de ce chapitre, vous connaîtrez:
Les divers composants du système X Window et comment ils fonctionnent ensemble.
Comment installer et configurer X11.
Comment installer et utiliser différents gestionnaires de fenêtres.
Comment utiliser les polices de caractères TrueType® sous X11.
Comment configurer votre système pour l'utilisation de procédures de connexions graphiques (XDM).
Avant de lire ce chapitre, vous devrez:
Savoir comment installer des logiciels tiers (Chapitre 4).
Utiliser X pour la première fois peut être en quelque sorte un choc pour quelqu'un de familier avec d'autres environnements graphiques, tels que Microsoft Windows ou Mac OS®.
Alors qu'il n'est pas nécessaire de comprendre tout le détail des divers composants de X ni comment ils interagissent entre eux, une certaine connaissance des bases permet de tirer profit des points forts d'X.
X n'est pas le premier système de fenêtrage écrit pour UNIX, mais c'est le plus populaire d'entre eux. L'équipe originelle de développement d'X avait travaillé sur un autre système de fenêtrage avant d'écrire X. Le nom de ce système était “W” (pour “Window” - fenêtre). X était juste la lettre suivante dans l'alphabet romain.
X peut être appelé ``X'', ``Système X Window'', “X11&”, et sous d'autres noms. Il se peut que vous puissiez trouver que nommer X11 “X Windows” peut être offensant pour certaines personnes; consultez X(7) pour un peu plus d'éclairements sur la question.
X a été conçu dès le départ autour de la notion de réseau, et adopte un modèle “client-serveur”.
Dans le modèle X, le ``serveur X'' tourne sur l'ordinateur sur lequel sont branchés le clavier, le moniteur, et la souris. Le serveur est responsable de tâches telles que la gestion de l'affichage, des entrées en provenance du clavier et de la souris, et d'autres périphériques d'entrée ou de sortie (une “tablette” peut être utilisée comme périphérique d'entrée et un vidéo-projecteur peut être un périphérique de sortie alternatif). Chaque application X (comme XTerm, ou Netscape) est un ``client''. Un client envoie des messages au serveur comme ``Dessines une fenêtre aux coordonnées suivantes'', et le serveur envoie au client des messages du type ``L'utilisateur vient de cliquer sur le bouton OK''.
Chez soi ou dans un petit bureau, le serveur X et les clients X tourneront presque toujours sur le même ordinateur. Cependant, il est parfaitement possible de faire tourner le serveur X sur un ordinateur de bureau moins puissant, et les applications X (les clients) sur, par exemple, la machine puissante et chère du service. Dans ce scénario la communication entre le client X et le serveur se fera par l'intermédiaire du réseau.
Cela jette le trouble chez certaines personnes, parce que la technologie X est exactement le contraire de ce à quoi ils s'attendent. Ils s'attendent à ce que le ``serveur X'' soit la grosse machine puissante au fond du couloir, et le ``client X'' la machine sur leur bureau.
Il est important de se souvenir que le serveur X est la machine avec le moniteur et le clavier, et les clients X sont les programmes qui affichent les fenêtres.
Il n'y a rien dans le protocole qui force les machines clientes et serveurs d'utiliser le même système d'exploitation, ou même de tourner sur le même type d'ordinateur. Il est certainement possible de faire fonctionner un serveur X sur Microsoft Windows ou Mac OS d'Apple, et il existe diverses applications gratuites et commerciales qui font exactement cela.
La philosophie de conception d'X est comme celle d'UNIX, ``des outils, pas de contraintes''. Cela signifie qu'X n'essaye pas de dicter comment une tâche doit être accomplie. A la place, les outils sont fournis à l'utilisateur, et c'est à lui de décider comment utiliser ces outils.
Cette philosophie va jusqu'à pousser X à ne pas contrôler l'aspect des fenêtres à l'écran, comment les déplacer avec la souris, quelles combinaisons de touches devraient être utilisées pour passer de l'une à l'autre (i.e., Alt+Tab, dans le cas de Microsoft Windows), comment devraient être les barres de titre de chaque fenêtres, qu'elles aient ou pas des boutons de fermetures, etc...
Au lieu de cela, X délègue cette responsabilité à une application appelée un ``Window Manager'' - gestionnaire de fenêtres. Il existe des douzaines de gestionnaires de fenêtres disponibles pour X: AfterStep, Blackbox, ctwm, Enlightenment, fvwm, Sawfish, twm, Window Maker, et bien plus. Chacun de ces gestionnaires de fenêtres fournit une apparence et une prise en main différente; certains d'entre eux supportent les ``bureaux virtuels''; d'autres permettent de personnaliser les combinaisons de touches de gestion du bureau; certains ont un bouton ``Démarrer'' ou quelque chose d'identique; certains possèdent un système de ``thèmes'', permettant un changement complet d'apparence et de prise en main en sélectionnant un nouveau thème. Ces gestionnaires de fenêtres, et bien plus, sont disponibles dans la catégorie x11-wm du catalogue des logiciels portés.
De plus, les environnements de travail KDE et GNOME ont leur propre gestionnaire de fenêtres qui s'intègre avec l'environnement.
Chaque gestionnaire de fenêtres possède également un mécanisme de configuration propre; certains demandent un fichier de configuration écrit à la main, d'autres disposent d'outils graphiques pour la plupart des tâches de configuration; et au moins un (Sawfish) utilise un fichier de configuration écrit dans un dialecte du langage LISP.
Politique de focus : Une autre fonction dont est responsable le gestionnaire de fenêtre est la ``politique de focus'' de la souris. Chaque système de fenêtrage a besoin de méthodes de choix de la fenêtre qui doit recevoir les frappes au clavier, et devrait également indiquer visiblement quelle fenêtre est active.
Une politique de focus commune est appelée ``click-to-focus'' (cliquer pour obtenir le focus). C'est le mode utilisé sous Microsoft Windows, dans lequel une fenêtre devient active quand elle reçoit un clic de la souris.
X ne supporte aucune politique de focus particulière. Au lieu de cela, le gestionnaire de fenêtres contrôle quelle fenêtre a le focus à n'importe quel moment. Différents gestionnaires de fenêtres supporteront différentes méthodes de focus. Tous supportent le clic pour obtenir le focus, une grande majorité supporte d'autres méthodes.
Les politiques de focus les plus populaires sont:
- ``focus-follows-mouse'' - le focus suit la souris
La fenêtre qui est sous le pointeur de la souris est la fenêtre qui a le focus. Ce n'est pas nécessairement la fenêtre qui est au-dessus des autres. Le focus est modifié en pointant une autre fenêtre, là il n'y pas besoin de cliquer sur la fenêtre.
- ``sloppy-focus'' - focus relâché
Cette politique est version dérivée du ``focus-follows-mouse''. Avec ``focus-follows-mouse'', si la souris est déplacée sur la fenêtre racine (ou fond de l'écran) alors aucune fenêtre n'a le focus, et les frappes au clavier sont tout simplement perdues. Avec le focus relâché, le focus n'est modifié que si le pointeur passe sur une nouvelle fenêtre, et non pas quand il quitte la fenêtre actuelle.
- ``click-to-focus'' - cliquer pour obtenir le focus
La fenêtre active est sélectionnée par clic de la souris. La fenêtre peut être ramenée au premier plan. Toutes les frappes au clavier seront désormais dirigées vers cette fenêtre, même si le curseur est déplacé vers une autre fenêtre.
De nombreux gestionnaires de fenêtres supportent d'autres politiques, comme des variations de celles-ci. Assurez-vous de consulter la documentation du gestionnaire de fenêtres.
L'approche d'X d'offrir uniquement des outils s'étend aux éléments graphiques que l'on voit à l'écran dans chaque application.
``Widget'' est un terme pour désigner tous les éléments de l'interface utilisateur qui peuvent être cliqués ou manipulés d'une façon ou d'une autre; boutons, boîtes à cocher, boutons radio, icônes, listes, etc... Microsoft Windows appelle ces derniers des ``contrôles''.
Microsoft Windows et Mac OS d'Apple ont tous deux une politique très rigide au niveaux des éléments graphiques. Les développeurs d'applications sont supposés s'assurer que leurs applications partagent une apparence et une prise en main commune. Avec X, on n'a pas considéré comme sensible d'exiger un style graphique particulier, ou ensemble d'éléments graphiques à respecter.
En conséquence, ne vous attendez pas à ce que les applications X aient une apparence et une prise en main communes. Il a plusieurs ensembles populaires d'éléments graphiques et leurs variations, dont l'ensemble d'éléments original Athena du MIT, Motif® (d'après lequel fût modelé l'ensemble d'éléments graphiques de Microsoft Windows, tous les bords biseautés et trois nuances de gris), OpenLook, et d'autres.
La plupart des nouvelles applications X, aujourd'hui utiliseront un ensemble d'éléments graphiques à l'apparence moderne, soit Qt, utilisé par KDE, soit GTK+, utilisé par le projet GNOME. A cet égard, il y a une certaine convergence dans l'apparence et la prise en main de l'environnement de travail UNIX, qui facilite certainement les choses pour l'utilisateur débutant.
Xorg est l'implémentation par défaut d'X11 sous FreeBSD. Xorg est le serveur X de l'implémentation open source du système X Window publiée par la fondation X.Org. Xorg est basée sur le code de XFree86 4.4RC2 et d'X11R6.6. la version d'Xorg actuellement disponible dans le catalogue des logiciels portés de FreeBSD est la 7.5.2.
Pour compiler et installer Xorg à partir du catalogue des logiciels portés:
# cd /usr/ports/x11/xorg # make install clean
Note : Pour compiler Xorg dans son intégralité, assurez-vous de disposer d'au moins 4 Go d'espace libre.
D'autre part, X11 peut être directement installée à partir de paquetages. Une version pré-compilée à utiliser avec l'outil pkg_add(1) est également disponible pour X11. Quand la fonction de récupération à distance de pkg_add(1) est utilisée, le numéro de version doit être retiré. pkg_add(1) téléchargera automatiquement la toute dernière version de l'application.
Donc pour récupérer et installer la version pré-compilée d'Xorg, tapez simplement:
# pkg_add -r xorg
Note : Les exemples ci-dessus installeront la distribution complète d'X11 comprenant les serveurs, les clients, les polices de caractères, etc. Des paquetages et des logiciels portés séparés pour les différentes parties d'X11 sont également disponibles.
Le reste de ce chapitre expliquera comment configurer X11, et comment installer un environnement de travail productif.
Avant de configurer X11, les informations sur le système cible sont nécessaires:
Caractéristiques du moniteur
Circuit graphique présent sur la carte vidéo
Quantité de mémoire présente sur la carte vidéo
Les caractéristiques du moniteur sont utilisées par X11 pour déterminer la résolution et le taux de rafraîchissement à utiliser. Ces caractéristiques sont généralement obtenues sur la documentation fournie avec le moniteur ou sur le site web du constructeur. Il y a deux intervalles de nombres nécessaires, les fréquences de balayage horizontale et les fréquences de synchronisation verticale.
La circuit graphique présent sur la carte vidéo définit quel pilote de périphérique X11 utilise pour communiquer avec le matériel graphique. Avec la plupart des circuits, cela peut être détecté automatiquement, mais il est toujours utile de connaître le type dans le cas où la détection automatique ne fonctionnerait pas correctement.
La quantité de mémoire graphique sur la carte vidéo détermine la résolution et la profondeur de couleurs qui pourront être utilisées. C'est important de le savoir afin que l'utilisateur soit au courant des limitations du système.
Avec la version 7.3, Xorg peut, la plupart du temps, fonctionner sans aucun fichier de configuration en tapant simplement à l'invite:
% startx
Si cela ne fonctionne pas, ou si la configuration par défaut n'est pas satisfaisante, X11 peut être configuré manuellement. La configuration d'X11 est un processus en plusieurs étapes. La première étape est de générer un fichier de configuration. En tant que super utilisateur, lancez simplement:
# Xorg -configure
Cela générera, dans le répertoire /root, un squelette de fichier de configuration pour X11 appelé xorg.conf.new (que vous utilisiez su(1) ou ouvrez directement une session, cela affecte la variable d'environnement $HOME du super-utilisateur, et donc le répertoire utilisé pour écrire ce fichier). Le programme X11 tentera de sonder le matériel graphique présent sur le système et écrira un fichier de configuration pour charger les pilotes de périphériques corrects pour le matériel détecté sur le système cible.
L'étape suivante est de tester la configuration existante pour vérifier que Xorg peut fonctionner avec le matériel graphique présent sur le système cible. Pour effectuer ce test, lancez:
# Xorg -config xorg.conf.new
Si une grille grise et noire et un curseur de souris en forme de X apparaissent, la configuration fonctionne correctement. Pour quitter le test, appuyez simplement sur les touches Ctrl+Alt+Backspace simultanément.
Note : Si la souris ne fonctionne pas, vous devrez, avant toute autre chose, la configurer. Consultez la Section 2.10.10 dans le chapitre sur l'installation de FreeBSD.
Ensuite, optimisez le fichier de configuration xorg.conf.new selon vos goûts. Ouvrez le fichier dans un éditeur de texte comme emacs(1) ou ee(1). Tout d'abord, ajoutez les fréquences pour le moniteur du système cible. Celles-ci sont généralement exprimées sous la forme de fréquences de synchronisation horizontale et verticale. Ces valeurs sont ajoutées dans le fichier xorg.conf.new dans la section "Monitor":
Section "Monitor"
Identifier "Monitor0"
VendorName "Monitor Vendor"
ModelName "Monitor Model"
HorizSync 30-107
VertRefresh 48-120
EndSection
Les termes HorizSync et VertRefresh peuvent être absents du fichier de configuration. Si c'est le cas, ils doivent être ajoutés, avec les fréquences horizontales correctes placées après le terme HorizSync et les fréquences verticales après le terme VertRefresh. Dans l'exemple ci-dessus les fréquences du moniteur ont été entrées.
X autorise l'utilisation des caractéristiques DMPS (Energy Star) avec les moniteurs qui en sont capables. Le programme xset(1) contrôle les délais et peut forcer la mise en veille, l'arrêt, ou les modes d'extinction. Si vous souhaitez activer les fonctions DMPS de votre moniteur, vous devez ajouter la ligne suivante dans la section concernant le moniteur:
Option "DPMS"
Pendant que le fichier de configuration xorg.conf.new est toujours ouvert dans un éditeur, sélectionnez la résolution par défaut et la profondeur de couleurs désirée. Cela est défini dans la section "Screen":
Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 24
Modes "1024x768"
EndSubSection
EndSection
Le terme DefaultDepth indique la profondeur de couleurs
utilisée par défaut. Cette valeur peut être outrepassée
avec l'option -depth en ligne de la commande Xorg(1). Le
terme Modes indique la résolution à utiliser
pour la profondeur de couleurs donnée. Notez que seuls les modes
standard VESA sont supportés comme définis par le matériel
graphique du système cible. Dans l'exemple ci-dessus, la profondeur de
couleurs par défaut est de vingt quatre bits par pixel. A cette profondeur de
couleurs, la résolution acceptée est de 1024 par 768.
Pour fonctionner à une résolution de mille vingt quatre pixels par
sept cent soixante huit pixels à vingt quatre bits par pixel, ajoutez le
terme DefaultDepth avec la valeur vingt quatre, et
ajoutez à la sous-section "Display" avec la
valeur Depth désirée le terme Modes avec la résolution souhaitée par
l'utilisateur. Notez que seuls les modes standard VESA sont supportés
comme définis par le matériel graphique du système cible.
Enfin, sauvez le fichier de configuration et testez-le en utilisant la procédure de test donnée ci-dessus.
Note : Un des outils disponibles pour vous aider en cas de problèmes sont les fichiers journaux d'X11, qui contiennent des informations sur chaque périphérique auquel le serveur X11 s'attache. Les noms des fichiers journaux d'Xorg suivent la forme /var/log/Xorg.0.log. Le nom exact du fichier peut aller de Xorg.0.log à Xorg.8.log et ainsi de suite.
Si tout se passe bien, le fichier de configuration doit être installé à un emplacement commun où Xorg(1) pourra le trouver. C'est typiquement soit /etc/X11/xorg.conf ou /usr/local/etc/X11/xorg.conf.
# cp xorg.conf.new /etc/X11/xorg.conf
La configuration de X11 est maintenant achevée. Xorg peut être maintenant lancé avec l'utilitaire startx(1). Le serveur X11 peut également être lancé à l'aide de xdm(1).
Note : Il existe également un outil de configuration graphique, xorgcfg(1), qui est fourni avec la distribution X11. Il permet de définir intéractivement votre configuration en sélectionnant les pilotes de périphériques et les paramètres adéquats. Ce programme peut être invoqué à partir de la console, en tapant la commande xorgcfg -textmode. Pour plus de détails, consultez la page de manuel d' xorgcfg(1).
Alternativement, il existe également un outil appelé xorgconfig(1). Ce programme est un utilitaire en mode console moins convivial, mais qui peut fonctionner dans les situations où les autres ont échoué.
La configuration avec les circuits intégrés graphiques Intel i810 nécessite agpgart l'interface de programmation AGP pour X11 afin de piloter la carte. Consultez la page de manuel du pilote agp(4) pour plus d'information.
Cela permettra la configuration de ce matériel comme n'importe quelle autre carte graphique. Notez que sur les systèmes sans le pilote agp(4) compilé dans le noyau, tenter de charger le module à l'aide de kldload(8) ne fonctionnera pas. Ce pilote doit être dans le noyau au démarrage soit compilé dans le noyau soit en utilisant /boot/loader.conf.
Cette section nécessite une maîtrise des configurations avancées. Si les tentatives d'utilisation des outils de configuration standards précédents n'ont pas donné lieu à une configuration fonctionnelle, il y a cependant suffisamment d'information dans les fichiers journaux pour parvenir à faire fonctionner votre équipement. L'utilisation d'un éditeur de texte sera également nécessaire.
Les écrans larges actuellement disponibles (WSXGA, WSXGA+, WUXGA, WXGA, WXGA+, et.al.) supportent les formats 16:10 et 10:9 ainsi que d'autres formats pouvant être problèmatiques. Les résolutions d'écran courantes pour les formats 16:10 sont:
2560x1600
1920x1200
1680x1050
1440x900
1280x800
Dans certains cas, la configuration nécessitera de simplement ajouter une de ces résolutions comme Mode possible dans la Section "Screen":
Section "Screen" Identifier "Screen0" Device "Card0" Monitor "Monitor0" DefaultDepth 24 SubSection "Display" Viewport 0 0 Depth 24 Modes "1680x1050" EndSubSection EndSection
Xorg est suffisamment intelligent pour obtenir auprès de l'écran les informations sur la résolution par l'intermédiaire des données I2C/DDC, de cette manière il connaît les fréquences et résolutions maximales que peut supporter le moniteur.
Si ces ModeLines ne sont pas présentes dans les pilotes, on pourra toujours aider Xorg dans ce sens. En examinant le contenu du fichier /var/log/Xorg.0.log, on peut en extraire suffisamment d'information pour créer manuellement une ModeLine qui fonctionnera. Recherchez les lignes du type:
(II) MGA(0): Supported additional Video Mode: (II) MGA(0): clock: 146.2 MHz Image Size: 433 x 271 mm (II) MGA(0): h_active: 1680 h_sync: 1784 h_sync_end 1960 h_blank_end 2240 h_border: 0 (II) MGA(0): v_active: 1050 v_sync: 1053 v_sync_end 1059 v_blanking: 1089 v_border: 0 (II) MGA(0): Ranges: V min: 48 V max: 85 Hz, H min: 30 H max: 94 kHz, PixClock max 170 MHz
Ce type de données est appelée information EDID. La création d'une ModeLine à partir de ces informations consiste juste à placer les différentes valeurs dans le bon ordre:
ModeLine <name> <clock> <4 horiz. timings> <4 vert. timings>
Ainsi la ligne ModeLine de la Section "Monitor" pour cet exemple ressemblera à ceci:
Section "Monitor" Identifier "Monitor1" VendorName "Bigname" ModelName "BestModel" ModeLine "1680x1050" 146.2 1680 1784 1960 2240 1050 1053 1059 1089 Option "DPMS" EndSection
Ces modifications effectuées, X devrait maintenant se lancer sans problème sur votre nouvel écran large.
Les polices de caractères livrées par défaut avec X11 sont loin d'être idéales pour des applications de type publication. Les grandes polices utilisées pour les présentations présentent un aspect en escalier et peu professionnel, et les petites polices sous Netscape sont presque complètement illisibles. Cependant, il existe de nombreuses polices Type1 (PostScript®) gratuites, de hautes qualités qui peuvent être aisément utilisées avec X11. Par exemple, la collection de polices de caractères URW (x11-fonts/urwfonts) comprend une version haute qualité des polices de caractères standards type1 (Times Roman®, Helvetica®, Palatino® et autres). La collection Freefonts (x11-fonts/freefonts) comprend beaucoup plus de polices de caractères, mais la plupart d'entre elles sont destinées à être utilisées avec des logiciels graphiques comme The Gimp, et ne sont pas suffisamment complètes pour servir de polices de caractères d'affichage. De plus X11 peut être configuré pour utiliser les polices de caractères TrueType avec un minimum d'effort. Pour plus de détails à ce sujet, consultez la page de manuel X(7) ou la section sur les polices de caractères TrueType.
Pour installer les collections de polices de caractères Type1 précédentes à partir du catalogue des logiciels portés, lancez les commandes suivantes:
# cd /usr/ports/x11-fonts/urwfonts # make install clean
Et de même pour la collection Freefont ou d'autres. Pour que le serveur X détecte ces polices, ajoutez une ligne appropriée au fichier de configuration du serveur X (/etc/X11/xorg.conf), du type:
FontPath "/usr/local/lib/X11/fonts/URW/"
Autre possibilité, en ligne de commande dans une session X lancez:
% xset fp+ /usr/local/lib/X11/fonts/URW % xset fp rehash
Cela fonctionnera mais les effets seront perdus quand la session X sera fermée, à moins de l'ajouter dans le fichier de démarrage (~/.xinitrc pour une session startx classique, ou dans ~/.xsession quand on s'attache au système par l'intermédiaire d'un gestionnaire de session graphique comme XDM). Une troisième méthode est d'utiliser le nouveau fichier /usr/local/etc/fonts/local.conf: voir la section sur l'anticrénelage.
Xorg dispose d'un support intégré pour le rendu des polices TrueType. Il y a deux différents modules qui peuvent activer cette fonctionnalité. Le module freetype est utilisé dans cet exemple parce qu'il est plus compatible avec les autres moteurs de rendu des polices de caractères. Pour activer le module freetype ajoutez juste la ligne suivante dans la section "Module" du fichier /etc/X11/xorg.conf.
Load "freetype"
Maintenant créez un répertoire pour les polices TrueType (par exemple /usr/local/lib/X11/fonts/TrueType) et copiez toutes les polices TrueType dans ce répertoire. Gardez à l'esprit que les polices TrueType ne peuvent être directement prises d'un Macintosh; elles doivent être dans un format UNIX/MS-DOS/Windows pour être utilisées sous X11. Une fois les fichiers copiés dans ce répertoire, utilisez ttmkfdir pour créer un fichier fonts.dir, de façon à ce que le moteur d'affichage des polices d'X sache que de nouveaux fichiers ont été installés. ttmkfdir est disponible dans le catalogue des logiciels portés de FreeBSD sous x11-fonts/ttmkfdir.
# cd /usr/local/lib/X11/fonts/TrueType # ttmkfdir -o fonts.dir
Maintenant ajoutez le répertoire des polices TrueType au chemin des polices de caractères. Cela est identique à ce qui est décrit ci-dessus pour les polices Type1, c'est à dire, utiliser
% xset fp+ /usr/local/lib/X11/fonts/TrueType % xset fp rehash
ou ajouter une ligne FontPath au fichier xorg.conf.
Voilà. Désormais Netscape, Gimp, StarOffice™, et toutes les autres applications X devraient maintenant reconnaître les polices de caractères TrueType. Les polices très petites (comme le texte de page web visualisé sur un écran haute résolution) et les très grandes polices (dans StarOffice) auront un rendu bien meilleur maintenant.
L'anticrénelage est disponible sous X11 depuis XFree86 4.0.2. Cependant, la configuration des polices de caractères était relativement lourde avant l'arrivée d'XFree86 4.3.0. Depuis XFree86 4.3.0, toutes les polices sous X11 se trouvant dans les répertoires /usr/local/lib/X11/fonts/ et ~/.fonts/ sont automatiquement disponibles pour l'anticrénelage avec les applications compatibles Xft. Toutes les applications ne sont pas compatibles Xft, mais de nombreuses ont été dotées du support Xft. Par exemple, les applications utilisant Qt 2.3 et versions suivantes (la boîte à outils pour l'environnement de travail KDE), GTK+ 2.0 et suivantes (la boîte à outils de l'environnement de travail GNOME), et Mozilla 1.2 et versions suivantes.
Afin de contrôler quelles polices de caractères sont anticrénelées, ou pour configurer les propriétés de l'anticrénelage, créez (ou éditez, s'il existe déjà) le fichier /usr/local/etc/fonts/local.conf. Plusieurs caractéristiques avancées du système de fontes Xft peuvent être ajustées par l'intermédiaire de ce fichier; cette section ne décrit que des possibilités simples. Pour plus de détails, consultez la page de manuel fonts-conf(5).
Ce fichier doit être dans le format XML. Faites attention à la casse des caractères, et assurez-vous que toutes les balises sont correctement fermées. Le fichier débute avec l'entête XML classique suivie par une définition DOCTYPE, puis de la balise <fontconfig>:
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
Comme précisé précédemment, l'ensemble des polices de caractères du répertoire /usr/local/lib/X11/fonts/ comme du répertoire ~/.fonts/ sont disponibles pour les applications compatibles Xft. Si vous désirez ajouter un autre répertoire en dehors des ces deux là, ajoutez une ligne similaire à la suivante au fichier /usr/local/etc/fonts/local.conf:
<dir>/chemin/vers/mes/fontes</dir>
Après l'ajout de nouvelles fontes, et tout particulièrement de nouveaux répertoires de polices, vous devrez exécuter la commande suivante pour reconstituer le cache des polices de caractères:
# fc-cache -f
L'anticrénelage rend les bords légèrement flous, ce qui rend le texte très petit plus lisible et enlève l'effet ``d'escalier'' des grands textes, mais peut provoquer une fatigue visuelle si c'est appliqué au texte normal. Pour exclure les tailles de polices inférieures à 14 points de l'anticrénelage, ajoutez ces lignes:
<match target="font"> <test name="size" compare="less"> <double>14</double> </test> <edit name="antialias" mode="assign"> <bool>false</bool> </edit> </match> <match target="font"> <test name="pixelsize" compare="less" qual="any"> <double>14</double> </test> <edit mode="assign" name="antialias"> <bool>false</bool> </edit> </match>
L'espacement pour certaines polices de caractères à chasse fixe peut également être inapproprié avec l'anticrénelage. Cela semble être un problème avec KDE, en particulier. Une solution possible pour cela est de forcer l'espacement pour de telles polices de caractères à 100. Ajoutez les lignes suivantes:
<match target="pattern" name="family"> <test qual="any" name="family"> <string>fixed</string> </test> <edit name="family" mode="assign"> <string>mono</string> </edit> </match> <match target="pattern" name="family"> <test qual="any" name="family"> <string>console</string> </test> <edit name="family" mode="assign"> <string>mono</string> </edit> </match>
(ceci ajoute un alias "mono" pour les autres noms communs des polices de caractères fixes), puis ajoutez:
<match target="pattern" name="family"> <test qual="any" name="family"> <string>mono</string> </test> <edit name="spacing" mode="assign"> <int>100</int> </edit> </match>
Certaines polices de caractères, comme Helvetica, peuvent présenter des problèmes lors de l'anticrénelage. Généralement cela se manifeste par l'impression que la fonte semble coupée en deux verticalement. Au pire cela peut provoquer des crashs avec certaines application comme Mozilla. Pour éviter cela, pensez à ajouter ce qui suit au fichier local.conf:
<match target="pattern" name="family"> <test qual="any" name="family"> <string>Helvetica</string> </test> <edit name="family" mode="assign"> <string>sans-serif</string> </edit> </match>
Une fois l'édition de local.conf achevée, assurez-vous que le fichier se termine par la balise </fontconfig>. Si ce n'est pas le cas, tous vos changements seront ignorés.
L'ensemble de polices de caractères fourni par défaut avec X11 n'est pas très adapté pour l'anticrénelage. Un bien meilleur ensemble de fontes peut être trouvé dans le catalogue des logiciels portés: x11-fonts/bitstream-vera. Ce logiciel installera un fichier /usr/local/etc/fonts/local.conf si ce dernier n'existe pas déjà. Si le fichier existe, le logiciel porté créera un fichier nommé /usr/local/etc/fonts/local.conf-vera. Il fusionnera le contenu de ce fichier dans /usr/local/etc/fonts/local.conf, et les polices de caractères Bitstream remplaceront automatiquement les polices avec empattement (serif), sans empattement (sans-serif) et à chasse fixe d'X11.
Et enfin, les utilisateurs peuvent ajouter leurs propres paramètres par l'intermédiaire de leur fichier .fonts.conf. Pour cela, chaque utilisateur devrait créer un fichier ~/.fonts.conf. Ce fichier doit également être écrit en XML.
Un dernier point: avec un écran LCD, un échantillonnage ``sub-pixel'' peut être désiré. Fondamentalement, ceci traite les composantes rouge, verte et bleu séparément (horizontalement séparées) pour améliorer la résolution horizontale; les résultats peuvent être dramatiques. Pour activer cela, ajoutez quelque part dans le fichier local.conf les lignes:
<match target="font">
<test qual="all" name="rgba">
<const>unknown</const>
</test>
<edit name="rgba" mode="assign">
<const>rgb</const>
</edit>
</match>
Note : En fonction de type d'écran, le terme ``rgb'' pourra devoir être changé pour ``bgr'', ``vrgb'' ou ``vbgr'': expérimentez pour définir lequel fonctionne le mieux.
L'anticrénelage devrait être activé au prochain lancement du serveur X. Cependant, notez que les applications doivent savoir comment l'utiliser. A l'heure actuelle, le ``toolkit'' Qt le supporte, donc l'intégralité de l'environnement KDE peut utiliser des polices anticrénelées. GTK+ et GNOME peuvent également faire usage de l'anticrénelage via le système “Font” (voir la Section 5.7.1.3 pour plus de détails). Par défaut, Mozilla 1.2 et versions suivantes utiliseront automatiquement l'anticrénelage. Pour désactiver cette caractéristique, recompilez Mozilla avec le paramètre -DWITHOUT_XFT.
Le gestionnaire de procédures de connexions graphiques - ``X Display Manager'' (XDM) est une partie optionnelle du système X Window qui est utilisée pour la gestion des procédures de connexion au système. C'est utile dans plusieurs types de situations, dont les ``Terminaux X'' minimaux, et les serveurs X d'affichage de grands réseaux. Comme le système X Window est indépendant du type de réseau et de protocole, il existe une large variété de configurations possibles pour faire fonctionner des clients et des serveurs X sur différentes machines connectées entre elles par un réseau. XDM fournit une interface graphique pour sélectionner à quel serveur d'affichage se connecter, et entrer des informations d'autorisation comme l'ensemble identifiant et mot de passe.
Il faut voir XDM comme fournissant les mêmes fonctionnalités à l'utilisateur que l'utilitaire getty(8) (voir la Section 25.3.2 pour plus de détails). C'est à dire, qu'il exécute les ouvertures de session sur le système sur lequel on se connecte et lance alors une session au nom de l'utilisateur (généralement un gestionnaire de fenêtres pour X). XDM attend alors que le programme se termine, signalant que l'utilisateur en a terminé et devrait être déconnecté du système. A ce moment, XDM peut afficher les écrans d'invite d'ouverture de session et de sélection de serveur pour le prochain utilisateur.
Le ``daemon'' d'XDM est /usr/local/bin/xdm. Ce programme peut être lancé à n'importe quel moment en tant que root et il s'occupera de la gestion d'X sur la machine locale. Si XDM doit être exécuté à chaque démarrage de la machine, une manière pratique de le faire est d'ajouter une entrée dans /etc/ttys. Pour plus d'informations sur le format et l'utilisation de ce fichier, consultez la Section 25.3.2.1. Il existe une ligne dans le fichier /etc/ttys de défaut pour exécuter le ``daemon'' XDM sur un terminal virtuel:
ttyv8 "/usr/local/bin/xdm -nodaemon" xterm off secure
Par défaut cette entrée est désactivée; afin de la réactiver modifiez le cinquième champ de off à on et relancez init(8) en utilisant les indications de la Section 25.3.2.2. Le premier champ, le nom du terminal que ce programme gérera, est ttyv8. Cela signifie que XDM démarrera sur le neuvième terminal virtuel.
Le répertoire de configuration d'XDM est situé dans /usr/local/lib/X11/xdm. Dans ce répertoire il y a de nombreux fichiers utilisés pour modifier le comportement et l'apparence d'XDM. Généralement les fichiers suivants seront présents:
| Fichier | Description |
|---|---|
| Xaccess | Ensemble de règles d'autorisation du client. |
| Xresources | Fichier des ressources X par défaut. |
| Xservers | Liste des écrans distants et locaux à gérer. |
| Xsession | Procédure d'ouverture de session par défaut. |
| Xsetup_* | Procédures utilisées pour exécuter des applications avant l'interface d'ouverture de session. |
| xdm-config | Configuration globale pour tous les affichages utilisants cette machine. |
| xdm-errors | Erreurs générées par le programme serveur. |
| xdm-pid | L'identifiant du processus exécutant actuellement XDM. |
Dans ce répertoire se trouvent également quelques procédures et programmes utilisés pour configurer l'environnement quand XDM fonctionne. L'objet de chacun de ces fichiers sera brièvement décrit. La syntaxe exacte et l'utilisation de tous ces fichiers sont décrites dans la page de manuel xdm(1).
La configuration par défaut est une simple fenêtre rectangulaire d'ouverture de session avec le nom de la machine hôte affiché en haut dans une grande police de caractères et avec des invites ``Login:'' et ``Password:'' en-dessous. C'est un bon point de départ pour modifier l'apparence et la prise en main des écrans XDM.
Le protocole utilisé pour se connecter à des écrans contrôlés par XDM est appelé le ``X Display Manager Connection Protocol'' (XDMCP). Ce fichier est un ensemble de règles pour contrôler les connexions XDMCP à partir de machines distantes. Il est ignoré à moins que le fichier xdm-config ne soit modifié pour accepter les connexions distantes. Par défaut, il n'autorise pas ces connexions.
C'est un fichier de paramètres par défaut pour la sélection du serveur et des écrans d'ouverture de sessions. C'est l'endroit où l'apparence du programme d'ouverture de session peut être modifié. Le format est identique au fichier de paramètres par défaut des applications décrit dans la documentation d'XFree86.
C'est une liste de choix des serveurs distants que l'écran de sélection devrait fournir.
C'est la procédure par défaut à exécuter par XDM après qu'un utilisateur ait ouvert une session. Normalement chaque utilisateur disposera d'une procédure de session dans ~/.xsession qui sera utilisée en lieu et place du fichier par défaut.
Cela sera exécuté automatiquement avant d'afficher les interfaces de sélection et d'ouverture de session. Il existe une procédure pour chaque écran utilisé, nommée Xsetup_ suivie par le numéro de l'écran local (par exemple Xsetup_0). Généralement ces procédures exécutent un ou deux programmes en tâche de fond comme xconsole.
Ce dernier contient les paramètres sous la forme de paramètres par défaut qui sont applicables à chaque écran que l'installation gère.
Ce dernier contient les messages de sortie du serveur X qu'XDM essaye d'exécuter. Si un terminal qu'XDM essaye de démarrer se bloque pour quelque raison, c'est le bon endroit pour chercher les messages d'erreur. Ces messages sont également écrits dans le fichier ~/.xsession-errors de l'utilisateur à chaque session.
Afin de permettre aux autres clients de se connecter au serveur gérant l'affichage, vous devez éditer les règles de contrôle d'accès, et activez l'auditeur de demandes de connexion. Par défaut ces règles sont sur des valeurs conservatrices. Pour faire écouter à XDM les demandes de connexion, tout d'abord commentez une ligne du fichier xdm-config:
! SECURITY: do not listen for XDMCP or Chooser requests ! Comment out this line if you want to manage X terminals with xdm DisplayManager.requestPort: 0
et ensuite relancez XDM. Rappelez vous que les commentaires dans des fichiers de paramètres par défaut d'applications débutent avec un caractère ``!'', et non pas par l'habituel ``#''. Un contrôle d'accès plus strict peut être désiré -- consultez les lignes d'exemple dans Xaccess, et référez-vous à la page de manuel xdm(1) pour plus d'information.
Plusieurs remplacements pour le programme XDM de défaut existent. L'un d'eux, KDM (fourni avec KDE) est décrit plus loin dans son propre chapitre. KDM offre de nombreuses améliorations visuelles, ainsi que la fonction permettant aux utilisateurs de sélectionner leur gestionnaire de fenêtres au moment d'ouvrir la session.
Cette section décrit les différents environnements de travail disponibles pour X sous FreeBSD. Le terme d'``environnement de travail'' regroupe tout depuis le simple gestionnaire de fenêtres à la suite complète d'applications de bureau, comme KDE ou GNOME.
GNOME est un environnement de travail convivial qui permet aux utilisateurs d'utiliser et de configurer facilement leur ordinateur. GNOME comprend un panneau - ``panel'' (pour lancer des applications et afficher des états), un bureau (où les données et les applications peuvent prendre place), un ensemble d'outils standards de bureau et d'applications, et un ensemble de conventions qui rendent aisée la coopération entre application et leur cohérence. Les utilisateurs d'autres systèmes d'exploitation ou environnement devraient se sentir en terrain de connaissance en utilisant le puissant environnement graphique que fournit GNOME. Plus d'information concernant GNOME sous FreeBSD peut être trouvé sur le site du Projet FreeBSD GNOME. Le site contient également des FAQs très complètes sur l'installation, la configuration, et l'administration de GNOME.
Ce logiciel peut être facilement installé à partir d'une version pré-compilée ou du catalogue des logiciels portés:
Pour installer l'ensemble de logiciels pré-compilés GNOME à partir du réseau, tapez simplement:
# pkg_add -r gnome2
Pour compiler GNOME à partir des sources, utilisez le logiciel porté:
# cd /usr/ports/x11/gnome2 # make install clean
Une fois que GNOME est installé, on doit signaler au serveur X d'exécuter GNOME à la place du gestionnaire de fenêtre par défaut.
La manière la plus simple de lancer GNOME est d'utiliser GDM, le gestionnaire d'affichage de GNOME. GDM, qui est installé par défaut comme élément de l'environnement de travail GNOME (mais qui est désactivé par défaut), peut être activé en ajoutant la ligne gdm_enable="YES" au fichier /etc/rc.conf. Une fois que vous avez redémarré le système, GNOME sera lancé automatiquement dès que vous ouvrirez une session -- aucune autre configuration n'est nécessaire.
GNOME peut être également lancé à partir de la ligne de commande en configurant correctement un fichier appelé .xinitrc. Si un fichier .xinitrc personnalisé est déjà en place, remplacez simplement la ligne qui lance le gestionnaire de fenêtres avec une qui exécute /usr/local/bin/gnome-session à la place. S'il n'y a rien de spécial à faire dans ce fichier de configuration, alors il est suffisant de taper:
% echo "/usr/local/bin/gnome-session" > ~/.xinitrc
Ensuite, tapez startx, et l'environnement de travail GNOME sera lancé.
Note : Si un gestionnaire d'affichage plus ancien, comme XDM, est utilisé, cela ne fonctionnera pas. A la place, créez un fichier exécutable .xsession contenant la même commande. Pour cela, éditez le fichier et remplacez la commande correspondant au gestionnaire de fenêtres actuel avec /usr/local/bin/gnome-session:
% echo "#!/bin/sh" > ~/.xsession % echo "/usr/local/bin/gnome-session" >> ~/.xsession % chmod +x ~/.xsession
Une autre option est de configurer le gestionnaire d'affichage pour permettre la sélection du gestionnaire de fenêtres au moment de l'ouverture de session; la section de compléments sur KDE explique comment le faire pour kdm, le gestionnaire d'affichage de KDE.
X11 supporte l'anticrénelage par l'intermédiaire de son extension
``RENDER``. GTK+ 2.0 et suivant (la boîte à outils
utilisé par GNOME) peuvent utiliser cette
fonctionnalité. La configuration de l'anticrénelage est
décrite dans la Section 5.5.3. Aussi, avec des logiciels
à jour, l'anticrénelage est possible dans l'environnement de
travail GNOME. Aller dans le menu Applications->Desktop
Preferences->Font, et sélectionnez soit
Best shapes, soit Best
contrast, ou Subpixel smoothing (LCDs). Pour
une application GTK+ qui ne fait pas partie de l'environnement de travail GNOME, fixez la variable d'environement GDK_USE_XFT à 1 avant de
lancer le programme.
KDE est un environnement de travail moderne facile d'emploi. Quelques unes des choses qu'apporte KDE aux utilisateurs sont:
Un magnifique bureau moderne
Une utilisation réseau complètement transparente
Un système d'aide intégré utile, pour un accès cohérent à l'aide sur l'utilisation de l'environnement KDE et ses applications
Une apparence et une prise en main commune pour toutes les applications KDE
Des menus, barres d'outils, combinaisons de touches, couleurs, etc., standardisées
Internationalisation: KDE est disponible dans plus de 40 langues
Un système centralisé de configuration de l'environnement
Un grand nombre d'applications KDE utiles
KDE est fourni avec un navigateur web appelé Konqueror, qui est un solide concurrent aux autres navigateurs web sous UNIX. Plus d'information sur KDE peut être trouvé sur le site de KDE. Pour des informations et des ressources spécifiques à l'utilisation de KDE sous FreeBSD, consultez le site de l'équipe KDE sur FreeBSD.
Il existe deux versions de KDE sous FreeBSD. La version 3 est disponible depuis longtemps et présente une grande maturité. La version 4, la génération suivante, est également disponible dans le catalogue des logiciels portés. Ces deux versions peuvent être installées de paire.
Juste comme avec GNOME ou tout autre environnement de travail, ce logiciel peut être aisément installé à partir des logiciels pré-compilés ou du catalogue des logiciels portés:
Pour installer la version pré-compilée de KDE3 à partir du réseau, tapez simplement:
# pkg_add -r kde
Pour installer la version pré-compilée de KDE4 à partir du réseau, tapez simplement:
# pkg_add -r kde4
pkg_add(1) récupérera automatiquement la dernière version de l'application.
Pour compiler KDE3 à partir des sources, utilisez le logiciel porté:
# cd /usr/ports/x11/kde3 # make install clean
Pour compiler KDE4 à partir des sources, utilisez le logiciel porté:
# cd /usr/ports/x11/kde4 # make install clean
Après que KDE ait été installé, on doit indiquer au serveur X de lancer cette application à la place du gestionnaire de fenêtres par défaut. Ceci est effectué en éditant le fichier .xinitrc:
Pour KDE3:
% echo "exec startkde" > ~/.xinitrc
Pour KDE4:
% echo "exec /usr/local/kde4/bin/startkde" > ~/.xinitrc
Maintenant, quand le système X Window est invoqué avec la commande startx, KDE sera l'environnement de travail utilisé.
Si un gestionnaire d'affichage comme XDM est utilisé, la configuration sera légèrement différente. Editez le fichier .xsession à la place. Les instructions concernant kdm seront données plus loin dans ce chapitre.
Maintenant que KDE est installé sur le système, la plupart des choses peuvent être découvertes à travers les pages d'aide, ou juste en pointant et cliquant sur les différents menus. Les utilisateurs de Windows ou de Mac® se sentiront presque en terrain de connaissance.
La meilleure référence pour KDE est la documentation en ligne. KDE est livré avec son propre navigateur internet Konqueror, et des douzaines d'applications utiles, et une large documentation. Le reste de cette section traite d'éléments techniques qui sont difficiles à apprendre par une exploration au hasard.
L'administrateur d'un système multi-utilisateurs peut désirer avoir un écran graphique d'ouverture de session pour accueillir les utilisateurs. XDM peut être utilisé comme décrit plus tôt. Cependant, KDE inclus une alternative, kdm, qui est conçue pour paraître plus attractive et inclure plus d'options d'ouverture de session. En particulier, les utilisateurs peuvent facilement (par l'intermédiaire d'un menu) sélectionner quel environnement de travail (KDE, GNOME, ou quelque chose d'autre) exécuter après l'ouverture de session.
Pour activer kdm, la ligne ttyv8 du fichier /etc/ttys doit être modifiée. La ligne doit ressembler à:
Pour KDE3:
ttyv8 "/usr/local/bin/kdm -nodaemon" xterm on secure
Pour KDE4:
ttyv8 "/usr/local/kde4/bin/kdm -nodaemon" xterm on secure
XFce est un environnement de travail basé sur le ``toolkit'' GTK+ utilisé par GNOME, mais est plus léger et est destiné à ceux qui veulent un bureau simple, et efficace qui est néanmoins facile d'utilisation et de configuration. Visuellement, il ressemble énormément à CDE, que l'on trouve sur les systèmes UNIX commerciaux. Quelques unes des caractéristiques d'XFce sont:
Un bureau de prise en main aisée et simple
Complètement configurable à la souris, avec glisser-déposer, etc.
Une barre principale similaire à CDE, avec des menus, des petites applications et des lanceurs d'applications
Un gestionnaire de fenêtre intégré, un gestionnaire de fichiers, un gestionnaire du son, un module de compatibilité GNOME, et bien plus
Personnalisable avec des thèmes (comme il utilise GTK+)
Rapide, léger et efficace: idéal pour les machines vieilles/lentes ou avec des limitations en mémoire
Plus d'information sur XFce peut être trouvé sur le site d'XFce.
Une version pré-compilée d'XFce existe (au moment où ces lignes sont écrites). Pour installer, tapez simplement:
# pkg_add -r xfce4
Alternativement, pour compiler à partir des sources, utilisez le catalogue des logiciels portés:
# cd /usr/ports/x11-wm/xfce4 # make install clean
Maintenant, il faut indiquer au serveur X d'exécuter XFce au prochain démarrage d'X. Tapez ceci:
% echo "/usr/local/bin/startxfce4" > ~/.xinitrc
Au prochain démarrage d'X, XFce sera l'environnement de travail. Comme précédemment, si un gestionnaire d'affichage comme XDM est utilisé, créez un fichier .xsession, comme décrit dans la section sur GNOME, mais avec la commande /usr/local/bin/startxfce4; ou configurez le gestionnaire d'affichage pour permettre la sélection d'un environnement de travail au moment de la connexion, comme expliqué dans la section sur kdm.
Maintenant que les bases sont maîtrisées, cette partie du Manuel FreeBSD traitera de certaines fonctionnalités de FreeBSD fréquemment utilisées. Ces chapitres:
Présentent des applications de bureautique populaires et utiles: des navigateurs, des outils de productivité, des lecteurs de documents, etc.
Présentent plusieurs outils multimédia disponibles pour FreeBSD.
Expliquent le processus de compilation d'un noyau FreeBSD personnalisé, pour permettre l'ajout de fonctionnalités supplémentaires à votre système.
Décrivent le système d'impression en détail, pour les configurations d'imprimante locale et en réseau.
Vous montrent comment exécuter des applications Linux sur votre système FreeBSD.
Certains de ces chapitres conseillent des lectures préalables, ceci est noté dans le synopsis au début de chaque chapitre.
Version française de Marc Fonvieille
<blackend@FreeBSD.org>.
FreeBSD peut faire fonctionner une large variété d'applications de bureautique, comme des navigateurs et des traitements de textes. La plupart de ces derniers sont disponibles sous forme pré-compilée ou peuvent être compilé automatiquement à partir du catalogue des logiciels portés. De nombreux utilisateurs s'attendent à trouver ces types d'applications dans leur environnement de travail. Ce chapitre vous montrera comment installer quelques unes des applications de bureautique les plus populaires sans trop d'effort, soit à partir de versions pré-compilées soit à partir du catalogue des logiciels portés.
Notez que lorsque l'on installe des programmes à partir du catalogue des logiciels portés, ils sont compilés à partir des sources. Cela peut prendre un temps relativement long, en fonction de ce que vous compilez et de la puissance de votre machine. Si la compilation à partir des sources requiert un temps prohibitif, vous pouvez installer la plupart des programmes de l'arbre des ports à partir de version pré-compilées.
Comme FreeBSD dispose d'un système de compatibilité avec les binaires Linux, de nombreuses applications développées à l'origine pour Linux sont disponibles pour votre environnement de travail. Il est vivement recommandé que vous lisiez le Chapitre 10 avant d'installer des applications Linux. De nombreux logiciels portés utilisant la compatibilité binaire Linux débutent avec le terme ``linux-''. Souvenez-vous de cela quand vous recherchez un logiciel porté bien particulier, par exemple à l'aide de whereis(1). Dans le reste de ce chapitre on suppose que vous avez activé la compatibilité Linux avant d'installer des applications Linux.
Voici les catégories d'applications couvertes par ce chapitre:
Navigateurs (comme Mozilla, Opera, Firefox, Konqueror)
Productivité (comme KOffice, AbiWord, The GIMP, OpenOffice.org)
Lecteurs de document (comme Acrobat Reader®, gv, Xpdf, GQview)
Finance (comme GnuCash, Gnumeric, Abacus)
Avant de lire ce chapitre, vous devrez:
Savoir comment installer des logiciels tiers (Chapitre 4).
Savoir comment installer des logiciels pour Linux (Chapitre 10).
Pour des informations sur comment mettre en place un environnement multimédia, lisez le Chapitre 7. Si vous désirez configurer et utiliser le courrier électronique, veuillez vous référer au Chapitre 27.
FreeBSD n'est pas livré avec un navigateur particulier installé. Au lieu de cela, le répertoire www du catalogue des logiciels portés contient de nombreux navigateurs prêts à être installés. Si vous n'avez pas le temps de tout compiler (cela peut prendre un temps relativement long dans certains cas) nombres d'entre eux sont disponibles sous forme pré-compilée.
KDE et GNOME fournissent déjà un navigateur HTML. Veuillez vous référer au Section 5.7 pour plus d'information sur comment configurer ces environnements de travail.
Si vous êtes à la recherche de navigateurs légers, vous devriez consulter le catalogue des logiciels portés pour www/dillo, www/links, ou www/w3m.
Cette section couvre les applications suivantes:
| Nom de l'application | Ressources nécessaires | Installation à partir du catalogue des logiciels portés | Dépendances principales |
|---|---|---|---|
| Mozilla | importantes | lourde | Gtk+ |
| Opera | faibles | légère | Version native FreeBSD et Linux disponibles. La version Linux dépend de la compatibilité binaire Linux et de linux-openmotif. |
| Firefox | moyennes | lourde | Gtk+ |
| Konqueror | moyennes | lourde | Bibliothèques KDE |
Mozilla est un navigateur moderne et stable, dont le portage FreeBSD est complet: il présente un moteur d'affichage HTML qui respecte vraiment les normes; il intègre un lecteur de courrier électronique et de forums de discussion. Il possède même un éditeur HTML si vous projetez d'écrire vous-même quelques pages Web. Les utilisateurs de Netscape trouveront des similitudes avec la suite Communicator, étant donné que les deux navigateurs partagent certains développements passés.
Sur les machines lentes, avec une vitesse de processeur de moins de 233MHz ou avec moins de 64MO de RAM, Mozilla peut être trop consommateur en ressources pour être vraiment utilisable. Vous pourrez vouloir essayer à la place le navigateur Opera décrit plus tard dans ce chapitre.
Si vous ne pouvez ou ne voulez compiler Mozilla, pour une quelconque raison, l'équipe GNOME de FreeBSD l'a déjà fait pour vous. Installez juste la version pré-compilée à partir du réseau avec:
# pkg_add -r mozilla
Si la version pré-compilée n'est pas disponible, et que vous avez suffisamment de temps et d'espace disque, vous pouvez obtenir les sources pour Mozilla, le compiler et l'installer sur votre système. Cela s'effectue en faisant:
# cd /usr/ports/www/mozilla # make install clean
Le logiciel porté Mozilla s'assure d'une initialisation correcte en exécutant la configuration de la base de registre chrome avec les privilèges de root privilèges. Cependant si vous désirez récupérer des modules additionnels comme ``mouse gestures'', vous devez exécuter Mozilla en tant que root pour obtenir une installation correcte de ces modules.
Une fois que vous avez achevé l'installation de Mozilla, vous n'avez plus besoin d'être sous root. Vous pouvez lancer Mozilla en tant que navigateur en tapant:
% mozilla
Vous pouvez lancer directement les lecteurs de courrier électronique et de forums comme montré ci-dessous:
% mozilla -mail
Firefox est la génération suivante de navigateurs basés sur le code de Mozilla. Mozilla est une suite complète d'applications, comme un navigateur, un client de messagerie, un client de discussion et bien plus. Firefox est juste un navigateur, ce qui le rend plus petit et plus rapide.
Installez la version pré-compilée du logiciel en tapant:
# pkg_add -r firefox
Vous pouvez également utiliser le catalogue des logiciels portés si vous désirez effectuer la compilation à partir des sources:
# cd /usr/ports/www/firefox # make install clean
Note : Dans cette section et la suivante, nous supposerons que vous avez déjà installé Firefox ou Mozilla.
La fondation FreeBSD a acquis auprès de Sun Microsystems une licence de distribution des binaires FreeBSD pour le Java Runtime Environment (JRE™) et le Java Development Kit (JDK™). Les paquetages binaires pour FreeBSD sont disponibles sur le site de la fondation FreeBSD.
Pour ajouter le support Java™ à Firefox ou Mozilla, vous devez installer tout d'abord le logiciel porté java/javavmwrapper. Ensuite, téléchargez le paquetage Diablo JRE à l'adresse http://www.freebsdfoundation.org/downloads/java.shtml, et installez-le à l'aide de pkg_add(1).
Lancez votre navigateur et tapez about:plugins dans la barre d'adresse et appuyez sur Entrée. Une page listant les greffons installés s'affichera; le greffon Java devrait désormais apparaître dans la liste. Si ce n'est pas le cas, en tant que root, exécutez la commande suivante:
# ln -s /usr/local/diablo-jre1.5.0/plugin/i386/ns7/libjavaplugin_oji.so \ /usr/local/lib/browser_plugins/
puis relancez votre navigateur.
Le greffon Macromedia® Flash™ n'est pas disponible pour FreeBSD. Cependant il existe une couche logicielle (“wrapper”) pour utiliser la version Linux du greffon. Ce “wrapper” supporte également les greffons Adobe® Acrobat®, RealPlayer® et plus.
Installez le logiciel porté www/nspluginwrapper. Ce logiciel nécessite emulators/linux_base qui occupe un espace relativement important.
L'étape suivante est l'installation du logiciel porté www/linux-flashplugin7. Une fois le logiciel installé, le greffon doit être installé par chaque utilisateur à l'aide de la commande nspluginwrapper:
% nspluginwrapper -v -a -i
Lancez ensuite votre navigateur, tapez about:plugins dans la barre d'adresse et appuyez sur Entrée. Une liste des greffons actuellement disponibles devrait apparaître.
Opera est un navigateur complet respectant les standards. Il intègre un lecteur de courrier électronique et de forums de discussion, un client IRC, un lecteur de flux RSS/Atom et beaucoup plus. Malgré cela, Opera reste relativement léger et très rapide. Il est disponible en deux versions: une version ``native'' pour FreeBSD et une version utilisant l'émulation Linux.
Pour naviguer sur le Web avec la version FreeBSD d'Opera, installez la version pré-compilée:
# pkg_add -r opera
Certains sites FTP n'ont pas toutes les versions pré-compilées, mais Opera peut également être obtenu avec le catalogue des logiciels portés en tapant:
# cd /usr/port/www/opera # make install clean
Pour installer la version Linux d'Opera, utilisez linux-opera à la place d'opera dans les exemples précédents. La version Linux est utile dans les situations demandant l'utilisation de greffons qui sont uniquement disponibles pour Linux, comme Acrobat Reader. Dans tous les autres aspects, les versions FreeBSD et Linux devraient être identiques.
Konqueror fait partie de KDE mais peut être également utilisé en dehors de KDE en installant x11/kdebase3. Konqueror est plus qu'un navigateur, c'est également un gestionnaire de fichiers et une visionneuse multimedia
Il existe également un ensemble de greffons pour Konqueror disponible dans misc/konq-plugins.
Konqueror supporte également Flash; un tutorial pour avoir le support de Flash sous Konqueror est disponible à l'adresse http://freebsd.kde.org/howto.php.
Quand on parle de productivité, les nouveaux utilisateurs recherchent souvent une bonne suite bureautique ou un traitement de texte convivial. Bien que certains environnements de travail comme KDE fournissent déjà une suite de bureautique, il n'y a pas de logiciels de productivité par défaut. FreeBSD fournit tout ce qui est nécessaire, indépendamment de votre environnement de travail.
Cette section couvre les applications suivantes:
| Nom de l'application | Ressources nécessaires | Installation à partir du catalogue des logiciels portés | Dépendances principales |
|---|---|---|---|
| KOffice | légères | lourde | KDE |
| AbiWord | légères | lourde | Gtk+ ou GNOME |
| The Gimp | légères | lourde | Gtk+ |
| OpenOffice.org | importantes | très lourde | JDK 1.4, Mozilla |
La communauté KDE propose son environnement de travail avec une suite de bureautique qui peut être utilisée en dehors de KDE. Elle comprend quatre composants standard que l'on peut trouver dans d'autres suites. KWord est le traitement de texte, KSpread est le tableur, KPresenter est le programme pour gérer des présentations, et Kontour vous permet de créer des documents graphiques.
Avant d'installer la dernière version de KOffice, soyez sûr d'avoir une version à jour de KDE.
Pour installer KOffice à partir de la version pré-compilée, utilisez la commande suivante:
# pkg_add -r koffice
Si la version pré-compilée n'est pas disponible, vous pouvez utiliser le catalogue des logiciels portés. Par exemple, pour installer KOffice pour KDE3, faites:
# cd /usr/ports/editors/koffice-kde3 # make install clean
AbiWord est un traitement de texte gratuit similaire au niveau de l'apparence et de la prise en main à Microsoft Word. Il convient pour taper des lettres, des rapports, des mémos, et ainsi de suite. Il est très rapide, dispose de nombreuses fonctions, et très convivial.
AbiWord peut importer et exporter dans de nombreux formats de fichiers, dont certains formats propriétaires comme le .doc de Microsoft.
AbiWord est disponible sous forme pré-compilée. Vous pouvez l'installer avec:
# pkg_add -r abiword
Si la version pré-compilée n'est pas disponible, il peut être compilé à partir du catalogue des logiciels portés. Le catalogue devra être plus à jour. Cela peut être fait de cette façon:
# cd /usr/ports/editors/abiword # make install clean
Pour la création et la retouche d'image The GIMP est un programme de manipulation d'image très sophistiqué. Il peut être utilisé comme un simple programme de dessin ou comme une suite de retouche d'image de qualité photo. Il supporte un grand nombre de modules additionnels et présente une interface de création de procédures. The GIMP peut lire et écrire dans un très grand nombre de formats de fichiers. Il supporte l'interfaçage avec des scanners et des tablettes graphiques.
Vous pouvez installer la version pré-compilée en utilisant cette commande:
# pkg_add -r gimp
Si votre site FTP ne dispose pas de la version pré-compilée, vous pouvez utiliser le catalogue des logiciels portés. Le répertoire graphics du catalogue contient également le Manuel de The Gimp. Voici comment les installer:
# cd /usr/ports/graphics/gimp # make install clean # cd /usr/ports/graphics/gimp-manual-pdf # make install clean
Note : Le répertoire graphics du catalogue des logiciels portés contient la version de développement de The GIMP dans graphics/gimp-devel. Une version HTML du Manuel de The Gimp est disponible à partir de graphics/gimp-manual-html.
OpenOffice.org comprend toutes les applications indispensables d'une suite de bureautique complète: un traitement de texte, un tableur, un programme de gestion de présentation, et un logiciel de dessin. Son interface utilisateur est très proche de celle d'autres suites de bureautique, et elle peut importer et exporter dans divers formats de fichiers populaires. Elle est disponible dans de nombreuses langues -- l'interface, les correcteurs orthographiques, et les dictionnaires ont été internationalisés.
Le traitement de texte d'OpenOffice.org utilise un format de fichier natif en XML pour augmenter la portabilité et la flexibilité. Le tableur dispose d'un langage de macro et il peut être interfacé avec des bases de données extérieures. OpenOffice.org est déjà stable et fonctionne en natif sous Windows, Solaris™, Linux, FreeBSD, et Mac OS X. Plus d'information à propos d'OpenOffice.org peut être trouvé sur le site Web d'OpenOffice.org. Pour une information spécifique à FreeBSD, et pour télécharger directement les versions précompilées, utilisez le site Web de l'Equipe FreeBSD de portage d'OpenOffice.org.
Pour installer OpenOffice.org, faites:
# pkg_add -r openoffice.org
Note : Cette commande devrait fonctionner si vous utilisez une version -RELEASE de FreeBSD. Si ce n'est pas le cas, vous devriez consulter le site de l'équipe de portage d'OpenOffice.org pour télécharger puis installer le paquetage adéquat en utilisant pkg_add(1). Les versions actuelles et de développement sont disponibles.
Une fois l'installation effective, vous avez juste à taper la commande suivante pour exécuter OpenOffice.org:
% openoffice.org
Note : Lors de la première exécution, quelques questions vous seront posées et un répertoire .openoffice.org2 sera créé dans votre répertoire utilisateur.
Si les version pré-compilées d'OpenOffice.org ne sont pas disponibles, vous avez toujours la possibilité de compiler le logiciel porté. Cependant, vous devez garder à l'esprit que cela demande beaucoup d'espace disque et un temps de compilation relativement long.
# cd /usr/ports/editors/openoffice.org-2 # make install clean
Note : Si vous désirez compiler une version localisée, remplacez la dernière ligne de commande avec la suivante:
# make LOCALIZED_LANG=votre_langage install cleanVous devez remplacer votre_langage avec le code ISO de langage approprié. Une liste des codes de langage supportés est disponible dans le fichier files/Makefile.localized situé dans le répertoire du logiciel porté.
Une fois cela effectué, OpenOffice.org peut être lancé avec la commande:
% openoffice.org
Certains nouveaux formats de documentation ont gagné en popularité depuis l'avènement d'UNIX; les lecteurs standard qu'ils nécessitent peuvent ne pas être disponibles dans le système de base. Nous verrons, dans cette section, comment installer ces lecteurs de document.
Cette section couvre les applications suivantes:
| Nom de l'application | Ressources nécessaires | Installation à partir du catalogue des logiciels portés | Dépendances principales |
|---|---|---|---|
| Acrobat Reader | faibles | légère | Compatibilité binaire Linux |
| gv | faibles | légère | Xaw3d |
| Xpdf | faibles | légère | FreeType |
| GQview | faibles | légère | Gtk+ ou GNOME |
De nombreux documents sont désormais distribués sous forme de fichiers PDF, qui signifie ``Format Portable de Document'' - Portable Document Format. Un des lecteurs recommandé est Acrobat Reader, sorti par Adobe pour Linux. Comme FreeBSD peut exécuter les binaires Linux, il est également disponible pour FreeBSD.
Pour installer Acrobat Reader 7, à partir du catalogue de logiciels portés, faire:
# cd /usr/ports/print/acroread7 # make install clean
Il n'existe pas de paquetage pour des raisons de licence.
gv un lecteur de fichier PostScript et PDF. Il est a l'origine basé sur ghostview mais présente un plus bel aspect grâce à la bibliothèque Xaw3d. Il est rapide et son interface est simple. gv possède de nombreuses fonctionnalités comme l'orientation, le format du papier, l'échelle, l'anticrénelage. Presque toutes les opérations peuvent être effectuées soit à partir du clavier soit à la souris.
Pour installer gv à partir de la version pré-compilée, faites:
# pkg_add -r gv
Si vous ne pouvez obtenir la version pré-compilée, vous pouvez utiliser le catalogue des logiciels portés:
# cd /usr/ports/print/gv # make install clean
Si vous désirez un petit lecteur de fichiers PDF, Xpdf est léger et efficace. Il demande très peu de ressources et est très stable. Il utilise les polices de caractères standards de X et ne requiert pas Motif ou tout autre ensemble d'éléments graphiques pour X.
Pour installer la version pré-compilée d'Xpdf utilisez la commande suivante:
# pkg_add -r xpdf
Si la version pré-compilée n'est pas disponible ou que vous préfériez utiliser le catalogue des logiciels portés, faites:
# cd /usr/ports/graphics/xpdf # make install clean
Une fois l'installation achevée, vous pouvez lancer Xpdf et utiliser le bouton droit de la souris pour activer le menu.
GQview est un gestionnaire d'image. Vous pouvez visualiser un fichier avec un simple clic, lancer un éditeur externe, obtenir une pré-visualisation par vignettes, et bien plus. Il propose également un mode présentation et quelques possibilités d'opérations sur fichiers de base. Vous pouvez gérer des collections d'images et trouver facilement les doublons. GQview supporte l'affichage plein écran et l'internationalisation de l'interface.
Si vous désirez installer la version pré-compilée de GQview, faites:
# pkg_add -r gqview
Si la version pré-compilée n'est pas disponible ou que vous préférez utiliser le catalogue des logiciels portés, faites:
# cd /usr/ports/graphics/gqview # make install clean
Si, pour diverses raisons, vous voudriez gérer vos finances personnelles sous FreeBSD, il existe quelques applications puissantes et simples d'emploi prêtes à être installées. Certaines d'entre elles sont compatibles avec des formats de fichiers très répandus comme ceux utilisés par Quicken® ou Excel pour stocker des documents.
Cette section couvre les programmes suivants:
| Nom de l'application | Ressources nécessaires | Installation à partir du catalogue des logiciels portés | Dépendances principales |
|---|---|---|---|
| GnuCash | faibles | lourde | GNOME |
| Gnumeric | faibles | lourde | GNOME |
| Abacus | faibles | légère | Tcl/Tk |
| KMyMoney | faibles | lourde | KDE |
GnuCash fait partie de l'effort GNOME en vue de fournir des applications puissantes et conviviales pour l'utilisateur final. Avec GnuCash, vous pouvez suivre vos crédits et débits, vos comptes bancaires, et vos actions. Il présente une interface intuitive tout en restant très professionnel.
GnuCash fournit un registre intelligent, un système hiérarchique pour les comptes, de nombreux raccourcis clavier et des systèmes d'autocomplémentation de la frappe au clavier. Il peut diviser une simple transaction en plusieurs étapes plus détaillées. GnuCash peut importer et fusionner des fichiers QIF de Quicken. Il supporte également la plupart des formats internationaux de date et de monnaies.
Pour installer GnuCash sur votre système, faites:
# pkg_add -r gnucash
Si la version pré-compilée n'est pas disponible, vous pouvez utiliser le catalogue des logiciels portés:
# cd /usr/ports/finance/gnucash # make install clean
Gnumeric est un tableur, faisant partie de l'environnement de travail GNOME. Il dispose d'un système automatique ``devinant'' le type d'entrée de l'utilisateur en fonction du format de la cellule avec un système de remplissage automatique pour de nombreuses séquences d'utilisation. Il peut importer des fichiers de nombreux formats populaires comme ceux d'Excel, Lotus 1-2-3, ou Quattro Pro. Gnumeric supporte l'affichage de graphiques grâce au programme de tracé math/guppi. Il dispose d'un grand nombre de fonctions intégrées et permet tous les formats de cellule habituels comme le format numérique, monétaire, date, temps, et bien plus.
Pour installer Gnumeric sous forme pré-compilée, tapez:
# pkg_add -r gnumeric
Si la version pré-compilée n'est pas disponible, vous pouvez utiliser le catalogue des logiciels portés en faisant:
# cd /usr/ports/math/gnumeric # make install clean
Abacus est un tableur léger et facile d'emploi. Il incorpore de nombreuses fonctions utiles dans plusieurs domaines comme les statistiques, la finance, et les mathématiques. Il peut importer et exporter en format Excel. Abacus peut produire des sorties en PostScript.
Pour installer Abacus à partir de la version pré-compilée, faites:
# pkg_add -r abacus
Si la version pré-compilée n'est pas disponible, vous pouvez utiliser le catalogue des logiciels portés en faisant:
# cd /usr/ports/deskutils/abacus # make install clean
KMyMoney est un programme de comptabilité personnelle pour KDE. KMyMoney a pour objectif de fournir et d'incorporer toutes les fonctionnalités importantes que l'on retrouve dans les applications de comptabilité personnelle commerciales. Il met également l'accent sur la facilité d'utilisation et la mise en place d'une comptabilité en partie double. KMyMoney peut importer les fichiers au format Quicken (QIF), suivre des placements, gérer plusieurs monnaies et fournir une quantité de compte-rendus. La possibilité d'importer des fichiers au format OFX est également disponible à l'aide d'un greffon séparé.
Pour installer KMyMoney sous forme d'un paquetage:
# pkg_add -r kmymoney2
Si le paquetage n'est pas disponible, vous pouvez utiliser le catalogue des logiciels portés:
# cd /usr/ports/finance/kmymoney2 # make install clean
Alors que FreeBSD est populaire parmi les fournisseurs d'accès à Internet pour ses performances et sa stabilité, il est quasiment prêt pour une utilisation quotidienne en tant que station de travail. Avec plusieurs milliers d'applications disponibles sous forme pré-compilées ou dans le catalogue des logiciels portés, vous pouvez vous construire l'environnement de travail qui vous conviendra le mieux.
Voici un bref rappel de toutes les applications abordées dans ce chapitre:
| Nom de l'application | Nom du logiciel pré-compilé | Nom du logiciel porté |
|---|---|---|
| Mozilla | mozilla | www/mozilla |
| Opera | opera | www/opera |
| Firefox | firefox | www/firefox |
| KOffice | koffice-kde3 | editors/koffice-kde3 |
| AbiWord | abiword | editors/abiword |
| The GIMP | gimp | graphics/gimp |
| OpenOffice.org | openoffice | editors/openoffice-1.1 |
| Acrobat Reader | acroread | print/acroread7 |
| gv | gv | print/gv |
| Xpdf | xpdf | graphics/xpdf |
| GQview | gqview | graphics/gqview |
| GnuCash | gnucash | finance/gnucash |
| Gnumeric | gnumeric | math/gnumeric |
| Abacus | abacus | deskutils/abacus |
Version française de Marc Fonvieille
<blackend@FreeBSD.org>.
FreeBSD supporte une grande variété de cartes son, vous permettant d'obtenir un son haute fidélité à partir de votre ordinateur. Ceci inclut la possibilité d'enregistrer et de jouer les formats ``MPEG Audio Layer 3'' (MP3), WAV et Ogg Vorbis aussi bien que de nombreux autres formats. Le catalogue de logiciels portés de FreeBSD contient également des applications vous permettant d'éditer vos enregistrements, rajouter des effets sonores, et contrôler des périphériques MIDI.
Avec un peu d'expérimentation, FreeBSD pourra lire des fichiers vidéo et des DVDs. Le nombre d'applications pour encoder, convertir, et lire divers supports vidéo est plus limité que le nombre d'applications équivalentes dans le domaine du son. Par exemple au moment de l'écriture de ces lignes, il n'existe pas de bonne application d'encodage dans le catalogue des logiciels portés de FreeBSD, qui pourra être utilisée pour convertir d'un format à un autre, comme peut le faire pour le son le programme audio/sox. Cependant, le paysage logiciel dans ce domaine évolue rapidement.
Ce chapitre décrira les étapes nécessaires pour configurer votre carte son. La configuration et l'installation d'X11 (Chapitre 5) ont déjà pris soin des problèmes matériel de votre carte vidéo, bien qu'il puisse y avoir quelques réglages à ajuster pour obtenir une meilleure lecture des vidéos.
Après la lecture de ce chapitre, vous connaîtrez:
Comment configurer votre système afin que votre carte son soit reconnue.
Les méthodes pour tester le fonctionnement de votre carte.
Comment faire face aux problèmes de configuration de votre carte son.
Comment jouer et encoder des MP3s.
Comment la vidéo est supportée par X11.
Quelques logiciels portés qui donnent de bon résultats pour lire/encoder de la vidéo.
Comment lire des DVDs, des fichiers .mpg et .avi.
Comment extraire l'information présente sur des CDs et des DVDs.
Comment configurer une carte TV.
Comment configurer un scanner.
Avant de lire ce chapitre, vous devrez:
Savoir comment configurer et installer un nouveau noyau (Chapitre 8).
Avertissement : Essayer de monter des CDs audio avec la commande mount(8) aura pour résultat une erreur, au moins, et une panique du noyau, au pire. Ces supports ont des codages spécifiques qui diffèrent du système de fichiers ISO classique.
Avant que vous commenciez, vous devriez connaître le modèle de carte son que vous avez, la puce qu'elle utilise, et si c'est une carte PCI ou ISA. FreeBSD supporte une grande variété de cartes PCI et ISA. Consultez la liste des périphériques audio supportés des notes de compatibilité matériel pour voir si votre carte est supportée. Ces notes indiqueront également quel pilote supporte votre carte.
Pour utiliser votre carte son, vous devrez charger le pilote de périphérique approprié. Cela peut être fait de deux façons. La plus simple est de charger le module pour votre carte son avec kldload(8), ce qui peut être soit fait à partir de la ligne de commande:
# kldload snd_emu10k1
soit en ajoutant la ligne appropriée dans le fichier /boot/loader.conf comme cela:
snd_emu10k1_load="YES"
Ces exemples concernent la carte Creative SoundBlaster® Live!. Les autres modules son chargeables sont listés dans /boot/defaults/loader.conf. Si vous n'êtes pas sûr du pilote à utiliser, vous pouvez tenter de charger le pilote snd_driver:
# kldload snd_driver
C'est un méta-pilote chargeant directement les pilotes les plus courants. Cela accélère la recherche du pilote adapté. Il est également possible de charger l'intégralité des pilotes de cartes son en utilisant le système /boot/loader.conf.
Si vous voulez connaître le pilote sélectionné lors du chargement du méta-pilote snd_driver, vous pouvez consulter le fichier /dev/sndstat à cet effet, et cela à l'aide de la commande cat /dev/sndstat.
Une seconde méthode est de compiler le support pour votre carte son en statique dans votre noyau. La section ci-dessous fournit les informations nécessaires pour ajouter le support de votre matériel de cette manière. Pour plus d'informations au sujet de la recompilation de votre noyau, veuillez consulter le Chapitre 8.
La première chose à effectuer est d'ajouter au noyau le pilote de périphérique audio générique sound(4); pour cela vous devrez ajouter la ligne suivante au fichier de configuration du noyau:
device sound
Ensuite, vous devez ajouter le support pour votre carte son. Par conséquent, vous devez savoir quel pilote supporte la carte. Consultez la liste des périphériques audio supportés des notes de compatibilité matériel pour déterminer le pilote correct pour votre carte son. Par exemple, une carte son Creative SoundBlaster Live! est supportée par le pilote snd_emu10k1(4). Pour ajouter le support pour cette carte, utilisez ce qui suit:
device snd_emu10k1
Assurez-vous de lire la page de manuel du pilote pour la syntaxe à utiliser. La syntaxe de la configuration du noyau pour chaque pilote de carte son supportée peut être également trouvée dans le fichier /usr/src/sys/conf/NOTES.
Les cartes son ISA non-PnP pourront nécessiter de fournir au noyau des informations sur le paramétrage de la carte (IRQ, port d'E/S, etc.), comme c'est en général le cas pour toutes les cartes ISA non-PnP. Cela s'effectue par l'intermédiaire du fichier /boot/device.hints. Au démarrage du système, le chargeur (loader(8)) lira ce fichier et passera les paramètres au noyau. Par exemple, une vieille carte ISA non-PnP Creative SoundBlaster 16 utilisera le pilote snd_sbc(4) de paire avec snd_sb16, on ajoutera alors la ligne suivante au fichier de configuration du noyau:
device snd_sbc device snd_sb16
avec également ceci dans le fichier /boot/device.hints:
hint.sbc.0.at="isa" hint.sbc.0.port="0x220" hint.sbc.0.irq="5" hint.sbc.0.drq="1" hint.sbc.0.flags="0x15"
Dans ce cas, la carte utilise le port d'E/S 0x220 et l'IRQ 5.
La syntaxe utilisée dans le fichier /boot/device.hints est abordée dans la page de manuel du pilote sound(4) ainsi que celle du pilote spécifique à la carte son.
Les paramètres donnés ci-dessus sont ceux par défaut. Dans certains cas, vous pouvez avoir besoin de modifier l'IRQ ou tout autre paramètre en fonction de votre carte son. Consultez la page de manuel snd_sbc(4) pour plus d'informations au sujet de cette carte.
Après avoir redémarré avec le noyau modifié, ou après avoir chargé le module nécessaire, la carte son devrait apparaître dans le tampon des messages du système (dmesg(8)) d'un manière proche de la suivante:
pcm0: <Intel ICH3 (82801CA)> port 0xdc80-0xdcbf,0xd800-0xd8ff irq 5 at device 31.5 on pci0 pcm0: [GIANT-LOCKED] pcm0: <Cirrus Logic CS4205 AC97 Codec>
L'état de la carte son peut être contrôlée par l'intermédiaire du fichier /dev/sndstat:
# cat /dev/sndstat FreeBSD Audio Driver (newpcm) Installed devices: pcm0: <Intel ICH3 (82801CA)> at io 0xd800, 0xdc80 irq 5 bufsz 16384 kld snd_ich (1p/2r/0v channels duplex default)
Le résultat pourra être différent sur votre système. Si aucun périphérique pcm n'apparaît, retournez en arrière et revoyez ce qui a été fait précédemment. Contrôlez à nouveau votre fichier de configuration du noyau et vérifiez que vous avez choisi le périphérique correct. Les problèmes courants sont listés dans la Section 7.2.2.1.
Si tout va bien, vous devriez avoir maintenant une carte son qui fonctionne. Si la sortie audio de votre lecteur de CD-ROM ou de DVD-ROM est correctement reliée à votre carte son, vous pouvez introduire un CD dans le lecteur et le jouer avec cdcontrol(1):
% cdcontrol -f /dev/acd0 play 1
Diverses applications, comme audio/workman offrent une meilleure interface. Vous pouvez vouloir installer une application comme audio/mpg123 pour écouter des fichiers audio MP3.
Une autre méthode rapide pour tester la carte est d'envoyer des données au /dev/dsp, de la manière suivante:
% cat filename > /dev/dsp
où filename peut être n'importe quel fichier. Cette ligne de commande devrait produire des sons, confirmant le bon fonctionnement de la carte son.
Les niveaux du mixer de la carte son peuvent être modifiés par la commande mixer(8). Plus de détails peuvent être trouvés dans la page de manuel mixer(8).
| Erreur | Solution |
|---|---|
| “sb_dspwr(XX) timed out” |
Le port d'E/S n'est pas configuré correctement. |
| “bad irq XX” |
L'IRQ sélectionnée est incorrecte. Vérifiez que l'IRQ choisie et l'IRQ de la carte son sont les mêmes. |
| “xxx: gus pcm not attached, out of memory” |
Il n'y a pas suffisamment de mémoire disponible pour utiliser ce périphérique. |
| “xxx: can't open /dev/dsp!” |
Vérifiez avec la commande fstat | grep dsp si une autre application maintient le périphérique ouvert. Souvent à l'origine de ce type de problème on trouve esound et le support son de KDE. |
Il est souvent intéressant de pouvoir jouer simultanément du son à partir de multiples sources, comme lorsque esound ou artsd ne supportent pas le partage du périphérique son avec certaines applications.
FreeBSD vous permet de le faire par l'intermédiaire de Canaux Sonores Virtuels, qui peuvent être activés avec la fonction sysctl(8). Les canaux virtuels vous permettent de multiplexer la sortie de votre carte son en mixant le son au niveau du noyau.
Pour configurer le nombre de canaux virtuels, il existe deux paramètres de sysctl qui, si vous avez les privilèges de l'utilisateur root, peuvent être configurés comme ceci:
# sysctl hw.snd.pcm0.vchans=4 # sysctl hw.snd.maxautovchans=4
L'exemple ci-dessus alloue quatre canaux virtuels, ce qui est un nombre suffisant pour
une utilisation classique. hw.snd.pcm0.vchans est le nombre
de canaux virtuels que possède pcm0, et est
configurable une fois que le périphérique a été
attaché au système. hw.snd.maxautovchans est le
nombre de canaux virtuels alloués à un nouveau périphérique
audio quand il est attaché à l'aide de kldload(8). Comme le
module pcm peut être chargé
indépendamment des pilotes de périphériques, hw.snd.maxautovchans peut stocker combien de canaux virtuels seront
alloués à chaque périphérique attaché par la
suite.
Note : Vous ne pouvez pas modifier le nombre de canaux virtuels pour un périphérique en cours d'utilisation. Quittez avant tout autre chose les programmes utilisant le périphérique en question, comme les lecteurs de fichiers sonores ou les “daemons” audios.
Si vous n'utilisez pas
devfs(5), vous
devrez faire pointer vos applications sur /dev/dsp0.x, où x est 0
à 3 si hw.snd.pcm.0.vchans est fixé à
4. Sur un système utilisant
devfs(5), ce qui
précède sera automatiquement effectué de façon transparente
pour le programme qui réclame le périphérique /dev/dsp0.
Les valeurs par défaut du mixeur des différents canaux sont fixées en dur dans le code source du pilote pcm(4). Il existe plusieurs applications et ``daemons'' qui vous permettent de fixer les valeurs du mixeur qui seront mémorisées entre chaque invocation, mais ce n'est pas une solution idéale. Il est possible régler les valeurs par défaut au niveau du pilote -- ceci se fait en définissant les valeurs adéquates dans le fichier /boot/device.hints. Par exemple:
hint.pcm.0.vol="50"
Cela fixera le volume du canal à une valeur par défaut de 50; dès que le module pcm(4) est chargé.
Les fichiers MP3 (MPEG Layer 3 Audio) donnent un son proche de la qualité d'un CD audio, il n'y a aucune raison pour que votre station de travail FreeBSD ne puisse pas en profiter.
De loin, le plus populaire des lecteurs MP3 pour X11 est XMMS (X Multimedia System). Les thèmes (skins) de Winamp peuvent être utilisés avec XMMS dès lors que l'interface est quasiment identique à celle du Winamp de Nullsoft. XMMS dispose aussi d'un support natif pour modules externes (plug-in).
XMMS peut être installé à partir du catalogue de logiciels portés multimedia/xmms ou de la version pré-compilée.
L'interface d'XMMS est intuitive, avec une liste de lecture, un égaliseur graphique, et plus. Ceux qui sont familiers avec Winamp trouveront XMMS simple d'utilisation.
Le logiciel porté audio/mpg123 est une alternative, un lecteur de MP3 en ligne de commande.
mpg123 peut être utilisé en spécifiant le périphérique sonore et le fichier MP3 sur la ligne de commande, comme montré ci-dessous:
# mpg123 -a /dev/dsp1.0 Foobar-GreatestHits.mp3 High Performance MPEG 1.0/2.0/2.5 Audio Player for Layer 1, 2 and 3. Version 0.59r (1999/Jun/15). Written and copyrights by Michael Hipp. Uses code from various people. See 'README' for more! THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTY! USE AT YOUR OWN RISK! Playing MPEG stream from Foobar-GreastestHits.mp3 ... MPEG 1.0 layer III, 128 kbit/s, 44100 Hz joint-stereo
/dev/dsp1.0 devrait être remplacé par le périphérique dsp correspondant sur votre système.
Avant d'encoder la totalité d'un CD ou une piste en MP3, les données audio doivent être extraites et transférées sur le disque dur. Cela se fait en copiant les données brutes CDDA (CD Digital Audio) en fichiers WAV.
L'utilitaire cdda2wav, qui fait partie de la suite sysutils/cdrtools, est utilisé pour extraire les données audio de CDs et les informations rattachées.
Avec le CD audio dans le lecteur, la commande suivante peut être utilisée (en tant que root) pour convertir l'intégralité d'un CD en fichiers WAV (un par piste):
# cdda2wav -D 0,1,0 -B
cdda2wav supportera également les lecteurs de CDROM ATAPI (IDE). Pour faire l'extraction à partir d'un lecteur IDE, précisez le nom du périphérique à la place de l'unité SCSI. Par exemple, pour extraite la piste 7 à partir d'un lecteur IDE:
# cdda2wav -D /dev/acd0 -t 7
Le -D 0,1,0
spécifie le périphérique SCSI 0,1,0, qui correspond à ce qui est donné par
la commande cdrecord -scanbus.
Pour extraire des pistes individuelles, utilisez l'option -t comme ceci:
# cdda2wav -D 0,1,0 -t 7
Cet exemple extrait la septième piste du CD audio. Pour extraire un ensemble de pistes, par exemple, de la piste 1 à 7, précisez un intervalle:
# cdda2wav -D 0,1,0 -t 1+7
L'utilitaire dd(1) peut également être utilisé pour extraire des pistes audios à partir de lecteurs ATAPI, consultez la Section 18.6.5 pour plus d'informations sur cette possibilité.
De nos jours, l'encodeur mp3 à utiliser est lame. Lame peut être trouvé dans le catalogue de logiciels portés: audio/lame.
En utilisant les fichiers WAV extraits, la commande suivante convertira le fichier audio01.wav en audio01.mp3:
# lame -h -b 128 \ --tt "La chanson XY" \ --ta "Artiste XY" \ --tl "Album XY" \ --ty "2001" \ --tc "Extrait et encodé par XY" \ --tg "Genre" \ audio01.wav audio01.mp3
128 kbits semble être le taux standard actuel du débit audio
utilisé pour les MP3s. Nombreux sont ceux qui préfèrent des
taux de haute qualité: 160 ou 192. Plus le débit audio est
élevé plus l'espace disque utilisé par le fichier MP3 sera
grand mais la qualité sera meilleure. L'option -h
active le mode ``haute qualité, mais un peu plus lent''. Les options
commençant par --t indiquent des balises ID3, qui
généralement contiennent les informations sur le morceau, devant
être intégrées au fichier MP3. D'autres informations sur
l'encodage peuvent être trouvées en consultant la page de manuel de
Lame.
Afin de pouvoir graver un CD audio à partir de fichiers MP3, ces derniers doivent être convertis dans le format WAV non compressé. XMMS et mpg123 supportent tous les deux la sortie de fichiers MP3 en format de fichier non compressé.
Ecriture sur le disque avec XMMS:
Lancez XMMS.
Clic-droit sur la fenêtre pour faire apparaître le menu d'XMMS.
Sélectionner Preference sous Options.
Changez l'option ``Output Plugin'' pour ``Disk Writer Plugin''.
Appuyez sur Configure.
Entrez (ou choisissez browse) un répertoire où va être écrit le fichier décompressé.
Chargez le fichier MP3 dans XMMS comme à l'accoutumé, avec le volume à 100% et l'égaliseur (EQ settings) désactivé.
Appuyez sur Play -- XMMS devrait se comporter comme s'il jouait le MP3, mais aucun son ne sera audible. Il est en fait en train de ``jouer'' le MP3 dans un fichier.
Vérifiez que vous avez rétabli l'option ``Output Plugin'' à sa valeur de départ afin de pouvoir écouter à nouveau des MP3s.
Ecriture sur le disque avec mpg123:
Lancez mpg123 -s audio01.mp3 > audio01.pcm
XMMS crée un fichier au format WAV, tandis que mpg123 convertit le fichier MP3 en données audio PCM brutes. Ces deux formats peuvent être utilisés avec cdrecord pour créer des CDs audio. Vous devez utiliser des fichiers PCM bruts avec burncd(8). Si vous utilisez des fichiers WAV, vous noterez un petit parasite au début de chaque piste, ce son est l'entête du fichier WAV. Vous pouvez simplement retirer l'entête d'un fichier WAV avec l'utilitaire SoX (il peut être installé à partir du logiciel porté audio/sox ou de la version pré-compilée):
% sox -t wav -r 44100 -s -w -c 2 track.wav track.raw
Lisez la Section 18.6 pour plus d'informations sur l'utilisation d'un graveur de CD sous FreeBSD.
Les applications pour lire des vidéos sont assez récentes et se développent très rapidement. Soyez patient. Tout ne va pas fonctionner aussi bien que cela pu être le cas avec le son.
Avant que vous ne commenciez, vous devrez connaître le modèle de carte vidéo dont vous disposez ainsi que le circuit intégré qu'elle utilise. Alors qu'Xorg et XFree86 supportent une large variété de cartes vidéo, seul un petit nombre d'entre elles donne de bonnes performances en lecture de vidéos. Pour obtenir la liste des extensions supportées par le serveur X utilisant votre carte employez la commande xdpyinfo(1) durant le fonctionnement d'X11.
C'est une bonne idée d'avoir un court fichier MPEG qui pourra être utilisé comme fichier test pour évaluer divers lecteurs et leurs options. Comme certains programmes de lecture de DVD chercheront un support DVD sur /dev/dvd par défaut, ou ont ce périphérique fixé définitivement dans leur code, vous pourrez trouver utile de créer des liens symboliques vers les périphériques corrects:
# ln -sf /dev/acd0 /dev/dvd # ln -sf /dev/acd0 /dev/rdvd
Notez qu'en raison de la nature du système devfs(5), les liens créés à la main comme les précédents ne seront pas conservés si vous redémarrez le système. Afin de créer automatiquement les liens symboliques dès que vous redémarrez votre système, ajoutez les lignes suivantes au fichier /etc/devfs.conf:
link acd0 dvd link acd0 rdvd
De plus, le décodage de DVD, qui nécessite de faire appel à des fonctions spéciales du lecteur de DVD, demande d'avoir la permission d'écrire sur les périphériques DVD.
Pour augmenter la mémoire partagée pour l'interface X11, il est recommandé que les valeurs de certaines variables sysctl(8) soient augmentées:
kern.ipc.shmmax=67108864 kern.ipc.shmall=32768
Il y a plusieurs manières possibles pour afficher de la vidéo sous X11. Ce qui fonctionnera vraiment est énormément dépendant du matériel. Chaque méthode décrite ci-dessous donnera différents résultats en fonction du matériel. De plus, le rendu de la vidéo sous X11 est un sujet recevant beaucoup d'attention dernièrement, et avec chaque nouvelle version d'Xorg, ou d'XFree86, il pourra y avoir des améliorations significatives.
Une liste des interfaces vidéo communes:
X11: sortie X11 classique utilisant de la mémoire partagée.
XVideo: une extension de l'interface X11 qui supporte la vidéo sur n'importe quelle partie de l'écran contrôlé par X11.
SDL: ``Simple Directmedia Layer'' - couche simple d'accès directe au média.
DGA: ``Direct Graphics Access'' - accès direct au graphique.
SVGAlib: couche graphique bas niveau pour la console.
Xorg et XFree86 4.X disposent d'une extension appelée XVideo (également connue sous les termes Xvideo, Xv, ou xv) qui permet d'afficher directement de la vidéo à travers une accélération spécifique. Cette extension fournit une très bonne qualité de rendu même sur les machines bas de gamme.
Pour vérifier si l'extension fonctionne utilisez xvinfo:
% xvinfo
XVideo est supporté pour votre carte si le résultat de la commande ressemble à:
X-Video Extension version 2.2
screen #0
Adaptor #0: "Savage Streams Engine"
number of ports: 1
port base: 43
operations supported: PutImage
supported visuals:
depth 16, visualID 0x22
depth 16, visualID 0x23
number of attributes: 5
"XV_COLORKEY" (range 0 to 16777215)
client settable attribute
client gettable attribute (current value is 2110)
"XV_BRIGHTNESS" (range -128 to 127)
client settable attribute
client gettable attribute (current value is 0)
"XV_CONTRAST" (range 0 to 255)
client settable attribute
client gettable attribute (current value is 128)
"XV_SATURATION" (range 0 to 255)
client settable attribute
client gettable attribute (current value is 128)
"XV_HUE" (range -180 to 180)
client settable attribute
client gettable attribute (current value is 0)
maximum XvImage size: 1024 x 1024
Number of image formats: 7
id: 0x32595559 (YUY2)
guid: 59555932-0000-0010-8000-00aa00389b71
bits per pixel: 16
number of planes: 1
type: YUV (packed)
id: 0x32315659 (YV12)
guid: 59563132-0000-0010-8000-00aa00389b71
bits per pixel: 12
number of planes: 3
type: YUV (planar)
id: 0x30323449 (I420)
guid: 49343230-0000-0010-8000-00aa00389b71
bits per pixel: 12
number of planes: 3
type: YUV (planar)
id: 0x36315652 (RV16)
guid: 52563135-0000-0000-0000-000000000000
bits per pixel: 16
number of planes: 1
type: RGB (packed)
depth: 0
red, green, blue masks: 0x1f, 0x3e0, 0x7c00
id: 0x35315652 (RV15)
guid: 52563136-0000-0000-0000-000000000000
bits per pixel: 16
number of planes: 1
type: RGB (packed)
depth: 0
red, green, blue masks: 0x1f, 0x7e0, 0xf800
id: 0x31313259 (Y211)
guid: 59323131-0000-0010-8000-00aa00389b71
bits per pixel: 6
number of planes: 3
type: YUV (packed)
id: 0x0
guid: 00000000-0000-0000-0000-000000000000
bits per pixel: 0
number of planes: 0
type: RGB (packed)
depth: 1
red, green, blue masks: 0x0, 0x0, 0x0
Notez également que les formats listés (YUV2, YUV12, etc...) ne sont pas présents dans chaque implémentation d'XVideo et leur absence pourra gêner certains programmes.
Si le résultat ressemble à:
X-Video Extension version 2.2 screen #0 no adaptors present
Alors XVideo n'est probablement pas supporté pour votre carte.
Si XVideo n'est pas supporté pour votre carte, cela signifie seulement qu'il sera plus difficile pour votre système d'affichage de répondre aux demandes du rendu vidéo en termes de puissance de calcul. En fonction de votre carte vidéo et de votre processeur, vous pourriez encore obtenir de bons résultats. Vous devriez probablement vous documenter sur les méthodes pour améliorer les performances en lisant la Section 7.4.3.
La couche simple d'accès directe au média, SDL, a été prévue pour être une couche de portage entre Microsoft Windows, BeOS, et UNIX, permettant à des applications ``cross-platform'' qui font un usage efficace du son et du graphique d'être développées. La couche SDL fournit une abstraction de bas niveau vers le matériel qui peut parfois être plus efficace que l'interface X11.
La bibliothèque SDL peut être trouvée dans devel/sdl12.
L'accès direct au graphique est une extension X11 qui permet à un programme de bypasser le serveur X et d'accéder directement au matériel. Comme il repose sur une copie bas niveau de la mémoire, les programmes l'utilisant doivent être exécutés avec les privilèges de l'utilisateur root.
L'extension DGA et ses performances peuvent être testées avec dga(1). Quand dga est exécuté, il changera les couleurs de l'affichage à chaque appui sur une touche. Pour quitter, utilisez la touche q.
Cette section traite des logiciels disponibles dans le catalogue des logiciels portés de FreeBSD qui peuvent être utilisés pour lire de la vidéo. Les applications vidéos sont un domaine de développement très actif, et les capacités de diverses applications seront sujettes à des divergences avec la description donnée ici.
Premièrement, il est important de savoir que plusieurs des applications vidéos fonctionnant sous FreeBSD ont été développées comme des applications pour Linux. Plusieurs de ces applications sont encore considérées comme étant de qualité bêta. Parmi les problèmes que l'on peut rencontrer avec les applications vidéos sous FreeBSD, nous trouvons:
Une application ne peut pas lire un fichier produit par une autre application.
Une application ne peut pas lire un fichier quelle a produit.
La même application sur deux machines différentes, recompilée sur chaque machine pour la machine elle-même, jouera le fichier différemment.
Un filtre apparemment insignifiant comme un changement d'échelle de l'image donne de très mauvais résultats en raison d'une routine de changement d'échelle boguée.
Une application qui plante régulièrement.
La documentation n'est pas installée avec le logiciel porté et peut être trouvée sur Internet ou dans le répertoire work du logiciel porté.
Parmin ces applications, nombreuses sont celles qui peuvent présenter des ``Linuxismes''. Aussi, il y peut y avoir des problèmes résultants de la façon dont certaines bibliothèques standards sont implémentées dans les distributions Linux, ou certaines caractéristiques du noyau Linux qui ont été employées par les auteurs des applications. Ces problèmes ne sont pas toujours remarqués et contournés par les responsables du portage du logiciel ce qui peut mener vers quelques ennuis comme ceux-ci:
L'utilisation de /proc/cpuinfo pour détecter les caractéristiques du processeur.
Une mauvaise utilisation des ``threads'' qui provoque le blocage de programme au lieu de se terminer complètement.
Des logiciels habituellement utilisés en conjonction avec l'application ne sont pas encore dans le catalogue des logiciels portés.
Jusqu'ici, les développeurs de ces applications ont été coopératifs avec les responsables des logiciels portés pour minimiser les modifications nécessaires au portage.
MPlayer est une application pour lire des vidéos récemment et rapidement développée. Les objectifs de l'équipe de MPlayer sont la rapidité et la flexibilité sur Linux et autre UNIX. Le projet fut démarré quand le fondateur de l'équipe en eu assez des mauvaises performances en lecture des autres lecteurs disponibles. Certains diront que l'interface graphique a été sacrifiée pour une conception rationalisée. Cependant, une fois que vous avez les options en ligne de commande et les combinaisons de touches en main, cela fonctionne très bien.
MPlayer réside dans multimedia/mplayer. MPlayer effectue un certain nombre de contrôle du matériel durant le processus de compilation, il en résulte un binaire qui ne sera pas portable d'un système à l'autre. Ainsi il est important d'utiliser le logiciel porté et de ne pas utiliser un logiciel pré-compilé. En plus, un certain nombre d'options peuvent être spécifiées dans la ligne de commande make, comme décrit dans le fichier Makefile et au départ de la compilation:
# cd /usr/ports/multimedia/mplayer # make N - O - T - E Take a careful look into the Makefile in order to learn how to tune mplayer towards you personal preferences! For example, make WITH_GTK1 builds MPlayer with GTK1-GUI support. If you want to use the GUI, you can either install /usr/ports/multimedia/mplayer-skins or download official skin collections from http://www.mplayerhq.hu/homepage/dload.html
Les options par défaut du logiciel porté devraient être suffisantes pour la plupart des utilisateurs. Cependant si vous avez besoin du codec XviD, vous devez spécifier l'option WITH_XVID dans la ligne de commande. Le périphérique DVD par défaut peut également être défini avec l'option WITH_DVD_DEVICE, par défaut /dev/acd0 sera utilisé.
Au moment de l'écriture de ces lignes, le logiciel porté de MPlayer compilera sa documentation HTML et deux exécutables, mplayer et mencoder, qui est un outil pour ré-encoder de la vidéo.
La documentation HTML de MPlayer est très complète. Si le lecteur trouve l'information sur le matériel vidéo et les interfaces manquante dans ce chapitre, la documentation de MPlayer est une alternative très complète. Vous devriez certainement prendre le temps de lire la documentation de MPlayer, si vous êtes à la recherche d'informations sur le support vidéo sous UNIX.
Chaque utilisateur de MPlayer doit créer un sous-répertoire .mplayer dans son répertoire d'utilisateur. Pour créer ce sous-répertoire nécessaire, vous pouvez taper ce qui suit:
% cd /usr/ports/multimedia/mplayer % make install-user
Les options de commande de mplayer sont données dans la page de manuel. Pour plus de détails il y a la documentation HTML. Dans cette section, nous décrirons que quelques unes des utilisations les plus courantes.
Pour lire à un fichier, comme testfile.avi en utilisant une des diverses
interfaces vidéo utilisez l'option -vo:
% mplayer -vo xv testfile.avi
% mplayer -vo sdl testfile.avi
% mplayer -vo x11 testfile.avi
# mplayer -vo dga testfile.avi
# mplayer -vo 'sdl:dga' testfile.avi
Cela vaut la peine d'essayer toutes ces options, comme leur performance relative dépend de nombreux facteurs et variera de façon significative avec le matériel.
Pour lire un DVD, remplacez testfile.avi par dvd://N -dvd-device DEVICE où N est le numéro du titre à jouer et
DEVICE est le
fichier spécial de périphérique correspondant au lecteur de
DVD. Par exemple, pour jouer le titre 3 depuis /dev/dvd:
# mplayer -vo xv dvd://3 -dvd-device /dev/dvd
Note : Le périphérique DVD par défaut peut être défini lors de la compilation du logiciel porté MPlayer par l'intermédiaire de l'option WITH_DVD_DEVICE. Par défaut, ce périphérique est /dev/acd0. Plus de détails peuvent être trouvés dans le Makefile du logiciel porté.
Pour arrêter, avancer, etc..., consultez les combinaisons de touches, qui sont données en exécutant mplayer -h ou lisez la page de manuel.
D'autres options importantes pour la lecture sont: -fs
-zoom qui active le mode plein écran et -framedrop qui aide au niveau des performances.
Pour que la ligne de commande à taper ne devienne pas trop longue, l'utilisateur peut créer un fichier .mplayer/config et y fixer les options par défaut:
vo=xv fs=yes zoom=yes
Enfin, mplayer peut être utilisé pour extraire une piste du DVD dans un fichier .vob. Pour récupérer la seconde piste vidéo d'un DVD, tapez ceci:
# mplayer -dumpstream -dumpfile out.vob dvd://2 -dvd-device /dev/dvd
Le fichier de sortie, out.vob, sera du MPEG et peut être manipulé par les autres logiciels décrits dans cette section.
Avant d'utiliser mencoder c'est une bonne idée de vous familiariser avec les options données par la documentation HTML. Il existe une page de manuel, mais elle n'est pas très utile sans la documentation en HTML. Il y a d'innombrables façons d'améliorer la qualité, diminuer le débit binaire, et modifier les formats, et certaines de ces options peuvent faire la différence entre de bonnes et mauvaises performances. Voici quelques exemples pour y arriver. Tout d'abord une simple copie:
% mencoder input.avi -oac copy -ovc copy -o output.avi
De mauvaises combinaisons d'options peuvent conduire à des fichiers
illisibles même par mplayer. Aussi, si vous
voulez juste extraire un fichier, restez sur l'option -dumpfile de mplayer.
Pour convertir input.avi au format MPEG4 avec un codage audio MPEG3 (audio/lame est nécessaire):
% mencoder input.avi -oac mp3lame -lameopts br=192 \ -ovc lavc -lavcopts vcodec=mpeg4:vhq -o output.avi
Ceci a produit un fichier lisible par mplayer et xine.
input.avi peut être remplacé par dvd://1 -dvd-device /dev/dvd et exécuté en tant
que root pour ré-encoder directement un titre DVD.
Puisque vous êtes susceptible de ne pas être satisfait du
résultat la première fois, il est recommandé d'extraire le
titre vers un fichier et de travailler sur le fichier.
Le lecteur xine est un projet de grande envergure visant non seulement à être une solution vidéo tout-en-un, mais également de produire une bibliothèque de base réutilisable et un exécutable modulaire qui peut être étendu grâce à des greffons. Il est fourni sous forme pré-compilée et de logiciel porté, multimedia/xine.
Le lecteur xine est encore un peu brut, mais c'est clairement un bon début. Dans la pratique, xine demande soit un processeur rapide avec une carte vidéo rapide, soit l'extension XVideo. L'interface graphique est utilisable, mais peu pratique.
Au moment de l'écriture de ces lignes, il n'y a pas de module d'entrée fourni avec xine qui lira les DVDs codés en CSS. Il existe des versions tiers qui ont des modules à cet effet intégrés, mais aucune de ces dernières ne se trouve dans le catalogue des logiciels portés de FreeBSD.
Comparé à MPlayer, xine fait plus pour l'utilisateur, mais au même moment, rend inaccessible à l'utilisateur certains contrôles bien précis. Le lecteur xine se comporte le mieux sur les interfaces XVideo.
Par défaut, le lecteur xine lancera une interface graphique. Les menus peuvent alors être utilisés pour ouvrir un fichier précis:
% xine
Alternativement, le lecteur peut être invoqué pour jouer directement un fichier sans l'interface graphique avec la commande:
% xine -g -p mymovie.avi
Le logiciel transcode n'est pas un lecteur, mais une suite d'outils pour ré-encoder les fichiers audio et vidéo. Avec transcode, on a la capacité de fusionner des fichiers vidéos, réparer les fichiers endommagés, en utilisant les outils en ligne de commande avec des interfaces de flots stdin/stdout.
Un grand nombre d'options peut être précisé lors de la compilation du logiciel porté multimedia/transcode, nous recommandons d'utiliser la ligne de commande suivante pour compiler transcode:
# make WITH_OPTIMIZED_CFLAGS=yes WITH_LIBA52=yes WITH_LAME=yes WITH_OGG=yes \ WITH_MJPEG=yes -DWITH_XVID=yes
Le paramétrage proposé devrait convenir à la plupart des utilisateurs.
Pour illustrer les capacités de transcode, voici un exemple montrant comment convertir un fichier DivX en fichier MPEG-1 en standard PAL (VCD PAL):
% transcode -i input.avi -V --export_prof vcd-pal -o output_vcd % mplex -f 1 -o output_vcd.mpg output_vcd.m1v output_vcd.mpa
Le fichier MPEG résultant, output_vcd.mpg, peut être directement lu avec MPlayer. Vous pourrez même le graver sur un CD pour créer ainsi un Vidéo CD; dans ce cas vous devrez installer et utiliser les programmes multimedia/vcdimager et sysutils/cdrdao.
Il existe une page de manuel pour transcode, mais il est conseillé de consulter également le wiki de transcode pour plus d'information et des exemples.
Les différents logiciels vidéo pour FreeBSD se développent rapidement. Il est fort possible que dans un futur proche plusieurs des problèmes abordés ici seront résolus. Entre temps ceux qui veulent tirer partie des possibilités audio/vidéo de FreeBSD devront se débrouiller avec des connaissances extraites de plusieurs FAQs et guides et utiliser différentes applications. Cette section existe pour fournir au lecteur des références sur ces documentations additionnelles.
La documentation de MPlayer est techniquement très instructive. Ces documents devraient probablement être consultés par quiconque désirant obtenir un niveau élevé d'expertise sur la vidéo et UNIX. La liste de diffusion de MPlayer est hostile à toute personne qui n'a pas pris la peine de lire la documentation, aussi si vous projetez de leur envoyer des rapports de bogue, lisez la documentation!
Le HOWTO de xine contient un chapitre sur l'amélioration des performances qui est général à tous les lecteurs de vidéo.
Et enfin, il y a quelques autres applications prometteuses que le lecteur devrait essayer:
Avifile qui est également un logiciel porté multimedia/avifile.
Ogle qui est également un logiciel porté multimedia/ogle.
multimedia/dvdauthor, un logiciel libre pour la création de DVDs.
Les cartes TV vous permettent de regarder sur votre ordinateur la télévision par voie hertzienne ou par câble. La plupart d'entre elles acceptent de la vidéo composite par l'intermédiaire de connecteurs RCA ou S-video et certaines de ces cartes disposent d'un tuner radio FM.
FreeBSD founit le support pour les cartes TV PCI utilisant un circuit de capture video Brooktree Bt848/849/878/879 ou Conexant CN-878/Fusion 878a à l'aide du pilote bktr(4). Vous devez également vous assurer que la carte dispose d'un tuner supporté, consultez la page de manuel bktr(4) pour une liste des tuners supportés.
Pour utiliser votre carte, vous devrez charger le pilote bktr(4), cela peut être effectué en ajoutant la ligne suivante au fichier /boot/loader.conf:
bktr_load="YES"
Alternativement, vous pouvez compiler en statique dans le noyau le support pour la carte TV, dans ce cas ajouter les lignes suivantes dans votre fichier de configuration du noyau:
device bktr device iicbus device iicbb device smbus
Ces pilotes de périphériques supplémentaires sont nécessaires étant donné que les composants de la carte sont interconnectés via un bus I2C. Compilez et installez, ensuite, un nouveau noyau.
Une fois que le support a été ajouté au système, vous devez redémarrer votre machine. Durant le processus de démarrage, votre carte TV devrait apparaître de cette manière:
bktr0: <BrookTree 848A> mem 0xd7000000-0xd7000fff irq 10 at device 10.0 on pci0 iicbb0: <I2C bit-banging driver> on bti2c0 iicbus0: <Philips I2C bus> on iicbb0 master-only iicbus1: <Philips I2C bus> on iicbb0 master-only smbus0: <System Management Bus> on bti2c0 bktr0: Pinnacle/Miro TV, Philips SECAM tuner.
Bien évidemment ces messages peuvent varier en fonction de votre matériel. Cependant assurez-vous que le tuner est correctement détecté; il est possible de forcer certains des paramètres détecté à l'aide du système sysctl(8) et d'options de configuration du noyau. Par exemple, si vous désirez forcer le tuner pour un tuner Philips SECAM, vous devrez ajouter la ligne suivante au fichier de configuration du noyau:
options OVERRIDE_TUNER=6
ou vous pouvez directement utiliser sysctl(8):
# sysctl hw.bt848.tuner=6
Consultez la page de manuel bktr(4) et le fichier /usr/src/sys/conf/NOTES pour plus de détails sur les options disponibles.
Pour utiliser votre carte TV, vous devrez installer une des applications suivantes:
multimedia/fxtv qui permet de regarder la télévision et d'enregistrer des images, du son et de la vidéo.
multimedia/xawtv est également une application pour regarder la télévision avec les mêmes fonctionnalités que fxtv.
misc/alevt décode et affiche les informations Vidéotexte/Télétexte.
audio/xmradio, un programme pour utiliser le tuner FM fourni avec certaines cartes TV.
audio/wmtune, une application intégrable dans votre environnement de travail pour gérer les tuners radio.
Plus d'applications sont disponibles dans le catalogue des logiciels portés de FreeBSD.
Si vous rencontrez un quelconque problème avec votre carte TV, vous devriez contrôler tout d'abord que le circuit de capture video et le tuner sont vraiment supportés par le pilote bktr(4) et si vous avez utilisé les bonnes options de configuration. Pour plus de support et pour les diverses questions que vous pouvez vous poser à propos de votre carte TV, vous pouvez contacter et utiliser les archives de la liste de diffusion freebsd-multimedia.
Sous FreeBSD, l'accès aux scanners est possible grâce à l'API SANE (Scanner Access Now Easy) disponible dans le catalogue des logiciels portés. SANE utilisera également certains pilotes de périphériques FreeBSD pour accéder à la partie matérielle du scanner.
FreeBSD supporte les scanners SCSI et USB. Assurez-vous que votre scanner est supporté par SANE avant d'effectuer une quelconque configuration. SANE dispose d'une liste des périphériques supportés qui peut vous informer sur le support et son statut pour un scanner particulier. La page de manuel uscanner(4) donne également une liste des scanners USB supportés.
Comme mentionné plus haut les interfaces SCSI et USB sont supportées. En fonction de l'interface de votre scanner, différents pilotes de périphérique sont nécessaires.
Le noyau GENERIC inclut par défaut les pilotes nécessaires au support des scanners USB. Si vous décidez d'utiliser un noyau personnalisé, assurez-vous que les lignes suivantes sont présentes dans votre fichier de configuration du noyau:
device usb device uhci device ohci device uscanner
En fonction du contrôleur USB présent sur votre carte mère, vous n'avez besoin que d'une des deux lignes device uhci et device ohci, cependant avoir ces deux lignes simultanément dans la configuration du noyau est sans risque.
Si vous ne désirez pas recompiler votre noyau et que votre noyau n'est pas le GENERIC, vous pouvez directement charger le module du pilote uscanner(4) à l'aide de la commande kldload(8):
# kldload uscanner
Pour charger ce module à chaque démarrage du système, ajoutez la ligne suivante au fichier /boot/loader.conf:
uscanner_load="YES"
Après avoir redémarré avec le bon noyau, ou après avoir chargé le module nécessaire, branchez votre scanner USB. Une ligne montrant la détection de votre scanner devrait apparaître dans le tampon des messages du système (dmesg(8)):
uscanner0: EPSON EPSON Scanner, rev 1.10/3.02, addr 2
Ceci nous indique que notre scanner utilise le fichier spécial de périphérique /dev/uscanner0.
Si votre scanner dispose d'une interface SCSI, il est important de connaître quelle carte contrôleur SCSI vous utiliserez. En fonction du contrôleur sur la carte, vous devrez adapter votre configuration du noyau. Le noyau GENERIC supporte les contrôleurs SCSI les plus courants. Assurez-vous d'avoir lu le fichier NOTES et ajoutez la ligne adéquate dans votre fichier de configuration du noyau. En plus du pilote de votre carte SCSI, vous avez besoin des lignes suivantes dans votre fichier de configuration du noyau:
device scbus device pass
Une fois que votre noyau a été correctement compilé et installé, vous devriez être en mesure de voir les périphériques au démarrage:
pass2 at aic0 bus 0 target 2 lun 0 pass2: <AGFA SNAPSCAN 600 1.10> Fixed Scanner SCSI-2 device pass2: 3.300MB/s transfers
Si votre scanner n'était pas alimenté au démarrage du système, il est encore possible de forcer sa détection, en en sondant le bus SCSI avec la commande camcontrol(8):
# camcontrol rescan all Re-scan of bus 0 was successful Re-scan of bus 1 was successful Re-scan of bus 2 was successful Re-scan of bus 3 was successful
Ensuite le scanner apparaîtra dans la liste des périphériques SCSI:
# camcontrol devlist <IBM DDRS-34560 S97B> at scbus0 target 5 lun 0 (pass0,da0) <IBM DDRS-34560 S97B> at scbus0 target 6 lun 0 (pass1,da1) <AGFA SNAPSCAN 600 1.10> at scbus1 target 2 lun 0 (pass3) <PHILIPS CDD3610 CD-R/RW 1.00> at scbus2 target 0 lun 0 (pass2,cd0)
Plus de détails sur les périphériques SCSI sont disponibles dans les pages de manuel scsi(4) et camcontrol(8).
Le système SANE est divisé en deux parties: les “backend”s (graphics/sane-backends) et les “frontend”s (graphics/sane-frontends). Les “backend”s fournissent l'accès au scanner. La liste des périphériques supportés par SANE indique quel “backend” supportera votre scanner. Il est indispensable de déterminer correctement le “backend” relatif à votre scanner si vous voulez être en mesure d'utiliser votre périphérique. La partie “frontend”s fournie l'interface graphique de numérisation (xscanimage).
La première étape est d'installer le logiciel porté graphics/sane-backends ou sa version pré-compilée. Ensuite, utilisez la commande sane-find-scanner pour contrôler la détection du scanner par l'ensemble SANE:
# sane-find-scanner -q found SCSI scanner "AGFA SNAPSCAN 600 1.10" at /dev/pass3
Le résultat de la commande affichera le type d'interface utilisée par le scanner et le fichier spécial de périphérique utilisé pour attacher le scanner au système. Le fabricant et le modèle peuvent ne pas apparaître, cela n'est pas important.
Note : Certains scanners USB requièrent le chargement préalable d'un “firmware”, cela est expliqué dans la page de manuel du “backend” utilisé. Vous devriez également consulter les pages de manuel de sane-find-scanner(1) et sane(7).
Nous devons maintenant vérifier si le scanner sera identifié par un
“frontend” de numérisation. Par défaut, les
“backend”s SANE sont fournies avec un
outil en ligne de commande appelé
scanimage(1).
Cette commande vous permet de lister les périphériques et d'effectuer
une acquisition d'image à partir de la ligne de commande. L'option -L est employée pour afficher les scanners
présents sur le système:
# scanimage -L device `snapscan:/dev/pass3' is a AGFA SNAPSCAN 600 flatbed scanner
Aucun résultat, ou un message disant qu'aucun scanner n'a été identifié indiquent que scanimage(1) est incapable d'identifier le scanner. Si cela se produit, vous devrez éditer le fichier de configuration du “backend” du scanner et définir le type de scanner utilisé. Le répertoire /usr/local/etc/sane.d/ contient tous les fichiers de configurations des “backend”s. Ce problème d'identification apparaît essentiellement avec certains scanners USB.
Par exemple, avec le scanner USB utilisé dans la Section 7.6.2.1, sane-find-scanner nous donne l'information suivante:
# sane-find-scanner -q found USB scanner (UNKNOWN vendor and product) at device /dev/uscanner0
Le scanner est correctement détecté, il utilise l'interface USB et est attaché au fichier spécial de périphérique /dev/uscanner0. Nous pouvons maintenant vérifier si le scanner est correctement identifié:
# scanimage -L No scanners were identified. If you were expecting something different, check that the scanner is plugged in, turned on and detected by the sane-find-scanner tool (if appropriate). Please read the documentation which came with this software (README, FAQ, manpages).
Comme le scanner n'est pas identifié, nous devons éditer le fichier /usr/local/etc/sane.d/epson.conf. Le scanner utilisé était un EPSON Perfection® 1650, nous en déduisons donc que ce scanner utilisera le “backend” epson. Assurez-vous de bien lire les commentaires d'aide présents dans les fichiers de configuration des “backend”s. Les modifications à faire sont relativement simples: commentez toutes les lignes concernant une interface différente de celle utilisée par votre scanner (dans notre cas, nous commenterons toutes les lignes débutant par le mot scsi étant donné que notre scanner utilise une interface USB), ajoutez ensuite à la fin du fichier une ligne indiquant l'interface et le fichier spécial de périphérique utilisé. Dans ce cas, nous ajoutons la ligne suivante:
usb /dev/uscanner0
Veuillez vous assurer de bien lire les commentaires fournis dans les fichiers de configurations des “backend”s ainsi que les pages de manuel correspondantes pour plus de détails concernant la syntaxe correcte à utiliser. Nous pouvons maintenant vérifier si le scanner est identifié:
# scanimage -L device `epson:/dev/uscanner0' is a Epson GT-8200 flatbed scanner
Notre scanner a été identifié. Ce n'est pas important si la marque et le modèle ne correspondent pas au scanner. L'important est le champ `epson:/dev/uscanner0', qui nous donne le “backend” et le fichier spécial de périphérique corrects.
Une fois que la commande scanimage -L est en mesure d'identifier le scanner, la configuration est terminée. Le périphérique est prêt à effectuer sa première numérisation.
Bien que scanimage(1) permette d'effectuer une numérisation à partir de la ligne de commande, il est préférable d'utiliser une interface graphique. SANE offre une interface graphique simple mais efficace: xscanimage (graphics/sane-frontends).
Xsane (graphics/xsane) est une autre interface graphique de numérisation assez populaire. Ce programme offre des fonctions avancées comme différents mode de numérisation (photocopie, fax, etc.), la correction des couleurs, la numérisation par lots, etc. Ces deux applications sont utilisables comme greffon pour GIMP.
Toutes les opérations précédentes ont été effectuées avec les privilèges root. Vous pourrez, cependant, avoir besoin que d'autres utilisateurs puissent accéder au scanner. L'utilisateur devra avoir les permissions de lecture et d'écriture sur le fichier spécial de périphérique /dev/uscanner0 dont le propriétaire est le groupe operator. L'ajout de l'utilisateur joe au groupe operator lui autorisera l'accès au scanner:
# pw groupmod operator -m joe
Pour plus de détails, consultez la page de manuel de pw(8). Vous devez également fixer les permissions d'écriture correctes (0660 or 0664) sur le fichier spécial de périphérique /dev/uscanner0, par défaut le groupe operator n'a qu'un accès en lecture. Cela se fait en ajoutant les lignes suivantes au fichier /etc/devfs.rules:
[system=5] add path uscanner0 mode 660
Ajoutez ensuite ce qui suit au fichier /etc/rc.conf et redémarrez la machine:
devfs_system_ruleset="system"
Plus d'information concernant ces lignes peut être trouvée dans la page de manuel devfs(8).
Note : Bien sûr, pour des raisons de sécurité, vous devriez réfléchir à deux fois avant d'ajouter un utilisateur à n'importe quel groupe, tout particulièrement au groupe operator.
Version française de Marc Fonvieille
<blackend@FreeBSD.org>.
Le noyau est le coeur du système d'exploitation FreeBSD. Il est responsable de la gestion de la mémoire, de la mise en application des contrôles de sécurité, du réseau, des accès disque, et bien plus. Bien que FreeBSD devienne de plus en plus configurable dynamiquement, il est toujours nécessaire occasionnellement de reconfigurer et recompiler votre noyau.
Après la lecture de ce chapitre, vous saurez:
Pourquoi vous pourriez avoir besoin de compiler un noyau sur mesure.
Comment écrire un fichier de configuration du noyau, ou modifier un fichier de configuration existant.
Comment utiliser le fichier de configuration du noyau pour créer et recompiler un nouveau noyau.
Comment installer un nouveau noyau.
Que faire si quelque chose se passe mal.
Toutes les commandes listées dans les exemples de ce chapitre doivent être exécutées en tant que root afin de fonctionner.
Traditionnellement, FreeBSD a eu ce qui s'appelle un noyau ``monolithique''. Cela signifie que le noyau était un gros programme, supportant une liste figée de périphériques, et si vous vouliez modifier le comportement du noyau alors vous deviez compiler un nouveau noyau, et ensuite redémarrer votre ordinateur avec le nouveau noyau.
Aujourd'hui, FreeBSD s'oriente rapidement vers un modèle où une grande partie des fonctions du noyau est contenue dans des modules qui peuvent être dynamiquement chargés et déchargés si nécessaire. Cela permet au noyau de s'adapter au nouveau matériel devenant soudainement disponible (comme les cartes PCMCIA dans un ordinateur portable), ou pour qu'une nouvelle fonctionnalité qui n'était pas nécessaire lors de la compilation du noyau y soit intégrée. On appelle cela un noyau modulaire.
En dépit de cela, il est encore nécessaire d'effectuer certaines configurations de noyau en statique. Dans certains cas c'est parce que la fonctionnalité est si proche du noyau qu'elle ne peut être rendue dynamiquement chargeable. Dans d'autres cas, cela peut tout simplement venir du fait que personne n'a encore pris le temps d'écrire un module dynamiquement chargeable pour cette fonctionnalité.
Compiler un noyau sur mesure est l'un des plus importants rites de passage que doit endurer tout utilisateur BSD. Cette opération, tout en prenant du temps, apportera de nombreuses améliorations à votre système FreeBSD. A la différence du noyau GENERIC, qui doit supporter une large gamme de matériels, un noyau sur mesure ne contient que le support pour votre configuration matérielle. Cela a de nombreux avantages, comme:
Un temps de démarrage plus court. Comme le noyau ne recherchera que le matériel présent sur votre système, le temps nécessaire au démarrage de votre système peut diminuer de façon importante.
Une utilisation plus faible de la mémoire. Un noyau sur mesure utilise souvent moins de mémoire que le noyau GENERIC, ce qui est important car le noyau doit toujours résider en mémoire. Pour cette raison, un noyau sur mesure est tout particulièrement utile sur un système dont les ressources mémoire sont limitées.
Le support de matériels supplémentaires. Un noyau sur mesure vous permet d'intégrer le support pour des périphériques, qui ne sont pas présents dans le noyau GENERIC comme les cartes son.
Commençons par passer rapidement en revue le répertoire de configuration du noyau. Tous les chemins d'accès mentionnés seront relatifs au répertoire principal /usr/src/sys, qui est également accessible via le lien symbolique /sys. Il comporte un certain nombre de sous-répertoires correspondants à différentes parties du noyau, mais les plus importantes, en ce qui nous concerne, sont arch/conf, où vous éditerez votre fichier configuration personnalisé, et compile, qui est l'espace de travail où votre noyau sera compilé. arch représente une des architectures suivante: i386, soit alpha, amd64, ia64, powerpc, sparc64, ou encore pc98 (une branche alternative de développement de l'architecture PC, populaire au Japon). Tout ce qui se trouve dans un répertoire particulier à une architecture est propre uniquement à cette architecture; le reste du code est un code indépendant du type de machine et commun à toutes les plates-formes sur lesquelles FreeBSD pourrait être potentiellement porté. Remarquez l'organisation logique de l'arborescence des répertoires, où chaque périphérique, système de fichiers, et option supportés a son propre sous-répertoire.
Les exemples de ce chapitre supposent que vous utilisez l'architecture i386. Si ce n'est pas votre cas, effectuez les ajustements appropriés au niveau des chemins d'accès pour votre architecture.
Note : S'il n'y a pas de répertoire /usr/src/sys sur votre système, alors c'est que les sources du noyau n'ont pas été installées. La manière la plus facile de les installer est d'exécuter sysinstall en tant que root, et sélectionner Configure, puis Distributions, src, puis base et sys. Si vous avez une aversion envers sysinstall et que vous disposez d'un CDROM ``officiel'' de FreeBSD, alors vous pouvez installer les sources depuis la ligne de commande:
# mount /cdrom # mkdir -p /usr/src/sys # ln -s /usr/src/sys /sys # cat /cdrom/src/ssys.[a-d]* | tar -xzvf - # cat /cdrom/src/sbase.[a-d]* | tar -xzvf -
Ensuite allez dans le répertoire arch/conf et copiez le fichier de configuration GENERIC dans un fichier qui portera le nom que vous voulez donner à votre noyau. Par exemple:
# cd /usr/src/sys/i386/conf # cp GENERIC MONNOYAU
Par tradition, c'est un nom en majuscules, et si vous maintenez plusieurs machines FreeBSD avec des configurations matérielles différentes, c'est une bonne idée de lui donner le même nom que la machine. Nous l'appellerons MONNOYAU pour les besoins de cet exemple.
Astuce : Conserver votre fichier de configuration du noyau directement sous /usr/src peut être une mauvaise idée. Si vous avez des problèmes il peut être tentant de juste effacer /usr/src et recommencer à nouveau. Après avoir fait cela ne prends que quelques secondes pour vous rendre compte que vous venez d'effacer votre fichier de configuration du noyau personnalisé. N'éditez pas, non plus, directement le fichier GENERIC, il peut être écrasé à la prochaine mise à jour de l'arborescence des sources, et vos modifications seraient perdues.
Vous voudrez peut être conserver votre fichier de configuration du noyau ailleurs et alors créer un lien symbolique vers le fichier dans le répertoire i386.
Par exemple:
# cd /usr/src/sys/i386/conf # mkdir /root/noyaux # cp GENERIC /root/noyaux/MONNOYAU # ln -s /root/noyaux/MONNOYAU
Editez maintenant MONNOYAU avec votre éditeur de texte préféré. Si vous venez tout juste de finir l'installation, le seul éditeur disponible sera probablement vi, qui est trop complexe pour être décrit ici, mais est bien expliqué dans de nombreux ouvrages de la bibliographie. Cependant, FreeBSD offre un éditeur plus simple appelé ee qui, si vous êtes débutant, sera votre éditeur de choix. N'hésitez pas à modifier les commentaires d'entête pour y décrire votre configuration ou les modifications que vous avez apportés par rapport au noyau GENERIC.
Si vous avez déjà compilé un noyau sur SunOS ou tout autre système d'exploitation BSD, l'essentiel de fichier vous sera familier. Si vous venez d'un système d'exploitation comme DOS, à l'inverse, le fichier de configuration GENERIC vous paraîtra inintelligible, lisez alors lentement et attentivement la section sur le fichier de configuration.
Note : Si vous synchronisez votre arborescence des sources avec les toutes dernières sources du projet FreeBSD, assurez-vous de toujours lire le fichier /usr/src/UPDATING avant d'effectuer une quelconque opération de mise à jour. Ce fichier décrit les problèmes importants ou les domaines demandant une attention particulière dans le code mis à jour. /usr/src/UPDATING correspond toujours à votre version des sources de FreeBSD, et est donc plus à jour que ce Manuel.
Vous devez maintenant compiler le code source du noyau.
Compiler un noyau
Passez dans le répertoire /usr/src.
# cd /usr/src
Compilez le noyau:
# make buildkernel KERNCONF=MONNOYAU
Installez le nouveau noyau:
# make installkernel KERNCONF=MONNOYAU
Note : Il est indispensable d'avoir l'intégralité des sources du système FreeBSD pour compiler le noyau.
Astuce : Par défaut, quand vous compilez un noyau personnalisé, tous les modules seront également recompilés. Si vous désirez mettre à jour un noyau plus rapidement ou compiler que certains modules, vous devez éditer le fichier /etc/make.conf avant de compiler le noyau:
MODULES_OVERRIDE = linux acpi sound/sound sound/driver/ds1 ntfsCette variable définit une liste de modules à compiler à la place de l'intégralité des modules.
WITHOUT_MODULES = linux acpi sound/sound sound/driver/ds1 ntfsCette variable définit une liste de modules à exclure du processus de compilation. Pour d'autres variables qui peuvent être intéressantes pour le processus de compilation du noyau, consultez la page de manuel make.conf(5).
Le nouveau noyau sera copié dans le répertoire /boot/kernel avec le nom /boot/kernel/kernel et l'ancien noyau sera renommé en /boot/kernel.old/kernel. Maintenant, arrêtez le système et redémarrez pour utiliser votre nouveau noyau. Si quelque chose se passe mal, il y a quelques instructions de dépannage à la fin de ce chapitre que vous pourrez trouver utiles. Assurez-vous de lire la section qui explique comment revenir en arrière dans le cas où votre nouveau noyau ne démarre pas.
Note : Les autres fichiers concernant le processus de démarrage, comme le chargeur (loader(8)) et la configuration du démarrage sont conservés dans le répertoire /boot. Les modules tiers et personnalisés peuvent être placés dans /boot/kernel, bien que les utilisateurs doivent être conscients que garder ses modules synchronisés avec le noyau compilé est très important. Les modules qui ne sont pas destinés à fonctionner avec le noyau compilé peuvent être instables et ne pas donner les résultats escomptés.
Le format général du fichier de configuration est assez simple. Chaque ligne est composée d'un mot-clé et d'un ou plusieurs arguments. Pour simplifier, la plupart des lignes ne contiennent qu'un seul argument. Tout ce qui suit le caractère # est considéré comme un commentaire et ignoré. Les sections suivantes décrivent chaque mot-clé, dans l'ordre où ils apparaissent dans le fichier GENERIC. Pour une liste exhaustive des options et périphériques dépendants de l'architecture utilisée, consultez le fichier NOTES présent dans le même répertoire que le fichier GENERIC. Pour les options ne dépendant pas de l'architecture, consultez le fichier /usr/src/sys/conf/NOTES.
Note : Pour compiler un fichier contenant toutes les options possibles, en général pour effectuer des tests, exécutez la commande suivante en tant que root:
# cd /usr/src/sys/i386/conf && make LINT
Ce qui suit est un exemple de fichier de configuration du noyau GENERIC avec divers commentaires aux endroits nécessaires pour un peu plus de clarté. Cet exemple devrait correspondre de façon très proche à votre copie du fichier /usr/src/sys/i386/conf/GENERIC.
machine i386
C'est l'architecture de la machine. Elle doit être alpha, amd64, i386, ia64, pc98, powerpc, ou encore sparc64.
cpu I486_CPU cpu I586_CPU cpu I686_CPU
Ce qui précède définit le type de CPU présent dans votre système. Il peut y avoir plusieurs occurrences de la ligne CPU (si, par exemple, vous n'êtes pas sûr de devoir utiliser I586_CPU ou I686_CPU), cependant, pour un noyau personnalisé, il est mieux de spécifier uniquement le CPU que vous avez. Si vous n'êtes pas sûr du type, vous pouvez lister le fichier /var/run/dmesg.boot pour visualiser les messages de démarrage.
ident GENERIC
C'est l'identification du noyau. Vous devriez changer cela pour le nom, quel qu'il soit, que vous donnez à votre noyau, par exemple MONNOYAU si vous avez suivi les instructions des exemples précédents. La valeur que vous donnez à la chaîne ident s'affichera au démarrage du noyau, il est donc utile de donner au nouveau noyau un nom différent si vous voulez le différencier de votre noyau habituel (e.g., vous voulez compiler un noyau expérimental).
#To statically compile in device wiring instead of /boot/device.hints #hints "GENERIC.hints" #Default places to look for devices.
Le fichier device.hints(5) est utilisé pour configurer les paramètres des pilotes de périphériques. Le loader(8) recherchera le fichier /boot/device.hints au démarrage. En utilisant l'option hints vous pouvez compiler ces valeurs en statique dans votre noyau. Il n'est alors pas utile de créer de fichier device.hints dans /boot.
makeoptions DEBUG=-g #Build kernel with gdb(1) debug symbols
Le processus normal de compilation de FreeBSD inclut les informations de
débogage lors de la compilation du noyau avec l'option -g, qui autorisera les informations de débogage quand le
noyau sera passé à gcc(1).
options SCHED_4BSD # 4BSD scheduler
L'ordonnanceur (“scheduler”) traditionnel et par défaut de FreeBSD. Conservez cette ligne.
options PREEMPTION # Enable kernel thread preemption
Permet aux processus légers présents dans le noyau d'être devancés par des processus de priorité plus élevée. Cela améliore l'interactivité et permet aux processus d'interruption d'être exécutés le plus tôt possible au lieu d'attendre leur tour.
options INET #InterNETworking
Support réseau. Conservez-le, même si vous n'envisagez pas de vous connecter à un réseau. La plupart des programmes utilisent le réseau ``en boucle'' (i.e., établissent des connexions réseau avec le PC lui-même), cette option est donc quasiment obligatoire.
options INET6 #IPv6 communications protocols
Ceci active les protocoles de communication IPv6.
options FFS #Berkeley Fast Filesystem
C'est le système de fichiers de base sur disque dur. Gardez ces options si vous démarrez depuis le disque dur.
options SOFTUPDATES #Enable FFS Soft Updates support
Cette option rajoutera le support des “Soft Updates” dans le noyau, ce qui aidera l'accélération des accès en écriture sur les disques. Même quand cette fonction est fournit par le noyau, elle doit être activée sur chaque disque. Regardez le résultat de la commande mount(8) pour voir si les “Soft Updates” sont activées sur les disques de votre système. Si vous ne voyez pas apparaître l'option soft-updates alors vous devrez l'activer en utilisant les commandes tunefs(8) (pour les systèmes de fichiers existant) ou newfs(8) (pour les nouveaux systèmes de fichiers).
options UFS_ACL #Support for access control lists
Cette option active le support des listes de contrôle d'accès au système de fichiers (ACL). Elles reposent sur l'utilisation d'attributs étendus et d'UFS2, cette fonctionnalité est décrite dans la Section 14.12. Les ACLs sont activées par défaut, et leur support ne devraient pas être retiré du noyau si elles ont été précédemment utilisées sur un système de fichiers, étant donné que cela supprimera les listes de contrôle d'accès changeant alors la façon dont sont protégés les fichiers d'une manière imprévisible.
options UFS_DIRHASH #Improve performance on big directories
Cette option inclut certaines fonctions pour accélérer les opérations disque sur de gros répertoires, aux dépens d'employer de la mémoire supplémentaire. Vous conserverez normalement cela pour un gros serveur, ou une station de travail très active, et vous l'enlèverez si vous utilisez FreeBSD sur un petit système où la mémoire prime et la vitesse d'accès disque est moins importante, comme pour un coupe-feu.
options MD_ROOT #MD is a potential root device
Cette option active le support pour des disques virtuels en mémoire utilisés comme périphérique racine.
options NFSCLIENT # Network Filesystem Client options NFSSERVER # Network Filesystem Server options NFS_ROOT # NFS usable as /, requires NFSCLIENT
Le système de fichiers réseau. A moins que vous n'envisagiez de monter des partitions d'un serveur de fichiers UNIX par l'intermédiaire d'un réseau TCP/IP, vous pouvez mettre en commentaire ces options.
options MSDOSFS #MSDOS Filesystem
Le système de fichiers MS-DOS. A moins que vous n'envisagiez de monter une partition DOS d'un disque dur au démarrage, vous pouvez sans risque commenter cette option. Le module sera automatiquement chargé la première fois que vous monterez une partition DOS, comme décrit plus haut. Par ailleurs, l'excellent logiciel emulators/mtools vous permet d'accéder à des disquettes DOS sans avoir besoin de les monter (et ne requiert pas non plus MSDOSFS).
options CD9660 #ISO 9660 Filesystem
Le système de fichiers ISO 9660 pour les CDROMs. Commentez ces options si vous n'avez pas de lecteur de CDROM ou que vous ne montez qu'occasionnellement des CDROMs (il sera chargé dynamiquement dès que vous monterez un CDROM). Les CDROMs audios n'ont pas besoin de ce système de fichiers.
options PROCFS # Process filesystem (requires PSEUDOFS)
Le système de fichiers pour les processus. C'est un ``pseudo-système'' de fichiers monté sur /proc qui permet à des programmes comme ps(1) de vous fournir plus d'informations sur les processus qui tournent sur le système. L'utilisation de PROCFS n'est pas nécessaire la plupart du temps, comme la majeur partie des outils de débogage et de monitoring ont été adaptés pour s'exécuter sans PROCFS: les nouvelles installations ne monteront pas par défaut ce système de fichiers.
options PSEUDOFS #Pseudo-filesystem framework
Les noyaux 6.X faisant usage du système PROCFS doivent également inclure le support pour PSEUDOFS.
options GEOM_GPT # GUID Partition Tables.
Cette option apporte la possibilité d'avoir un grand nombre de partitions sur un seul disque.
options COMPAT_43 #Compatible with BSD 4.3 [KEEP THIS!]
Compatibilité avec 4.3BSD. Conservez cette option; certains programmes auront un comportement bizarre si vous la commentez.
options COMPAT_FREEBSD4 #Compatible with FreeBSD4
Cette option est nécessaires aux systèmes i386 et Alpha fonctionnant sous FreeBSD 5.X pour supporter les applications compilées sur d'anciennes version de FreeBSD qui utilisent d'anciennes interfaces d'appel système. Il est recommandé d'utiliser cette option sur tous les systèmes i386 et Alpha susceptibles d'exécuter d'anciennes applications; les plateformes apparues sous FreeBSD 5.0, comme l'ia64 et SPARC64, n'ont pas besoin de cette option.
options COMPAT_FREEBSD5 # Compatible with FreeBSD5
Cette option est nécessaire sous FreeBSD 6.X et versions supérieures pour supporter les applications compilées sous FreeBSD 5.X et qui utilisent les interfaces d'appel système FreeBSD 5.X.
options SCSI_DELAY=5000 #Delay (in ms) before probing SCSI
Cette option oblige le noyau à attendre 5 secondes avant de rechercher les périphériques SCSI présents sur votre système. Si vous n'avez que des disques IDE, vous pouvez l'ignorer, sinon vous pouvez essayer de diminuer cette valeur, pour accélérer le démarrage du système. Bien sûr, si vous le faites, et que FreeBSD a du mal à reconnaître vos périphériques SCSI, vous devrez l'augmenter à nouveau.
options KTRACE #ktrace(1) support
Ceci permet de tracer le processus du noyau, ce qui est utile pour le débogage.
options SYSVSHM #SYSV-style shared memory
Cette option implémente la mémoire partagée System V. L'usage le plus courant qui en est fait est l'extension XSHM d'X, dont de nombreux logiciels gourmants en graphique tireront automatiquement parti pour fonctionner plus vite. Si vous utilisez X, vous utiliserez absolument cette option.
options SYSVMSG #SYSV-style message queues
Support des messages System V. Cette option n'augmente que de quelques centaines d'octets la taille du noyau.
options SYSVSEM #SYSV-style semaphores
Support des sémaphores System V. D'un usage moins courant, mais n'augmente la taille du noyau que de quelques centaines d'octets.
Note : L'option
-pde la commande ipcs(1) donnera la liste des processus utilisant chacun de ces mécanismes System V.
options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
Extensions temps-réel ajoutées dans la norme POSIX® 1993. Certaines applications du catalogue des logiciels portés les utilisent (comme StarOffice).
options KBD_INSTALL_CDEV # install a CDEV entry in /dev
Cette option concerne le clavier. Elle installe une entrée CDEV dans le répertoire /dev.
options ADAPTIVE_GIANT # Giant mutex is adaptive.
“Giant” est le nom d'un mécanisme d'exclusion mutuelle (un “mutex” dormant) qui protège l'accès à un ensemble important de ressources du noyau. Aujourd'hui c'est un goulot d'étranglement des performances inacceptable que l'on est en train de remplacer activement par des verrous qui protègent les ressources individuelles. L'option ADAPTIVE_GIANT permet à Giant d'être inclus dans l'ensemble des mutex lancés de manière adaptative. C'est à dire, quand un thread désire verrouiller le mutex Giant, mais que ce dernier est déjà verrouillé par un thread sur un autre CPU, le premier thread continuera à fonctionner et attendra la libération du verrou. Normalement, le thread retournera à l'état dormant et attendra une nouvelle chance de pouvoir s'exécuter. Si vous n'êtes pas sûr, laissez la configuration en l'état.
device apic # I/O APIC
Le périphérique apic active l'utilisation de l'E/S APIC pour l'acheminement des interruptions. Le périphérique apic peut être utilisé dans les noyaux UP (monoprocesseur) et SMP, mais est requis pour les noyaux SMP. Ajoutez options SMP pour inclure le support pour plusieurs processeurs.
Note : Le périphérique apic n'existe que sur l'architecture i386, cette ligne de configuration ne doit pas être utilisée sur d'autres architectures.
device eisa
Rajoutez cela si vous avez une carte mère EISA. Cela permet l'auto-détection et la configuration de tous les périphériques présents sur le bus EISA.
device pci
Ajoutez cette option si vous avez une carte mère PCI. Cela permet l'auto-détection des cartes PCI et gère l'interface entre les bus PCI et ISA.
# Floppy drives device fdc
C'est le contrôleur de lecteur de disquettes.
# ATA and ATAPI devices device ata
Ce pilote supporte tous les périphériques ATA et ATAPI. Vous n'avez besoin que d'une seule ligne device ata pour que le noyau détecte tous les périphériques PCI ATA/ATAPI sur les machines modernes.
device atadisk # ATA disk drives
Ceci est requis avec device ata pour les disques ATA.
device ataraid # ATA RAID drives
Ceci est nécessaire avec device ata pour les disques RAID ATA.
device atapicd # ATAPI CDROM drives
Ceci est nécessaire avec device ata pour le support des lecteurs de CDROM ATAPI.
device atapifd # ATAPI floppy drives
Ceci est nécessaire avec device ata pour le support des lecteurs de disquettes ATAPI.
device atapist # ATAPI tape drives
Ceci est nécessaire avec device ata pour le support des lecteurs de bande ATAPI.
options ATA_STATIC_ID #Static device numbering
Cela rend la numérotation des périphériques statique, sans cela l'allocation des numéros de périphériques sera dynamique.
# SCSI Controllers
device ahb # EISA AHA1742 family
device ahc # AHA2940 and onboard AIC7xxx devices
options AHC_REG_PRETTY_PRINT # Print register bitfields in debug
# output. Adds ~128k to driver.
device ahd # AHA39320/29320 and onboard AIC79xx devices
options AHD_REG_PRETTY_PRINT # Print register bitfields in debug
# output. Adds ~215k to driver.
device amd # AMD 53C974 (Teckram DC-390(T))
device isp # Qlogic family
#device ispfw # Firmware for QLogic HBAs- normally a module
device mpt # LSI-Logic MPT-Fusion
#device ncr # NCR/Symbios Logic
device sym # NCR/Symbios Logic (newer chipsets + those of `ncr')
device trm # Tekram DC395U/UW/F DC315U adapters
device adv # Advansys SCSI adapters
device adw # Advansys wide SCSI adapters
device aha # Adaptec 154x SCSI adapters
device aic # Adaptec 15[012]x SCSI adapters, AIC-6[23]60.
device bt # Buslogic/Mylex MultiMaster SCSI adapters
device ncv # NCR 53C500
device nsp # Workbit Ninja SCSI-3
device stg # TMC 18C30/18C50
Contrôleurs SCSI. Mettez en commentaires ceux que vous n'avez pas sur votre système. Si vous n'avez qu'un système IDE, vous pouvez supprimer toutes ces lignes. Les lignes *_REG_PRETTY_PRINT sont des options de débogage pour leur pilote respectif.
# SCSI peripherals device scbus # SCSI bus (required for SCSI) device ch # SCSI media changers device da # Direct Access (disks) device sa # Sequential Access (tape etc) device cd # CD device pass # Passthrough device (direct SCSI access) device ses # SCSI Environmental Services (and SAF-TE)
Périphériques SCSI. A nouveau, mettez en commentaires tous ceux que vous n'avez pas, ou si vous n'avez que du matériel IDE, vous pouvez tous les supprimer.
Note : Le pilote USB umass(4) et quelques autres pilotes utilisent le sous-système SCSI même si ce ne sont pas de véritables périphériques SCSI. Par conséquent assurez-vous de ne pas retirer le support SCSI si un tel pilote fait partie de la configuration du noyau.
# RAID controllers interfaced to the SCSI subsystem device amr # AMI MegaRAID device arcmsr # Areca SATA II RAID device asr # DPT SmartRAID V, VI and Adaptec SCSI RAID device ciss # Compaq Smart RAID 5* device dpt # DPT Smartcache III, IV - See NOTES for options device hptmv # Highpoint RocketRAID 182x device rr232x # Highpoint RocketRAID 232x device iir # Intel Integrated RAID device ips # IBM (Adaptec) ServeRAID device mly # Mylex AcceleRAID/eXtremeRAID device twa # 3ware 9000 series PATA/SATA RAID # RAID controllers device aac # Adaptec FSA RAID device aacp # SCSI passthrough for aac (requires CAM) device ida # Compaq Smart RAID device mfi # LSI MegaRAID SAS device mlx # Mylex DAC960 family device pst # Promise Supertrak SX6000 device twe # 3ware ATA RAID
Contrôleurs RAID supportés. Si vous n'avez aucun de ces derniers dans votre système, vous pouvez les mettre en commentaires ou les supprimer.
# atkbdc0 controls both the keyboard and the PS/2 mouse device atkbdc # AT keyboard controller
Le contrôleur du clavier (atkbdc) permet de gérer les E/S du clavier AT et des périphériques de pointage PS/2. Ce contrôleur est nécessaire au pilote de périphérique du clavier (atkbd) et celui des périphériques de pointage PS/2 (psm).
device atkbd # AT keyboard
Le pilote de périphérique atkbd, associé au contrôleur atkbdc, fournit un accès au clavier AT 84 touches ou au clavier AT étendu qui est connecté au contrôleur de clavier de la machine.
device psm # PS/2 mouse
Utilisez ce périphérique si votre souris se branche sur le port PS/2.
device kbdmux # keyboard multiplexer
Support de base pour le multiplexage de claviers. Si vous n'avez pas l'intention d'utiliser sur le système plus d'un clavier, vous pouvez supprimer cette ligne sans risque.
device vga # VGA video card driver
Pilote de la carte graphique.
device splash # Splash screen and screen saver support
Ecran/bannière de démarrage. Les économiseurs d'écran ont également besoin de ce pseudo-périphérique.
# syscons is the default console driver, resembling an SCO console device sc
sc est le pilote par défaut pour la console, qui ressemble à une console SCO. Comme la plupart des programmes en mode plein-écran accèdent à la console par l'intermédiaire d'une base de données de description des terminaux comme termcap, cela n'a guère d'importance que vous choisissiez ce pilote ou vt, le pilote compatible VT220. Quand vous ouvrez une session, positionnez votre variable d'environnement TERM à scoansi si vous avez des problèmes pour utiliser des programmes en mode plein-écran avec cette console.
# Enable this for the pcvt (VT220 compatible) console driver #device vt #options XSERVER # support for X server on a vt console #options FAT_CURSOR # start with block cursor
C'est le pilote de console compatible VT220, et, rétrospectivement, compatible VT100/102. Il fonctionne bien sur certains ordinateurs portables qui sont matériellement incompatibles avec le pilote sc. Comme précédemment, positionnez la variable d'environnement TERM lorsque que vous ouvrez une session, mais cette fois-ci à vt100 ou vt220. Ce pilote peut aussi s'avérer utile quand vous vous connectez à un grand nombre de machines différentes par le réseau sur lesquelles les entrées pour le périphérique sc ne sont souvent pas définies dans leurs fichiers termcap ou terminfo -- alors que le terminal vt100 devrait être disponible sur pratiquement toutes les plates-formes.
device agp
Ajoutez cette option si vous avez une carte AGP dans votre système. Cela activera le support AGP, et l'AGP GART pour les cartes qui ont cette fonction.
# Power management support (see NOTES for more options) device apm
``Advanced Power Management support'' - gestion avancée de l'énergie. Utile pour les ordinateurs portables, ceci est cependant désactivé par défaut dans le noyau GENERIC sous FreeBSD 5.X et versions suivantes
# Add suspend/resume support for the i8254. device pmtimer
Pilote du périphérique de gestion du temps pour les événements de la gestion de l'énergie, comme l'APM ou l'ACPI.
# PCCARD (PCMCIA) support # PCMCIA and cardbus bridge support device cbb # cardbus (yenta) bridge device pccard # PC Card (16-bit) bus device cardbus # CardBus (32-bit) bus
Support PCMCIA. Vous en avez besoin si vous utilisez un ordinateur portable.
# Serial (COM) ports device sio # 8250, 16[45]50 based serial ports
Cela représente les ports séries, appelés ports COM dans le monde MS-DOS/Windows.
Note : Si vous avez un modem interne sur le port COM4 et un port série COM2, vous devrez changer l'IRQ du modem en 2 (pour d'obscures raisons techniques, IRQ 2 = IRQ 9) pour y accéder avec FreeBSD. Si vous avez une carte série multi-ports, consultez la page de manuel de sio(4) pour plus d'informations sur les bonnes valeurs à ajouter à votre fichier /boot/device.hints. Certaines cartes vidéo (notamment celle à base de circuits S3) utilisent des adresses d'E/S sous la forme 0x*2e8, et comme de nombreuses cartes séries bon marché de décodent pas complètement l'espace d'adresse d'E/S 16 bits, il y a aura des conflits avec ces cartes, rendant le port COM4 pratiquement inutilisable.
Chaque port série doit avoir une IRQ unique (à moins que vous n'utilisiez une carte multi-ports qui autorise le partage d'interruption), donc les IRQs par défaut pour les ports COM3 et COM4 ne peuvent être utilisées.
# Parallel port device ppc
C'est l'interface parallèle du bus ISA.
device ppbus # Parallel port bus (required)
Fournit le support pour le bus du port parallèle.
device lpt # Printer
Support pour les imprimantes parallèles.
Note : Les trois lignes précédentes sont nécessaires pour permettre le support des imprimantes parallèles.
device plip # TCP/IP over parallel
C'est le pilote pour l'interface réseau sur port parallèle.
device ppi # Parallel port interface device
Port d'E/S d'usage général (``geek port'') + port d'E/S IEEE1284.
#device vpo # Requires scbus and da
Ceci est pour le lecteur Zip de Iomega. Les options scbus et da sont également requises. Les meilleures performances sont obtenues avec les ports configurés dans le mode EPP 1.9.
#device puc
Décommentez ce périphérique si vous disposez d'une carte PCI série ou parallèle “idiote” qui est supportée par le pilote puc(4).
# PCI Ethernet NICs. device de # DEC/Intel DC21x4x (“Tulip”) device em # Intel PRO/1000 adapter Gigabit Ethernet Card device ixgb # Intel PRO/10GbE Ethernet Card device txp # 3Com 3cR990 (“Typhoon”) device vx # 3Com 3c590, 3c595 (“Vortex”)
Divers pilotes de cartes réseaux PCI. Mettez en commentaires ou supprimer les lignes de celles qui ne sont pas présentes sur votre système.
# PCI Ethernet NICs that use the common MII bus controller code. # NOTE: Be sure to keep the 'device miibus' line in order to use these NICs! device miibus # MII bus support
Le support du bus MII est nécessaire pour certaines cartes Ethernet PCI 10/100, à savoir celles qui utilisent des interfaces compatibles MII ou implémentent une gestion de l'interface opérant comme le bus MII. Ajouter device miibus à la configuration du noyau intègre le support pour l'API miibus générique et tous les pilotes d'interfaces PHY, incluant un pilote générique pour les interfaces PHYs qui ne sont pas spécifiquements gérées par un pilote individuel.
device bce # Broadcom BCM5706/BCM5708 Gigabit Ethernet device bfe # Broadcom BCM440x 10/100 Ethernet device bge # Broadcom BCM570xx Gigabit Ethernet device dc # DEC/Intel 21143 and various workalikes device fxp # Intel EtherExpress PRO/100B (82557, 82558) device lge # Level 1 LXT1001 gigabit ethernet device msk # Marvell/SysKonnect Yukon II Gigabit Ethernet device nge # NatSemi DP83820 gigabit ethernet device nve # nVidia nForce MCP on-board Ethernet Networking device pcn # AMD Am79C97x PCI 10/100 (precedence over 'lnc') device re # RealTek 8139C+/8169/8169S/8110S device rl # RealTek 8129/8139 device sf # Adaptec AIC-6915 (“Starfire”) device sis # Silicon Integrated Systems SiS 900/SiS 7016 device sk # SysKonnect SK-984x & SK-982x gigabit Ethernet device ste # Sundance ST201 (D-Link DFE-550TX) device stge # Sundance/Tamarack TC9021 gigabit Ethernet device ti # Alteon Networks Tigon I/II gigabit Ethernet device tl # Texas Instruments ThunderLAN device tx # SMC EtherPower II (83c170 “EPIC”) device vge # VIA VT612x gigabit ethernet device vr # VIA Rhine, Rhine II device wb # Winbond W89C840F device xl # 3Com 3c90x (“Boomerang”, “Cyclone”)
Pilotes qui utilisent le code du contrôleur du bus MII.
# ISA Ethernet NICs. pccard NICs included. device cs # Crystal Semiconductor CS89x0 NIC # 'device ed' requires 'device miibus' device ed # NE[12]000, SMC Ultra, 3c503, DS8390 cards device ex # Intel EtherExpress Pro/10 and Pro/10+ device ep # Etherlink III based cards device fe # Fujitsu MB8696x based cards device ie # EtherExpress 8/16, 3C507, StarLAN 10 etc. device lnc # NE2100, NE32-VL Lance Ethernet cards device sn # SMC's 9000 series of Ethernet chips device xe # Xircom pccard Ethernet # ISA devices that use the old ISA shims #device le
Pilotes pour les cartes Ethernet ISA. Consultez le fichier /usr/src/sys/i386/conf/NOTES pour savoir quelles cartes sont supportées et par quel pilote.
# Wireless NIC cards device wlan # 802.11 support
Support 802.11 générique. Cette ligne est nécessaire pour le réseau sans fil.
device wlan_wep # 802.11 WEP support device wlan_ccmp # 802.11 CCMP support device wlan_tkip # 802.11 TKIP support
Support pour le chiffrage pour les périphériques 802.11. Ces lignes sont nécessaires si vous avez l'intention d'utiliser le chiffrage et les protocoles de sécurité 802.11i.
device an # Aironet 4500/4800 802.11 wireless NICs. device ath # Atheros pci/cardbus NIC's device ath_hal # Atheros HAL (Hardware Access Layer) device ath_rate_sample # SampleRate tx rate control for ath device awi # BayStack 660 and others device ral # Ralink Technology RT2500 wireless NICs. device wi # WaveLAN/Intersil/Symbol 802.11 wireless NICs. #device wl # Older non 802.11 Wavelan wireless NIC.
Support pour diverses cartes réseau sans fil.
# Pseudo devices device loop # Network loopback
C'est l'interface générique en boucle de TCP/IP. Si vous employez telnet ou FTP sur localhost (aussi connu en tant qu'adresse 127.0.0.1) la réponse vous parviendra via ce pseudo-périphérique. Ceci est obligatoire.
device random # Entropy device
Générateur de nombres aléatoire sécurisé pour les applications de chiffrement.
device ether # Ethernet support
ether ne sert que si vous avez une carte Ethernet. Cela intègre le code générique pour le protocole Ethernet.
device sl # Kernel SLIP
sl est le support pour le protocole SLIP. Il a été presque entièrement supplanté par le protocole PPP, plus facile à mettre en oeuvre, mieux adapté aux connexions par modem, et aussi plus puissant.
device ppp # Kernel PPP
C'est le support intégré au noyau du protocole PPP pour les connexions par modem. Il y a aussi une version de PPP sous forme de programme utilisateur qui utilise tun et offre plus de souplesse et de possibilités comme la connexion à la demande.
device tun # Packet tunnel.
Ceci est utilisé par le programme PPP en mode utilisateur. Voyez la section PPP de ce manuel pour plus d'informations.
device pty # Pseudo-ttys (telnet etc)
C'est un ``pseudo-terminal'' ou un port simulant une session. Il est utilisé par les sessions telnet et rlogin entrantes, par xterm, et d'autres applications comme Emacs.
device md # Memory “disks”
Pseudo-périphérique de disque mémoire.
device gif # IPv6 and IPv4 tunneling
Ceci implémente l'encapsulation du protocole IPv6 par dessus l'IPv4, l'IPv4 par dessus l'IPv6, l'encapsulation IPv4 par dessus l'IPv4, et IPv6 par dessus IPv6. Le périphérique gif “s'auto-duplique”, et créera les fichiers spéciaux de périphérique en fonction des besoins.
device faith # IPv6-to-IPv4 relaying (translation)
Ce pseudo-périphérique capture les paquets qui lui sont envoyés et les détourne vers le ``daemon'' de translation IPv4/IPv6.
# The `bpf' device enables the Berkeley Packet Filter. # Be aware of the administrative consequences of enabling this! # Note that 'bpf' is required for DHCP. device bpf # Berkeley packet filter
C'est le filtre de paquets de Berkeley. Ce pseudo-périphérique permet de placer les interfaces en mode ``promiscuous'' (indiscret), pour capturer chaque paquet sur réseau de diffusion (e.g., un réseau Ethernet). Ces paquets peuvent être enregistrés sur le disque et/ou examinés avec le programme tcpdump(1).
Note : Le périphérique bpf(4) est également utilisé par dhclient(8) pour obtenir une adresse IP du routeur par défaut (passerelle) et ainsi de suite. Si vous utilisez DHCP, conservez cette ligne non commentée.
# USB support device uhci # UHCI PCI->USB interface device ohci # OHCI PCI->USB interface device ehci # EHCI PCI->USB interface (USB 2.0) device usb # USB Bus (required) #device udbp # USB Double Bulk Pipe devices device ugen # Generic device uhid # “Human Interface Devices” device ukbd # Keyboard device ulpt # Printer device umass # Disks/Mass storage - Requires scbus and da device ums # Mouse device ural # Ralink Technology RT2500USB wireless NICs device urio # Diamond Rio 500 MP3 player device uscanner # Scanners # USB Ethernet, requires mii device aue # ADMtek USB Ethernet device axe # ASIX Electronics USB Ethernet device cdce # Generic USB over Ethernet device cue # CATC USB Ethernet device kue # Kawasaki LSI USB Ethernet device rue # RealTek RTL8150 USB Ethernet
Support pour divers périphériques USB.
# FireWire support device firewire # FireWire bus code device sbp # SCSI over FireWire (Requires scbus and da) device fwe # Ethernet over FireWire (non-standard!)
Support pour divers périphériques Firewire.
Pour plus d'informations et pour avoir la liste de périphériques supplémentaires supportés par FreeBSD, voyez le fichier /usr/src/sys/i386/conf/NOTES.
Les machines à configuration mémoire importante ont besoin de pouvoir accéder à plus d'espace mémoire utilisateur et noyau que la limite des 4 gigaoctets de l'espace d'adresse noyau+utilisateur (``Kernel Virtual Address''--KVA). En raison de cette limite, Intel a ajouté le support d'adresses physiques sur 36 bits pour l'espace d'adresses dans les familles de microprocesseurs Pentium Pro et suivantes.
L'extension de l'adressage physique--,``Physical Address Extension'' (PAE) est une caractéristique des
microprocesseurs Intel Pentium Pro et suivants autorisant les configurations
mémoires jusqu'à 64 gigaoctets. FreeBSD fournit un support pour
cette caratéristique via l'option de configuration du noyau PAE, disponible sous toutes les versions actuelles de FreeBSD.
En raison des limitations de l'architecture mémoire Intel, aucune distinction n'est faite entre la
mémoire au-dessus et en-dessous de 4 gigaoctets. La mémoire
allouée au-dessus de 4 gigaoctets est simplement ajoutée à
l'ensemble de la mémoire disponible.
Pour activer le support PAE dans le noyau, ajoutez simplement la ligne suivante dans votre fichier de configuration du noyau:
options PAE
Note : Le support PAE sous FreeBSD est uniquement disponible pour les processeurs IA-32 d'Intel. Il doit être noté que le support PAE sous FreeBSD n'a pas été énormément testé, et devrait être considéré comme bêta comparé aux autres fonctionnalités stables de FreeBSD.
Le support PAE sous FreeBSD a quelques limitations:
Un processus est incapable d'accéder à plus de 4 gigaoctets d'espace mémoire.
Les modules KLD ne peuvent être chargés dans un noyau avec PAE activé, en raison des différences entre la structure d'un module et du noyau.
Les pilotes de périphériques qui n'utilisent pas l'interface bus_dma(9) seront à l'origine de corruption de données avec un noyau PAE et ne sont pas recommandés. Pour cette raison, le fichier de configuration du noyau avec support PAE qui est fourni avec FreeBSD exclut tous les pilotes connus pour ne pas fonctionner avec un noyau avec support PAE.
Certains paramètres modifiables du système déterminent
l'utilisation des ressources mémoire par la quantité de la
mémoire physique disponible. De tels paramètres peuvent être
inutilement sur-alloués en raison de la grande quantité de
mémoire d'un système PAE.
Un bon exemple est le ``sysctl'' kern.maxvnodes, qui
contrôle le nombre maximal de ``vnodes'' alloués par le noyau.
Il est recommandé d'ajuster ce dernier et les autres paramètres du
même genre à des valeurs raisonnables.
Il pourra être nécessaire d'augmenter l'espace d'adressage virtuel
du noyau (``kernel virtual address''--KVA) ou de réduire le montant de la ressource
spécifique du noyau qui est fortement utilisée (voir plus haut)
afin d'éviter l'épuisement de l'espace KVA. L'option du noyau KVA_PAGES
peut être employée pour augmenter l'espace KVA.
Pour des considérations de performance et de stabilité, il est recommandé de consulter la page de manuel tuning(7). La page de manuel pae(4) contient des informations à jour sur le support PAE sous FreeBSD.
Il y a cinq types de problèmes qui peuvent survenir lors de la compilation d'un noyau sur mesure. Ce sont:
Si la commande config(8) échoue quand vous lui passez en paramètre la description de votre noyau, vous avez probablement fait une simple erreur quelque part. Heureusement config(8) affichera le numéro de la ligne qui lui a posé problème, vous pouvez donc localiser rapidement la ligne contenant l'erreur. Par exemple, si vous avez:
config: line 17: syntax error
Vérifiez que la ligne est correctement écrite, en le comparant avec le noyau GENERIC ou une autre référence.
Si la commande make échoue, cela signale habituellement une erreur dans la description de votre noyau, mais qui n'est pas suffisamment sérieuse pour que la commande config(8) la détecte. A nouveau, vérifiez votre fichier de configuration, et si vous n'arrivez toujours pas à résoudre le problème, envoyez un courrier électronique à la liste de diffusion pour les questions d'ordre général à propos de FreeBSD en joignant votre fichier de configuration du noyau, le diagnostic devrait être rapide.
Si votre nouveau noyau ne démarre pas, ou ne reconnaît pas vos périphériques, ne paniquez pas! Heureusement, FreeBSD dispose d'un excellent mécanisme pour récupérer si le noyau ne fonctionne pas. Sélectionnez simplement le noyau, à partir duquel vous désirez démarrer, à l'invite du chargeur de FreeBSD. Vous pouvez y accéder quand le menu de démarrage apparaît. Sélectionner l'option 6, “Escape to a loader prompt”. A l'invite, tapez unload kernel et ensuite boot /boot/kernel.old/kernel, ou le nom de fichier d'un autre noyau qui pourra démarrer proprement. Quand on reconfigure un noyau, il est toujours bon de conserver à portée de la main un noyau dont on sait qu'il fonctionne.
Après avoir démarré avec un noyau en état de marche, vous pouvez revérifier votre fichier de configuration et essayer de recompiler à nouveau votre noyau. Une ressource utile est le fichier /var/log/messages qui enregistre, entre autres, tous les messages du noyau à chaque démarrage réussi. En outre, la commande dmesg(8) affichera les messages du noyau pour le dernier démarrage.
Note : Si vous avez des difficultés à compiler un noyau, veillez à conserver un noyau GENERIC, ou un autre noyau dont vous savez qu'il fonctionne, sous la main, avec un nom différent de sorte qu'il ne soit pas écrasé à la prochaine compilation. Vous ne pouvez pas faire confiance au noyau kernel.old parce qu'en installant un nouveau noyau, kernel.old est remplacé par le dernier noyau installé dont il n'est pas certain qu'il soit opérationnel. Aussi, dès que possible, déplacez le noyau opérationnel vers le bon emplacement /boot/kernel où des commandes comme ps(1) pourront ne pas fonctionner correctement. Pour cela, renommez le répertoire contenant le bon noyau:
# mv /boot/kernel /boot/kernel.bad # mv /boot/kernel.good /boot/kernel
Si vous avez installé une version du noyau différente de celle avec laquelle ont été compilés les utilitaires système, par exemple, un noyau -CURRENT sur un système -RELEASE, de nombreuses commandes d'affichage de l'état du système comme ps(1) and vmstat(8) ne fonctionneront plus. Vous devrez recompiler et installer un système avec la même version de l'arborescence des sources de celle utilisée pour votre noyau. C'est une des raisons pour lesquelles il n'est pas judicieux d'utiliser des versions différentes du noyau et du reste du système d'exploitation.
Version française de Gregory Delfly
<gregoryd.freebsd@free.fr>.
FreeBSD peut être utilisé pour imprimer sur une grande variété d'imprimantes, depuis la plus ancienne des imprimantes matricielles jusqu'aux toutes dernières imprimantes laser, en passant par tout ce qui peut exister entre les deux, et vous permet d'obtenir des impressions de haute qualité avec les programmes que vous exécutez.
Il est également possible de configurer FreeBSD pour qu'il fasse office de serveur d'impression sur un réseau; de cette manière FreeBSD peut recevoir des travaux d'impression (“jobs”) en provenance de différents ordinateurs, comprenant d'autres machines sous FreeBSD et des machines sous Windows ou Mac OS. FreeBSD veillera à ce qu'un seul travail d'impression ne soit imprimé à la fois, et pourra tenir des statistiques sur les utilisateurs et les machines lançant le plus d'impressions, produire des pages d'“en-têtes” pour distinguer les impressions de chacun, et plus encore.
Après la lecture de ce chapitre, vous saurez:
Comment configurer le gestionnaire d'impression de FreeBSD
Comment installer des filtres d'impression, pour gérer des travaux d'impression particuliers de manière différente, ce qui inclut la transformation de documents entrants en un format que vos imprimantes comprennent.
Comment inclure des en-têtes ou des pages bannière dans vos impressions.
Comment imprimer en utilisant des imprimantes connectées à d'autres ordinateurs.
Comment imprimer en utilisant des imprimantes connectées directement au réseau.
Comment gérer des restrictions d'impression, notamment comment limiter la taille des travaux d'impression, et empêcher certains utilisateurs d'imprimer.
Comment tenir des statistiques d'impression, et rendre compte de l'utilisation de l'imprimante.
Comment résoudre les problèmes d'impression.
Avant de lire ce chapitre, vous devriez:
Savoir comment configurer et installer un nouveau noyau (Chapitre 8).
Afin d'utiliser des imprimantes avec FreeBSD, vous avez la possibilité de les paramétrer pour qu'elles utilisent le gestionnaire d'impression de Berkeley, également connu sous le nom de gestionnaire d'impression LPD, ou tout simplement LPD. C'est le système contrôle d'imprimante par défaut de FreeBSD. Ce chapitre présente LPD et vous assistera tout au long de sa configuration.
Si vous connaissez déjà LPD ou un autre système de gestion des impressions, vous pouvez directement vous rendre à la section Paramétrage de base.
LPD contrôle tout ce qui relève des imprimantes. Il est responsable de plusieurs tâches:
Il contrôle l'accès aux imprimantes directement connectées au système ainsi qu'à celles connectées à d'autres machines via le réseau.
Il permet aux utilisateurs de soumettre des fichiers à imprimer; ces requêtes sont connues sous le nom de travaux.
Il empêche l'accès simultané de plusieurs utilisateurs à une même imprimante, en gérant une queue pour chaque imprimante.
Il peut produire des pages d'en-tête (également connues sous le nom de pages bannières ou encore cartouches) afin que les utilisateurs puissent facilement retrouver dans une pile d'impressions celles correspondant aux travaux qu'ils ont soumis.
Il s'occupe de paramétrer les communications lorsque les imprimantes sont connectées via un port série.
Il peut transmettre des travaux par réseau à un gestionnaire d'impression LPD situé sur une autre machine.
Il peut appliquer des filtres spéciaux afin d'assurer le formatage des travaux en fonction des différents langages et caractéristiques des imprimantes.
Il peut comptabiliser l'utilisation de l'imprimante.
Vous pouvez, au travers d'un fichier de configuration (/etc/printcap) et en fournissant les programmes de filtres spéciaux, faire exécuter par LPD tout ou partie des tâches mentionnées ci-dessus sur une grande variété de modèles d'imprimantes.
Si vous êtes l'unique utilisateur de votre système, vous vous demandez sans doute pourquoi il vous faudrait vous préoccuper du gestionnaire d'impression, alors que vous n'avez pas besoin de contrôle d'accès, de pages d'en-tête ni de statistiques relatives à l'utilisation de l'imprimante. Quand bien même il est possible de mettre en oeuvre l'accès direct à l'imprimante, vous devriez tout de même utiliser le gestionnaire d'impression, parce que:
LPD imprime les travaux en tâche de fond: vous n'êtes pas obligé d'attendre que les données soient passées à l'imprimante.
LPD peut commodément se charger d'appliquer des filtres à un travail pour adjoindre une en-tête contenant la date et l'heure, ou convertir un fichier au format particulier (comme un fichier DVI TeX) en un format que l'imprimante comprenne. Ainsi, vous n'aurez pas à vous charger de ces manipulations à la main.
Beaucoup d'applications, tant libres que commerciales, fournissant une fonctionnalité d'impression s'attendent généralement à traiter avec le gestionnaire d'impression. En le mettant en oeuvre, vous vous faciliterez le support des autres applications que vous pourriez ajouter plus tard, ou que vous avez déjà installées.
Pour utiliser des imprimantes avec le gestionnaire d'impression, il vous faudra configurer à la fois la partie matérielle (c'est à dire les imprimantes) et la partie logicielle (c'est à dire LPD). Ce document présente deux niveaux de configuration:
La section Configuration simple de l'imprimante vous apprendra à connecter une imprimante, à renseigner LPD sur la façon dont il doit communiquer avec elle, et à imprimer de simples fichiers textes.
La section Configuration avancée de l'imprimante vous apprendra à imprimer différents formats de fichiers, des pages d'en-tête, par l'intermédiaire d'un réseau, à contrôler l'accès aux imprimantes, et comptabiliser leur utilisation.
Cette section vous apprendra à configurer l'imprimante et LPD. Elle présente les bases:
La section Configuration matérielle donne des indications sur la façon de connecter l'imprimante à l'un des ports de votre ordinateur.
La section Configuration logicielle montre comment renseigner le fichier de configuration du gestionnaire d'impression LPD (/etc/printcap).
Si vous mettez en oeuvre une imprimante réceptionnant les données à imprimer via un protocole réseau plutôt que par les interfaces locales de l'ordinateur, lisez la section Imprimantes avec des interfaces utilisant des flux réseau.
Bien que cette section soit intitulée “Configuration simple de l'imprimante”, elle s'avère en réalité plutôt complexe. La partie la plus difficile consiste à faire fonctionner l'imprimante avec votre ordinateur et LPD. Les options avancées telles les pages d'en-tête ou les statistiques sont relativement faciles à mettre en oeuvre une fois que l'imprimante fonctionne.
Cette section détaille les différentes manières de connecter une imprimante à votre PC. Elle discute les types de ports et de câbles, et de la configuration noyau dont vous pourriez avoir besoin afin que FreeBSD puisse communiquer avec l'imprimante.
Si vous avez déjà connecté votre imprimante et réussi à imprimer sous un autre système d'exploitation, vous pouvez probablement passer à la section Configuration logicielle.
Les imprimantes pour PC vendues aujourd'hui sont en général pourvues d'une ou plusieurs des trois interfaces suivantes:
Les interfaces série, également connues sous les noms RS-232 ou ports COM, utilisent un port série sur votre ordinateur pour envoyer des données à l'imprimante. Les interfaces série sont courantes, dans l'industrie informatique, et les câbles sont à la fois disponibles et faciles à réaliser. Elles réclament parfois des câbles spéciaux et peuvent nécessiter le paramétrage d'options de communication assez complexes. La plupart des ports série PC ont une vitesse de transmission maximale de 115200 bps, ce qui rend l'impression de travaux comportant beaucoup de graphismes malaisée.
Les interfaces parallèles utilisent un port parallèle sur votre ordinateur pour envoyer des données à l'imprimante. Les interfaces parallèles sont courantes dans l'industrie informatique et plus rapides que les interfaces série RS-232. Les câbles sont disponibles mais sont moins faciles à fabriquer à la main. En général, il n'y a aucune option de communication à paramétrer avec ces interfaces, ce qui rend leur configuration particulièrement simple.
Les interfaces parallèles sont parfois appelées “Centronics”, nom tiré du type de connecteur de l'imprimante
Les interfaces USB, tenant leur nom de “Universal Serial Bus”, ou “Bus Série Universel”, s'avèrent plus véloces encore que les interfaces parallèles ou série RS-232. Les câbles sont simples et peu onéreux. L'USB surpasse les interfaces série RS-232 et parallèles pour l'impression, mais son support par les systèmes UNIX n'est pas aussi bon. Une façon d'éviter ce problème est d'acheter une imprimante qui dispose à la fois d'une interface USB et d'une interface parallèle, comme beaucoup de modèles.
En règle générale, les interfaces parallèles n'offrent qu'une communication unidirectionnelle (de l'ordinateur vers l'imprimante) alors que les interfaces série et USB permettent un échange bidirectionnel. Les imprimantes et ports parallèles plus récents (EPP et ECP) peuvent communiquer dans les deux sens sous FreeBSD lorsque l'on a recourt à un câble conforme à la norme IEEE-1284.
La communication bidirectionnelle avec l'imprimante en utilisant un port parallèle se fait en général de l'une des deux manières suivantes. La première utilise un pilote d'imprimante compilé pour FreeBSD comprenant le langage propriétaire de l'imprimante. C'est couramment le cas des imprimantes jet d'encre et cela peut être utilisé pour retourner les niveaux d'encre et autres informations d'état. La seconde méthode est employée lorsque l'imprimante supporte PostScript.
Les travaux PostScript sont en fait des programmes envoyés à l'imprimante. Ils ne génèrent pas nécessairement de sortie papier et peuvent retourner leurs résultats directement à l'ordinateur. PostScript utilise aussi la communication bidirectionnelle pour avertir l'ordinateur de problèmes, comme des erreurs dans le programme PostScript ou des bourrages papier. Vos utilisateurs apprécieraient certainement de telles informations. De surcroît, la meilleure façon de tenir des statistiques sérieusement avec une imprimante PostScript nécessite la communication bidirectionnelle: on demande à l'imprimante quel est son compteur de pages (combien en a-t-elle imprimées depuis sa fabrication), puis on lui envoie le travail de l'utilisateur, enfin on lui redemande son compteur de pages. La différence entre les deux valeurs donne la consommation de papier que vous pouvez attribuer à cet utilisateur.
Pour raccorder une imprimante utilisant une interface parallèle, branchez le câble Centronics sur l'imprimante et sur l'ordinateur. Les instructions accompagnant l'imprimante, l'ordinateur, ou les deux, devraient parfaitement vous renseigner.
Souvenez-vous du port parallèle que vous avez utilisé sur l'ordinateur. Pour FreeBSD, le premier se nomme ppc0; le deuxième, ppc1, et ainsi de suite. Le nom du fichier spécial de périphérique de l'imprimante suit les mêmes règles: /dev/lpt0 pour celle connectée sur le premier port parallèle, etc.
Pour raccorder une imprimante utilisant une interface série, branchez le câble série adéquat sur l'imprimante et sur l'ordinateur. Les instructions accompagnant l'imprimante, l'ordinateur, ou les deux, devraient parfaitement vous renseigner.
Si vous n'êtes pas sûr de savoir quel est le bon câble, voici ce que vous pouvez essayer:
Un câble modem relie chacune des broches du connecteur depuis l'une des extrémités du câble directement à la broche lui correspondant dans le connecteur de l'autre extrémité. Ce type de câble est également connu sous le nom de câble “DTE-to-DCE”.
Un câble null-modem relie certaines des broches directement, en intervertit d'autres (par exemple, “émission de données” et “réception de données”), et en court-circuite d'autres en interne sur chacun des sertissages des connecteurs. Ce type de câble est également connu sous le nom de câble “DTE-to-DTE”.
Un câble série pour imprimante, requis par certaines imprimantes peu conventionnelles, ressemble au câble null-modem, à ceci près qu'il envoie certains signaux à l'autre extrémité au lieu de les court-circuiter en interne.
Vous devriez également définir les paramètres de communication pour l'imprimante, d'ordinaire en utilisant les contrôles sur la face avant ou les commutateurs sur l'imprimante. Choisissez la valeur la plus élevée de bps (bits par seconde, encore appelés “vitesse de transmission”) autorisée conjointement par votre ordinateur et votre imprimante. Choisissez 7 ou 8 bits de données; aucun contrôle de parité ou un bit de parité paire ou impaire; et 1 ou 2 bits d'arrêt. Choisissez également un protocole de contrôle de flux: soit aucun, soit XON/XOFF (également appelé “in-band”, ou encore “contrôle logiciel”). Retenez ces paramètres pour la configuration logicielle, dans la section qui suit.
Cette section détaille la configuration logicielle nécessaire pour imprimer sous FreeBSD avec le gestionnaire d'impression LPD.
Voici un aperçu des étapes à suivre:
Configurez le noyau, si nécessaire, pour utiliser le port sur lequel vous raccorderez votre imprimante; la section Configurer le noyau de FreeBSD vous donnera la marche à suivre.
Paramétrez le mode de communication du port parallèle si vous utilisez une imprimante de ce type; la section Paramétrer le mode de communication du port parallèle vous donnera les détails.
Configurez LPD pour qu'il communique avec l'imprimante en renseignant le fichier /etc/printcap. Vous apprendrez comment faire un peu plus loin dans ce chapitre.
Le noyau du système d'exploitation est compilé avec le support d'un certain ensemble de périphériques. Les interfaces série ou parallèle de votre imprimante en font partie. De ce fait, vous pourriez avoir à ajouter le support d'un port série ou parallèle supplémentaire si votre noyau n'a pas déjà été configuré en ce sens.
Pour savoir si le support d'une interface série est activé dans le noyau que vous êtes en train d'utiliser, entrez:
# grep sioN /var/run/dmesg.boot
Où N représente le numéro du port série, en commençant à zéro. Si vous obtenez un affichage similaire à:
sio2 at port 0x3e8-0x3ef irq 5 on isa sio2: type 16550A
alors le port est activé dans le noyau.
Pour savoir si le noyau supporte une interface parallèle, entrez:
# grep ppcN /var/run/dmesg.boot
Où N représente le numéro du port parallèle, en commençant à zéro. Si vous obtenez un affichage similaire à:
ppc0: <Parallel port> at port 0x378-0x37f irq 7 on isa0 ppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode ppc0: FIFO with 16/16/8 bytes threshold
alors le port est activé dans le noyau.
Il se pourrait que vous ayez à reconfigurer le noyau afin que le système détecte et puisse utiliser un port parallèle ou série auquel vous avez connecté votre imprimante.
Pour ajouter le support d'un port série, voyez la section sur la configuration du noyau. Pour ajouter le support du port parallèle, voyez cette même section et celle qui suit.
Lorsque vous utilisez l'interface parallèle, vous avez le choix entre deux modes de communication avec l'imprimante: par interruption, ou par polling (interrogation régulière ou scrutation). Le pilote d'imprimante générique (lpt(4)) de FreeBSD utilise le système ppbus(4), qui contrôle le chipset du port via le pilote ppc(4).
Le mode par interruption est le mode par défaut avec un noyau GENERIC. De cette manière, le système d'exploitation utilise une ligne d'interruption (IRQ) pour déterminer si l'imprimante est prête à recevoir des données.
Le mode par scrutation enjoint au système d'exploitation d'interroger à intervalles réguliers l'imprimante pour savoir si elle est prête à recevoir d'autres données. Lorsqu'elle répond par l'affirmative, le noyau lui en envoie plus.
Le mode par interruption est en général nettement plus rapide, mais consomme une précieuse ligne d'interruption (IRQ). On rapporte que certaines imprimantes HP récentes ne fonctionneraient pas correctement en mode par interruption, apparemment à cause d'un problème (pas encore très bien identifié) d'horloge. Ces imprimantes nécessitent le recours au mode par scrutation. Utilisez celui des deux qui fonctionne. Certaines imprimantes fonctionnent dans les deux modes, mais s'avèrent désagréablement lentes en mode par interruption.
Vous pouvez choisir le mode de communication de deux manières différentes: en configurant le noyau ou en utilisant le programme lptcontrol(8).
Pour paramétrer le mode de communication en configurant le noyau:
Editez le fichier de configuration de votre noyau. Cherchez une entrée ppc0. Si vous voulez configurer le deuxième port parallèle, cherchez plutôt ppc1. Ou ppc2 pour le troisième, et ainsi de suite.
Si vous souhaitez activer le mode par interruption, éditez la ligne suivante:
hint.ppc.0.irq="N"
dans le fichier /boot/device.hints et remplacez N par le numéro d'IRQ approprié. Le fichier de configuration du noyau doit également comporter le pilote ppc(4):
device ppc
Si vous souhaitez activer le mode par scrutation, ôtez la ligne suivante de votre fichier /boot/device.hints:
hint.ppc.0.irq="N"
Dans certains cas, positionner le port en mode scrutation sous FreeBSD n'est pas suffisant. La plupart du temps cela vient du pilote acpi(4), ce dernier étant capable de sonder et d'attacher des périphériques, et donc de contrôler le mode d'accès au port de l'imprimante. Vous devrez donc vérifier votre configuration acpi(4) pour résoudre ce problème.
Sauvegardez le fichier, puis configurez, compilez, et installez le noyau avant de redémarrer. Consultez la section configuration du noyau pour plus de détails.
Pour paramétrer le mode de communication avec lptcontrol(8):
Entrez:
# lptcontrol -i -d /dev/lptN
pour sélectionner le mode par interruption pour lptN.
Entrez:
# lptcontrol -p -d /dev/lptN
pour sélectionner le mode par scrutation pour lptN.
Vous pouvez placer ces commandes dans votre fichier /etc/rc.local pour sélectionner le mode à chaque démarrage du système. Consultez lptcontrol(8) pour obtenir plus d'informations.
Avant de passer à la configuration du gestionnaire d'impression, vous devriez vous assurer que le système d'exploitation fait parvenir avec succès des données à l'imprimante. Il est beaucoup plus facile de déboguer séparément la communication avec l'imprimante et la configuration du gestionnaire d'impression.
Pour tester l'imprimante, nous allons lui envoyer du texte. Pour les imprimantes qui peuvent immédiatement imprimer les caractères qui leur sont envoyés, le programme lptest(1) est parfait: il génère les 96 caractères ASCII imprimables sur 96 lignes.
Pour une imprimante PostScript (ou basée sur un autre langage), il va nous falloir un test plus sophistiqué. Un petit programme PostScript, tel que celui qui suit, devrait suffire:
%!PS 100 100 moveto 300 300 lineto stroke 310 310 moveto /Helvetica findfont 12 scalefont setfont (Is this thing working?) show showpage
Le code PostScript ci-dessus peut être placé dans un fichier et utilisé comme indiqué dans les exemples qui apparaissent dans les sections suivantes.
Note : Lorsque ce document fait référence à un langage d'imprimante, il suppose un langage comme PostScript, et pas le PCL de Hewlett-Packard. Quoique PCL dispose de fonctionnalités intéressantes, il est possible de mélanger du texte simple avec des séquences d'échappement. PostScript ne permet pas d'imprimer du texte clair, c'est le type de langage d'imprimante pour lequel nous devons prendre des mesures particulières.
Cette section vous apprendra à vérifier si FreeBSD peut communiquer avec une imprimante connectée sur un port parallèle.
Pour tester une imprimante connectée sur un port parallèle:
Passez en root avec su(1).
Envoyez des données à l'imprimante.
Si l'imprimante peut sortir du texte simple, alors utilisez lptest(1). Entrez:
# lptest > /dev/lptN
Où N est le numéro du port parallèle, en commençant à zéro.
Si l'imprimante comprend le PostScript ou un autre langage d'imprimante, alors envoyez lui un petit programme. Entrez:
# cat > /dev/lptN
Tapez ensuite le programme, ligne à ligne et attentivement, car vous ne pouvez plus éditer une ligne une fois que vous avez appuyé sur la touche Retour Chariot ou Entrée. Une fois terminé, faites CONTROL+D, ou la combinaison correspondant à votre fin de fichier.
Une autre manière de procéder est de placer le programme dans un fichier et d'entrer:
# cat fichier > /dev/lptN
Où fichier désigne le nom du fichier que vous désirez envoyer à l'imprimante.
Vous devriez voir quelque chose s'imprimer. Ne vous inquiétez pas si l'apparence du texte n'est pas satisfaisante; nous remédierons à ce genre de soucis plus tard.
Dans cette section vous apprendrez à vérifier si FreeBSD parvient à communiquer avec une imprimante connectée à un port série.
Pour tester une imprimante connectée sur un port série:
Passez en root avec su(1).
Editez le fichier /etc/remote. Ajoutez l'entrée suivante:
printer:dv=/dev/port:br#bps-rate:pa=parity
Où port représente le fichier de périphérique du port série (ttyd0, ttyd1, etc.), bps-rate représente la vitesse en bits-par-seconde à laquelle l'imprimante communique, et parity représente la parité réclamée par l'imprimante (even pour paire, odd pour impaire, none pour aucune, ou zero pour zéro).
Voici un exemple d'entrée pour une imprimante connectée à 19200 bps, sans parité, sur le troisième port série:
printer:dv=/dev/ttyd2:br#19200:pa=none
Connectez-vous à l'imprimante avec tip(1). Entrez:
# tip printer
Si cette étape ne fonctionne pas, éditez le fichier /etc/remote à nouveau et essayez d'utiliser /dev/cuaaN au lieu de /dev/ttydN.
Envoyez des données à l'imprimante.
Si l'imprimante peut sortir du texte simple, alors utilisez lptest(1). Entrez:
% $lptest
Si l'imprimante comprend le PostScript ou tout autre langage d'imprimante, envoyez-lui un petit programme. Entrez-le ligne à ligne et très attentivement, dans la mesure où les touches d'édition, comme retour-arrière, peuvent revêtir une signification particulière pour l'imprimante. Vous pourriez également avoir besoin d'un caractère de fin de fichier (“EOF”) particulier pour que l'imprimante sache qu'elle a reçu tout le programme. Pour les imprimantes PostScript, appuyez sur CONTROL+D.
Une autre manière de procéder est de placer le programme dans un fichier et d'entrer:
% >fichier
Où fichier est le nom du fichier contenant le programme. Après avoir envoyé le fichier avec tip(1), appuyez sur la touche de fin de fichier appropriée.
Vous devriez voir quelque chose s'imprimer. Ne vous inquiétez pas si l'apparence du texte n'est pas satisfaisante; nous remédierons à ce genre de soucis plus tard.
A ce stade, votre imprimante doit être branchée, votre noyau configuré pour communiquer avec elle (si cela est nécessaire); et vous avez réussi à faire parvenir des données simples à l'imprimante. Nous sommes maintenant prêts à paramétrer LPD pour qu'il contrôle l'accès à l'imprimante.
LPD se paramètre en éditant le fichier /etc/printcap. Le gestionnaire d'impression LPD le lit à chaque fois que le gestionnaire est solicité, donc les mises à jour du fichier sont immédiatement prises en compte.
Le format du fichier printcap(5) est explicite. Utilisez votre éditeur favori pour modifier /etc/printcap. Le format est identique aux autres fichiers de configuration comme /usr/share/misc/termcap et /etc/remote. Pour obtenir des informations complètes concernant ce format, consultez cgetent(3).
Le paramétrage simple du gestionnaire d'impression s'effectue selon les étapes suivantes:
Choisissez un nom (et quelques alias appropriés) pour l'imprimante, et placez-les dans /etc/printcap; lisez la section Nommer l'imprimante pour plus d'informations sur le nommage.
Désactivez les pages d'en-tête (elles sont activées par défaut) en insérant le paramètre sh; lisez la section Supprimer les pages d'en-tête pour plus d'informations.
Créez un répertoire de file d'attente, et précisez son chemin d'accès avec le paramètre sd; lisez la section Créer le répertoire de fil d'attente pour obtenir plus d'informations.
Sélectionnez l'entrée dev à utiliser pour l'imprimante, et notez la dans /etc/printcap avec le paramètre lp; lisez la section Identifier le périphérique d'imprimante pour obtenir plus d'informations. De plus, si l'imprimante est reliée par un port série, précisez les paramètres de communication avec le paramètre ms#, qui est détaillé dans la section Configurer les paramètres de communication du gestionnaire d'impression.
Installez un filtre d'entrée sous forme de fichier texte simple; lisez la section Installer le filtre texte pour obtenir plus de détails.
Testez la configuration en imprimant quelque chose avec la commande lpr(1). Vous trouverez plus de détails dans les sections Tester l'impression et Résolution des problèmes.
Note : Les imprimantes basées sur un langage d'impression, telles les imprimantes PostScript, ne peuvent imprimer du texte simple directement. La configuration simple esquissée ci-dessus et détaillée dans les sections suivantes présuppose que si vous installez ce genre d'imprimante vous n'imprimerez que des fichiers qu'elle peut comprendre.
Les utilisateurs s'attendent souvent à pouvoir imprimer du texte simple sur n'importe laquelle des imprimante installées sur votre système. Les applications qui s'en remettent à LPD pour imprimer s'y attendent en général elles aussi. Si vous installez ce genre d'imprimante et désirez pouvoir imprimer à la fois des travaux dans le langage de l'imprimante et des travaux en texte simple, vous êtes instamment prié d'ajouter une étape supplémentaire à la configuration simple esquissée ci-dessus: installez un programme de conversion automatique texte simple vers PostScript (ou tout autre langage d'imprimante). La section Prendre en charge des travaux texte sur des imprimantes PostScript vous apprendra à le faire.
La première étape (facile) est de choisir un nom pour l'imprimante. Que vous choisissiez un nom fonctionnel ou fantaisiste n'a aucune importance puisque vous pouvez également fournir une série d'alias.
Au moins l'une des imprimantes définies dans le fichier /etc/printcap devrait avoir pour alias lp. C'est le nom de l'imprimante par défaut. Si les utilisateurs n'ont pas positionné la variable d'environnement PRINTER et ne spécifient pas le nom d'une imprimante lorsqu'ils utilisent une ligne de commande relative à LPD, lp sera l'imprimante par défaut utilisée.
Par ailleurs, l'usage commun veut que le dernier alias d'une imprimante en soit une description complète, en incluant le fabricant et le modèle.
Une fois le nom et des alias communs choisis, placez-les dans le fichier /etc/printcap. Le nom de l'imprimante devrait commencer dans la colonne la plus à gauche. Séparez chaque alias par une barre verticale et mettez le caractère deux-points après le dernier alias.
Dans l'exemple suivant, nous commençons avec le squelette d'un /etc/printcap qui définit deux imprimantes (une Diablo 630 et une imprimante PostScript laser Panasonic KX-P4455):
# # /etc/printcap for host rose # rattan|line|diablo|lp|Diablo 630 Line Printer: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:
Dans cet exemple, la première imprimante se nomme rattan et possède les alias suivants: line, diablo, lp et Diablo 630 Line Printer. Puisque l'alias lp lui est attribué, elle est également l'imprimante par défaut. La seconde s'appelle bamboo et possède les alias suivants: ps, PS, S, panasonic et Panasonic KX-P4455 PostScript v51.4.
Par défaut, le gestionnaire d'impression LPD imprime une page d'en-tête pour chaque impression. Celle-ci mentionne le nom de l'utilisateur qui a demandé l'impression, la machine qui l'a envoyé, et le nom de l'impression, en grands et jolis caractères. Malheureusement, tout ce texte supplémentaire parasite le débogage d'une configuration simple de l'imprimante, aussi supprimerons-nous ces pages d'en-têtes.
Pour cela, ajoutez le paramètre sh à l'entrée de l'imprimante dans /etc/printcap. Voici un exemple de /etc/printcap où sh a été ajouté:
#
# /etc/printcap for host rose - no header pages anywhere
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:
Observez la façon dont nous avons respecté le format correct: la première ligne commence dans la colonne la plus à gauche, et les lignes suivantes sont indentées. Toutes les lignes d'une entrée sauf la dernière se terminent par un antislash.
La prochaine étape dans la configuration simple du gestionnaire d'impression consiste à créer un répertoire de file d'attente, c'est à dire un répertoire où les travaux vont demeurer jusqu'à ce qu'ils soient imprimés, et où un certain nombre d'autres fichiers nécessaires au gestionnaire d'impression prennent place.
A cause de la nature variable des répertoires de file d'attente, il est d'usage de les placer dans /var/spool. Il n'est pas non plus nécessaire de sauvegarder leur contenu. Les recréer est aussi simple que de faire un mkdir(1).
Il est également d'usage de créer le répertoire avec un nom identique à celui de l'imprimante, comme dans l'exemple ci-dessous:
# mkdir /var/spool/nom-de-l-imprimante
Toutefois, si votre réseau comporte beaucoup d'imprimantes, vous pouvez préférer placer les répertoires de file d'attente dans un unique répertoire que vous réserverez à l'impression avec LPD. C'est ce que nous allons faire pour les deux imprimantes de notre exemple, rattan et bamboo:
# mkdir /var/spool/lpd # mkdir /var/spool/lpd/rattan # mkdir /var/spool/lpd/bamboo
Note : Si la confidentialité des travaux imprimés par les utilisateurs vous importe, vous souhaiterez certainement protéger le répertoire de file d'attente afin qu'il ne soit pas accessible par tout le monde. Les répertoires de file d'attente doivent appartenir, être accessibles en lecture et écriture et pouvoir être parcourus par l'utilisateur daemon et le groupe daemon, et personne d'autre. C'est ce que nous allons faire pour les deux imprimantes de notre exemple:
# chown daemon:daemon /var/spool/lpd/rattan # chown daemon:daemon /var/spool/lpd/bamboo # chmod 770 /var/spool/lpd/rattan # chmod 770 /var/spool/lpd/bamboo
Pour finir, vous devez avertir LPD de l'existence de ces répertoires en utilisant le fichier /etc/printcap. Vous spécifiez le chemin du répertoire file d'attente avec le paramètre sd:
#
# /etc/printcap for host rose - added spooling directories
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:
Notez que le nom de l'imprimante commence dans la première colonne mais que toutes les autres entrées décrivant l'imprimante doivent être indentées et que chaque fin de ligne doit être protégée par un antislash.
Si vous ne précisez pas de répertoire de file d'attente avec sd, le gestionnaire d'impression utilisera /var/spool/lpd par défaut.
Dans la section Entrées des périphériques nous avons identifié l'entrée du répertoire /dev que FreeBSD utiliserait pour communiquer avec l'imprimante. Maintenant, nous allons passer cette information à LPD. Quand le gestionnaire d'impression aura une impression à effectuer, il ouvrira le périphérique spécifié au nom du programme de filtre (qui est responsable de la transmission des données à l'imprimante).
Positionnez l'entrée pour le chemin d'accès /dev dans le fichier /etc/printcap en utilisant le paramètre lp.
Dans notre exemple, supposons que rattan est sur le premier port parallèle, et que bamboo est sur un sixième port série; voici les ajouts à apporter à /etc/printcap:
#
# /etc/printcap for host rose - identified what devices to use
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:\
:lp=/dev/ttyd5:
Si dans votre /etc/printcap vous ne précisez pas le paramètre lp pour une imprimante, LPD utilisera /dev/lp par défaut. A l'heure actuelle, il n'existe pas d'entrée /dev/lp sous FreeBSD.
Si l'imprimante que vous êtes en train d'installer est connectée à un port parallèle, vous pouvez directement vous rendre à la section Installer le filtre texte. Sinon, assurez-vous de suivre les instructions de la section qui suit.
Pour les imprimantes connectées au port série, LPD peut configurer la vitesse en bps, la parité, et d'autres paramètres de communication série, pour le compte du programme de filtre qui envoie les données à l'imprimante. C'est avantageux dans la mesure où:
Cela vous laisse essayer divers paramètres simplement en éditant le fichier /etc/printcap; vous n'avez pas besoin de recompiler le programme de filtre.
Cela permet au gestionnaire d'impression d'utiliser le même programme pour de multiples imprimantes qui peuvent avoir des paramètres de communication série différents.
Les paramètres /etc/printcap suivants contrôlent les options de communication série pour le périphérique spécifié dans le paramètre lp:
Positionne la vitesse de transmission du périphérique à vitesse-bps, où vitesse-bps peut prendre l'une des valeurs suivantes: 50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, 38400, 57600, ou 115200 bits par seconde.
Positionne les options du périphérique de terminal après l'avoir ouvert. stty(1) présente les options disponibles.
Quand LPD ouvre le périphérique spécifié par le paramètre lp, il positionne les caractéristiques de ce périphérique aux valeurs précisées par le paramètre ms#. Les modes suivants, détaillés dans stty(1) sont particulièrement intéressants: parenb, parodd, cs5, cs6, cs7, cs8, cstopb, crtscts, et ixon.
Peaufinons notre exemple pour l'imprimante qui est connectée au sixième port série. Nous allons paramétrer sa vitesse à 38400 bps. Quant au mode, nous allons spécifier aucune parité avec -parenb, des caractères 8 bits avec cs8, aucun contrôle modem avec clocal et un contrôle de flux matériel avec crtscts:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:\
:lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:
Nous sommes maintenant en mesure de dire à LPD quel filtre texte utiliser pour envoyer les travaux à l'imprimante. Un filtre texte, également connu sous le nom de filtre d'entrée, est un programme que LPD lance lorsqu'il a une impression à effectuer. Lorsque LPD exécute le filtre texte pour une imprimante, il redirige l'entrée standard du filtre sur le travail d'impression, et la sortie standard sur le fichier spécial de périphérique spécifié par le paramètre lp. On attend du filtre qu'il lise le travail d'impression sur son entrée standard, effectue les transformations nécessaires pour l'imprimante, et écrive le résultat sur sa sortie standard, qui sera imprimée. Pour plus d'informations sur les filtres texte, lisez la section Filtres.
Pour notre configuration simple de l'imprimante, le filtre texte peut être une petite procédure d'interpréteur de commandes qui ne fera qu'exécuter /bin/cat pour envoyer le travail d'impression à l'imprimante. Un autre filtre est livré avec FreeBSD, nommé lpf, qui se charge de faire des suppressions arrière et des soulignements pour les imprimantes qui ne sauraient pas gérer correctement ce genre de flux de caractères. Et bien sûr, vous pouvez utiliser un autre filtre, quel qu'il soit. Le filtre lpf est détaillé dans la section lpf: un filtre texte.
Tout d'abord, composons le filtre /usr/local/libexec/if-simple qui sera un simple filtre texte. Ecrivez ceci avec votre éditeur de texte favori:
#!/bin/sh # # if-simple - Simple text input filter for lpd # Installed in /usr/local/libexec/if-simple # # Simply copies stdin to stdout. Ignores all filter arguments. /bin/cat && exit 0 exit 2
Rendez le fichier exécutable:
# chmod 555 /usr/local/libexec/if-simple
Et avertissez LPD qu'il doit l'utiliser, en renseignant le paramètre if dans /etc/printcap. Nous l'ajouterons aux deux imprimantes utilisées jusqu'ici dans notre /etc/printcap d'exemple:
#
# /etc/printcap for host rose - added text filter
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\ :lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:\
:lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:\
:if=/usr/local/libexec/if-simple:
Note : Vous trouverez une copie du filtre if-simple dans le répertoire /usr/share/examples/printing.
lpd(8) se lance depuis /etc/rc, avec la variable de contrôle lpd_enable. Cette variable a NO pour valeur par défaut. Si vous ne l'avez pas déjà fait, ajoutez la ligne:
lpd_enable="YES"
à votre /etc/rc.conf, puis relancez votre machine, ou lancez simplement lpd(8).
# lpd
Vous avez achevé la configuration simple de LPD. Malheureusement, les félicitations ne sont pas encore à l'ordre du jour, puisque nous devons encore tester la configuration et résoudre tout problème. Pour tester la configuration, essayez d'imprimer quelque chose. Pour imprimer avec le système LPD, vous devez utiliser la commande lpr(1), qui soumet un travail d'impression.
Vous pouvez combiner lpr(1) au programme lptest(1), que nous avons présenté à la section Vérifier la communication avec l'imprimante, pour produire du texte de test.
Pour tester la configuration simple de LPD
Entrez:
# lptest 20 5 | lpr -Pnom-de-l-imprimante
Où nom-de-l-imprimante
représente le nom (ou l'alias) d'une imprimante tel que
spécifié dans /etc/printcap. Pour tester
l'imprimante par défaut, tapez lpr(1) sans
aucun argument -P. Encore une fois, si vous faites ce
test avec une imprimante qui s'attend à recevoir du PostScript, envoyez un programme PostScript au lieu d'employer lptest(1). Vous
pouvez le faire en plaçant le programme dans un fichier et en entrant lpr fichier.
Pour une imprimante PostScript, vous devriez obtenir le résultat du programme. Si vous utilisez lptest(1), alors votre sortie devrait ressembler à ça:
!"#$%&'()*+,-./01234 "#$%&'()*+,-./012345 #$%&'()*+,-./0123456 $%&'()*+,-./01234567 %&'()*+,-./012345678
Pour tester l'imprimante plus encore, téléchargez des programmes (pour les imprimantes basées sur un langage spécifique) plus longs, ou lancez lptest(1) avec des arguments différents. Par exemple, lptest 80 60 produira 60 lignes de 80 caractères chacune.
Si l'impression ne fonctionne pas, lisez la section Résolution des problèmes.
Cette section décrit les filtres à utiliser pour imprimer des fichiers au formatage particulier, des pages d'en-tête, pour imprimer en réseau, et pour restreindre et comptabiliser l'utilisation de l'imprimante.
Bien que LPD gère les protocoles réseaux, les files d'attente, le contrôle d'accès et d'autres aspects de l'impression, la plus grande partie du véritable travail intervient dans les filtres. Les filtres sont des programmes qui communiquent avec l'imprimante et gèrent ses dépendances matérielles ainsi que ses besoins particuliers. Dans la configuration simple de l'imprimante, nous avons installé un filtre texte simple-- un filtre particulièrement basique qui devrait fonctionner avec la plupart des imprimantes (voir la section Installer le filtre texte).
Toutefois, afin de profiter de la conversion de format, de la comptabilisation de l'utilisation de l'imprimante, de particularités matérielles, et ainsi de suite, il vous faut comprendre le fonctionnement des filtres. En dernier ressort, il incombera au filtre de gérer ces aspects. Et la mauvaise nouvelle, c'est que la plupart du temps, c'est vous qui devrez produire ces filtres vous-même. La bonne nouvelle, c'est que beaucoup existent déjà et que, sinon, ils sont en général assez faciles à écrire.
Par ailleurs, il en est un livré avec FreeBSD, /usr/libexec/lpr/lpf, qui fonctionne avec beaucoup d'imprimantes capables d'imprimer du texte brut. (Il gère les retours arrière et les tabulations dans le fichier, effectue une comptabilisation, mais c'est à peu près tout). Vous trouverez également d'autres filtres et composants de filtres dans le catalogue des logiciels portés de FreeBSD.
Voici ce que vous trouverez dans cette section:
La section Fonctionnement des filtres tâche de donner une vue générale du rôle des filtres dans le processus d'impression. Il vous faut lire cette section pour comprendre ce qui se passe “sous le capot” lorsque LPD utilise des filtres. Cette connaissance vous permettra d'anticiper et de résoudre les problèmes que vous pourriez rencontrer quand vous installerez de plus en plus de filtres pour chacune de vos imprimantes.
LPD s'attend à ce que toutes les imprimantes sachent imprimer du texte brut par défaut. Cela pose un problème pour les imprimantes PostScript (ou les imprimantes basées sur un autre langage) qui ne peut pas imprimer du texte brut directement. La section Gérer les travaux d'impression de texte brut sur des imprimantes PostScript vous indique la marche à suivre pour résoudre ce problème. Vous devrez lire cette section si vous avez une imprimante PostScript.
PostScript est un format de sortie courant pour beaucoup d'applications. Certaines personnes écrivent même du code PostScript directement. Malheureusement, les imprimantes PostScript sont onéreuses. La section Emuler du PostScript sur les imprimantes non-PostScript vous indiquera comment modifier un filtre texte pour qu'une imprimante non-PostScript accepte et imprime du PostScript. Vous devrez lire cette section si vous ne disposez pas d'une imprimante PostScript.
La section Filtres de conversion vous apprendra à automatiser la conversion de formats de fichiers spécifiques, comme des graphiques ou des données de composition, en formats compréhensibles par l'imprimante. Après avoir lu cette section, vous serez en mesure de configurer vos imprimantes de telle sorte que vos utilisateurs pourront entrer la commande lpr -t pour imprimer du troff, ou lpr -d pour imprimer le format DVI produit par TeX, ou lpr -v pour imprimer des images en mode point, etc. Nous recommandons la lecture de cette section.
La section Filtres de sortie révèle tout d'une fonctionnalité peu utilisée de LPD: les filtres de sortie. A moins que vous n'imprimiez des pages d'en-têtes (voir la section Pages d'en-tête), vous pouvez probablement complètement ignorer cette section.
La section lpf: un filtre texte détaille lpf, un filtre texte destiné aux imprimantes en ligne (et aux imprimantes laser se comportant comme telles) plutôt complet malgré sa simplicité, et livré avec FreeBSD. Si vous avez besoin de mettre rapidement en place la comptabilisation de l'utilisation de l'imprimante pour du texte brut, ou si vous avez une imprimante qui fume lorsqu'elle voit passer des caractères de retour arrière, vous devez vraiment penser à lpf.
Note : Une copie des différents scripts présentés ci-dessous se trouve dans le répertoire /usr/share/examples/printing.
Comme expliqué précédemment, un filtre est un programme exécutable lancé par LPD pour gérer la partie de la communication avec l'imprimante qui est dépendante du périphérique.
Lorsque LPD veut imprimer un fichier d'un travail d'impression, il lance un programme de filtre. Il redirige l'entrée standard du filtre sur le fichier à imprimer, sa sortie standard vers l'imprimante, et l'erreur standard vers le fichier journal des erreurs (spécifié dans le paramètre lf du fichier /etc/printcap, ou /dev/console par défaut).
Le filtre lancé par LPD ainsi que les paramètres qui lui sont donnés dépendent de ce qui est placé dans le fichier /etc/printcap et des paramètres que l'utilisateur a passé sur la ligne de commande lpr(1) pour ce travail d'impression. Par exemple, si l'utilisateur a entré lpr -t, LPD aurait lancé le filtre troff, précisé par la paramètre tf pour l'imprimante de destination. Si l'utilisateur veut imprimer du texte brut, il lancerait le filtre if (c'est vrai la plupart du temps: lisez la section Filtres de sortie pour plus de détails).
Il existe trois types de filtres que vous pouvez spécifier dans /etc/printcap:
Le filtre texte, confusément appelé filtre d'entrée dans la documentation LPD, gère l'impression de texte classique. Considérez-le comme le filtre par défaut. LPD s'attend à ce que toutes les imprimantes sachent imprimer du texte brut par défaut, et c'est au filtre texte de s'assurer que les retours arrière, tabulations et autres caractères spéciaux ne trompent pas l'imprimante. Si vous êtes dans un environnement où il vous faut rendre compte de l'utilisation de l'imprimante, le filtre texte doit également comptabiliser les pages imprimées, généralement en comptant le nombre de lignes imprimées et en le comparant avec le nombre de lignes par page supporté par l'imprimante. Le filtre texte est exécuté avec la liste de paramètres suivante:
nom_du_filtre [-c] -w largeur -l hauteur -i indentation -n utilisateur -h machine fichier_comptabilité
où
-capparaît si le travail d'impression est lancé par la commande lpr -l
est la valeur du paramètre pw (“page width”, pour “largeur de page”) spécifié dans /etc/printcap, et possédant la valeur par défaut 132.
est la valeur du paramètre pl (“page length”, pour “hauteur de page”), par défaut: 66.
est le nombre d'indentations inséré par lpr -i, par défaut: 0.
est le nom du compte de l'utilisateur imprimant le fichier.
est le nom de la machine depuis laquelle le travail d'impression a été soumis.
est le nom du fichier de comptabilisation spécifié par le paramètre af.
Un filtre de conversion convertit un format de fichier spécifique en un autre que l'imprimante saura imprimer sur papier. Par exemple, des données de composition ditroff ne peuvent être imprimées directement, mais il vous est possible d'installer un filtre de conversion ditroff afin de convertir ces données ditroff en une forme que l'imprimante sait ingérer et imprimer. La section Filtres de conversion vous dira tout sur ce sujet. Les filtres de conversion doivent également tenir des statistiques, si vous avez besoin de comptabiliser les impressions. Les filtres de conversion sont lancés avec les paramètres suivants:
nom-du-filtre -x largeur-en-pixels -y hauteur-en-pixels -n login -h hôte fichier_comptabilité
où largeur-en-pixels est la valeur du paramètre px (0 par défaut) et hauteur-en-pixels est la valeur du paramètre py (0 par défaut).
Le filtre de sortie n'est utilisé que s'il n'y a pas de filtre texte, ou si les pages d'en-tête ont été activées. D'après notre expérience, les filtres de sortie sont rarement employés. La section Filtres de sortie les détaillera. Un filtre de sortie ne prend que deux paramètres:
nom-du-filtre -w largeur -l hauteur
qui sont identiques aux paramètres -w et
-l des filtres textes.
Les filtres doivent également retourner avec le code de retour suivant:
Si le filtre a imprimé avec succès le fichier.
Si le filtre n'a pu imprimer le fichier, mais désire que LPD essaie de l'imprimer à nouveau. LPD relancera un filtre s'il retourne avec ce code.
Si le filtre n'a pu imprimer le fichier et ne veut pas que LPD retente l'impression. LPD rejettera le fichier.
Le filtre texte livré avec FreeBSD, /usr/libexec/lpr/lpf, tire parti des paramètres de largeur et hauteur de page pour savoir quand envoyer une instruction de saut de page et comment comptabiliser l'utilisation de l'imprimante. Il utilise les paramètres nom d'utilisateur, nom de machine, et fichier de comptabilisation pour enregistrer les entrées concernant la consommation.
Si vous recherchez des filtres, prenez garde à ce qu'ils soient compatibles avec LPD. Si c'est le cas, ils doivent se conformer à la liste de paramètres décrite ci-dessus. Si vous songez à écrire des filtres à usage général, alors faites en sorte qu'ils se conforment à ces mêmes listes de paramètres et de codes de retour.
Si vous êtes l'unique utilisateur de votre ordinateur et de votre imprimante PostScript (ou basée sur un autre langage), et que vous promettez de ne jamais envoyer de texte brut à votre imprimante et de ne jamais utiliser les fonctionnalités des divers programmes qui voudraient lui en envoyer, alors vous pouvez tout à fait passer cette section l'esprit tranquille.
Toutefois, si vous désirez envoyer du PostScript et du texte brut à l'imprimante, alors vous êtes instamment priés de compléter la configuration de votre imprimante. Pour ce faire, nous chargerons le filtre texte de détecter si le travail d'impression est du texte brut ou du PostScript. Tous les travaux d'impression PostScript doivent débuter par %! (en ce qui concerne les autres langages, référez-vous à la documentation de l'imprimante). Si ces deux caractères sont les deux premiers du travail d'impression, il s'agit de PostScript et le reste du travail d'impression peut être passé directement à l'imprimante. Dans le cas contraire, alors le filtre convertit le texte en PostScript et imprime le résultat.
Comment procéder?
Si vous disposez d'une imprimante série, une bonne façon de faire est d'installer lprps. Il s'agit d'un filtre d'impression PostScript qui assure une communication en duplex avec l'imprimante. Il met à jour le fichier d'état de l'imprimante avec des informations détaillées que cette dernière lui fournit, de sorte que les utilisateurs et les administrateurs puissent connaître précisément l'état de l'imprimante (par exemple “niveau de toner bas” ou “bourrage papier”). Mais plus important encore, il inclut un programme nommé psif qui détecte si le travail d'impression qui vient d'arriver est du texte brut et lance textps (un autre programme fourni avec lprps) pour le convertir en PostScript. Il utilise alors lprps pour envoyer le travail d'impression à l'imprimante.
lprps fait partie du catalogue des logiciels portés FreeBSD (lisez la section Le catalogue des logiciels portés). Vous pouvez installer un des deux logiciels portés print/lprps-a4 et print/lprps-letter en fonction du format de papier utilisé. Après avoir installé lprps, précisez simplement le chemin vers le programme psif qui fait partie de lprps. Si vous avez installé lprps en recourant au catalogue des logiciels portés, placez les valeurs suivantes pour l'entrée de l'imprimante série PostScript dans /etc/printcap:
:if=/usr/local/libexec/psif:
Vous devrez également renseigner le paramètre rw qui indique à LPD de requérir l'imprimante en mode lecture/écriture.
Si vous disposez d'une imprimante PostScript parallèle (et ne pouvez donc pas utiliser la communication en duplex avec l'imprimante dont a besoin lprps), vous pouvez recourir à la procédure suivante en tant que filtre texte:
#!/bin/sh
#
# psif - Imprime du PostScript ou du texte brut sur une imprimante PostScript
# Version script; CECI N'EST PAS la version fournie avec lprps
# Fichier /usr/local/libexec/psif
#
IFS="" read -r first_line
first_two_chars=`expr "$first_line" : '\(..\)'`
if [ "$first_two_chars" = "%!" ]; then
#
# Travail PostScript, l'imprimer.
#
echo "$first_line" && cat && printf "\004" && exit 0
exit 2
else
#
# Texte brut, le convertir, puis l'imprimer.
#
( echo "$first_line"; cat ) | /usr/local/bin/textps && printf "\004" && exit 0
exit 2
fi
Dans la procédure ci-dessus, textps est un programme que nous avons installé séparément pour convertir du texte en PostScript. Vous pouvez recourir à n'importe quel programme texte-vers-PostScript, selon votre désir. Le catalogue des logiciels portés de FreeBSD (voir la section Le catalogue des logiciels portés) comprend un programme de conversion texte-vers-PostScript complet nommée a2ps, qui pourrait vous intéresser.
PostScript est le standard de fait pour l'impression et la composition de haute qualité. Cependant, PostScript est un standard onéreux. Heureusement, Aladdin Enterprises propose un succédané gratuit de PostScript nommé Ghostscript qui fonctionne sous FreeBSD. Ghostscript peut lire la majorité des fichiers PostScript et peut produire leurs pages sur une diversité de périphériques, incluant beaucoup de marques d'imprimantes non-PostScript. En installant Ghostscript et en recourant à un filtre texte spécial, vous pouvez obtenir de votre imprimante non-PostScript qu'elle se comporte comme une véritable imprimante PostScript.
Ghostscript fait partie du catalogue des logiciels portés, de nombreuses versions sont disponibles, la version la plus couramment utilisée est print/ghostscript-gpl.
Pour émuler du PostScript, il nous faut faire en sorte que le filtre texte détecte s'il imprime un fichier PostScript. Si ce n'est pas le cas, alors le filtre doit passer le fichier directement à l'imprimante; sinon il recourra à Ghostscript pour tout d'abord le convertir dans un format que l'imprimante saura interpréter.
Voici un exemple: la procédure suivante est un filtre texte pour les
imprimantes Hewlett Packard Deskjet 500. Pour d'autres modèles, changez le
paramètre -sDEVICE de la commande gs (Ghostscript). (Entrez gs -h pour obtenir une liste des périphériques
reconnus par l'installation actuelle de Ghostscript).
#!/bin/sh
#
# ifhp - Imprime du PostScript émulé par Ghostscript sur une DeskJet 500
# Fichier /usr/local/libexec/ifhp
#
# Traite LF comme CR+LF (pour éviter l'"effet d'escalier" sur les
# imprimantes HP/PCL):
#
printf "\033&k2G" || exit 2
#
# Lit les deux premiers caractères du fichier
#
IFS="" read -r first_line
first_two_chars=`expr "$first_line" : '\(..\)'`
if [ "$first_two_chars" = "%!" ]; then
#
# Si c'est du PostScript; utiliser Ghostscript pour le convertir et l'imprimer
#
/usr/local/bin/gs -dSAFER -dNOPAUSE -q -sDEVICE=djet500 \
-sOutputFile=- - && exit 0
else
#
# Texte brut ou HP/PCL, donc impression directe; effectuer un
# saut de page à la fin pour éjecter la dernière page.
#
echo "$first_line" && cat && printf "\033&l0H" &&
exit 0
fi
exit 2
Pour finir, vous devez communiquer à LPD le filtre utilisé en positionnant le paramètre if:
:if=/usr/local/libexec/ifhp:
Voilà. Vous pouvez entrer lpr texte.simple et lpr peuimporte.ps, et chacune des deux commandes devrait imprimer avec succès.
Après avoir mené à bien la configuration basique décrite à la section Configuration simple de l'imprimante, la première chose que vous souhaiterez probablement faire sera d'installer des filtres de conversion pour vos formats de fichiers favoris (le simple texte ASCII mis à part).
Les filtres de conversion facilitent l'impression de différentes sortes de fichiers. Par exemple, supposons que nous travaillions énormément avec le système de composition TeX, et que nous ayons une imprimante PostScript. Chaque fois que nous générerons un fichier DVI à partir de TeX, nous ne pouvons l'imprimer directement avant d'avoir converti ce fichier DVI en PostScript. La séquence de commandes serait la suivante:
% dvips seaweed-analysis.dvi % lpr seaweed-analysis.ps
En installant un filtre de conversion pour fichiers DVI, nous pouvons à chaque fois nous passer de l'étape de conversion manuelle en chargeant LPD de le faire à notre place. Maintenant, à chaque fois que nous avons un fichier DVI, nous ne sommes plus qu'à un pas de l'impression:
% lpr -d seaweed-analysis.dvi
Nous faisons en sorte que LPD se charge de la
conversion du fichier DVI à notre place en positionnant l'option -d. La section Options de
conversion et de formatage donne la liste des options de conversion.
Pour chacune des options de conversion que vous voulez faire accepter par une imprimante, installez un filtre de conversion et indiquez son chemin d'accès dans /etc/printcap. Un filtre de conversion ressemble au filtre texte de notre configuration de base (voir la section Installer le filtre texte), à ceci près qu'au lieu d'imprimer du texte brut, le filtre convertit le fichier en un format compréhensible par l'imprimante.
Vous devez installer les filtres de conversion que vous vous attendez à utiliser. Si vous imprimez beaucoup de données DVI, alors un filtre de conversion DVI est dans la logique des choses. Si vous devez imprimer beaucoup de troff, alors vous aurez sûrement besoin d'un filtre troff.
Le tableau suivant récapitule les filtres avec lesquels LPD fonctionne, leurs paramètres /etc/printcap, et comment les invoquer avec la lpr:
| Type de fichier | paramètre /etc/printcap | option lpr |
|---|---|---|
| cifplot | cf | -c |
| DVI | df | -d |
| plot | gf | -g |
| ditroff | nf | -n |
| code FORTRAN | rf | -f |
| troff | tf | -f |
| image en mode point | vf | -v |
| texte brut | if | aucune, -p, or -l |
Dans notre exemple, utiliser lpr -d veut dire que l'imprimante a besoin du paramètre df dans l'entrée /etc/printcap la concernant.
Aussi fortement que certains puissent s'en émouvoir, des formats comme le code FORTRAN ou le plot sont probablement obsolètes. Sur votre site, vous pouvez attribuer de nouvelles significations à ces options ou à toute autre option de formatage en installant simplement des filtres personnalisés. Par exemple, supposons que vous aimeriez imprimer des fichiers Printerleaf directement (fichiers issus du programme de publication assistée par ordinateur Interleaf), mais jamais de fichiers plot. Vous pourriez alors installer un filtre de conversion Printerleaf sous le paramètre gf et ensuite informer vos utilisateurs que lpr -g veut dire “imprimer des fichiers Printerleaf”.
Etant donné que les filtres de conversion sont des applications qui ne font pas partie du système FreeBSD de base, vous devriez les installer dans /usr/local. Le répertoire /usr/local/libexec est une destination de choix, car ce sont des programmes spécialisés que seul LPD lancera; les utilisateurs ordinaires ne devraient jamais avoir à les lancer.
Pour activer un filtre de conversion, précisez son chemin d'accès dans le paramètre relatif à l'imprimante de destination dans /etc/printcap.
Dans notre exemple, nous allons ajouter le filtre de conversion DVI pour l'imprimante nommée bamboo. Revoici le fichier /etc/printcap d'exemple, avec le nouveau paramètre df pour l'imprimante bamboo:
#
# /etc/printcap pour la machine rose - ajout du filtre df pour bamboo
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:\
:lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\
:if=/usr/local/libexec/psif:\
:df=/usr/local/libexec/psdf:
Le filtre DVI est une procédure nommée /usr/local/libexec/psdf. En voici le contenu:
#!/bin/sh # # psdf - filtre DVI vers imprimante PostScript # Fichier /usr/local/libexec/psdf # # Appelé par lpd quand l'utilisateur lance lpr -d # exec /usr/local/bin/dvips -f | /usr/local/libexec/lprps "$@"
Cette procédure lance dvips en mode filtre (cela
correspond au paramètre -f) sur l'entrée
standard, qui est le travail d'impression à exécuter. Ensuite, elle
lance le filtre pour imprimante PostScript lprps (voir la section Gérer les travaux d'impression de
texte brut sur des imprimantes PostScript) avec
les paramètres que LPD lui a passés.
Le programme lprps utilisera ces paramètres pour
comptabiliser les pages imprimées.
Il n'existe pas de procédure figée pour l'installation des filtres de conversion, des exemples fonctionnels sont présentés dans cette section. Inspirez-vous de ces exemples pour créer vos propres filtres. Utilisez les tels quels s'il s'avèrent adéquats.
Cet exemple présente un filtre de conversion d'image en mode point (en fait un fichier GIF) pour une imprimante Hewlett-Packard LaserJet III-Si:
#!/bin/sh
#
# hpvf - Convertit des fichiers GIF en HP/PCL, puis les imprime
# Fichier /usr/local/libexec/hpvf
PATH=/usr/X11R6/bin:$PATH; export PATH
giftopnm | ppmtopgm | pgmtopbm | pbmtolj -resolution 300 \
&& exit 0 \
|| exit 2
Son fonctionnement est le suivant: il convertit le fichier GIF en un format portable universel, puis en format portable en niveau de gris, et ensuite en bitmap portable, qu'il convertit enfin en données compatibles LaserJet/PCL.
Voici le /etc/printcap comportant une entrée pour une imprimante recourant au filtre ci-dessus:
#
# /etc/printcap pour la machine orchid
#
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
:lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:\
:if=/usr/local/libexec/hpif:\
:vf=/usr/local/libexec/hpvf:
La procédure suivante est un filtre de conversion de données troff du système de composition groff pour l'imprimante PostScript bamboo:
#!/bin/sh # # pstf - Convertit des données troff de groff en PS, puis imprime. # Fichier /usr/local/libexec/pstf # exec grops | /usr/local/libexec/lprps "$@"
La procédure ci-dessus emploie de nouveau lprps pour gérer la communication avec l'imprimante. S'il s'agissait d'une imprimante sur port parallèle, nous utiliserions plutôt la procédure suivante:
#!/bin/sh # # pstf - Convertit des données troff de groff en PS, puis imprime. # Fichier /usr/local/libexec/pstf # exec grops
C'est tout. Voici l'entrée qu'il faut ajouter dans /etc/printcap pour activer le filtre:
:tf=/usr/local/libexec/pstf:
Voici un exemple qui pourrait faire rougir les vieux briscards de FORTRAN. C'est un filtre de code FORTRAN pour toute imprimante sachant imprimer du texte brut. Nous l'installerons pour l'imprimante teak:
#!/bin/sh # # hprf - filtre texte FORTRAN pour LaserJet 3si: # Fichier /usr/local/libexec/hprf # printf "\033&k2G" && fpr && printf "\033&l0H" && exit 0 exit 2
Et nous ajouterons cette ligne dans /etc/printcap pour l'imprimante teak afin d'activer le filtre:
:rf=/usr/local/libexec/hprf:
Voici un dernier exemple, quelque peu complexe. Nous allons ajouter un filtre DVI pour l'imprimante LaserJet teak présentée ci-dessus. Tout d'abord, la partie facile: mettre à jour /etc/printcap avec l'emplacement du filtre DVI:
:df=/usr/local/libexec/hpdf:
Et maintenant, la partie difficile: écrire le filtre. Pour cela, nous avons besoin d'un programme de conversion DVI-vers-LaserJet/PCL. Le catalogue des logiciels portés (voyez la section Le catalogue des logiciels portés) en possède un: print/dvi2xx. Installer ce logiciel porté nous fournira le programme dont nous avons besoin, dvilj2p, qui convertit le DVI en code compatible LaserJet IIp, LaserJet III et LaserJet 2000.
L'utilitaire dvilj2p rend le filtre hpdf assez complexe, parce que dvilj2p ne sait pas lire l'entrée standard. Il lui faut un nom de fichier. Pire encore, le nom du fichier doit se terminer par .dvi, ce qui rend l'utilisation de /dev/fd/0 pour l'entrée standard problématique. Nous pouvons contourner cette difficulté en créant un lien symbolique temporaire (se terminant par .dvi) pointant vers /dev/fd/0, obligeant ainsi dvilj2p à lire l'entrée standard.
Le seul petit accroc restant est que nous ne pouvons pas utiliser /tmp pour le lien temporaire. Les liens symboliques ont pour propriétaire l'utilisateur et le group bin. Le filtre est lancé sous l'utilisateur daemon. Et le bit “sticky” est positionné sur le répertoire /tmp. Le filtre peut créer le lien, mais il ne pourra pas nettoyer lorsqu'il aura fini et supprimer ce lien puisqu'il appartient à un utilisateur différent.
Au lieu de ça, le filtre créera le lien dans le répertoire courant, qui est le répertoire de la file d'attente des travaux d'impression (précisé par le paramètre sd dans /etc/printcap). C'est l'endroit idéal pour faire travailler les filtres, particulièrement parce qu'il y a (parfois) plus d'espace disque libre dans ce répertoire que sous /tmp.
Voici, enfin, le filtre:
#!/bin/sh
#
# hpdf - Imprime des données DVI sur une imprimante HP/PCL
# Fichier /usr/local/libexec/hpdf
PATH=/usr/local/bin:$PATH; export PATH
#
# Définit une fonction de nettoyage de nos fichiers temporaires. Ils prennent place
# dans le répertoire courant, qui sera le répertoire
# de file d'attente
# de l'imprimante.
#
cleanup() {
rm -f hpdf$$.dvi
}
#
# Définit une fonction de gestion des erreurs fatales: affiche le message
# d'erreur et retourne 2. Ce code d'erreur de 2 indique à LPD
# de ne pas essayer de réimprimer le travail d'impression
#
fatal() {
echo "$@" 1>&2
cleanup
exit 2
}
#
# Si l'utilisateur enlève le travail d'impression, LPD envoie SIGINT, donc
# il faut capturer le signal SIGINT
# (et quelques autres signaux) pour nettoyer après notre passage.
#
trap cleanup 1 2 15
#
# Assurons-nous qu'il n'y ait pas conflit ce nom avec des fichiers existants.
#
cleanup
#
# Lien du fichier DVI vers l'entrée standard (fichier à imprimer).
#
ln -s /dev/fd/0 hpdf$$.dvi || fatal "Cannot symlink /dev/fd/0"
#
# Conversion LF = CR+LF
#
printf "\033&k2G" || fatal "Cannot initialize printer"
#
# Conversion et impression. Le code de retour de dvilj2p ne semble
# pas fiable: ignorons-le.
#
dvilj2p -M1 -q -e- dfhp$$.dvi
#
# Nettoyage et sortie de la procédure
#
cleanup
exit 0
Tous ces filtres de conversion apportent beaucoup à votre environnement d'impression, mais nécessitent que l'utilisateur précise (dans la ligne de commande lpr(1)) lequel utiliser. Si vos utilisateurs ne sont pas particulièrement versés en informatique, préciser une option de filtre sera problématique. Mais ce qui s'avère pire encore est qu'une option de filtre mal choisie peut lancer un filtre sur un type de fichier erroné et causer l'impression de centaines de pages.
Plutôt que d'installer quelque filtre de conversion que ce soit, vous préférerez sans doute laisser le filtre texte (puisque c'est le filtre par défaut) déterminer le type de fichier qu'on lui a demandé d'imprimer et lancer automatiquement le filtre de conversion approprié. Des outils comme file peuvent s'avérer utiles dans ce cas. Bien entendu, il sera difficile d'établir les différences entre certains types de fichiers--et vous pouvez toujours, bien sûr, fournir des filtres de conversion uniquement pour eux.
Le catalogue des logiciels portés FreeBSD contient un filtre texte, nommé apsfilter (print/apsfilter), qui sait effectuer la conversion automatique. Il peut reconnaître le texte brut, le PostScript les fichiers DVI et quasiment n'importe quelle sorte de fichier, effectuer les conversions appropriées et imprimer.
Le gestionnaire d'impression LPD reconnaît un autre type de filtre dont nous n'avons pas encore discuté: le filtre de sortie. Un filtre de sortie est destiné à l'impression de texte brut seulement, comme le filtre texte, mais avec de nombreuses simplifications. Si vous utilisez un filtre de sortie mais pas de filtre texte, alors:
LPD lance un filtre de sortie une seule fois par travail d'impression, au lieu d'une fois pour chacun des fichiers du travail d'impression.
LPD ne fournit rien pour permettre au filtre de sortie de repérer le début ou la fin des fichiers du travail d'impression.
LPD ne passe pas le nom de l'utilisateur ou le nom de la machine au filtre, qui n'est donc pas prévu pour effectuer la comptabilisation de l'impression. En fait, il ne reçoit que deux paramètres:
nom-du-filtre -wlargeur -lhauteur
Où largeur provient du paramètre pw et hauteur du paramètre pl de l'entrée /etc/printcap pour l'imprimante en question.
Ne vous laissez pas séduire par la simplicité d'un filtre de sortie. Si vous désirez que chaque fichier d'un travail d'impression commence sur une page différente, un filtre de sortie ne conviendra pas. Utilisez un filtre texte (également appelé filtre d'entrée); voir la section Installer le filtre texte. De plus, le filtre de sortie se révèle en fait plus complexe en ce sens qu'il doit examiner le flux d'octets qui lui est envoyé pour y rechercher des caractères spéciaux et qu'il doit s'envoyer à lui-même des signaux comme s'ils provenaient de LPD.
Toutefois, un filtre de sortie s'avère nécessaire si vous désirez des pages d'en-tête et avez besoin d'envoyer des séquences d'échappement ou d'autres chaînes d'initialisation afin de pouvoir imprimer la page d'en-tête. (Mais il est également futile si vous voulez imputer les pages d'en-tête au compte de l'utilisateur, puisque LPD ne livre pas d'information sur l'utilisateur ou la machine au filtre de sortie).
Sur une seule imprimante, LPD permet à la fois un filtre de sortie et des filtres texte ou autres. Dans de tels cas, LPD ne lancera le filtre de sortie que pour imprimer la page d'en-tête (consultez la section Pages d'en-tête). LPD attend alors que le filtre de sortie s'arrête par lui-même en envoyant deux octets au filtre: ASCII 031 suivi d'ASCII 001. Lorsqu'un filtre de sortie lit ces deux octets (031,001), il devrait s'arrêter en s'envoyant à lui-même un SIGSTOP. Lorsque LPD a fini d'exécuter les autres filtres, il relance le filtre de sortie en lui envoyant un SIGCONT.
S'il y a un filtre de sortie mais aucun filtre texte et que LPD s'occupe d'un travail d'impression concernant du texte brut, alors LPD utilise le filtre de sortie pour réaliser ce travail d'impression. Comme exposé plus haut, le filtre de sortie imprimera chacun des travaux d'impression séquentiellement sans que des sauts de page ou autres formes d'avancement du papier ne surviennent, et ce n'est vraisemblablement pas ce que vous désirez. Dans presque tous les cas, il vous faut un filtre texte.
Le programme lpf, que nous avons présenté précédemment comme un filtre texte, peut également fonctionner en tant que filtre de sortie. Si vous avez besoin d'un filtre de sortie vite-fait-bien-fait mais ne voulez pas écrire le code d'examen d'octets et d'envoi de signal, essayez lpf. Vous pouvez également inclure lpf dans une procédure pour prendre en charge tout code d'initialisation qui pourrait être requis par l'imprimante.
Le programme /usr/libexec/lpr/lpf qui est fourni avec la distribution binaire FreeBSD est un filtre texte (un filtre d'entrée) qui sait indenter la sortie (un travail d'impression soumis avec lpr -i), laisse passer les caractères littéraux (travail d'impression soumis avec lpr -l), ajuste la position d'impression des retours arrière et des tabulations dans le travail d'impression, et comptabilise les pages imprimées. Il peut également servir de filtre de sortie.
Le filtre lpf convient à de nombreux environnements d'impression. Et bien qu'il ne puisse pas envoyer de séquences d'initialisation à une imprimante, il est aisé d'écrire une procédure pour effectuer l'initialisation nécessaire et ensuite exécuter lpf.
Afin que lpf mène à bien la comptabilisation des pages, il faut que des valeurs correctes soient indiquées pour les paramètres pw et pl dans le fichier /etc/printcap. Il utilise ces valeurs pour déterminer combien de texte peut être imprimé sur une page et combien de pages ont été imprimées dans le travail d'impression d'un utilisateur. Pour plus d'informations sur la comptabilisation de l'impression, lisez la section Comptabiliser l'utilisation de l'imprimante.
Si vous avez beaucoup d'utilisateurs, et que tous utilisent des imprimantes diverses, alors vous allez certainement envisager les pages d'en-tête comme un mal nécessaire.
Les pages d'en-tête, également appelées bannières ou burst page, identifient à qui appartiennent les travaux d'impression après qu'ils aient été imprimés. Elles sont en général imprimées en caractères de grande taille et en gras, peuvent comporter des bordures décorées, de sorte qu'elles contrastent dans une pile d'impressions avec les véritables documents formant les travaux d'impression des utilisateurs. Elles leur permettent de retrouver facilement leurs travaux d'impression. L'inconvénient majeur d'une page d'en-tête est qu'elle représente une page supplémentaire à imprimer pour chacun des travaux d'impression, son utilité éphémère ne dépasse pas quelques minutes, et elle termine au recyclage du papier ou dans une corbeille. (Notez que une page d'en-tête est liée à chaque travail d'impression et non à chaque fichier dans un travail d'impression: il se pourrait donc que le gâchis de papier ne soit pas si grand.)
Le système LPD peut fournir des pages d'en-tête automatiquement pour vos impressions si votre imprimante sait imprimer directement du texte brut. Si vous disposez d'une imprimante PostScript, il vous faudra un programme externe pour générer la page d'en-tête; lisez la section Les pages d'en-tête sur les imprimantes PostScript.
Dans la section Configuration simple de l'imprimante, nous avons désactivé les pages d'en-tête en positionnant le paramètre sh (ce qui signifie “suppress header”, soit “suppression des en-têtes”) dans /etc/printcap. Pour activer les pages d'en-tête sur une imprimante, il suffit d'enlever ce paramètre sh.
Cela semble trop facile, n'est-ce pas?
C'est vrai. Il se pourrait que vous ayez à fournir un filtre de sortie pour envoyer des chaînes d'initialisation à l'imprimante. Voici un exemple de filtre sortie pour les imprimantes Hewlett-Packard compatibles-PCL:
#!/bin/sh # # hpof - filtre de sortie pour les imprimantes Hewlett Packard compatibles PCL # Fichier /usr/local/libexec/hpof printf "\033&k2G" || exit 2 exec /usr/libexec/lpr/lpf
Spécifiez le chemin d'accès au filtre de sortie avec le paramètre of. Lisez la section Filtres de sortie pour plus de détails.
Voici un fichier /etc/printcap d'exemple pour l'imprimante teak que nous avons présentée plus haut; nous avons activé les pages d'en-tête et ajouté le fichier de sortie ci-dessus:
#
# /etc/printcap pour la machine orchid
#
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
:lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:\
:if=/usr/local/libexec/hpif:\
:vf=/usr/local/libexec/hpvf:\
:of=/usr/local/libexec/hpof:
Désormais, lorsque les utilisateurs lancent des travaux d'impression avec teak, ils obtiennent une page d'en-tête avec chaque travail d'impression. Si vos utilisateurs désirent perdre du temps à rechercher leurs impressions, ils peuvent omettre la page d'en-tête en soumettant le travail d'impression avec la commande lpr -h; lisez la section Options des pages d'en-tête pour connaître plus d'options lpr(1).
Note : LPD imprime un caractère de saut de page après une page d'en-tête. Si votre imprimante utilise un autre caractère ou séquence de caractères différente pour éjecter une page, précisez-le avec le paramètre ff dans /etc/printcap.
Une fois les pages d'en-tête activées, LPD produira un en-tête long, c'est à dire une page entière de grands caractères identifiant l'utilisateur, le nom de la machine et le travail d'impression. Voici un exemple (kelly a lancé le travail d'impression nommé “outline” depuis la machine rose):
k ll ll
k l l
k l l
k k eeee l l y y
k k e e l l y y
k k eeeeee l l y y
kk k e l l y y
k k e e l l y yy
k k eeee lll lll yyy y
y
y y
yyyy
ll
t l i
t l
oooo u u ttttt l ii n nnn eeee
o o u u t l i nn n e e
o o u u t l i n n eeeeee
o o u u t l i n n e
o o u uu t t l i n n e e
oooo uuu u tt lll iii n n eeee
r rrr oooo ssss eeee
rr r o o s s e e
r o o ss eeeeee
r o o ss e
r o o s s e e
r oooo ssss eeee
Job: outline
Date: Sun Sep 17 11:04:58 1995
LPD ajoute un saut de page à ce texte de sorte que le travail d'impression commence sur une nouvelle page (à moins que sf (supprimer les sauts de page) ne soit dans l'entrée correspondant à l'imprimante dans /etc/printcap).
Si vous préférez, LPD peut générer des en-tête courts; ajoutez le paramètre sb (en-tête court) dans le fichier /etc/printcap. La page d'en-tête ressemblera à ceci:
rose:kelly Job: outline Date: Sun Sep 17 11:07:51 1995
Par défaut également, LPD imprime d'abord la page d'en-tête, puis le travail d'impression. Pour inverser ce comportement, placez le paramètre hl (en-tête à la fin) dans /etc/printcap.
Utiliser les pages d'en-tête fournies par LPD provoque un comportement particulier lorsqu'il s'agit de comptabiliser l'utilisation de l'imprimante: les pages d'en-tête doivent être gratuites.
Pourquoi?
Parce que le filtre de sortie est le seul programme externe pouvant tenir les comptes qui aura le contrôle lors de l'impression de la page d'en-tête, et qu'aucune information sur l'utilisateur ou le nom de la machine ne lui est donnée ni aucun fichier de comptabilisation, par conséquent il ne sait pas à qui attribuer le coût de l'utilisation de l'imprimante. Il ne suffit pas non plus de simplement “ajouter une page” au filtre texte ou un quelconque filtre de conversion (qui, eux, possèdent des informations sur l'utilisateur et la machine) puisque les utilisateurs peuvent supprimer les pages d'en-tête avec lpr -h. Ils pourraient toujours se voir imputer des pages d'en-tête qu'ils n'auraient pas imprimées. En somme, lpr -h demeurera l'option favorite des utilisateurs soucieux de l'environnement, mais vous ne pouvez aucunement les inciter à l'utiliser.
Il ne suffit pas non plus de
laisser chacun des filtres générer ses propres pages
d'en-tête (ce qui permettrait de savoir à qui imputer les
coûts). Si les utilisateurs désiraient omettre les pages
d'en-tête avec lpr -h, ils les obtiendraient quand
même et le coût leur serait attribué puisque LPD ne donne aucun renseignement sur l'emploi de l'option
-h à aucun des filtres.
Alors, quelles sont les options à votre disposition?
Vous pouvez:
Accepter le comportement de LPD et la gratuité des pages d'en-tête.
Installer une alternative à LPD, comme LPRng. La section Alternatives au gestionnaire d'impression standard en dit plus au sujet des autres gestionnaires d'impression qui peuvent être substitués à LPD.
Ecrire un filtre de sortie intelligent. Normalement, un filtre de sortie n'est pas censé faire plus que d'initialiser une imprimante ou exécuter une conversion simple de caractères. Il convient aux pages d'en-tête et aux travaux d'impression de texte brut (lorsqu'il n'y a aucun filtre (d'entrée) texte). Mais, s'il existe un filtre texte pour les travaux d'impression de texte, alors LPD ne lancera le filtre de sortie que pour les pages d'en-tête. Le filtre de sortie peut également analyser le texte de la page d'en-tête généré par LPD pour déterminer quels sont l'utilisateur et la machine à qui il faut attribuer le coût de cette page d'en-tête. Le seul autre problème avec cette méthode est que le filtre de sortie ne sait toujours pas quel fichier de comptabilisation utiliser (le nom du fichier spécifié par le paramètre af ne lui est pas fourni), mais si vous disposez d'un fichier de comptabilisation bien identifié, vous pouvez le coder en dur dans le filtre de sortie. Afin de faciliter l'étape d'analyse, utilisez le paramètre sh (en-tête courte) dans /etc/printcap. D'un autre côté, tout cela pourrait bien représenter beaucoup de dérangement, et les utilisateurs apprécieront certainement davantage l'administrateur généreux qui propose la gratuité des pages d'en-tête.
Comme décrit précédemment, LPD est en mesure de générer des pages d'en-tête texte convenant pour de nombreuses d'imprimantes. Bien entendu, PostScript ne peut pas imprimer du texte directement, donc la fonctionnalité de page d'en-tête offerte par LPD est inutilisable ou presque.
Une solution manifeste est de faire générer la page d'en-tête par tous les filtres de conversion et le filtre texte. Les filtres devraient employer les paramètres utilisateur et nom de machine pour générer une page d'en-tête convenable. L'inconvénient de cette méthode est que les utilisateurs obtiendront toujours une page d'en-tête, même s'ils soumettent leurs travaux d'impression avec lpr -h.
Examinons cette méthode. La procédure ci-dessous prend trois paramètres (le nom de l'utilisateur, le nom de la machine et celui du travail d'impression) et réalise une page d'en-tête simple en PostScript:
#!/bin/sh
#
# make-ps-header - génére une page d'en-tête PostScript sur la sortie standard
# Fichier /usr/local/libexec/make-ps-header
#
#
# Ce sont des unités PostScript (72 par pouce). A modifier pour A4 ou
# tout autre format papier employé:
#
page_width=612
page_height=792
border=72
#
# Vérification des paramètres
#
if [ $# -ne 3 ]; then
echo "Usage: `basename $0` <user> <host> <job>" 1>&2
exit 1
fi
#
# Mémorisation des paramètres, pour la lisibilité du PostScript, plus bas.
#
user=$1
host=$2
job=$3
date=`date`
#
# Envoi du code PostScript sur stdout.
#
exec cat <<EOF
%!PS
%
% Assurons-nous qu'il n'y a pas d'interférence avec le travail
% utilisateur qui suivra
%
save
%
% Applique une grosse bordure désagréable autour
% du bord de la page.
%
$border $border moveto
$page_width $border 2 mul sub 0 rlineto
0 $page_height $border 2 mul sub rlineto
currentscreen 3 -1 roll pop 100 3 1 roll setscreen
$border 2 mul $page_width sub 0 rlineto closepath
0.8 setgray 10 setlinewidth stroke 0 setgray
%
% Affiche le nom de l'utilisateur, de façon jolie, grande et proéminente
%
/Helvetica-Bold findfont 64 scalefont setfont
$page_width ($user) stringwidth pop sub 2 div $page_height 200 sub moveto
($user) show
%
% Maintenant, les détails ennuyant:
%
/Helvetica findfont 14 scalefont setfont
/y 200 def
[ (Job:) (Host:) (Date:) ] {
200 y moveto show /y y 18 sub def }
forall
/Helvetica-Bold findfont 14 scalefont setfont
/y 200 def
[ ($job) ($host) ($date) ] {
270 y moveto show /y y 18 sub def
} forall
%
% C'est tout
%
restore
showpage
EOF
Désormais, chacun des filtres de conversion et le filtre texte peuvent appeler cette procédure pour d'abord générer la page d'en-tête, et ensuite imprimer le travail d'impression de l'utilisateur. Voici le filtre de conversion DVI déjà mentionné plus haut dans ce document, modifié afin de générer une page d'en-tête:
#!/bin/sh
#
# psdf - filtre DVI vers imprimante PostScript
# Fichier /usr/local/libexec/psdf
#
# Appelé par lpd quand l'utilisateur lance lpr -d
#
orig_args="$@"
fail() {
echo "$@" 1>&2
exit 2
}
while getopts "x:y:n:h:" option; do
case $option in
x|y) ;; # Ignore
n) login=$OPTARG ;;
h) host=$OPTARG ;;
*) echo "LPD started `basename $0` wrong." 1>&2
exit 2
;;
esac
done
[ "$login" ] || fail "Pas de nom d'utilisateur"
[ "$host" ] || fail "PAs de nom de machine"
( /usr/local/libexec/make-ps-header $login $host "DVI File"
/usr/local/bin/dvips -f ) | eval /usr/local/libexec/lprps $orig_args
Observez que le filtre doit analyser la liste des paramètres pour déterminer le nom de l'utilisateur et celui de la machine. L'analyse menée par les autres filtres de conversion est identique. Toutefois, le filtre texte réclame un ensemble de paramètres légèrement différent (voyez la section Fonctionnement des filtres).
Comme précédemment exposé, cette solution, quoique
relativement simple, invalide l'option de “suppression de page
d'en-tête” (l'option -h) de lpr. Si les utilisateurs désiraient épargner la
vie d'un arbre (ou économiser quelques centimes, si vous faites payer
les pages d'en-tête), ils ne seraient pas en mesure de le faire, puisque
chaque filtre va imprimer une page d'en-tête avec chaque travail
d'impression.
Pour permettre aux utilisateurs de désactiver les pages d'en-tête en fonction du travail d'impression, il vous faudra recourir à l'une des astuces de la section Comptabiliser les pages d'en-tête: écrire un filtre de sortie qui analyse la page d'en-tête générée par LPD et produit une version PostScript. Si l'utilisateur soumet le travail d'impression avec lpr -h alors ni LPD ni votre filtre de sortie ne généreront de page d'en-tête. Sinon, votre filtre de sortie lira le texte en provenance de LPD et enverra la page d'en-tête PostScript appropriée à l'imprimante.
Si vous disposez d'une imprimante PostScript sur une interface série, vous pouvez utiliser lprps, qui est livré avec un filtre de sortie, psof, qui réalise ce que nous venons d'exposer ci-dessus. Notez que psof n'assume pas la tenue de comptes pour les pages d'en-tête.
FreeBSD gère l'impression via un réseau: c'est à dire en envoyant les travaux d'impression à des imprimantes distantes. L'impression via un réseau désigne deux choses différentes:
Accéder à une imprimante connectée à une machine distante. Vous installez une imprimante disposant d'une interface conventionnelle, série ou parallèle, sur une machine. Puis vous configurez LPD pour permettre l'accès à l'imprimante depuis d'autres machines du réseau. La section Imprimantes installées sur des machines distantes en détaillera la mise en œuvre.
Accéder à une imprimante directement connectée au réseau. L'imprimante dispose d'une interface réseau en plus (ou à la place) d'interfaces plus conventionnelles, série ou parallèle. Une imprimante de ce genre peut fonctionner ainsi:
Elle peut comprendre le protocole LPD et sait même gérer une file d'attente de travaux d'impression provenant de machines distantes. En ce cas, elle se comporte comme une machine normale qui exécuterait LPD. Suivez la même procédure que celle exposée à la section Imprimantes installées sur des machines distantes afin de configurer une imprimante de ce genre.
Elle peut savoir gérer un flux de données au travers d'une connexion réseau. Dans ce cas, vous pouvez “attacher” l'imprimante à l'une des machines du réseau en la rendant responsable de la gestion de la file d'impression et de l'envoi des travaux d'impression à l'imprimante. La section Imprimantes avec des interfaces utilisant des flux réseau donne quelque indications sur l'installation d'imprimantes de ce type.
Le gestionnaire d'impression LPD dispose des fonctions pour gérer l'envoi des travaux d'impression à d'autres machines exécutant également LPD (ou un système qui lui est compatible). Cette fonctionnalité vous permet d'installer une imprimante sur une machine, puis de la rendre accessible depuis les autres machines. Cela fonctionne également avec les imprimantes disposant d'interfaces réseau comprenant le protocole LPD.
Pour activer ce type d'impression à distance, installez d'abord une imprimante sur une machine, qui sera la machine d'impression, en suivant les instructions de configuration basique décrites à la section Configuration simple de l'imprimante. Réalisez toute étape de la configuration avancée de l'imprimante dont vous pourriez avoir besoin. Veillez à tester l'imprimante et vérifiez qu'elle fonctionne avec les paramètres de LPD que vous avez activés. Assurez-vous également que la machine locale est autorisée à utiliser le service LPD sur la machine distante (lisez la section Restreindre les impressions à distance).
Si vous utilisez une imprimante avec une interface réseau qui est compatible avec LPD, alors la machine d'impression dans le texte ci-dessous est l'imprimante elle-même, et le nom de l'imprimante est le nom que vous avez paramétré pour l'imprimante. Lisez la documentation livrée avec votre imprimante ou l'interface réseau-imprimante.
Astuce : Si vous utilisez une Hewlett Packard Laserjet, alors le nom d'imprimante text réalisera la conversion LF en CRLF automatiquement, de sorte que vous n'aurez pas besoin de la procédure hpif.
Ensuite, sur les autres machines pour lesquelles vous désirez autoriser l'accès à l'imprimante, créez une ligne dans leur /etc/printcap avec les paramètres suivants:
Nommez cette entrée comme vous le voulez. Par souci de simplicité, cependant, vous préférerez certainement employer les mêmes nom et alias que ceux utilisés sur la machine de d'impression.
Laissez le paramètre lp non-renseigné, de manière explicite (:lp=:).
Créez un répertoire de file d'impression et indiquez son chemin d'accès dans le paramètre sd. C'est là où LPD entreposera les travaux d'impression avant leur envoi vers la machine d'impression.
Indiquez le nom de la machine d'impression avec le paramètre rm.
Placez le nom de l'imprimante sur la machine d'impression dans le paramètre rp.
C'est tout. Il n'est pas nécessaire de préciser la liste des filtres de conversion, les dimensions de la page, ou quoique ce soit d'autre dans le fichier /etc/printcap.
Voici un exemple. La machine rose dispose de deux imprimantes, bamboo et rattan. Nous allons permettre aux utilisateurs de la machine orchid d'imprimer avec ces imprimantes. Voici le fichier /etc/printcap pour orchid (apparu dans la section Activer les pages d'en-tête). Il contenait déjà une entrée pour l'imprimante teak; nous avons ajouté celles pour les deux imprimantes sur la machine rose:
#
# /etc/printcap pour la machine orchid - ajout d'imprimantes (distantes)
# sur rose
#
#
# teak est locale; connectée directement à orchid:
#
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
:lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:\
:if=/usr/local/libexec/ifhp:\
:vf=/usr/local/libexec/vfhp:\
:of=/usr/local/libexec/ofhp:
#
# rattan est connectée à rose; envoie les travaux pour rattan
# à rose:
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan:
#
# bamboo est également connectée à rose:
#
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:
Ensuite, nous n'avons qu'à créer les répertoires de file d'impression sur orchid:
# mkdir -p /var/spool/lpd/rattan /var/spool/lpd/bamboo # chmod 770 /var/spool/lpd/rattan /var/spool/lpd/bamboo # chown daemon:daemon /var/spool/lpd/rattan /var/spool/lpd/bamboo
Maintenant les utilisateurs d'orchid peuvent imprimer sur rattan et bamboo. Par exemple, si un utilisateur sur orchid entrait:
% lpr -P bamboo -d sushi-review.dvi
le système LPD sur orchid copierait le travail d'impression dans le répertoire de file d'impression /var/spool/lpd/bamboo et relèverait qu'il s'agit d'un travail d'impression DVI. Dès que la machine rose dispose d'assez de place dans son répertoire de file d'impression, les deux LPD transfèrent le fichier à rose. Le fichier reste en attente dans la file de rose jusqu'à son impression. Il sera converti de DVI en PostScript (puisque bamboo est une imprimante PostScript) sur rose.
Bien souvent, lorsque vous achetez une carte d'interface réseau pour une imprimante, vous avez le choix entre deux versions: l'une qui émule un gestionnaire d'impression (la version la plus onéreuse), ou une autre qui ne vous permet que de lui envoyer des données comme s'il s'agissait d'un port série ou parallèle (c'est la version la moins chère). Cette section vous indique comment utiliser cette seconde version moins onéreuse. Pour la plus chère, lisez la section précédente Imprimantes installées sur des machines distantes.
Le format du fichier /etc/printcap vous permet de préciser quelle interface série ou parallèle vous souhaitez utiliser, et (si vous employez une interface série) à quelle vitesse de transmission, s'il faut employer le contrôle de flux, les temporisations pour les tabulations, la conversion des sauts de lignes, et plus encore. Mais il n'existe aucun moyen de préciser une connexion à une imprimante qui écoute sur un port TCP/IP ou un autre port réseau.
Pour envoyer des données à une imprimante mise en réseau, il vous faut développer un programme de communication qui puisse être appelé par les filtres textes et de conversion. Voici un exemple: la procédure netprint récupère toutes les données sur l'entrée standard et les envoie à une imprimante connectée au réseau. Nous précisons le nom de machine de l'imprimante dans le premier paramètre et le numéro de port auquel se connecter dans le deuxième paramètre de netprint. Notez qu'il ne gère que la communication unidirectionnelle (dans le sens FreeBSD vers imprimante); de nombreuses imprimantes réseau supporte la communication bidirectionnelle, et vous désirerez certainement en tirer parti (afin de connaître le statut de l'imprimante, de comptabiliser l'utilisation, etc.).
#!/usr/bin/perl
#
# netprint - Filtre texte pour imprimante connectée au réseau
# Fichier /usr/local/libexec/netprint
#
$#ARGV eq 1 || die "Usage: $0 <printer-hostname> <port-number>";
$printer_host = $ARGV[0];
$printer_port = $ARGV[1];
require 'sys/socket.ph';
($ignore, $ignore, $protocol) = getprotobyname('tcp');
($ignore, $ignore, $ignore, $ignore, $address)
= gethostbyname($printer_host);
$sockaddr = pack('S n a4 x8', &AF_INET, $printer_port, $address);
socket(PRINTER, &PF_INET, &SOCK_STREAM, $protocol)
|| die "Can't create TCP/IP stream socket: $!";
connect(PRINTER, $sockaddr) || die "Can't contact $printer_host: $!";
while (<STDIN>) { print PRINTER; }
exit 0;
Nous pouvons maintenant utiliser cette procédure avec différents filtres. Supposons que nous ayons une imprimante Diablo 750-N connectée au réseau. Elle reçoit les données à imprimer sur le port 5100. Le nom de machine de l'imprimante est scrivener. Voici le filtre texte pour cette imprimante:
#!/bin/sh # # diablo-if-net - Filtre texte pour l'imprimante Diablo `scrivener' écoutant # le port 5100. Fichier /usr/local/libexec/diablo-if-net # exec /usr/libexec/lpr/lpf "$@" | /usr/local/libexec/netprint scrivener 5100
Cette section fournit des informations sur la restriction de l'utilisation de l'imprimante. Le système LPD vous permet de contrôler quels utilisateurs peuvent accéder à une imprimante, tant localement qu'à distance, s'il leur est autorisé d'imprimer en plusieurs exemplaires, quelles sont les tailles maximales de leurs travaux d'impression et des files d'impression.
Le système LPD facilite l'impression de plusieurs copies d'un même fichier par les utilisateurs. Ils peuvent imprimer leur travail avec lpr -#5 (par exemple) et obtenir cinq exemplaires de chaque fichier du travail d'impression. Le fait de savoir s'il s'agit là d'une bonne idée vous appartient.
Si vous estimez que les copies multiples provoquent charge et usure inutiles
pour vos imprimantes, vous pouvez désactiver l'option -# de lpr(1) en ajoutant le
paramètre sc au fichier /etc/printcap. Lorsque des utilisateurs soumettront un
travail d'impression avec l'option -#, ils obtiendront
cet affichage:
lpr: multiple copies are not allowed
Notez que si vous avez mis en œuvre l'accès à une imprimante distante (voir la section Imprimantes installées sur des machines distantes), il faut que le paramètre sc soit positionné sur les /etc/printcap distants également, sinon vos utilisateurs auront toujours la possibilité d'imprimer des copies multiples en passant par une autre machine.
Voici un exemple. C'est le /etc/printcap pour la machine rose. L'imprimante rattan est plutôt robuste, et autorisera donc les copies multiples, par contre l'imprimante laser bamboo est quant à elle plus délicate, nous interdiront donc les impressions multiples en ajoutant le paramètre sc:
#
# /etc/printcap pour la machine rose - restreint les impressions en plusieurs exemplaires sur bamboo
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:sc:\
:lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\
:if=/usr/local/libexec/psif:\
:df=/usr/local/libexec/psdf:
Maintenant, il nous faut également ajouter le paramètre sc dans le fichier /etc/printcap de orchid (et tant que nous y sommes, désactivons les copies multiples pour l'imprimante teak):
#
# /etc/printcap pour la machine orchid - pas d'impression en
# plusieurs exemplaires pour
# l'imprimante locale teak ou l'imprimante distante bamboo
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
:lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:sc:\
:if=/usr/local/libexec/ifhp:\
:vf=/usr/local/libexec/vfhp:\
:of=/usr/local/libexec/ofhp:
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:sc:
En recourant au paramètre sc, nous empêchons l'utilisation de lpr -#, mais cela n'empêche toujours pas les utilisateurs de lancer lpr(1) à plusieurs reprises, ou de soumettre le même fichier plusieurs fois en un seul travail, de cette façon:
% lpr forsale.sign forsale.sign forsale.sign forsale.sign forsale.sign
Il existe plusieurs moyens de prévenir ces abus (y compris les ignorer) que vous êtes libres d'essayer.
Vous pouvez contrôler qui a le droit d'imprimer sur quelles imprimantes en utilisant le mécanisme des groupes UNIX et le paramètre rg dans /etc/printcap. Placez simplement les utilisateurs à qui vous voulez donner l'accès à une imprimante dans un groupe, et précisez ce groupe avec le paramètre rg.
Les utilisateurs n'appartenant pas au groupe (root inclus) se verront gratifiés d'un “lpr: Not a member of the restricted group” s'ils essaient d'imprimer avec l'imprimante contrôlée.
De même que pour le paramètre sc (supprimer les exemplaires multiples), il vous faut activer rg sur les machines distantes qui eux aussi ont accès à vos imprimantes, si vous estimez que c'est approprié (voir la section Imprimantes installées sur des machines distantes).
Dans notre exemple, nous allons permettre l'accès à rattan à quiconque, mais seuls les membres du groupe artists pourront utiliser bamboo. Voici l'habituel /etc/printcap pour la machine rose:
#
# /etc/printcap pour la machine rose - restreint au groupe pour bamboo
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:\
:lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\
:if=/usr/local/libexec/psif:\
:df=/usr/local/libexec/psdf:
Ne nous préoccupons pas de l'autre fichier /etc/printcap (pour la machine orchid). Bien entendu, n'importe qui sur orchid peut imprimer avec bamboo. Selon le cas, nous pourrons autoriser que certains utilisateurs sur orchid, et leur donner accès à l'imprimante. Ou non.
Note : Il ne peut exister qu'un seul groupe de restriction par imprimante.
Si beaucoup de vos utilisateurs accèdent aux imprimantes, vous aurez sans doute besoin de fixer une limite supérieure à la taille des fichiers qu'ils peuvent soumettre à l'impression. Après tout, le système de fichiers hébergeant les répertoires de file d'impression ne peut offrir que l'espace libre dont il dispose, et vous devez également vous assurer que de la place existe pour les travaux d'impression des autres utilisateurs.
LPD vous permet de fixer la taille maximale en octets qu'un fichier d'un travail d'impression peut atteindre avec le paramètre mx. Les unités sont exprimées en blocs de BUFSIZ, valant 1024 octets. Si vous donnez la valeur 0 à ce paramètre, la taille ne sera pas du tout limitée; en revanche, si aucun paramètre mx n'est défini, alors une limite par défaut de 1000 blocs sera utilisée.
Note : La limite s'applique aux fichiers dans un travail d'impression, et non pas à la taille totale du travail d'impression.
LPD ne refusera pas un fichier dont la taille excède la limite que vous fixez pour une imprimante. Au lieu de cela, il placera les octets du fichier dans la file jusqu'à ce que la limite soit atteinte, puis imprimera. Les octets supplémentaires seront ignorés. S'il s'agit là d'un comportement approprié est un choix qui vous appartient.
Ajoutons des limites pour nos imprimantes d'exemple, rattan et bamboo. Puisque les fichiers PostScript des utilisateurs du groupe artists ont tendance à être volumineux, nous allons les limiter à cinq mégaoctets. Nous ne fixerons aucune limite pour l'imprimante texte:
#
# /etc/printcap pour la machine rose
#
#
# Pas de limite sur la taille des travaux:
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:mx#0:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:
#
# Limite de cinq mégaoctets:
#
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:mx#5000:\
:lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\
:if=/usr/local/libexec/psif:\
:df=/usr/local/libexec/psdf:
Là encore, les limites ne s'appliquent qu'aux utilisateurs locaux. Si vous avez mis en place un accès distant à vos imprimantes, les utilisateurs distants ne seront pas contraints par ces limites. Il vous faudra positionner le paramètre mx dans les fichiers /etc/printcap distants également. Lisez la section Imprimantes installées sur des machines distantes pour obtenir plus d'informations sur l'impression à distance.
Il existe une autre manière spécifique pour limiter la taille des travaux d'impression sur les imprimantes à distance; lisez la section Restreindre les impressions à distance.
Le gestionnaire d'impression LPD propose plusieurs moyens de restreindre les travaux d'impression soumis depuis des machines distants:
Vous pouvez contrôler de quelles machines distantes les requêtes seront acceptées par un LPD local avec les fichiers /etc/hosts.equiv et /etc/hosts.lpd. LPD vérifie qu'une requête entrante provient d'une machine listée dans l'un de ces deux fichiers. Si ce n'est pas le cas, LPD refuse la requête.
Le format de ces fichiers est simple: un nom de machine par ligne. Notez que /etc/hosts.equiv est également utilisé par le protocole ruserok(3), et qu'il a un impact sur des programmes comme rsh(1) et rcp(1), aussi soyez prudent.
Par exemple, voici le fichier /etc/hosts.lpd présent sur la machine rose:
orchid violet madrigal.fishbaum.de
Cela signifie que rose accepte les requêtes provenant des machines orchid, violet et madrigal.fishbaum.de. Si une quelconque autre machine tente d'accéder au LPD de rose, le travail d'impression sera refusé.
Vous pouvez contrôler combien d'espace doit demeurer libre sur le système de fichiers où se trouve un répertoire de file d'impression. Créez un fichier nommé minfree dans le répertoire de file d'impression pour l'imprimante locale. Placez dans ce fichier un nombre représentant combien de blocs disques (de 512 octets) d'espace libre il doit rester pour qu'un travail d'impression soit accepté.
Cela vous permet de vous assurer que des utilisateurs distants ne rempliront pas votre système de fichiers. Vous pouvez également vous en servir pour accorder une certaine priorité aux utilisateurs locaux: ils pourront placer des travaux d'impression dans la file bien après que l'espace libre soit tombé sous le seuil indiqué dans le fichier minfree.
Par exemple, ajoutons un fichier minfree pour l'imprimante bamboo. Nous examinons /etc/printcap pour trouver le répertoire de file d'impression pour cette imprimante; voici l'entrée concernant bamboo:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:mx#5000:\
:lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:mx#5000:\
:if=/usr/local/libexec/psif:\
:df=/usr/local/libexec/psdf:
Le répertoire de file d'impression est précisé par le paramètre sd. Nous placerons à trois méga-octets (soit 6144 blocs disque) la limite d'espace libre devant exister sur le système de fichiers pour que LPD accepte les travaux d'impression distants:
# echo 6144 > /var/spool/lpd/bamboo/minfree
Vous pouvez contrôler quels utilisateurs distants ont le droit d'imprimer sur les imprimantes locales en positionnant le paramètre rs dans /etc/printcap. Lorsque rs est présent dans l'entrée d'une imprimante connectée localement, LPD acceptera les travaux d'impressions de machines distantes si l'utilisateur soumettant le travail possède également un compte sous le même nom sur la machine locale. Sinon, LPD refusera le travail d'impression.
Ce paramètre se révèle particulièrement utile dans un environnement où (par exemple) existent plusieurs services qui partagent un réseau, et que des utilisateurs débordent les frontières de ces services. En leur donnant des comptes sur vos systèmes, vous leur permettez d'utiliser vos imprimantes depuis les systèmes de leur propre service. Si vous préférez les autoriser à n'utiliser que vos imprimantes et pas les autres ressources de l'ordinateur, alors vous pouvez leur attribuer des comptes “bloqués”, sans répertoire de connexion et avec un interpréteur de commandes inutilisable comme /usr/bin/false.
Donc vous voulez faire payer vos impressions. Et pourquoi pas? Le papier et l'encre coûtent de l'argent. Et puis, il y a les coûts de maintenance--les imprimantes sont constituées de pièces mobiles et ont tendance à tomber en panne. Vous avez étudié vos imprimantes, vos modes d'utilisation et factures de maintenance, et avez abouti à un coût par page (ou par pied, par mètre, ou par ce que vous voulez). Maintenant, comment commencer à comptabiliser les impressions, dans les faits?
Eh bien, la mauvaise nouvelle est que le gestionnaire d'impression LPD ne vous aide pas beaucoup dans ce domaine. La comptabilisation dépend fortement du type d'imprimante que vous employez, des formats que vous imprimez et de vos besoins pour ce qui est de faire payer l'utilisation de l'imprimante.
Pour mettre en œuvre la comptabilisation, il vous faut modifier le filtre texte de l'imprimante (pour faire payer les travaux d'impression de texte brut) et ses filtres de conversion (pour faire payer les autres formats de fichiers), pour compter les pages ou demander à l'imprimante combien elle en a imprimées. Vous ne pouvez pas vous en tirer en utilisant le filtre de sortie simple, puisqu'il ne peut pas gérer la comptabilisation. Voir la section Les filtres.
En général, il existe deux façons de procéder à la comptabilisation:
La comptabilisation périodique est la plus habituelle, probablement parce que la plus facile. Chaque fois que quelqu'un imprime un travail, le filtre enregistre l'utilisateur, la machine et le nombre de pages dans un fichier de comptabilisation. Tous les mois, semestres, années ou toute autre échéance que vous désirez, vous récupérez les fichiers de comptabilisation des diverses imprimantes, établissez les pages imprimées par les utilisateurs, et faites payer l'utilisation. Purgez ensuite tous les fichiers de comptabilisation, pour commencer à zéro la nouvelle période.
La comptabilisation à la volée est moins répandue, peut-être parce qu'elle s'avère plus difficile. Cette méthode laisse les filtres s'occuper de taxer les utilisateurs pour les impressions dès qu'ils utilisent les imprimantes. Tout comme les quotas disques, la comptabilisation est immédiate. Vous pouvez empêcher les utilisateurs d'imprimer quand leur compte est dans le rouge, et pourriez leur fournir un moyen de vérifier et ajuster leurs “quotas d'impression”. Cependant, cette méthode nécessite la mise en oeuvre d'une base de données afin de tracer les utilisateurs et leurs quotas.
Le gestionnaire d'impression LPD gère les deux méthodes facilement: puisque vous devez fournir les filtres (enfin, la plupart du temps), vous devez également fournir le code de comptabilisation. Mais il y a un bon côté: vous disposez d'une énorme flexibilité dans vos méthodes de comptabilisation. Par exemple, vous avez le choix entre les comptabilisations périodique et à la volée. Vous avez le choix des informations à tracer: noms d'utilisateurs, noms de machines, types des travaux d'impression, pages imprimées, surface de papier utilisée, durée d'impression du travail, etc. Et vous le faites en modifiant les filtres afin d'enregistrer ces informations.
Deux programmes sont livrés avec FreeBSD qui vous permettent de mettre en place une comptabilisation périodique simple immédiatement. Il s'agit du filtre texte lpf, détaillé dans la section lpf: un filtre texte, et de pac(8), un programme qui rassemble et fait le total des entrées contenues dans des fichiers de comptabilisation d'impressions.
Comme indiqué dans la section sur les filtres (Fonctionnement des filtres), LPD lance les filtres texte et de conversion avec le nom du fichier de comptabilisation à employer fourni en argument. Les filtres peuvent utiliser ce paramètre pour savoir où écrire un enregistrement de comptabilisation. Le nom de ce fichier provient du paramètre af dans /etc/printcap, et si le chemin donné n'est pas absolu, alors c'est un chemin d'accès relatif au répertoire de file d'impression.
LPD lance lpf avec les paramètres de largeur et hauteur de page (qui correspondent aux paramètres pw et pl). Le filtre lpf les utilise pour déterminer combien de papier sera consommé. Après avoir envoyé le fichier à l'imprimante, il enregistre ensuite une entrée dans le fichier de comptabilisation. Les entrées ressemblent à ceci:
2.00 rose:andy 3.00 rose:kelly 3.00 orchid:mary 5.00 orchid:mary 2.00 orchid:zhang
Vous devriez utiliser un fichier de comptabilisation séparé pour chaque imprimante, lpf ne disposant pas de mécanisme de verrouillage des fichiers, deux lpf pourraient corrompre leurs entrées respectives s'ils essayaient d'écrire dans le même fichier en même temps. Une manière aisée de s'assurer d'un fichier de comptabilisation séparé pour chaque imprimante est de recourir au paramètre af=acct dans /etc/printcap. Dès lors, un fichier de comptabilisation, nommé acct, sera placé dans le répertoire de file d'impression de chaque imprimante.
Lorsque vous serez prêts à faire payer les utilisateurs pour leurs impressions, lancez le programme pac(8). Placez-vous simplement dans le répertoire de file d'impression de l'imprimante pour laquelle vous voulez collecter les informations, et tapez pac. Vous obtiendrez un récapitulatif en dollars ressemblant à ceci:
Login pages/feet runs price orchid:kelly 5.00 1 $ 0.10 orchid:mary 31.00 3 $ 0.62 orchid:zhang 9.00 1 $ 0.18 rose:andy 2.00 1 $ 0.04 rose:kelly 177.00 104 $ 3.54 rose:mary 87.00 32 $ 1.74 rose:root 26.00 12 $ 0.52 total 337.00 154 $ 6.74
Voici les arguments attendus par pac(8):
-Pimprimante
Pour quelle imprimante effectuer un récapitulatif. Cette option ne fonctionne que si un chemin d'accès absolu est donné dans le paramètre af de /etc/printcap.
-cTrier selon le coût plutôt qu'alphabétiquement par nom d'utilisateur.
-mIgnorer le nom de la machine dans les fichiers de comptabilisation. Avec cette option, l'utilisateur smith sur la machine alpha est le même que l'utilisateur smith sur la machine gamma. Sans elle, ils représentent des utilisateurs distincts.
-pprixCalculer le coût en comptant un prix en dollars par page ou par pied au lieu du prix indiqué par le paramètre pc dans /etc/printcap, ou deux cents (la valeur par défaut). Vous pouvez préciser le prix en nombre à virgule flottante.
-rInverser l'ordre du tri.
-sCréer un fichier de rapport et tronquer le fichier de comptabilisation.
N'imprimer des statistiques que pour les utilisateurs dont les noms sont donnés.
Dans le récapitulatif produit par défaut par pac(8), vous pouvez lire le nombre de pages imprimées par chaque utilisateur depuis les différentes machines. Si, sur votre site, la machine n'a pas d'importance (parce que les utilisateurs peuvent utiliser n'importe quelle machine), lancez pac -m, afin de produire le récapitulatif ci-dessous:
Login pages/feet runs price andy 2.00 1 $ 0.04 kelly 182.00 105 $ 3.64 mary 118.00 35 $ 2.36 root 26.00 12 $ 0.52 zhang 9.00 1 $ 0.18 total 337.00 154 $ 6.74
Afin de calculer le montant dû en dollars, pac(8) utilise
le paramètre pc de /etc/printcap (200 par défaut, c'est à dire 2
cents par page). Précisez avec ce paramètre le prix par page ou par
pied, exprimé en centièmes de cents, que vous voulez imputer aux
impressions. Vous pouvez spécifier cette valeur lorsque vous lancez pac(8) avec l'option
-p. Cependant, avec cette option, les unités
sont exprimées en dollars, et non en centièmes de cents. Par
exemple,
# pac -p1.50
fait en sorte que chaque page coûte un dollar et cinquante cents. Vous pouvez vraiment faire des bénéfices en utilisant cette option.
Enfin, lancer pac -s enregistrera les informations du récapitulatif dans un fichier, dont le nom sera le même que le fichier de comptabilisation de l'imprimante mais avec le suffixe _sum. Il procède alors à la troncature du fichier de comptabilisation. Lorsque vous exécutez pac(8) à nouveau, il relit le fichier récapitulatif pour établir les totaux de départ, puis ajoute les informations du fichier de comptabilisation normal.
Afin de réaliser une comptabilisation précise et cela même à distance, vous devez pouvoir déterminer combien un travail d'impression consomme de papier. C'est le problème principal de la comptabilisation des impressions.
Pour du texte brut, ce problème n'est pas compliqué à résoudre: vous comptez combien un travail d'impression comporte de lignes et comparez avec le nombre de lignes par page que gère votre imprimante. N'oubliez pas de tenir compte des retours arrière dans le fichier, qui superposent les lignes, ou des longues lignes qui s'étendent sur une ou plusieurs lignes physiques supplémentaires.
Le filtre texte lpf (présenté à la section lpf: un filtre texte) prend ces éléments en considération lorsqu'il effectue la comptabilisation. Si vous écrivez un filtre texte qui doit effectuer une comptabilisation, vous pouvez vous inspirer du code source de lpf.
Mais comment gérer les autres formats?
Eh bien, pour la conversion DVI-vers-LaserJet ou DVI-vers-PostScript, vous pouvez faire analyser les messages de sortie de dvilj ou dvips par votre filtre et regarder combien de pages ont été converties. Vous devriez pouvoir procéder de manière identique avec d'autres formats de fichiers et programmes de conversion.
Mais ces méthodes connaissent un défaut: il se peut que l'imprimante n'imprime pas toutes ces pages. Par exemple, un bourrage peut se produire, l'imprimante peut arriver à cours d'encre, ou exploser -- et l'utilisateur serait tout de même débité.
Alors, que pouvez-vous faire?
Il n'existe qu'une seule méthode sûre pour procéder à une comptabilisation précise. Prenez une imprimante qui sache dire combien de papier elle utilise, et reliez-la par un câble série ou une connection réseau. Presque toutes les imprimantes PostScript gèrent cela. D'autres types et modèles également (les imprimantes laser réseau Imagen, par exemple). Modifiez les filtres pour ces imprimantes afin d'obtenir la consommation de pages après chaque travail d'impression et faites en sorte qu'elles enregistrent des informations de comptabilisation basées sur cette seule valeur. Nul besoin de compter les lignes ou d'une analyse de fichier susceptible d'être erronée.
Bien entendu, vous pouvez toujours être généreux et rendre toutes les impressions gratuites.
Version française de Marc Fonvieille
<blackend@FreeBSD.org>.
FreeBSD fournit une compatibilité binaire avec plusieurs autres systèmes d'exploitation du type UNIX, y compris Linux. A ce point, vous devez vous demander pourquoi exactement FreeBSD a besoin d'être capable d'exécuter des binaires Linux? La réponse à cette question est très simple. De nombreuses entreprises et de nombreux développeurs ne développent que pour Linux, puisque que c'est la dernière chose ``à la mode'' dans le monde de l'informatique. Cela ne laisse aux utilisateurs de FreeBSD que la possibilité de réclamer auprès des ces mêmes entreprises et développeurs des versions native pour FreeBSD de leurs applications. Le problème est, que la plupart de ces entreprises ne réalisent pas vraiment combien de personnes utiliseraient leur produit si il y aurait une version pour FreeBSD également, et la plupart continuent de développer uniquement pour Linux. Donc que doit faire un utilisateur de FreeBSD? C'est là que la compatibilité binaire avec Linux entre en scène.
En bref, la compatibilité permet aux utilisateurs de FreeBSD d'exécuter environ 90% des applications Linux sans aucune modification. Cela inclus des applications comme StarOffice, la version Linux de Netscape, Adobe Acrobat, RealPlayer, VMware™, Oracle, WordPerfect®, Doom, Quake, et plus. On rapporte également que dans certaines situations, les binaires Linux sont plus performants sous FreeBSD que sous Linux.
Il existe cependant certaines caractéristiques spécifiques à Linux qui ne sont pas supportées sous FreeBSD. Les binaires Linux ne fonctionneront pas sous FreeBSD s'ils utilisent massivement des appels i386 spécifiques, comme activation du mode virtuel 8086.
Après la lecture de ce chapitre, vous connaîtrez:
Comment activer la compatibilité binaire avec Linux sur votre système.
Comment installer des bibliothèques partagées Linux supplémentaires.
Comment installer des application Linux sur votre système FreeBSD.
Les détails de l'implémentation de la compatibilité Linux sous FreeBSD.
Avant de lire ce chapitre, vous devrez:
Savoir comment installer des logiciels tiers (Chapitre 4).
La compatibilité binaire avec Linux n'est pas activée par défaut. La manière la plus simple pour activer cette fonctionnalité est de charger le KLD linux (“Kernel LoaDable object”--objet chargeable par le noyau, ce que l'on nomme couramment un module). Vous pouvez charger ce module en tapant ce qui suit sous l'utilisateur root:
# kldload linux
Si vous désirez que la compatibilité Linux soit toujours activée, alors vous devrez ajouter la ligne suivante au fichier /etc/rc.conf:
linux_enable="YES"
La commande kldstat(8) peut être utilisée pour vérifier que le KLD est chargé:
% kldstat Id Refs Address Size Name 1 2 0xc0100000 16bdb8 kernel 7 1 0xc24db000 d000 linux.ko
Si pour quelques raisons vous ne voulez ou pouvez charger le KLD, alors vous pouvez lier statiquement la compatibilité binaire Linux dans votre noyau en ajoutant options COMPAT_LINUX à votre fichier de configuration du noyau. Puis installez votre noyau comme décrit dans la Chapitre 8.
Cela peut être fait de deux manières, soit en utilisant le logiciel porté linux_base, soit en les installant à la main.
C'est de loin la méthode la plus simple pour installer les bibliothèques. La procédure est juste identique à l'installation d'un autre logiciel porté à partir du catalogue des logiciels portés. Faites ce qui suit:
# cd /usr/ports/emulators/linux_base-fc4 # make install distclean
La compatibilité binaire Linux devrait maintenant fonctionner. Certains programmes pourront se plaindre de versions mineures incorrectes de certaines bibliothèques systèmes. Cela semble, en général, ne pas vraiment être un problème.
Note : Il peut y avoir de multiples versions disponibles du logiciel porté emulators/linux_base, correspondant à différentes distributions et versions de Linux. Vous devez installez la version la plus proche de ce que nécessite les applications Linux que vous désirez installer.
Si vous n'avez pas le catalogue des logiciels portés installé, vous pouvez à la place installer les bibliothèques à la main. Il vous faudra les bibliothèques partagées Linux dont à besoin le programme et l'éditeur de lien dynamiques. Vous devrez également créer un répertoire racine ``masquant'' (``shadow root''), /compat/linux, pour les bibliothèques Linux sur votre système FreeBSD. Toute bibliothèque partagée ouverte par les programmes Linux exécutés sous FreeBSD iront d'abord voir dans cette arborescence. Ainsi, si un programme Linux charge, par exemple, /lib/libc.so, FreeBSD essayera d'abord d'ouvrir /compat/linux/lib/libc.so, puis si cette bibliothèque n'existe pas, /lib/libc.so. Les bibliothèques partagées doivent donc être installées sous l'arborescence /compat/linux/lib plutôt que sous les chemins d'accès mentionnés par la commande Linux ld.so.
Généralement, vous ne devrez cherchez à savoir de quelles bibliothèques partagées dépendent les binaires Linux que les premières fois que vous installerez des programmes Linux sur votre système FreeBSD. Au bout d'un moment, vous disposerez d'un jeu suffisant de bibliothèques partagées Linux sur votre système pour être en mesure d'exécuter les binaires Linux nouvellement importés sans effort supplémentaire.
Que faire si vous avez installé le logiciel porté linux_base et que votre application se plaint toujours qu'il lui manque des bibliothèques partagées? Comment savoir quelles bibliothèques partagées ont besoin les binaires Linux, et où se les procurer? Il a habituellement deux possibilités (pour suivre les instructions ci-dessous, vous devrez être en session sous le compte super-utilisateur root).
Si vous avez accès à un système Linux, déterminez de quelles bibliothèques partagées l'application a besoin, et copiez-les sur votre système FreeBSD. Soit l'exemple suivant:
Supposons que vous veniez de télécharger le binaire Linux de Doom, et que vous l'avez installé sur un système Linux. Vous pouvez alors vérifier de quelles bibliothèques partagées il a besoin pour fonctionner avec la commande ldd linuxdoom:
% ldd linuxdoom libXt.so.3 (DLL Jump 3.1) => /usr/X11/lib/libXt.so.3.1.0 libX11.so.3 (DLL Jump 3.1) => /usr/X11/lib/libX11.so.3.1.0 libc.so.4 (DLL Jump 4.5pl26) => /lib/libc.so.4.6.29
Vous devrez récupérer tous les fichiers mentionnés dans la dernière colonne, et les installer sous /compat/linux, en utilisant les noms de la première colonne comme liens symboliques qui pointent dessus. Cela signifie que vous aurez éventuellement les fichiers suivants sur votre système FreeBSD:
/compat/linux/usr/X11/lib/libXt.so.3.1.0 /compat/linux/usr/X11/lib/libXt.so.3 -> libXt.so.3.1.0 /compat/linux/usr/X11/lib/libX11.so.3.1.0 /compat/linux/usr/X11/lib/libX11.so.3 -> libX11.so.3.1.0 /compat/linux/lib/libc.so.4.6.29 /compat/linux/lib/libc.so.4 -> libc.so.4.6.29
Note : Remarquez que si vous avez déjà une bibliothèque partagée de même numéro de version majeure que celle indiquée par la première colonne du résultat de la commande ldd, il est inutile de copier le fichier donné par la dernière colonne sur votre système, celui que vous avez déjà devrait suffire. Il est cependant recommandé de recopier malgré tout la bibliothèque partagée si c'est une version récente. Vous pouvez supprimer l'ancienne version, du moment que le lien symbolique pointe sur la nouvelle. Par exemple, si vous avez les bibliothèques suivantes sur votre système:
/compat/linux/lib/libc.so.4.6.27 /compat/linux/lib/libc.so.4 -> libc.so.4.6.27et que vous avez un nouveau binaire qui d'après le résultat de la commande ldd semble avoir besoin d'une version plus récente:
libc.so.4 (DLL Jump 4.5pl26) -> libc.so.4.6.29Si vous n'avez qu'une ou deux versions de retard sur le dernier indice, alors ne vous souciez pas d'installer la version /lib/libc.so.4.6.29 plus récente, parce que le programme devrait fonctionner sans problème avec une version légèrement antérieure. Vous pouvez néanmoins décider de remplacer libc.so, ce qui devrait vous donner quelque chose comme:
/compat/linux/lib/libc.so.4.6.29 /compat/linux/lib/libc.so.4 -> libc.so.4.6.29
Note : Le mécanisme de lien symbolique n'est nécessaire que pour les binaires Linux. L'éditeur de liens dynamiques de FreeBSD se charge lui-même de trouver les numéros de versions majeures adéquats et vous n'avez pas à vous en préoccuper.
Une étape supplémentaire est parfois nécessaire pour les binaires ELF: le ``marquage''. Si vous tentez d'exécuter un binaire ELF non marqué, vous obtiendrez un message d'erreur ressemblant à ce qui suit:
% ./mon-binaire-elf-linux ELF binary type not known Abort
Pour que le noyau FreeBSD puisse distinguer un binaire ELF FreeBSD d'un binaire Linux, vous devez employer l'utilitaire brandelf(1):
% brandelf -t Linux mon-binaire-elf-linux
Les outils GNU incorporent désormais automatiquement les marques nécessaires dans les binaires ELF, vous aurez donc de moins en moins besoin de passer par cette étape à l'avenir.
Si le DNS ne fonctionne pas, ou si vous avez les messages:
resolv+: "bind" is an invalid keyword resolv+: "hosts" is an invalid keyword
Vous devrez configurer un fichier /compat/linux/etc/host.conf contenant:
order hosts, bind multi on
Où l'ordre ci-dessus spécifie qu'il faut tout d'abord regarder dans le fichier /etc/hosts puis interroger le DNS. Quand le fichier /compat/linux/etc/host.conf n'existe pas, les applications Linux trouvent le fichier /etc/host.conf de FreeBSD et se plaignent de sa syntaxe FreeBSD incompatible. Supprimez bind si vous n'avez pas configuré de serveur de noms avec le fichier /etc/resolv.conf.
Ce document décrit l'installation de la version Linux de Mathematica 5.X sur un système FreeBSD.
La version Linux de Mathematica ou la version Mathematica for Students peut être commandée directement auprès de Wolfram à l'adresse http://www.wolfram.com/.
En premier lieu vous devez indiquer à FreeBSD que les binaires Linux de Mathematica utilisent l'ABI Linux. La méthode la plus simple pour y parvenir est le marquage par défaut des binaires ELF non marqués comme étant des binaires Linux, ce marquage se faisant avec la commande:
# sysctl kern.fallback_elf_brand=3
Avec cela FreeBSD supposera que les binaires ELF non marqués sont des binaires Linux, et donc vous devriez être en mesure d'exécuter le programme d'installation directement depuis le CDROM.
Copiez ensuite sur votre disque dur le fichier MathInstaller:
# mount /cdrom # cp /cdrom/Unix/Installers/Linux/MathInstaller /localdir/
et dans ce fichier, remplacez /bin/sh sur la première ligne par /compat/linux/bin/sh. Cela permet de garantir que l'installeur est exécuté par la version Linux de sh(1). Ensuite, remplacez toutes les occurrences de Linux) par FreeBSD) à l'aide d'un éditeur de texte ou la procédure proposée dans la section suivante. Cela indique à l'installeur Mathematica, qui fait appel à la commande uname -s pour déterminer le système d'exploitation, de traiter FreeBSD comme un système d'exploitation de type Linux. Lancer maintenant la commande MathInstaller procédera à l'installation de Mathematica.
Les procédures que Mathematica a créé lors de l'installation doivent être modifiées avant que vous ne puissiez les utiliser. Si vous avez choisi /usr/local/bin comme répertoires pour les exécutables Mathematica, vous trouverez alors dans ce répertoire des liens symboliques vers les fichiers nommés math, mathematica, Mathematica, et MathKernel. Dans chacun d'entre eux, remplacez Linux) par FreeBSD) avec un éditeur de texte ou la procédure suivante:
#!/bin/sh cd /usr/local/bin for i in math mathematica Mathematica MathKernel do sed 's/Linux)/FreeBSD)/g' $i > $i.tmp sed 's/\/bin\/sh/\/compat\/linux\/bin\/sh/g' $i.tmp > $i rm $i.tmp chmod a+x $i done
Quand vous lancez Mathematica pour la première fois, un mot de passe vous sera demandé. Si vous n'avez pas encore récupéré votre mot de passe auprès de Wolfram, lancez le programme mathinfo présent dans le répertoire d'installation afin d'obtenir l'“identifiant” de votre machine. Cet identifiant de machine est basé uniquement sur l'adresse MAC de votre première carte Ethernet, vous ne pouvez donc pas utiliser votre copie de Mathematica sur une machine différente.
Quand vous vous enregistrez auprès de Wolfram, par courrier électronique, téléphone, ou fax, vous leur communiquerez l'``identifiant'' de la machine et ils vous donneront en réponse le mot de passe correspondant qui a la forme de plusieurs groupes de nombres.
Mathematica utilise des polices de caractères spécifiques pour afficher des caractères qui ne sont pas présents dans l'ensemble standard de polices (caractère intégrale, somme, lettres grecques, etc.). Le protocole X a besoin que ces polices de caractères soient installées localement. Cela signifie que vous devrez copier sur votre machine locale ces polices à partir du CDROM ou d'une machine avec Mathematica installé. Ces polices sont normalement stockées dans /cdrom/Unix/Files/SystemFiles/Fonts sur le CDROM, ou dans /usr/local/mathematica/SystemFiles/Fonts sur votre disque dur. En fait les polices sont dans les sous-répertoires Type1 et X. Il existe différentes manières de les utiliser, comme décrit ci-dessous.
La première manière est de les copier dans un des répertoires de polices de caractères existant dans /usr/X11R6/lib/X11/fonts. Il faudra alors éditer le fichier fonts.dir, y ajouter les noms des polices, et changer le nombre de polices sur la première ligne. Alternativement, vous devriez pouvoir juste exécuter mkfontdir(1) dans le répertoire dans lequel vous avez copié les polices de caractères.
La deuxième manière est de copier les répertoires dans /usr/X11R6/lib/X11/fonts:
# cd /usr/X11R6/lib/X11/fonts # mkdir X # mkdir MathType1 # cd /cdrom/Unix/Files/SystemFiles/Fonts # cp X/* /usr/X11R6/lib/X11/fonts/X # cp Type1/* /usr/X11R6/lib/X11/fonts/MathType1 # cd /usr/X11R6/lib/X11/fonts/X # mkfontdir # cd ../MathType1 # mkfontdir
Maintenant ajoutez les nouveaux répertoires de polices à votre chemin de recherche des polices de caractères:
# xset fp+ /usr/X11R6/lib/X11/fonts/X # xset fp+ /usr/X11R6/lib/X11/fonts/MathType1 # xset fp rehash
Si vous utilisez le serveur Xorg, vous pouvez charger ces répertoires de polices automatiquement en les ajoutant à votre fichier xorg.conf.
Note : Sous les serveurs XFree86, le fichier de configuration se nomme XF86Config.
Si vous n'avez pas déjà de répertoire appelé /usr/X11R6/lib/X11/fonts/Type1, vous pouvez modifier le nom du répertoire MathType1 dans l'exemple ci-dessus par Type1.
Maple™ est un programme mathématique commercial similaire à Mathematica. Vous devez acquérir ce logiciel auprès de http://www.maplesoft.com/ et vous enregistrer pour obtenir un fichier de licence. Pour installer ce logiciel sous FreeBSD, veuillez suivre les étapes suivantes:
Exécutez la procédure INSTALL fournie avec le logiciel. Choisissez l'option ``RedHat'' quand le programme vous le demandera. Un répertoire d'installation typique devrait être: /usr/local/maple.
Si vous ne l'avez pas déjà fait, demandez une licence pour Maple auprès de Maple Waterloo Software (http://register.maplesoft.com/) et copiez-la sous /usr/local/maple/license/license.dat.
Installez le gestionnaire de licence FLEXlm en exécutant la procédure d'installation INSTALL_LIC fournie avec Maple. Précisez le nom de la machine au serveur de licence.
Modifiez le fichier /usr/local/maple/bin/maple.system.type avec le correctif suivant:
----- snip ------------------
*** maple.system.type.orig Sun Jul 8 16:35:33 2001
--- maple.system.type Sun Jul 8 16:35:51 2001
***************
*** 72,77 ****
--- 72,78 ----
# the IBM RS/6000 AIX case
MAPLE_BIN="bin.IBM_RISC_UNIX"
;;
+ "FreeBSD"|\
"Linux")
# the Linux/x86 case
# We have two Linux implementations, one for Red Hat and
----- snip end of patch -----
Remarquez qu'après "FreeBSD"|\ aucun espace ne doit être ajouté.
Ce correctif demande à Maple de reconnaître ``FreeBSD'' comme étant un type de système Linux. La procédure bin/maple fait appel à la procédure bin/maple.system.type qui à son tour appelle uname -a pour déterminer le nom du système d'exploitation. En fonction de ce nom, la procédure déterminera quels binaires utiliser.
Lancez le serveur de licence.
La procédure suivante, installée sous le nom /usr/local/etc/rc.d/lmgrd.sh est une façon pratique de lancer lmgrd:
----- snip ------------
#! /bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin
PATH=${PATH}:/usr/local/maple/bin:/usr/local/maple/FLEXlm/UNIX/LINUX
export PATH
LICENSE_FILE=/usr/local/maple/license/license.dat
LOG=/var/log/lmgrd.log
case "$1" in
start)
lmgrd -c ${LICENSE_FILE} 2>> ${LOG} 1>&2
echo -n " lmgrd"
;;
stop)
lmgrd -c ${LICENSE_FILE} -x lmdown 2>> ${LOG} 1>&2
;;
*)
echo "Usage: `basename $0` {start|stop}" 1>&2
exit 64
;;
esac
exit 0
----- snip ------------
Testez Maple:
% cd /usr/local/maple/bin % ./xmaple
Cela devrait fonctionner. Assurez-vous d'écrire à Maplesoft pour leur indiquer que vous désirez une version native pour FreeBSD!
Le gestionnaire de licence FLEXlm peut être difficile à utiliser. De la documentation supplémentaire à ce sujet est disponible à l'adresse http://www.globetrotter.com/.
lmgrd est connu pour être très capricieux au sujet du fichier de licence et de planter si il y a un quelconque problème. Un fichier de licence correct devrait ressembler à ceci:
# =======================================================
# License File for UNIX Installations ("Pointer File")
# =======================================================
SERVER chillig ANY
#USE_SERVER
VENDOR maplelmg
FEATURE Maple maplelmg 2000.0831 permanent 1 XXXXXXXXXXXX \
PLATFORMS=i86_r ISSUER="Waterloo Maple Inc." \
ISSUED=11-may-2000 NOTICE=" Technische Universitat Wien" \
SN=XXXXXXXXX
Note : Le numéro de série et la clé ont été ici remplacés par des X. chillig est le nom de la machine.
L'édition du fichier de licence est possible tant que vous ne touchez pas à la ligne ``FEATURE'' (qui est protégée par la clé de la licence).
Ce document décrit l'installation de la version Linux de MATLAB® version 6.5 sur un système FreeBSD. Le logiciel fonctionne plutôt bien, à l'exception de la JVM™, machine virtuelle Java (voir la Section 10.5.3).
La version Linux de MATLAB peut être commandée directement auprès de The MathWorks à l'adresse http://www.mathworks.com. Assurez-vous d'avoir le fichier de licence ou les instructions pour le créer. Pendant que vous y êtes, faites-leur savoir que vous désireriez une version FreeBSD native de leur logiciel.
Pour installer MATLAB, faites ce qui suit:
Insérez le CD d'installation et montez-le. Ouvrez une session super-utilisateur (root), comme recommandé par la procédure d'installation. Pour lancer la procédure d'installation tapez:
# /compat/linux/bin/sh /cdrom/install
Astuce : Le programme d'installation est graphique. Si vous obtenez une erreur disant que le programme est incapable d'ouvrir une instance d'affichage, tapez setenv HOME ~utilisateur, où utilisateur est l'utilisateur à partir duquel vous avez fait un su(1).
Quand on vous demande le répertoire racine pour MATLAB, tapez: /compat/linux/usr/local/matlab.
Astuce : Pour faciliter la suite de l'installation et réduire les frappes inutiles, tapez à l'invite de l'interpréteur de commandes ceci: set MATLAB=/compat/linux/usr/local/matlab
Editez le fichier de licence comme précisé lors de l'obtention de la licence MATLAB.
Astuce : Vous pouvez préparer d'avance ce fichier en utilisant votre éditeur favori, et en le copiant sous le nom $MATLAB/license.dat avant que le programme d'installation ne vous demande de l'éditer.
Terminez le processus d'installation.
A ce point, votre installation de MATLAB est terminée. Les étapes suivantes rajoutent le nécessaire pour l'intégrer à votre système FreeBSD.
Créez des liens symboliques pour les procédures du gestionnaire de licence:
# ln -s $MATLAB/etc/lmboot /usr/local/etc/lmboot_TMW # ln -s $MATLAB/etc/lmdown /usr/local/etc/lmdown_TMW
Créez un fichier de démarrage nommé /usr/local/etc/rc.d/flexlm.sh. L'exemple ci-dessous est une version modifiée du fichier $MATLAB/etc/rc.lm.glnx86 fourni. Les modifications concernent l'emplacement des fichiers, et le lancement du gestionnaire de licence sous l'émulation Linux.
#!/bin/sh
case "$1" in
start)
if [ -f /usr/local/etc/lmboot_TMW ]; then
/compat/linux/bin/sh /usr/local/etc/lmboot_TMW -u utilisateur && echo 'MATLAB_lmgrd'
fi
;;
stop)
if [ -f /usr/local/etc/lmdown_TMW ]; then
/compat/linux/bin/sh /usr/local/etc/lmdown_TMW > /dev/null 2>&1
fi
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac
exit 0
Important : Le fichier doit être rendu exécutable:
# chmod +x /usr/local/etc/rc.d/flexlm.shVous devez remplacer utilisateur dans la procédure par un nom d'utilisateur valide sur votre système (et non pas root).
Lancez le gestionnaire de licence avec la commande:
# /usr/local/etc/rc.d/flexlm.sh start
Modifiez le lien vers le ``Java Runtime Environment'' (JRE) pour un lien fonctionnant correctement sous FreeBSD:
# cd $MATLAB/sys/java/jre/glnx86/ # unlink jre; ln -s ./jre1.1.8 ./jre
Placez la procédure de démarrage suivante dans le répertoire /usr/local/bin/matlab:
#!/bin/sh /compat/linux/bin/sh /compat/linux/usr/local/matlab/bin/matlab "$@"
Puis tapez la commande chmod +x /usr/local/bin/matlab.
Astuce : En fonction de la version emulators/linux_base utilisée, vous pouvez rencontrer des problèmes lors de l'utilisation de cette procédure. Pour éviter cela, éditez le fichier /compat/linux/usr/local/matlab/bin/matlab, et modifiez la ligne qui dit:
if [ `expr "$lscmd" : '.*->.*'` -ne 0 ]; then(dans la version 13.0.1, c'est la ligne 410) en:
if test -L $newbase; then
Ce qui suit est nécessaire pour corriger le fait que MATLAB ne peut être quitter correctement.
Créez un fichier $MATLAB/toolbox/local/finish.m, et y mettre la ligne suivante:
! $MATLAB/bin/finish.sh
Note : $MATLAB doit être écrit tel quel.
Astuce : Dans le même répertoire, vous trouverez les fichiers finishsav.m et finishdlg.m, qui vous permettront de sauvegarder l'environnement avant de quitter. Si vous utilisez l'un d'eux, insérez la ligne ci-dessus après la commande save.
Créez un fichier $MATLAB/bin/finish.sh, qui contiendra ce qui suit:
#!/usr/compat/linux/bin/sh (sleep 5; killall -1 matlab_helper) & exit 0
Rendez le fichier exécutable:
# chmod +x $MATLAB/bin/finish.sh
A ce point, vous êtes prêt à taper la commande matlab et à commencer à l'utiliser.
Ce document décrit le processus d'installation d'Oracle 8.0.5 et d'Oracle 8.0.5.1 Enterprise Edition pour Linux sur une machine FreeBSD.
Assurez-vous d'avoir installé les deux logiciels emulators/linux_base et devel/linux_devtools du catalogue des logiciels portés. Si vous rencontrez des problèmes avec ces logiciels portés, il se peut que vous ayez à utiliser les versions pré-compilées ou des versions plus anciennes disponibles dans le catalogue des logiciels portés.
Si vous désirez installer l'agent intelligent, vous devrez également installer le ``package'' Red Hat Tcl: tcl-8.0.3-20.i386.rpm. La commande générale pour installer des RPMs avec le logiciel RPM (archivers/rpm) est:
# rpm -i --ignoreos --root /compat/linux --dbpath /var/lib/rpm package
L'installation du package ne devrait pas générer d'erreur.
Avant de pouvoir installer Oracle, vous devez configurer un environnement propre. Ce document ne décrit que ce qu'il y a faire spécifiquement pour utiliser Oracle pour Linux sous FreeBSD, et non pas ce qui a été décrit dans le guide d'installation d'Oracle.
Comme décrit dans le guide d'installation d'Oracle, vous devez configurer une taille maximale pour la mémoire partagée. Sous FreeBSD n'utilisez pas l'option SHMMAX. SHMMAX est simplement calculée à partir de SHMMAXPGS et PGSIZE. Définissez donc l'option SHMMAXPGS. Toutes les autres options peuvent être configurées comme décrit dans le guide. Par exemple:
options SHMMAXPGS=10000 options SHMMNI=100 options SHMSEG=10 options SEMMNS=200 options SEMMNI=70 options SEMMSL=61
Configurez ces options en fonction de l'utilisation prévue d'Oracle.
Assurez-vous également de la présence des options suivantes dans votre fichier de configuration du noyau:
options SYSVSHM #SysV shared memory options SYSVSEM #SysV semaphores options SYSVMSG #SysV interprocess communication
Créez un compte oracle de la même manière que vous créerez un autre compte utilisateur. Le compte oracle n'a de spécial que le fait que vous devez lui donner un interpréteur de commandes Linux. Ajoutez /compat/linux/bin/bash au fichier /etc/shells et fixez l'interpréteur de commande du compte oracle à /compat/linux/bin/bash.
En plus des variables d'environnement normales d'Oracle comme ORACLE_HOME et ORACLE_SID vous devez fixer les variables d'environnement suivantes:
| Variable | Valeur |
|---|---|
| LD_LIBRARY_PATH | $ORACLE_HOME/lib |
| CLASSPATH | $ORACLE_HOME/jdbc/lib/classes111.zip |
| PATH | /compat/linux/bin /compat/linux/sbin /compat/linux/usr/bin /compat/linux/usr/sbin /bin /sbin /usr/bin /usr/sbin /usr/local/bin $ORACLE_HOME/bin |
Il est conseillé de définir toutes les variables d'environnement dans le fichier .profile. Un exemple complet est:
ORACLE_BASE=/oracle; export ORACLE_BASE ORACLE_HOME=/oracle; export ORACLE_HOME LD_LIBRARY_PATH=$ORACLE_HOME/lib export LD_LIBRARY_PATH ORACLE_SID=ORCL; export ORACLE_SID ORACLE_TERM=386x; export ORACLE_TERM CLASSPATH=$ORACLE_HOME/jdbc/lib/classes111.zip export CLASSPATH PATH=/compat/linux/bin:/compat/linux/sbin:/compat/linux/usr/bin PATH=$PATH:/compat/linux/usr/sbin:/bin:/sbin:/usr/bin:/usr/sbin PATH=$PATH:/usr/local/bin:$ORACLE_HOME/bin export PATH
En raison d'une particularité de l'émulateur Linux, vous devez créer un répertoire appelé .oracle dans /var/tmp avant de lancer le programme d'installation. Faites en sorte que l'utilisateur oracle en soit le propriétaire. Vous devriez être en mesure d'installer Oracle sans problème. Si vous rencontrez cependant des problèmes, contrôlez tout d'abord votre distribution d'Oracle et/ou configuration! Après avoir installé Oracle, appliquez les correctifs décrits dans les deux sous-sections suivantes.
Un problème fréquent est que l'interface au protocole TCP n'est pas correctement installée. Avec comme conséquence l'impossibilité d'écouter le trafic TCP. Les opérations suivantes aident à résoudre ce problème:
# cd $ORACLE_HOME/network/lib # make -f ins_network.mk ntcontab.o # cd $ORACLE_HOME/lib # ar r libnetwork.a ntcontab.o # cd $ORACLE_HOME/network/lib # make -f ins_network.mk install
N'oubliez pas de lancer à nouveau root.sh!
Quand on installe Oracle, certaines opérations, qui doivent être effectuées en tant que root, sont enregistrées dans une procédure d'interpréteur de commandes appelée root.sh. Cette procédure se trouve dans le répertoire orainst. Appliquez le correctif suivant au fichier root.sh, pour faire en sorte qu'il utilise le chemin correct pour chown, ou exécute une procédure sous un interpréteur de commandes Linux natif.
*** orainst/root.sh.orig Tue Oct 6 21:57:33 1998 --- orainst/root.sh Mon Dec 28 15:58:53 1998 *************** *** 31,37 **** # This is the default value for CHOWN # It will redefined later in this script for those ports # which have it conditionally defined in ss_install.h ! CHOWN=/bin/chown # # Define variables to be used in this script --- 31,37 ---- # This is the default value for CHOWN # It will redefined later in this script for those ports # which have it conditionally defined in ss_install.h ! CHOWN=/usr/sbin/chown # # Define variables to be used in this script
Quand vous n'installez pas Oracle à partir d'un CD, vous pouvez modifier les sources de root.sh. La procédure se nomme rthd.sh et se trouve dans le répertoire orainst dans l'arborescence des sources.
La procédure genclntsh est utilisée pour créer une simple bibliothèque partagée cliente. Elle est utilisée lors de la construction des démos. Appliquez le correctif suivant pour commenter la définition de la variable d'environnement PATH:
*** bin/genclntsh.orig Wed Sep 30 07:37:19 1998 --- bin/genclntsh Tue Dec 22 15:36:49 1998 *************** *** 32,38 **** # # Explicit path to ensure that we're using the correct commands #PATH=/usr/bin:/usr/ccs/bin export PATH ! PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin export PATH # # each product MUST provide a $PRODUCT/admin/shrept.lst --- 32,38 ---- # # Explicit path to ensure that we're using the correct commands #PATH=/usr/bin:/usr/ccs/bin export PATH ! #PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin export PATH # # each product MUST provide a $PRODUCT/admin/shrept.lst
Après avoir suivi les instructions précédentes, vous devriez être en mesure d'exécuter Oracle comme si le programme tournait sous Linux.
Les installations de systèmes SAP sous FreeBSD ne seront pas supportées par l'équipe de support de SAP -- ils n'assurent que le support pour des plateformes ceritifiées.
Ce document décrit une façon d'installer un système SAP R/3 avec la base de données Oracle pour Linux sur une machine FreeBSD, comprenant l'installation de FreeBSD et d'Oracle. Deux configurations différentes seront décrites:
SAP R/3 4.6B (IDES) avec Oracle 8.0.5 sous FreeBSD 4.3-STABLE
SAP R/3 4.6C avec Oracle 8.1.7 sous FreeBSD 4.5-STABLE
Même si ce document tente de décrire toutes les étapes importantes de façon détaillée, il n'est pas destiné à remplacer les guides d'installation d'Oracle et SAP R/3.
Veuillez consulter la documentation fournie avec la version Linux de SAP R/3 et les questions spécifiques à Oracle, ainsi que les ressources d'Oracle et de SAP OSS.
Les CD-ROMs suivants ont été utilisés pour les installations de SAP:
| Nom | Numéro | Description |
|---|---|---|
| KERNEL | 51009113 | Noyau SAP Oracle / Installation / AIX, Linux, Solaris |
| RDBMS | 51007558 | Oracle / RDBMS 8.0.5.X / Linux |
| EXPORT1 | 51010208 | IDES / DB-Export / Disque 1 sur 6 |
| EXPORT2 | 51010209 | IDES / DB-Export / Disque 2 sur 6 |
| EXPORT3 | 51010210 | IDES / DB-Export / Disque 3 sur 6 |
| EXPORT4 | 51010211 | IDES / DB-Export / Disque 4 sur 6 |
| EXPORT5 | 51010212 | IDES / DB-Export / Disque 5 sur 6 |
| EXPORT6 | 51010213 | IDES / DB-Export / Disque 6 sur 6 |
De plus, nous avons utilisé le CD d'Oracle 8 Serveur (version 8.0.5 de pré-production pour Linux, noyau 2.0.33) qui n'est pas vraiment nécessaire, et FreeBSD 4.3-STABLE (une version plus vieille de quelques jours que la 4.3-RELEASE).
| Nom | Numéro | Description |
|---|---|---|
| KERNEL | 51014004 | Noyau SAP Oracle / Noyau SAP Version 4.6D / DEC, Linux |
| RDBMS | 51012930 | Oracle 8.1.7/ RDBMS / Linux |
| EXPORT1 | 51013953 | Version 4.6C SR2 / Export / Disque 1 sur 4 |
| EXPORT1 | 51013953 | Version 4.6C SR2 / Export / Disque 2 sur 4 |
| EXPORT1 | 51013953 | Version 4.6C SR2 / Export / Disque 3 sur 4 |
| EXPORT1 | 51013953 | Version 4.6C SR2 / Export / Disque 4 sur 4 |
| LANG1 | 51013954 | Version 4.6C SR2 / Langue / DE, EN, FR / Disque 1 sur 3 |
En fonction des langues que vous désirez installer, des CDs propres à ces langues pourront être nécessaires. Ici nous utilisons juste l'allemand (DE) et l'anglais (EN), donc seul le premier CD propre aux langues sera nécessaire. Notez que le numéro des quatre CDs EXPORT est identique (c'est différent du numérotage des CDs 4.6B IDES). Au moment de l'écriture de ces lignes, cette installation utilise FreeBSD 4.5-STABLE (du 20 mars 2002).
Les notes suivantes devraient être lues avant d'installer SAP R/3 et ont prouvé leur utilité durant l'installation:
| Numéro | Titre |
|---|---|
| 0171356 | SAP sous Linux: Remarques importantes |
| 0201147 | INST: 4.6C R/3 Inst. sur UNIX - Oracle |
| 0373203 | Mise à jour / Migration Oracle 8.0.5 --> 8.0.6/8.1.6 LINUX |
| 0072984 | Digital UNIX 4.0B pour Oracle |
| 0130581 | Fin de l'étape DIPGNTAB de R3SETUP |
| 0144978 | Votre système n'a pas été installé correctement |
| 0162266 | Questions et conseils pour R3SETUP sous Windows NT / W2K |
| Numéro | Titre |
|---|---|
| 0015023 | Initialisation de la table TCPDB (RSXP0004) (EBCDIC) |
| 0045619 | R/3 avec plusieurs langues ou languages or typefaces |
| 0171356 | SAP sous Linux: Remarques importantes |
| 0195603 | RedHat 6.1 version entreprise: problèmes connus |
| 0212876 | Le nouvel outil d'archivage SAPCAR |
| 0300900 | Linux: matériel DELL |
| 0377187 | RedHat 6.2: remarques importantes |
| 0387074 | INST: R/3 4.6C SR2 Installation sous UNIX |
| 0387077 | INST: R/3 4.6C SR2 Inst. sous UNIX - Oracle |
| 0387078 | SAP sous UNIX: Dépendances 4.6C SR2 |
L'équipement suivant est suffisant pour l'installation d'un système SAP R/3. Bien sûr pour une utilisation en production, un choix plus pointu du matériel est nécessaire:
| Composant | 4.6B | 4.6C |
|---|---|---|
| Processeur | 2 x 800MHz Pentium III | 2 x 800MHz Pentium III |
| Mémoire | 1Go ECC | 2Go ECC |
| Espace disque | 50-60Go (IDES) | 50-60Go (IDES) |
Pour une utilisation en production, des processeurs Xeon avec un cache important, un accès disque rapide (SCSI, contrôleur RAID matériel) et de la mémoire ECC. L'espace disque nécessaire est important en raison du système IDES pré-configuré, qui créé une base de données de 27 Go durant l'installation. Cet espace est également suffisant pour démarrer des systèmes destinés à la production.
Le matériel suivant fut utilisé: une carte mère bi-processeurs avec 2 processeurs Pentium III 800 MHz, une carte SCSI Adaptec® 29160 Ultra160 (pour utiliser un lecteur de bande 40/80 Go DLT et un lecteur de CDROM), une carte Mylex® AcceleRAID™ (2 canaux, firmware 6.00-1-00 avec 32 Mo de RAM). Au contrôleur RAID Mylex sont reliés deux disques durs de 17 Go (miroirs) et quatre disques de 36 Go (RAID niveau 5).
Pour cette installation un Dell™ PowerEdge™ 2500 a été utilisé: une carte mère bi-processeurs avec deux processeurs Pentium III 1000 MHz (256 Ko de cache), 2 Go PC133 ECC SDRAM, un contrôleur PERC/3 DC PCI RAID avec 128 Mo, et un lecteur DVD-ROM EIDE. Au contrôleur RAID sont reliés deux disques durs 18 Go (miroirs) et quatre disques de 36 Go (RAID niveau 5).
Tout d'abord vous devez installer FreeBSD. Il existe de nombreuses manière d'installer FreeBSD, pour plus d'informations consultez la Section 2.13.
Pour rester simple, la même organisation des disques a été utilisée pour les installations de SAP R/3 46B et SAP R/3 46C SR2. Seuls les noms de périphériques ont changé, comme les installations ont été effectuées sur du matériel différent (/dev/da et /dev/amr respectivement, aussi si l'on utilise un contrôleur AMI MegaRAID, on verra /dev/amr0s1a à la place de /dev/da0s1a):
| Système de fichiers | Taille (blocs de 1k) | Taille (Go) | Monté sous |
|---|---|---|---|
| /dev/da0s1a | 1.016.303 | 1 | / |
| /dev/da0s1b | 6 | swap | |
| /dev/da0s1e | 2.032.623 | 2 | /var |
| /dev/da0s1f | 8.205.339 | 8 | /usr |
| /dev/da1s1e | 45.734.361 | 45 | /compat/linux/oracle |
| /dev/da1s1f | 2.032.623 | 2 | /compat/linux/sapmnt |
| /dev/da1s1g | 2.032.623 | 2 | /compat/linux/usr/sap |
Configurez et initialisez les deux disques logiques à l'avance avec les logiciels Mylex ou PERC/3 RAID. Ces logiciels peuvent être lancés lors de la phase de démarrage du BIOS.
Notez que l'organisation du disque diffère légèrement des recommandations de SAP, comme SAP suggère de monter séparément les sous-répertoires d'Oracle (et d'autres) -- nous avons décidé de simplement créer de véritables sous-répertoires directement.
Téléchargez les sources -STABLE les plus récentes. Recompilez l'intégralité du système et votre noyau personnalisé après avoir configuré votre fichier de configuration du noyau. Là, vous devriez également ajouter les paramètres du noyau requis par SAP R/3 et Oracle.
Tout d'abord le logiciel porté linux_base doit être installé (en tant que super-utilisateur):
# cd /usr/ports/emulators/linux_base # make install distclean
L'environnement de développement Linux est nécessaire, si vous désirez installer Oracle sous FreeBSD comme cela est décrit dans la Section 10.6:
# cd /usr/ports/devel/linux_devtools # make install distclean
L'environnement de développement Linux a été installé en vue de l'installation de SAP R/3 46B IDES. Ce n'est pas nécessaire si Oracle DB n'est pas liée sur un système FreeBSD. C'est le cas si vous utilisez l'archive tar Oracle en provenance d'un système Linux.
Pour lancer le programme R3SETUP, le support PAM est nécessaire. Lors de la première installation de SAP sous FreeBSD 4.3-STABLE, nous avons tenté d'installer PAM avec tous les ``packages'' nécessaires, et nous avons finalement forcé l'installation du ``package'' PAM, ce qui a fonctionné. Pour SAP R/3 4.6C SR2, nous avons directement forcé l'installation du RPM PAM, ce qui fonctionne également, il semble donc que les RPMs de dépendance ne sont pas nécessaires:
# rpm -i --ignoreos --nodeps --root /compat/linux --dbpath /var/lib/rpm \ pam-0.68-7.i386.rpm
Pour utiliser l'agent intelligent d'Oracle 8.0.5, nous devons également installer la version RedHat de Tcl tcl-8.0.5-30.i386.rpm (sinon l'édition de liens durant l'installation d'Oracle ne fonctionnera pas). Il existe d'autres problèmes à ce niveau, mais ils concernent directement la version Linux d'Oracle, et ne sont donc pas spécifiquent à FreeBSD.
Cela peut être une bonne idée d'ajouter linprocfs au fichier /etc/fstab, pour plus d'informations consultez la page de manuel linprocfs(5). Un autre paramètre à positionner est kern.fallback_elf_brand=3, ce qui doit être fait dans le fichier /etc/sysctl.conf.
Pour une simple installation, il est suffisant de créer les systèmes de fichiers suivants:
| point de montage | taille en Go |
|---|---|
| /compat/linux/oracle | 45 Go |
| /compat/linux/sapmnt | 2 Go |
| /compat/linux/usr/sap | 2 Go |
Il est également nécessaire de créer certains liens. Sinon l'intalleur SAP se plaindra, lors du contrôle des liens créés:
# ln -s /compat/linux/oracle /oracle # ln -s /compat/linux/sapmnt /sapmnt # ln -s /compat/linux/usr/sap /usr/sap
Un message d'erreur possible durant l'installation (ici avec un système PRD l'installation de SAP R/3 4.6C SR2):
INFO 2002-03-19 16:45:36 R3LINKS_IND_IND SyLinkCreate:200
Checking existence of symbolic link /usr/sap/PRD/SYS/exe/dbg to
/sapmnt/PRD/exe. Creating if it does not exist...
WARNING 2002-03-19 16:45:36 R3LINKS_IND_IND SyLinkCreate:400
Link /usr/sap/PRD/SYS/exe/dbg exists but it points to file
/compat/linux/sapmnt/PRD/exe instead of /sapmnt/PRD/exe. The
program cannot go on as long as this link exists at this
location. Move the link to another location.
ERROR 2002-03-19 16:45:36 R3LINKS_IND_IND Ins_SetupLinks:0
can not setup link '/usr/sap/PRD/SYS/exe/dbg' with content
'/sapmnt/PRD/exe'
SAP R/3 a besoin de deux utilisateurs et de trois groupes. Les noms d'utilisateurs dépendent du système d'ID de SAP (SID) qui est composé de trois lettres. Certains de ces SIDs sont réservés par SAP (par exemple SAP et NIX. Pour une liste complète consultez la documentation de SAP). Pour l'installation IDES, nous avons utilisé IDS, pour l'installation 4.6C SR2 PRD, comme ce système était destiné à la production. Nous avons cependant les groupes suivants (les identifiants de groupe peuvent être différents, ce sont seulement les valeurs que nous avons utilisés dans notre installation):
| groupe ID | nom du groupe | description |
|---|---|---|
| 100 | dba | Administrateur de la base de données |
| 101 | sapsys | Système SAP |
| 102 | oper | Opérateur de la base de données |
Pour une installation d'Oracle par défaut, seul le groupe dba est utilisé. Tout comme le groupe oper, certains utilisent également le groupe dba (Voir les documentations d'Oracle et de SAP pour plus d'information).
Nous avons également besoin des utilisateurs suivants:
| ID utilisateur | nom d'utilisateur | nom générique | groupe | groupes supplémentaires | description |
|---|---|---|---|---|---|
| 1000 | idsadm/prdadm | sidadm | sapsys | oper | Administrateur SAP |
| 1002 | oraids/oraprd | orasid | dba | oper | Administrateur de la base de données Oracle |
L'ajout des utilisateurs avec la commande adduser(8) nécessite les entrées suivantes (notez l'interpréteur de commandes et le répertoire utilisateur) pour l'``Administrateur SAP'':
Name: sidadm Password: ****** Fullname: SAP Administrator SID Uid: 1000 Gid: 101 (sapsys) Class: Groups: sapsys dba HOME: /home/sidadm Shell: bash (/compat/linux/bin/bash)
et pour l'``Administrateur de la base de données Oracle'':
Name: orasid Password: ****** Fullname: Oracle Administrator SID Uid: 1002 Gid: 100 (dba) Class: Groups: dba HOME: /oracle/sid Shell: bash (/compat/linux/bin/bash)
Ceci devrait également inclure le groupe oper au cas où vous utiliseriez les deux groupes dba et oper.
Ces répertoires sont généralement créés sous forme de systèmes de fichiers séparés. Cela dépend entièrement de vous besoins. Nous avons choisi de créer de simple répertoires, comme ils sont placés sur le même système RAID 5:
Nous positionnerons tout d'abord les propriétaires et les droits de certains répertoires (en tant que root):
# chmod 775 /oracle # chmod 777 /sapmnt # chown root:dba /oracle # chown sidadm:sapsys /compat/linux/usr/sap # chmod 775 /compat/linux/usr/sap
Ensuite nous crérons les répertoires en tant qu'utilisateur orasid. Ce seront tous les répertoires du type /oracle/SID:
# su - orasid # cd /oracle/SID # mkdir mirrlogA mirrlogB origlogA origlogB # mkdir sapdata1 sapdata2 sapdata3 sapdata4 sapdata5 sapdata6 # mkdir saparch sapreorg # exit
Pour l'installation d'Oracle 8.1.7 des répertoires supplémentaires sont nécessaires:
# su - orasid # cd /oracle # mkdir 805_32 # mkdir client stage # mkdir client/80x_32 # mkdir stage/817_32 # cd /oracle/SID # mkdir 817_32
Note : Le répertoire client/80x_32 est créé tel quel. Ne remplacez pas le x par quelque chose d'autre.
La dernière étape consiste à créer les répertoires en tant qu'utilisateur sidadm:
# su - sidadm # cd /usr/sap # mkdir SID # mkdir trans # exit
SAP R/3 a besoin de certaines entrées dans le fichier /etc/services, qui ne seront pas créées durant son installation sous FreeBSD. Veuillez ajouter les entrées suivantes (vous avez besoin au moins des entrées correspondant au numéro d'instance -- dans notre cas, 00. Cela ne posera pas de problème d'ajouter toutes les entrées de 00 à 99 pour dp, gw, sp et ms). Si vous allez utiliser SAProuter ou vous devez accéder au SAP OSS, vous avez également besoin de l'entrée 99, comme le port 3299 est généralement utilisé par le processus SAProuter sur le système cible:
sapdp00 3200/tcp # SAP Dispatcher. 3200 + Instance-Number sapgw00 3300/tcp # SAP Gateway. 3300 + Instance-Number sapsp00 3400/tcp # 3400 + Instance-Number sapms00 3500/tcp # 3500 + Instance-Number sapmsSID 3600/tcp # SAP Message Server. 3600 + Instance-Number sapgw00s 4800/tcp # SAP Secure Gateway 4800 + Instance-Number
SAP nécessite au moins deux ``locales'' qui ne font pas partie de l'installation RedHat par défaut. SAP propose les RPMs nécessaires en téléchargement à partir de leur serveur FTP (qui est uniquement accessible si vous êtes un client avec un accès OSS). Consultez la note 0171356 pour la liste des RPMs dont vous avez besoin.
Il est également possible de créer just les appropriés (par exemple à partir de de_DE et en_US), mais nous ne recommandons pas cela pour un système destiné à la production (bien que cela a fonctionné sans problème avec le système IDES). Les ``locales'' suivantes sont nécessaires:
de_DE.ISO-8859-1 en_US.ISO-8859-1
Créez les liens comme suit:
# cd /compat/linux/usr/share/locale # ln -s de_DE de_DE.ISO-8859-1 # ln -s en_US en_US.ISO-8859-1
S'ils n'existent pas, des problèmes apparaîtrons lors de l'installation. Si ces problèmes sont intentionnellement ignorés (en fixant la valeur de la variable STATUS des étapes pour lesquelles les problèmes sont apparus à la valeur OK dans le fichier CENTRDB.R3S), il sera impossible d'ouvrir une session sur le système SAP sans effort supplémentaire.
Les systèmes SAP R/3 demandent beaucoup de ressources. Nous avons donc ajouté les paramètres suivants au fichier de configuration du noyau:
# Set these for memory pigs (SAP and Oracle): options MAXDSIZ="(1024*1024*1024)" options DFLDSIZ="(1024*1024*1024)" # System V options needed. options SYSVSHM #SYSV-style shared memory options SHMMAXPGS=262144 #max amount of shared mem. pages #options SHMMAXPGS=393216 #use this for the 46C inst.parameters options SHMMNI=256 #max number of shared memory ident if. options SHMSEG=100 #max shared mem.segs per process options SYSVMSG #SYSV-style message queues options MSGSEG=32767 #max num. of mes.segments in system options MSGSSZ=32 #size of msg-seg. MUST be power of 2 options MSGMNB=65535 #max char. per message queue options MSGTQL=2046 #max amount of msgs in system options SYSVSEM #SYSV-style semaphores options SEMMNU=256 #number of semaphore UNDO structures options SEMMNS=1024 #number of semaphores in system options SEMMNI=520 #number of semaphore identifiers options SEMUME=100 #number of UNDO keys
Les valeurs minimales sont précisées dans la documentation en provenance de SAP. Comme il n'y a pas d'éléments concernant Linux, consultez la section sur HP-UX (32bits) pour plus d'information. Comme le système utilisé pour l'installation de la version 4.6C SR2 dispose de plus de mémoire principale, les segments de mémoire partagée (``shared segments'') peuvent être plus larges pour SAP et Oracle, cependant choisissez un nombre plus important de page de mémoire partagée.
Note : Avec l'installation par défaut de FreeBSD sur l'architecture i386, laissez MAXDSIZ et DFLDSIZ à une valeur de 1 Go maximum. Sinon, des erreurs étranges comme “ORA-27102: out of memory” et “Linux Error: 12: Cannot allocate memory” risquent d'apparaître.
Il y a de nombreux CDROMs à monter et démonter lors de l'installation. Si vous disposez de suffisamment de lecteurs de CDROMs, vous pouvez tout simplement les monter tous. Nous avons décidé de copier le contenu des CDROMs dans les répertoires correspondant:
/oracle/SID/sapreorg/nom-du-cd
où nom-du-cd est un nom parmi KERNEL, RDBMS, EXPORT1, EXPORT2, EXPORT3, EXPORT4, EXPORT5 et EXPORT6 pour
l'installation de la version 4.6B/IDES, et KERNEL,
RDBMS, DISK1, DISK2, DISK3, DISK4 et LANG pour l'installation
de la version 4.6C SR2. Tous les noms de fichiers sur les CDs montés
devraient être en majuscules, sinon utilisez l'option -g pour le montage. Utilisez donc les commandes
suivantes:
# mount_cd9660 -g /dev/cd0a /mnt # cp -R /mnt/* /oracle/SID/sapreorg/nom-du-cd # umount /mnt
Tout d'abord, vous devez préparer un répertoire install:
# cd /oracle/SID/sapreorg # mkdir install # cd install
Ensuite la procédure d'installation est lancée, qui copiera tous fichiers correspondant dans le répertoire install:
# /oracle/SID/sapreorg/KERNEL/UNIX/INSTTOOL.SH
L'installation IDES (4.6B) est fournie avec un système SAP R/3 de démonstration complètement configuré, il y a donc six CDs EXPORT au lieu de juste trois CDs EXPORT. A ce point la configuration par défaut d'installation CENTRDB.R3S est destiné à l'installation d'une instance centrale standard (R/3 et base de données), et non pas l'instance centrale standard IDES, on doit donc copier le fichier CENTRDB.R3S correspondant du répertoire EXPORT1, sinon R3SETUP ne demandera que trois CDs EXPORT.
La nouvelle version SAP 4.6C SR2 est fournie avec quatre CDs EXPORT. Le fichier de paramètres qui contrôle les étapes de l'installation est le fichier CENTRAL.R3S. Contrairement aux versions précédentes, il n'y a pas de modèle de configuration d'installation séparé pour une instance centrale avec ou sans base de données. SAP utilise un modèle de configuration séparé pour l'installation de base de données. Pour relancer l'installation postérieurement, il suffit de la relancer avec le fichier d'origine.
Pendant et après l'installation, SAP a besoin que la commande hostname renvoie uniquement le nom de la machine et non pas le nom complet de la machine. Fixez donc le nom de la machine en fonction, ou créez un alias avec alias hostname='hostname -s' pour les utilisateurs orasid et sidadm (et pour le super-utilisateur root au moins durant les étapes de l'installation effectuées en tant que root). Il est également possible d'ajuster les fichiers .profile et .login des deux utilisateurs qui sont installés lors de l'installation de SAP.
Assurez-vous que la variable LD_LIBRARY_PATH est correctement positionnée:
# export LD_LIBRARY_PATH=/oracle/IDS/lib:/sapmnt/IDS/exe:/oracle/805_32/lib
Lancez R3SETUP en tant que root à partir du répertoire d'installation:
# cd /oracle/IDS/sapreorg/install # ./R3SETUP -f CENTRDB.R3S
La procédure pose ensuite un certain nombre de questions (les valeurs par défaut sont entre crochets, suivies par les entrées clavier):
| Question | Défaut | Entrée(s) clavier |
|---|---|---|
| Enter SAP System ID | [C11] | IDSEntrée |
| Enter SAP Instance Number | [00] | Entrée |
| Enter SAPMOUNT Directory | [/sapmnt] | Entrée |
| Enter name of SAP central host | [troubadix.domain.de] | Entrée |
| Enter name of SAP db host | [troubadix] | Entrée |
| Select character set | [1] (WE8DEC) | Entrée |
| Enter Oracle server version (1) Oracle 8.0.5, (2) Oracle 8.0.6, (3) Oracle 8.1.5, (4) Oracle 8.1.6 | 1Entrée | |
| Extract Oracle Client archive | [1] (Yes, extract) | Entrée |
| Enter path to KERNEL CD | [/sapcd] | /oracle/IDS/sapreorg/KERNEL |
| Enter path to RDBMS CD | [/sapcd] | /oracle/IDS/sapreorg/RDBMS |
| Enter path to EXPORT1 CD | [/sapcd] | /oracle/IDS/sapreorg/EXPORT1 |
| Directory to copy EXPORT1 CD | [/oracle/IDS/sapreorg/CD4_DIR] | Entrée |
| Enter path to EXPORT2 CD | [/sapcd] | /oracle/IDS/sapreorg/EXPORT2 |
| Directory to copy EXPORT2 CD | [/oracle/IDS/sapreorg/CD5_DIR] | Entrée |
| Enter path to EXPORT3 CD | [/sapcd] | /oracle/IDS/sapreorg/EXPORT3 |
| Directory to copy EXPORT3 CD | [/oracle/IDS/sapreorg/CD6_DIR] | Entrée |
| Enter path to EXPORT4 CD | [/sapcd] | /oracle/IDS/sapreorg/EXPORT4 |
| Directory to copy EXPORT4 CD | [/oracle/IDS/sapreorg/CD7_DIR] | Entrée |
| Enter path to EXPORT5 CD | [/sapcd] | /oracle/IDS/sapreorg/EXPORT5 |
| Directory to copy EXPORT5 CD | [/oracle/IDS/sapreorg/CD8_DIR] | Entrée |
| Enter path to EXPORT6 CD | [/sapcd] | /oracle/IDS/sapreorg/EXPORT6 |
| Directory to copy EXPORT6 CD | [/oracle/IDS/sapreorg/CD9_DIR] | Entrée |
| Enter amount of RAM for SAP + DB | 850Entrée (en mégaoctets) | |
| Service Entry Message Server | [3600] | Entrée |
| Enter Group-ID of sapsys | [101] | Entrée |
| Enter Group-ID of oper | [102] | Entrée |
| Enter Group-ID of dba | [100] | Entrée |
| Enter User-ID of sidadm | [1000] | Entrée |
| Enter User-ID of orasid | [1002] | Entrée |
| Number of parallel procs | [2] | Entrée |
Si vous n'avez pas copié les CDs en différent endroits, alors l'installeur SAP ne peut trouver le CD nécessaire (identifié par le fichier LABEL.ASC sur le CD) et vous demandera alors d'insérer, de monter le CD et de confirmer ou d'entrer le chemin du point de montage.
Le fichier CENTRDB.R3S peut ne pas être exempt de problème. Dans notre cas, il demanda à nouveau le CD EXPORT4 mais indiqua la clé correcte (6_LOCATION, puis 7_LOCATION, etc.), on peut donc juste continuer à saisir les bonnes valeurs.
En dehors des problèmes mentionnés plus bas, tout devrait être assez direct jusqu'au moment où la base de données Oracle doit être installée.
Assurez-vous que la variable LD_LIBRARY_PATH est correctement positionnée. La valeur est différente de l'installation 4.6B avec Oracle 8.0.5:
# export LD_LIBRARY_PATH=/sapmnt/PRD/exe:/oracle/PRD/817_32/lib
Lancez R3SETUP en tant que root à partir du répertoire d'installation:
# cd /oracle/PRD/sapreorg/install # ./R3SETUP -f CENTRAL.R3S
La procédure pose ensuite un certain nombre de questions (les valeurs par défaut sont entre crochets, suivies par les entrées clavier):
| Question | Défaut | Entrée(s) clavier |
|---|---|---|
| Enter SAP System ID | [C11] | PRDEntrée |
| Enter SAP Instance Number | [00] | Entrée |
| Enter SAPMOUNT Directory | [/sapmnt] | Entrée |
| Enter name of SAP central host | [majestix] | Entrée |
| Enter Database System ID | [PRD] | PRDEntrée |
| Enter name of SAP db host | [majestix] | Entrée |
| Select character set | [1] (WE8DEC) | Entrée |
| Enter Oracle server version (2) Oracle 8.1.7 | 2Entrée | |
| Extract Oracle Client archive | [1] (Yes, extract) | Entrée |
| Enter path to KERNEL CD | [/sapcd] | /oracle/PRD/sapreorg/KERNEL |
| Enter amount of RAM for SAP + DB | 2044 | 1800Entrée (en mégaoctets) |
| Service Entry Message Server | [3600] | Entrée |
| Enter Group-ID of sapsys | [100] | Entrée |
| Enter Group-ID of oper | [101] | Entrée |
| Enter Group-ID of dba | [102] | Entrée |
| Enter User-ID of oraprd | [1002] | Entrée |
| Enter User-ID of prdadm | [1000] | Entrée |
| LDAP support | 3Entrée (pas de support) | |
| Installation step completed | [1] (continue) | Entrée |
| Choose installation service | [1] (DB inst,file) | Entrée |
Jusqu'ici, la création d'utilisateurs donne une erreur durant l'installation lors des phases OSUSERDBSID_IND_ORA (pour la création de l'utilisateur orasid) et OSUSERSIDADM_IND_ORA (création de l'utilisateur sidadm).
En dehors des problèmes mentionnés plus bas, tout devrait être assez direct jusqu'au moment où la base de données Oracle doit être installée.
Consultez les notes SAP et les Readmes d'Oracle concernant Linux et la base de données Oracle pour de possibles problèmes. La plupart, si ce n'est pas tous, de ces problèmes proviennent de bibliothèques incompatibles.
Pour plus d'informations au sujet de l'installation d'Oracle, référez-vous au chapitre sur l'installation d'Oracle.
Si Oracle 8.0.5 doit être utilisée, des bibliothèques supplémentaires sont nécessaires pour une édition de liens couronnée de succès, comme Oracle 8.0.5 est liée avec une ancienne bibliothèque glibc (RedHat 6.0), cependant RedHat 6.1 utilise déjà une nouvelle version de la bibliothèque glibc. Vous devez donc installer les ``packages'' suivants pour s'assurer que l'édition de liens fonctionnera:
compat-libs-5.2-2.i386.rpm
compat-glibc-5.2-2.0.7.2.i386.rpm
compat-egcs-5.2-1.0.3a.1.i386.rpm
compat-egcs-c++-5.2-1.0.3a.1.i386.rpm
compat-binutils-5.2-2.9.1.0.23.1.i386.rpm
Consultez les notes SAP et les Readmes d'Oracle pour plus d'informations. On pourra utiliser les binaires d'origine (au moment de l'installation, nous n'avons pas eu le temps de contrôler cela), ou utiliser directement les binaires fraichement liés d'un système RedHat.
Pour la compilation de l'agent intelligent, la version RedHat de Tcl doit être installée. Si vous ne pouvez vous procurer tcl-8.0.3-20.i386.rpm, un fichier plus récent comme tcl-8.0.5-30.i386.rpm pour RedHat 6.1 fera l'affaire.
En dehors de ce problème de liens, l'installation est relativement directe:
# su - oraids # export TERM=xterm # export ORACLE_TERM=xterm # export ORACLE_HOME=/oracle/IDS # cd $ORACLE_HOME/orainst_sap # ./orainst
Confirmez tous les écrans en appuyant sur Entrée jusqu'à l'installation complète du logiciel, à l'exception de celui qui permet de déselectionner la ``visionneuse de texte Oracle'' (Oracle On-Line Text Viewer), comme cette dernière n'est pas disponible pour Linux. Ensuite Oracle veut faire l'édition de liens avec i386-glibc20-linux-gcc à la place des gcc, egcs ou i386-redhat-linux-gcc disponibles.
En raison d'un manque de temps, nous avons décidé d'utiliser les binaires d'une version Oracle 8.0.5 PreProduction, après que la première tentative d'obtenir à partir du CD RDBMS une version fonctionnant eut échoué, et que nous avons trouvé qu'accéder aux bons RPMs était alors un véritable cauchemar.
Cette installation est simple. Montez le CD, lancez l'installeur. Il vous demandera l'emplacement du répertoire utilisateur Oracle, et y copiera tous les binaires. Nous n'avions, cependant, pas effacé les restes de nos précédentes tentatives d'installation RDBMS.
Après cela, la base de données Oracle put être installée sans encombres.
Prennez l'archive tar que vous avez produite à partir du répertoire d'installation sur un système Linux, et désarchivez-la dans le répertoire /oracle/SID/817_32/.
Tout d'abord vérifiez le paramétrage des environnements des utilisateurs idsamd (sidadm) et oraids (orasid). Ils devraient avoir, tous les deux, des fichiers .profile, .login et .cshrc qui utilisent la directement la commande hostname. Si le nom de machine du système est un nom complet d'hôte, vous devez modifier hostname pour hostname -s dans ces trois fichiers.
Ensuite, R3SETUP peut être soit relancé ou poursuivi (tout dépend si le programme a été quitté ou non). R3SETUP créé ensuite les tables pour les données et charge ces données (pour 46B IDES, à partir des disques EXPORT1 à EXPORT6, pour 46C à partir des disques DISK1 à DISK4) avec R3load dans la base de données.
Quand le chargement de la base de données est achevé (cela peut prendre plusieurs heures), des mots de passe sont demandés. Pour les installations de tests, on peut utiliser les mots de passe par défauts connus (utilisez-en des différents si la sécurité est importante):
| Question | Entrée(s) clavier |
|---|---|
| Enter Password for sapr3 | sapEntrée |
| Confirum Password for sapr3 | sapEntrée |
| Enter Password for sys | change_on_installEntrée |
| Confirm Password for sys | change_on_installEntrée |
| Enter Password for system | managerEntrée |
| Confirm Password for system | managerEntrée |
A ce point, nous avons eut quelques problèmes avec dipgntab durant l'installation de la version 4.6B.
Démarrer le programme d'écoute (``listener'') d'Oracle sous l'utilisateur orasid comme suit:
% umask 0; lsnrctl start
Sinon vous risquez d'obtenir l'erreur ORA-12546 comme les ``sockets'' n'auront pas les bonnes permissions. Consultez la note SAP 072984.
Si vous projetez d'importer des données utilisant des langues non latin-1 dans le système SAP, vous devez mettre à jour les tables de support des langues internationales (``Multi National Language Support'' -- MNLS). Ceci est décrit dans les notes SAP OSS 15023 et 45619. Sinon, vous pouvez ignorer cette question lors de l'installation de SAP.
Note : Si vous n'avez pas besoin des tables MNLS, il est toujours nécessaire de contrôler la table TCPDB et l'initialiser si cela n'a pas déjà été fait. Consultez les notes 0015023 et 0045619 pour plus d'information.
Vous devez demander votre clé SAP R/3. Cette clé est indispensable étant donné que la licence temporaire qui a été installée lors de l'installation n'est valide que pendant quatre semaines. Tout d'abord récupérez la clé matérielle. Ouvrez une session sous l'utilisateur idsadm et lancez la commande saplicense:
# /sapmnt/IDS/exe/saplicense -get
Appeler saplicense sans paramètres affiche la liste des options disponibles. Après la réception de la clé, elle peut être installée en utilisant:
# /sapmnt/IDS/exe/saplicense -install
Vous devez ensuite entrer les valeurs suivantes:
SAP SYSTEM ID = SID, 3 chars CUSTOMER KEY = hardware key, 11 chars INSTALLATION NO = installation, 10 digits EXPIRATION DATE = yyyymmdd, usually "99991231" LICENSE KEY = license key, 24 chars
Créez un utilisateur sous le client 000 (certaines tâches doivent être effectuées sous le client 000, mais avec un utilisateur différent de sap* et ddic). Comme nom d'utilisateur, nous choisissons généralement wartung (ou service en français). Les profiles nécessaires sont sap_new et sap_all. Pour plus de sécurité les mots de passe des utilisateurs par défaut à l'intérieur de tous les clients devraient être modifiés (cela inclut les utilisateurs sap* et ddic).
Dans le client 000, avec un utilisateur autre que ddic et sap*, faire, au moins, ce qui suit:
| Tâche | Transaction |
|---|---|
| Configurez le système de transport, par exemple entité autonome de domaine de transport (Stand-Alone Transport Domain Entity) | STMS |
| Créez / Editez le profil système | RZ10 |
| Maintenez les modes d'opération et les instances | RZ04 |
Cela et toutes les autres étapes de post-installation sont intégralement décrites dans les guides d'installation SAP.
Le fichier /oracle/IDS/dbs/initIDS.sap contient le profil de sauvegarde SAP. Ici la taille de la bande à utiliser, le type de compression et ainsi de suite doivent être définis. Pour garantir un fonctionnement avec les commandes sapdba/brbackup, nous avons modifié les valeurs suivantes:
compress = hardware archive_function = copy_delete_save cpio_flags = "-ov --format=newc --block-size=128 --quiet" cpio_in_flags = "-iuv --block-size=128 --quiet" tape_size = 38000M tape_address = /dev/nsa0 tape_address_rew = /dev/sa0
Explications:
compress: la bande que nous utilisons est une HP
DLT1 qui fournie une compression matérielle.
archive_function: définie le comportement
par défaut en ce qui concerne l'archivage des fichiers journaux d'Oracle: les nouveaux journaux
sont sauvegardés sur la bande, ceux déjà
sauvegardés le sont à nouveau et sont ensuite effacés. Cela
évite de nombreux problèmes si vous devez rétablir la
base de données, et qu'une des bandes de sauvegarde est
endommagée.
cpio_flags: l'indicateur par défaut est
-B qui fixe la taille d'un bloc à 5120 octets.
Pour les bande DLT, HP recommande une taille de bloc d'au moins 32Ko, aussi nous
avons utilisé --block-size=128 pour 64Ko.
L'option --format=newc est nécessaire car nous
avons un nombre d'inodes supérieur à 65535. La dernière
option, --quiet, est nécessaire sinon brbackup se plaint dès que cpio donne le nombre de blocs sauvés.
cpio_in_flags: indicateurs nécessaires pour
charger les données à partir de bandes. Le format est reconnu
automatiquement.
tape_size: cette variable donne la capacité
brute de la bande. Pour des raisons de sécurité (nous utilisons une
compression matérielle), la valeur est légèrement
inférieure à la valeur réelle.
tape_address: le périphérique non
rembobinable devant être utilisé avec cpio.
tape_address_rew: le périphérique
rembobinable à utiliser avec cpio.
Les paramètres SAP suivants devraient être optimisés après l'installation (exemples pour IDES 46B, 1 Go de mémoire):
| Nom | Valeur |
|---|---|
| ztta/roll_extension | 250000000 |
| abap/heap_area_dia | 300000000 |
| abap/heap_area_nondia | 400000000 |
| em/initial_size_MB | 256 |
| em/blocksize_kB | 1024 |
| ipc/shm_psize_40 | 70000000 |
Note SAP 0013026:
Note SAP 0157246:
Note : Avec les paramètres donnés ci-dessus, sur un système avec 1Go de mémoire, on pourra avoir une utilisation de la mémoire similaire à:
Mem: 547M Active, 305M Inact, 109M Wired, 40M Cache, 112M Buf, 3492K Free
R3SETUP s'arrête s'il rencontre une erreur. Si
vous avez examiné les fichiers journaux correspondants et corrigé
l'erreur, vous devez relancer R3SETUP à nouveau,
habituellement en sélectionnant REPEAT
comme option de la dernière étape pour laquelle R3SETUP avait rencontré un problème.
Pour relancer R3SETUP, exécutez-le avec le fichier R3S correspondant:
# ./R3SETUP -f CENTRDB.R3S
pour la version 4.6B, ou avec
# ./R3SETUP -f CENTRAL.R3S
pour la version 4.6C, peu importe si l'erreur est apparue avec CENTRAL.R3S ou DATABASE.R3S.
Note : A certains points, R3SETUP suppose que la base de données et le processus SAP sont en fonctionnement (comme s'il avait déjà complété ces étapes). Au cas où les erreurs se produiraient et que par exemple la base de données ne peut être lancée, vous devez lancer la base de données et SAP à la main après avoir corrigé les erreurs et avant d'exécuter à nouveau R3SETUP.
N'oubliez pas également de démarrer le programme d'écoute d'Oracle à nouveau (en tant que orasid avec umask 0; lsnrctl start) s'il a également été stoppé (par exemple en raison d'un redémarrage du système).
Si R3SETUP se plaint à ce stade, éditez le fichier modèle utilisé par R3SETUP à ce moment (CENTRDB.R3S (4.6B) ou CENTRAL.R3S ou DATABASE.R3S (4.6C)). Localisez la ligne [OSUSERSIDADM_IND_ORA] ou cherchez l'unique entrée STATUS=ERROR et éditez les valeurs suivantes:
HOME=/home/sidadm (was empty) STATUS=OK (had status ERROR)
Vous pouvez ensuite relancer R3SETUP.
Il est possible que R3SETUP se plaigne également à ce stade. L'erreur ici est similaire à celle durant la phase OSUSERSIDADM_IND_ORA. Editez juste le fichier modèle utilisé par R3SETUP à ce moment (CENTRDB.R3S (4.6B) ou CENTRAL.R3S ou DATABASE.R3S (4.6C)). Localisez la ligne [OSUSERDBSID_IND_ORA] ou cherchez l'unique entrée STATUS=ERROR et éditez la valeur suivante dans la section:
STATUS=OK
Puis relancez R3SETUP.
Vous n'avez pas désélectionné la visionneuse de texte en ligne d'Oracle avant de débuter l'installation. Elle est sélectionnée par défaut même si cette option n'est actuellement pas disponible pour Linux. Désélectionnez cet élément dans le menu d'installation d'Oracle et relancez l'installation.
Si cette erreur apparaît, la ``locale'' correcte n'est pas présente. La note SAP 0171356 liste les RPMs nécessaires (e.g. saplocales-1.0-3, saposcheck-1.0-1 pour RedHat 6.1). Dans le cas où vous avez ignoré toutes les erreurs en rapport et modifié la valeur du STATUS correspondant de la valeur ERROR vers la valeur OK (dans CENTRDB.R3S) à chaque fois que R3SETUP s'est plaint et que vous avez relancé R3SETUP, le système SAP ne sera pas correctement configuré et vous ne serez pas en mesure de vous connecter au système avec SAPgui, même si le système peut être lancé. Tenter de se connecter avec l'ancien SAPgui Linux donna les messages suivants:
Sat May 5 14:23:14 2001 *** ERROR => no valid userarea given [trgmsgo. 0401] Sat May 5 14:23:22 2001 *** ERROR => ERROR NR 24 occured [trgmsgi. 0410] *** ERROR => Error when generating text environment. [trgmsgi. 0435] *** ERROR => function failed [trgmsgi. 0447] *** ERROR => no socket operation allowed [trxio.c 3363] Speicherzugriffsfehler
Ce comportement est dû au fait que SAP R/3 est incapable d'assigner correctement une ``locale'' et n'est lui-même pas correctement configuré (entrées manquantes dans certaines tables de la base de données). Pour être en mesure de se connecter à SAP, ajoutez les entrées suivantes au fichier DEFAULT.PFL (voir la note 0043288):
abap/set_etct_env_at_new_mode = 0 install/collate/active = 0 rscp/TCP0B = TCP0B
Redémarrer le système SAP. Vous pouvez maintenant vous connecter au système, même si les paramétrages spécifiques à certaines langues peuvent ne pas fonctionner comme attendu. Après la correction des paramétrages de langue (et après avoir fourni les ``locales'' correctes), ces entrées peuvent être supprimées du fichier DEFAULT.PFL et le système SAP peut être relancé.
Cette erreur s'est produite uniquement avec Oracle 8.1.7 sous FreeBSD. La raison était que la base de données Oracle ne pouvait pas s'initialiser correctement et plantait, laissant des sémaphores et de la mémoire partagée sur le système. La tentative suivante de démarrer la base de données retourna alors l'erreur ORA-00001.
Retrouvez-les avec la commande ipcs -a et détruisez-les avec ipcrm.
Cette erreur s'est produite avec Oracle 8.1.7. Cette erreur est rapportée si la base de données est démarrée avec la procédure startsap habituelle (par exemple startsap_majestix_00) en tant qu'utilisateur prdadm.
Une solution possible est de démarrer la base de données sous l'utilisateur oraprd avec la commande svrmgrl:
% svrmgrl SVRMGR> connect internal; SVRMGR> startup; SVRMGR> exit
Démarrez le programme d'écoute (``listener'') d'Oracle sous l'utilisateur oraids avec les commandes suivantes:
# umask 0; lsnrctl start
Sinon vous pourrez obtenir l'erreur ORA-12546 étant donné que les ``sockets'' n'auront pas les bonnes permissions. Consultez la note SAP 0072984.
Cette erreur s'est produite quand nous avons essayé des valeurs pour MAXDSIZ et DFLDSIZ supérieures à 1 Go (1024x1024x1024). De plus, nous avons eu l'erreur “Linux Error 12: Cannot allocate memory”.
En général, vous devez consulter la note SAP 0130581 (``R3SETUP step DIPGNTAB terminates''). Lors de l'installation d'IDES, pour certaines raisons le processus d'installation n'a pas utilisé le nom correct pour le système SAP ``IDS'', mais la chaîne de caractère "" à la place. Cela conduit à des problèmes mineurs d'accès aux répertoires, comme les chemins sont générés dynamiquement en utilisant l'identifiant système SID (dans ce cas IDS). Aussi au lieu d'accéder par:
/usr/sap/IDS/SYS/... /usr/sap/IDS/DVMGS00
les chemins suivants ont été utilisé:
/usr/sap//SYS/... /usr/sap/D00
Afin de poursuivre l'installation, nous avons créé un lien et un répertoire supplémentaire:
# pwd /compat/linux/usr/sap # ls -l total 4 drwxr-xr-x 3 idsadm sapsys 512 May 5 11:20 D00 drwxr-x--x 5 idsadm sapsys 512 May 5 11:35 IDS lrwxr-xr-x 1 root sapsys 7 May 5 11:35 SYS -> IDS/SYS drwxrwxr-x 2 idsadm sapsys 512 May 5 13:00 tmp drwxrwxr-x 11 idsadm sapsys 512 May 4 14:20 trans
Nous avons également trouvé des notes SAP (0029227 et 0008401) décrivant ce comportement. Nous n'avons pas rencontré un seul de ces problèmes lors de l'installation de SAP 4.6C.
Lors de l'installation de SAP 4.6C, cette erreur est juste une conséquence d'une autre erreur survenant plus tôt dans l'installation. Dans ce cas, vous devez consulter les fichiers journaux correspondant et corriger le véritable problème.
Si après avoir cherché dans les fichiers journaux cette erreur est confirmée (consultez les notes SAP), vous pouvez modifier la valeur du STATUS de l'étape posant problème de la valeur ERROR à la valeur OK. Après l'installation, vous devez exécuter le report RSWBOINS à partir de la transaction SE38. Lire la note SAP 0162266 pour des informations supplémentaires au sujet des phases RFCRSWBOINI et RFCRADDBDIF.
Ici les même restrictions s'appliquent: assurez-vous en consultant les fichiers journaux, que cette erreur n'est pas causée par d'autres problèmes apparus précédemment.
Si vous avez confirmation que la note SAP 0162266 s'applique, modifiez juste la valeur du STATUS de l'étape posant problème de la valeur ERROR à la valeur OK (fichier CENTRDB.R3S) et relancez R3SETUP. Après l'installation, vous devez exécuter le report RADDBDIF à partir de la transaction SE38.
Cette erreur s'est produite lors du lancement des processus SAP disp+work. Si SAP est démarré avec la procédure startsap, les sous-processus sont alors lancés, et lancent les autres processus SAP. Cela a pour résultat le fait que la procédure ne remarquera pas si quelque chose se passe mal.
Pour contrôler si les processus SAP ont démarré correctement, consultez l'état des processus avec la commande ps ax | grep SID, qui vous donnera une liste de tous les processus Oracle et SAP. S'il semble que certains processus sont manquant ou que vous ne pouvez pas vous connecter au système SAP, consultez les fichiers journaux correspondants qui peuvent être trouvés dans le répertoire /usr/sap/SID/DVEBMGSnr/work/. Les fichiers à consulter sont dev_ms et dev_disp.
Le signal 31 se produit ici si la quantité de mémoire partagée utilisée par Oracle et SAP dépasse celle définie dans le fichier de configuration du noyau et ce problème peut être résolu en utilisant une valeur plus grande:
# larger value for 46C production systems: options SHMMAXPGS=393216 # smaller value sufficient for 46B: #options SHMMAXPGS=262144
Il y a quelques problèmes avec le programme saposcol (version 4.6D). Le système SAP utilise saposcol pour collecter les données concernant les performances du système. Ce programme n'est pas nécessaire pour utiliser le système SAP, aussi ce problème peut être considéré comme mineur. Les anciennes versions (4.6B) fonctionnent, mais ne récupèrent pas toutes les données (nombreux sont les appels qui retournent juste 0, par exemple pour l'utilisation du CPU).
Si vous êtes curieux de savoir comment la compatibilité binaire avec
Linux fonctionne, cette section est faite pour vous. La plupart de ce qui suit est
principalement basé sur un courrier électronique de Terry Lambert <tlambert@primenet.com> envoyé
à la liste de diffusion pour la discussion de sujets non-techniques en rapport
avec FreeBSD (Message ID: <199906020108.SAA07001@usr09.primenet.com>).
FreeBSD possède une abstraction appelée ``chargeur de classe d'exécution''. C'est une portion de l'appel système execve(2).
Ce qui se passe est que FreeBSD dispose d'une liste de chargeurs, à la place d'un simple chargeur avec retour (``fallback'') vers le chargeur #! pour exécuter n'importe quel interpréteur de commandes ou procédure.
Historiquement, l'unique chargeur sur les plate-formes UNIX examinait le nombre magique (généralement les 4 ou 8 premiers octets du fichier) pour voir si c'était un binaire connu par le système, et si c'était le cas, invoquait le chargeur binaire.
Si ce n'était pas le type de binaire du système, l'appel execve(2) retournait un échec, et l'interpréteur de commandes tentait de l'exécuter comme une commande d'interpréteur.
Cette hypothèse est celle par défaut quelque soit l'interpréteur de commandes actuel.
Plus tard, une modification a été faite sur sh(1) pour examiner les deux premiers caractères, et s'ils étaient :\n, alors elle invoquait l'interpréteur de commandes csh(1) à la place (nous pensons que l'entreprise SCO fut la première à faire cette modification).
Ce que fait maintenant FreeBSD est de parcourir une liste de chargeurs, avec un chargeur #! générique qui reconnaît les noms des interpréteurs qui se trouvent après le caractère espace suivant, puis avec un retour possible vers /bin/sh.
Pour le support de l'ABI Linux, FreeBSD voit le nombre magique comme un binaire ELF (il ne fait pas la différence à ce niveau entre FreeBSD, Solaris, Linux, ou tout autre système d'exploitation qui dispose d'un type d'image ELF).
Le chargeur ELF recherche une marque spécifique, qui se trouve dans une section de commentaire dans l'image ELF, et qui n'est pas présente dans les binaires SVR4/Solaris ELF.
Pour que les binaires Linux puissent fonctionner, ils doivent être marqués sous le type Linux avec brandelf(1):
# brandelf -t Linux file
Quand cela est fait, le chargeur ELF verra le marquage Linux sur le fichier.
Lorsque le chargeur ELF voit le marquage Linux, le chargeur remplace un pointeur dans la structure proc. Tous les appels système sont indéxés par l'intermédiaire de ce pointeur (dans un système UNIX traditionnel, cela serait la structure sysent[], contenant les appels système). De plus, le processus est marqué pour une gestion spéciale du vecteur d'interruption (``trap'') pour le signal de code ``trampoline'', et plusieurs autres corrections (mineures) qui sont gérées par le noyau Linux.
Le vecteur d'appel système Linux contient, entre autres, une liste des entrées sysent[] dont les adresses résident dans le noyau.
Quand un appel système est effectué par le binaire Linux, le code ``trap'' déréférence de la structure proc le pointeur de la fonction de l'appel système, et utilise les points d'entrée Linux, et non pas FreeBSD, de d'appel système.
De plus, le mode Linux redéfinit dynamiquement l'origine des
requêtes; c'est, en effet, ce qu'effectue l'option union (pas le
type de système de fichiers unionfs!) de
montage des systèmes de fichiers. Tout d'abord, une tentative est faite pour
rechercher le fichier dans le répertoire /compat/linux/chemin-origine,
puis uniquement si cela
échoue, la recherche est effectuée dans le répertoire /chemin-origine. Cela
permet de s'assurer que les binaires nécessitant d'autres binaires puissent
s'exécuter (par exemple, l'ensemble des outils Linux peuvent tourner sous
l'ABI Linux). Cela signifie également que les binaires Linux peuvent
charger et exécuter les binaires FreeBSD, s'il n'y a pas de binaires
Linux correspondant présents, et vous pourriez placer une commande uname(1) dans
l'arborescence /compat/linux pour vous assurer que
les binaires Linux ne puissent pas dire qu'ils ne tournent pas sous Linux.
En effet, il y a un noyau Linux dans le noyau FreeBSD; les diverses fonctions sous-jacentes qui implémentent tous les services fournis par le noyau sont identiques entre les deux tables d'entrées des appels systèmes FreeBSD et Linux: les opérations sur les systèmes de fichiers, les opérations sur la mémoire virtuelle, la gestion des signaux, l'IPC System V, etc. La seule différence est que les binaires FreeBSD utilisent les fonctions glue de FreeBSD, et les binaires Linux celles de Linux (les plus anciens systèmes d'exploitation avaient uniquement leurs propres fonctions de glue: les adresses des fonctions dans une structure sysent[] statique globale, au lieu des adresses des fonctions déréférencées d'un pointeur initialisé dynamiquement pointant vers la structure proc du processus faisant l'appel).
Laquelle est l'ABI native FreeBSD? Cela n'a pas d'importance. Basiquement, la seule différence est que (actuellement, cela pourrait facilement changer dans les versions futures, et probablement après cela) les fonctions glue de FreeBSD sont liées en statique dans le noyau, les fonctions glue Linux peuvent être liées statiquement, ou l'on peut y accéder via un module du noyau.
Oui, mais est-ce vraiment de l'émulation? Non. C'est l'implémentation d'une interface binaire pour les applications (ABI). Il n'y a pas d'émulateur (ou de simulateur, pour couper court aux prochaines questions) impliqué.
Mais pourquoi appelle-t-on parfois cela ``émulation Linux''? Pour rendre difficile la vente des versions de FreeBSD! Sérieusement, c'est dû au fait que l'implémentation historique a été faite à une époque où il n'y avait pas vraiment d'autres mots pour décrire ce qui était en développement; dire que FreeBSD exécutait les binaires Linux n'était pas vrai si vous n'aviez pas compilé le code ou chargé un module, aussi un terme était nécessaire pour qualifier ce qui était chargé -- donc l'``émulateur Linux''.
Les chapitres restant du Manuel FreeBSD couvrent tous les aspects de l'administration système de FreeBSD. Chaque chapitre débute en décrivant ce que vous apprendrez à la lecture du chapitre, et détaille également ce que vous êtes sensés connaître avant de l'aborder.
Ces chapitres sont conçus pour être consultés quand vous avez besoin d'une information. Vous ne devez pas les lire suivant un ordre particulier, ni tous les lire avant de pouvoir utiliser FreeBSD.
Version française de Marc Fonvieille
<blackend@FreeBSD.org>.
La configuration correcte d'un système peut sensiblement réduire la quantité de travail impliquée dans la maintenance et la mise à jour. Ce chapitre décrit certains des aspects de la configuration des systèmes FreeBSD.
Ce chapitre décrira également certains paramètres qui peuvent être modifiés pour configurer un système FreeBSD pour des performances optimales.
Après la lecture de ce chapitre, vous saurez:
Pourquoi et comment dimensionner, organiser, et positionner efficacement les partitions des systèmes de fichiers et de pagination sur votre disque dur.
Les bases de la configuration du fichier rc.conf et des fichiers de démarrage /usr/local/etc/rc.d.
Comment configurer et tester une carte réseau.
Comment configurer des hôtes virtuels sur vos périphériques réseau.
Comment utiliser les divers fichiers de configuration du répertoire /etc.
Comment optimiser FreeBSD en utilisant les variables sysctl.
Comment optimiser les performances des disques et modifier les limitations du noyau.
Avant de lire ce chapitre, vous devrez:
Comprendre les fondements d'UNIX et de FreeBSD (Chapitre 3).
Etre familier avec la configuration et la compilation du noyau (Chapitre 8).
Quand vous organisez votre système de fichiers à l'aide de bsdlabel(8) ou sysinstall(8), il est important de se rappeler que les disques durs peuvent transférer des données plus rapidement depuis les pistes externes que depuis celles à l'intérieur. En sachant cela, vous devriez placer vos systèmes de fichiers les plus petits, auxquels on accède le plus souvent, comme la racine et l'espace de pagination, proche de la partie externe du disque, alors que les grandes partitions, comme /usr, devraient être plus à l'intérieur. Pour faire cela, c'est une bonne idée de créer les partitions dans l'ordre suivant: racine, pagination, /var, /usr.
La taille de votre partition /var reflète l'utilisation prévue de votre machine. /var est principalement utilisée pour héberger les boîtes aux lettres, les fichiers journaux, les queues d'impression. Les boîtes aux lettres et les fichiers journaux, en particulier, peuvent croître vers des tailles inattendues en fonction du nombre d'utilisateurs de votre système et de combien de temps sont conservés ces fichiers. Si vous avez l'intention de faire fonctionner un serveur de courrier électronique, une partition La plupart des utilisateurs n'auront jamais besoin de plus d'un gigaoctet, mais rappelez-vous que /var/tmp doit être assez grand pour contenir tout logiciel pré-compilé que vous pourrez vouloir ajouter.
La partition /usr contient la majeure partie des fichiers nécessaires au système, le catalogue des logiciels portés (recommandé) et le code source du système (optionnel). Les deux étant optionnels à l'installation. Utiliser au moins 2 gigaoctets pour cette partition est recommandé.
Quand vous dimensionnez vos partitions, gardez à l'esprit les besoins en espace pour permettre à votre système de se développer. Manquer d'espace sur une partition alors qu'il y en a plein sur les autres peut être très frustrant.
Note : Certains utilisateurs qui ont employé l'option Auto-defaults de l'outil de partitionnement de sysinstall(8) ont trouvé plus tard que leurs partitions racine et /var étaient trop petites. Partitionnez généreusement et avec sagesse.
Par principe, votre espace de pagination devrait typiquement avoir une taille double de la quantité de mémoire principale. Par exemple, si la machine possède 128 mégaoctets de mémoire, le fichier de pagination devrait être de 256 mégaoctets. Les systèmes avec peu de mémoire pourront avoir de meilleures performances avec beaucoup plus d'espace de pagination. Il n'est pas recommandé d'avoir moins de 256 mégaoctets d'espace de pagination sur un système et vous devriez garder à l'esprit les futures extensions de mémoire quand vous dimensionnez votre partition de pagination. Les algorithmes de pagination du noyau sont optimisés pour une meilleure efficacité avec une partition de pagination d'au moins deux fois la taille de la mémoire principale. Configurer trop peu d'espace de pagination peut conduire à une certaine inefficacité du code de pagination de la mémoire virtuelle comme à l'apparition de problèmes ultérieurement si vous ajoutez plus de mémoire à votre machine.
Et enfin, sur des systèmes importants avec de multiples disques SCSI (ou de multiples disques IDE fonctionnant sur différents contrôleurs), il est vivement recommandé que vous configuriez un espace de pagination sur chaque disque (jusqu'à quatre disques). Les partitions de pagination sur les différents disques devront avoir approximativement la même taille. Le noyau peut gérer des tailles arbitraires mais les structures de données internes sont dimensionnées pour 4 fois la taille de la plus grande partition de pagination. Garder la taille des partitions de pagination proche permettra au noyau de répartir de manière optimale l'espace de pagination entre les disques. Ne vous inquiétez pas trop si vous les surdimensionnez, l'espace de pagination est un des avantages d'Unix. Même si vous n'utilisez normalement pas beaucoup de cet espace, il peut vous permettre d'avoir plus temps pour récupérer face à programme incontrôlable avant d'être forcé à relancer la machine.
Pourquoi des partitions? Pourquoi ne pas créer une seule grande partition racine? Ainsi je n'aurais pas à me soucier d'avoir sous-dimensionné certaines choses!
Pour plusieurs raisons cela n'est pas une bonne idée. Tout d'abord, chaque partition a différentes caractéristiques d'utilisation et les séparer autorise le système de fichiers à s'optimiser lui-même pour ces caractéristiques. Par exemple, les partitions racine et /usr sont surtout lues, et rarement utilisées en écriture, alors que de nombreuses opérations de lecture et écriture pourront avoir lieu sur /var et /var/tmp.
En partitionnant correctement votre système, la fragmentation introduite sur les partitions plus petites et plus chargées en écriture ne s'étendra pas sur les partitions principalement utilisées en lecture. De plus, avoir les partitions principalement utilisées en écriture proche du bord du disque, par exemple avant la grande partition au lieu qu'après dans la table des partitions, augmentera les performances d'E/S sur les partitions qui le demandent le plus. Maintenant il est également vrai que vous avez besoin de performances d'E/S sur les grandes partitions, mais elles sont si grandes que les déplacer plus vers l'extérieur du disque ne donnera pas lieu à une augmentation significative des performances alors que le déplacement de /var vers le bord peut avoir un sérieux impact. Et enfin, il y a également des raisons de sécurité. Avoir une partition racine petite et ordonnée qui est essentiellement en lecture seule lui donne plus de chance de rester intacte après un crash sévère.
L'emplacement principal pour les données de configuration du système est le fichier /etc/rc.conf. Ce fichier contient une large gamme d'informations de configuration, principalement utilisées au démarrage du système pour configurer ce dernier. Son nom le sous-entend; c'est l'information de configuration pour les fichiers rc*.
Un administrateur devrait ajouter des entrées dans le fichier rc.conf pour remplacer les valeurs par défaut du fichier /etc/defaults/rc.conf. Les fichiers de valeurs par défaut ne devraient pas être copiés directement tels quels dans /etc - ils contiennent des valeurs par défaut, et non pas des exemples. Tout changement spécifique au système devrait être fait dans le fichier rc.conf.
Un certain nombre de stratégies peuvent être appliquées dans le cas d'applications en grappe pour séparer la configuration d'un site de celle d'un système afin de réduire le travail d'administration. L'approche recommandée est de placer la configuration propre au site dans un autre fichier comme /etc/rc.conf.site, puis ensuite inclure ce fichier dans /etc/rc.conf, qui ne contiendra seulement que les informations spécifiques au système.
Comme rc.conf est lu par sh(1) il est assez trivial d'effectuer cela. Par exemple:
rc.conf:
. /etc/rc.conf.site hostname="node15.example.com" network_interfaces="fxp0 lo0" ifconfig_fxp0="inet 10.1.1.1"
rc.conf.site:
defaultrouter="10.1.1.254" saver="daemon" blanktime="100"
Le fichier rc.conf.site peut être distribué à l'ensemble des systèmes en utilisant rsync ou un programme semblable, tandis que le fichier rc.conf reste unique.
Mettre à jour le système en employant sysinstall(8) ou make world n'écrasera pas le fichier rc.conf, les informations de configuration du système ne seront donc pas perdues.
Généralement, les applications installées ont leurs propres fichiers de configuration, avec leur propre syntaxe, etc... Il est important que ces fichiers soient séparés du système de base, de sorte qu'ils soient facilement localisables et gérables par les outils de gestion des logiciels installés.
Ces fichiers sont généralement installés dans le répertoire /usr/local/etc. Dans le cas où une application possède un grand nombre de fichiers de configuration, un sous-répertoire sera créé pour les héberger.
Normalement, quand un logiciel porté ou pré-compilé est installé, des exemples de fichiers de configuration sont également installés. Ces derniers sont généralement identifiés par un suffixe ``.default''. Si aucun fichier de configuration n'existe pour l'application, on les créera en copiant les fichiers .default.
Par exemple, considérez le contenu du répertoire /usr/local/etc/apache:
-rw-r--r-- 1 root wheel 2184 May 20 1998 access.conf -rw-r--r-- 1 root wheel 2184 May 20 1998 access.conf.default -rw-r--r-- 1 root wheel 9555 May 20 1998 httpd.conf -rw-r--r-- 1 root wheel 9555 May 20 1998 httpd.conf.default -rw-r--r-- 1 root wheel 12205 May 20 1998 magic -rw-r--r-- 1 root wheel 12205 May 20 1998 magic.default -rw-r--r-- 1 root wheel 2700 May 20 1998 mime.types -rw-r--r-- 1 root wheel 2700 May 20 1998 mime.types.default -rw-r--r-- 1 root wheel 7980 May 20 1998 srm.conf -rw-r--r-- 1 root wheel 7933 May 20 1998 srm.conf.default
Les tailles des fichiers indiquent que seul le fichier srm.conf a été modifié. Une mise à jour, plus tard, du logiciel Apache ne devrait pas écraser le fichier modifié.
Nombreux sont les utilisateurs qui choisissent d'installer des logiciels tierce partie sous FreeBSD à partir du catalogue des logiciels portés. Dans de nombreuses situations, il peut être nécessaire de configurer le logiciel de manière à ce qu'il soit lancé au démarrage du système. Des services comme mail/postfix ou www/apache13 sont deux exemples de logiciels parmi tant d'autres qui peuvent être lancés à l'initialisation du système. Cette section explique les procédures disponibles pour démarrer certains logiciels tierce partie.
Sous FreeBSD, la plupart des services offerts, comme cron(8), sont lancés par l'intermédiaire des procédures de démarrage du système. Ces procédures peuvent varier en fonction de la version de FreeBSD,; ou du fournisseur; cependant, l'aspect le plus important à considérer est que leur configuration de démarrage peut être gérée à l'aide de procédures de démarrage simples.
Avant l'avènement du système rc.d, les applications plaçaient une procédure simple de lancement dans le répertoire /usr/local/etc/rc.d qui était lue par les scripts d'initialisation du système. Ces procédures étant alors exécutées lors des dernières étapes du démarrage du système.
Bien que de nombreuses personnes aient passé des heures à tenter de fusionner l'ancien mode de configuration avec le nouveau, il reste que certains utilitaires tierce partie ont toujours besoin d'un script placé dans le répertoire précédemment évoqué. Les différences subtiles dans les scripts dépend de si le système rc.d est utilisé ou non. Avant FreeBSD 5.1 l'ancien style de configuration était utilisé et dans presque tous les cas la nouvelle procédure fonctionnera sans problème.
Bien que chaque procédure doit remplir certains pré-requis minimum, la plupart du temps ils seront indépendants de la version de FreeBSD. Chaque procédure doit avoir une extension .sh et doit être exécutable par le système. Ce dernier point peut être réalisé en utilisant la commande chmod et en fixant les permissions à 755. Il doit y avoir, au minimum, une option pour démarrer (start) l'application et une autre pour l'arrêter (stop).
La procédure de démarrage la plus simple ressemblera à celle-ci:
#!/bin/sh
echo -n ' utility'
case "$1" in
start)
/usr/local/bin/utility
;;
stop)
kill -9 `cat /var/run/utility.pid`
;;
*)
echo "Usage: `basename $0` {start|stop}" >&2
exit 64
;;
esac
exit 0
Cette procédure offre des options stop et start pour une application appelée ici utility.
L'application pourra être lancée manuellement avec:
# /usr/local/etc/rc.d/utility.sh start
Bien que toutes les applications tierce partie ne nécessitent pas de ligne dans le fichier rc.conf, chaque jour un nouveau logiciel porté sera modifié pour accepter cette configuration. Contrôlez l'affichage final lors de l'installation de l'application pour plus d'information à ce sujet. Certains logiciels fourniront des procédures qui permettrons à l'application d'être utilisée avec le système rc.d, cela sera abordé dans la section suivante.
Maintenant que FreeBSD dispose du système rc.d, la configuration du démarrage des applications est plus simple, et propose plus de possibilités. En utilisant les mots clés présentés dans la section sur le système rc.d, les applications peuvent désormais être paramétrées pour démarrer après certains services, par exemple le DNS, des paramètres supplémentaires peuvent être passés par l'intermédiaire de rc.conf au lieu d'utiliser des paramètres fixes dans les procédures de démarrage, etc. Une procédure de base pourra ressembler à ce qui suit:
#!/bin/sh
#
# PROVIDE: utility
# REQUIRE: DAEMON
# KEYWORD: shutdown
. /etc/rc.subr
name=utility
rcvar=utility_enable
command="/usr/local/sbin/utility"
load_rc_config $name
#
# DO NOT CHANGE THESE DEFAULT VALUES HERE
# SET THEM IN THE /etc/rc.conf FILE
#
utility_enable=${utility_enable-"NO"}
pidfile=${utility_pidfile-"/var/run/utility.pid"}
run_rc_command "$1"
Cette procédure s'assurera que l'application utility sera lancée après le le service daemon. Elle fournie également une méthode de suivi du PID, ou encore ID (identifiant) de processus.
Cette application pourra alors avoir la ligne suivante la concernant dans le fichier /etc/rc.conf:
utility_enable="YES"
Cette nouvelle méthode permet également une manipulation plus aisée des arguments en ligne de commande, l'inclusion des fonctions offertes par défaut dans /etc/rc.subr, offre une compatibilité avec l'utilitaire rcorder(8) et fournie une configuration plus aisée par l'intermédiaire du fichier rc.conf.
Certains services, comme les serveurs POP3, IMAP, etc., peuvent être démarrés en utilisant inetd(8). Cela implique d'installer le service à partir du catalogue des logiciels portés et avec une ligne de configuration ajoutée au fichier /etc/inetd.conf, ou en décommentant une des lignes de configuration déjà présentes. L'utilisation d'inetd et sa configuration sont décrits en profondeur dans la section concernant inetd.
Dans certains cas, il peut être plus approprié d'utiliser le “daemon” cron(8) pour démarrer des services. Cette approche présente un certain nombre d'avantages parce que cron exécute ces processus sous les privilèges du propriétaire de la table crontab. Cela permet aux utilisateurs normaux de lancer et maintenir certaines applications.
L'utilitaire cron offre une fonction unique, @reboot, qui peut être utilisée en remplacement de la date d'exécution. Cela provoquera l'exécution de la tâche quand cron(8) est lancé, normalement lors de l'initialisation du système.
Un des utilitaires les plus importants de FreeBSD est cron(8). L'utilitaire cron tourne en arrière plan et contrôle constamment le fichier /etc/crontab. L'utilitaire cron consulte également le répertoire /var/cron/tabs, à la recherche de nouveaux fichiers crontab. Ces fichiers crontab conservent les informations sur les tâches que cron est censé exécuter à des moments donnés.
L'utilitaire cron utilise deux types différents de fichiers de configuration, le fichier crontab système et les crontabs des utilisateurs. La seule différence entre ces deux formats est le sixième champ. Dans le fichier crontab système, le sixième champ est le nom de l'utilisateur sous lequel doit être exécutée la commande. Cela donne la possibilité au fichier crontab système d'exécuter les commandes sous n'importe quel utilisateur. Dans le fichier crontab d'un utilisateur, le sixième champ est la commande a exécuter et toutes les commandes sont exécutées sous l'utilisateur qui a créé le fichier crontab; c'est un aspect sécurité important.
Note : Les fichiers crontab utilisateur permettent aux utilisateurs de planifier l'exécution de tâches sans avoir besoin des privilèges du super-utilisateur root. Les commandes contenues dans le fichier crontab d'un utilisateur s'exécutent avec les privilèges de l'utilisateur auquel appartient ce fichier.
Le super-utilisateur root peut posséder un fichier crontab utilisateur comme tout autre utilisateur. Ce fichier est différent de /etc/crontab (le crontab système). En raison de l'existence du fichier crontab système, il n'y a généralement pas besoin d'un fichier crontab utilisateur pour root.
Examinons le fichier /etc/crontab (fichier crontab système):
# /etc/crontab - root's crontab for FreeBSD # # $FreeBSD: src/etc/crontab,v 1.32 2002/11/22 16:13:39 tom Exp $ ## SHELL=/bin/sh PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
HOME=/var/log # # #minute heure date mois jour utilisateur commande
# # */5 * * * * root /usr/libexec/atrun
![]()




N'importe quel nombre d'indicateur peut être passé à ces commandes; cependant, les commandes qui s'étendent sur de multiples lignes doivent être ``cassées'' avec le caractère, contre-oblique \, de continuation de lignes.
Ceci est la configuration de base pour chaque fichier crontab, bien qu'il y ait une différence dans celui présenté ici. Le sixième champ, où est précisé le nom d'utilisateur, n'existe que dans le fichier système /etc/crontab. Ce champ devrait être omis pour les fichiers crontab d'utilisateur.
Important : Vous ne devez pas utiliser la procédure décrite ci-dessous pour éditer/installer le fichier crontab système. Utilisez directement votre éditeur: l'utilitaire cron remarquera le changement au niveau de ce fichier et utilisera immédiatement la nouvelle version. Consultez cette entrée de la FAQ pour plus d'information.
Pour installer un fichier crontab utilisateur fraîchement rédigé, tout d'abord utilisez votre éditeur favori pour créer un fichier dans le bon format, ensuite utilisez l'utilitaire crontab. L'usage le plus typique est:
# crontab fichier-crontab
Dans cet exemple, fichier-crontab est le nom d'un fichier crontab qui a été précédemment créé.
Il existe également une option pour afficher les fichiers crontab installés, passez simplement le
paramètre -l à crontab et lisez ce qui est affiché.
Pour les utilisateurs désirant créer leur fichier crontab à partir de zéro, sans utiliser de modèle, l'option crontab -e est disponible. Cela invoquera l'éditeur par défaut avec un fichier vide. Quand le fichier est sauvegardé, il sera automatiquement installé par la commande crontab.
Si vous désirez plus tard effacer votre crontab
utilisateur complètement, utilisez la commande crontab avec l'option -r.
En 2002, le système rc.d de NetBSD pour
l'initialisation du système a été intégré à
FreeBSD. Les utilisateurs noteront les fichiers présents dans le répertoire
/etc/rc.d. Plusieurs de ces fichiers sont destinés aux
services de base qui peuvent être contrôlés avec les options start, stop, et restart. Par exemple, sshd(8) peut
être relancé avec la commande suivante:
# /etc/rc.d/sshd restart
Cette procédure est similaire pour d'autres services. Bien sûr, les services sont généralement lancés automatiquement au démarrage dès qu'ils sont spécifiés dans le fichier rc.conf(5). Par exemple, activer le ``daemon'' de translation d'adresses au démarrage est aussi simple que d'ajouter la ligne suivante au fichier /etc/rc.conf:
natd_enable="YES"
Si une ligne natd_enable="NO" est déjà
présente, modifiez alors le NO par YES. Les procédures rc chargeront automatiquement les autres
services dépendants lors du prochain redémarrage comme décrit
ci-dessous.
Comme le système rc.d est à l'origine
destiné pour lancer/arrêter les services au démarrage/à
l'arrêt du système, les options standards start,
stop et restart ne seront
effectives que si les variables appropriées sont positionnées dans le
fichier /etc/rc.conf. Par exemple, la commande sshd restart ci-dessus ne fonctionnera que si sshd_enable est fixée à YES dans /etc/rc.conf. Pour lancer,
arrêter ou redémarrer un service indépendemment des
paramétrages du fichier /etc/rc.conf, les commandes
doivent être précédées par “one”. Par exemple pour
redémarrer sshd indépendemment du
paramétrage du fichier /etc/rc.conf, exécutez la
commande suivante:
# /etc/rc.d/sshd onerestart
Il est facile de contrôler si un service est activé dans le fichier /etc/rc.conf en exécutant la procédure rc.d appropriée avec l'option rcvar. Ainsi, un administrateur peut contrôler que sshd est réellement activé dans /etc/rc.conf en exécutant:
# /etc/rc.d/sshd rcvar # sshd $sshd_enable=YES
Note : La seconde ligne (# sshd) est la sortie de la commande sshd et non pas une console root.
Pour déterminer si un service est actif, une option appelée status est disponible. Par exemple pour vérifier que sshd a réellement été lancé:
# /etc/rc.d/sshd status sshd is running as pid 433.
Dans certains cas, il est également possible de recharger un service avec
l'option reload. Le système tentera d'envoyer un
signal à un service individuel, le forçant à recharger ses fichiers
de configuration. Dans la plupart des cas cela signifie envoyer un signal SIGHUP au service. Le support de cette fonctionnalité n'est
pas disponible pour chaque service.
Le système rc.d n'est pas uniquement utilisée pour les services réseaux, elle participe à la majeure partie de l'initialisation du système. Prenez par exemple le fichier bgfsck. Quand cette procédure est exécutée, il affichera le message suivant:
Starting background file system checks in 60 seconds.
Donc ce fichier est utilisé pour les vérifications du système de fichiers en arrière plan, qui sont uniquement effectuées lors de l'initialisation du système.
De nombreux services système dépendent d'autres services pour fonctionner correctement. Par exemple, NIS et les autres services basés sur les RPCs peuvent échouer s'ils sont lancés après le lancement du service rpcbind (portmapper). Pour résoudre ce problème, l'information concernant les dépendances et autres méta-données est inclue dans les commentaires au début de chaque procédure de démarrage. Le programme rcorder(8) est alors utilisé pour analyser ces commentaires lors de l'initialisation du système en vue de déterminer l'ordre dans lequel les services système seront invoqués pour satisfaire les dépendances. Les mots suivants peuvent être présents en tête de chaque fichier de démarrage:
PROVIDE: indique les services que fournit ce fichier.
REQUIRE: liste les fichiers dont dépend ce service. Ce fichier sera exécuté après les services indiqués.
BEFORE: liste les services qui dépendent du service présent. Ce fichier sera exécuté avant les services indiqués.
En utilisant ce système, un administrateur peut facilement contrôler les services du système sans avoir à se battre avec les ``runlevels'' comme sur d'autres systèmes d'exploitation UNIX.
Des informations supplémentaires concernant le système rc.d peuvent être trouvées dans les pages de manuel rc(8) et rc.subr(8). Si vous êtes intéressé par l'écriture de vos propres procédures rc.d ou pour l'amélioration des procédures existantes, vous trouverez cette article utile.
De nos jours il est impossible de penser à un ordinateur sans penser connexion à un réseau. Installer et configurer une carte réseau est une tâche classique pour tout administrateur FreeBSD.
Avant de commencer, vous devez connaître le modèle de la carte dont vous disposez, le circuit qu'elle utilise, et si c'est une carte PCI ou ISA. FreeBSD supporte une large variété de cartes PCI et ISA. Consultez la liste de compatibilité matérielle pour votre version de FreeBSD afin de voir si votre carte est supportée.
Une fois que vous êtes sûrs que votre carte est supportée, vous devez déterminer le bon pilote de périphérique pour la carte. Les fichiers /usr/src/sys/conf/NOTES et /usr/src/sys/arch/conf/NOTES vous donneront la liste des pilotes de périphériques pour cartes réseaux avec des informations sur les cartes/circuits supportés. Si vous avez des doutes au sujet du bon pilote, lisez la page de manuel du pilote. La page de manuel vous donnera plus d'information sur le matériel supporté et même les éventuels problèmes qui pourront apparaître.
Si vous possédez une carte courante, la plupart du temps vous n'aurez pas à chercher trop loin pour trouver un pilote. Les pilotes pour les cartes réseaux courantes sont présents dans le noyau GENERIC, aussi votre carte devrait apparaître au démarrage, comme suit:
dc0: <82c169 PNIC 10/100BaseTX> port 0xa000-0xa0ff mem 0xd3800000-0xd38 000ff irq 15 at device 11.0 on pci0 dc0: Ethernet address: 00:a0:cc:da:da:da miibus0: <MII bus> on dc0 ukphy0: <Generic IEEE 802.3u media interface> on miibus0 ukphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto dc1: <82c169 PNIC 10/100BaseTX> port 0x9800-0x98ff mem 0xd3000000-0xd30 000ff irq 11 at device 12.0 on pci0 dc1: Ethernet address: 00:a0:cc:da:da:db miibus1: <MII bus> on dc1 ukphy1: <Generic IEEE 802.3u media interface> on miibus1 ukphy1: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
Dans cet exemple, nous voyons que deux cartes utilisant le pilote de périphérique dc(4) sont présentes sur le système.
Si le pilote de votre carte n'est pas présent dans le noyau GENERIC, vous devrez charger le module approprié pour pouvoir utiliser votre carte. Cela peut être effectué de deux manières différentes:
La méthode la plus simple est de charger le module pour votre carte réseau avec kldload(8), ou automatiquement au démarrage du système en ajoutant la ligne appropriée au fichier /boot/loader.conf. Tous les pilotes de cartes réseau ne sont pas disponibles sous forme de modules; les cartes ISA sont un bon exemple de périphériques pour lesquels les modules n'existent pas.
Alternativement, vous pouvez compiler en statique le support pour votre carte dans votre noyau. Consultez /usr/src/sys/conf/NOTES, /usr/src/sys/arch/conf/NOTES et la page de manuel du pilote de périphérique pour savoir ce qu'il faut ajouter au fichier de configuration de votre noyau. Pour plus d'information sur la recompilation de votre noyau, veuillez lire le Chapitre 8. Si votre carte a été détectée au démarrage par votre noyau (GENERIC) vous n'avez pas à compiler un nouveau noyau.
Malheureusement il y a toujours de nombreux fabricants qui ne fournissent pas à la communauté des logiciels libres les informations concernant les pilotes pour leurs cartes considérant de telles informations comme des secrets industriels. Par conséquent, il ne reste aux développeurs de FreeBSD et d'autres systèmes d'exploitation libres que deux choix: développer les pilotes en passant par un long et pénible processus de “reverse engineering” ou utiliser les pilotes binaires existants disponibles pour la plateforme Microsoft Windows. La plupart des développeurs, y compris ceux impliqués dans FreeBSD, ont choisi cette dernière approche.
Grâce aux contributions de Bill Paul (wpaul), depuis FreeBSD 5.3-RELEASE, il existe un support “natif” pour la spécification d'interface des pilotes de périphérique réseau (Network Driver Interface Specification--NDIS). Le NDISulator FreeBSD (connu également sous le nom de Project Evil) prend un pilote binaire réseau Windows et lui fait penser qu'il est en train de tourner sous Windows. Etant donné que le pilote ndis(4) utilise un binaire Windows, il n'est utilisable que sur les systèmes i386 et amd64.
Note : Le pilote ndis(4) est conçu pour supporter principalement les périphériques PCI, CardBus et PCMCIA, les périphériques USB ne sont pas encore supportés.
Pour utiliser le NDISulator, vous avez besoin de trois choses:
les sources du noyau;
le pilote binaire Windows XP (extension .SYS);
le fichier de configuration du pilote Windows XP (extension .INF).
Recherchez les fichiers spécifiques à votre carte. Généralement, ils peuvent être trouvés sur les CDs livrés avec la carte ou sur le site du fabricant. Dans les exemples qui suivent nous utiliseront les fichiers W32DRIVER.SYS et W32DRIVER.INF.
Note : Vous ne pouvez pas utiliser un pilote Windows/i386 avec FreeBSD/amd64, vous devez récupérer un pilote Windows/amd64 pour que cela fonctionne correctement.
L'étape suivante est de compiler le pilote binaire dans un module chargeable du noyau. Pour effectuer cela, en tant que root, utilisez ndisgen(8):
# ndisgen /path/to/W32DRIVER.INF /path/to/W32DRIVER.SYS
L'utilitaire ndisgen(8) est interactif et vous sollicitera pour d'éventuelles informations complémentaires si nécessaire; il produira un module noyau dans le répertoire courant qui pourra être chargé de cette manière:
# kldload ./W32DRIVER.ko
Avec le module généré, vous devez également charger les modules ndis.ko et if_ndis.ko. Cela devrait être fait automatiquement quand vous chargez un module qui dépend de ndis(4). Si vous désirez les charger manuellement, utilisez les commandes suivantes:
# kldload ndis # kldload if_ndis
La première commande charge le pilote d'interface NDIS, la seconde charge l'interface réseau.
Contrôlez maintenant la sortie de dmesg(8) à la recherche d'une quelconque erreur au chargement. Si tout s'est bien passé, vous devriez obtenir une sortie ressemblant à ce qui suit:
ndis0: <Wireless-G PCI Adapter> mem 0xf4100000-0xf4101fff irq 3 at device 8.0 on pci1 ndis0: NDIS API version: 5.0 ndis0: Ethernet address: 0a:b1:2c:d3:4e:f5 ndis0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps ndis0: 11g rates: 6Mbps 9Mbps 12Mbps 18Mbps 36Mbps 48Mbps 54Mbps
A partir de là vous pouvez traiter le périphérique ndis0 comme n'importe quelle interface réseau (par exemple dc0).
Vous pouvez configurer le système pour charger les modules NDIS au démarrage du système de la même manière que pour n'importe quel autre module. Tout d'abord, copiez le module généré, W32DRIVER.ko, dans le répertoire /boot/modules. Ajoutez ensuite la ligne suivante au fichier /boot/loader.conf:
W32DRIVER_load="YES"
Une fois que le bon pilote de périphérique pour la carte réseau est chargé, la carte doit être configurée. Comme beaucoup d'autres choses, la carte aura pu être configurée à l'installation par sysinstall.
Pour afficher la configuration des interfaces réseaux de votre système, entrer la commande suivante:
% ifconfig
dc0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 192.168.1.3 netmask 0xffffff00 broadcast 192.168.1.255
ether 00:a0:cc:da:da:da
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
dc1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 10.0.0.1 netmask 0xffffff00 broadcast 10.0.0.255
ether 00:a0:cc:da:da:db
media: Ethernet 10baseT/UTP
status: no carrier
lp0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet 127.0.0.1 netmask 0xff000000
tun0: flags=8010<POINTOPOINT,MULTICAST> mtu 1500
Note : D'anciennes versions de FreeBSD pourront nécessiter l'option
-aaprès ifconfig(8), pour plus de détails au sujet de la syntaxe d'ifconfig(8), veuillez vous référer à la page de manuel. Notez également que les entrées concernant l'IPv6 (inet6 etc...) ont été omises dans cet exemple.
Dans cet exemple, les périphériques suivants ont été affichés:
dc0: La première interface Ethernet
dc1: La seconde interface Ethernet
lp0: L'interface du port parallèle
lo0: L'interface ``en boucle'' (``loopback'')
tun0: L'interface ``tunnel'' utilisée par ppp
FreeBSD utilise le nom du pilote de périphérique suivi par un chiffre représentant l'ordre dans lequel la carte est détectée au démarrage du noyau pour nommer la carte. Par exemple sis2 serait la troisième carte sur le système utilisant le pilote de périphérique sis(4).
Dans cet exemple, le périphérique dc0 est actif et en fonctionnement. Les indicateurs importants sont:
UP signifie que la carte est configurée et prête.
La carte possède une adresse Internet (inet) (dans ce cas-ci 192.168.1.3).
Elle a un masque de sous-réseau valide (netmask; 0xffffff00 est équivalent à 255.255.255.0).
Elle a une adresse de diffusion valide (dans ce cas-ci 192.168.1.255).
L'adresse MAC de la carte (ether) est 00:a0:cc:da:da:da
La sélection du média est sur le mode d'autosélection (media: Ethernet autoselect (100baseTX <full-duplex>)). Nous voyons que dc1 a été configurée pour utiliser un matériel de type 10baseT/UTP. Pour plus d'information sur le type de matériel disponible pour un pilote de périphérique, référez-vous à sa page de manuel.
La liaison (status) est active, i.e. la porteuse est détectée. Pour dc1, nous lisons status: no carrier. Cela est normal lorsqu'aucun câble n'est branché à la carte.
Si le résultat de la commande ifconfig(8) est similaire à:
dc0: flags=8843<BROADCAST,SIMPLEX,MULTICAST> mtu 1500 ether 00:a0:cc:da:da:da
cela indiquerait que la carte n'a pas été configurée.
Pour configurer votre carte, vous avez besoin des privilèges de l'utilisateur root. La configuration de la carte réseau peut être faite à partir de la ligne de commande avec ifconfig(8) mais vous aurez à répéter cette opération à chaque redémarrage du système. Le fichier /etc/rc.conf est l'endroit où ajouter la configuration de la carte réseau.
Ouvrez le fichier /etc/rc.conf dans votre éditeur favori. Vous devez ajouter une ligne pour chaque carte réseau présente sur le système, par exemple dans notre cas, nous avons ajouté ces lignes:
ifconfig_dc0="inet 192.168.1.3 netmask 255.255.255.0" ifconfig_dc1="inet 10.0.0.1 netmask 255.255.255.0 media 10baseT/UTP"
Vous devez remplacer dc0, dc1, et ainsi de suite, avec le périphérique correspondant pour vos cartes, et les adresses avec celles désirées. Vous devriez lire les pages de manuel du pilote de périphérique et d'ifconfig(8) pour plus de détails sur les options autorisées et également la page de manuel de rc.conf(5) pour plus d'information sur la syntaxe de /etc/rc.conf.
Si vous avez configuré le réseau à l'installation, des lignes concernant la/les carte(s) réseau pourront être déjà présentes. Contrôler à deux fois le fichier /etc/rc.conf avant d'y ajouter des lignes.
Vous devrez également éditer le fichier /etc/hosts pour ajouter les noms et les adresses IP des diverses machines du réseau local, si elles ne sont pas déjà présentes. Pour plus d'information référez-vous à la page de manuel hosts(5) et au fichier /usr/share/examples/etc/hosts.
Une fois les modifications nécessaires du fichier /etc/rc.conf effectuées, vous devrez redémarrer votre système. Cela permettra la prise en compte de la ou les modifications au niveau des interfaces, et permettra de vérifier que le système redémarre sans erreur de configuration.
Une fois que le système a été redémarré, vous devrez tester les interfaces réseau.
Pour vérifier qu'une carte Ethernet est configurée correctement, vous devez essayer deux choses. Premièrement, ``pinguer'' l'interface, puis une autre machine sur le réseau local.
Tout d'abord testons l'interface:
% ping -c5 192.168.1.3 PING 192.168.1.3 (192.168.1.3): 56 data bytes 64 bytes from 192.168.1.3: icmp_seq=0 ttl=64 time=0.082 ms 64 bytes from 192.168.1.3: icmp_seq=1 ttl=64 time=0.074 ms 64 bytes from 192.168.1.3: icmp_seq=2 ttl=64 time=0.076 ms 64 bytes from 192.168.1.3: icmp_seq=3 ttl=64 time=0.108 ms 64 bytes from 192.168.1.3: icmp_seq=4 ttl=64 time=0.076 ms --- 192.168.1.3 ping statistics --- 5 packets transmitted, 5 packets received, 0% packet loss round-trip min/avg/max/stddev = 0.074/0.083/0.108/0.013 ms
Nous devons maintenant ``pinguer'' une autre machine sur le réseau:
% ping -c5 192.168.1.2 PING 192.168.1.2 (192.168.1.2): 56 data bytes 64 bytes from 192.168.1.2: icmp_seq=0 ttl=64 time=0.726 ms 64 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=0.766 ms 64 bytes from 192.168.1.2: icmp_seq=2 ttl=64 time=0.700 ms 64 bytes from 192.168.1.2: icmp_seq=3 ttl=64 time=0.747 ms 64 bytes from 192.168.1.2: icmp_seq=4 ttl=64 time=0.704 ms --- 192.168.1.2 ping statistics --- 5 packets transmitted, 5 packets received, 0% packet loss round-trip min/avg/max/stddev = 0.700/0.729/0.766/0.025 ms
Vous pourrez utiliser le noms de la machine à la place de 192.168.1.2 si vous avez configuré le fichier /etc/hosts.
Le dépannage de matériels ou de logiciels est toujours une tâche relativement pénible, mais qui peut être rendue plus aisée en vérifiant en premier lieu certaines choses élémentaires. Votre câble réseau est-il branché? Avez-vous correctement configuré les services réseau? Le coupe-feu est-il bien configuré? Est-ce que la carte réseau est supportée par FreeBSD? Consultez toujours les notes concernant le matériel avant d'envoyer un rapport de bogue. Mettez à jour votre version de FreeBSD vers la dernière version STABLE. Consultez les archives des listes de diffusion, et faites même des recherches sur l'Internet.
Si la carte fonctionne mais les performances sont mauvaises, une lecture de la page de manuel tuning(7) peut valoir la peine. Vous pouvez également vérifier la configuration du réseau puisque des paramètres réseau incorrects peuvent donner lieu à des connexions lentes.
Certains utilisateurs peuvent voir apparaître un ou deux messages “device timeout”, ce qui est normal pour certaines cartes. Si ces messages se multiplient, assurez-vous que la carte n'est pas en conflit avec un autre périphérique. Contrôlez à deux fois les câbles de connexion. Peut-être que vous avez juste besoin d'une autre carte.
Parfois, des utilisateurs sont confrontés à des messages d'erreur “watchdog timeout”. La première chose à faire dans ce cas est de vérifier votre câble réseau. De nombreuses cartes demandent un slot PCI supportant le “Bus Mastering”. Sur certaines cartes mère anciennes, seul un slot PCI le permet (la plupart du temps le slot 0). Consultez la documentation de la carte réseau et de la carte mère pour déterminer si cela peut être à l'origine du problème.
Les messages “No route to host” surviennent si le système est incapable de router un paquet vers la machine de destination. Cela peut arriver s'il n'y a pas de route par défaut de définie, ou si le câble réseau est débranché. Vérifiez la sortie de la commande netstat -nr et assurez-vous qu'il y a une route valide en direction de la machine que vous essayez d'atteindre. Si ce n'est pas le cas, lisez la Chapitre 30.
Les messages d'erreur “ping: sendto: Permission denied” sont souvent dus à un coupe-feu mal configuré. Si ipfw est activé dans le noyau mais qu'aucune règle n'a été définie, alors la politique par défaut est de refuser tout trafic, même les requêtes “ping”! Lisez Chapitre 29 pour plus d'informations.
Parfois les performances de la carte ne sont pas bonnes, ou en dessous de la moyenne. Dans ce cas il est recommandé de passer la sélection du média du mode autoselect au mode adéquat. Alors que cela fonctionne généralement pour la plupart du matériel, il se peut que cela ne résolve pas le problème pour tout de monde. Encore une fois, contrôlez les paramétrages réseau et consultez la page de manuel tuning(7).
Une utilisation très courante de FreeBSD est l'hébergement de sites virtuels, où un serveur apparaît pour le réseau comme étant plusieurs serveurs différents. Ceci est possible en assignant plusieurs adresses réseau à une interface.
Une interface réseau donnée possède une adresse ``réelle'', et peut avoir n'importe quel nombre d'adresses ``alias''. Ces alias sont normalement ajoutés en plaçant les entrées correspondantes dans le fichier /etc/rc.conf.
Une entrée d'alias pour l'interface fxp0 ressemble à:
ifconfig_fxp0_alias0="inet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx"
Notez que les entrées d'alias doivent commencer avec alias0 et continuer en ordre croissant, (par exemple, _alias1, _alias2, et ainsi de suite). Le processus de configuration s'arrêtera au premier nombre absent.
Le calcul des masques de réseau est important, mais heureusement assez simple. Pour une interface donnée, il doit y avoir une adresse qui représente correctement le masque de réseau de votre réseau. Tout autre adresse appartenant à ce réseau devra avoir un masque de réseau avec chaque bit à 1 (exprimé soit sous la forme 255.255.255.255 soit 0xffffffff).
Par exemple, considérez le cas où l'interface fxp0 est connectée à deux réseaux, le réseau 10.1.1.0 avec un masque de réseau de 255.255.255.0 et le réseau 202.0.75.16 avec un masque de 255.255.255.240. Nous voulons que le système apparaisse de 10.1.1.1 jusqu'à 10.1.1.5 et à 202.0.75.17 jusqu'à 202.0.75.20. Comme noté plus haut, seule la première adresse dans un intervalle réseau donné (dans ce cas, 10.0.1.1 et 202.0.75.17) devrait avoir un masque de sous-réseau réel; toutes les autres adresses (10.1.1.2 à 10.1.1.5 et 202.0.75.18 jusqu'à 202.0.75.20) doivent être configurées avec un masque de sous-réseau de 255.255.255.255.
Les entrées suivantes du fichier /etc/rc.conf configurent la carte correctement pour cet arrangement:
ifconfig_fxp0="inet 10.1.1.1 netmask 255.255.255.0" ifconfig_fxp0_alias0="inet 10.1.1.2 netmask 255.255.255.255" ifconfig_fxp0_alias1="inet 10.1.1.3 netmask 255.255.255.255" ifconfig_fxp0_alias2="inet 10.1.1.4 netmask 255.255.255.255" ifconfig_fxp0_alias3="inet 10.1.1.5 netmask 255.255.255.255" ifconfig_fxp0_alias4="inet 202.0.75.17 netmask 255.255.255.240" ifconfig_fxp0_alias5="inet 202.0.75.18 netmask 255.255.255.255" ifconfig_fxp0_alias6="inet 202.0.75.19 netmask 255.255.255.255" ifconfig_fxp0_alias7="inet 202.0.75.20 netmask 255.255.255.255"
Il existe un certain nombre de répertoires dans lesquels se trouvent les informations de configuration. Ceux-ci incluent:
| /etc | Information de configuration générique du système; les données ici sont spécifiques au système. |
| /etc/defaults | Version par défaut des fichiers de configuration du système. |
| /etc/mail | Configuration de sendmail(8), et autres fichiers de configuration d'agent de transmission du courrier électronique. |
| /etc/ppp | Configuration pour les programmes PPP utilisateur et intégré au noyau. |
| /etc/namedb | Emplacement par défaut pour les données de named(8). Normalement named.conf et les fichiers de zone sont stockés dans ce répertoire. |
| /usr/local/etc | Fichiers de configuration pour les applications installées. Peut contenir des sous-répertoires pour chaque application. |
| /usr/local/etc/rc.d | Procédures de lancement/d'arrêt pour les applications installées. |
| /var/db | Fichiers de bases de données automatiquement générés, spécifiques au système, comme la base de données des logiciels installés, la base de données de localisation des fichiers, et ainsi de suite. |
/etc/resolv.conf gère comment le résolveur de FreeBSD accède au système de nom de domaine d'Internet (DNS).
Les entrées la plus classiques du fichier resolv.conf sont:
| nameserver | L'adresse IP du serveur de noms auquel le résolveur devrait envoyer ses requêtes. Les serveurs sont sollicités dans l'ordre listé avec un maximum de trois. |
| search | Liste de recherche pour la résolution de nom de machine. Ceci est normalement déterminé par le domaine de l'hôte local. |
| domain | Le nom du domaine local. |
Un fichier resolv.conf typique:
search example.com nameserver 147.11.1.11 nameserver 147.11.100.30
Note : Seule une des options search et domain devrait être utilisée.
Si vous utilisez DHCP, dhclient(8) réécrit habituellement resolv.conf avec l'information reçue du serveur DHCP.
/etc/hosts est une simple base de données texte, une réminiscence des débuts d'Internet. Il travaille en conjonction avec les serveurs DNS et NIS pour fournir les correspondances nom vers adresse IP. Les ordinateurs locaux reliés par l'intermédiaire d'un réseau local peuvent être ajoutés dans ce fichier pour une résolution de noms simple plutôt que de configurer un serveur named(8). De plus /etc/hosts peut être utilisé pour fournir un enregistrement local de correspondances de nom, réduisant ainsi le besoin de requêtes vers l'extérieur pour les noms auxquels on accède couramment.
# $FreeBSD$ # # Host Database # This file should contain the addresses and aliases # for local hosts that share this file. # In the presence of the domain name service or NIS, this file may # not be consulted at all; see /etc/nsswitch.conf for the resolution order. # # ::1 localhost localhost.my.domain myname.my.domain 127.0.0.1 localhost localhost.my.domain myname.my.domain # # Imaginary network. #10.0.0.2 myname.my.domain myname #10.0.0.3 myfriend.my.domain myfriend # # According to RFC 1918, you can use the following IP networks for # private nets which will never be connected to the Internet: # # 10.0.0.0 - 10.255.255.255 # 172.16.0.0 - 172.31.255.255 # 192.168.0.0 - 192.168.255.255 # # In case you want to be able to connect to the Internet, you need # real official assigned numbers. PLEASE PLEASE PLEASE do not try # to invent your own network numbers but instead get one from your # network provider (if any) or from the Internet Registry (ftp to # rs.internic.net, directory `/templates'). #
/etc/hosts suit le format simple suivant:
[Internet address] [official hostname] [alias1] [alias2] ...
Par exemple:
10.0.0.1 myRealHostname.example.com myRealHostname foobar1 foobar2
Consultez la page de manuel hosts(5) pour plus d'informations.
syslog.conf est le fichier de configuration du programme syslogd(8). Il indique quel type de messages syslog sera enregistré dans des fichiers de traces particuliers.
# $FreeBSD$ # # Spaces ARE valid field separators in this file. However, # other *nix-like systems still insist on using tabs as field # separators. If you are sharing this file between systems, you # may want to use only tabs as field separators here. # Consult the syslog.conf(5) manual page. *.err;kern.debug;auth.notice;mail.crit /dev/console *.notice;kern.debug;lpr.info;mail.crit;news.err /var/log/messages security.* /var/log/security mail.info /var/log/maillog lpr.info /var/log/lpd-errs cron.* /var/log/cron *.err root *.notice;news.err root *.alert root *.emerg * # uncomment this to log all writes to /dev/console to /var/log/console.log #console.info /var/log/console.log # uncomment this to enable logging of all log messages to /var/log/all.log #*.* /var/log/all.log # uncomment this to enable logging to a remote log host named loghost #*.* @loghost # uncomment these if you're running inn # news.crit /var/log/news/news.crit # news.err /var/log/news/news.err # news.notice /var/log/news/news.notice !startslip *.* /var/log/slip.log !ppp *.* /var/log/ppp.log
Consultez la page de manuel syslog.conf(5) pour plus d'informations.
newsyslog.conf est le fichier de configuration de newsyslog(8), un programme qui est normalement programmé cron(8) pour s'exécuter périodiquement. newsyslog(8) détermine quand les fichiers de traces doivent être archivés ou réorganisés. logfile devient logfile.0, logfile.0 devient à son tour logfile.1, et ainsi de suite. D'autre part, les fichiers de traces peuvent être archivés dans le format gzip(1), ils se nommeront alors: logfile.0.gz, logfile.1.gz, et ainsi de suite.
newsyslog.conf indique quels fichiers de traces doivent être gérés, combien doivent être conservés, et quand ils doivent être modifiés. Les fichiers de traces peuvent être réorganisés et/ou archivés quand ils ont soit atteint une certaine taille, soit à une certaine période/date.
# configuration file for newsyslog # $FreeBSD$ # # filename [owner:group] mode count size when [ZB] [/pid_file] [sig_num] /var/log/cron 600 3 100 * Z /var/log/amd.log 644 7 100 * Z /var/log/kerberos.log 644 7 100 * Z /var/log/lpd-errs 644 7 100 * Z /var/log/maillog 644 7 * @T00 Z /var/log/sendmail.st 644 10 * 168 B /var/log/messages 644 5 100 * Z /var/log/all.log 600 7 * @T00 Z /var/log/slip.log 600 3 100 * Z /var/log/ppp.log 600 3 100 * Z /var/log/security 600 10 100 * Z /var/log/wtmp 644 3 * @01T05 B /var/log/daily.log 640 7 * @T00 Z /var/log/weekly.log 640 5 1 $W6D0 Z /var/log/monthly.log 640 12 * $M1D0 Z /var/log/console.log 640 5 100 * Z
Consultez la page de manuel newsyslog(8) pour plus d'informations.
sysctl.conf ressemble à rc.conf. Les valeurs sont fixées sous la forme variable=value. Les valeurs spécifiées sont positionnées après que le système soit passé dans le mode multi-utilisateurs. Toutes les variables ne sont pas paramétrables dans ce mode.
Pour désactiver l'enregistrement des signaux fatals de fin de processus et empêcher les utilisateurs de voir les processus lancés par les autres, les variables suivantes peuvent être paramétrées dans sysctl.conf:
# Do not log fatal signal exits (e.g. sig 11) kern.logsigexit=0 # Prevent users from seeing information about processes that # are being run under another UID. security.bsd.see_other_uids=0
sysctl(8) est une interface qui vous permet d'effectuer des changements de paramétrage sur un système FreeBSD en fonctionnement. Cela comprend de nombreuses options avancées de la pile TCP/IP et du système de mémoire virtuelle qui peuvent améliorer dramatiquement les performances pour un administrateur système expérimenté. Plus de cinq cent variables système peuvent être lues et modifiées grâce à sysctl(8).
sysctl(8) remplit deux fonctions: lire et modifier les paramétrages du système.
Pour afficher toutes les variables lisibles:
% sysctl -a
Pour lire une variable particulière, par exemple, kern.maxproc:
% sysctl kern.maxproc kern.maxproc: 1044
Pour fixer une variable particulière, utilisez la syntaxe intuitive variable=valeur :
# sysctl kern.maxfiles=5000 kern.maxfiles: 2088 -> 5000
Les valeurs des variables sysctl sont généralement des chaînes de caractères, des nombres, ou des booléens (un variable booléenne étant 1 pour oui ou un 0 pour non).
Si vous voulez fixer automatiquement certaines variables à chaque démarrage de la machine, ajoutez-les au fichier /etc/sysctl.conf. Pour plus d'information consultez la page de manuel sysctl.conf(5) et la Section 11.10.4.
Dans certains cas, il peut être nécessaire de modifier des variables sysctl(8) en lecture seule. Bien que cela soit parfois inévitable, cela ne peut être fait qu'au (re)démarrage de la machine.
Par exemple sur certains modèles d'ordinateurs portables le périphérique cardbus(4) ne sondera pas le système à la recherche des zones mémoires, et échouera avec des erreurs du type:
cbb0: Could not map register memory device_probe_and_attach: cbb0 attach returned 12
Des cas comme le précédent demandent généralement la modification de paramètres sysctl(8) par défaut qui sont en lecture seule. Pour palier à ces situations un utilisateur peut placer un paramétrage (``OID''--Object IDentifier) sysctl(8) dans le fichier local /boot/loader.conf.local. Les paramétrages par défaut se trouvent dans le fichier /boot/defaults/loader.conf.
Pour corriger le problème précédent, il faudrait que
l'utilisateur ajoute la ligne hw.pci.allow_unsupported_io_range=1 dans le fichier
précédemment indiqué. Désormais le périphérique
cardbus(4) devrait
fonctionner normalement.
vfs.vmiodirenableLa variable sysctl vfs.vmiodirenable peut
être positionnée soit à 0 (désactivée) soit
à 1 (activée); elle est a 1 par défaut. Cette variable
spécifie comment les répertoires sont cachés par le
système. La plupart des répertoires sont petits, utilisant juste un
simple fragment du système de fichiers (typiquement 1KO) et moins dans
le cache en mémoire (typiquement 512 octets). Avec cette variable
désactivée (à 0), le cache en mémoire ne cachera qu'un
nombre fixe de répertoires même si vous disposez d'une grande
quantité de mémoire. Activée (à 1), cette variable sysctl
permet au cache en mémoire d'utiliser le cache des pages de
mémoire virtuelle pour cacher les répertoires, rendant toute la
mémoire disponible pour cacher les répertoires. Cependant, la taille
minimale de l'élément mémoire utilisé pour cacher
un répertoire est une page physique (typiquement 4KO) plutôt que 512
octets. Nous recommandons de conserver de cette option activée si vous
faites fonctionner des services qui manipulent un grand nombre de fichiers. De tels
services peuvent être des caches web, d'importants systèmes de
courrier électronique, et des systèmes serveurs de groupe de
discussion. Conserver cette option activée ne réduira
généralement pas les performances même avec la mémoire
gaspillée mais vous devriez faire des expériences pour le
déterminer.
vfs.write_behindLa variable sysctl vfs.write_behind est
positionnée par défaut à 1
(activée). Elle demande au système de fichiers d'effectuer les
écritures lorsque des grappes complètes de données ont
été collectées, ce qui se produit généralement
lors de l'écriture séquentielle de gros fichiers. L'idée est
d'éviter de saturer le cache tampon avec des tampons sales quand cela
n'améliorera pas les performances d'E/S. Cependant, cela peut bloquer les
processus et dans certaines conditions vous pouvez vouloir désactiver cette
fonction.
vfs.hirunningspaceLa variable sysctl vfs.hirunningspace
détermine combien d'opérations d'écriture peuvent être
mises en attente à tout moment au niveau des contrôleurs disques du
système. La valeur par défaut est normalement suffisante mais sur les
machines avec de nombreux disques, vous pouvez vouloir l'augmenter
jusqu'à quatre ou cinq méga-octets. Notez que fixer une valeur trop
élevée (dépassant la limite d'écriture du cache tampon)
peut donner lieu à de très mauvaises performances. Ne fixez pas cette
valeur à une valeur élevée arbitraire! Des valeurs
d'écriture élevées peuvent ajouter des temps de latence aux
opérations d'écriture survenant au même moment.
Il existent d'autres variables sysctl relatives aux caches tampons et aux pages VM. Nous ne recommandons pas de modifier ces valeurs, le système VM effectue un très bon travail d'auto-optimisation.
vm.swap_idle_enabledLa variable vm.swap_idle_enabled est utile dans le
cas de systèmes multi-utilisateurs importants où il y a beaucoup
d'utilisateurs s'attachant et quittant le système et de nombreux processus
inactifs. De tels systèmes tendent à générer une
pression assez importante et continue sur les réserves de mémoire
libres. Activer cette fonction et régler l'hystéresis de
libération de l'espace de pagination (en secondes d'inactivité) par
l'intermédiaire des variables vm.swap_idle_threshold1 et vm.swap_idle_threshold2, vous permet de diminuer la
priorité des pages mémoire associées avec les processus
inactifs plus rapidement qu'avec l'algorithme normal de libération. Cela
aide le “daemon” de libération des pages. N'activez cette
option que si vous en besoin, parce que la concession que vous faites est
d'utiliser l'espace de pagination pour les pages mémoire plus tôt
qu'à l'accoutumé, consommant par conséquent plus d'espace de
pagination et de bande passante disque. Sur un petit système, cette
option aura un effet limité mais dans le cas d'un système important
qui fait appel à l'espace de pagination de façon
modérée, cette option permettra au système VM de
transférer l'ensemble des processus de et vers la mémoire
aisément.
hw.ata.wcFreeBSD 4.3 a flirté avec la désactivation du cache en
écriture des disques IDE. Cela réduisit la bande passante en
écriture des disques IDE mais fut considéré comme
nécessaire en raison de sérieux problèmes de cohérence
de données introduits par les fabricants de disques durs. Le
problème est que les disques IDE mentent sur le moment où une
écriture est réellement terminée. Avec le cache en
écriture IDE activé, les disques durs IDE non seulement
n'écriront pas les données dans l'ordre, mais parfois retarderont
l'écriture de certains blocs indéfiniment sous une charge disque
importante. Un crash ou une coupure secteur pourra être à l'origine de
sérieuses corruptions du système de fichiers. Par
précaution le paramétrage par défaut de FreeBSD fut
modifié. Malheureusement, le résultat fut une telle perte de
performances que nous avons réactivé le cache en écriture
après cette version de FreeBSD. Vous devriez contrôler la valeur
par défaut sur votre système en examinant la variable sysctl
hw.ata.wc. Si le cache en écriture des disques
IDE est désactivé, vous pouvez le réactiver en positionnant la
variable à 1. Cela doit être fait à partir du chargeur au
démarrage. Tenter de le faire après le démarrage du noyau
n'aura aucun effet.
Pour plus d'informations, veuillez consulter la page de manuel ata(4).
kern.cam.scsi_delay)L'option de configuration du noyau SCSI_DELAY peut
être utilisée pour réduire le temps de démarrage du
système. Le délai par défaut est important et peut
être responsable de plus de 15 secondes d'attente
lors du processus de démarrage. Réduire ce délai à 5 secondes est généralement suffisant (tout
particulièrement avec les disques modernes). Les versions de FreeBSD
récentes (5.0 et suivantes) devraient utiliser l'option de démarrage
kern.cam.scsi_delay. Cette option de
démarrage et celle de configuration du noyau acceptent des valeurs en
millisecondes et non pas en secondes.
Le programme tunefs(8) peut être utilisé pour régler finement un système de fichiers. Ce programme dispose de nombreuses options différentes, mais pour l'instant nous nous intéresserons uniquement à l'activation et la désactivation des ``Soft Updates'', ce qui fait avec:
# tunefs -n enable /filesystem # tunefs -n disable /filesystem
Un système de fichiers ne peut être modifié avec tunefs(8) tant qu'il est monté. Un bon moment pour activer les ``Soft Updates'' est avant que les partitions ne soient montées en mode mono-utilisateur.
Les ``Soft Updates'' améliorent de façon drastique les performances sur les méta-données, principalement la création et la suppression de fichier, par l'utilisation d'un cache mémoire. Nous recommandons d'activer les ``Soft Updates'' sur tous vos systèmes de fichiers. Il y a deux inconvénients aux ``Soft Updates'' que vous devez connaître: tout d'abord, les ``Soft Updates'' garantissent la cohérence du système de fichiers en cas de crash mais pourront facilement être en retard de quelques secondes (voir même une minute!) dans la mise à jour du disque. Si votre système plante il se peut que vous perdiez plus de travail que dans d'autres cas. Deuxièmement, les ``Soft Updates'' retardent la libération des blocs du système de fichiers. Si vous avez un système de fichiers (comme le système de fichiers racine) qui est presque plein, effectuer une mise à jour majeure, comme un make installworld, peut mener à un manque d'espace sur le système de fichiers et faire échouer la mise à jour.
Il y a deux approches traditionnelles pour écrire les méta-données d'un système de fichiers sur le disque (mise à jour des méta-données et mise à jour des éléments sans données comme les inodes ou les répertoires).
Historiquement, le comportement par défaut était d'écrire les mises à jour des méta-données de façon synchrone. Si un répertoire a été modifié, le système attendait jusqu'à ce que le changement soit effectivement écrit sur le disque. Les tampons des données de fichier (contenu du fichier) passaient par le cache mémoire et étaient copiés sur le disque plus tard de façon asynchrone. L'avantage de cette implémentation est qu'elle est effectuée sans risque. S'il y a un problème durant une mise à jour, les méta-données sont toujours dans un état consistant. Un fichier est soit créé complètement soit pas du tout. Si les blocs de données d'un fichier n'ont pas trouvé leur chemin du cache mémoire vers le disque au moment du crash, fsck(8) est capable de s'en apercevoir et de réparer le système de fichiers en fixant la taille du fichier à 0. De plus, l'implémentation est claire et simple. L'inconvénient est que la modification des méta-données est lente. Un rm -r, par exemple, touche à tous les fichiers dans un répertoire séquentiellement, mais chaque modification du répertoire (effacement d'un fichier) sera écrite de façon synchrone sur le disque. Cela comprend les mises à jour du répertoire lui-même, de la table des inodes, et éventuellement celles sur des blocs indirects alloués par le fichier. Des considérations semblables s'appliquent à la création d'importantes hiérarchies ((tar -x).
Le deuxième cas est la mise à jour asynchrone des méta-données. C'est le comportement par défaut de Linux/ext2fs et de l'usage de mount -o async pour l'UFS des systèmes BSD. Toutes les mises à jour des méta-données passent également par l'intermédiaire d'un cache mémoire, c'est à dire, qu'elles seront mélangées aux mises à jour des données du contenu du fichier. L'avantage de cette implémentation est qu'il n'y a pas besoin d'attendre jusqu'à l'écriture sur le disque de chaque mise à jour de méta-données, donc toutes les opérations qui sont à l'origine d'une grande quantité de mise à jour de méta-données fonctionnent bien plus rapidement que dans le cas synchrone. De plus, l'implémentation est toujours claire et simple, il y a donc peu de risque qu'un bogue se cache dans le code. L'inconvénient est qu'il n'y a aucune garantie du tout sur la cohérence du système de fichiers. S'il y a un problème durant une opération qui met à jour une grande quantité de méta-données (comme une coupure secteur, ou quelqu'un appuyant sur le bouton reset), le système de fichiers sera laissé dans un état imprévisible. Il n'y a aucune opportunité d'examiner l'état du système de fichiers quand le système est à nouveau relancé; les blocs de données d'un fichier pourraient déjà avoir été inscrits sur le disque alors que la mise à jour de la table des inodes ou du répertoire associé n'a pas été faite. Il est en fait impossible d'implémenter un fsck qui est capable de nettoyer le chaos résultant (parce que l'information nécessaire n'est pas disponible sur le disque). Si le système de fichiers a été endommagé irrémédiablement, le seul choix est de le recréer avec newfs(8) et de récupérer les données à partir de sauvegardes.
La solution commune pour ce problème fut d'implémenter une région de trace, dont on fait souvent référence sous le terme de journalisation, bien que ce terme ne soit pas toujours utilisé de façon cohérente et est occasionnellement utilisé pour d'autres formes de transaction avec trace. Les mises à jour des méta-données sont toujours écrites de façon synchrone, mais seulement sur une petite région du disque. Elles seront plus tard déplacées vers leur emplacement correct. Parce que la région de trace est une petite région contiguë sur le disque, il n'y a pas de grandes distances de déplacement pour les têtes des disques, même durant les opérations importantes, donc ces opérations sont plus rapides que les mises à jour synchrones. De plus la complexité de l'implémentation est relativement limitée, donc le risque de présence de bogues est faible. Un inconvénient est que toutes les méta-données sont écrites deux fois (une fois dans la région de trace et une fois sur l'emplacement correct) donc pour un fonctionnement normal, une baisse des performances pourra en résulter. D'autre part, dans le cas d'un crash, toutes les opérations sur les méta-données en attente peuvent rapidement être annulées ou complétées à partir de la zone de trace après le redémarrage du système, ayant pour résultat un démarrage rapide du système de fichiers.
Kirk McKusick, le développeur du FFS de Berkeley, a résolu le problème avec les ``Soft Updates'': toutes les mises à jour des méta-données sont conservées en mémoire et inscrites sur le disque selon une séquence ordonnée (``mise à jour ordonnée des méta-données''). Ceci a pour effet, dans le cas d'un nombre d'opérations sur les méta-données important, que les dernières mises à jour sur un élément ``attrapent'' les premières si ces dernières sont encore en mémoire et n'ont pas encore été inscrites sur le disque. Donc toutes les opérations sur, par exemple, un répertoire sont généralement effectuées en mémoire avant que la mise à jour ne soit écrite sur le disque (les blocs de données sont ordonnés en fonction de leur position de sorte à ce qu'ils ne soient pas sur le disque avant leur méta-données). Si le système crash, cela provoque un ``retour dans les traces'' implicite: toutes les opérations qui n'ont pas trouvé leur chemin vers le disque apparaissent comme si elles n'avaient jamais existé. Un état cohérent du système de fichiers est maintenu et apparaît comme étant celui de 30 ou 60 secondes plus tôt. L'algorithme utilisé garantie que toutes les ressources utilisées soient marquées avec leur bons ``bitmaps'': blocs et inodes. Après un crash, les seules erreurs d'allocation de ressources qui apparaissent sont les ressources qui ont été marquées comme ``utilisées'' et qui sont en fait ''libre''. fsck(8) reconnaît cette situation, et libère les ressources qui ne sont plus utilisées. On peut ignorer sans risque l'état ``sale'' d'un système de fichiers après un crash en forçant son montage avec mount -f. Afin de libérer les ressources qui peuvent être inutilisées, fsck(8) doit être exécuté plus tard. C'est l'idée qu'il y a derrière le ``background fsck'' (fsck en tâche de fond): au démarrage du système, seule un ``snapshot'' (photographie) du système de fichiers est prise. La commande fsck peut être exécutée plus tard sur ce système de fichiers. Tous les systèmes de fichiers peuvent être montés ``sales'', donc le système passe en mode multi-utilisateurs. Ensuite, les fsck en tâche de fond seront programmés pour tous les systèmes de fichiers pour lesquels c'est nécessaire, pour libérer les ressources qui peuvent être inutilisées (les systèmes qui n'utilisent pas les `Soft Updates'' ont toujours besoin du fsck en avant plan).
L'avantage est que les opérations sur les méta-données sont presque aussi rapides que les mises à jour asynchrones (i.e. plus rapide qu'avec le ``logging'' - traçage, qui doit écrire les méta-données deux fois). Les inconvénients sont la complexité du code (impliquant un haut risque de bogues dans une zone qui est hautement sensible en raison de risque perte de données utilisateur), et une plus grande consommation en mémoire. De plus il y a quelques particularités que l'on peut rencontrer lors de l'utilisation. Après un crash, l'état du système apparaît être en quelque sorte ``plus vieux''. Dans des situations où l'approche synchrone classique aurait donné lieu à des fichiers de taille nulle restant après le fsck, ces fichiers n'existent pas du tout avec un système de fichiers utilisant les ``Soft Updates'' parce que ni les méta-données ni les contenus de fichiers n'ont jamais été inscrits sur le disque. L'espace disque n'est pas rendu tant que les mises à jour n'ont pas été inscrites sur le disque, ce qui peut se produire quelques temps après l'exécution de rm. Cela peut être à l'origine de problèmes quand on installe une grande quantité de données sur un système de fichiers qui ne dispose pas de suffisamment d'espace pour contenir tous les fichiers deux fois.
kern.maxfilesLe paramètre kern.maxfiles peut être
augmenté ou diminué en fonction des besoins du système. Cette
variable indique le nombre maximal de descripteurs de fichier sur votre
système. Quand la table de descripteurs de fichier est pleine, le message
“file: table is full” s'affichera
régulièrement dans le tampon des messages système, qui peut
être visualisé avec la commande dmesg.
Chaque fichier ouvert, chaque ``socket'', ou chaque emplacement en pile utilise un descripteur de fichier. Un serveur important peut facilement demander plusieurs milliers de descripteurs de fichiers, en fonction du type et du nombre de services s'exécutant en même temps.
Sous les anciennes versions de FreeBSD, la valeur par défaut de kern.maxfile est fixée par l'option maxusers dans votre fichier de configuration du noyau.
kern.maxfiles augmente proportionnellement avec la
valeur de maxusers. Quand vous compilez un noyau sur
mesure, il est bon de paramétrer cette option en fonction de l'utilisation
de votre système. Ce nombre fixe la plupart des limites
pré-définies du noyau. Même si une machine de production
pourra ne pas avoir en réalité 256 utilisateurs connectés
simultanément, les ressources requises pourront être semblables
pour un serveur web important.
Depuis FreeBSD 4.5, kern.maxusers est
automatiquement ajustée au démarrage en fonction de la
quantité de mémoire disponible dans le système, sa valeur peut
être connue durant le fonctionnement du système en examinant la
valeur de la variable sysctl en lecture seule: kern.maxusers. Certains systèmes auront besoin de
valeurs plus élevées ou plus faibles pour kern.maxusers et pourront donc la fixer au chargement du
système; des valeurs de 64, 128, ou 256 ne sont pas inhabituelles. Nous
recommandons de ne pas dépasser 256 à moins que vous ayez
besoin d'un grand nombre de descripteurs de fichiers; plusieurs des variables dont
la valeur par défaut dépend de kern.maxusers peuvent être fixées
individuellement au démarrage ou en fonctionnement dans le fichier /boot/loader.conf (voir la page de manuel loader.conf(5) ou le
fichier /boot/defaults/loader.conf pour des
exemples) ou comme décrit en d'autres endroits dans ce document. Les
systèmes antérieurs à FreeBSD 4.4 doivent passer par
l'option maxusers du fichier de configuration du
noyau pour fixer cette valeur.
Sous les anciennes versions, le système auto-ajuste ce paramètre pour vous si vous le fixez explicitement à 0[5]. En paramétrant cette option, vous devrez fixer maxusers à 4 au moins, en particulier si vous utilisez le système X Window ou compilez des logiciels. La raison de cela est que la valeur la plus importante que dimensionne maxusers est le nombre maximal de processus, qui est fixé à 20 + 16 * maxusers, donc si vous positionnez maxusers à 1, alors vous ne pouvez avoir que 36 processus en simultanés, comprenant les 18, environ, que le système lance au démarrage et les 15, à peu près, que vous créerez probablement au démarrage du système X Window. Même une tâche simple comme la lecture d'une page de manuel lancera jusqu'à neuf processus pour la filtrer, la décompresser, et l'afficher. Fixer maxusers à 64 autorisera jusqu'à 1044 processus simultanés, ce qui devrait suffire dans la plupart des cas. Si, toutefois, vous obtenez le message d'erreur tant redouté proc table full quand vous tentez d'exécuter un nouveau programme, ou gérez un serveur avec un grand nombre d'utilisateurs en simultanés (comme ftp.FreeBSD.org), vous pouvez toujours augmenter cette valeur et recompiler le noyau.
Note : maxusers ne limite pas le nombre d'utilisateurs qui pourront ouvrir une session sur votre machine. Cette valeur dimensionne simplement différentes tables à des valeurs raisonnables en fonction du nombre maximal d'utilisateur que vous aurez vraisemblablement sur votre système et combien de processus chacun d'entre eux pourra utiliser. Un mot-clé qui limite le nombre d'utilisateurs distants et de terminaux X en simultané est pseudo-device pty 16. Avec FreeBSD 5.X, vous n'avez pas à vous soucier de ce nombre puisque le pilote pty(4) est capable d'“auto-clonage”, vous devez donc utiliser la ligne device pty dans votre fichier de configuration.
kern.ipc.somaxconnLa variable sysctl kern.ipc.somaxconn limite la
taille de la file d'attente acceptant les nouvelles connexions TCP. La valeur par
défaut de 128 est généralement trop
faible pour une gestion robuste des nouvelles connexions dans un
environnement de serveur web très chargé. Pour de tels
environnements, il est recommandé d'augmenter cette valeur à
1024 ou plus. Le “daemon” en service peut de
lui-même limiter la taille de la file d'attente (e.g. sendmail(8), ou
Apache) mais disposera, la plupart du temps, d'une
directive dans son fichier de configuration pour ajuster la taille de la file
d'attente. Les files d'attentes de grandes tailles sont plus adaptées
pour éviter les attaques par déni de service (DoS).
L'literal du noyau NMBCLUSTERS fixe la quantité
de “Mbuf”;s disponibles pour le système. Un serveur à fort
trafic avec un nombre faible de “Mbuf”;s sous-emploiera les
capacités de FreeBSD. Chaque ``cluster'' représente approximativement
2 Ko de mémoire, donc une valeur de 1024 représente 2
mégaoctets de mémoire noyau réservée pour les
tampons réseau. Un simple calcul peut être fait pour déterminer
combien sont nécessaires. Si vous avez un serveur web qui culmine à
1000 connexions simultanées, et que chaque connexion consomme un tampon
de réception de 16Ko et un tampon d'émission de 16 Ko, vous avez
approximativement besoin de 32 Mo de tampon réseau pour couvrir les
besoin du serveur web. Un bon principe est de multiplier ce nombre par 2, soit
2x32 Mo / 2 Ko = 64 Mo / 2 Ko =32768. Nous recommandons des
valeurs comprises entre 4096 et 32768 pour les machines avec des quantités de
mémoire plus élevées. Vous ne devriez, dans aucun
circonstance, spécifier de valeur élevée arbitraire pour
ce paramètre étant donné que cela peut être à
l'origine d'un plantage au démarrage. L'option -m
de netstat(1) peut
être utilisée pour observer l'utilisation des
“clusters”.
La variable kern.ipc.nmbclusters configurable au
niveau du chargeur est utilisée pour ajuster cela au démarrage. Seules
les anciennes versions de FreeBSD vous demanderont d'utiliser l'option de
configuration du noyau NMBCLUSTERS.
Pour les serveurs chargés qui font une utilisation intensive de l'appel
système sendfile(2), il peut
être nécessaire d'augmenter le nombre de tampons sendfile(2) par
l'intermédiaire de l'option de configuration du noyau NSFBUFS ou en fixant sa valeur dans le fichier /boot/loader.conf (consultez la page de manuel loader(8) pour plus de
détails). Un indicateur de la nécessité d'ajuster ce
paramètre est lorsque des processus sont dans l'état sfbufa. La variable sysctl kern.ipc.nsfbufs est un aperçu en lecture seule de la
variable du noyau. Ce paramètre s'ajuste de façon optimale avec
kern.maxusers, il peut être cependant
nécessaire de l'ajuster en fonction des besoins.
Important : Même si une “socket” a été marquée comme étant non-bloquante, un appel de sendfile(2) sur la “socket” non-bloquante peut résulter en un blocage de l'appel sendfile(2) jusqu'à ce que suffisamment de struct sf_buf soient libérées.
net.inet.ip.portrange.*Les variables net.inet.ip.portrange.*
contrôlent les intervalles de ports automatiquement alloués aux
“socket”s TCP et UDP. Il y a trois intervalles: un intervalle bas, un
intervalle par défaut, et intervalle un haut. La plupart des
programmes réseau utilisent l'intervalle par défaut qui est
contrôlé par net.inet.ip.portrange.first
et net.inet.ip.portrange.last, qui ont pour
valeur par défaut respectivement 1024 et 5000. Ces intervalles de ports sont
utilisés pour les connexions sortantes, et il est possible de se trouver
à court de ports dans certaines conditions. Cela arrive le plus
souvent quand votre système fait tourner un proxy web très
chargé. L'intervalle de ports n'est pas un problème quand vous
exécutez des serveurs qui ne gèrent principalement que des connexions
entrantes, comme un server web classique, ou qui ont un nombre de connexions
sortantes limitées comme un relai de messagerie. Pour les cas
où vous risquez d'être à court de ports, il est
recommandé d'augmenter légèrement net.inet.ip.portrange.last. Une valeur de 10000, 20000 ou 30000 doit être suffisante. Vous devriez
également penser au problème du coupe-feu lors du changement de
l'intervalle des ports. Certains coupes-feu peuvent bloquer de grands intervalles
de ports (en général les ports inférieurs) et
s'attendent à ce que les systèmes utilisent les intervalles
supérieurs pour les connexions sortantes -- pour cette raison il n'est pas
conseillé de diminuer net.inet.ip.portrange.first.
La limitation du produit délai-bande passante TCP est semblable au
TCP/Vegas sous NetBSD. Elle peut être activée en positionnant à
1 la variable net.inet.tcp.inflight.enable. Le système tentera
alors de calculer le produit délai-bande passante pour chaque connexion et
limitera la quantité de données en attente à la
quantité juste nécessaire au maintient d'un flux de sortie
optimal.
Cette fonctionnalité est utile si vous diffusez des données par
l'intermédiaire de modems, de connexions Ethernet Gigabit, ou même de
liaisons hauts débits WAN (ou toute autre liaison avec un produit
délai-bande passante élevé), tout particulièrement si
vous utilisez également le dimensionnement des fenêtres
d'émission ou que vous avez configuré une fenêtre
d'émission importante. Si vous activez cette option, vous devriez
également vous assurer que net.inet.tcp.inflight.debug est positionnée à
0 (désactive le débogage), et pour une
utilisation en production, fixer net.inet.tcp.inflight.min à au moins 6144 peut être bénéfique. Notez,
cependant, que fixer des minima élevés peut désactiver la
limitation de bande passante selon la liaison. La fonction de limitation
diminue la quantité de données accumulées dans les files
d'attente intermédiaire de routage et de commutation, et diminue
également la quantité de données présentes dans les
files d'attente de l'interface de la machine locale. Avec moins de paquets
dans les files d'attente, les connexions interactives, tout particulièrement
sur des modems lents, seront en mesure de fonctionner avec des temps d'aller-retour plus faible.
Mais cette fonctionnalité n'affecte que la transmission de
données (transmission côté serveur). Ceci n'a aucun effet sur
la réception de données (téléchargement).
Modifier net.inet.tcp.inflight.stab n'est pas recommandé. Ce
paramètre est fixé par défaut à la valeur 20,
représentant au maximum 2 paquets ajoutés à la fenêtre
de calcul du produit délai-bande passante. La fenêtre
supplémentaire est nécessaire pour stabiliser l'algorithme et
améliorer la réponse aux changements de conditions, mais il peut en
résulter des temps de “ping” plus élevés sur
les liaisons lentes (mais cependant inférieurs à ce que vous
obtiendriez sans l'algorithme de limitation). Dans de tels cas, vous pouvez essayer
de réduire ce paramètre à 15, 10, ou 5, et vous pouvez
avoir à réduire le paramètre net.inet.tcp.inflight.min (par exemple à 3500) pour
obtenir l'effet désiré. Ces paramètres ne doivent être
réduits qu'en dernier ressort.
kern.maxvnodesUn vnode est la représentation interne d'un fichier ou d'un répertoire. Augmenter le nombre de vnodes disponibles pour le système d'exploitation diminue les accès disque. Cela est normalement géré par le système d'exploitation et n'a pas besoin d'être modifié. Dans certains cas où les accès aux disques sont un goulot d'étranglement pour le système et que ce dernier est à cours de vnodes, ce nombre aura besoin d'être augmenté. La quantité de RAM libre et inactive sera prise en compte.
Pour connaître le nombre de vnodes actuellement utilisés:
# sysctl vfs.numvnodes vfs.numvnodes: 91349
Pour connaître le maximum de vnodes utilisables:
# sysctl kern.maxvnodes kern.maxvnodes: 100000
Si l'utilisation actuelle des vnodes est proche du maximum, augmenter de 1000
kern.maxvnodes est probablement une bonne idée.
Gardez un oeil sur le nombre vfs.numvnodes. S'il
approche à nouveau le maximum, kern.maxvnodes devra être augmenté de
manière plus conséquente. Une modification dans votre utilisation de
la mémoire devrait être visible dans top(1). Une plus
grande quantité de mémoire devrait être annoncée comme
active.
Peu importe comment vous l'avez pensé, parfois un système ne fonctionne pas comme prévu. Si vous trouvez que vous avez besoin de plus d'espace de pagination, il est assez simple d'en rajouter. Vous avez trois manières d'augmenter votre espace de pagination: ajouter un nouveau disque dur, activer la pagination sur NFS, et créer un fichier de pagination sur une partition existante.
Pour des informations sur comment chiffrer l'espace de pagination, quelles options existent pour mener à bien cette tâche et pourquoi on devrait le faire, veuillez vous référer à la Section 18.17 du Manuel.
La meilleur façon d'ajouter de l'espace de pagination, bien sûr, est d'utiliser ceci comme excuse pour ajouter un autre disque dur. Vous pouvez toujours utiliser un autre disque après tout. Si vous pouvez faire cela, allez relire la discussion sur l'espace de pagination dans la Section 11.2 du Manuel pour des suggestions sur la meilleure façon d'arranger votre espace de pagination.
L'espace de pagination sur NFS n'est recommandé que si vous n'avez pas de disque dur local sur lequel avoir l'espace de pagination; la pagination sur NFS sera limitée par la bande passante du réseau et sera un fardeau supplémentaire pour le serveur NFS.
Vous pouvez créer un fichier d'une taille spécifique pour l'utiliser comme fichier de pagination. Dans notre exemple nous utiliserons un fichier de 64MO appelé /usr/swap0. Vous pouvez, bien sûr, utiliser le nom de votre choix.
Exemple 11-1. Créer un fichier de pagination sous FreeBSD
Assurez-vous que votre configuration de noyau inclut le pilote de disque mémoire (md(4)). Il se trouve par défaut dans le noyau GENERIC.
device md # Memory "disks"
Créez un fichier de pagination (/usr/swap0):
# dd if=/dev/zero of=/usr/swap0 bs=1024k count=64
Fixez les bonnes permissions sur /usr/swap0:
# chmod 0600 /usr/swap0
Activez le fichier de pagination dans /etc/rc.conf:
swapfile="/usr/swap0" # Set to name of swapfile if aux swapfile desired.
Redémarrez la machine ou activez directement le fichier de pagination:
# mdconfig -a -t vnode -f /usr/swap0 -u 0 && swapon /dev/md0
Il est important d'utiliser les ressources matérielles d'une manière efficace. Avant l'apparition de l'ACPI, il était difficile pour les systèmes d'exploitation de gérer l'utilisation de l'alimentation et la température d'un système. Le matériel était géré par le BIOS et donc l'utilisateur avait moins de contrôle et de visibilité sur le paramétrage de la gestion de l'énergie. Une configuration limitée était accessible via l'Advanced Power Management (APM). La gestion de l'énergie et des ressources est un des éléments clés d'un système d'exploitation moderne. Par exemple, vous pourrez vouloir qu'un système d'exploitation surveille certaines limites (et éventuellement vous alerte), au cas où la température de votre système augmente de façon inattendue.
Dans cette section, nous fournirons une information complète au sujet de l'ACPI. Il sera fait référence à des documents supplémentaires en fin de section pour plus de détails.
L'“interface de configuration et d'alimentation avancée” (ACPI, Advanced Configuration and Power Interface) est une norme créée par un ensemble de constructeurs pour fournir une interface standard à la gestion des ressources et de l'énergie. C'est un élément clé dans le contrôle et la configuration par le système d'exploitation de de la gestion d'énergie, i.e., il permet plus de contrôle et flexibilité au système d'exploitation. Les systèmes modernes ont ``repoussé'' les limites des interfaces ``Plug and Play'' antérieures à l'apparition de l'ACPI. L'ACPI est le descendant direct de l'APM (Advanced Power Management - gestion avancée de l'énergie).
Le système de gestion avancée de l'énergie (APM) gère l'utilisation de l'énergie par un système en fonction de son activité. Le BIOS APM est fourni par le fabricant (du système) et est spécifique à la plateforme matérielle. Un pilote APM au niveau du système d'exploitation gère l'accès à l'interface logicielle APM qui autorise la gestion des niveaux de consommation. L'APM devrait être toujours utilisé pour les systèmes fabriqués en ou avant 2000.
L'APM présente quatre problèmes majeurs. Tout d'abord la gestion de l'énergie est effectuée par le BIOS (spécifique au constructeur), et le système d'exploitation n'en a aucune connaissance. Un exemple de ce problème, est lorsque l'utilisateur fixe des valeurs pour le temps d'inactivité d'un disque dur dans le BIOS APM, qui une fois dépassé, provoque l'arrêt du disque (par le BIOS) sans le consentement du système d'exploitation. Deuxièmement, la logique de l'APM est interne au BIOS, et agit indépendamment du système d'exploitation. Cela signifie que les utilisateurs ne peuvent corriger les problèmes de leur BIOS APM qu'en flashant un nouveau BIOS; c'est une opération dangereuse, qui si elle échoue peut laisser le système dans un état irrécupérable. Troisièmement, l'APM est une technologie spécifique au constructeur, ce qui veut dire qu'il y a beaucoup de redondances (duplication des efforts) et de bogues qui peuvent être trouvées dans le BIOS d'un constructeur, et qui peuvent ne pas être corrigées dans d'autres BIOS. Et pour terminer, le dernier problème est le fait que le BIOS APM n'a pas suffisamment d'espace pour implémenter une politique sophistiquée de gestion de l'énergie, ou une politique qui peut s'adapter parfaitement aux besoins de la machine.
Le BIOS Plug and Play (PNPBIOS) n'était pas fiable dans de nombreuses situations. Le PNPBIOS est une technologie 16 bits, le système d'exploitation doit utiliser une émulation 16 bits afin de faire l'“interface” avec les méthodes PNPBIOS.
Le pilote APM FreeBSD est documenté dans la page de manuel apm(4).
Le pilote acpi.ko est par défaut chargé par le loader(8) au démarrage et ne devrait pas être compilé dans le noyau. La raison derrière cela est que les modules sont plus facile à manipuler, par exemple pour passer à une autre version du module acpi.ko sans avoir à recompiler le noyau. Cela présente l'avantage de rendre les tests aisés. Une autre raison est que lancer l'ACPI après qu'un système ait terminé son lancement donne souvent lieu à des dysfonctionnements. Si des problèmes surviennent, vous pouvez désactiver l'ACPI. Ce pilote ne devrait et ne peut être déchargé car le bus système l'utilise pour différentes intéraction avec le matériel. L'ACPI peut être déactivé en ajoutant hint.acpi.0.disabled="1" dans le fichier /boot/loader.conf ou directement à l'invite du chargeur (loader(8)).
Note : L'ACPI et l'APM ne peuvent coexister et devraient être utilisé séparément. Le dernier chargé s'arrêtera s'il détecte l'autre en fonctionnement.
L'ACPI peut être utilisé
pour mettre en veille un système avec
acpiconf(8), les
options -s et 1-5. La plupart
des utilisateurs n'auront besoin que de 1 ou 3 (système suspendu en RAM). L'option 5 provoquera un arrêt de l'alimentation par logiciel,
effet identique à un:
# halt -p
D'autres options sont disponibles via sysctl(8). Consultez les pages de manuel acpi(4) et acpiconf(8) pour plus d'informations.
L'ACPI est une nouvelle méthode de recherche des périphériques, de gestion de l'énergie, et fourni un accès standardisé à différents matériels gérés auparavant par le BIOS. Des progrès ont été fait vers un fonctionnement de l'ACPI sur tous les systèmes, mais des bogues dans le “bytecode” du langage machine ACPI (ACPI Machine Language--AML), des imperfections dans les sous-systèmes du noyau FreeBSD, et des bogues dans l'interpréteur ACPI-CA d'Intel continuent d'apparaître.
Ce document est destiné à vous permettre d'aider les développeurs du système ACPI sous FreeBSD à identifier la cause originelle des problèmes que vous observez et à déboguer et développer une solution. Merci de lire ce document et nous espérons pouvoir résoudre les problèmes de votre système.
Note : Avant de soumettre un problème, assurez-vous d'utiliser la dernière version de votre BIOS, et si elle est disponible, la dernière version du firmware du contrôleur utilisé.
Pour ceux désirant soumettre directement un problème, veuillez faire parvenir les informations suivantes à la liste freebsd-acpi@FreeBSD.org:
Description du comportement défectueux, en ajoutant le type et le modèle du système et tout ce qui peut causer l'apparition du bogue. Notez également le plus précisément possible quand le bogue a commencé à se manifester s'il est nouveau.
La sortie de dmesg(8) après un boot -v, y compris tout message généré lors de la manifestation du bogue.
La sortie de dmesg(8) après un boot -v avec l'ACPI désactivé, si cette désactivation corrige le problème.
La sortie de sysctl hw.acpi. C'est également un bon moyen de déterminer quelles fonctionnalités sont offertes par votre système.
Une URL où peut être trouvé votre code source ACPI (ACPI Source Language--ASL). N'envoyez pas directement l'ASL sur la liste de diffusion, ce fichier peut être très gros. Vous pouvez générer une copie de votre ASL en exécutant la commande suivante:
# acpidump -dt > name-system.asl
(Remplacez name par votre nom d'utilisateur et system par celui du constructeur/modèle. Par exemple: njl-FooCo6000.asl)
La plupart des développeurs lisent la liste liste de diffusion à propos de la branche FreeBSD-CURRENT mais soumettez également les problèmes rencontrés à la liste freebsd-acpi afin d'être sûr qu'ils seront vus. Soyez patient, nous avons tous un travail à plein temps qui nous attend ailleurs. Si votre bogue n'est pas immédiatement apparent, nous vous demanderons probablement de soumettre un PR par l'intermédiaire de send-pr(1). Quand vous remplirez un PR, veillez à inclure les mêmes informations que celles précisées précédemment. Cela nous aidera à cerner et à résoudre le problème. N'envoyez pas de PR sans avoir contacté auparavant la liste freebsd-acpi étant donné que nous utilisons les PRs comme pense-bêtes de problèmes existants, et non pas comme mécanisme de rapport. Il se peut que votre problème puisse avoir déjà été signalé par quelqu'un d'autre.
L'ACPI est présent sur tous les ordinateurs modernes compatibles avec l'une des architectures ia32 (x86), ia64 (Itanium), et amd64 (AMD). La norme complète définit des fonctionnalités comme la gestion des performances du CPU, des contrôles des niveaux d'énergie, des zones de températures, divers systèmes d'utilisation des batteries, des contrôleurs intégrés, et l'énumération du bus. La plupart des systèmes n'implémentent pas l'intégralité des fonctionnalités de la norme. Par exemple, un ordinateur de bureau n'implémentera généralement que la partie énumération de bus alors qu'un ordinateur portable aura également le support de la gestion du refroidissement et de la batterie. Les ordinateurs portables disposent également des modes de mise en veille et de réveil, avec toute la complexité qui en découle.
Un système compatible ACPI dispose de divers composants. Les fabricants de BIOS et de circuits fournissent des tables de description (FADT) fixes en mémoire qui définissent des choses comme la table APIC (utilisée par les systèmes SMP), les registres de configuration, et des valeurs de configuration simples. De plus, est fournie une table de “bytecode” (la table différenciée de description du système--Differentiated System Description Table DSDT) qui spécifie sous forme d'une arborescence l'espace des noms des périphériques et des méthodes.
Le pilote ACPI doit analyser les tables, implémenter un interpréteur pour le “bytecode”, et modifier les pilotes de périphériques et le noyau pour qu'ils acceptent des informations en provenance du sous-système ACPI. Pour FreeBSD, Intel fourni un interpréteur (ACPI-CA) qui est partagé avec Linux et NetBSD. L'emplacement du code source de l'interpréteur ACPI-CA est src/sys/contrib/dev/acpica. Le code “glu” permettant à ACPI-CA de fonctionner sous FreeBSD se trouve dans src/sys/dev/acpica/Osd. Et enfin, les pilotes qui gèrent les différents périphériques ACPI se trouvent dans src/sys/dev/acpica.
Pour un fonctionnement correct de l'ACPI, il faut que toutes les parties fonctionnent correctement. Voici quelques problèmes courants, par ordre de fréquence d'apparition, et quelques contournements ou corrections possibles.
Dans certains cas le réveil après une mise en veille sera à l'origine d'un dysfonctionnement de la souris. Une solution connue est d'ajouter la ligne hint.psm.0.flags="0x3000" au fichier /boot/loader.conf. Si cela ne fonctionne pas, pensez à envoyer un rapport de bogue comme décrit plus haut.
L'ACPI dispose de trois modes de mise en veille en RAM (STR--Suspend To RAM), S1 à S3, et un mode de mise en veille vers le disque dur (STD--Suspend To Disk), appelé S4. Le mode S5 est un arrêt “soft” et est le mode dans lequel se trouve votre système quand il est branché mais pas allumé. Le mode S4 peut être implémenté de deux manières différentes. Le mode S4BIOS est une mise en veille vers le disque assistée par le BIOS. Le mode S4OS est implémenté intégralement par le système d'exploitation.
Commencez par examiner la sortie de sysctl hw.acpi à la recherche d'éléments concernant les modes de mise en veille. Voici les résultats pour un Thinkpad:
hw.acpi.supported_sleep_state: S3 S4 S5 hw.acpi.s4bios: 0
Cela signifie que nous pouvons utiliser acpiconf -s
pour tester les modes S3, S4OS, et S5. Si s4bios était
égal à 1, nous disposerions d'un support
S4BIOS
à la place de S4OS.
Quand vous testez la mise en veille et le réveil, commencez avec le mode S1, pour voir s'il est supporté. Ce mode doit fonctionner dans la plupart des cas puisqu'il nécessite peu de support. Le mode S2 n'est pas implémenté, mais si vous en disposez, il est similaire au mode S1. La chose suivante à essayer est le mode S3. C'est le mode STR le plus avancé et il nécessite un support du pilote important pour réinitialiser correctement votre matériel. Si vous avez des problèmes au réveil de la machine, n'hésitez pas à contacter la liste freebsd-acpi mais ne vous attendez pas à ce que le problème soit résolu puisqu'il y a de nombreux pilotes/matériels qui nécessitent plus de tests et de développement.
Pour isoler le problème, retirez du noyau tous les pilotes de
périphériques possibles. Si cela fonctionne, vous pouvez alors
identifier le pilote fautif en chargeant les pilotes un à un jusqu'à
l'apparition du problème. Généralement les pilotes
binaires comme nvidia.ko, les pilotes d'affichage X11, ou
les pilotes USB seront victimes de la plupart des problèmes tandis que ceux
concernant les interfaces Ethernet fonctionneront normalement. Si vous pouvez
charger/décharger les pilotes de périphériques correctement,
vous pouvez automatiser cela en ajoutant les commandes appropriées
dans les fichiers /etc/rc.suspend et /etc/rc.resume. Il y a un exemple en commentaire pour
décharger ou charger un pilote. Essayez de fixer hw.acpi.reset_video à zéro (0) si votre affichage est corrompu après un
réveil de la machine. Essayez des valeurs plus grandes ou plus faibles pour
hw.acpi.sleep_delay pour voir si cela aide.
Une autre méthode est d'essayer de charger une distribution Linux récente avec le support ACPI et tester la mise en veille et le réveil sur le même matériel. Si cela fonctionne sous Linux, c'est probablement donc un problème de pilotes FreeBSD et déterminer quel pilote est responsable des dysfonctionnements nous aidera à corriger le problème. Notez que les personnes qui maintiennent l'ACPI sous FreeBSD ne s'occupe pas généralement des autres pilotes de périphériques (comme le son, le système ATA, etc.), aussi tout rapport concernant un problème de pilote devrait probablement en fin de compte être posté sur la liste freebsd-current et communiqué au responsable du pilote. Si vous vous sentez une âme d'aventurier, commencez à ajouter des printf(3)s de débogage dans un pilote problématique pour déterminer à quel moment dans sa fonction de réveil il se bloque.
Enfin, essayez de désactiver l'ACPI et d'activer l'APM à la place, pour voir si la mise en veille et le réveil fonctionnent avec l'APM, tout particulièrement dans le cas de matériel ancien (antérieur à 2000). Cela prend du temps aux constructeurs de mettre en place le support ACPI et le matériel ancien aura sûrement des problèmes de BIOS avec l'ACPI.
La plupart des blocages système sont le résultat d'une perte d'interruptions ou d'une tempête d'interruptions. Les circuits ont beaucoup de problèmes en fonction de la manière dont le BIOS configure les interruptions avant le démarrage, l'exactitude de la table APIC (MADT), et le routage du System Control Interrupt (SCI).
Les tempêtes d'interruptions peuvent être distinguées des pertes d'interruptions en contrôlant la sortie de la commande vmstat -i en examinant la ligne mentionnant acpi0. Si le compteur s'incrémente plusieurs fois par seconde, vous êtes victime d'une tempête d'interruptions. Si le système semble bloqué, essayez de basculer sous DDB (CTRL+ALT+ESC sous la console) et tapez show interrupts.
Votre plus grand espoir quand vous faites face à des problèmes d'interruptions est d'essayer de désactiver le support APIC avec la ligne hint.apic.0.disabled="1" dans le fichier loader.conf.
Les paniques sont relativement rares dans le cas de l'ACPI et sont au sommet des priorités en matière de problèmes à corriger. Le premier point est d'isoler les étapes nécessaires à la reproduction de la panique (si possible) et d'obtenir une trace de débogage. Suivez l'aide sur l'activation de options DDB et la configuration d'une console série (lire la Section 25.6.1.1) ou la configuration d'une partition dump(8). Vous pouvez obtenir une trace de débogage sous DDB avec la commande tr. Si vous devez recopier à la main la trace de débogage, assurez-vous de relever les cinq dernières lignes et les cinq premières ligne de la trace.
Ensuite essayez d'isoler le problème en démarrant avec l'ACPI désactivé. Si cela
fonctionne, vous pouvez isoler le sous-système ACPI en utilisant différentes valeurs pour l'option
debug.acpi.disable. Consultez la page de manuel acpi(4) pour des
exemples.
Tout d'abord, essayez de fixer hw.acpi.disable_on_poweroff="0" dans loader.conf(5). Cela empêche l'ACPI de désactiver divers événements lors du processus d'arrêt. Certains systèmes ont besoin d'avoir cette valeur fixée à 1 (valeur par défaut) pour la même raison. Cela corrige généralement le problème d'un système démarrant spontanément après une mise en veille ou un arrêt.
Si vous rencontrez d'autres problèmes avec l'ACPI (impossible de travailler avec une station d'amarrage, périphériques non détectés, etc.), veuillez envoyer un courrier descriptif à la liste de diffusion; cependant, certains de ces problèmes peuvent être relatifs à des partie incomplètes du sous-système ACPI et qui pourront prendre du temps à être implémentées. Soyez patient et prêt à tester les correctifs que nous pourront éventuellement vous envoyer.
Le problème le plus courant est le fait que les constructeurs fournissent des “bytecodes” erronés (ou plus simplement bogués!). Cela se manifeste généralement sur la console par des messages du noyau du type:
ACPI-1287: *** Error: Method execution failed [\\_SB_.PCI0.LPC0.FIGD._STA] \\ (Node 0xc3f6d160), AE_NOT_FOUND
La plupart du temps vous pouvez corriger ces problèmes en mettant à
jour votre BIOS avec la dernière
version disponible. La majorité des messages sur la console sont inoffensifs
mais si vous avez d'autres problèmes comme l'état de la batterie qui
ne fonctionne pas, ce sont de bonnes raisons pour commencer à jeter un
oeil à ces problèmes dans l'AML. Le “bytecode”, connu sous le nom d'AML, est compilé à partir d'un
langage source appelé ASL.
L'AML se trouve dans une table
appelée DSDT. Pour obtenir une
copie de votre ASL, utilisez acpidump(8). Vous
devriez utiliser de paire les options -t (qui affiche le
contenu des tables fixes) et -d (qui désassemble
l'AML en ASL). Consultez la section Soumettre
des informations de déboguage pour un exemple de syntaxe.
Le tout premier test que vous pouvez effectuer est de recompiler votre ASL à la recherche d'erreurs. Les avertissements peuvent être généralement ignorés mais les erreurs sont des bogues qui normalement empêchent l'ACPI de fonctionner correctement. Pour recompiler votre ASL, utilisez la commande suivante:
# iasl your.asl
A long terme, notre objectif est que tout le monde puisse avoir un système ACPI fonctionnant sans aucune intervention de l'utilisateur. Actuellement, nous sommes toujours en train de développer des solutions pour contourner les erreurs courantes faites par les fabricants de BIOS. L'interpréteur de Microsoft (acpi.sys et acpiec.sys) ne contrôle pas de façon stricte la conformité avec la norme, et par conséquent de nombreux fabricants de BIOS qui testent l'ACPI uniquement sous Windows ne corrigent donc jamais leur ASL. Nous espérons poursuivre à identifier et documenter avec exactitude les comportements non-standards autorisés par l'interpréteur de Microsoft et les reproduire de manière à permettre à FreeBSD de fonctionner sans obliger les utilisateurs à corriger leur ASL. Comme solution et pour nous aider à identifier ces comportements, vous pouvez corriger manuellement votre ASL. Si cela fonctionne pour vous, veuillez nous envoyer un diff(1) de l'ancien et du nouveau ASL de façon à ce que nous puissions corriger le comportement incorrect dans ACPI-CA et rendre donc inutile à l'avenir votre correctif.
Voici une liste des messages d'erreur courants, leur cause, et comment les corriger:
Certains AMLs supposent que le monde n'est fait de que différentes versions de Windows. Vous pouvez demander à FreeBSD de s'annoncer comme étant n'importe quel système d'exploitation pour voir si cela corrige les problèmes que vous pouvez rencontrer. Une manière simple de faire cela est de fixer la variable hw.acpi.osname="Windows 2001" dans /boot/loader.conf ou avec une autre chaîne de caractères que vous trouvez dans l'ASL.
Certaines méthodes ne renvoient pas explicitement une valeur comme la
norme le demande. Bien qu'ACPI-CA ne
gère pas cela, FreeBSD contourne ce problème en renvoyant
implicitement la valeur. Vous pouvez également ajouter des “Return
statements” explicites où cela est nécessaire si vous
connaissez la valeur à renvoyer. Pour forcer iasl
à compiler l'ASL, utilisez
l'option -f.
Après avoir personnalisé votre.asl, vous voudrez le compiler, pour cela exécutez:
# iasl your.asl
Vous pouvez ajouter l'option -f pour forcer la
création de l'AML, même
s'il y a des erreurs lors de la compilation. Rappelez-vous que certaines erreurs
(e.g., “missing Return statements”) sont
automatiquement contournées par l'interpréteur.
DSDT.aml est le fichier de sortie par défaut pour iasl. Vous pouvez le charger à la place de la version boguée de votre BIOS (qui est toujours présent dans la mémoire flash) en éditant le fichier /boot/loader.conf comme suit:
acpi_dsdt_load="YES" acpi_dsdt_name="/boot/DSDT.aml"
Assurez-vous de bien copier votre fichier DSDT.aml dans le répertoire /boot.
Le pilote ACPI dispose d'une fonction de débogage très flexible. Elle vous permet de spécifier un ensemble de sous-systèmes ainsi que le niveau de verbosité. Les sous-systèmes que vous désirez déboguer sont indiqués sous la forme de “couches” et sont divisés en composants ACPI-CA (ACPI_ALL_COMPONENTS) et en supports matériel ACPI (ACPI_ALL_DRIVERS). La verbosité de la sortie de débogage est spécifiée par un “niveau” et des intervalles de ACPI_LV_ERROR (rapporte juste les erreurs) à ACPI_LV_VERBOSE (tout). Le “niveau” est un masque de bits séparés par des espaces, aussi de nombreuses options peuvent être fixées à la fois. Dans la pratique, vous voudrez utiliser un console série pour afficher la sortie si les informations de débogage sont si importantes qu'elles dépassent le tampon des messages de la console. Une liste complète des couches individuelles et des niveaux peut être trouvée dans la page de manuel acpi(4).
L'affichage des informations de débogage n'est pas activé par défaut. Pour l'activer, ajoutez la ligne options ACPI_DEBUG à votre fichier de configuration du noyau si l'ACPI est compilé dans le noyau. Vous pouvez ajouter la ligne ACPI_DEBUG=1 à votre fichier /etc/make.conf pour l'activer de façon globale. Si l'ACPI est sous forme de module, vous pouvez recompiler votre module acpi.ko comme suit:
# cd /sys/modules/acpi/acpi && make clean && make ACPI_DEBUG=1
Installez acpi.ko dans le répertoire /boot/kernel et indiquez le niveau et la couche désirée dans loader.conf. L'exemple suivant active les messages de débogage pour tous les composants ACPI-CA et tous les pilotes de matériel ACPI (CPU, LID, etc.). Il n'affichera que les messages d'erreur, c'est le niveau le moins verbeux.
debug.acpi.layer="ACPI_ALL_COMPONENTS ACPI_ALL_DRIVERS" debug.acpi.level="ACPI_LV_ERROR"
Si l'information que vous voulez est déclenchée par un événement particulier (disons par exemple une mise en veille suivi d'un réveil), vous pouvez abandonner les modifications dans loader.conf et utiliser à la place sysctl pour indiquer la couche et le niveau après le démarrage et préparer votre système pour cet événement particulier. Les variables sysctl sont appelées de la même manière que dans le fichier loader.conf.
Plus d'information au sujet de l'ACPI peut être trouvé aux emplacements suivants:
La liste de diffusion liste de diffusion concernant ACPI sous FreeBSD
Les archives de la liste de diffusion ACPI http://lists.freebsd.org/pipermail/freebsd-acpi/
Les archives de l'ancienne liste de diffusion ACPI http://home.jp.FreeBSD.org/mail-list/acpi-jp/
La spécification ACPI 2.0 http://acpi.info/spec.htm
Les pages de manuel: acpi(4), acpi_thermal(4), acpidump(8), iasl(8), acpidb(8)
Ressource sur le débogage de la DSDT. (Utilise un exemple basé sur du matériel Compaq mais qui est en général intéressant.)
Version française de Marc Fonvieille
<blackend@FreeBSD.org>.
L'action de démarrer un ordinateur et de charger le système d'exploitation est désignée sous le nom de ``processus de bootstrap'', ou simplement démarrage. Le processus de démarrage de FreeBSD fournit une grande flexibilité en adaptant ce qui se passe quand vous démarrez le système, vous permettant de choisir parmi les différents systèmes d'exploitation installés sur l'ordinateur, ou même parmi les différentes versions du même système d'exploitation ou du noyau installées.
Ce chapitre détaille les options de configuration que vous pouvez paramétrer et comment personnaliser le processus de démarrage de FreeBSD. Cela inclut tout ce qui se produit jusqu'au démarrage du noyau FreeBSD, la détection des périphériques, et le démarrage d'init(8). Si vous n'êtes pas tout à fait sûr du moment auquel cela arrive, cela se produit à l'instant où la couleur du texte passe d'un blanc lumineux au gris.
Après la lecture de ce chapitre, vous connaîtrez:
Quels sont les composants du système de démarrage de FreeBSD, et comment ils agissent les uns sur les autres.
Les options que vous pouvez passer aux composants du système de démarrage de FreeBSD pour contrôler le processus.
Les bases du système device.hints(5).
x86 seulement : Ce chapitre ne décrit que le processus de démarrage de FreeBSD pour les systèmes Intel x86.
Allumer un ordinateur et démarrer le système d'exploitation pose un intéressant dilemme. Par définition, l'ordinateur ne sait rien faire jusqu'à ce que le système d'exploitation soit lancé. Ceci inclut l'exécution des programmes à partir du disque. Donc si l'ordinateur ne peut pas exécuter de programme à partir du disque sans le système d'exploitation, et que les programmes du système d'exploitation sont sur le disque, comment le système d'exploitation est-il démarré?
On peut faire le parallèle avec un événement du livre Les aventures du Baron Munchausen. Le personnage tombe dans une bouche d'égout avec une partie du corps hors de la bouche, et il s'en sort en attrapant les fixations de ses bottes (``bootstraps''), et en se soulevant ainsi. Dans les premiers jours de l'informatique le terme bootstrap fut appliqué au mécanisme utilisé pour charger le système d'exploitation, terme qui a été raccourci en ``booting'' (que l'on traduit par démarrage en Français).
Sur l'architecture x86 c'est le BIOS (``Basic Input/Output System'') qui est responsable du chargement du système d'exploitation. Pour effectuer cela, le BIOS recherche sur le disque dur le ``Master Boot Record'' - Secteur Principal de Démarrage (MBR), qui doit être placé à un endroit bien précis sur le disque. Le BIOS dispose de suffisamment de connaissances pour charger et exécuter le MBR, et suppose que le MBR peut alors effectuer le reste des tâches impliquées dans le chargement du système d'exploitation, probablement avec l'aide du BIOS.
Pour parler du code contenu dans le MBR, on fait souvent référence aux termes de gestionnaire de démarrage gestionnaire d'amorce, tout particulièrement quand il y a intéraction avec l'utilisateur. Dans ce cas le code de ce gestionnaire occupe un espace plus important sur la première piste du disque ou du système de fichier du système d'exploitation (le gestionnaire de démarrage est parfois également appelé gestionnaire de chargement ou chargeur, “boot loader”, sous FreeBSD ce terme est utilisé pour une étape ultérieur du démarrage). Parmi les gestionnaire de démarrage populaire, se trouvent boot0 (également connu sous le nom de Boot Easy, le gestionnaire de démarrage standard de FreeBSD), Grub, GAG, et LILO (seul boot0 peut tenir entièrement dans l'espace du MBR.).
Si vous n'avez qu'un seul système d'exploitation installé sur vos disques alors le MBR PC standard sera suffisant. Ce MBR recherche la première tranche (``slice'') amorçable (souvent appelée active) sur le disque, et puis exécute le code sur cette tranche pour charger le reste du système d'exploitation. Le MBR installé par fdisk(8) par défaut se comporte de cette manière. Il est basé sur /boot/mbr.
Si vous avez installé plusieurs systèmes d'exploitation sur vos disques alors vous pouvez installer un gestionnaire d'amorce différent, qui permet d'afficher une liste des différents systèmes d'exploitation, et vous permet de sélectionner celui à partir duquel démarrer. Ceci est abordé dans la sous-section suivante.
Le reste du système de démarrage de FreeBSD est divisé en trois étapes. La première étape est exécutée par le MBR, qui en sait juste assez pour mettre l'ordinateur dans un état spécifique et lancer la deuxième étape. La seconde étape peut en faire un peu plus, avant de lancer la troisième étape. La troisième étape termine la tâche de chargement du système d'exploitation. La tâche a été séparée en trois étapes parce que le standard PC impose des limites sur la taille des programmes qui peuvent être exécutés aux étapes une et deux. L'enchaînement des tâches permet à FreeBSD de fournir un chargeur plus flexible.
Le noyau est ensuite démarré et commence à sonder le système à la recherche de périphériques et les initialise. Une fois le processus de démarrage du noyau achevé, le noyau passe la main au processus init(8), qui alors vérifie que les disques sont utilisables. init(8) commence ensuite la configuration des ressources au niveau utilisateur, monte les systèmes de fichiers, initialise les cartes réseaux pour communiquer sur le réseau, et lance tous les processus qui sont habituellement exécutés au démarrage d'un système FreeBSD.
Le code contenu dans le MBR ou gestionnaire de démarrage ou d'amorce est parfois appelé étape zéro du processus de démarrage. Cette section discute de deux gestionnaires de démarrage précédemment mentionnés: boot0 et LILO.
Le gestionnaire d'amorce boot0: Le MBR installé par l'installateur FreeBSD ou par boot0cfg(8) est basé sur /boot/boot0. (boot0 est très simple, puisque le programme dans le MBR ne peut pas occuper plus de 446 octets en raison de la table de partition principale et l'identifiant 0x55AA à la fin du MBR). Si vous avez installé boot0 et plusieurs systèmes d'exploitation sur vos disques durs alors vous verrez un affichage semblable à celui-ci au démarrage:
D'autres systèmes d'exploitation, en particulier Windows, sont connus pour écraser le MBR existant avec le leur. Si cela vous arrive, ou que vous désirez remplacer le MBR existant avec le MBR de FreeBSD alors utilisez la commande suivante:
# fdisk -B -b /boot/boot0 device
où device est le périphérique à partir duquel vous démarrez, comme ad0 pour le premier disque IDE, ad2 pour le premier disque IDE sur le second contrôleur IDE, da0 pour le premier disque SCSI, et ainsi de suite. Ou, si vous voulez une configuration sur mesure du MBR, employez boot0cfg(8).
Le gestionnaire de démarrage LILO: Pour installer ce gestionnaire de manière à ce qu'il amorce également FreeBSD, démarrez tout d'abord Linux et ajoutez ce qui suit au fichier de configuration /etc/lilo.conf:
other=/dev/hdXY table=/dev/hdX loader=/boot/chain.b label=FreeBSD
Dans ce qui précède, précisez la partition primaire et le
disque FreeBSD en utilisant les paramètres propres à Linux, en
remplaçant X avec la lettre correspondant
au disque Linux et Y avec le numéro
de la partition primaire Linux. Si vous utilisez un disque SCSI, vous changerez /dev/hd
pour quelque chose de semblable à /dev/sd. La ligne loader=/boot/chain.b peut être omise si vous avez les
deux systèmes d'exploitation sur le même disque. Lancez maintenant la
commande /sbin/lilo -v pour entériner vos
modifications; des messages de contrôle devraient s'afficher, vérifiant
ces modifications.
Conceptuellement la première et la seconde étapes font partie du même programme, sur le même emplacement du disque. Mais en raison de contraintes d'espace elles ont été divisées en deux, mais vous les installerez toujours de paire. Elles sont copiées, à partir du fichier combiné /boot/boot, par l'installateur ou bsdlabel (voir plus bas).
On les trouve en dehors des systèmes de fichiers, sur la première piste de la tranche de démarrage, à partir du premier secteur. C'est l'endroit où boot0, ou tout autre gestionnaire de démarrage s'attend à trouver le code à exécuter pour continuer le processus de démarrage. Le nombre de secteurs utilisés est facilement déterminé à partir de la taille du fichier /boot/boot.
boot1 est très simple, puisqu'il est limité à 512 octets, et en sait juste assez du bsdlabel de FreeBSD, qui contient l'information sur la tranche, pour trouver et lancer boot2.
boot2 est légèrement plus sophistiqué, et en connaît assez sur le système de fichiers de FreeBSD pour y trouver des fichiers, et il peut également fournir une interface simple pour sélectionner un noyau ou un chargeur à exécuter.
Comme le chargeur est beaucoup plus sophistiqué, et dispose d'une interface de configuration du démarrage facile d'emploi, boot2 l'exécute habituellement, bien que précédemment, c'est lui qui lançait directement le noyau.
Si vous avez un jour besoin de remplacer boot1 et boot2, utilisez bsdlabel(8):
# bsdlabel -B diskslice
où diskslice est le disque et la tranche à partir de laquelle vous démarrez, comme ad0s1 pour la première tranche sur le premier disque IDE.
Mode dangereusement dédié : Si vous utilisez juste le nom du disque, comme ad0, dans la commande bsdlabel(8) vous créerez un disque dangereusement dédié, sans tranches. Ce n'est presque certainement pas ce que vous voulez faire, donc vérifiez à deux fois la commande bsdlabel(8) avant d'appuyer sur Entrée.
Le chargeur est la dernière étape du processus de démarrage en trois temps, et il réside sur le système de fichiers, c'est habituellement le fichier /boot/loader.
Le chargeur a pour objet de fournir une méthode de configuration conviviale, en utilisant un jeu de commandes faciles d'emploi, doublé d'un interpréteur plus puissant, avec un ensemble de commandes plus complexes.
A l'initialisation, le chargeur recherchera la console et les disques, et déterminera à partir de quel disque démarrer. Il positionnera les variables en conséquence, et un interpréteur sera lancé pour lequel l'utilisateur pourra passer des commandes par l'intermédiaire d'une procédure ou de façon interactive.
Le chargeur lira ensuite /boot/loader.rc, qui lui ira lire dans /boot/defaults/loader.conf les valeurs par défaut des variables à positionner et dans /boot/loader.conf les variantes locales de ces dernières. loader.rc se sert de ces variables pour charger les modules et le noyau sélectionnés.
Finalement, par défaut, le chargeur attend 10 secondes l'appui sur une ou plusieurs touches, et démarre le noyau s'il n'est pas interrompu. S'il est interrompu, une invite est alors affichée à l'utilisateur, un jeu de commandes simples permet à l'utilisateur de modifier des variables, charger ou décharger des modules, et enfin démarrer ou redémarrer.
Voici les commandes du chargeur les plus utilisées. Pour une information complète sur toutes les commandes disponibles, veuillez consulter la page loader(8).
Démarre le noyau si elle n'est pas interrompue dans le laps de temps donné en secondes. Elle affiche un compte à rebours, et le délai par défaut est de 10 secondes.
Démarre immédiatement le noyau dont le nom est indiqué, avec les options données, s'il y en a.
Passe par la même configuration automatique des modules basée sur des variables comme ce qui se produit au démarrage. Cela n'a de sens que si vous utilisez unload en premier, et modifiez certaines variables, généralement kernel.
Affiche les messages d'aide contenus dans /boot/loader.help. Si le sujet donné est index, alors c'est la liste de tous les sujets existants qui est donnée.
Traite le fichier dont le nom est donné. Le fichier est lu, et interprété ligne par ligne. Une erreur stoppe immédiatement le traitement.
-t type] nom_du_fichierCharge le noyau, le module, ou le fichier du type donné, dont le nom est passé en paramètre. Les arguments qui suivent le nom du fichier sont passés au fichier.
-l] [chemin_d_accès]Affiche la liste des fichiers du répertoire donné, ou du
répertoire racine, si le chemin d'accès n'est pas
précisé. Si l'option -l est
utilisée, les tailles des fichiers seront également
listées.
-v]Liste tous les périphériques depuis lesquels il sera possible de
charger des modules. Si l'option -v est
utilisée, plus de détails seront donnés.
-v]Affiche la liste des modules chargés. Si l'option -v est utilisée, plus de détails seront
donnés.
Affiche les fichiers indiqués, avec une pause toutes LINES lignes.
Redémarre immédiatement le système.
Positionne les variables d'environnement du chargeur.
Retire de la mémoire tous les modules chargés.
Voici quelques exemples pratiques d'utilisation du chargeur:
Pour simplement démarrer votre noyau habituel, mais en mode mono-utilisateur:
boot -s
Pour décharger votre noyau et modules habituels, puis charger votre ancien (ou un autre) noyau:
unload load kernel.old
Vous pouvez utiliser kernel.GENERIC pour faire référence au noyau générique du disque d'installation, ou kernel.old pour désigner votre noyau précédent (quand vous avez mis à jour ou configuré votre propre noyau, par exemple).
Note : Utilisez ce qui suit pour charger vos modules habituels avec un autre noyau:
unload set kernel="kernel.old" boot-conf
Pour charger une procédure de configuration du noyau (une procédure qui automatise ce que vous faites normalement avec l'outil de configuration du noyau au démarrage):
load -t userconfig_script /boot/kernel.conf
Une fois que le noyau est chargé, soit par le chargeur (habituellement) soit par boot2 (en court-circuitant le chargeur), il examine les options de démarrage s'il y en a, et adapte son comportement en conséquence.
Voici les options de démarrage les plus courantes:
-aA l'initialisation du noyau, demande quel est le périphérique où se trouve le système de fichiers racine.
-CDémarre depuis le CDROM.
-cExécute UserConfig, l'outil de configuration du noyau au démarrage.
-sDémarre en mode mono-utilisateur.
-vDonne plus de détails lors du lancement du noyau.
Note : Il existe d'autres options de démarrage, lisez la page de manuel boot(8) pour plus d'informations.
Note : C'est une caractéristique de FreeBSD 5.0 et des versions suivantes qui n'existe pas dans les versions précédentes.
Lors du démarrage du système, le chargeur (loader(8)) lira le fichier device.hints(5). Ce fichier stocke les informations de démarrage du noyau connues sous le nom de variables, et parfois appelées ``device hints''. Ces ``device hints'' sont utilisés par les pilotes de périphérique pour la configuration des périphériques.
Les ``device hints'' peuvent être spécifiés à l'invite du chargeur. Des variables peuvent être ajoutées en utilisant la commande set, retirées avec la commande unset, et affichées avec la commande show. Les variables positionnées dans le fichier /boot/device.hints peuvent être écrasées à cet endroit. Les ``device hints'' entrés au niveau du chargeur ne sont pas permanents et seront oubliés au prochain redémarrage.
Une fois le système démarré, la commande kenv(1) peut être utilisée pour afficher toutes les variables.
La syntaxe du fichier /boot/device.hints est d'une variable par ligne, en utilisant le caractère ``#'' comme signe de mise en commentaire. Les lignes sont présentées comme suit:
hint.pilote.unité.motclé="valeur"
La syntaxe à utiliser avec le chargeur est:
set hint.pilote.unité.motclé=valeur
où pilote est le pilote de périphérique, unité est le numéro de l'unité et motclé est le mot-clé correspondant à la variable. Le mot-clé pourra être une des options suivantes:
at: spécifie le bus auquel le périphérique est attaché.
port: spécifie l'adresse de départ de l'E/S à utiliser.
irq: spécifie le numéro de la requête d'interruption à utiliser.
drq: spécifie le numéro du canal DMA.
maddr: spécifie l'adresse mémoire physique occupée par le périphérique.
flags: fixe les bits des indicateurs pour le périphérique.
disabled: si positionnée à 1 le périphérique est désactivé.
Les pilotes de périphérique pourront accepter (ou nécessiter) plus de variables non listées ici, il est recommandé de lire leur page de manuel. Pour plus d'information, consultez les pages de manuel device.hints(5), kenv(1), loader.conf(5), et loader(8).
Une fois que le noyau a démarré, il passe le contrôle au processus utilisateur init(8), qui se trouve dans /sbin/init, ou au programme défini dans la variable d'environnement init_path du chargeur.
La séquence de redémarrage automatique vérifie que les systèmes de fichiers sont cohérents. S'ils ne le sont pas, et que fsck(8) ne peut pas corriger les incohérences, init(8) place le système dans le mode mono-utilisateur pour que l'administrateur système règle directement le problème.
Ce mode peut être atteint depuis la séquence
de redémarrage automatique, ou quand l'utilisateur démarre avec
l'option -s ou en positionnant la variable boot_single du chargeur.
On peut également y parvenir en appelant la commande shutdown(8) sans les
options de redémarrage (-r) ou d'arrêt
(-h), à partir du mode
multi-utilisateur.
Si la console système est positionnée dans le mode insecure dans le fichier /etc/ttys, alors le système demande le mot de passe de root avant de passer en mode mono-utilisateur.
Exemple 12-3. Une console non sécurisée dans /etc/ttys
# name getty type status comments # # If console is marked "insecure", then init will ask for the root password # when going to single-user mode. console none unknown off insecure
Note : Une console insecure (non sécurisée) signifie que vous considérez que la console n'est pas sécurisée, et vous désirez que seul quelqu'un connaissant le mot passe de root puisse utiliser le mode mono-utilisateur, et cela ne signifie pas que vous utilisez une console sans sécurité. Donc, si vous voulez de la sécurité, choisissez insecure, et non secure.
Si init(8) trouve vos systèmes de fichiers en état de marche, ou dès que l'utilisateur quitte le mode mono-utilisateur, le système entre dans le mode multi-utilisateur, dans lequel il commence la configuration de ses ressources.
Le système de configuration des ressources lit les valeurs par défaut dans /etc/defaults/rc.conf, et les valeurs propres à la machine dans /etc/rc.conf, puis ensuite monte les systèmes de fichiers mentionnés dans /etc/fstab, démarre les services réseau, divers autres ``démons'' système, et enfin exécute les procédures de démarrage des logiciels installés localement.
La page de manuel rc(8) est une bonne référence au sujet du système de configuration des ressources, de même que la lecture des procédures de démarrage elles-mêmes.
Lors de l'arrêt manuel du système, via shutdown(8), init(8) tentera d'exécuter la procédure /etc/rc.shutdown, et ensuite enverra à tous les processus le signal TERM, suivi du signal KILL à tous ceux qui ne se terminent pas à temps.
Pour éteindre une machine FreeBSD et cela sur des architectures ou des systèmes supportant la gestion par logiciel de l'énergie, utilisez simplement la commande shutdown -p now pour arrêter et couper l'alimentation de la machine. Pour juste redémarrer un système FreeBSD, utilisez shutdown -r now. Vous devez être super-utilisateur (root) ou un membre du groupe operator pour pouvoir exécuter shutdown(8). Les commandes halt(8) et reboot(8) peuvent également être utilisées, veuillez consulter leur page de manuel ainsi que celle de shutdown(8) pour plus d'informations.
Note : La gestion de l'énergie nécessite d'avoir le support acpi(4) dans son noyau ou chargé en tant que module.
Version française de Marc Fonvieille
<blackend@FreeBSD.org>.
FreeBSD permet à de nombreux utilisateurs d'utiliser l'ordinateur en même temps. Evidemment, seul un de ces utilisateurs peut être assis devant l'écran et le clavier à un instant donné [6], mais n'importe quel nombre d'utilisateurs peut ouvrir une session par l'intermédiaire du réseau pour mener à bien son travail. Pour utiliser le système chaque utilisateur doit posséder un compte.
Après la lecture de ce chapitre, vous connaîtrez:
Les différences entre les divers comptes utilisateur sur un système FreeBSD.
Comment ajouter des comptes utilisateur.
Comment supprimer des comptes utilisateur.
Comment modifier les paramètres d'un compte, comme le nom complet de l'utilisateur, ou l'interpréteur de commandes préféré.
Comment fixer des limites par compte, pour contrôler les ressources comme la mémoire et le temps CPU auxquels les comptes et les groupes de comptes sont autorisés à accéder.
Comment utiliser les groupes pour rendre la gestion de comptes plus aisée.
Avant de lire ce chapitre, vous devrez:
Comprendre les fondements d'UNIX et de FreeBSD (Chapitre 3).
Tout accès au système est effectué par l'intermédiaire de comptes, et tous les processus sont exécutés par des utilisateurs, la gestion des comptes et des utilisateurs est capitale sur les systèmes FreeBSD.
Chaque compte sur un système FreeBSD est associé avec un certain nombre d'informations utilisé pour identifier le compte.
Le nom d'utilisateur comme il sera tapé à l'invite login:. Les noms d'utilisateur doivent être uniques sur le système; vous ne pouvez pas avoir deux utilisateurs avec le même nom d'utilisateur. Il y a un certain nombre de règles pour la création de noms d'utilisateur valides, documentées dans passwd(5); vous utiliserez généralement des noms d'utilisateurs de huit lettres ou moins et en minuscules.
Chaque compte est associé à un mot de passe. Le mot de passe peut être vide, dans ce cas aucun mot de passe ne sera requis pour accéder au système. Ceci est une très mauvaise idée; chaque compte devrait avoir un mot de passe.
L'UID est un nombre compris entre 0 et 65535[7], utilisé pour identifier de façon unique un utilisateur sur le système. Au niveau interne, FreeBSD utilise l'UID pour identifier les utilisateurs--toute commande qui vous permet de spécifier un utilisateur convertira le nom d'utilisateur en son UID avant de le traiter. Cela signifie que vous pouvez avoir plusieurs comptes avec des noms d'utilisateurs différents mais le même UID. En ce qui concerne FreeBSD ces comptes ne sont qu'un seul et unique utilisateur. Il est peu probable que vous ayez jamais à faire cela.
Le GID est un nombre compris entre 0 et 65535[7], utilisé pour identifier de façon unique le groupe principal auquel appartient l'utilisateur. Les groupes sont un mécanisme pour contrôler l'accès aux ressources qui est basé sur le GID de l'utilisateur plutôt que sur son UID. Un utilisateur peut également appartenir à plus d'un groupe.
Les classes de session sont une extension du mécanisme de groupe qui apporte une flexibilité supplémentaire quand on adapte le système aux différents utilisateurs.
Par défaut FreeBSD n'oblige pas les utilisateurs à changer leur mot de passe régulièrement. Vous pouvez forcer cela en fonction de l'utilisateur, en obligeant certains ou tous les utilisateurs à changer leur mot de passe après qu'une certaine période de temps se soit écoulée.
Par défaut FreeBSD ne désactive pas de comptes après une certaine période. Si vous créez des comptes qui auront une durée de vie limitée, par exemple, dans une école où il existe des comptes pour les étudiants, alors vous pouvez spécifier la date d'expiration des comptes. Après la durée d'expiration écoulée le compte ne pourra plus être utilisé pour ouvrir de session sur le système, bien que les répertoires et les fichiers attachés au compte seront conservés.
Le nom d'utilisateur identifie uniquement le compte sur FreeBSD, mais ne reflète pas nécessairement le nom réel de l'utilisateur. Cette information peut être associée avec le compte.
Le répertoire utilisateur est le chemin complet vers un répertoire sur le système dans lequel se retrouve l'utilisateur quand il ouvre une session sur le système. Une convention commune est de mettre tous les répertoires d'utilisateurs sous /home/username ou /usr/home/username. L'utilisateur pourra stocker ses fichiers personnel dans son répertoire utilisateur et dans tout sous-répertoire qu'il pourra y créer.
L'interpréteur de commandes fournit aux utilisateurs l'environnement par défaut pour communiquer avec le système. Il existe plusieurs différents types d'interpréteurs de commandes, et les utilisateurs expérimentés auront leur préférence, qui peut se refléter dans le paramétrage de leur compte.
Il y a trois principales sortes de comptes: le super-utilisateur, les utilisateurs système, et les comptes utilisateur. Le compte super-utilisateur, normalement appelé root, est utilisé pour gérer le système sans aucune limitation de privilèges. Les utilisateurs système exécutent des services. Et enfin, les comptes utilisateur sont utilisés par de véritables utilisateurs, qui ouvrent des sessions, lisent leur courrier électronique, et ainsi de suite.
Le compte super-utilisateur, habituellement appelé root, est préconfiguré pour simplifier l'administration système, et ne devrait pas être utilisé pour des tâches quotidiennes comme l'envoi et la réception de courrier électronique, l'exploration du système, ou la programmation.
Cela parce que le super-utilisateur, à la différence des comptes utilisateurs ordinaires, peut agir sans aucune limite, et une mauvaise utilisation du compte super-utilisateur peut être à l'origine de résultats catastrophiques. On ne peut pas endommager par erreur le système avec un compte utilisateur, il est donc généralement préférable d'utiliser des comptes utilisateur ordinaires chaque fois que c'est possible, à moins d'avoir particulièrement besoin de droits supplémentaires.
Vous devriez toujours vérifier et revérifier les commandes que vous tapez en tant que super-utilisateur, parce qu'un espace en trop ou un caractère manquant peuvent signifier la perte définitive de données.
Donc, la première chose que vous devriez faire, après la lecture de ce chapitre, est de vous créer un compte utilisateur sans privilèges si vous n'en avez pas déjà. Cela s'applique aussi bien à une machine multi-utilisateurs qu'à une machine mono-utilisateur. Plus loin dans ce chapitre, nous expliquerons comment créer de nouveaux comptes, et comment passer d'un compte utilisateur ordinaire au compte du super-utilisateur.
Les utilisateurs système sont ceux utilisés pour exécuter des services comme le DNS, le courrier électronique, les serveurs web, et ainsi de suite. La raison de cela est la sécurité; si tous les services s'exécutaient avec les droits du super-utilisateur, ils pourraient agir sans aucune restriction.
Des exemples d'utilisateurs système sont daemon, operator, bind (pour le serveur de noms de domaine), news, et www.
nobody est l'utilisateur sans privilèges générique du système. Cependant, il est important de garder à l'esprit que plus grand est le nombre de services utilisant nobody, plus grand sera le nombre de fichiers et de processus associés à cet utilisateur, et par conséquent plus grand sera le nombre de privilèges de cet utilisateur.
Les comptes utilisateur sont le principal moyen pour les véritables utilisateurs d'accéder au système, ces comptes isolent l'utilisateur du reste de l'environnement, empêchant les utilisateurs d'endommager le système et ou les comptes d'autres utilisateurs, tout en leur permettant de personnaliser leur environnement sans incidence pour les autres utilisateurs.
Chaque personne accédant à votre système ne devrait posséder que son propre et unique compte. Cela vous permet de savoir qui fait quoi, empêche un utilisateur de désorganiser l'environnement d'un autre ou de lire du courrier électronique qui ne lui est pas destiné, et ainsi de suite.
Chaque utilisateur peut configurer son propre environnement en fonction de ses besoins, pour utiliser d'autres interpréteurs de commandes, éditeurs, raccourcis de clavier, et langues.
Il existe une variété de différentes commandes disponibles dans l'environnement UNIX pour manipuler les comptes utilisateur. Les commandes les plus communes sont récapitulées ci-dessous, suivis par des exemples détaillés de leur utilisation.
| Commande | Résumé |
|---|---|
| adduser(8) | L'application en ligne de commande recommandée pour ajouter de nouveaux utilisateurs. |
| rmuser(8) | L'application en ligne de commande recommandée pour supprimer des utilisateurs. |
| chpass(1) | Un outil flexible pour modifier les informations de la base de données utilisateur. |
| passwd(1) | L'outil simple en ligne de commande pour changer les mots de passe utilisateur. |
| pw(8) | Un puissant et flexible outil pour modifier tous les aspects des comptes utilisateurs. |
adduser(8) est un programme simple pour ajouter de nouveaux utilisateurs. Il crée les entrées dans les fichiers système passwd et group. Il crée également le répertoire utilisateur pour le nouvel utilisateur, y copie les fichiers de configuration par défaut (``dotfiles'') à partir de /usr/share/skel, et peut éventuellement envoyer à l'utilisateur un courrier électronique de bienvenue.
Exemple 13-1. Ajouter un utilisateur sous FreeBSD
# adduser Username: jru Full name: J. Random User Uid (Leave empty for default): Login group [jru]: Login group is jru. Invite jru into other groups? []: wheel Login class [default]: Shell (sh csh tcsh zsh nologin) [sh]: zsh Home directory [/home/jru]: Use password-based authentication? [yes]: Use an empty password? (yes/no) [no]: Use a random password? (yes/no) [no]: Enter password: Enter password again: Lock out the account after creation? [no]: Username : jru Password : **** Full Name : J. Random User Uid : 1001 Class : Groups : jru wheel Home : /home/jru Shell : /usr/local/bin/zsh Locked : no OK? (yes/no): yes adduser: INFO: Successfully added (jru) to the user database. Add another user? (yes/no): no Goodbye! #
Note : Le mot de passe que vous tapez n'apparaît pas à l'écran, et il n'y a pas non plus d'astérisques affichés. Assurez-vous de ne pas vous tromper dans le mot de passe.
Vous pouvez utiliser rmuser(8) pour supprimer complètement un utilisateur du système. rmuser(8) effectue les opérations suivantes:
Supprime les entrées appartenant à l'utilisateur de la crontab(1) (s'il y en a).
Supprime les tâches at(1) appartenant à l'utilisateur.
Tue tous les processus appartenant à l'utilisateur.
Supprime l'utilisateur du fichier de mots de passe local.
Supprime le répertoire l'utilisateur (s'il lui appartient).
Supprime les courriers électroniques en attente pour l'utilisateur dans /var/mail.
Supprime tous les fichiers temporaires appartenant à l'utilisateur des zones de stockages temporaires comme /tmp.
Et enfin, supprime l'utilisateur de tous les groupes auxquels il appartient dans /etc/group.
Note : Si un groupe est vide de ce fait et que le nom du groupe est le même que celui de l'utilisateur, le groupe est supprimé; c'est la réciproque de la création par adduser(8) d'un groupe propre pour chaque utilisateur.
rmuser(8) ne peut pas être employé pour supprimer des comptes super-utilisateur, car cela entraînerait presque toujours des destructions massives.
Par défaut, la commande travaille en mode interactif, pour garantir que vous soyez sûr de ce que vous faites.
Exemple 13-2. Suppression interactive de compte avec rmuser
# rmuser jru Matching password entry: jru:*:1001:1001::0:0:J. Random User:/home/jru:/usr/local/bin/zsh Is this the entry you wish to remove? y Remove user's home directory (/home/jru)? y Updating password file, updating databases, done. Updating group file: trusted (removing group jru -- personal group is empty) done. Removing user's incoming mail file /var/mail/jru: done. Removing files belonging to jru from /tmp: done. Removing files belonging to jru from /var/tmp: done. Removing files belonging to jru from /var/tmp/vi.recover: done. #
chpass(1) modifie les informations de la base de données des utilisateurs comme les mots de passe, les interpréteurs de commandes, et les informations personnelles.
Seuls les administrateurs système, comme le super-utilisateur, peuvent modifier les informations concernant les autres utilisateurs et les mots de passe à l'aide de chpass(1).
Utilisé sans options, en dehors du nom facultatif de l'utilisateur, chpass(1) ouvre un éditeur affichant les informations de l'utilisateur. Quand l'utilisateur quitte l'éditeur, la base de données utilisateur est mise à jour avec les nouvelles informations.
Note : On vous demandera votre mot de passe en quittant l'éditeur si vous n'êtes pas le super-utilisateur.
Exemple 13-3. chpass interactif par le super-utilisateur
#Changing user database information for jru. Login: jru Password: * Uid [#]: 1001 Gid [# or name]: 1001 Change [month day year]: Expire [month day year]: Class: Home directory: /home/jru Shell: /usr/local/bin/zsh Full Name: J. Random User Office Location: Office Phone: Home Phone: Other information:
Un utilisateur ordinaire ne peut modifier qu'une partie de ces informations, et seulement celles qui le concernent.
Exemple 13-4. chpass interactif par un utilisateur ordinaire
#Changing user database information for jru. Shell: /usr/local/bin/zsh Full Name: J. Random User Office Location: Office Phone: Home Phone: Other information:
Note : chfn(1) et chsh(1) sont juste des liens vers chpass(1), comme le sont ypchpass(1), ypchfn(1), et ypchsh(1). NIS est supporté automatiquement, aussi spécifier yp avant la commande n'est pas nécessaire. Si cela vous semble confus, ne vous inquiétez pas, NIS sera abordé dans le chapitre Chapitre 28.
passwd(1) est la méthode habituelle pour modifier son mot de passe, ou celui d'un autre utilisateur si vous êtes le super-utilisateur.
Note : Pour prévenir des modifications accidentelles ou non autorisées, le mot de passe original doit être entré avant de pouvoir fixer un nouveau mot de passe.
Exemple 13-5. Modifier votre mot de passe
% passwd Changing local password for jru. Old password: New password: Retype new password: passwd: updating the database... passwd: done
Exemple 13-6. Modifier le mot de passe d'un autre utilisateur en tant que super-utilisateur
# passwd jru Changing local password for jru. New password: Retype new password: passwd: updating the database... passwd: done
Note : Comme pour chpass(1), yppasswd(1) est juste un lien vers passwd(1), donc NIS fonctionnera avec l'une des deux commandes.
pw(8) est un utilitaire en ligne de commande pour créer, supprimer, modifier, et lister utilisateurs et groupes. Il fonctionne comme une interface aux fichiers d'utilisateurs et de groupe. pw(8) possède un ensemble puissant d'options qui le rende adapté à une utilisation dans des procédures, mais les nouveaux utilisateurs pourront le trouver plus compliqué que les autres commandes présentées ici.
Si vous avez plusieurs utilisateurs sur votre système, la possibilité de limiter leur utilisation du système peut venir à l'esprit. FreeBSD fournit plusieurs méthodes à l'administrateur système pour limiter la quantité de ressources système qu'un utilisateur peut utiliser. Ces limites sont généralement divisées en deux parties: les quotas disque, et les autres limites de ressource.
Les quotas limitent l'utilisation des disques par les utilisateurs, et ils fournissent un moyen de vérifier rapidement cette utilisation sans avoir à faire des calculs à chaque fois. Les quotas sont abordés dans la Section 18.15.
Les autres limites de ressource comprennent les moyens de limiter l'utilisation du CPU, de la mémoire, et les autres ressources qu'un utilisateur peut consommer. Elles sont définies en employant des classes de session et sont abordées ici.
Les classes de session sont définies dans /etc/login.conf. La sémantique précise sort du cadre de cette section, mais est décrite en détail dans la page de manuel login.conf(5). Il est suffisant de dire que chaque utilisateur est assigné à une classe (default par défaut), et que chaque classe dispose d'un ensemble de capacités associées. La forme utilisée pour ces capacités est une paire nom=valeur où nom est un identifiant connu et valeur est une chaîne arbitraire dépendante du nom. Paramétrer des classes et des capacités est plutôt direct et également décrit dans login.conf(5).
Note : Le système ne lit normalement pas directement le fichier /etc/login.conf, mais plutôt la base de données /etc/login.conf.db qui fournit plus rapidement les réponses au système. Pour générer /etc/login.conf.db à partir du fichier /etc/login.conf, exécutez la commande suivante:
# cap_mkdb /etc/login.conf
Les limites de ressource sont différentes des capacités standards des classes en deux points. Premièrement, pour chaque limite, il existe une limite douce (actuelle) et limite dure. Une limite douce peut être ajustée par l'utilisateur ou une application, mais jamais dépasser la limite dure. Cette dernière peut être abaissée par l'utilisateur, mais jamais augmentée. Deuxièmement, la plupart des limites de ressource s'applique par processus à un utilisateur spécifique, et non pas à l'utilisateur dans sa totalité. Notez, cependant, que ces différences sont exigées par la manipulation spécifique des limites, et non pas par l'implémentation du système des capacités des classes de session utilisateur (i.e., elles ne sont vraiment pas un cas particulier des capacités des classes de session).
Sans plus attendre, ci-dessous sont présentées les limites de ressource les plus souvent utilisées (le reste, avec les autres capacités des classes de session, peut être trouvé dans login.conf(5)).
La limite sur la taille du fichier core généré par un programme est, pour d'évidentes raisons, subordonnée aux autres limites sur l'utilisation du disque (e.g., filesize, ou les quotas de disque). Néanmoins, elle est souvent employée comme méthode moins sévère pour contrôler la consommation d'espace disque: puisque les utilisateurs ne génèrent pas de fichier core eux-mêmes, et souvent ne les suppriment pas, paramétrer cela peut leur éviter de manquer d'espace disque si un programme important (e.g., emacs) plante.
C'est la quantité maximale de temps CPU qu'un processus d'un utilisateur peut consommer. Les processus la dépassant seront tués par le noyau.
Note : C'est une limite sur le temps CPU consommé, non sur le pourcentage comme affiché par certains champs de top(1) et ps(1). Une limite sur ce dernier est, au moment de l'écriture de ces lignes, impossible, et serait plutôt inutile: un compilateur--probablement une tâche légitime--peut aisément utiliser presque 100% du CPU pendant un certain temps.
C'est la taille maximale du plus gros fichier qu'un utilisateur peut posséder. Contrairement aux quotas, cette limite ne s'applique qu'aux fichiers individuellement, et non pas sur l'ensemble lui-même de tous les fichiers que possède un utilisateur.
C'est le nombre maximal de processus que peut exécuter un utilisateur en
même temps. Ceci inclut les processus de premier plan et de tâche de
fond. Pour d'évidentes raisons, il ne doit pas être plus grand
que les limites du système spécifiées par la variable sysctl(8) kern.maxproc. Notez en outre qu'une valeur trop basse peut
gêner la productivité de l'utilisateur: il est souvent utile d'ouvrir
plusieurs sessions à la fois ou d'exécuter des opérations
sous forme de ``pipeline''. Certaines tâches, comme compiler un
gros programme, engendrent également de multiples processus (e.g., make(1), cc(1), et autres
préprocesseurs).
C'est la quantité maximale de mémoire qu'un processus peut avoir demandé de verrouiller en mémoire principale (e.g., voir mlock(2)). Certains programmes système critiques, comme amd(8), sont verrouillés en mémoire principale de sorte qu'en cas de dépassement de la mémoire de pagination, ils ne contribuent pas aux ennuis du système.
C'est la quantité maximale de mémoire qu'un processus peut consommer à un instant donné. Cela inclus la mémoire principale et celle de pagination. Ce n'est pas le remède miracle pour restreindre la consommation de mémoire, mais c'est un bon début.
C'est le nombre maximal de fichiers qu'un processus peut avoir ouvert. Sous
FreeBSD, des fichiers sont également employés pour représenter
les sockets et les canaux IPC, par conséquent faites attention
à ne fixer une valeur trop basse. La limite générale du
système pour cela est définie par la variable sysctl(8) kern.maxfiles.
C'est une limite sur la quantité de mémoire réseau, et donc de ``mbufs'', qu'un utilisateur peut consommer. Ceci est à l'origine une réponse à une vielle attaque par refus de service en créant de nombreuses sockets, mais peut être généralement employée pour limiter les communications réseau.
C'est la taille maximale de la pile d'un processus. Seule, cela n'est pas suffisant pour limiter la quantité de mémoire que peut utiliser un programme, par conséquent, cette limite devra être utilisée en même temps que d'autres limitations.
Il y a quelques éléments à se rappeler quand on fixe des limites de ressource. Quelques astuces générales, suggestions, et commentaires divers:
Les processus lancés au démarrage du système par /etc/rc sont assignés à la classe daemon.
Bien que le fichier /etc/login.conf qui est fourni avec le système est une bonne source de valeurs raisonnables pour la plupart des limites, seul vous, l'administrateur, peut savoir ce qui est approprié à votre système. Fixer une limite trop haute peut laisser la porte ouverte aux abus, alors qu'une limite trop basse peut être un frein à la productivité.
Les utilisateurs du système X Window (X11) devraient se voir allouer plus de ressources que les autres utilisateurs. X11 par lui-même utilise beaucoup de ressources, mais il encourage également les utilisateurs à exécuter plus de programmes simultanément.
Souvenez-vous que de nombreuses limites ne s'appliquent qu'aux processus
individuels, et non pas à l'utilisateur globalement. Par exemple,
paramétrer openfiles à 50 signifie
que chaque processus que l'utilisateur exécute pourra ouvrir jusqu'à
50 fichiers. Ainsi, la quantité totale de fichiers qu'un utilisateur peut
ouvrir est la valeur openfiles multipliée par la
valeur maxproc. Ceci s'applique également à
la consommation de mémoire.
Pour de plus amples informations sur les limites et les classes de session et les capacités en général, veuillez consulter les pages de manuel appropriées: cap_mkdb(1), getrlimit(2), login.conf(5).
Un groupe est simplement une liste d'utilisateurs. Les groupes sont identifiés par leur nom et leur GID (identificateur de groupe). Dans FreeBSD (et la plupart des systèmes UNIX), les deux éléments que le noyau utilise pour décider si un processus est autorisé à faire quelque chose sont son ID utilisateur et la liste des groupes auxquels il appartient. Différent d'un identificateur utilisateur, un processus est associé à une liste de groupes. Vous pourrez entendre faire références au ``group ID'' d'un utilisateur ou d'un processus; la plupart du temps on veut parler du premier groupe dans la liste.
La table d'équivalence nom de groupe et identificateur de groupe se trouve dans /etc/group. C'est un fichier texte avec quatre champs délimités par deux points. Le premier champ est le nom du groupe, le second est le mot de passe crypté, le troisième est l'ID du groupe, et le quatrième est une liste de membres séparés par des virgules. Ce fichier peut sans risque être édité à la main (en supposant, bien sûr, que vous ne faites pas d'erreur de syntaxe!). Pour une description complète de le syntaxe, voir la page de manuel group(5).
Si vous ne voulez pas éditer /etc/group à la main, vous pouvez utiliser la commande pw(8) pour ajouter et éditer des groupes. Par exemple, pour ajouter un groupe appelé teamtwo et ensuite vérifier qu'il existe bien vous pouvez utiliser:
Exemple 13-7. Ajouter un groupe en utilisant pw(8)
# pw groupadd teamtwo # pw groupshow teamtwo teamtwo:*:1100:
Le nombre 1100 ci-dessus est l'identificateur de groupe pour le groupe teamtwo. A cet instant teamtwo n'a aucun membre, et est par conséquent plutôt inutile. Changeons cela en ajoutant jru au groupe teamtwo.
Exemple 13-8. Ajouter quelqu'un dans un groupe en utilisant pw(8)
# pw groupmod teamtwo -M jru # pw groupshow teamtwo teamtwo:*:1100:jru
Le paramètre ajouté à l'option -M est
une liste, délimitée par des virgules, d'utilisateurs qui sont membres du
groupe. Des sections précédentes nous savons que le fichier des mots de
passe contient également un groupe pour chaque utilisateur. Le dernier
(utilisateur) est automatiquement ajouté à la liste des groupes par le
système; l'utilisateur n'apparaîtra pas comme étant membre quand on
utilise l'option groupshow avec pw(8), mais
apparaîtra quand l'information est demandée par l'intermédiaire de id(1) ou un outil
similaire. En d'autres termes, pw(8) manipule
uniquement le fichier /etc/group, il n'essaiera jamais de lire
des données supplémentaires à partir du fichier /etc/passwd.
Exemple 13-9. Utilisation de id(1) pour déterminer l'appartenance à un groupe
% id jru uid=1001(jru) gid=1001(jru) groups=1001(jru), 1100(teamtwo)
Comme vous pouvez le voir, jru est membre des groupes jru et teamtwo.
Pour plus d'information sur pw(8), voir sa page de manuel, et pour d'information sur le format de /etc/group, consultez la page de manuel group(5).
Version française de Marc Fonvieille
<blackend@FreeBSD.org>.
Ce chapitre sera une introduction aux concepts de base de la sécurité système, à certaines règles empiriques, et à des sujets avancés sous FreeBSD. De nombreux sujets abordés ici peuvent être appliqués à la sécurité système et à l'Internet en général. L'Internet n'est plus un endroit ``amical'' dans lequel chacun désire être votre gentil voisin. Sécuriser votre système est impératif pour protéger vos données, la propriété intellectuelle, votre temps, et bien plus des mains des ``hackers'' et équivalents.
FreeBSD fournit un ensemble d'utilitaires et de mécanismes pour assurer l'intégrité et la sécurité de votre système et votre réseau.
Après la lecture de ce chapitre, vous connaîtrez:
Les concepts de base de la sécurité système en ce qui concerne FreeBSD.
Les différents mécanismes de chiffrement disponibles sous FreeBSD, comme DES et MD5.
Comment mettre en place une authentification par mot de passe non réutilisable.
Comment configurer l'encapsuleur TCP pour une utilisation avec inetd.
Comment configurer KerberosIV sous les versions de FreeBSD antérieures à la 5.0.
Comment configurer Kerberos5 sous FreeBSD.
Comment configurer IPsec et mettre en place un VPN entre machines FreeBSD et Windows.
Comment configurer et utiliser OpenSSH, la version de SSH implémentée sous FreeBSD.
Ce que sont les ACLs et comment les utiliser.
Comment employer l'utilitaire Portaudit pour l'audit des logiciels tierce-partie installés à partir du catalogue des logiciels portés.
Comment utiliser les avis de sécurité de FreeBSD.
Ce qu'est la comptabilité des processus et comment l'activer sous FreeBSD.
Avant de lire ce chapitre, vous devrez:
Comprendre les concepts de base de FreeBSD et d'Internet.
D'autres sujets relatifs à la sécurité sont abordés par ailleurs dans ce Manuel. Par exemple, le contrôle d'accès obligatoire est présenté dans le Chapitre 16 et les coupe-feux Internet sont développés dans le Chapitre 29.
La sécurité est un domaine qui débute et se termine au niveau de l'administrateur système. Alors que tous les systèmes multi-utilisateurs UNIX BSD ont des sécurités inhérentes, la mise en place et la maintenance des mécanismes supplémentaires de sécurité pour conserver des utilisateurs “honnêtes” est probablement une des tâches les plus vastes de l'administrateur système. La sécurité des machines est celle que vous voulez bien mettre en oeuvre, de plus les préoccupations en matière de sécurité sont plus que jamais en concurrence avec les besoins de confort des utilisateurs. Les systèmes UNIX sont, en général, capables d'exécuter un nombre important de processus simultanément et plusieurs de ces processus fonctionnent en tant que serveur -- cela signifiant que des entités extérieures peuvent se connecter et échanger avec ces processus. Comme les mini-ordinateurs et les gros ordinateurs d'hier deviennent aujourd'hui nos ordinateurs de bureau, et comme les ordinateurs sont désormais en réseau et reliés à Internet, la sécurité devient d'autant plus un problème majeur.
La sécurité système concerne également la lutte contre les diverses formes d'attaque, y compris les attaques destinées à faire planter, ou à rendre inutilisable le système, mais qui ne cherchent pas à compromettre le compte root. Les problèmes de sécurité peuvent être divisés en plusieurs catégories:
Attaques par déni de service.
Compte utilisateur compromis.
Le compte root compromis par l'intermédiaire de serveurs accessibles.
Le compte root compromis par l'intermédiaire de comptes utilisateur.
Création d'une “Backdoor” (porte dérobée).
Une attaque par déni de service (“DoS”) est une action qui prive la machine de ressources nécessaires à son bon fonctionnement. Généralement, les attaques par déni de service sont des mécanismes de force brute qui tentent de faire planter ou tout au moins de rendre inutilisable la machine en saturant ses serveurs ou sa pile réseau. Certaines attaques par déni de service peuvent se servir de bogues présents dans la pile réseau pour faire planter une machine avec un seul paquet. Ces problèmes ne peuvent être corrigés que par l'application d'un correctif sur le noyau. On peut souvent remédier aux attaques sur les serveurs en fixant correctement des options pour limiter la charge que provoquent ces serveurs sur le système lors de conditions critiques. Les attaques réseau par force brute sont plus difficiles à traiter. Une attaque par paquets usurpés (“spoofed-packet”), par exemple, est quasi-impossible à arrêter, à moins de déconnecter de l'Internet votre système. Elle peut ne pas être en mesure de stopper votre machine, mais elle peut saturer votre connexion Internet.
La compromission d'un compte utilisateur est bien plus fréquente qu'une attaque de type DoS. De nombreux administrateurs utilisent toujours sur leurs machines les versions standards des serveurs telnetd, rlogind, rshd, et ftpd. Par défaut, ces serveurs ne fonctionnent pas avec des connexions chiffrées. Cela aura pour résultat si vous disposez d'un nombre d'utilisateurs conséquent qu'un ou plusieurs de ces utilisateurs ayant l'habitude de se connecter à partir d'une machine distante (ce qui représente la manière la plus courante et la plus pratique pour ouvrir une session sur un système) auront leur mot de passe “sniffé”. L'administrateur système méticuleux analysera ses journaux de connexions effectuées à partir de machines distantes à la recherche d'adresses sources suspectes même pour les ouvertures de sessions ayant réussies.
Il faut toujours supposer qu'une fois l'attaquant a l'accès à un compte utilisateur, il pourra s'attaquer et avoir accès au compte root. Cependant, la réalité est que dans un système bien sécurisé et surveillé, l'accès à un compte utilisateur ne donne pas nécessairement à l'attaquant l'accès au compte root. Cette distinction est importante car sans accès aux droits de root, l'attaquant ne peut généralement pas dissimuler ses traces et peut, dans le meilleur des cas, ne rien faire d'autre que mettre la pagaille dans les fichiers de l'utilisateur ou faire planter la machine. La compromission de comptes utilisateur est très fréquente parce que les utilisateurs n'ont pas l'habitude de prendre les précautions que prennent les administrateurs système.
Les administrateurs doivent garder à l'esprit qu'il existe potentiellement de nombreuses manières d'avoir accès au compte root sur une machine. L'attaquant peut connaître le mot de passe root, l'attaquant peut trouver un bogue dans un serveur tournant avec les droits de root et être en mesure de devenir root par l'intermédiaire d'une connexion réseau à ce serveur, ou l'attaquant peut connaître un bogue dans un programme suid-root qui permet de devenir root une fois qu'il a accédé à un compte utilisateur. Si un attaquant a trouvé un moyen de devenir root sur une machine, il n'aura peut-être pas besoin d'installer une “backdoor” (porte dérobée). De nombreux trous de sécurité root trouvés et fermés à temps demandent un travail considérable à l'attaquant pour effacer ses traces, aussi la plupart des attaquants installe des portes dérobées. Une porte dérobée offre à l'attaquant un moyen aisé d'avoir à nouveau accès aux droits de root sur le système, mais cela donne également à l'administrateur système intelligent un bon moyen de détecter l'intrusion. Rendre impossible à un attaquant l'installation d'une porte dérobée peut en fait être préjudiciable à votre sécurité, parce que cela ne fermera pas le trou qu'a découvert en premier lieu l'attaquant pour pénétrer sur le système.
Les solutions aux problèmes de sécurité devraient toujours être mises en place suivant l'approche multi-couches de “la pelure d'oignon”, elles peuvent être classées comme suit:
Sécuriser les comptes root et d'administration.
Sécuriser les serveurs exécutés avec les droits de root et les binaires suid/sgid.
Sécuriser les comptes utilisateurs.
Sécuriser le fichier des mots de passe.
Sécuriser le noyau, les périphériques et les systèmes de fichiers.
Installer un mécanisme de détection rapide des modifications inappropriées apportées au système.
La paranoïa.
La section suivante de ce chapitre abordera de manière plus approfondie les points énoncés ci-dessus.
Chaque utilisateur d'un système UNIX possède un mot de passe associé à son compte. Il semble évident que ces mots de passe ne doivent être connus que de l'utilisateur et du système d'exploitation. Afin de conserver ces mots de passe secrets, ils sont chiffrés avec ce que l'on appelle un ``hachage irréversible'', ce qui signifie que le mot de passe peut être aisément chiffré mais pas déchiffré. En d'autres mots, ce que nous vous disions précédemment n'est même pas vrai: le système d'exploitation lui-même ne connaît pas vraiment le mot de passe. Il ne connaît que la forme chiffrée du mot de passe. La seule manière d'obtenir le mot de passe en clair est d'effectuer une recherche par force brute de tous les mots de passe possibles.
Malheureusement, la seule méthode sécurisée pour chiffrer les mots de passe quand UNIX a vu le jour était basée sur DES, le ``Data Encryption Standard'' (standard de chiffrement des données). C'était un problème mineur pour les utilisateurs résidants aux Etats-Unis, mais puisque le code source de DES ne pouvait être exporté en dehors des Etats-Unis, FreeBSD dû trouver un moyen de respecter la législation américaine et de rester compatible avec les autres systèmes UNIX qui utilisaient encore DES.
La solution fut de séparer les bibliothèques de chiffrement de façon à ce que les utilisateurs américains puissent installer les bibliothèques DES et utiliser DES, mais que les utilisateurs internationaux disposent d'une méthode de chiffrement non restreinte à l'exportation. C'est comment FreeBSD est venu à utiliser MD5 comme méthode de chiffrement par défaut. MD5 est reconnu comme étant plus sure que DES, l'installation de DES est proposée principalement pour des raisons de compatibilité.
Avant FreeBSD 4.4 libcrypt.a était un lien symbolique pointant sur la bibliothèque utilisée pour le chiffrement. FreeBSD 4.4 modifia libcrypt.a pour fournir une bibliothèque de hachage pour l'authentification des mots de passe configurable. Actuellement la bibliothèque supporte les fonctions de hachage DES, MD5 et Blowfish. Par défaut FreeBSD utilise MD5 pour chiffrer les mots de passe.
Il est relativement facile d'identifier quelle méthode de chiffrement FreeBSD utilise. Examiner les mots de passe chiffrés dans le fichier /etc/master.passwd est une méthode. Les mots de passe MD5 sont plus longs que les mots de passe DES, et commencent par les caractères $1$. Les mots de passe débutant par $2$ sont chiffrés suivant la méthode Blowfish. Les mots de passe DES n'ont pas de caractéristique particulière, mais sont plus courts que les mots de passe MD5 et utilisent un alphabet de 64 caractères qui ne contient pas le caractère $, aussi une chaîne relativement courte qui ne commence pas par un dollar a donc de très fortes chances d'être un mot de passe DES.
Le format utilisé par les nouveaux mots de passe est contrôlé par la capacité de classe de session passwd_format dans /etc/login.conf, qui prend comme valeur des, md5 ou blf. Voir la page de manuel login.conf(5) pour plus d'information sur les capacités de classe de session.
S/Key est un système de mots de passe non réutilisables basé sur une fonction de hachage irréversible. FreeBSD utilise le hachage MD4 pour des raisons de compatibilité mais d'autres système utilisent MD5 et DES-MAC. S/Key fait partie du système de base de FreeBSD depuis la version 1.1.5 et est aussi utilisé sur un nombre toujours plus important d'autres systèmes d'exploitation. S/Key est une marque déposée de Bell Communications Research, Inc.
Depuis la version 5.0 de FreeBSD, S/Key a été remplacé par la fonction équivalente OPIE (``One-time Passwords In Everything'' -- Mots de passe non réutilisables dans toutes les applications). OPIE utilise le hachage MD5 par défaut.
Il existe trois types de mots de passe dont nous parlerons dans ce qui suit. Le premier est votre mot de passe UNIX habituel ou mot de passe Kerberos; nous appellerons ``mot de passe UNIX``. Le deuxième type est le mot de passe généré par les programmes S/Key key ou OPIE opiekey(1) et reconnu par les programmes keyinit ou opiepasswd(1) et l'invite de session; nous appellerons ceci un ``mot de passe non réutilisable''. Le dernier type de mot de passe est le mot de passe secret que vous donnez aux programmes key/opiekey (et parfois aux programmes keyinit/opiepasswd) qui l'utilisent pour générer des mots de passe non réutilisable; nous l'appellerons ``mot de passe secret'' ou tout simplement ``mot de passe''.
Le mot de passe secret n'a rien à voir avec votre mot de passe UNIX; ils peuvent être identique, mais c'est déconseillé. Les mots de passe secret S/Key et OPIE ne sont pas limités à 8 caractères comme les anciens mots de passe UNIX[8], ils peuvent avoir la longueur que vous désirez. Des mots de passe de six ou sept mots de long sont relativement communs. La plupart du temps, le système S/Key ou OPIE fonctionne de façon complètement indépendante du système de mot de passe UNIX.
En plus du mot de passe, deux autres types de données sont importantes pour S/Key et OPIE. L'une d'elles est connue sous le nom de ``germe'' (``seed'') ou ``clé'', formé de deux lettres et cinq chiffres. L'autre est ce que l'on appelle le ``compteur d'itérations'', un nombre compris entre 1 et 100. S/Key génère un mot de passe non réutilisable en concaténant le germe et le mot de passe secret, puis en appliquant la fonction de hachage MD4/MD5 autant de fois qu'indiqué par le compteur d'itérations, et en convertissant le résultat en six courts mots anglais. Ces six mots anglais constituent votre mot de passe non réutilisable. Le système d'authentification (principalement PAM) conserve une trace du dernier mot de passe non réutilisable utilisé, et l'utilisateur est authentifié si la valeur de hachage du mot de passe fourni par l'utilisateur est la même que celle du mot de passe précédent. Comme le hachage utilisé est irréversible, il est impossible de générer de mot de passe non réutilisable si on a surpris un de ceux qui a été utilisé avec succès; le compteur d'itérations est décrémenté après chaque ouverture de session réussie, de sorte que l'utilisateur et le programme d'ouverture de session restent en phase. Quand le compteur d'itération passe à 1, S/Key et OPIE doivent être réinitialisés.
Il y a trois programmes impliqués dans chacun des systèmes que nous aborderons plus bas. Les programmes key et opiekey ont pour paramètres un compteur d'itérations, un germe, et un mot de passe secret, et génère un mot de passe non réutilisable ou une liste de mots de passe non réutilisable. Les programmes keyinit et opiepasswd sont utilisés pour initialiser respectivement S/Key et OPIE, et pour modifier les mots de passe, les compteurs d'itérations, ou les germes; ils prennent pour paramètres soit un mot de passe secret, soit un compteur d'itérations, soit un germe, et un mot de passe non réutilisable. Le programme keyinfo ou opieinfo consulte le fichier d'identification correspondant (/etc/skeykeys ou /etc/opiekeys) et imprime la valeur du compteur d'itérations et le germe de l'utilisateur qui l'a invoqué.
Nous décrirons quatre sortes d'opérations. La première est l'utilisation du programme keyinit ou opiepasswd sur une connexion sécurisée pour initialiser les mots de passe non réutilisables pour la première fois, ou pour modifier votre mot de passe ou votre germe. La seconde opération est l'emploi des programmes keyinit ou opiepasswd sur une connexion non sécurisée, en conjonction avec key ou opiekey sur une connexion sécurisée, pour faire la même chose. La troisième est l'utilisation de key/opiekey pour ouvrir une session sur une connexion non sécurisée. La quatrième est l'emploi de key ou opiekey pour générer un certain nombre de clés qui peuvent être notées ou imprimées et emportées avec vous quand vous allez quelque part ou il n'y a aucune connexion sécurisée.
Pour initialiser S/Key pour la première fois, changer votre mot de passe, ou changer votre germe quand vous êtes attaché sous votre compte par l'intermédiaire d'une connexion sécurisée (e.g., sur la console d'une machine ou via ssh), utilisez la commande keyinit sans paramètres:
% keyinit Adding unfurl: Reminder - Only use this method if you are directly connected. If you are using telnet or rlogin exit with no password and use keyinit -s. Enter secret password: Again secret password: ID unfurl s/key is 99 to17757 DEFY CLUB PRO NASH LACE SOFT
Pour OPIE, opiepasswd est utilisé à la place:
% opiepasswd -c [grimreaper] ~ $ opiepasswd -f -c Adding unfurl: Only use this method from the console; NEVER from remote. If you are using telnet, xterm, or a dial-in, type ^C now or exit with no password. Then run opiepasswd without the -c parameter. Using MD5 to compute responses. Enter new secret pass phrase: Again new secret pass phrase: ID unfurl OTP key is 499 to4268 MOS MALL GOAT ARM AVID COED
A l'invite Enter new secret pass phrase: ou Enter secret password:, vous devez entrer un mot de passe ou une phrase. Rappelez-vous que ce n'est pas le mot de passe que vous utiliserez pour ouvrir une session, mais celui utilisé pour générer vos clés non réutilisables. La ligne commençant par ``ID'' liste les paramètres de votre instance: votre nom d'utilisateur, la valeur de votre compteur d'itérations et votre germe. Quand vous ouvrirez une session, le système aura mémorisé ces paramètres et vous les redonnera, vous n'avez donc pas besoin de les retenir. La dernière ligne donne le mot de passe non réutilisable correspondant à ces paramètres et à votre mot de passe secret; si vous devez vous reconnectez immédiatement, c'est ce mot de passe que vous utiliseriez.
Pour initialiser ou changer votre mot de passe secret par l'intermédiaire d'une connexion non sécurisée, il faudra avoir déjà une connexion sécurisée sur une machine où vous pouvez exécuter key ou opiekey; ce peut être depuis une icone sur le bureau d'un Macintosh ou depuis la ligne de commande d'une machine sûre. Il vous faudra également donner une valeur au compteur d'itération (100 est probablement une bonne valeur), et indiquer un germe ou utiliser la valeur aléatoire générée par le programme. Sur la connexion non sécurisée (vers la machine que vous initialisez), employez la commande keyinit -s:
% keyinit -s Updating unfurl: Old key: to17758 Reminder you need the 6 English words from the key command. Enter sequence count from 1 to 9999: 100 Enter new key [default to17759]: s/key 100 to 17759 s/key access password: s/key access password:CURE MIKE BANE HIM RACY GORE
Pour OPIE, vous devez utiliser opiepasswd:
% opiepasswd
Updating unfurl:
You need the response from an OTP generator.
Old secret pass phrase:
otp-md5 498 to4268 ext
Response: GAME GAG WELT OUT DOWN CHAT
New secret pass phrase:
otp-md5 499 to4269
Response: LINE PAP MILK NELL BUOY TROY
ID mark OTP key is 499 gr4269
LINE PAP MILK NELL BUOY TROY
Pour accepter le germe par défaut (que le programme keyinit appelle key, ce qui prête à confusion), appuyez sur Entrée. Ensuite avant d'entrer un mot de passe d'accès, passez sur votre connexion sécurisée et donnez lui les mêmes paramètres:
% key 100 to17759 Reminder - Do not use this program while logged in via telnet or rlogin. Enter secret password: <secret password> CURE MIKE BANE HIM RACY GORE
Ou pour OPIE:
% opiekey 498 to4268 Using the MD5 algorithm to compute response. Reminder: Don't use opiekey from telnet or dial-in sessions. Enter secret pass phrase: GAME GAG WELT OUT DOWN CHAT
Retournez maintenant sur votre connexion non sécurisée, et copiez le mot de passe non réutilisable généré par le programme adapté.
Une fois que vous avez initialisé S/Key ou OPIE, lorsque que vous ouvrez une session, une invite de ce type apparaîtra:
% telnet example.com Trying 10.0.0.1... Connected to example.com Escape character is '^]'. FreeBSD/i386 (example.com) (ttypa) login: <username> s/key 97 fw13894 Password:
Ou pour OPIE:
% telnet example.com Trying 10.0.0.1... Connected to example.com Escape character is '^]'. FreeBSD/i386 (example.com) (ttypa) login: <username> otp-md5 498 gr4269 ext Password:
Les invites S/Key et OPIE disposent d'une fonction utile (qui n'est pas illustrée ici): si vous appuyez sur la touche Entrée lorsque l'on vous demande votre mot de passe, le programme active l'écho au terminal, de sorte que vous voyez ce que vous êtes en train de taper. Ceci est très utile si vous essayez de taper un mot de passe à la main, à partir d'un résultat imprimé par exemple.
A ce moment vous devez générer votre mot de passe non réutilisable pour répondre à cette invite de session. Cela doit être effectué sur une machine de confiance sur laquelle vous pouvez exécuter key ou opiekey (il y a des versions de ces programmes pour DOS, Windows et MacOS). Ces programmes ont besoin du compteur d'itérations et du germe comme paramètres. Vous pouvez les copier-coller de l'invite de session de la machine sur laquelle vous voulez ouvrir une session.
Sur le système sûr:
% key 97 fw13894 Reminder - Do not use this program while logged in via telnet or rlogin. Enter secret password: WELD LIP ACTS ENDS ME HAAG
Pour OPIE:
% opiekey 498 to4268 Using the MD5 algorithm to compute response. Reminder: Don't use opiekey from telnet or dial-in sessions. Enter secret pass phrase: GAME GAG WELT OUT DOWN CHAT
Maintenant que vous disposez de votre mot de passe non réutilisable vous pouvez continuer et vous connecter:
login: <username> s/key 97 fw13894 Password: <return to enable echo> s/key 97 fw13894 Password [echo on]: WELD LIP ACTS ENDS ME HAAG Last login: Tue Mar 21 11:56:41 from 10.0.0.2 ...
Il faut parfois se rendre en des endroits où vous n'avez pas accès à une machine de confiance ou à une connexion sécurisée. Dans ce cas, vous pouvez utiliser la commande key ou opiekey pour générer plusieurs mots de passe non réutilisables que vous pouvez imprimer et transporter avec vous. Par exemple:
% key -n 5 30 zz99999 Reminder - Do not use this program while logged in via telnet or rlogin. Enter secret password: <secret password> 26: SODA RUDE LEA LIND BUDD SILT 27: JILT SPY DUTY GLOW COWL ROT 28: THEM OW COLA RUNT BONG SCOT 29: COT MASH BARR BRIM NAN FLAG 30: CAN KNEE CAST NAME FOLK BILK
Ou pour OPIE:
% opiekey -n 5 30 zz99999 Using the MD5 algorithm to compute response. Reminder: Don't use opiekey from telnet or dial-in sessions. Enter secret pass phrase: <secret password> 26: JOAN BORE FOSS DES NAY QUIT 27: LATE BIAS SLAY FOLK MUCH TRIG 28: SALT TIN ANTI LOON NEAL USE 29: RIO ODIN GO BYE FURY TIC 30: GREW JIVE SAN GIRD BOIL PHI
L'option -n 5 demande cinq clés en
séquence, l'option 30 indique quel doit
être le rang de la dernière itération. Notez que les
clés sont imprimées dans l'ordre inverse de celui où elles seront
éventuellement utilisées. Si vous êtes vraiment
paranoïaque, vous pouvez les recopier à la main, sinon vous pouvez les
copier-coller vers la commande lpr. Remarquez que chaque
ligne liste le compteur d'itération et le mot de passe non
réutilisable; vous trouverez peut-être utile de rayer les mots de
passe au fur et à mesure de leur utilisation.
S/Key peut placer des restrictions sur l'utilisation des mots de passe UNIX en fonction des noms de machine, d'utilisateur, de la ligne utilisée par le terminal ou de l'adresse IP de la machine connectée à distance. Ces restrictions peuvent être trouvées dans le fichier de configuration /etc/skey.access. La page de manuel skey.access(5) donne de plus amples informations sur le format de ce fichier et elle détaille également certains avertissements relatifs à la sécurité qu'il faut lire avant de se fier à ce fichier pour sa sécurité.
S'il n'y a pas de fichier /etc/skey.access (ce qui est le cas par défaut sur les systèmes FreeBSD 4.X), tous les utilisateurs pourront se servir de mots de passe UNIX. Si le fichier existe, alors tous les utilisateurs devront passer par S/Key, à moins qu'ils ne soient explicitement autorisés à ne pas le faire par des instructions du fichier /etc/skey.access. Dans tous les cas l'usage des mots de passe UNIX est autorisé sur la console.
Voici un exemple de configuration du fichier skey.access qui illustre les trois types d'instructions les plus courantes:
permit internet 192.168.0.0 255.255.0.0 permit user fnord permit port ttyd0
La première ligne (permit internet) autorise les utilisateurs dont l'adresse IP (ce qui rend vulnérable en cas d'usurpation) appartient au sous-réseau spécifié à employer les mots de passe UNIX. Cela ne doit pas être considéré comme une mesure de sécurité, mais plutôt comme un moyen de rappeler aux utilisateurs autorisés qu'ils sont sur un réseau non sécurisé et doivent utiliser S/Key pour s'authentifier.
La seconde ligne (permit user) autorise l'utilisateur désigné, dans notre cas fnord, à employer n'importe quand les mots de passe UNIX. En général, il faut se servir de cette possibilité si les personnes soit n'ont pas moyen d'utiliser le programme key, s'ils ont par exemple des terminaux passifs, soit s'ils sont définitivement réfractaires au système.
La troisième ligne (permit port) autorise tous les utilisateurs d'un terminal sur une liaison particulière à utiliser les mots de passe UNIX; cela devrait être employé pour les connexions téléphoniques.
OPIE peut restreindre l'usage des mots de passe UNIX sur la base de l'adresse IP lors de l'ouverture d'une session comme peut le faire S/Key. Le fichier impliqué est /etc/opieaccess, qui est présent par défaut sous FreeBSD 5.0 et versions suivantes. Veuillez consulter la page de manuel opieaccess(5) pour plus d'information sur ce fichier et certaines considérations sur la sécurité dont vous devez être au courant en l'utilisant.
Voici un exemple de fichier opieaccess:
permit 192.168.0.0 255.255.0.0
Cette ligne autorise les utilisateurs dont l'adresse IP (ce qui rend vulnérable en cas d'usurpation) appartient au sous-réseau spécifié à employer les mots de passe UNIX à tout moment.
Si aucune règle du fichier opieaccess ne correspond, le comportement par défaut est de refuser toute ouverture de session non-OPIE.
Toute personne familière avec inetd(8) a probablement entendu parlé à un moment ou à un autre de l'encapsuleur TCP (“TCP Wrappers”). Mais peu sont ceux qui semblent saisir complètement son intérêt dans un réseau. Il semble que tout le monde désire installer un coupe-feu pour contrôler les connexions réseaux. Alors qu'un coupe-feu peut avoir de nombreuses utilisations, il existe des choses qu'un coupe-feu ne peut gérer comme renvoyer un message à l'initiateur d'une connexion. L'encapsuleur TCP en est capable ainsi que bien d'autres choses. Dans les sections suivantes plusieurs fonctionnalités de l'encapsuleur TCP seront abordées, et, dès que ce sera possible, un exemple de configuration sera proposé.
L'encapsuleur TCP étend les capacités d'inetd au niveau du support pour chaque serveur sous son contrôle. En utilisant cette méthode il est possible d'offrir le support des ouvertures de session, de retourner des messages lors des connexions, de permettre à un “daemon” de n'accepter que les connexions internes, etc. Bien que certaines de ces fonctionnalités peuvent être obtenues par l'implémentation d'un coupe-feu, ce système ajoutera non seulement une couche supplémentaire de protection mais ira plus loin dans le contrôle que ce que peut fournir un coupe-feu.
Les fonctionnalités apportées par l'encapsuleur TCP ne peuvent se substituer à l'utilisation d'un bon coupe-feu. L'encapsuleur TCP peut être utilisé de paire avec un coupe-feu ou tout autre système de sécurité et il pourra alors servir comme une couche supplémentaire de protection pour le système.
Etant donné que ce programme est une extension à la configuration du programme inetd, le lecteur est supposé avoir pris connaissance de la section de configuration d'inetd.
Note : Bien que les programmes lancés par inetd(8) ne soient pas tout à fait des “daemons”, ils sont traditionnellement appelés “daemons”. C'est le terme que nous utiliserons également dans le reste de cette section.
Le seul pré-requis à l'utilisation de l'encapsuleur TCP sous FreeBSD est de s'assurer que le serveur
inetd est lancé à partir de rc.conf avec l'option -Ww; c'est
la configuration par défaut. Bien évidemment une configuration
correcte du fichier /etc/hosts.allow est
également sous-entendue, mais dans le cas contraire syslogd(8)
émettra des messages d'avertissement dans les journaux du système.
Note : Contrairement à d'autres implémentations de l'encapsuleur TCP, l'emploi du fichier hosts.deny est obsolète. Toutes les options de configuration doivent être placées dans le fichier /etc/hosts.allow.
Dans la configuration la plus simple, la politique de connexion aux “daemons” est soit de tout autoriser ou soit de tout bloquer en fonctions des options choisies dans /etc/hosts.allow. La configuration par défaut sous FreeBSD est d'autoriser les connexions à chaque “daemon” lancé à l'aide d'inetd. La modification de ce réglage par défaut sera discutée une fois que la configuration de base aura été vue.
Une configuration de base prend en général la forme daemon : adresse : action. Où daemon est le nom du “daemon” lancé par inetd. L'adresse peut être un nom de machine valide, une adresse IP ou une adresse IPv6 entre crochets ([ ]). Le champ action pourra avoir comme valeur allow ou deny pour autoriser ou interdire l'accès. Gardez à l'esprit que ce type de configuration fonctionne de manière à honorer la première règle sémantique correspondante, cela signifie que le fichier de configuration est parcouru à la recherche d'une règle correspondant à la requête. Quand une correspondance est trouvée, la règle est appliquée et la recherche s'arrête.
Plusieurs autres options existent mais elles seront exposées dans une section ultérieure. Une simple ligne de configuration peut être construite avec peu d'information. Par exemple, pour autoriser les connexions POP3 via le “daemon” mail/qpopper, les lignes suivantes doivent être ajoutées au fichier hosts.allow:
# This line is required for POP3 connections: qpopper : ALL : allow
Après l'ajout de cette ligne, inetd devra
être redémarré. Cela sera fait en utilisant la commande kill(1), ou avec le
passage du paramètre restart à la
commande /etc/rc.d/inetd.
L'encapsuleur TCP dispose également d'options avancées; elles permettrons plus de contrôle sur la manière dont sont gérées les connexions. Dans certains cas cela peut être une bonne idée de renvoyer un commentaire à certaines machines ou lors de connexions à certains “daemon”s. Dans d'autres cas, peut-être qu'un fichier journal pourrait être enregistré ou un courrier électronique pourrait être envoyé à l'administrateur. D'autres situations peuvent nécessiter l'utilisation d'un service uniquement pour les connexions locales. Tout cela est possible à l'aide des options de configuration connues sous le nom de jokers, caractères d'expansion et d'exécution de commandes externes. Les deux sections suivantes abordent ces situations.
Imaginez une situation dans laquelle une connexion doit être
refusée et que la raison de ce refus doit être envoyée à
la personne qui a tenté d'établir cette connexion. Comment cela
peut-il être mis en place? Ce type d'action est rendu possible par l'emploi
de l'option twist. Quand une tentative de connexion est
faite, twist sera appelée pour
exécuter une commande ou une procédure d'interpréteur de
commande. Un exemple est déjà présent dans le fichier
hosts.allow:
# The rest of the daemons are protected.
ALL : ALL \
: severity auth.info \
: twist /bin/echo "You are not welcome to use %d from %h."
Cet exemple montre que le message “You are not allowed to use daemon from hostname.” sera retourné pour tout “daemon” qui n'a pas été précédemment configuré dans le fichier d'accès. Cette fonction est très utile pour envoyer une réponse à l'initiateur de la connexion juste après le refus de la connexion. Notez que tout message à retourner doit être placé entre des guillemets "; il n'y a pas d'exception possible à cette règle.
Avertissement : Il est possible de lancer une attaque par déni de service sur le serveur si un agresseur, ou un groupe d'agresseurs sont en mesure de submerger ces “daemon”s avec des demandes de connexion.
Une autre possibilité dans ce cas est d'employer l'option spawn. Tout comme l'option twist,
spawn interdit implicitement les connexions et peut
être utilisée pour lancer une commande ou une procédure
externe. Contrairement à twist, spawn n'enverra pas de réponse à la personne
qui a établi la connexion. Examinons par exemple la ligne de
configuration suivante:
# We do not allow connections from example.com: ALL : .example.com \ : spawn (/bin/echo %a from %h attempted to access %d >> \ /var/log/connections.log) \ : deny
Cela interdira toute tentative de connexion à partir du domaine *.example.com, enregistrant simultanément dans le fichier /var/log/connections.log le nom de machine, l'adresse IP et le “daemon” auquel on tente d'accéder.
Il existe d'autres caractères de substitution en dehors de ceux déjà présentés, par exemple %a. Consultez la page de manuel hosts_access(5) pour une liste complète.
Jusqu'ici l'option ALL a été utilisée dans tous les exemples. Il existe d'autres options pour étendre un peu plus les fonctionnalités. Par exemple, l'option ALL peut être utilisée pour prendre en compte chaque instance d'un “daemon”, d'un domaine ou d'une adresse IP. Un autre joker disponible est l'option PARANOID qui peut être employée pour prendre en compte toute machine qui fournirait une adresse IP susceptible d'être falsifiée. En d'autres termes, l'option PARANOID peut être utilisée pour définir l'action a effectuer dès qu'une connexion se fait à partir d'une adresse IP qui diffère de celle attachée à une machine. L'exemple suivant apporte un éclairage sur cette option:
# Block possibly spoofed requests to sendmail: sendmail : PARANOID : deny
Dans cet exemple, toutes les requêtes de connexion à sendmail à partir d'adresses IP différentes de celle correspondant au nom de la machine seront refusées.
AttentionUtiliser l'option PARANOID peut gravement paralyser les serveurs si le client ou le serveur a une configuration de DNS défectueuse. Les administrateurs sont maintenant prévenus.
Pour en apprendre plus sur les jokers et leurs fonctionnalités associées, consultez la page de manuel hosts_access(5).
Avant que n'importe quelle des lignes de configuration données ci-dessus ne fonctionne, la première ligne de configuration du fichier hosts.allow devra être dé-commentée. Cela a été noté en début de section.
Kerberos est un protocole réseau supplémentaire qui permet aux utilisateurs de s'authentifier par l'intermédiaire d'un serveur sécurisé. Des services comme l'ouverture de session et la copie à distance, la copie sécurisée de fichiers entre systèmes et autres fonctionnalités à haut risque deviennent ainsi considérablement plus sûrs et contrôlables.
Les instructions qui suivent peuvent être utilisées comme guide d'installation de Kerberos dans la version distribuée pour FreeBSD. Vous devriez cependant vous référer aux pages de manuel correspondantes pour avoir une description complète.
Kerberos est un composant optionnel de FreeBSD. La manière la plus simple d'installer ce logiciel est de sélectionner la distribution krb4 ou krb5 dans sysinstall lors de l'installation de FreeBSD. Cela installera les implémentations ``eBones'' (KerberosIV) ou ``Heimdal'' (Kerberos5) de Kerberos. Ces implémentations sont distribuées car elles sont développées en dehors des USA ou du Canada et étaient par conséquent disponibles aux utilisateurs hors de ces pays durant l'ère restrictive du contrôle des exportations de code de chiffrement à partir des USA.
Alternativement, l'implémentation du MIT de Kerberos est disponible dans le catalogue des logiciels portés sous security/krb5.
Cela se fait uniquement sur le serveur Kerberos. Vérifiez tout d'abord qu'il ne traîne pas d'anciennes bases Kerberos. Allez dans le répertoire /etc/kerberosIV et assurez-vous qu'il ne contient que les fichiers suivants:
# cd /etc/kerberosIV # ls README krb.conf krb.realms
S'il y a d'autres fichiers (comme principal.* ou master_key), utilisez alors la commande kdb_destroy pour supprimer l'ancienne base de données Kerberos, ou si Kerberos ne tourne pas, effacez simplement les fichiers supplémentaires.
Vous devez maintenant éditer les fichiers krb.conf et krb.realms pour définir votre domaine Kerberos. Dans notre cas, le domaine sera EXAMPLE.COM et le serveur grunt.example.com. Nous éditons ou créons le fichier krb.conf:
# cat krb.conf EXAMPLE.COM EXAMPLE.COM grunt.example.com admin server CS.BERKELEY.EDU okeeffe.berkeley.edu ATHENA.MIT.EDU kerberos.mit.edu ATHENA.MIT.EDU kerberos-1.mit.edu ATHENA.MIT.EDU kerberos-2.mit.edu ATHENA.MIT.EDU kerberos-3.mit.edu LCS.MIT.EDU kerberos.lcs.mit.edu TELECOM.MIT.EDU bitsy.mit.edu ARC.NASA.GOV trident.arc.nasa.gov
Dans notre cas les autres domaines n'ont pas besoin d'être mentionnés. Ils ne sont là que pour montrer comment une machine peut avoir connaissance de plusieurs domaines. Pour plus de simplicité, vous pouvez ne pas les inclure.
La première ligne indique pour quel domaine cette machine agit. Les autre lignes définissent les autres domaines/machines. Le premier élément sur une ligne est le domaine, le second le nom de la machine qui est le ``centre de distribution de clés'' de ce domaine. Les mots admin server qui suivent un nom de machine signifient que la machine est aussi serveur d'administration de la base de données. Pour plus d'explication sur cette terminologie, consultez les pages de manuel de Kerberos.
Nous devons maintenant ajouter grunt.example.com au domaine EXAMPLE.COM et ajouter une entrée pour mettre toutes les machines du domaine DNS .example.com dans le domaine Kerberos EXAMPLE.COM. Le fichier krb.realms aura alors l'allure suivante:
# cat krb.realms grunt.example.com EXAMPLE.COM .example.com EXAMPLE.COM .berkeley.edu CS.BERKELEY.EDU .MIT.EDU ATHENA.MIT.EDU .mit.edu ATHENA.MIT.EDU
Encore une fois, les autres domaines n'ont pas besoin d'être mentionnés. Ils ne sont là que pour montrer comment une machine peut avoir connaissance de plusieurs domaines. Pour plus de simplicité, vous pouvez ne pas les inclure.
La première ligne assigne un système particulier au domaine désigné. Les lignes restantes montrent comment affecter par défaut les systèmes d'un sous-domaine DNS particulier à un domaine Kerberos donné.
Nous sommes maintenant prêt pour la création de la base de données. Il n'y a à le faire que sur le serveur Kerberos (ou Centre de Distribution de Clés). Cela se fait avec la commande kdb_init:
# kdb_init Realm name [default ATHENA.MIT.EDU ]: EXAMPLE.COM You will be prompted for the database Master Password. It is important that you NOT FORGET this password. Enter Kerberos master key:
Nous devons maintenant sauvegarder la clé pour que les serveurs sur la machine locale puissent la lire. Utilisons la commande kstash pour faire cela:
# kstash Enter Kerberos master key: Current Kerberos master key version is 1. Master key entered. BEWARE!
Le mot de passe maître chiffré est sauvegardé dans /etc/kerberosIV/master_key.
Il faut ajouter deux entrées (``principals'') à la base de données pour chaque système qui sera sécurisé par Kerberos. Ce sont kpasswd et rcmd. Ces deux entrées sont définies pour chaque système, chacune de leurs instances se voyant attribuer le nom du système.
Ces ``daemons'', kpasswd et rcmd permettent aux autres systèmes de changer les mots de passe Kerberos et d'exécuter des commandes comme rcp(1), rlogin(1), et rsh(1).
Ajoutons donc maintenant ces entrées:
# kdb_edit Opening database... Enter Kerberos master key: Current Kerberos master key version is 1. Master key entered. BEWARE! Previous or default values are in [brackets] , enter return to leave the same, or new value. Principal name: passwd Instance: grunt <Not found>, Create [y] ? y Principal: passwd, Instance: grunt, kdc_key_ver: 1 New Password: <---- entrez RANDOM ici Verifying password New Password: <---- enter RANDOM here Random password [y] ? y Principal's new key version = 1 Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ? Max ticket lifetime (*5 minutes) [ 255 ] ? Attributes [ 0 ] ? Edit O.K. Principal name: rcmd Instance: grunt <Not found>, Create [y] ? Principal: rcmd, Instance: grunt, kdc_key_ver: 1 New Password: <---- entrez RANDOM ici Verifying password New Password: <---- entrez RANDOM ici Random password [y] ? Principal's new key version = 1 Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ? Max ticket lifetime (*5 minutes) [ 255 ] ? Attributes [ 0 ] ? Edit O.K. Principal name: <---- ne rien entrer ici permet de quitter le programme
Il faut maintenant extraire les instances qui définissent les services sur chaque machine. Pour cela on utilise la commande ext_srvtab. Cela créera un fichier qui doit être copié ou déplacé par un moyen sûr dans le répertoire /etc/kerberosIV de chaque client Kerberos. Ce fichier doit être présent sur chaque serveur et client, et est crucial au bon fonctionnement de Kerberos.
# ext_srvtab grunt Enter Kerberos master key: Current Kerberos master key version is 1. Master key entered. BEWARE! Generating 'grunt-new-srvtab'....
Cette commande ne génère qu'un fichier temporaire qui doit être renommé en srvtab pour que tous les serveurs puissent y accéder. Utilisez la commande mv(1) pour l'installer sur le système d'origine:
# mv grunt-new-srvtab srvtab
Si le fichier est destiné à un client, et que le réseau n'est pas considéré comme sûr, alors copiez le fichier client-new-srvtab sur un support amovible et transportez-le par un moyen physiquement sûr. Assurez-vous de le renommer en srvtab dans le répertoire /etc/kerberosIV du client, et mettez-le bien en mode 600:
# mv grumble-new-srvtab srvtab # chmod 600 srvtab
Nous devons maintenant créer des entrées utilisateurs dans la base de données. Tout d'abord créons une entrée pour l'utilisateur jane. Utilisez la commande kdb_edit pour cela:
# kdb_edit Opening database... Enter Kerberos master key: Current Kerberos master key version is 1. Master key entered. BEWARE! Previous or default values are in [brackets] , enter return to leave the same, or new value. Principal name: jane Instance: <Not found>, Create [y] ? y Principal: jane, Instance: , kdc_key_ver: 1 New Password: <---- entrez un mot de passe sûr ici Verifying password New Password: <---- réentrez le mot de passe sûr là Principal's new key version = 1 Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ? Max ticket lifetime (*5 minutes) [ 255 ] ? Attributes [ 0 ] ? Edit O.K. Principal name: <---- ne rien entrer ici permet de quitter le programme
Il faut tout d'abord démarrer les ``daemons'' Kerberos. Notez que si vous avez correctement modifié votre fichier /etc/rc.conf, cela se fera automatiquement au redémarrage du système. Ceci n'est nécessaire que sur le serveur Kerberos. Les clients Kerberos récupéreront automatiquement les informations dont ils ont besoin via leur répertoire /etc/kerberosIV.
# kerberos & Kerberos server starting Sleep forever on error Log file is /var/log/kerberos.log Current Kerberos master key version is 1. Master key entered. BEWARE! Current Kerberos master key version is 1 Local realm: EXAMPLE.COM # kadmind -n & KADM Server KADM0.0A initializing Please do not use 'kill -9' to kill this job, use a regular kill instead Current Kerberos master key version is 1. Master key entered. BEWARE!
Nous pouvons maintenant utiliser la commande kinit pour obtenir un ``ticket d'entrée'' pour l'utilisateur jane que nous avons créé plus haut:
% kinit jane MIT Project Athena (grunt.example.com) Kerberos Initialization for "jane" Password:
Essayons de lister les informations associées avec la commande klist pour voir si nous avons vraiment tout ce qu'il faut:
% klist Ticket file: /tmp/tkt245 Principal: jane@EXAMPLE.COM Issued Expires Principal Apr 30 11:23:22 Apr 30 19:23:22 krbtgt.EXAMPLE.COM@EXAMPLE.COM
Essayons maintenant de modifier le mot de passe en utilisant la commande passwd(1) pour vérifier si le ``daemon'' kpasswd est autorisé à accéder à la base de données Kerberos:
% passwd realm EXAMPLE.COM Old password for jane: New Password for jane: Verifying password New Password for jane: Password changed.
Kerberos permet d'attribuer à chaque utilisateur qui a besoin des droits du super-utilisateur son propre mot de passe su(1). Nous pouvons créer un identifiant qui est autorisé à utiliser su(1) pour devenir root. Cela se fait en associant une instance root un identificateur (``principal'') de base. En utilisant la commande kdb_edit nous pouvons créer l'entrée jane.root dans la base de données Kerberos:
# kdb_edit Opening database... Enter Kerberos master key: Current Kerberos master key version is 1. Master key entered. BEWARE! Previous or default values are in [brackets] , enter return to leave the same, or new value. Principal name: jane Instance: root <Not found>, Create [y] ? y Principal: jane, Instance: root, kdc_key_ver: 1 New Password: <---- entrez un mot de passe SUR ici Verifying password New Password: <---- réentrez le mot de passe ici Principal's new key version = 1 Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ? Max ticket lifetime (*5 minutes) [ 255 ] ? 12 <--- Laissez une valeur faible! Attributes [ 0 ] ? Edit O.K. Principal name: <---- ne rien entrer ici permet de quitter le programme
Vérifions maintenant les caractéristiques associées pour voir si cela fonctionne:
# kinit jane.root MIT Project Athena (grunt.example.com) Kerberos Initialization for "jane.root" Password:
Nous devons maintenant ajouter l'utilisateur au fichier .klogin de root:
# cat /root/.klogin jane.root@EXAMPLE.COM
Essayons maintenant la commande su(1):
% su Password:
et voyons quelles sont nos caractéristiques:
# klist Ticket file: /tmp/tkt_root_245 Principal: jane.root@EXAMPLE.COM Issued Expires Principal May 2 20:43:12 May 3 04:43:12 krbtgt.EXAMPLE.COM@EXAMPLE.COM
Dans l'exemple précédent, nous avons créé une entrée principale nommée jane avec une instance root. Cette entrée reposait sur un utilisateur ayant le même nom que l'entrée principale, c'est ce que fait par défaut Kerberos; une <entrée_principale>.<instance> de la forme <nom_d_utilisateur>.root autorisera <nom_d_utilisateur>. à utiliser su(1) pour devenir root si le fichier .klogin du répertoire personnel de l'utilisateur root est correctement renseigné:
# cat /root/.klogin jane.root@EXAMPLE.COM
De même, si un utilisateur a dans son répertoire des lignes de la forme:
% cat ~/.klogin jane@EXAMPLE.COM jack@EXAMPLE.COM
Cela permet à quiconque dans le domaine EXAMPLE.COM s'étant authentifié en tant que jane ou jack (via kinit, voir plus haut) d'accéder avec rlogin(1) au compte de jane ou à ses fichiers sur le système (grunt) via rlogin(1), rsh(1) ou rcp(1).
Par exemple, jane ouvre maintenant une session sur un autre système en utilisant Kerberos:
% kinit
MIT Project Athena (grunt.example.com)
Password:
% rlogin grunt
Last login: Mon May 1 21:14:47 from grumble
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
The Regents of the University of California. All rights reserved.
FreeBSD BUILT-19950429 (GR386) #0: Sat Apr 29 17:50:09 SAT 1995
Ou bien jack ouvre une session sur le compte de jane sur la même machine (jane ayant modifié son fichier .klogin comme décrit plus haut, et la personne an charge de Kerberos ayant défini une entrée principale jack sans instance):
% kinit
% rlogin grunt -l jane
MIT Project Athena (grunt.example.com)
Password:
Last login: Mon May 1 21:16:55 from grumble
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
The Regents of the University of California. All rights reserved.
FreeBSD BUILT-19950429 (GR386) #0: Sat Apr 29 17:50:09 SAT 1995
Une des caractéristiques que de nombreux utilisateurs ignorent souvent est la présence des outils OpenSSL dans le système FreeBSD. OpenSSL fournit une couche de transport des données chiffrée par-dessus la couche de communication, lui permettant ainsi d'être liée à de nombreux services et applications réseau.
Les applications d'OpenSSL pourront être l'authentification chiffrée de clients de messagerie, les transactions via le Web comme les paiements par carte bancaire et bien plus encore. De nombreux logiciels portés tels que www/apache13-ssl, et mail/sylpheed-claws offriront un support pour OpenSSL lors de leur compilation.
Note : Dans la plupart des cas le catalogue des logiciels portés tentera de compiler le logiciel porté security/openssl à moins que la variable make(1) WITH_OPENSSL_BASE ne soit explicitement fixée à la valeur “yes”.
La version d'OpenSSL fournie avec FreeBSD supporte les protocoles de sécurité réseau Secure Sockets Layer v2/v3 (SSLv2/SSLv3), et Transport Layer Security v1 (TLSv1) et peut être utilisée comme bibliothèque de chiffrement d'usage général.
Note : Bien que OpenSSL supporte l'algorithme IDEA, il est désactivé par défaut en raison des problèmes de brevets aux USA. Pour l'utiliser, le texte de la licence devrait être consulté et si les termes de cette licence sont acceptables, la variable MAKE_IDEA doit être activée dans le fichier make.conf.
Une des utilisations les plus courantes d'OpenSSL est de fournir des certificats utilisables avec des applications logicielles. Ces certificats assurent que les références de la société ou d'un individu sont valides et non frauduleuses. Si le certificat en question n'a pas été vérifié par une des nombreuses “autorité de certification” (“Certificate Authorities”) ou CAs, une alerte est généralement produite. Une autorité de certification est une société, comme VeriSign, qui signera les certificats afin de valider les références d'individus ou de sociétés. Ce processus a un coût et n'est pas obligatoire pour utiliser des certificats, cependant cela pourra mettre plus à l'aise les utilisateurs les plus paranoïaques.
Pour générer un certificat, la commande suivante est disponible:
# openssl req -new -nodes -out req.pem -keyout cert.pem Generating a 1024 bit RSA private key ................++++++ .......................................++++++ writing new private key to 'cert.pem' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:US State or Province Name (full name) [Some-State]:PA Locality Name (eg, city) []:Pittsburgh Organization Name (eg, company) [Internet Widgits Pty Ltd]:My Company Organizational Unit Name (eg, section) []:Systems Administrator Common Name (eg, YOUR name) []:localhost.example.org Email Address []:trhodes@FreeBSD.org Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:SOME PASSWORD An optional company name []:Another Name
Notez la réponse à la question “Common Name” qui est un nom de domaine. Cette question demande l'entrée d'un serveur de noms à des fins de vérification; entrer autre chose qu'un nom de domaine produira un certificat inutilisable. D'autres options sont disponibles comme par exemple: la date d'expiration, des algorithmes de chiffrement alternatifs, etc. Une liste complète peut être obtenue en consultant la page de manuel openssl(1).
Deux fichiers doivent maintenant être présents dans le répertoire dans lequel la commande a été exécutée. La demande de certificat, req.pem, peut être envoyée à une autorité de certification qui validera les références que vous avez saisies, signera la demande et vous retournera le certificat. Le deuxième fichier s'appellera cert.pem et sera la clé privée du certificat et devra être à tout prix protégée; si ce fichier tombe dans d'autres mains, il pourra être utilisé pour imiter votre identité (ou votre serveur).
Pour les cas où une signature d'une CA n'est pas indispensable, un certificat auto-signé peut être créé. Générez tout d'abord la clé RSA:
# openssl dsaparam -rand -genkey -out myRSA.key 1024
Générez ensuite la clé de la CA:
# openssl gendsa -des3 -out myca.key myRSA.key
Utilisez cette clé pour créer le certificat:
# openssl req -new -x509 -days 365 -key myca.key -out new.crt
Deux fichiers devraient être présents maintenant dans le répertoire: un fichier de signature de l'autorité de certification, myca.key, et le certificat lui-même, new.crt. Ces fichiers doivent être placés dans un répertoire, de préférence sous /etc, qui est uniquement lisible que par root. Les permissions 0700 devraient convenir et peuvent être fixées à l'aide de l'utilitaire chmod.
A quoi peuvent servir ces fichiers? Un bon exemple serait le chiffrage des connexions au MTA sendmail. Cela permettra de faire disparaître l'utilisation d'une authentification en clair pour les utilisateurs qui envoient du courrier via le MTA local.
Note : Ce n'est pas la meilleure utilisation au monde étant donné que certains clients de messagerie afficheront une erreur si le certificat n'a pas été installé localement. Reportez-vous à la documentation du logiciel pour plus d'information sur l'installation de certificats.
Les lignes suivantes doivent être ajoutées dans le fichier .mc local:
dnl SSL Options define(`confCACERT_PATH',`/etc/certs')dnl define(`confCACERT',`/etc/certs/new.crt')dnl define(`confSERVER_CERT',`/etc/certs/new.crt')dnl define(`confSERVER_KEY',`/etc/certs/myca.key')dnl define(`confTLS_SRV_OPTIONS', `V')dnl
Où /etc/certs/ est le répertoire à
utiliser pour stocker localement les certificats et les clés. La
dernière condition nécessaire étant une reconstruction du
fichier .cf. Cela se fait facilement en tapant make install à
l'intérieur du répertoire /etc/mail. Suivi d'un
make restart qui
devrait relancer le “daemon” sendmail.
Si tout s'est bien passé il n'y aura pas de message d'erreur dans le fichier /var/log/maillog et sendmail apparaîtra dans la liste des processus.
Comme test simple, connectez vous au serveur de messagerie à l'aide de l'utilitaire telnet(1):
# telnet example.com 25 Trying 192.0.34.166... Connected to example.com. Escape character is '^]'. 220 example.com ESMTP Sendmail 8.12.10/8.12.10; Tue, 31 Aug 2004 03:41:22 -0400 (EDT) ehlo example.com 250-example.com Hello example.com [192.0.34.166], pleased to meet you 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-8BITMIME 250-SIZE 250-DSN 250-ETRN 250-AUTH LOGIN PLAIN 250-STARTTLS 250-DELIVERBY 250 HELP quit 221 2.0.0 example.com closing connection Connection closed by foreign host.
Si la ligne “STARTTLS” apparaît dans la sortie, cela signifie alors que tout fonctionne correctement.
Caractères de terminaison : Dans tous les exemples de cette section, et d'autres sections, vous remarquerez qu'il y aura un ``^D'' à la fin de certains exemples. Cela signifie qu'il faut maintenir la touche Ctrl enfoncée et appuyer sur la touche D. Un autre caractère couramment utilisé est ``^C'', qui signifie de maintenir enfoncé la touche Ctrl et d'appuyer sur C.
Astuce : Pour d'autres documents détaillant l'implémentation d'IPsec, jetez un oeil à http://www.daemonnews.org/200101/ipsec-howto.html et http://www.freebsddiary.org/ipsec.php.
Le mécanisme IPsec fournit des communications sécurisées sur couche IP ou à travers les sockets. Cette section explique comment l'utiliser. Pour des détails concernant l'implémentation d'IPsec, reportez-vous au Manuel du développeur.
L'implémentation actuelle d'IPsec supporte le mode transport et le mode tunnel. Cependant, il y a des restrictions au mode tunnel. http://www.kame.net/newsletter/ fournit des exemples plus exhaustifs.
Soyez informé que pour utiliser cette fonctionnalité, vous devez avoir les options suivantes présentes dans votre fichier de configuration du noyau:
options IPSEC #IP security options IPSEC_ESP #IP security (crypto; define w/IPSEC)
Configurons une association de sécurité pour déployer un canal sécurisé entre la Machine A (10.2.3.4) et la Machine B (10.6.7.8). Notre exemple est un peu compliqué. De A vers B, nous n'utilisons que l'ancien AH. De B vers A, le nouvel AH et le nouvel ESP sont combinés.
Nous devons maintenant choisir les algorithmes correspondant à ``AH''/``nouvel AH''/``ESP''/ ``nouvel ESP''. Reportez-vous à la page de manuel setkey(8) pour connaître les noms des algorithmes. Nous utiliserons MD5 pour AH, new-HMAC-SHA1 pour le nouvel AH, et new-DES-expIV avec 8 octets IV pour le nouvel ESP.
La longueur de la clé dépend de chaque algorithme. Par exemple, elle doit être égale à 16 octets pour MD5, 20 pour new-HMAC-SHA1, et 8 pour new-DES-expIV. Nous choisissons maintenant ``MYSECRETMYSECRET'', ``KAMEKAMEKAMEKAMEKAME'', ``PASSWORD'', respectivement.
Définissons maintenant le SPI (Security Parameter Index) pour chaque protocole. Remarquez qu'il nous faut 3 SPIs pour ce canal sécurisé puisqu'il y aura trois entêtes de sécurité (une de la Machine A vers la Machine B et deux de la Machine B vers la Machine A). Notez également que les SPIs doivent être supérieurs à 256. Nous choisirions 1000, 2000 et 3000 respectivement.
(1) Machine A ------> Machine B (1)PROTO=AH ALG=MD5(RFC1826) KEY=MYSECRETMYSECRET SPI=1000 (2.1) Machine A <------ Machine B <------ (2.2) (2.1) PROTO=AH ALG=new-HMAC-SHA1(new AH) KEY=KAMEKAMEKAMEKAMEKAME SPI=2000 (2.2) PROTO=ESP ALG=new-DES-expIV(new ESP) IV length = 8 KEY=PASSWORD SPI=3000
Maintenant, définissons l'association de sécurité. Exécutons setkey(8) sur la Machine A et la Machine B:
# setkey -c
add 10.2.3.4 10.6.7.8 ah-old 1000 -m transport -A keyed-md5 "MYSECRETMYSECRET" ;
add 10.6.7.8 10.2.3.4 ah 2000 -m transport -A hmac-sha1 "KAMEKAMEKAMEKAMEKAME" ;
add 10.6.7.8 10.2.3.4 esp 3000 -m transport -E des-cbc "PASSWORD" ;
^D
En fait, la communication IPsec n'aura pas lieu avant que les entrées de politique de sécurité ne soient définies. Dans notre cas, il faut le faire sur les deux machines.
Côté A:
# setkey -c
spdadd 10.2.3.4 10.6.7.8 any -P out ipsec
ah/transport/10.2.3.4-10.6.7.8/require ;
^D
Côté B:
# setkey -c
spdadd 10.6.7.8 10.2.3.4 any -P out ipsec
esp/transport/10.6.7.8-10.2.3.4/require ;
spdadd 10.6.7.8 10.2.3.4 any -P out ipsec
ah/transport/10.6.7.8-10.2.3.4/require ;
^D
Machine A --------------------------> Machine E
10.2.3.4 10.6.7.8
| |
========= ancien AH keyed-md5 ========>
<======== nouveau AH hmac-sha1 ========
<======== nouveau ESP des-cbc =========
Un autre exemple utilisant IPv6.
Le mode de transport ESP est recommandé pour le port TCP numéro 110 entre la Machine-A et la Machine-B.
============ ESP ============
| |
Machine-A Machine-B
fec0::10 -------------------- fec0::11
L'algorithme de chiffrement est blowfish-cbc avec la clé ``kamekame'', et l'algorithme d'authentification est hmac-sha1 avec la clé ``this is the test key''. Configuration de la Machine-A:
# setkey -c <<EOF
spdadd fec0::10[any] fec0::11[110] tcp -P out ipsec
esp/transport/fec0::10-fec0::11/use ;
spdadd fec0::11[110] fec0::10[any] tcp -P in ipsec
esp/transport/fec0::11-fec0::10/use ;
add fec0::10 fec0::11 esp 0x10001
-m transport
-E blowfish-cbc "kamekame"
-A hmac-sha1 "this is the test key" ;
add fec0::11 fec0::10 esp 0x10002
-m transport
-E blowfish-cbc "kamekame"
-A hmac-sha1 "this is the test key" ;
EOF
et de la Machine-B:
# setkey -c <<EOF
spdadd fec0::11[110] fec0::10[any] tcp -P out ipsec
esp/transport/fec0::11-fec0::10/use ;
spdadd fec0::10[any] fec0::11[110] tcp -P in ipsec
esp/transport/fec0::10-fec0::11/use ;
add fec0::10 fec0::11 esp 0x10001 -m transport
-E blowfish-cbc "kamekame"
-A hmac-sha1 "this is the test key" ;
add fec0::11 fec0::10 esp 0x10002 -m transport
-E blowfish-cbc "kamekame"
-A hmac-sha1 "this is the test key" ;
EOF
Remarquez la direction de SP.
Mode tunnel entre deux passerelles de sécurité
Le protocole de sécurité est l'ancien mode tunnel AH, i.e. spécifié par la RFC1826, avec keyed-md5 comme algorithme d'authentification et ``this is the test'' comme clé.
======= AH =======
| |
Réseau-A Passerelle-A Passerelle-B Réseau-B
10.0.1.0/24 ---- 172.16.0.1 ----- 172.16.0.2 ---- 10.0.2.0/24
Configuration de la Passerelle-A:
# setkey -c <<EOF
spdadd 10.0.1.0/24 10.0.2.0/24 any -P out ipsec
ah/tunnel/172.16.0.1-172.16.0.2/require ;
spdadd 10.0.2.0/24 10.0.1.0/24 any -P in ipsec
ah/tunnel/172.16.0.2-172.16.0.1/require ;
add 172.16.0.1 172.16.0.2 ah-old 0x10003 -m any
-A keyed-md5 "this is the test" ;
add 172.16.0.2 172.16.0.1 ah-old 0x10004 -m any
-A keyed-md5 "this is the test" ;
EOF
Si le numéro de port n'est pas précisé comme ci-dessus, alors [any] est utilisé. -m définit le mode de SA à utiliser. -m any signifie tout mode de protocole de sécurité. Vous pouvez utiliser cette SA à la fois en mode transport et en mode tunnel.
et de la Passerelle-B:
# setkey -c <<EOF
spdadd 10.0.2.0/24 10.0.1.0/24 any -P out ipsec
ah/tunnel/172.16.0.2-172.16.0.1/require ;
spdadd 10.0.1.0/24 10.0.2.0/24 any -P in ipsec
ah/tunnel/172.16.0.1-172.16.0.2/require ;
add 172.16.0.1 172.16.0.2 ah-old 0x10003 -m any
-A keyed-md5 "this is the test" ;
add 172.16.0.2 172.16.0.1 ah-old 0x10004 -m any
-A keyed-md5 "this is the test" ;
EOF
Etablir une SA regroupée entre deux passerelles de sécurité
On désire le mode de transport AH et le mode tunnel ESP entre Passerelle-A et Passerelle-B. Dans ce cas, on applique d'abord le mode tunnel ESP puis le mode de transport AH.
========== AH =========
| ======= ESP ===== |
| | | |
Réseau-A Passerelle-A Passerelle-B Réseau-B
fec0:0:0:1::/64 --- fec0:0:0:1::1 ---- fec0:0:0:2::1 --- fec0:0:0:2::/64
L'algorithme de chiffrement est 3des-cbc, et l'algorithme d'authentification est hmac-sha1. L'algorithme d'authentification pour AH est hmac-md5. Configuration de la Passerelle-A:
# setkey -c <<EOF
spdadd fec0:0:0:1::/64 fec0:0:0:2::/64 any -P out ipsec
esp/tunnel/fec0:0:0:1::1-fec0:0:0:2::1/require
ah/transport/fec0:0:0:1::1-fec0:0:0:2::1/require ;
spdadd fec0:0:0:2::/64 fec0:0:0:1::/64 any -P in ipsec
esp/tunnel/fec0:0:0:2::1-fec0:0:0:1::1/require
ah/transport/fec0:0:0:2::1-fec0:0:0:1::1/require ;
add fec0:0:0:1::1 fec0:0:0:2::1 esp 0x10001 -m tunnel
-E 3des-cbc "kamekame12341234kame1234"
-A hmac-sha1 "this is the test key" ;
add fec0:0:0:1::1 fec0:0:0:2::1 ah 0x10001 -m transport
-A hmac-md5 "this is the test" ;
add fec0:0:0:2::1 fec0:0:0:1::1 esp 0x10001 -m tunnel
-E 3des-cbc "kamekame12341234kame1234"
-A hmac-sha1 "this is the test key" ;
add fec0:0:0:2::1 fec0:0:0:1::1 ah 0x10001 -m transport
-A hmac-md5 "this is the test" ;
EOF
Etablir des SAs avec les différentes extrémités
On désire un mode tunnel ESP entre Machine-A et Passerelle-A. L'algorithme de chiffrement est cast128-cbc, et l'algorithme d'authentification pour ESP est hmac-sha1. Le mode de transport ESP est recommandé entre Machine-A et Machine-B. L'algorithme de chiffrement est rc5-cbc, et l'algorithme d'authentification pour ESP est hmac-md5.
================== ESP =================
| ======= ESP ======= |
| | | |
Machine-A Passerelle-A Machine-B
fec0:0:0:1::1 ---- fec0:0:0:2::1 ---- fec0:0:0:2::2
Configuration de la Machine-A:
# setkey -c <<EOF
spdadd fec0:0:0:1::1[any] fec0:0:0:2::2[80] tcp -P out ipsec
esp/transport/fec0:0:0:1::1-fec0:0:0:2::2/use
esp/tunnel/fec0:0:0:1::1-fec0:0:0:2::1/require ;
spdadd fec0:0:0:2::1[80] fec0:0:0:1::1[any] tcp -P in ipsec
esp/transport/fec0:0:0:2::2-fec0:0:0:l::1/use
esp/tunnel/fec0:0:0:2::1-fec0:0:0:1::1/require ;
add fec0:0:0:1::1 fec0:0:0:2::2 esp 0x10001
-m transport
-E cast128-cbc "12341234"
-A hmac-sha1 "this is the test key" ;
add fec0:0:0:1::1 fec0:0:0:2::1 esp 0x10002
-E rc5-cbc "kamekame"
-A hmac-md5 "this is the test" ;
add fec0:0:0:2::2 fec0:0:0:1::1 esp 0x10003
-m transport
-E cast128-cbc "12341234"
-A hmac-sha1 "this is the test key" ;
add fec0:0:0:2::1 fec0:0:0:1::1 esp 0x10004
-E rc5-cbc "kamekame"
-A hmac-md5 "this is the test" ;
EOF
OpenSSH est un ensemble d'outils de connexion réseau utilisés pour accéder à des machines distantes de façon sécurisée. Ils peuvent être utilisés comme remplaçants directs de rlogin, rsh, rcp, et telnet. De plus, OpenSSH peut sécuriser n'importe quelle connexion TCP/IP via un tunnel. OpenSSH chiffre tout le trafic de façon à déjouer les écoutes réseau, les prises de contrôle de connexion, et aux attaques au niveau du réseau.
OpenSSH est maintenu par le projet OpenBSD, et est basé sur SSH v1.2.12 avec tous les récentes corrections et mises à jour. Il est compatible avec les protocoles SSH 1 et 2. OpenSSH est présent dans le système de base depuis FreeBSD 4.0.
Normalement, quand on utilise telnet(1) ou rlogin(1), les données sont envoyées sur le réseau en clair, sous forme non chiffrée. Des ``renifleurs de paquets'' placés n'importe où entre le client et le serveur peuvent prendre connaissance de votre nom d'utilisateur, de votre mot de passe et des données transmises lors de votre session. OpenSSH offre une variété de méthodes d'authentification et de chiffrage pour éviter ce genre de problème.
Assurez-vous d'ajouter la ligne suivante à votre fichier rc.conf:
sshd_enable="YES"
Cela chargera le ``daemon'' ssh à l'initialisation suivante du système. Alternativement, vous pouvez tout simplement exécuter le ``daemon'' sshd directement en tapant sshd sur la ligne de commande.
L'utilitaire ssh(1) fonctionne de la même manière que rlogin(1):
# ssh user@example.com Host key not found from the list of known hosts. Are you sure you want to continue connecting (yes/no)? yes Host 'example.com' added to the list of known hosts. user@example.com's password: *******
L'ouverture de session se poursuit comme si elle avait lancée par rlogin(1) ou telnet(1). Le système SSH utilise un système d'empreinte de clé pour vérifier l'authenticité du serveur quand le client se connecte. L'utilisateur est invité à entrer yes uniquement à la première connexion. Lors des futures connexions, l'empreinte de la clé sauvegardé est vérifiée. Le client SSH vous avertira si l'empreinte sauvée diffère de l'empreinte reçue lors de futures tentatives de connexion. Les empreintes sont sauvées dans le fichier ~/.ssh/known_hosts, ou ~/.ssh/known_hosts2 pour les empreintes du protocole SSH 2.
Par défaut, les serveurs OpenSSH sont configurés pour accepter les connexions dans les deux protocoles SSH 1 et 2. Le client peut, cependant, choisir entre les deux. Le protocole 2 est connu pour être plus robuste et plus sécurisé que son prédécesseur.
ssh peut être forcé à utilisé
l'un des protocole en passant l'argument -1 ou -2 pour le protocole 1 ou 2 respectivement.
La commande scp(1) fonctionne de la même manière que rcp(1); elle copie un fichier vers ou à partir d'une machine distante à la différence qu'elle le fait d'une façon sécurisé.
# scp user@example.com:/COPYRIGHT COPYRIGHT user@example.com's password: ******* COPYRIGHT 100% |*****************************| 4735 00:00 #
Puisque l'empreinte a déjà été sauvée pour cette machine dans l'exemple précédent, cela se vérifie ici quand on utilise scp(1).
Les arguments passés à scp(1) sont
similaires à ceux de cp(1), avec le ou les
fichiers en premier argument, et la destination en second. Puisque que le
fichier est copié via le réseau, par l'intermédiaire de SSH, un
ou plusieurs des arguments prennent la forme utilisateur@machine_distante:<chemin_du_fichier>.
Les fichiers de configuration général au système pour le ``daemon'' et le client OpenSSH résident dans le répertoire /etc/ssh.
ssh_config permet de paramétrer le client, tandis que sshd_config s'occupe de la configuration du ``daemon''.
De plus, les options sshd_program (/usr/sbin/sshd par défaut), et sshd_flags du fichier rc.conf peut
fournir un niveau supplémentaire de configuration.
Au lieu d'utiliser des mots de passe, ssh-keygen(1) peut être employé pour générer des clés RSA pour authentifier un utilisateur:
% ssh-keygen -t rsa1 Initializing random number generator... Generating p: .++ (distance 66) Generating q: ..............................++ (distance 498) Computing the keys... Key generation complete. Enter file in which to save the key (/home/user/.ssh/identity): Enter passphrase: Enter the same passphrase again: Your identification has been saved in /home/user/.ssh/identity. ...
ssh-keygen(1) créera une paire de clés publique et privée à utiliser pour l'authentification. La clé privée est stockée dans le fichier ~/.ssh/identity, alors que la clé publique l'est dans le fichier ~/.ssh/identity.pub. La clé publique doit être placée dans le fichier ~/.ssh/authorized_keys sur la machine distante pour que cela fonctionne.
Ceci autorisera les connexions sur la machine distante en utilisant l'authentification RSA à la place des mots de passe.
Note : L'option
-t rsa1créera des clés RSA pour le protocole SSH 1. Si vous désirez utiliser des clés RSA avec le protocole SSH 2, vous devez employer la commande ssh-keygen -t rsa.
Si une phrase d'authentification est utilisée avec ssh-keygen(1), l'utilisateur se verra demandé d'entrer un mot de passe à chaque utilisation de la clé privé.
Une clé DSA SSH protocole 2 peut être créée pour le même objectif en utilisant la commande ssh-keygen -t dsa. Cela créera une paire de clés DSA pour les sessions SSH utilisant le protocole 2. La clé publique est conservée dans ~/.ssh/id_dsa.pub, tandis que la clé privée se trouve dans ~/.ssh/id_dsa.
Les clés publiques DSA sont placées dans le fichier ~/.ssh/authorized_keys sur la machine distante.
ssh-agent(1) et ssh-add(1) sont des utilitaires employés pour la gestion de multiples clés privées protégées par mots de passe.
Avertissement : Les divers fichiers et options peuvent être différents selon la version d'OpenSSH dont vous disposez, pour éviter les problèmes vous devez consultez la page de manuel ssh-keygen(1).
OpenSSH a la capacité de créer un tunnel pour encapsuler un autre protocole dans une session chiffrée.
La commande suivante demande à ssh(1) de créer un tunnel pour telnet:
% ssh -2 -N -f -L 5023:localhost:23 user@foo.example.com %
La commande ssh est utilisée avec les options suivantes:
-2Force ssh à utiliser la version du protocole (à ne pas utiliser si vous travaillez avec de vieux serveurs SSH).
-NN'exécute aucune commande à distance, ou mode se place en mode tunnel. Si cette option est omise ssh initiera une session normale.
-fForce ssh à s'exécuter en arrière-plan.
-LSpécifie un tunnel local de la manière port_local:machine_distante:port_distant.
user@foo.example.comLe serveur SSH distant.
Un tunnel SSH fonctionne grâce à l'allocation d'une ``socket'' qui écoute sur le port spécifié de la machine localhost. Il transfère ensuite toute connexion reçue sur la/le machine/port local(e) via la connexion SSH vers la machine et le port distants spécifiés.
Dans l'exemple, le port 5023 sur la machine locale transfère toute connexion sur ce port vers le port 23 de la machine distante (le localhost de la commande). Puisque le port 23 est celui de telnet, cela créerai une session telnet sécurisée par l'intermédiaire d'un tunnel SSH.
Cela peut être utilisé pour encapsuler n'importe quel nombre de protocoles TCP non sécurisé comme SMTP, POP3, FTP, etc.
Exemple 14-1. Utiliser SSH pour créer un tunnel sécurisé pour SMTP
% ssh -2 -N -f -L 5025:localhost:25 user@mailserver.example.com user@mailserver.example.com's password: ***** % telnet localhost 5025 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 mailserver.example.com ESMTP
Ceci peut être utilisé en conjonction avec ssh-keygen(1) et des comptes utilisateurs supplémentaires pour la création et l'accès au tunnel SSH sans trop de problème. Des clés peuvent être utilisées à la place de la saisie d'un mot de passe, et les tunnels peuvent être exécutés sous un utilisateur séparé.
Au travail, il y a un serveur SSH qui accepte les connexions de l'extérieur. Sur le même réseau d'entreprise réside un serveur de courrier électronique faisant fonctionner un serveur POP3. Le réseau ou le chemin entre chez vous et le bureau peut ou peut ne pas être complètement sûr. Pour cette raison, vous devez récupérer votre courrier électronique d'une façon sécurisée. La solution est de créer une connexion SSH vers le serveur SSH de votre entreprise, et d'utiliser ce tunnel vers le serveur de courrier.
% ssh -2 -N -f -L 2110:mail.example.com:110 user@ssh-server.example.com user@ssh-server.example.com's password: ******
Quand le tunnel est configuré et fonctionne, vous pouvez demander à votre client de courrier électronique d'envoyer ses requêtes POP3 sur le port 2110 de la machine locale: localhost. Les connexions seront transférées de façon sécurisé à travers le tunnel jusqu'à mail.example.com.
Certains administrateurs réseau imposent des règles draconiennes au niveau du coupe-feu, filtrant non seulement les connexions entrantes, mais également les connexions sortantes. Il se peut que vous n'ayez accès qu'aux ports 22 et 80 de machines distantes pour SSH ou la navigation Internet.
Vous pouvez vouloir accéder à un autre (n'ayant peut-être aucun rapport avec votre travail) service, comme un serveur Ogg Vorbis pour écouter de la musique. Si le serveur Ogg Vorbis diffuse (``streaming'') ses données à partir d'un port différent des ports 22 ou 80, vous ne serez alors pas en mesure d'y accéder.
La solution est de créer une connexion SSH vers une machine à l'extérieur du réseau protégé par le coupe-feu, et l'utiliser pour créer un tunnel vers le serveur Ogg Vorbis.
% ssh -2 -N -f -L 8888:music.example.com:8000 user@unfirewalled-system.example.org user@unfirewalled-system.example.org's password: *******
Vous pouvez maintenant faire pointer votre client pour la récupération du flux de données sur le port 8888 de la machine locale, qui sera transféré jusqu'au port 8000 de la machine music.example.com, passant ainsi outre les restrictions du coupe-feu.
Avec les améliorations des systèmes de fichiers comme les ``snapshots'', FreeBSD 5.0 et versions suivantes offrent une nouveauté en matière de sécurité: les listes de contrôle d'accès au système de fichiers (ACLs - ``Access Control Lists'').
Les listes de contrôle d'accès étendent le système de permission standard d'UNIX d'une manière hautement compatible (POSIX.1e). Cette caractéristique permet à un administrateur d'utiliser avantageusement un modèle de sécurité plus sophistiqué.
Pour activer le support ACL pour les systèmes de fichiers UFS, ce qui suit:
options UFS_ACL
doit être compilé dans le noyau. Si cette option n'a pas été ajoutée, un avertissement sera affiché lors d'une tentative de montage d'un système de fichiers supportant les ACLs. Cette option est présente dans le noyau GENERIC. Les ACLs reposent sur des attributs étendus rajoutés au système de fichiers. Les attributs étendus sont nativement supportés par la prochaine génération du système de fichiers UNIX, UFS2.
Note : Un supplément de travail d'administration est requis pour configurer les attributs étendus sous UFS1 par rapport à UFS2. Les performances des attributs étendus sous UFS2 sont sensiblement meilleures également. Il en résulte donc, que l'UFS2 est généralement recommandé par rapport à l'UFS1 pour une utilisation des listes de contrôle d'accès.
Les ACLs sont activés grâce
l'option utilisée lors du montage, acls, qui peut
être ajouté dans le fichier /etc/fstab. Cette
option de montage peut être également automatiquement fixée d'une
manière définitive en utilisant tunefs(8) pour
modifier l'indicateur ACL du ``superblock''
dans l'entête du système de fichiers. Il est en général
préférable d'utiliser cet indicateur pour plusieurs raisons:
L'option de montage pour les ACLs ne
peut être modifiée par un simple remontage (mount(8) -u), mais uniquement par un umount(8) complet et
suivi d'un mount(8). Cela
signifie que les ACLs ne peuvent
être activées sur le système de fichiers racine après le
démarrage. Cela signifie également que vous ne pouvez pas modifier la
disposition d'un système de fichier une fois que c'est
activé.
Positionner l'indicateur du ``superblock'' fera que le système de fichiers sera toujours monté avec les ACLs activées même s'il n'y a pas d'entrée dans le fichier fstab, ou s'il y a une réorganisation des périphériques. Cela prévient le montage accidentel du système de fichiers sans les ACLs activées, ce qui peut provoquer une activation impropre des ACLs et par conséquent des problèmes de sécurité.
Note : Nous pourrions modifier le comportement des ACLs pour permettre l'activation de l'indicateur sans le besoin d'un nouveau mount(8) complet, mais nous considérons qu'il est préférable d'éviter un montage accidentel sans les ACLs activées, parce que vous pouvez vous ``tirer facilement dans les pieds'' si vous activez les ACLs, puis les désactivez, et ensuite les réactivez à nouveau sans réinitialiser les attributs étendus. En général, une fois que vous avez activé les ACLs sur un système de fichiers, elles ne devraient pas être désactivées étant donné que les protections de fichiers résultantes peuvent ne pas être compatible avec celles prévues par les utilisateurs du système, et réactiver les ACLs peut réaffecter les précédentes ACLs aux fichiers qui ont depuis eût leur permissions modifiées, avec pour résultat un comportement imprévisible.
Les systèmes de fichiers avec les ACLs activées présenteront un signe + au niveau de leurs permissions quand elles seront affichées. Par exemple:
drwx------ 2 robert robert 512 Dec 27 11:54 private drwxrwx---+ 2 robert robert 512 Dec 23 10:57 directory1 drwxrwx---+ 2 robert robert 512 Dec 22 10:20 directory2 drwxrwx---+ 2 robert robert 512 Dec 27 11:57 directory3 drwxr-xr-x 2 robert robert 512 Nov 10 11:54 public_html
Ici nous voyons que les répertoires directory1, directory2, et directory3 utilisent les ACLs. Ce n'est pas le cas du répertoire public_html.
Les ACLs peuvent être affichées par l'utilitaire getfacl(1). Par exemple pour voir les ACLs sur le fichier test, on utilisera la commande:
% getfacl test #file:test #owner:1001 #group:1001 user::rw- group::r-- other::r--
Pour modifier le paramétrage des ACLs sur ce fichier, invoquez la commande setfacl(1). Intéressons-nous à la ligne:
% setfacl -k test
L'indicateur -k supprimera toutes les ACLs actuellement définies pour un fichier
ou un système de fichiers. Une méthode plus adaptée est
d'utiliser l'option -b étant donné qu'elle
conserve les champs de base nécessaires au bon fonctionnement des
ACLs.
% setfacl -m u:trhodes:rwx,group:web:r--,o::--- test
Dans la commande ci-dessus, l'option -m a
été utilisée pour modifier les entrées ACL par défaut. Comme il n'y avait pas
d'entrées pré-définies, puisqu'elles ont été
supprimées par la commande précédente, cela restaurera les
options par défaut et prendra en compte les options précisées.
Prenez soin de noter que si vous ajoutez un utilisateur ou un groupe qui
n'existe pas sur le système, une erreur “Invalid argument” sera affichée sur la sortie
standard.
Ces dernières années, le monde de la sécurité a fait beaucoup de progrès dans la manière d'évaluer les vulnérabilités. Le risque d'une intrusion dans le système augmente avec l'installation et la configuration d'utilitaires tierce-partie et cela pour quasiment n'importe quel système d'exploitation disponible aujourd'hui.
L'évaluation des vulnérabilités est un facteur clé de la politique de sécurité, alors que FreeBSD publie des avis pour le système de base, faire de même pour les programmes tierce-partie dépasse les capacités du projet FreeBSD. Il existe un moyen d'atténuer les vulnérabilités des logiciels tierce-partie et de prévenir les administrateurs des problèmes de sécurité connus. Un outil FreeBSD connu sous le nom de Portaudit existe dans cet unique but.
Le logiciel porté ports-mgmt/portaudit consulte une base de données, mise à jour et maintenue par l'équipe de sécurité de FreeBSD et les développeurs des logiciels portés, à la recherche de problèmes de sécurité connus.
Pour utiliser Portaudit, ce dernier doit être installé à partir du catalogue des logiciels portés:
# cd /usr/ports/ports-mgmt/portaudit && make install clean
Lors du processus d'installation, les fichiers de configuration de periodic(8) seront mis à jour, autorisant l'ajout des résultats de Portaudit dans l'exécution quotidienne du rapport de sécurité. Assurez-vous que les rapports de sécurité quotidiens, qui sont envoyés au compte messagerie de root, sont bien lus. Pas plus de configuration ne sera nécessaire.
Après l'installation, un administrateur peut mettre à jour la base de données et afficher les vulnérabilités connues des logiciels installés en invoquant la commande suivante:
# portaudit -Fda
Note : La base de données sera automatiquement mise à jour lors de l'exécution de periodic(8), cela rendant par conséquent facultative la commande précédente. Elle n'est requise que pour les exemples qui vont suivre.
Pour contrôler à n'importe quel moment les programmes tierce-partie installés à partir du catalogue des logiciels portés, un administrateur n'aura qu'à exécuter la commande suivante:
# portaudit -a
Portaudit produira pour les logiciels vulnérables quelque chose comme ceci:
Affected package: cups-base-1.1.22.0_1 Type of problem: cups-base -- HPGL buffer overflow vulnerability. Reference: <http://www.FreeBSD.org/ports/portaudit/40a3bca2-6809-11d9-a9e7-0001020eed82.html> 1 problem(s) in your installed packages found. You are advised to update or deinstall the affected package(s) immediately.
En faisant pointer un navigateur Web sur l'URL proposée, un administrateur pourra obtenir plus d'information au sujet de la vulnérabilité en question. Cela comprendra les versions affectées, listées par version du logiciel porté FreeBSD, ainsi que des liens vers d'autres sites Web pouvant contenir des avis de sécurité.
En résumé, Portaudit est un outil puissant et extrêmement utile quand il est employé conjointement avec le logiciel Portupgrade.
Comme plusieurs systèmes d'exploitation destinés à la production, FreeBSD publie des ``Avis de sécurité''. Ces avis sont généralement envoyés aux listes de diffusion traitant de la sécurité et ajoutés dans l'errata une fois seulement que les versions correspondantes ont été corrigées. Cette section aura pour objectif d'expliquer ce qu'est un avis, comment le comprendre, et quelles mesures sont à prendre pour appliquer des correctifs à un système.
Les avis de sécurité de FreeBSD ressemblent à celui présenté ci-dessous qui provient de la liste de diffusion freebsd-security-notifications.
=============================================================================
FreeBSD-SA-XX:XX.UTIL Security Advisory
The FreeBSD Project
Topic: denial of service due to some problem
Category: core
Module: sys
Announced: 2003-09-23
Credits: Person@EMAIL-ADDRESS
Affects: All releases of FreeBSD
FreeBSD 4-STABLE prior to the correction date
Corrected: 2003-09-23 16:42:59 UTC (RELENG_4, 4.9-PRERELEASE)
2003-09-23 20:08:42 UTC (RELENG_5_1, 5.1-RELEASE-p6)
2003-09-23 20:07:06 UTC (RELENG_5_0, 5.0-RELEASE-p15)
2003-09-23 16:44:58 UTC (RELENG_4_8, 4.8-RELEASE-p8)
2003-09-23 16:47:34 UTC (RELENG_4_7, 4.7-RELEASE-p18)
2003-09-23 16:49:46 UTC (RELENG_4_6, 4.6-RELEASE-p21)
2003-09-23 16:51:24 UTC (RELENG_4_5, 4.5-RELEASE-p33)
2003-09-23 16:52:45 UTC (RELENG_4_4, 4.4-RELEASE-p43)
2003-09-23 16:54:39 UTC (RELENG_4_3, 4.3-RELEASE-p39)
FreeBSD only: NO
For general information regarding FreeBSD Security Advisories,
including descriptions of the fields above, security branches, and the
following sections, please visit
http://www.freebsd.org/security/.
I. Background
II. Problem Description
III. Impact
IV. Workaround
V. Solution
VI. Correction details
VII. References















La comptabilité des processus est une mesure de sécurité avec laquelle un administrateur peut suivre l'utilisation des ressources du système, leur répartition entre les utilisateurs, surveiller le système et avoir un suivi minimal des commandes exécutées par un utilisateur.
Ce système possède des avantages et des inconvénients. Un de ses avantages est qu'une intrusion pourra être remontée jusqu'à son point d'entrée. Un des inconvénients est la quantité de journaux générée par cette comptabilité et l'espace disque que cela peut demander. Cette section guidera l'administrateur au travers des bases de la comptabilité des processus.
Avant de pouvoir utiliser la comptabilité des processus, il faut l'activer. Cela se fait en exécutant les commandes suivantes:
# touch /var/account/acct # accton /var/account/acct # echo 'accounting_enable="YES"' >> /etc/rc.conf
Une fois activée, les statistiques concernant le CPU, les commandes, etc. commenceront à être comptabilisée. Tous les journaux de comptabilisation des processus sont dans un format directement illisible pour l'utilisateur, ils pourront être examinés à l'aide de l'utilitaire sa(8). Si elle est utilisée sans paramètre, la commande sa affichera les informations relatives au nombre d'appels par utilisateur, le temps écoulé en minutes, la durée totale des temps CPU et utilisateur en minutes, le nombre moyen des opérations d'E/S, etc.
Pour afficher les informations sur les commandes utilisées, on emploiera l'utilitaire lastcomm(1). La commande lastcomm peut être employée pour afficher les commandes tapées par les utilisateurs sur des terminaux (ttys(5)) spécifiques; par exemple:
# lastcomm ls trhodes ttyp1
imprimera toute utilisation de la commande ls par l'utilisateur trhodes sur le terminal ttyp1.
De nombreuses autres options utiles existent et sont détaillées dans les pages de manuel lastcomm(1), acct(5) et sa(8).
Version française de Marc Fonvieille
<blackend@FreeBSD.org>.
Ce chapitre expliquera ce que sont les environnements jail (prisons) et comment les utiliser. Les environnements jail, souvent présentés comme une amélioration et un remplacement des environnements chrootés sont des outils très puissants pour les administrateurs système, mais certaines de leurs fonctionnalités de base peuvent être également utiles aux utilisateurs avancés.
Après avoir lu ce chapitre, vous connaîtrez:
Ce qu'est un environnement jail, et quelle utilité il peut avoir sur une installation FreeBSD.
Comment construire, démarrer et arrêter un environnement jail.
Les bases de l'administration d'un environnement jail, de l'intérieur et de l'extérieur de l'environnement.
D'autres sources d'information utiles concernant les environnements jail sont:
La page de manuel jail(8). C'est la référence pour l'emploi de l'utilitaire jail -- l'outil d'administration qui peut être utilisé sous FreeBSD pour démarrer, arrêter, et contrôler les environnements jail FreeBSD.
Les listes de diffusion et leurs archives. Les archives de la liste de diffusion pour les questions d'ordre général à propos de FreeBSD et d'autres listes hébergées par le serveur des listes de diffusion FreeBSD contiennent déjà quantité d'information sur les environnements jail. Il sera toujours conseillé de chercher dans les archives ou de poster une nouvelle question sur la liste de diffusion freebsd-questions.
Pour faciliter la compréhension des parties du système FreeBSD relatives aux jails, leurs mécanismes internes et la manière dont ils interagissent avec le reste de FreeBSD, les termes suivants seront utilisés tout au long de ce chapitre:
Un appel système FreeBSD, qui modifie le répertoire racine d'un processus et de tout ses descendants.
Environnement des processus pour lesquels l'emplacement de la racine du système de fichier a été modifiée (“chrootée”). Cela comprend les ressources comme la partie du système de fichiers qui est visible, les identifiants utilisateur et groupe qui sont disponibles, les interfaces réseaux et autres mécanismes IPC, etc.
L'utilitaire système d'administration qui permet le lancement de processus à l'intérieur d'un environnement jail.
Le système de contrôle d'un environnement jail. Le système hôte a accès à toutes les ressources matérielles disponibles, et peut contrôler des processus à l'extérieur et à l'intérieur d'un environnement jail. Une des différences importantes entre le système hôte et l'environnement jail est que les limitations qui s'appliquent aux processus du super-utilisateur à l'intérieur de l'environnement jail ne s'appliquent pas aux processus du système hôte.
Un processus, un utilisateur ou toute autre entité, dont l'accès aux ressources est limité par un environnement jail FreeBSD.
Comme l'administration système est une tâche difficile et déroutante, de nombreux outils ont été développés pour rendre la vie de l'administrateur plus simple. Ces outils apportent pour la plupart des améliorations dans la manière dont sont installés, configurés et maintenus les systèmes. Une partie des tâches dévolues à l'administrateur est la sécurisation du système, de façon à ce que le système puisse se consacrer aux tâches qui lui sont confiées sans toutefois mettre en péril sa propre sécurité.
Un de ces outils pouvant être employé pour augmenter la
sécurisation d'un système FreeBSD sont les environnements jail. Les environnements jail ont
été introduits sous FreeBSD 4.X par Poul-Henning Kamp <phk@FreeBSD.org>, mais
ils ont été fortement améliorés sous FreeBSD 5.X pour en
faire des sous-systèmes flexibles et puissants. Des développements sont
toujours en cours pour l'amélioration de leur utilité, performances,
fiabilité et sécurité.
Les systèmes BSD disposent de l'environnement chroot(2) depuis l'époque de 4.2BSD. L'utilitaire chroot(8) peut être employé pour changer le répertoire racine d'un ensemble de processus, créant ainsi un environnement sécurisé et séparé du reste du système. Les processus créés dans l'environnement chrooté ne peuvent accéder aux fichiers et aux ressources extérieures à cet environnement. Pour cette raison, si un attaquant compromet un service tournant dans un environnement chrooté, cela ne devrait pas lui permettre de compromettre l'intégralité du système. L'utilitaire chroot(8) est parfait pour des tâches simples qui ne demandent pas trop de flexibilité ou de fonctionnalités avancées et complexes. Depuis l'apparition du concept d'environnement chrooté, de nombreuses manières de s'échapper de ces environnements ont été découvertes, et bien que cela ait été corrigé dans les versions récentes du noyau FreeBSD, il est clair que l'environnement chroot(2) n'est pas la solution idéale pour la sécurisation des services. Un nouveau sous-système devait être implémenté.
Ceci est une des raisons principales à l'origine du développement de l'environnement jail.
Les environnements jail améliorent de plusieurs manières le concept d'environnement chroot(2). Dans un environnement chroot(2) traditionnel, les processus sont ne sont limités que dans la partie du système de fichiers à laquelle ils ont accès. Le reste des ressources système (comme l'ensemble des utilisateurs système, les processus en cours d'exécution, ou le réseau) est partagé par les processus de l'environnement chrooté et les processus du système hôte. L'environnement jail étend ce modèle en virtualisant non seulement l'accès au système de fichiers mais également l'ensemble des utilisateurs, la partie réseau du noyau FreeBSD et quelques autres éléments du système. Un ensemble plus complet de contrôles fins pour optimiser l'accès à un environnement jail est décrit dans la Section 15.5.
Un environnement jail est caractérisé par quatre éléments:
Une arborescence de répertoires -- le point d'accès à l'environnement jail. Une fois à l'intérieur de l'environnement jail, un processus ne peut s'échapper hors de cette arborescence. Les traditionnels problèmes de sécurité qui grèvent l'architecture chroot(2) d'origine n'affecteront pas les environnements jail FreeBSD.
Un nom de machine -- le nom de machine qui sera utilisé à l'intérieur de l'environnement jail. Les environnements jails sont principalement utilisés pour l'hébergement de services réseaux, par conséquent choisir un nom évocateur pour chaque environnement peut être d'une grande aide pour l'administrateur système.
Une adresse IP -- elle sera assignée à l'environnement jail et ne peut, en aucun cas, être modifiée pendant toute la durée de vie de l'environnement. L'adresse IP d'un environnement jail est en général un alias d'une interface réseau existante, mais cela n'est pas forcément nécessaire.
Une commande -- le chemin d'accès d'un exécutable à exécuter à l'intérieur de l'environnement jail. Il est relatif au répertoire racine de l'environnement jail, et peut beaucoup varier, en fonction du type d'environnement jail mis en oeuvre.
En dehors de cela les environnements jail peuvent avoir leur propre ensemble d'utilisateurs et leur propre utilisateur root. Naturellement les pouvoirs de l'utilisateur root sont limités à l'environnement jail et, du point de vue du système hôte, l'utilisateur root de l'environnement jail n'est pas un utilisateur omnipotent. De plus, l'utilisateur root d'un environnement jail n'est pas autorisé à effectuer des opérations critiques au niveau du système en dehors de son environnement jail(8). Plus d'information au sujet des possibilités et des restrictions de l'utilisateur root sera donnée dans la Section 15.5 ci-après.
Certains administrateurs divisent les environnements jail en deux catégories: les environnements jails “complets”, qui ressemblent à un véritable système FreeBSD, et les environnements jails de “service”, qui sont dédiés à une application ou un seul service, et tournant éventuellement avec des privilèges. Cette séparation est juste conceptuelle et n'affecte pas la création de l'environnement jail. La page de manuel jail(8) est très claire quant à la procédure de création d'un environnement jail:
# setenv D /here/is/the/jail # mkdir -p $D# cd /usr/src # make world DESTDIR=$D
# cd etc/ [9] # make distribution DESTDIR=$D
# mount_devfs devfs $D/dev
![]()




Une fois l'environnement jail installé, il peut être lancé en
employant l'utilitaire jail(8). Cet outil
requiert obligatoirement quatre arguments qui sont décrits dans la Section 15.3.1. D'autres arguments peuvent également
être utilisés, pour par exemple exécuter le processus avec les droits
d'un utilisateur particulier. L'argument command dépend du type d'environnement;
pour un système virtuel, /etc/rc est un bon choix puisque la séquence de
démarrage d'un véritable système FreeBSD sera dupliquée. Pour
un environnement jail de type service, cela dépendra du service ou de l'application
qui sera exécuté dans l'environnement jail.
Les environnements jails sont souvent lancés au démarrage de la machine et le système rc de FreeBSD propose une méthode simple pour cela.
Une liste des environnements jail autorisés à être lancés au démarrage du système devrait être ajoutée au fichier rc.conf(5):
jail_enable="YES" # Utiliser NO pour désactiver le lancement des environnements jail jail_list="www" # Liste des noms des environnements jail séparés par une espace
Pour chaque environnement listé dans jail_list, un ensemble de paramètres rc.conf(5), qui
décrivent l'environnement jail, devrait être ajouté:
jail_www_rootdir="/usr/jail/www" # le répertoire racine de l'environnement jail jail_www_hostname="www.example.org" # le nom de machine de l'environnement jail jail_www_ip="192.168.0.10" # son adresse IP jail_www_devfs_enable="YES" # monter devfs dans l'environnement jail jail_www_devfs_ruleset="www_ruleset" # les règles devfs à appliquer à l'environnement jail
Le démarrage par défaut des environnements jails, configuré
dans rc.conf(5),
exécutera la procédure /etc/rc de
l'environnement jail, ce qui suppose que l'environnement est un système
virtuel complet. Pour les environnements jail de service, la commande de
démarrage par défaut de l'environnement devrait être
modifiée en configurant correctement l'option jail_jailname_exec_start.
Note : Pour une liste complète des options disponibles, veuillez consulter la page de manuel rc.conf(5).
La procedure /etc/rc.d/jail peut être utilisée pour démarrer ou arrêter un environnement jail à la main si une entrée pour l'environnement existe dans le fichier rc.conf:
# /etc/rc.d/jail start www # /etc/rc.d/jail stop www
Il n'existe pas pour le moment de méthode propre pour arrêter un environnement jail(8). C'est dû au fait que les commandes normalement employées pour arrêter proprement un système ne peuvent être utilisées à l'intérieur d'un environnement jail. La meilleur façon d'arrêter un environnement jail est de lancer la commande suivante à l'intérieur de l'environnement ou en utilisant le programme jexec(8) depuis l'extérieur de l'environnement:
# sh /etc/rc.shutdown
Plus d'information à ce sujet peut être trouvé dans la page de manuel de jail(8).
Il existe plusieurs options qui peuvent être configurées pour n'importe quel environnement jail, et de nombreuses manières de combiner un système FreeBSD hôte avec des environnements jail pour donner naissance à des applications haut-niveau. Cette section présente:
Certaines des options disponibles pour l'optimisation du fonctionnement et des restrictions de sécurité implémentées par une installation jail.
Des applications de haut niveau pour la gestion des environnements jail, qui sont disponibles dans le catalogue des logiciels portés, et peuvent être utilisées pour implémenter des environnements jail complets.
L'optimisation de la configuration d'un environnement jail se fait principalement
par le paramétrage de variables sysctl(8). Une
sous-catégorie spécifique de sysctl(8) existe pour
toutes les options pertinentes: la hiérarchie security.jail.* d'options du noyau FreeBSD. Ci-dessous est
donnée une liste des principales variables relatives aux environnements
jail avec leur valeur par défaut. Leurs noms sont explicites, mais pour
plus d'information, veuillez vous référer aux pages de manuel jail(8) et sysctl(8).
security.jail.set_hostname_allowed: 1
security.jail.socket_unixiproute_only: 1
security.jail.sysvipc_allowed: 0
security.jail.enforce_statfs: 2
security.jail.allow_raw_sockets: 0
security.jail.chflags_allowed: 0
security.jail.jailed: 0
Ces variables peuvent être utilisées par l'administrateur du système hôte pour
ajouter ou retirer certaines limitations imposées par défaut à
l'utilisateur root. Notez que certaines limitations
ne peuvent être retirées. L'utilisateur root
n'est pas autorisé à monter ou démonter des
systèmes de fichiers à partir d'un environnement jail(8). L'utilisateur
root d'un environnement jail ne peut charger ou modifier
des règles devfs(8),
paramétrer des règles de pare-feu, ou effectuer des tâches
d'administration qui nécessitent la modification de données du
noyau, comme le paramétrage du niveau de sécurité securelevel du noyau.
Le système de base de FreeBSD contient un ensemble d'outils basiques pour afficher les informations au sujet des environnements jail actifs, pour s'attacher à un environnement jail pour lancer des commandes d'administration. Les commandes jls(8) et jexec(8) font partie du système de base de FreeBSD et peuvent être utilisées pour effectuer les tâches simples suivantes:
Afficher une liste des environnements jail actifs et leur identifiant (JID), leur adresse IP, leur nom de machine et leur emplacement.
S'attacher à un environnement jail actif, à partir de son système hôte, et exécuter une commande à l'intérieur de l'environnement ou effectuer des tâches d'administration à l'intérieur de environnement lui-même. C'est tout particulièrement utile quand l'utilisateur root veut arrêter proprement un environnement. L'utilitaire jexec(8) peut également être employé pour lancer un interpréteur de commandes dans un environnement jail pour faire de l'administration; par exemple:
# jexec 1 tcsh
Parmi les nombreux utilitaires tierce-partie pour l'administration des environnements jail, un des plus complet et utile est sysutils/jailutils. C'est un ensemble de petites applications qui aident à la gestion des environnements jail(8). Veuillez consulter sa page Web pour plus d'information.
Version française de Marc Fonvieille
<blackend@FreeBSD.org>.
FreeBSD 6.2 et les versions suivantes disposent d'un support pour l'audit d'événements relatifs à la sécurité du système. L'audit d'événements permet un enregistrement fiable et configurable d'une grande variété d'événements système en rapport avec la sécurité, parmi lesquels les ouvertures de session, les modifications de la configuration, et les accès aux fichiers et au réseau. Ces enregistrements ou journaux peuvent être d'une très grande aide pour la surveillance d'un système, pour la détection d'intrusion, et les analyses post-mortem. FreeBSD implémente l'API et le format de fichiers BSM publiés par Sun™ qui sont interopérables avec les implémentations d'audits de Solaris de Sun et de Mac OS X d'Apple®.
Ce chapitre se concentre sur l'installation et la configuration de l'audit des événements. Il explique les stratégies utilisées pour l'audit, et propose un exemple de configuration.
Après la lecture de ce chapitre, vous saurez:
Ce qu'est l'audit d'événements et comment cela fonctionne.
Comment configurer l'audit d'événements sous FreeBSD pour les utilisateurs et les processus.
Comment lire une trace d'audit en utilisant les outils de réduction et de lecture.
Avant de lire ce chapitre, vous devrez:
Comprendre les fondements d'UNIX et de FreeBSD (Chapitre 3).
Etre familier avec la configuration et la compilation du noyau (Chapitre 8).
Avoir quelques notions de sécurité et savoir comment les appliquer à FreeBSD (Chapitre 14).
Avertissement : La fonctionnalité d'audit sous FreeBSD 6.X est considérée comme expérimentale, aussi un déploiement en production ne devrait intervenir qu'après avoir considéré avec prudence les risques découlant de l'utilisation de logiciels expérimentaux. Parmi les limitations connues, on peut citer le fait que tous les événements systèmes en rapport avec la sécurité ne peuvent pas être soumis à un audit, et que certains mécanismes d'ouverture de session, comme les gestionnaires de procédures de connexions basés sur X11 et des “démons” tiers, ne permettent pas une configuration correcte de l'audit pour les ouvertures de session utilisateur.
Avertissement : Le système d'audit des événements permet la génération d'enregistrements détaillés de l'activité du système: sur un système occupé, un fichier journal d'audit peut être très important quand le système est configuré pour un haut niveau de détail, dépassant plusieurs gigaoctets par semaine sur certaines configurations. Les administrateurs système devraient prendre en compte les besoins en espace disque associés avec les configurations d'audit à haut niveau de détail. Par exemple, il peut être recommandé de dédier un système de fichiers à l'arborescence /var/audit de manière à ce que les autres systèmes de fichiers ne soient pas affectés si le système de fichiers pour les audits est plein.
Avant de lire ce chapitre, quelques termes relatifs à l'audit doivent être explicités:
événement: un événement pouvant être audité est n'importe quel événement pouvant faire l'objet d'un suivi par le système d'audit. La création d'un fichier, la mise en place d'une connection réseau, ou une ouverture de session sont des exemples d'événements relatifs à la sécurité. Les événements sont considérés soit comme “attribuables”, quand on peut les relier à un utilisateur authentifié, soit “non-attribuables” quand on ne peut pas les relier à un utilisateur authentifié. Des événements comme ceux qui apparaissent avant l'authentification durant le processus d'ouverture de session, tels que les tentatives avec un mauvais mot de passe, sont des événement non-attribuables.
classe: les classes d'événement désignent à l'aide d'un nom particulier des ensembles d'événements en rapport les uns avec les autres et sont utilisées dans les expressions de sélection des événements. Les classes d'événement généralement utilisées sont la “création de fichiers” (fc) l'“exécution” (ex) et l'“ouverture/fermeture de session” (lo).
enregistrement: un enregistrement est une entrée du fichier de trace d'audit décrivant un événement relatif à la sécurité. Les enregistrements contiennent le type d'événement, des informations sur l'auteur (l'utilisateur) de l'action, la date et l'heure, des informations sur tout objet ou argument en relation avec l'action, et une condition de succès ou d'échec.
trace d'audit: une trace d'audit, ou fichier journal, consiste en une série d'enregistrements décrivant les événements relatifs à la sécurité. Généralement ces traces sont organisées de manière chronologiques par rapport à l'horaire de fin des événements. Seuls les processus autorisés peuvent ajouter des enregistrements aux fichiers journaux d'audit.
expression de sélection: une expression de sélection est une chaîne de caractères contenant une liste de préfixes et de classes d'événement d'audit utilisés pour désigner des événements.
préselection: le processus par lequel le système identifie quels événements intéressent l'administrateur afin d'éviter la génération d'enregistrements d'audit sans intérêt pour l'administrateur. La configuration de la présélection utilise une série d'expressions de sélection pour déterminer quelles classes d'événement sont à auditer et pour quels utilisateurs, ainsi que le paramétrage global qui s'applique aux processus authentifiés et non-authentifiés.
réduction: le processus par lequel les enregistrements de traces d'audit existantes sont sélectionnés pour être conservés, imprimés ou analysés. Ou encore le processus qui supprime de la trace d'audit les enregistrements non-désirés. En utilisant le principe de réduction, les administrateurs peuvent mettre en place des stratégies pour la conservation des données d'audit. Par exemple, les traces d'audit détaillées peuvent être conservées pendant un mois, mais passé ce délai, les traces seront réduites afin de ne préserver pour archivage que les informations relatives aux ouvertures de sessions.
Le support pour l'audit des événements est installé avec le système de base de FreeBSD. Sous FreeBSD 7.0 et versions ultérieures, le support pour les audits est présent par défaut dans le noyau. Sous FreeBSD 6.X, ce support doit être compilé dans le noyau en ajoutant la ligne suivante au fichier de configuration du noyau:
options AUDIT
Recompilez et réinstallez le noyau en suivant le processus classique expliqué dans le Chapitre 8.
Une fois que le noyau supportant les audits a été compilé, installé, et que le système a été redémarré, activez le “démon” d'audit en ajoutant la ligne suivante au fichier rc.conf(5):
auditd_enable="YES"
Le support pour les audits peut alors être lancé par un redémarrage de la machine ou manuellement en lançant le “démon” d'audit:
/etc/rc.d/auditd start
Tous les fichiers de configuration de l'audit d'événements en rapport avec la sécurité se trouvent dans le répertoire /etc/security. Les fichiers suivants doivent être présents avant le lancement du “démon” d'audit:
audit_class - contient les définitions des classes d'audit.
audit_control - contrôle les caractéristiques du système d'audit comme les classes d'audit par défaut, l'espace disque minimal à conserver sur le volume réservé aux journaux, la taille maximale des traces d'audit, etc.
audit_event - les noms et la description des événements systèmes audités ainsi qu'une liste de classes auxquelles appartiennent chaque événement.
audit_user - les classes d'événement à auditer pour des utilisateurs spécifiques, qui s'ajoutent aux paramètres généraux fixés par défaut à l'ouverture de session.
audit_warn - une procédure modifiable utilisée par auditd pour générer des messages d'alerte lors des situations exceptionnelles comme un espace disque faible pour les fichiers journaux d'audit ou quand il y a eu rotation de ces fichiers journaux.
Avertissement : Les fichiers de configuration de l'audit devraient être modifiés et gérés avec prudence étant donné que des erreurs dans la configuration pourraient donner lieu à un enregistrement incorrect des événements.
Les expressions de sélection sont utilisées à plusieurs endroits dans la configuration du système d'audit pour déterminer quels événements doivent être suivis. Les expressions contiennent une liste de classes d'événements, chacune avec un préfixe indiquant si les enregistrements correspondants doivent être acceptés ou ignorés, et qui peut, de manière optionnelle, indiquer si l'entrée se limite aux opérations réussies ou aux échecs. Les expressions de sélection sont évaluées de gauche à droite, et deux expressions sont combinées en ajoutant l'une à la suite de l'autre.
La liste suivante contient les classes d'événements présentes par défaut dans le fichier audit_class:
all - all (tout) - correspond à toutes les classes d'événements.
ad - administrative (administration) - actions d'administration du système.
ap - application - action définie par l'application.
cl - file
close (fermeture de fichiers) - enregistre les utilisations de l'appel
système close.
ex - exec (exécution) - audite les exécutions de programmes. L'audit des arguments en ligne de commande et des variables d'environnement est contrôlé par via audit_control(5) en utilisant les paramètres argv et envv pour l'entrée policy.
fa - file attribute access - enregistre l'accès aux attributs des objets comme stat(1), pathconf(2) et les événements similaires.
fc - file create (création de fichiers) - enregistre les événements ayant pour résultat la création d'un fichier.
fd - file delete (suppression de fichiers) - enregistre les événements pour lesquels une suppression de fichier a lieu.
fm - file attribute modify (modification des attributs d'un fichier) - enregistre les événements lors desquels une modification des attributs d'un fichier intervient, comme l'utilisation de chown(8), chflags(1), flock(2), etc.
fr - file read (lecture de fichiers) - enregistre les événements qui donnent lieu à la lecture de données, l'ouverture de fichiers à la lecture, etc.
fw - file write (écriture de fichiers) - enregistre les événements qui donnent lieu à l'écriture de données, à l'écriture ou à la modification de fichiers, etc.
io - ioctl - enregistre l'utilisation de l'appel système ioctl(2).
ip - ipc - enregistre les différentes utilisations de communication inter-processus, dont les utilisations des tubes POSIX et les opérations IPC Système V.
lo - login_logout (ouverture et fermeture de session) - enregistre les ouvertures et fermeture de session (login(1) et logout(1)) intervenant sur le système.
na - non attributable (non-attribuable) - enregistre les événements non-attribuables.
no - invalid class (classe invalide) - ne correspond à aucun des événements surveillés.
nt - network (réseau) - enregistre les événements relatifs au réseau, comme l'utilisation des fonctions connect(2) et accept(2).
ot - other (autre) - enregistre les événements divers.
pc - process (processus) - enregistre les opérations sur les processus, comme l'utilisation des fonctions exec(3) et exit(3).
Ces classes d'événement peuvent être personnalisées en modifiant les fichiers de configuration audit_class et audit_event.
Chaque classe d'audit dans la liste est combinée avec un préfixe indiquant si les opérations réussies/échouées sont sélectionnées, et si l'entrée ajoute ou supprime une sélection pour la classe ou le type concerné.
(rien) enregistre les succès et les échecs de l'événement.
+ enregistre les événements réussis de cette classe.
- enregistre les événements de cette classe qui ont échoué.
^ n'enregistre ni les événements réussis ni les échecs de cette classe.
^+ ne pas enregistrer les événements réussis de cette classe.
^- ne pas enregistrer les événements de cette classe qui ont échoué.
L'exemple suivant d'expression de sélection permet la sélection des ouvertures et fermetures de session réussies ou échouées, et uniquement les exécutions ayant réussies:
lo,+ex
Dans la plupart des cas, les administrateurs ne devront modifier que deux fichiers lors de la configuration du système d'audit: audit_control et audit_user. Le premier contrôle les propriétés et les stratégies au niveau du système; le second peut être utilisé pour affiner l'audit pour chaque utilisateur.
Le fichier audit_control fixe un certain nombre de paramètres par défaut pour le système d'audit. Le contenu de ce fichier ressemble à ce qui suit:
dir:/var/audit flags:lo minfree:20 naflags:lo policy:cnt filesz:0
L'option dir est utilisée pour déclarer un ou plusieurs répertoires dans lesquels seront stockés les fichiers journaux. Si l'on mentionne plus d'un répertoire, ces derniers seront utilisés dans l'ordre à mesure qu'ils se remplissent. Il est classique de configurer le système d'audit pour le stockage des fichiers journaux sur un système de fichiers dédié, afin d'éviter toute interférence entre le système d'audit et d'autres systèmes si le système de fichiers est plein.
Le champ flags fixe le masque général de présélection utilisé par défaut pour les événements attribuables. Dans l'exemple ci-dessus, les ouvertures et fermetures de sessions réussies ou échouées sont enregistrées pour tous les utilisateurs.
L'option minfree définit le pourcentage minimal d'espace libre du système de fichiers sur lequel les traces d'audit sont stockées. Si cette limite est dépassée, un avertissement sera généré. L'exemple ci-dessus fixe l'espace minimal à vingt pourcent.
L'entrée naflags indique les classes à surveiller pour les événements non-attribués, comme les processus d'ouverture de session et les “démons” système.
L'entrée policy donne une liste d'indicateurs de stratégie contrôlant divers aspect du comportement de l'audit séparés par une virgule. L'indicateur cnt indique que le système devrait continuer à fonctionner en dépit d'un échec dans l'audit (l'emploi de cet indicateur est hautement recommandé). Un autre indicateur généralement utilisé est argv, qui provoque l'audit des arguments passés à l'appel système execve(2) lors de l'audit de l'exécution des commandes.
L'entrée filez indique la taille maximale en octets autorisée pour un fichier de trace avant qu'il soit interrompu et que le système provoque sa rotation. La valeur par défaut, 0, désactive la rotation automatique des journaux. Si la taille de fichier est différente de zéro mais inférieure à 512K, elle sera ignorée et un message sera généré.
Le fichier audit_user permet à l'administrateur de préciser des conditions supplémentaires d'audit pour des utilisateurs spécifiques. Chaque ligne paramètre l'audit pour un utilisateur par l'intermédiaire de deux champs: le premier est le champ alwaysaudit, qui indique l'ensemble des événements qui devraient toujours être surveillés pour l'utilisateur, le deuxième champ, neveraudit, indique un ensemble d'événements qui ne devrait jamais être audité pour cet utilisateur.
L'exemple suivant de fichier audit_user permet le suivi des ouvertures et fermetures de sessions et l'exécution de commandes avec succès de l'utilisateur root, et audite la création de fichiers et l'exécution de commandes avec succès pour l'utilisateur www. Si ce fichier est utilisé avec l'exemple précédent de fichier audit_control, l'entrée lo pour root est redondante, et les événements relatifs aux ouvertures et aux fermetures de sessions seront également enregistrés pour l'utilisateur www.
root:lo,+ex:no www:fc,+ex:no
Les traces d'audit sont stockées sous le format binaire BSM (“Basic Security Module”), aussi il sera nécessaire d'utiliser des outils pour modifier ou convertir en texte les fichiers de trace. La commande praudit(1) convertit les fichiers de trace en simple texte; la commande auditreduce(1) peut être utilisée pour réduire le fichier de trace en vue d'une analyse, d'un archivage, ou d'une impression. La commande auditreduce supporte une variété de paramètres de sélection, parmi lesquels le type d'événement, la classe de l'événement, l'utilisateur, la date ou l'heure de l'événement, et le chemin d'accès ou l'objet sur lequel on agit.
Par exemple, l'utilitaire praudit affichera sous forme de texte brut l'intégralité du contenu du fichier journal d'audit précisé:
# praudit /var/audit/AUDITFILE
Où AUDITFILE est le journal à afficher.
Les traces d'audit consistent en une série d'enregistrements constitués de champs que la commande praudit affiche de manière séquentielle, un par ligne. Chaque champ est spécifique, comme header contenant l'entête de l'enregistrement, ou path contenant le chemin d'accès. Ce qui suit est un exemple d'événement execve:
header,133,10,execve(2),0,Mon Sep 25 15:58:03 2006, + 384 msec exec arg,finger,doug path,/usr/bin/finger attribute,555,root,wheel,90,24918,104944 subject,robert,root,wheel,root,wheel,38439,38032,42086,128.232.9.100 return,success,0 trailer,133
Cet audit représente un appel réussi à execve, lors de l'exécution de la commande finger doug. Le champ pour les arguments contient la ligne de commande présentée par l'interpréteur de commandes au noyau. Le champ path contient le chemin d'accès à l'exécutable comme le voit le noyau. Le champ attribute décrit le binaire, et en particulier, précise les permissions sur le fichier qui permettent de déterminer si l'application avait les permissions “setuid”. Le champ subject décrit le sujet de l'audit, et conserve sous la forme d'une séquence l'identifiant (ID) de l'utilisateur audité, les identifiants groupe et utilisateur effectifs, les identifiants groupe et utilisateur réels, l'ID du processus, l'ID de la session, l'ID du port, et l'adresse correspondant à la session. Notez que l'ID de l'utilisateur pour l'audit diffère de l'ID réel de l'utilisateur: l'utilisateur robert est passé en root avant l'exécution de la commande, mais l'audit se fait par rapport à l'utilisateur authentifié original. Et enfin, le champ return indique la réussite de l'exécution, et le champ trailer termine l'enregistrement.
Sous FreeBSD 6.3 et versions suivantes, praudit supporte
également un format de sortie XML, qui peut être
sélectionné en utilisant l'argument -x.
Comme les journaux d'audit peuvent être très gros, un administrateur voudra ne conserver qu'une partie des enregistrements, comme par exemple les enregistrements associés à un utilisateur particulier:
# auditreduce -u trhodes /var/audit/AUDITFILE | praudit
Cette commande sélectionnera tous les enregistrements stockés dans le fichier AUDITFILE et concernant l'utilisateur trhodes.
Les membres du groupe audit sont autorisés à lire les traces d'audit présentes dans le répertoire /var/audit; par défaut ce groupe est vide, par conséquent seul l'utilisateur root pourra lire les traces d'audit. Des utilisateurs peuvent être ajoutés au groupe audit afin de déléguer les droits de lecture des audits à ses utilisateurs. Comme la possibilité de suivre le contenu des fichiers journaux de l'audit donne un aperçu significatif du comportement des utilisateurs et des processus, il est donc recommandé de déléguer avec prudence les droits de lecture des audits.
Les tubes (“pipes”) d'audit sont des pseudo-périphériques “clonables” du système de fichiers des périphériques qui autorisent aux applications l'accès au flux d'enregistrement des audits en cours. C'est de tout premier intérêt pour les auteurs d'applications de détection des intrusions et de surveillance du système. Pour l'administrateur, le tube d'audit est un moyen pratique d'autoriser la surveillance en direct sans avoir à faire face aux problèmes de permissions ou de rotation des fichiers journaux interrompant le flux des enregistrements des événements. Pour suivre le flux des enregistrements de l'audit en cours, utiliser la ligne de commande suivante:
# praudit /dev/auditpipe
Par défaut, les fichiers spéciaux de périphériques correspondant aux tubes d'audit ne sont accessibles qu'à l'utilisateur root. Pour les rendre accessibles aux membres du groupe audit, ajoutez une règle devfs au fichier devfs.rules:
add path 'auditpipe*' mode 0440 group audit
Consultez la page de manuel devfs.rules(5) pour plus d'information sur la configuration du système de fichiers devfs.
Avertissement : Il est relativement simple de produire un effet de boucle sans fin, dans lequel la consultation de chaque événement enregistré par le système d'audit provoque la génération de nouveaux événements d'audit. Par exemple, si toutes les entrées/sorties réseau sont surveillées, et que praudit(1) est exécuté depuis une session SSH, alors un flux continu d'événements sera généré suivant une fréquence importante, chaque événement affiché générant un autre événement. Il est recommandé d'exécuter praudit sur un tube par l'intermédiaire de sessions sans surveillance précise des entrées/sortie afin d'éviter que ne survienne un tel problème.
Les traces d'audit ne sont écrites que par le noyau, et ne sont gérées que par le “démon” d'audit, auditd. Les administrateurs ne devraient donc pas tenter d'utiliser newsyslog.conf(5) ou tout autre outil pour assurer la rotation directe des journaux d'audit. A la place, l'utilitaire audit devrait être employé pour stopper l'audit, reconfigurer le système d'audit et effectuer la rotation des journaux. La commande suivante provoque la création d'un nouveau fichier journal d'audit par le “démon” et signale au noyau d'utiliser le nouveau fichier pour les enregistrements. L'ancien fichier journal sera fermé et renommé et pourra, à partir de cet instant, être manipulé par l'administrateur.
# audit -n
Avertissement : Si le “démon” auditd ne tourne pas, cette commande échouera et un message d'erreur sera généré.
Ajouter la ligne suivante au fichier /etc/crontab provoquera la rotation des fichiers toutes les douze heures à l'aide de cron(8):
0 */12 * * * root /usr/sbin/audit -n
La modification sera prise en compte une fois que aurez sauvegardé le nouveau fichier /etc/crontab.
La rotation automatique du fichier d'une trace d'audit basée sur la taille
du fichier est possible à l'aide de l'option filesz de audit_control(5),
cette option est décrite dans la section de ce chapitre concernant les
fichiers de configuration.
Les fichiers de trace d'audit peuvent devenir très gros, il est souvent désirable de les compresser ou sinon de les archiver une fois qu'ils ont été fermés par le “démon” d'audit. La procédure audit_warn peut être employée pour effectuer des opérations personnalisées pour une variété d'événements relatifs à l'audit, y compris l'arrêt propre des traces d'audit lors de leur rotation. Par exemple, ce qui suit peut être ajouté à la procédure audit_warn pour compresser les traces d'audit à leur fermeture:
#
# Compression des fichiers de trace d'audit à leur fermeture.
#
if [ "$1" = closefile ]; then
gzip -9 $2
fi
D'autres activités d'archivage pourront inclure la copie des fichiers de trace vers un serveur central, la suppression d'anciennes traces, ou la réduction des traces pour supprimer les enregistrements inutiles. La procédure ne sera exécutée que lorsque les fichiers de trace d'audit auront été proprement arrêtés, et ne sera pas exécutée sur les traces interrompues en cours d'utilisation suite à un arrêt incorrect du système.
Version française de Marc Fonvieille
<blackend@FreeBSD.org>.
Ce chapitre couvre l'utilisation des disques sous FreeBSD. Cela comprend les disques mémoire, les disques réseau, les périphériques standards de stockage SCSI/IDE, et les périphériques utilisant l'interface USB.
Après la lecture de ce chapitre, vous connaîtrez:
La terminologie qu'utilise FreeBSD pour décrire l'organisation des données sur un disque physique (les partitions et les tranches).
Comment ajouter des disques durs supplémentaires sur votre système.
Comment configurer FreeBSD pour l'utilisation de périphériques de stockage USB.
Comment configurer des systèmes de fichiers virtuels, comme les disques mémoires.
Comment utiliser les quotas pour limiter l'usage de l'espace disque.
Comment chiffrer des disques pour les sécuriser contre les attaques.
Comment créer et graver des CDs et DVDs sous FreeBSD.
Les différents supports disponibles pour les sauvegardes.
Comment utiliser les programmes de sauvegarde disponibles sous FreeBSD.
Comment faire des sauvegardes sur disquettes.
Ce que sont les “snapshots” (instantanés) de systèmes de fichiers et comment les utiliser efficacement.
Avant de lire ce chapitre, vous devrez:
Savoir comment configurer et installer un nouveau noyau FreeBSD (Chapitre 8).
Ce qui suit est une liste des périphériques de stockage physiques, et des noms de périphériques associés.
Tableau 18-1. Conventions de nom pour les disques physiques
| Type de disque | Nom du périphérique |
|---|---|
| Disques durs IDE | ad |
| Lecteurs de CDROMs IDE | acd |
| Disques durs SCSI et périphériques de stockage USB | da |
| Lecteurs de CDROMs SCSI | cd |
| mcd pour les CD-ROMs Mitsumi, scd pour les CD-ROMs Sony | |
| Lecteurs de disquette | fd |
| Lecteurs de bande SCSI | sa |
| Lecteurs de bande IDE | ast |
| Disques flash | fla pour les périphériques Flash DiskOnChip® |
| Disques RAID | aacd pour l'AdvancedRAID Adaptec, mlxd et mlyd pour les Mylex, amrd le MegaRAID® d'AMI, idad pour le Smart RAID de Compaq, twed pour le 3ware® RAID. |
Supposons que nous voulions ajouter un second disque SCSI à une machine qui n'a pour l'instant qu'un seul disque. Commençons par arrêter l'ordinateur et installer le disque en suivant les instructions données par le constructeur de l'ordinateur, du contrôleur et du disque. Comme il y a de nombreuses façon de procéder, ces détails dépassent le cadre de ce document.
Ouvrons maintenant une session sous le compte root. Après avoir installé le disque, consultez le fichier /var/run/dmesg.boot pour vérifier que le nouveau disque a été reconnu. Dans notre exemple, le disque que nous venons d'ajouter sera le périphérique da1 et nous le monterons sur le répertoire /1 (si vous ajoutez un disque IDE, le nom de périphérique sera ad1).
FreeBSD tourne sur des ordinateurs compatibles IBM-PC, il doit tenir compte des partitions PC BIOS. Ces dernières sont différentes des partitions BSD traditionnelles. Un disque PC peut avoir jusqu'à quatre partitions. Si le disque va être réservé uniquement à FreeBSD, vous pouvez utiliser le mode dédié. Sinon, FreeBSD devra utiliser une des partitions PC BIOS. FreeBSD appelle les partitions PC BIOS tranches (``slices'') pour les distinguer des partitions BSD traditionnelles. Vous pouvez aussi des tranches sur un disque dédié à FreeBSD, mais utilisé sur une machine où un autre système d'exploitation est également installé. C'est une bonne manière pour éviter de perturber l'utilitaire fdisk des autres système d'exploitation différents de FreeBSD.
Dans le cas d'une tranche, le disque ajouté deviendra le périphérique /dev/da1s1e. Ce qui se lit: disque SCSI, numéro d'unité 1 (second disque SCSI), tranche 1 (partition PC BIOS 1), et partition BSD e. Dans le cas du mode dédié, le disque sera ajouté en tant que /dev/da1e.
En raison de l'utilisation d'entiers codés sur 32 bits pour stocker le nombre de secteurs, bsdlabel(8) est limité à 2^32-1 secteurs par disque ou 2TB dans la plupart des cas. Le format fdisk(8) n'autorise pas de secteur au delà de 2^32-1 et une largeur de plus de 2^32-1, limitant donc les partitions à 2TB et les disques à 4TB en général. Le format sunlabel(8) est limité à 2^32-1 secteur par partition et 8 partitions pour un total de 16TB d'espace. Pour des disques plus importants, les partitions gpt(8) peuvent être utilisées.
Naviguer dans sysinstall
Vous pouvez utiliser sysinstall et ses menus simples d'emploi pour partitionner et libeller le nouveau disque. Ouvrez une session sous le compte super-utilisateur root ou utilisez la commande su(1). Lancez sysinstall et sélectionnez Configure. A l'intérieur du menu FreeBSD Configuration Menu, descendez et sélectionnez l'option Fdisk.
L'éditeur de partition fdisk
Une fois dans l'utilitaire fdisk, nous pouvons taper A pour utiliser tout le disque pour FreeBSD. Lorsque l'on vous demande si vous voulez garder la possibilité de pouvoir coopérer avec d'autres systèmes d'exploitation (``remain cooperative with any future possible operating systems''), répondez par l'affirmative (YES). Enregistrez les modifications sur le disque avec W. Quittez maintenant l'éditeur fdisk en tapant q. La prochaine question concernera le secteur de démarrage (``Master Boot Record''). Comme vous ajoutez un disque à un système déjà opérationnel, choisissez None.
L'éditeur de label du disque
Ensuite, vous devez quitter puis relancer sysinstall. Suivez les instructions précédentes, en choisissant cette fois l'option Label. Vous entrerez dans l'éditeur de label du disque (Disk Label Editor). C'est là que vous allez créer les partitions BSD traditionnelles. Un disque peut avoir jusqu'à huit partitions, libellées de a à h. Certains de ces labels ont des significations particulières. La partition a est la partition racine (/). Seul votre disque système (e.g., celui à partir duquel vous démarrez) doit avoir une partition a. La partition b est utilisée pour la pagination, vous pouvez avoir plusieurs disques avec des partitions de pagination. La partition c désigne la totalité du disque en mode dédié, ou toute la tranche FreeBSD dans le cas contraire. Les autres partitions sont à usage général.
L'éditeur de label de sysinstall définit par défaut la partition e comme première partition qui n'est ni racine, ni de pagination. Dans l'éditeur de label, créez un seul système de fichiers avec l'option C. Quand on vous demande si ce sera un système de fichiers (FS) ou une partition de pagination, choisissez FS et indiquez un point de montage (e.g., /mnt). Lorsque vous ajoutez un disque sur un système déjà installé, sysinstall ne créera pas d'entrées dans /etc/fstab, donc le nom que vous donnez au point de montage n'a pas d'importance.
Vous pouvez maintenant écrire le nouveau label sur le disque et y créer un système de fichiers. Faites-le en tapant W. Ignorez les erreurs de sysinstall disant que la nouvelle partition ne peut être montée. Quittez maintenant l'éditeur de label et sysinstall.
Dernière étape
La dernière étape consiste à éditer le fichier /etc/fstab pour y ajouter une entrée pour votre nouveau disque.
Cette configuration permettra de faire fonctionner correctement votre disque dure avec d'autres systèmes d'exploitation qui pourraient être installé sur votre machine, et ne perturbera pas les utilitaires fdisk de ces autres systèmes d'exploitation. C'est la méthode recommandée pour l'installation de nouveau disques. N'utilisez le mode dédié que si vous avez une bonne raison de le faire!
# dd if=/dev/zero of=/dev/da1 bs=1k count=1 # fdisk -BI da1 #Initialize your new disk # bsdlabel -B -w da1s1 auto #Label it. # bsdlabel -e da1s1 # Edit the disklabel just created and add any partitions. # mkdir -p /1 # newfs /dev/da1s1e # Repeat this for every partition you created. # mount /dev/da1s1e /1 # Mount the partition(s) # vi /etc/fstab # Add the appropriate entry/entries to your /etc/fstab.
Si vous avez un disque IDE, remplacez da par ad.
Si le nouveau disque n'est pas destiné a être partagé avec un autre système d'exploitation, vous pouvez utiliser le mode dédié. Rappelez-vous que ce mode peut perturber les systèmes d'exploitation Microsoft; cependant, ils ne toucheront pas au disque. OS/2® d'IBM, au contraire, ``s'approprie'' toute partition qu'il trouve et ne reconnaît pas.
# dd if=/dev/zero of=/dev/da1 bs=1k count=1 # bsdlabel -Bw da1 auto # bsdlabel -e da1 # create the `e' partition # newfs -d0 /dev/da1e # mkdir -p /1 # vi /etc/fstab # add an entry for /dev/da1e # mount /1
Un autre méthode est:
# dd if=/dev/zero of=/dev/da1 count=2 # bsdlabel /dev/da1 | bsdlabel -BR da1 /dev/stdin # newfs /dev/da1e # mkdir -p /1 # vi /etc/fstab # add an entry for /dev/da1e # mount /1
Quand il est question du choix d'une solution de stockage de masse les critères de choix les plus importants à considérer sont la vitesse, la fiabilité, et le coût. Il est plutôt rare de pouvoir réunir ces trois critères; normalement un périphérique de stockage rapide et fiable est coûteux, et pour diminuer les coûts la vitesse ou la fiabilité doivent être sacrifiées.
A la conception du système décrit plus bas, le coût a été choisi comme facteur le plus important, suivi de la vitesse, et enfin la fiabilité. La vitesse de transfert des données est limitée par le réseau. Et tandis que la fiabilité est très importante, le disque CCD décrit ci-dessous est destiné au stockage de données en ligne qui sont déjà complètement sauvegardées sur CD-Rs et qui peuvent être facilement remplacées.
Définir vos propres besoins est la première étape dans le choix d'une solution de stockage de masse. Si vos critères de choix privilégient la vitesse ou la fiabilité par rapport au coût, votre solution diférera du système décrit dans cette section.
En plus du disque système IDE, trois disques Western Digital de 30Go, 5400 trs/min IDE forment le coeur du disque CCD décrit ci-dessous donnant approximativement 90Go de stockage en ligne. La solution idéale serait d'avoir pour chaque disque IDE son propre câble et contrôleur IDE, mais pour minimiser les coûts, des contrôleur IDE supplémentaires n'ont pas été utilisés. Aussi, les disques ont été configuré de telle façon que chaque contrôleur IDE ait un disque maître et un disque esclave.
Au redémarrage, le BIOS a été configuré pour détecter automatiquement les disques attachés. FreeBSD les a d'ailleurs détectés au redémarrage:
ad0: 19574MB <WDC WD205BA> [39770/16/63] at ata0-master UDMA33 ad1: 29333MB <WDC WD307AA> [59598/16/63] at ata0-slave UDMA33 ad2: 29333MB <WDC WD307AA> [59598/16/63] at ata1-master UDMA33 ad3: 29333MB <WDC WD307AA> [59598/16/63] at ata1-slave UDMA33
Note : Si FreeBSD ne détecte pas les disques, assurez-vous que vous avez correctement placé les cavaliers. La plupart des disques IDE disposent également d'un cavalier ``Cable Select''. Ce n'est pas le cavalier de configuration maître/esclave. Consultez la documentation du disque pour identifier le cavalier correct.
Ensuite, réfléchissez sur la manière de les intégrer au système de fichiers. Vous devriez faire des recherches sur vinum(8) (Chapitre 20) et ccd(4). Dans cette configuration particulière, ccd(4) a été choisi.
Le pilote ccd(4) vous permet de prendre plusieurs disques identiques et les concaténer en un seul système de fichiers logique. Afin d'utiliser ccd(4), vous avez besoin d'un noyau avec le support ccd(4). Ajoutez la ligne suivante à votre fichier de configuration de noyau, recompilez, et installez le noyau:
device ccd
Le support ccd(4) peut également chargé sous la forme d'un module noyau.
Pour configurer ccd(4), vous devez tout d'abord utiliser bsdlabel(8) pour labéliser les disques:
bsdlabel -w ad1 auto bsdlabel -w ad2 auto bsdlabel -w ad3 auto
Cela a créé un label de disque ad1c, ad2c et ad3c qui s'étend sur l'intégralité du disque.
L'étape suivante est de modifier le type de label de disque. Vous pouvez utiliser bsdlabel(8) pour éditer les disques:
bsdlabel -e ad1 bsdlabel -e ad2 bsdlabel -e ad3
Cela ouvre le label de disque actuel de chaque disque dans l'éditeur fixé par la variable d'environnement EDITOR, généralement, vi(1).
Un label de disque non modifié ressemblera à quelque chose comme ceci:
8 partitions: # size offset fstype [fsize bsize bps/cpg] c: 60074784 0 unused 0 0 0 # (Cyl. 0 - 59597)
Ajoutez une nouvelle partition e pour être
utilisé par ccd(4). Cela peut
être une copie de la partition c mais le type de
système de fichiers (fstype) doit être
4.2BSD. Le label de disque devait ressembler
à:
8 partitions: # size offset fstype [fsize bsize bps/cpg] c: 60074784 0 unused 0 0 0 # (Cyl. 0 - 59597) e: 60074784 0 4.2BSD 0 0 0 # (Cyl. 0 - 59597)
Maintenant que tous les disques sont labélisés, vous devez construire le ccd(4). Pour cela, utilisez ccdconfig(8), avec des options semblables à ce qui suit:
ccdconfig ccd032
0
/dev/ad1e
/dev/ad2e /dev/ad3e
L'utilisation et la signification de chaque option est données ci-dessous:




Après avoir utilisé ccdconfig(8) le ccd(4) est configuré. Un système de fichiers peut être créé. Consultez la page de manuel de newfs(8) pour les options disponibles, ou lancez simplement:
newfs /dev/ccd0c
Généralement, vous voudrez monter le ccd(4) à chaque redémarrage. Pour cela, vous devez le configurer avant toute chose. Ecrivez votre configuration actuelle dans /etc/ccd.conf en utilisant la commande suivante:
ccdconfig -g > /etc/ccd.conf
Lors du démarrage, la procédure /etc/rc exécute ccdconfig -C si /etc/ccd.conf existe. Cela configure automatiquement le ccd(4) de façon à pouvoir être monté.
Note : Si vous démarrez en mode mono-utilisateur, avant que vous ne puissiez monter le ccd(4), vous devez utiliser la commande suivante pour configurer l'unité:
ccdconfig -C
Pour monter automatiquement le ccd(4) placez une entrées pour le ccd(4) dans /etc/fstab, il sera ainsi monté au démarrage:
/dev/ccd0c /media ufs rw 2 2
Le gestionnaire de volume Vinum est un pilote de périphérique de gestion de disques virtuels. Il sépare le disque matériel de l'interface de périphérique bloc et organise les données de telle façon qu'il en résulte une amélioration de la flexibilité, des performances et de la fiabilité, comparé à la vision traditionnelle sous forme partitionnée du stockage disque. vinum(8) implémente les modèles RAID-0, RAID-1 et RAID-5, individuellement ou combinés.
Voir le Chapitre 20 pour plus d'information au sujet de vinum(8).
FreeBSD supporte également de nombreux contrôleurs RAID. Ces périphériques peuvent contrôler un système RAID sans nécessiter l'utilisation d'un logiciel spécifique pour FreeBSD pour gérer l'unité.
En utilisant son propre BIOS, la carte contrôle la plupart des opérations disque. Ce qui suit est une description rapide d'une configuration utilisant un contrôleur Promise IDE RAID. Quand cette carte est installée et le système redémarré, une invite s'affichera posant quelques questions. Suivez les instructions à l'écran pour atteindre l'écran de configuration de la carte. A partir de là, vous avez la possibilité de combiner tous les disques attachés. En faisant cela, les disques apparaîtront sous la forme d'un unique disque sous FreeBSD. D'autres niveaux RAID peuvent être configurés en conséquence.
FreeBSD vous permet de remplacer à chaud un disque défectueux dans une unité. Cela doit être fait avant redémarrage.
Vous verrez probablement dans /var/log/messages ou dans la sortie de dmesg(8) quelque chose comme:
ad6 on monster1 suffered a hard error. ad6: READ command timeout tag=0 serv=0 - resetting ad6: trying fallback to PIO mode ata3: resetting devices .. done ad6: hard error reading fsbn 1116119 of 0-7 (ad6 bn 1116119; cn 1107 tn 4 sn 11) status=59 error=40 ar0: WARNING - mirror lost
En utilisant atacontrol(8), recherchez de plus amples informations:
# atacontrol list ATA channel 0: Master: no device present Slave: acd0 <HL-DT-ST CD-ROM GCR-8520B/1.00> ATA/ATAPI rev 0 ATA channel 1: Master: no device present Slave: no device present ATA channel 2: Master: ad4 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5 Slave: no device present ATA channel 3: Master: ad6 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5 Slave: no device present # atacontrol status ar0 ar0: ATA RAID1 subdisks: ad4 ad6 status: DEGRADED
Vous devrez détacher le canal ATA avec le disque défectueux de façon à pouvoir le retirer sans risque:
# atacontrol detach ata3
Remplacer le disque.
Rattacher le canal ATA:
# atacontrol attach ata3 Master: ad6 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5 Slave: no device present
Rajouter le disque de rechange à l'unité:
# atacontrol addspare ar0 ad6
Recontruire l'unité:
# atacontrol rebuild ar0
Il est possible de contrôler l'avancée de la procédure en utilisant la commande suivante:
# dmesg | tail -10 [output removed] ad6: removed from configuration ad6: deleted from ar0 disk1 ad6: inserted into ar0 disk1 as spare # atacontrol status ar0 ar0: ATA RAID1 subdisks: ad4 ad6 status: REBUILDING 0% completed
Attendre jusqu'à la fin de cette opération.
De nombreuses solutions de stockage externes utilisent, de nos jours, le bus série universel (``Universal Serial Bus''--USB): disques durs, clés USB, graveurs de CDs, etc. FreeBSD fournit un support pour ces périphériques.
Le pilote de périphériques USB de stockage de masse, umass(4), fournit le support pour les périphériques de stockage USB. Si vous utilisez le noyau GENERIC, vous n'avez rien à modifier à votre configuration. Si vous utilisez un noyau personnalisé, assurez-vous que les lignes suivantes sont présentent dans votre fichier de configuration du noyau:
device scbus device da device pass device uhci device ohci device usb device umass
Le pilote umass(4) utilise le sous-système SCSI pour accéder aux périphériques de stockage USB, votre périphérique USB sera vu par le système comme étant un périphérique SCSI. En fonction du contrôleur USB présent sur votre carte mère, vous n'avez besoin qu'une des lignes device uhci et device ohci, cependant avoir les deux lignes dans votre configuration du noyau est sans danger. N'oubliez pas de compiler et d'installer le nouveau noyau si vous y avez effectué des modifications.
Note : Si votre périphérique USB est un graveur de CD ou de DVD, le pilote de périphérique SCSI CD-ROM, cd(4), doit être ajouté au noyau via la ligne:
device cdPuisque le graveur est vu comme un disque SCSI, le pilote atapicam(4) ne devrait pas être employé dans la configuration du noyau.
Le support pour les contrôleurs USB 2.0 est fourni avec FreeBSD vous devez cependant ajouter:
device ehci
à votre fichier de configuration pour bénéficier du support USB 2.0. Notez que les pilotes uhci(4) et ohci(4) sont toujours nécessaires si vous désirez le support de l'USB 1.X.
La configuration est prête à être testée: branchez votre périphérique USB, et dans le tampon des messages du système (dmesg(8)), le disque devrait apparaître de cette manière:
umass0: USB Solid state disk, rev 1.10/1.00, addr 2 GEOM: create disk da0 dp=0xc2d74850 da0 at umass-sim0 bus 0 target 0 lun 0 da0: <Generic Traveling Disk 1.11> Removable Direct Access SCSI-2 device da0: 1.000MB/s transfers da0: 126MB (258048 512 byte sectors: 64H 32S/T 126C)
Bien évidement, le modèle, le fichier spécial de périphérique (da0) et d'autres détails peuvent être différents en fonction de votre configuration.
Comme le périphérique USB est vu comme étant un périphérique SCSI, la commande camcontrol peut être employée pour lister les périphériques de stockage USB attachés au système:
# camcontrol devlist <Generic Traveling Disk 1.11> at scbus0 target 0 lun 0 (da0,pass0)
Si le disque dispose d'un système de fichiers, vous devriez pouvoir le monter. La Section 18.3 vous aidera à formater et créer des partitions sur le disque USB si nécessaire.
Pour rendre ce périphérique montable par un utilisateur normal, un certain nombre de paramétrages sont nécessaires. Tout d'abord, les entrées de périphériques qui sont créées lors de la connexion d'un périphérique USB doivent être accessibles à l'utilisateur. Une solution est de faire en sorte que tous les utilisateurs de ces périphériques soient membres du groupe operator. Cela se fait à l'aide de pw(8). Ensuite, quand ces entrées de périphériques sont créées, le groupe operator doit pouvoir y accéder en lecture et en écriture. Pour cela, les lignes suivantes sont ajoutées à /etc/devfs.rules:
[localrules=1] add path 'da*' mode 0660 group operator
Note : S'il y a déjà des disques SCSI dans le système, on doit procéder légèrement différemment. Par exemple, si le système contient déjà des disques da0 à da2 attachés au système, changez la seconde ligne pour:
add path 'da[3-9]*' mode 0660 group operatorLes disques déjà présents n'appartiendront pas au groupe operator.
Vous devez également activer votre ensemble de règles devfs.rules(5) dans votre fichier /etc/rc.conf:
devfs_system_ruleset="localrules"
Le noyau doit être ensuite configuré pour autoriser les utilisateurs habituels à monter des systèmes de fichiers. La méthode la plus simple est d'ajouter la ligne suivante au fichier /etc/sysctl.conf:
vfs.usermount=1
Notez que ce paramétrage ne prendra effet qu'au prochain redémarrage. Il est également possible d'utiliser sysctl(8) pour fixer cette variable.
La dernière étape est de créer un répertoire où le système de fichiers sera monté. Ce répertoire doit appartenir à l'utilisateur qui montera le système de fichiers. Une méthode adaptée et la création par root d'un sous-répertoire /mnt/$USER appartenant à l'utilisateur en question (remplacez $USER par le nom d'utilisateur de cet utilisateur):
# mkdir /mnt/$USER # chown $USER:$USER /mnt/$USER
Supposez qu'une clé USB soit branchée et qu'un périphérique /dev/da0s1 apparaît. Comme ce type de périphériques est en général livré préformaté avec un système de fichiers de type FAT, on pourra le monter de cette manière:
% mount -t msdosfs -m 644 -M 755 /dev/da0s1 /mnt/$USER
Si vous débranchez le périphérique (le disque doit être démonté auparavant), vous devriez voir dans les messages du système quelque chose comme:
umass0: at uhub0 port 1 (addr 2) disconnected (da0:umass-sim0:0:0:0): lost device (da0:umass-sim0:0:0:0): removing device entry GEOM: destroy disk da0 dp=0xc2d74850 umass0: detached
En plus des sections Ajouter des disques et Monter et démonter des systèmes de fichiers, la lecture de différentes pages de manuel peut être également utile: umass(4), camcontrol(8), et usbdevs(8).
Les CDs se différencient des disques conventionnels par de nombreuses caractéristiques. Au départ, ils n'étaient pas inscriptible par l'utilisateur. Ils sont conçu pour être lut de façon continue sans délai pour déplacer la tête de lecture entre les pistes. Ils sont également plus facile à déplacer entre systèmes que les supports de même taille à cette époque.
Les CDs possèdent des pistes, mais cela fait référence à un ensemble de données qui peuvent être lues de façon continue et non pas à une particularité physique du disque. Pour produire un CD sous FreeBSD, il faut préparer les fichiers de données qui vont constituer les pistes sur le CD, puis écrire les pistes sur le CD.
Le système de fichiers ISO 9660 a été conçu pour gérer ces différences. Malheureusement il incorpore des limites du système de fichiers qui semblaient normale alors. Mais heureusement, il fournit un mécanisme d'extension qui permet au CDs proprement gravés de passer outre ces limites tout en restant lisibles par les systèmes qui ne supportent pas ces extensions.
Le logiciel sysutils/cdrtools comprend mkisofs(8), un programme que vous pouvez utiliser pour produire un fichier de données contenant un système de fichiers ISO 9660. Il dispose d'options pour le support de diverses extensions, et est décrit ci-dessous.
L'outil a utiliser pour graver un CD varie en fonction du type de graveur de CD: ATAPI ou autre. Les graveurs ATAPI utilisent le programme burncd qui fait partie du système de base. Les graveurs SCSI ou USB devraient utiliser l'utilitaire cdrecord du logiciel porté sysutils/cdrtools port. Il est également possible d'utiliser cdrecord et d'autres outils pour lecteurs SCSI sur du matériel ATAPI avec le module ATAPI/CAM.
Si vous voulez un programme de gravure de CD avec une interface graphique, vous devriez jeter un oeil à X-CD-Roast ou K3b. Ces outils sont disponibles sous une version pré-compilée ou à partir des logiciels portés sysutils/xcdroast et sysutils/k3b. X-CD-Roast et K3b nécessitent le module ATAPI/CAM avec des périphériques ATAPI.
L'utilitaire mkisofs(8), qui fait partie du logiciel porté sysutils/cdrtools, produit un système de fichiers ISO 9660 qui est une image de l'arborescence des répertoires dans un système de fichiers UNIX. L'utilisation la plus simple est:
# mkisofs -o fichierimage.iso /chemin/vers/arborescence
Cette commande créera un fichierimage.iso contenant un système de fichiers ISO 9660 qui est une copie de l'arborescence /chemin/vers/arborescence. Durant le processus de création, les noms de fichiers seront modifiés de façon à respecter les limitations de la norme ISO 9660, et rejettera les fichiers ayant des noms non acceptables pour un système de fichiers ISO.
De nombreuses options sont disponibles pour passer outre ces restrictions. En
particulier, -R qui autorise les extensions Rock Ridge
communes aux systèmes UNIX, -J qui active les extensions Joliet utilisées par les
systèmes Microsoft, et -hfs peut être
utilisé pour créer des systèmes de fichiers HFS utilisés
par Mac OS.
Pour des CDs qui sont destinés à n'être utilisé que
sur des systèmes FreeBSD, l'option -U peut
être utilisée pour désactiver toutes les restrictions au niveau
des noms de fichiers. Quand elle est utilisée avec l'option -R, cela produit une image de système de fichiers qui
est identique à l'arborescence FreeBSD d'origine, cependant ce système
de fichiers pourra violer la norme ISO 9660 de nombreuses façon.
La dernière option d'usage général est l'option -b. Elle est utilisée pour indiquer l'emplacement de
l'image de démarrage à utiliser dans la création d'un CD
démarrable “El Torito”. Cette option prend en argument le chemin
vers une image de démarrage à partir de la racine de l'arborescence
qui va être copiée sur le CD. Par défaut,
mkisofs(8)
créé une image ISO dans un mode appelé “émulation
de disquette”, et s'attend donc à une image de démarrage de
1200, 1440 ou 2880 Ko en taille. Certains chargeurs, comme celui
utilisé par les disques d'installation de FreeBSD, n'utilisent pas ce mode
d'émulation, dans ce cas l'option -no-emul-boot
devrait être utilisée. Aussi, si /tmp/monboot contient un système FreeBSD avec une image
de démarrage dans /tmp/monboot/boot/cdboot, vous
pourrez produire l'image d'un système de fichiers ISO 9660 dans /tmp/bootable.iso de cette façon:
# mkisofs -R -no-emul-boot -b boot/cdboot -o /tmp/bootable.iso /tmp/monboot
Cela étant fait, si vous avez le pilote md configuré dans votre noyau, vous pouvez monter le système de fichiers avec:
# mdconfig -a -t vnode -f /tmp/bootable.iso -u 0 # mount -t cd9660 /dev/md0 /mnt
A ce moment vous pouvez vérifier que /mnt et /tmp/monboot sont identique.
Il existe de nombreuses autres options que vous pouvez utiliser avec mkisofs(8) pour régler finement son comportement. En particulier: les modifications d'une organisation ISO 9660 et la création de disques Joliet et HFS. Voir la page de manuel mkisofs(8) pour plus de détails.
Si vous disposez d'un graveur de CD ATAPI, vous pouvez utiliser la commande burncd pour graver une image ISO sur un CD. burncd fait partie du système de base, installé sous /usr/sbin/burncd. Son utilisation est très simple, car il dispose de peu d'options:
# burncd -f cddevice data fichierimage.iso fixate
Gravera une copie de fichierimage.iso sur cddevice. Le périphérique par défaut est /dev/acd0. Consultez burncd(8) pour les options pour fixer la vitesse d'écriture, éjecter le CD après gravure, et graver des données audios.
Si vous n'avez pas de graveur de CD ATAPI, vous devrez utiliser cdrecord pour graver vos CDs. cdrecord ne fait pas partie du système de base; vous devez l'installer soit à partir du logiciel porté sysutils/cdrtools ou de la version pré-compilée appropriée. Des modifications du système de base peuvent provoquer le dysfonctionnement des versions binaires de ce programme, et donner lieu à une production de ``dessous de bouteille''. Vous devrez par conséquent soit mettre à jour le logiciel porté quand vous mettez à jour votre système, soit si vous suivez la branche -STABLE, mettre à jour le logiciel porté lorsqu'une nouvelle version est disponible.
Bien que cdrecord dispose de nombreuses options, l'usage de base est même plus simple qu'avec burncd. La gravure d'une image ISO 9660 se fait avec:
# cdrecord dev=device fichierimage.iso
La partie délicate dans l'utilisation de cdrecord
est la recherche de la valeur à utiliser pour l'option dev. Pour déterminer le bon paramètre à
utiliser, utilisez l'indicateur -scanbus de cdrecord, qui produira des résultats du type:
# cdrecord -scanbus
Cdrecord-Clone 2.01 (i386-unknown-freebsd7.0) Copyright (C) 1995-2004 Jörg Schilling
Using libscg version 'schily-0.1'
scsibus0:
0,0,0 0) 'SEAGATE ' 'ST39236LW ' '0004' Disk
0,1,0 1) 'SEAGATE ' 'ST39173W ' '5958' Disk
0,2,0 2) *
0,3,0 3) 'iomega ' 'jaz 1GB ' 'J.86' Removable Disk
0,4,0 4) 'NEC ' 'CD-ROM DRIVE:466' '1.26' Removable CD-ROM
0,5,0 5) *
0,6,0 6) *
0,7,0 7) *
scsibus1:
1,0,0 100) *
1,1,0 101) *
1,2,0 102) *
1,3,0 103) *
1,4,0 104) *
1,5,0 105) 'YAMAHA ' 'CRW4260 ' '1.0q' Removable CD-ROM
1,6,0 106) 'ARTEC ' 'AM12S ' '1.06' Scanner
1,7,0 107) *
Cela donne la valeur dev appropriée pour les
périphériques listés. Recherchez votre graveur de CD dans
la liste, et utilisez les trois chiffres séparés par une virgule comme
valeur pour dev. Dans notre cas le
périphérique de gravure est 1,5,0, donc l'entrée
appropriée serait dev=1,5,0. Il existe des
manières plus simple de spécifier cette valeur, consultez la page de
manuel
cdrecord(1)
pour des détails. C'est également la documentation à
consulter pour des informations sur la gravure de pistes audios, le
contrôle de la vitesse, et d'autres choses.
Vous pouvez dupliquer un CD audio en effectuant l'extraction des données audio du CD vers un ensemble de fichiers, puis graver ces fichiers sur un CD vierge. Le processus est légèrement différent entre lecteurs ATAPI et SCSI.
Lecteurs SCSI
Utiliser cdda2wav pour effectuer l'extraction audio.
% cdda2wav -v255 -D2,0 -B -Owav
Utiliser cdrecord pour graver les fichiers .wav.
% cdrecord -v dev=2,0 -dao -useinfo *.wav
Assurez-vous que 2,0 est choisi correctement, comme décrit dans Section 18.6.4.
Lecteurs ATAPI
Le pilote CD ATAPI rend disponible chaque piste sous la forme /dev/acddtnn, où d est le numéro de lecteur, et nn est le numéro de la piste écrit sur deux digits décimaux. Donc la première piste sur le premier lecteur est /dev/acd0t01, la seconde est /dev/acd0t02, la troisième /dev/acd0t03, et ainsi de suite.
Assurez-vous que les fichiers appropriés existent sous /dev. Si ces entrées sont absentes, forcez le système à lire le disque à nouveau:
# dd if=/dev/acd0 of=/dev/null count=1
Extraire chaque piste en utilisant dd(1). Vous devez également préciser une taille de bloc durant l'extraction des fichiers.
# dd if=/dev/acd0t01 of=piste1.cdr bs=2352 # dd if=/dev/acd0t02 of=piste2.cdr bs=2352 ...
Graver les fichiers récupérés en utilisant burncd. Vous devez spécifier que ce sont des fichiers audio, et que burncd devra fermer le disque une fois terminé.
# burncd -f /dev/acd0 audio piste1.cdr piste2.cdr ... fixate
vous pouvez copier un CD de données vers un fichier image équivalent au fichier créé avec mkisofs(8), et vous pouvez l'utiliser pour dupliquer n'importe quel CD de données. L'exemple présenté ici suppose que votre lecteur de CDROM est les périphérique acd0. Remplacez-le avec le périphérique correct.
# dd if=/dev/acd0 of=fichier.iso bs=2048
Vous disposez maintenant d'une image, vous pouvez la graver comme décrit plus haut.
Maintenant que vous avez créé une CDROM de données standard, vous voulez probablement le monter et lire les données présentes. Par défaut, mount(8) suppose que le système de fichier à monter est de type UFS. Si vous essayez quelque chose comme:
# mount /dev/cd0 /mnt
vous obtiendrez une erreur du type “Incorrect super
block”, et pas de montage. Le CDROM n'est pas un système de
fichiers de type UFS, aussi toute tentative de montage de
ce type échouera. Vous devez juste préciser à mount(8) que le
système de fichiers est du type ISO9660, et
tout fonctionnera. Cela se fait en spécifiant l'option -t cd9660 option à mount(8). Par
exemple, si vous désirez monter un CDROM, contenu dans le lecteur /dev/cd0, sous /mnt, vous devrez
exécuter:
# mount -t cd9660 /dev/cd0 /mnt
Notez que votre nom de lecteur (/dev/cd0 dans cet
exemple) pourra être différent, en fonction de l'interface
utilisée par votre lecteur de CDROM. De plus l'option -t cd9660 ne fait qu'exécuter la commande mount_cd9660(8).
L'exemple précédent pourrait être réduit à:
# mount_cd9660 /dev/cd0 /mnt
Vous pouvez généralement utiliser des CDROMs de données de
n'importe quelle provenance de cette façon. Les disques avec certaines
extensions ISO 9660 pourront se comporter de façon étrange,
cependant. Par exemple, les disques Joliet conservent tous les noms de fichiers
en utilisant des caractères Unicodes sur 2 octets. Le noyau FreeBSD ne
comprend pas l'Unicode, mais le pilote CD9660 de FreeBSD est en mesure de
convertir au vol les caractères Unicode. Si des caractères
non-anglais apparaissent sous la forme de points d'interrogation, vous devrez
préciser la table de caractères locale que vous utilisez avec l'option
-C. Pour plus d'information, consultez la page de
manuel mount_cd9660(8).
Note : Pour pouvoir effectuer cette conversion de caractères à l'aide de l'option
-C, le module cd9660_iconv.ko devra être chargé. Cela peut être fait soit en ajoutant au fichier loader.conf la ligne:cd9660_iconv_load="YES"puis en redémarrant la machine, soit en chargeant directement le module avec kldload(8).
Occasionnellement, vous pourrez obtenir le message “Device not configured” (périphérique non configuré) lors d'une tentative de montage d'un CDROM. Cela veut généralement dire que le lecteur de CDROM pense qu'il n'y a pas de disque dans le lecteur, ou que le lecteur n'est pas visible sur le bus. Cela peut demander plusieurs secondes à un lecteur de CDROM de s'apercevoir qu'il a été chargé, soyez donc patient.
Parfois, un lecteur de CDROM SCSI peut être manquant parce qu'il n'a pas eu suffisamment de temps pour répondre à la réinitialisation du bus. Si vous avez un lecteur de CDROM SCSI, veuillez ajouter l'option suivante à la configuration de votre noyau et recompiler votre noyau.
options SCSI_DELAY=15000
Ceci demande à votre bus SCSI une pause de 15 seconds au démarrage, pour donner à votre lecteur de CDROM une chance de répondre la réinitialisation du bus.
Il est possible de graver directement un fichier sur CD, sans créer de système de fichiers ISO 9660. Certaines personnes le font dans le cas de sauvegardes. Cela est beaucoup plus rapide que de graver un CD standard:
# burncd -f /dev/acd1 -s 12 data archive.tar.gz fixate
Afin de récupérer les données gravées sur un tel CD, vous devez lire les données à partir du fichier spécial de périphériques en mode caractère:
# tar xzvf /dev/acd1
Vous ne pouvez monter ce disque comme vous le feriez avec un CDROM classique. Un tel CDROM ne pourra être lu sous un autre système d'exploitation en dehors de FreeBSD. Si vous voulez être en mesure de monter le CD, ou d'en partager les données avec un autre système d'exploitation, vous devez utiliser mkisofs(8) comme décrit plus haut.
Ce pilote permet d'accéder aux périphériques ATAPI (lecteurs de CD-ROM, graveurs CD-RW, lecteur de DVD etc...) par l'intermédiaire du sous-système SCSI, et autorise l'utilisation d'applications comme sysutils/cdrdao ou cdrecord(1).
Pour utiliser ce pilote, vous devrez ajouter la ligne suivante au fichier /boot/loader.conf:
atapicam_load="YES"
puis redémarrez votre machine.
Note : Si vous préférez compiler en statique dans le noyau le support atapicam(4), vous devrez ajouter au fichier de configuration du noyau la ligne:
device atapicamVous avez également besoin des lignes suivantes dans votre fichier de configuration:
device ata device scbus device cd device passqui devraient être déjà présentes. Puis recompilez, installez votre nouveau noyau, et enfin redémarrez votre machine.
Lors du démarrage, votre graveur devrait apparaître, comme suit:
acd0: CD-RW <MATSHITA CD-RW/DVD-ROM UJDA740> at ata1-master PIO4 cd0 at ata1 bus 0 target 0 lun 0 cd0: <MATSHITA CDRW/DVD UJDA740 1.00> Removable CD-ROM SCSI-0 device cd0: 16.000MB/s transfers cd0: Attempt to query device size failed: NOT READY, Medium not present - tray closed
Le lecteur doit être accessible via le nom de périphérique /dev/cd0, par exemple pour monter un CD-ROM sous /mnt, tapez juste ce qui suit:
# mount -t cd9660 /dev/cd0 /mnt
En tant que root, vous pouvez exécuter la commande suivante pour obtenir l'adresse SCSI du graveur:
# camcontrol devlist <MATSHITA CDRW/DVD UJDA740 1.00> at scbus1 target 0 lun 0 (pass0,cd0)
Donc 1,0,0 sera l'adresse SCSI à utiliser avec cdrecord(1) et tout autre application SCSI.
Pour plus d'information concernant ATAPI/CAM et le système SCSI, consultez les pages de manuel atapicam(4) et cam(4).
Comparé au CD, le DVD est la génération technologique suivante de support optique de stockage de données. Un DVD peut contenir plus de données qu'un CD et est de nos jour le standard pour la publication de vidéos.
Cinq formats physiques enregistrables peuvent être définis pour ce que nous appellerons un DVD enregistrable:
DVD-R: Ce fut le premier format DVD enregistrable disponible. La norme DVD-R est définie par le Forum DVD. Ce format n'est pas réinscriptible.
DVD-RW: C'est la version réinscriptible du standard DVD-R. Un DVD-RW peut supporter environ 1000 réécritures.
DVD-RAM: C'est également un format réinscriptible supporté par le Forum DVD. Un DVD-RAM peut être vu comme un disque dur extractible. Cependant, ce support n'est pas compatible avec la plupart des lecteurs DVD-ROM et DVD-Vidéo; seuls quelques graveurs de DVDs supportent le DVD-RAM. Consultez la Section 18.7.9 pour plus d'information sur l'utilisation d'un DVD-RAM.
DVD+RW: C'est un format réinscriptible défini par l' Alliance DVD+RW. Un DVD+RW supporte environ 1000 réécritures.
DVD+R: Ce format est la version non-réinscriptible du format DVD+RW.
Un DVD enregistrable simple couche peut contenir jusqu'à 4 700 000 000 octets ce qui équivaut en fait à 4.38 Go ou 4485 Mo (1 kilo-octet représente 1024 octets).
Note : Une différence doit être faite entre un support physique et son application. Par exemple un DVD-Vidéo est une organisation de fichiers particulière qui peut être écrite sur n'importe quel type de DVD enregistrable: DVD-R, DVD+R, DVD-RW etc. Avant de choisir le type de support, vous devez vous assurer que le graveur et le lecteur de DVD-Vidéo (lecteur de salon ou un lecteur de DVD-ROM sur un micro-ordinateur) sont compatibles avec le support.
Le programme growisofs(1) sera utilisé pour effectuer la gravure des DVDs. Cette commande fait partie des utilitaires dvd+rw-tools (sysutils/dvd+rw-tools). Les outils dvd+rw-tools supportent l'ensemble des supports DVD.
Ces utilitaires utilisent le sous-système SCSI pour accéder aux périphériques, par conséquent le support ATAPI/CAM doit être ajouté à votre noyau. Si votre graveur utilise l'interface USB, cet ajout est inutile et vous devriez lire la Section 18.5 sur la configuration de périphériques USB.
Vous devez également activer l'accès aux périphériques ATAPI par DMA, cela peut être fait en ajoutant la ligne suivante au fichier /boot/loader.conf:
hw.ata.atapi_dma="1"
Avant de tenter d'utiliser les utilitaires dvd+rw-tools vous devriez consulter les notes de compatibilité matérielle des dvd+rw-tools pour des informations concernant votre graveur de DVDs.
Note : Si vous désirez une interface graphique, vous devriez jeter un oeil à K3b (sysutils/k3b) qui offre une interface conviviale à growisofs(1) et à d'autres outils de gravure.
La commande growisofs(1) est une interface à mkisofs, elle invoquera mkisofs(8) pour la création du système de fichiers et effectuera la gravure des données sur le DVD. Cela signifie que vous n'avez pas besoin de créer une image des données avant le processus de gravure.
Pour écrire les données du répertoire /path/to/data, utilisez la commande suivante:
# growisofs -dvd-compat -Z /dev/cd0 -J -R /path/to/data
Les options -J -R sont passées à
mkisofs(8) pour
la création du système de fichiers (dans le cas présent: un
système de fichiers ISO 9660 avec les extensions Joliet et Rock Ridge),
consultez la page de manuel de
mkisofs(8)
pour plus de détails.
L'option -Z est utilisée pour la session
d'écriture initiale dans tous les cas: multi-sessions ou pas. Le
périphérique correspondant au graveur, /dev/cd0, doit être adapté en fonction
de votre configuration. Le paramètre -dvd-compat provoquera la fermeture du disque, rien ne pourra
être écrit à la suite de l'enregistrement. En retour cela
devrait donner lieu à une plus grande compatibilité avec les lecteurs
de DVD-ROMs.
Il est également possible de graver une image de système de fichiers, par exemple pour graver l'image imagefile.iso, nous lancerons:
# growisofs -dvd-compat -Z /dev/cd0=imagefile.iso
La vitesse d'écriture devrait être détectée et
positionnée automatiquement en fonction du support et du graveur
utilisé. Si vous voulez forcer la vitesse de gravure, utilisez le
paramètre -speed=. Pour plus d'informations,
lisez la page de manuel de
growisofs(1).
Un DVD-Vidéo est un système de fichiers particulier basé sur les spécifications IS0 9660 et micro-UDF (M-UDF). Le DVD-Vidéo présente également une arborescence de données spécifique, c'est la raison pour laquelle vous devez utiliser un programme particulier tel que multimedia/dvdauthor pour créer le DVD.
Si vous disposez déjà d'une image du système de fichiers du DVD-Vidéo, gravez-la de la même façon que pour une autre image, reportez-vous aux sections précédentes pour un exemple. Si vous avez réalisé vous-même l'arborescence du DVD et que le résultat est dans, par exemple, le répertoire /path/to/video, la commande suivante devrait être utilisée pour graver le DVD-Vidéo:
# growisofs -Z /dev/cd0 -dvd-video /path/to/video
L'option -dvd-video sera passée à
mkisofs(8) et
lui demandera de créer un système de fichiers de DVD-Vidéo. De
plus, l'option -dvd-video implique l'option -dvd-compat de
growisofs(1).
Contrairement à un CD-RW, un DVD+RW vierge doit être formaté avant la première utilisation. Le programme growisofs(1) s'en chargera automatiquement quand cela sera nécessaire, ce qui est la méthode recommandée. Cependant vous pouvez utiliser la commande dvd+rw-format pour formater le DVD+RW:
# dvd+rw-format /dev/cd0
Vous devez effectuer cette opération qu'une seule fois, gardez à l'esprit que seuls des DVD+RW vierges doivent être formatés. Ensuite vous pouvez graver le DVD+RW de la manière vue dans les sections précédentes.
Si vous voulez graver de nouvelles données (graver un système de fichiers totalement nouveau et pas juste ajouter des données) sur un DVD+RW, vous n'avez pas besoin de l'effacer, vous avez juste à récrire sur l'enregistrement précédent (en effectuant une nouvelle session initiale), comme ceci:
# growisofs -Z /dev/cd0 -J -R /path/to/newdata
Le format DVD+RW offre la possibilité d'ajouter facilement des données à un enregistrement précédent. L'opération consiste à fusionner une nouvelle session avec la session existante, ceci n'est pas une gravure multisession, growisofs(1) augmentera le système de fichiers ISO 9660 présent sur le disque.
Par exemple, si nous voulons ajouter des données à notre DVD+RW précédent, nous devons utiliser cela:
# growisofs -M /dev/cd0 -J -R /path/to/nextdata
Les mêmes options de mkisofs(8) utilisées lors de la gravure de la session initiale doivent être à nouveau utilisées lors des écritures ultérieures.
Note : Vous pouvez ajouter l'option
-dvd-compatsi vous désirez une meilleure compatibilité avec les lecteurs de DVD-ROM. Dans le cas d'un DVD+RW cela ne vous empêchera pas de rajouter des données par la suite.
Si pour une quelconque raison vous voulez vraiment effacer le disque, faites ce qui suit:
# growisofs -Z /dev/cd0=/dev/zero
Un DVD-RW accepte deux formats de disque: le format séquentiel incrémental et le format ``restricted overwrite''. Par défaut les disques DVD-RW sont fournis sous le format séquentiel.
Un DVD-RW vierge peut être directement gravé sans le besoin d'une opération de formatage préalable, cependant un DVD-RW non-vierge au format séquentiel doit être effacé avant de pouvoir y écrire une nouvelle session initiale.
Pour effacer un DVD-RW en mode séquentiel, exécutez:
# dvd+rw-format -blank=full /dev/cd0
Note : Une opération d'effacement complète (
-blank=full) prendra environ une heure avec un support 1x. Un effacement rapide peut être effectué en utilisant l'option-blanksi le DVD-RW est destiné à être enregistré suivant le mode d'écriture Disk-At-Once (DAO). Pour écrire le DVD-RW suivant le mode DAO, utilisez la commande:# growisofs -use-the-force-luke=dao -Z /dev/cd0=imagefile.isoL'option
-use-the-force-luke=daone devrait pas être nécessaire puisque growisofs(1) tente de détecter les supports effacés rapidement et engage une écriture DAO.En fait le mode ``restricted overwrite'' devrait être utilisé avec tout DVD-RW, ce format est plus flexible que le format séquentiel incrémental par défaut.
Pour écrire des données sur un DVD-RW en mode séquentiel, utilisez les mêmes instructions que pour tout autre format de DVD:
# growisofs -Z /dev/cd0 -J -R /path/to/data
Si vous voulez ajouter des données à votre enregistrement
précédent, vous devrez utiliser la commande -M de
growisofs(1).
Cependant, si vous effectuez un ajout de données sur un DVD-RW en mode
séquentiel, une nouvelle session sera créée sur le disque avec
pour résultat de donner naissance à un disque multi-sessions.
Un DVD-RW dans le format ``restricted overwrite'' n'a pas besoin d'être
effacé avant une nouvelle session initiale, vous avez juste à
récrire sur le disque avec l'option -Z, ceci
est similaire à un DVD+RW. Il est également possible d'augmenter un
système de fichiers ISO 9660 existant écrit sur le disque de la
même manière que pour un DVD+RW en utilisant l'option -M. Le résultat sera un DVD avec une seule session.
Pour faire passer un DVD-RW dans le format ``restricted overwrite'', la commande suivante doit être utilisée:
# dvd+rw-format /dev/cd0
Pour revenir au format séquentiel, utilisez:
# dvd+rw-format -blank=full /dev/cd0
Très peu de lecteurs de DVD-ROMs supportent les DVDs multi-sessions, ils ne liront, dans le meilleur des cas, que la première session. Les DVD+R, DVD-R et DVD-RW en mode séquentiel peuvent accepter de multiples sessions, la notion de multiples sessions n'existe pas pour les formats DVD+RW et DVD-RW en mode ``restricted overwrite''.
Utiliser la commande suivante après une session initiale (non fermée) sur un DVD+R, DVD-R, ou DVD-RW en mode séquentiel, ajoutera une nouvelle session sur le disque:
# growisofs -M /dev/cd0 -J -R /path/to/nextdata
L'utilisation de cette ligne de commande avec un DVD+RW ou un DVD-RW en mode ``restricted overwrite'' aura pour effet d'ajouter les données en fusionnant la nouvelle session avec celle déjà présente. Le résultat sera un disque mono-session. C'est la méthode utilisée pour ajouter des données sur ces médias après une écriture initiale.
Note : De l'espace sur le médium est utilisé entre chaque session pour la fin et le début des sessions. Par conséquent, tout ajout de données devrait se faire suivant une quantité importante de données pour optimiser l'espace sur le disque. Le nombre de sessions est limité à 154 pour un DVD+R, environ 2000 pour un DVD-R, et 127 pour un DVD+R double couche.
Pour obtenir plus d'informations sur un DVD, la commande dvd+rw-mediainfo /dev/cd0 peut être exécutée avec le disque dans le lecteur.
Plus d'informations sur les utilitaires dvd+rw-tools peuvent être trouvées dans la page de manuel de growisofs(1), sur le site Web de dvd+rw-tools et dans les archives de la liste de diffusion cdwrite.
Note : La sortie de la commande dvd+rw-mediainfo sur le résultat de la gravure ou le disque posant problème est obligatoire avec tout rapport de problème. Sans cette sortie, il sera quasiment impossible de vous aider.
Les graveurs de DVD-RAM sont fournis soit avec une interface SCSI soit une interface ATAPI. Dans le cas des périphériques ATAPI, l'accès DMA doit être activé, cela peut être fait en ajoutant la ligne suivante au fichier /boot/loader.conf:
hw.ata.atapi_dma="1"
Comme précisé dans l'introduction de cette section, un DVD-RAM peut être vu comme un disque dur extractible. Comme tout autre disque dur le DVD-RAM doit être “préparé” avant la première utilisation. Dans l'exemple, l'intégralité de l'espace sur le disque sera utilisé par un système de fichiers UFS2 standard:
# dd if=/dev/zero of=/dev/acd0 count=2 # bsdlabel -Bw acd0 # newfs /dev/acd0
Le périphérique DVD acd0 doit être modifié en fonction de la configuration.
Une fois les opérations précédentes effectuées sur le DVD-RAM, il peut être monté comme un disque dur classique:
# mount /dev/acd0 /mnt
Après cela, on pourra lire et écrire sur le DVD-RAM.
Sauvegarder des données sur disquette est parfois utile, par exemple quand on a pas d'autre support de stockage amovible de disponible ou quand on doit transférer de petites quantités de données sur un autre ordinateur.
Cette section expliquera comment utiliser des disquettes sous FreeBSD. Elle couvrira principalement le formatage et l'utilisation de disquettes DOS de 3.5pouces, mais les concepts exposés sont identiques pour d'autres formats de disquettes.
On accède aux disquettes par l'intermédiaire d'entrées dans /dev, comme pour tout autre périphérique. Pour accéder directement à la disquette, utilisez simplement /dev/fdN.
Une disquette doit subir un formatage bas niveau avant d'être utilisable. Il est généralement réalisé par le constructeur, mais le formatage est une bonne manière de contrôler l'intégrité du support. Bien qu'il soit possible de forcer une plus grande (ou plus petite) capacité, 1440Ko est celle pour laquelle sont conçues la plupart des disquettes.
Pour effectuer un formatage bas niveau d'une disquette vous devez utiliser fdformat(1). L'utilitaire attend le nom du périphérique en argument.
Notez tout message d'erreur, sachant que cela peut aider à déterminer si la disquette est bonne ou défectueuse.
Utilisez un des périphériques /dev/fdN.size, pour formater la disquette. Insérez une disquette 3.5pouces dans votre lecteur et tapez:
# /usr/sbin/fdformat -f 1440 /dev/fd0
Après le formatage bas niveau du disque, vous devrez y placer un label de disque. Ce label sera détruit plus tard, mais il est nécessaire au système pour déterminer par la suite la taille et la géométrie du disque.
Le nouveau label de disque prendra l'intégralité du disque, et contiendra l'information correcte sur la géométrie de la disquette. Les différentes géométries possibles pour le label sont listées dans /etc/disktab.
Vous pouvez maintenant exécuter bsdlabel(8) de la façon suivante:
# /sbin/bsdlabel -B -w /dev/fd0 fd1440
La disquette est maintenant fin prête pour un formatage haut niveau. Cette opération placera un nouveau système de fichiers sur la disquette, qui permettra à FreeBSD d'écrire et de lire sur le disque. Après la création du nouveau système de fichiers, le label disque est détruit, aussi si vous désirez reformater le disque, vous devrez recréer le label de disque à nouveau.
Le système de fichiers de la disquette peut soit être de l'UFS soit utiliser le système FAT. Le système FAT est généralement un meilleur choix pour les disquettes.
Pour placer un nouveau système de fichier sur la disquette faites ceci:
# /sbin/newfs_msdos /dev/fd0
La disquette est maintenant prête à être utilisée.
Pour utiliser la disquette, montez-la avec mount_msdosfs(8). On peut également utiliser emulators/mtools du catalogue des logiciels portés.
Les principaux types de bandes sont les 4mm, 8mm, QIC, les mini-cartouches et les DLTs.
Les bandes 4mm sont en train de remplacer les bandes QIC comme le format usuel de sauvegarde pour les stations de travail. Cette tendance s'est accélérée quand Conner a racheté Archive, un des leaders de la fabrication des lecteurs QIC, et a arrêté la production de ces derniers. Les lecteurs 4mm sont petits et silencieux mais n'ont pas la réputation de fiabilité des lecteurs 8mm. Les cartouches sont moins coûteuse et plus petites (3 x 2 x 0.5 pouces, 76 x 51 x 12 mm) que les cartouches 8mm. Les cartouches 4mm, tout comme les 8mm, ont une durée de vie faible car elles utilisent un procédé de lecture/écriture en hélice.
Le débit de ces lecteurs va de ~150 Ko/s à ~500 Ko/s au maximum. Leur capacité de varie de 1.3 Go à 2.0 Go. La compression matérielle, disponible sur la plupart des lecteurs, double approximativement leur capacité. Les unités multi-lecteurs peuvent avoir jusqu'à 6 lecteurs dans une seule tour avec changement automatique de bande. La capacité totale atteint 240 Go.
Le standard DDS-3 supporte maintenant des capacités de bande jusqu'à 12 Go (ou 24 Go compressés).
Les lecteurs 4mm, comme les lecteurs 8mm, utilisent un procédé de lecture/écriture en hélice. Tous les avantages et les inconvénients de ce procédé s'appliquent aux deux types de lecteurs.
Les bandes doivent être changées après 2000 utilisations ou 100 sauvegardes complètes.
Les unités de bandes 8mm sont les lecteurs de bandes SCSI les plus courant; c'est le meilleur choix de bandes amovibles. Presque chaque site dispose d'une unité Exabyte 2 Go 8mm. Les lecteurs 8mm sont fiables, pratiques et silencieux. Les cartouches sont bon marché et d'encombrement faible (4.8 x 3.3 x 0.6 pouces; 122 x 84 x 15 mm). Un des inconvénients de la bande 8mm est la durée de vie relativement courte des bandes et des têtes de lectures en raison de la grande vitesse de défilement de la bande devant les têtes.
Leur débit va de ~250 Ko/s à ~500 Ko/s. Leur capacité commence à 300 Mo jusqu'à 7 Go. La compression matérielle, disponible sur la plupart des lecteurs, double approximativement la capacité. Ces lecteurs sont disponibles sous forme d'unité simple ou multiple accueillant 6 lecteurs et 120 bandes. Les bandes sont changées automatiquement par l'unité. Ils peuvent gérer une capacité de stockage de plus de 840 Go.
Le lecteur Exabyte ``Mammoth'' supporte 12 Go sur une seule bande (24 Go compressé) et coûte approximativement le double d'un lecteur classique.
L'enregistrement des données sur la bande utilise un procédé en hélice, les têtes sont positionnées en biais par rapport à la bande (environ 6 degrés). La bande fait un angle de 270 degrés avec le cylindre sur lequel se trouvent les têtes. Ce cylindre tourne en même temps que la bande défile. Il en résulte donc une grande densité de données et des pistes très serrées qui vont de biais d'un bord à l'autre de la bande.
Les bandes et les lecteurs QIC-150 sont, peut-être, le format le plus courant. Les lecteurs QIC sont les moins chers des supports de sauvegarde ``sérieux''. Leur inconvénient par contre est le coût des bandes. Les bandes QIC sont chères comparées aux bandes 8mm ou 4mm, jusqu'à 5 fois le coût au Go. Mais, si une demi-douzaine de bandes vous suffit, le format QIC peut être le bon choix. QIC est le format le plus répandu. Chaque site dispose d'un lecteur QIC d'une densité ou d'une autre. C'est là la difficulté, il existe de nombreuses densités pour des bandes physiquement semblables (parfois même identiques). Les lecteurs QIC ne sont pas silencieux. Ces lecteurs se positionnent bruyamment avant d'enregistrer des données et ont les entend clairement lors de lecture, écriture ou recherche. Les bandes QIC sont volumineuses: 6 x 4 x 0.7 pouces (152 x 102 x 17 mm).
Leur débit va de ~150 Ko/s à ~500 Ko/s. Leur capacité varie de 40 Mo à 15 Go. La compression matérielle est disponible sur de nombreux lecteurs récents. Les lecteurs QIC sont de moins en moins utilisés, ils sont supplantés par les lecteurs DAT.
Les données sont enregistrées sur des pistes sur la bande. Les pistes sont parallèles à la bande et vont d'une extrémité à l'autre. Le nombre de piste, et par conséquent la largeur des pistes, varie avec la capacité de la bande. La plupart des nouveaux lecteurs fournissent au moins une compatibilité descendante en lecture (mais aussi en écriture). Le format QIC a une bonne réputation de sécurité des données (la mécanique est plus simple et plus robuste que les lecteurs à système en hélice).
Les bandes devraient être changée après 5000 sauvegardes.
Les DLT ont le taux de transfert le plus élevé de tous les types de lecteurs décrits ici. La bande d'1/2" (12.5mm) est contenue dans une seule cartouche (4 x 4 x 1 pouces; 100 x 100 x 25 mm). La cartouche est munie d'une trappe basculante le long d'un côté de la cartouche. Le lecteur ouvre cette trappe pour saisir l'amorce de la bande. Cette amorce comporte une découpe ovale que le lecteur utilise pour ``crocheter'' la bande. La bobine d'entraînement est située dans le lecteur. Tous les autres types de cartouches décrits ici (les bandes 9 pistes sont la seule exception) ont les bobines de stockage et d'entraînement dans la cartouche elle-même.
Leur débit est d'environ 1.5 Mo/s, trois fois celui des lecteurs 4mm, 8mm, ou QIC. La capacité d'une bande varie de 10 Go à 20 Go pour une unité simple. Les lecteurs sont disponibles en unités multi-bandes avec changeurs et multi-lecteurs contenant de 5 à 900 bandes et 1 à 20 lecteurs, fournissant une capacité de stockage allant de 50 Go à 9 TO.
Avec la compression, le format DLT type IV supporte jusqu'à une capacité de 70 Go.
Les données sont enregistrées sur la bande sur des pistes parallèles à la direction de défilement (comme pour les bandes QIC). Deux pistes sont écrites à la fois. La durée de vie des têtes de lecture/écriture est relativement longue; une fois que la bande s'arrête, il n'y a pas de déplacement des têtes par rapport à la bande.
AIT est le nouveau format de Sony, il peut supporter jusqu'à 50 Go par bande (avec compression). Les bandes contiennent un circuit mémoire qui contient un index du contenu de la bande. Cet index peut être lu rapidement par le lecteur pour déterminer l'emplacement de fichiers sur la bande, au lieu des nombreuses minutes nécessaires aux autres types de bande. Des programmes comme SAMS:Alexandria peuvent contrôler quarante ou plus ensemble de bandes AIT, communiquant directement avec le circuit mémoire de la bande pour en afficher le contenu à l'écran, déterminer quels fichiers ont été sauvegardé sur quelle bande, localiser la bonne bande, la charger, et en restaurer les données.
Les ensembles de ce type reviennent aux alentour des 20000 dollars, les rendant inaccessibles à l'amateur éclairé.
La première fois que vous essayez de lire ou d'écrire sur une bande vierge, l'opération échoue. Les messages affichés par la console devraient être du type:
sa0(ncr1:4:0): NOT READY asc:4,1 sa0(ncr1:4:0): Logical unit is in process of becoming ready
La bande ne contient pas de bloc d'identification (bloc numéro 0). Tous les lecteurs QIC depuis l'adoption du standard QIC-525 écrivent un bloc d'identification sur la bande. Il y a alors deux solutions:
mt fsf 1 fait écrire au lecteur un bloc d'identification sur la bande.
Utiliser le bouton en face avant pour éjecter la bande.
Ré-insérer la bande et utiliser dump(8) pour écrire dessus.
dump(8) produira l'erreur “DUMP: End of tape detected” et la console affichera: “HARDWARE FAILURE info:280 asc:80,96”.
Rembobiner la bande avec: mt rewind.
Les manipulations ultérieures sur la bande fonctionneront.
Les disquettes ne sont pas des supports adaptés à la réalisation de sauvegardes étant donné que:
Le support n'est pas fiable, spécialement sur de longues périodes de temps.
Les opérations de sauvegarde et de restauration sont très lentes.
Elles ont une capacité très limitée (le jour où l'on pourra sauvegarder l'intégralité d'un disque dur sur une douzaine de disquette n'est pas encore arrivé).
Cependant, si vous n'avez pas d'autres méthodes pour sauvegarder vos données alors les disquettes sont mieux que pas de sauvegardes du tout.
Si vous devez utiliser les disquettes, alors assurez-vous que vous en utiliser des disquettes de bonne qualité. Les disquettes qui traînent sur le bureau depuis quelques années sont un mauvais choix. Idéalement utilisez de des disquettes neuves en provenance d'un fabricant renommé.
La meilleur façon de sauvegarder sur disquette est d'utiliser la commande
tar(1) avec l'option
-M (volume multiple), qui autorise la
répartition des sauvegardes sur plusieurs disquettes.
Pour sauvegarder tous les fichiers du répertoire courant et des sous-répertoires (en tant que root):
# tar Mcvf /dev/fd0 *
Quand la première disquette est pleine tar(1) vous réclamera d'introduire le volume suivant (parce que tar(1) est indépendant du support il parle en terme de volume; dans notre contexte cela signifie disquette).
Prepare volume #2 for /dev/fd0 and hit return:
Cette opération est répétée (avec incrémentation du numéro de volume) jusqu'à ce que les fichiers spécifiés soient sauvegardés.
Malheureusement, tar(1) ne permettra
pas l'utilisation de l'option -z pour les archives
multi-volumes. Vous pourrez, bien sûr, utiliser gzip(1) sur tous les
fichiers, les archiver avec tar(1) sur disquettes,
puis décompresser les fichiers avec gunzip(1)!
Pour restaurer une archive complète utiliser:
# tar Mxvf /dev/fd0
Vous pouvez utiliser deux manières pour restaurer uniquement certains fichiers. Tout d'abord, vous pouvez commencer avec la première disquette et utiliser:
# tar Mxvf /dev/fd0 nomdufichier
tar(1) vous demandera d'insérer les disquettes suivantes jusqu'à trouver le fichier recherché.
Alternativement, si vous savez sur quelle disquette le fichier se trouve alors vous pouvez simplement insérer cette disquette et utiliser la commande précédente. Notez que si le premier fichier sur la disquette est la suite d'un fichier de la précédente disquette alors tar(1) vous avertira qu'il ne peut le restaurer, même si vous ne le voulez pas!
La première chose a faire lors de la mise en place d'un plan de sauvegarde est de s'assurer que l'ensemble des problèmes suivants sera couvert:
Panne d'un disque
Suppression accidentelle de fichiers
Corruption aléatoire de fichiers
Destruction complète de la machine (par exemple suite à un incendie), avec destruction des sauvegardes stockées sur le même site.
Il est parfaitement possible que certains systèmes utilisent une technique différente pour chacun des problèmes évoqués ci-dessus. En dehors des systèmes personnels avec des données peu importantes, il est peu probable qu'une seule technique puisse répondre à l'ensemble de ces risques.
Quelques-unes des techniques à notre disposition sont:
Des archives de tout le système, sauvegardées sur un support fiable et à l'extérieur du site. C'est une protection réelle contre tous les problèmes précédemment cités, mais cette méthode est lente et peu pratique lors des restaurations. Vous pouvez conserver des copies de ces sauvegardes sur site et/ou en ligne, mais il y aura toujours des difficultés lors de la restauration des fichiers, en particulier pour les utilisateurs sans droits.
Instantané de systèmes de fichiers. Cet outil n'est vraiment utile que dans le cas d'une suppression accidentelle de fichiers, mais il l'est vraiment dans ce cas; de plus cette méthode est rapide et simple à employer.
Copies de l'intégralité des systèmes de fichiers et/ou des disques (par une utilisation régulière de rsync(1) sur l'intégralité de la machine par exemple). C'est le procédé en général le plus utile dans le cas des réseaux avec des besoins spécifiques. Dans le cas d'une protection contre les pannes disques, cette méthode est normalement inférieure à un système RAID. Pour la restauration de fichiers supprimés accidentellement, c'est comparable aux instantanés UFS, c'est plus une question de préférence.
RAID. Réduit ou évite les périodes où le système est inutilisable quand un disque tombe en panne. Avec l'inconvénient d'avoir à faire face à des pannes disques plus fréquentes (parce que vous utilisez plus de disques), mais avec cependant une moindre urgence.
Le contrôle des empreintes de fichiers. L'utilitaire mtree(8) est très utile dans ce cas. Bien que cela ne soit pas une technique de sauvegarde des données, ce contrôle aidera à garantir que vous serez averti quand vous devrez ressortir vos sauvegardes. C'est tout particulièrement important dans le cas de sauvegardes hors site, et ces empreintes devraient être vérifiées régulièrement.
Il est relativement simple de trouver d'autres solutions, nombreuses sont celles qui sont des variations des techniques présentées ci-dessus. Des besoins spécifiques conduiront généralement à des solutions spécifiques (par exemple sauvegarder une base de données durant son utilisation demande une étape intermédiaire spécifique au logiciel de base de données). L'important est de connaître les dangers contre lesquels vous désirez vous protéger, et comment vous ferez face à chacun d'entre eux.
Les trois principaux programmes de sauvegarde sont: dump(8), tar(1), et cpio(1).
dump(8) et restore(8) sont les programmes de sauvegarde traditionnels d'UNIX. Ils opèrent sur le disque comme sur une suite de blocs disque, en dessous du niveau d'abstraction que constituent les fichiers, liens et répertoires créés par les systèmes de fichiers. Le programme dump(8) sauvegarde l'intégralité d'un système de fichiers d'un périphérique. Il est incapable de sauvegarder seulement une partie d'un système de fichiers ou une arborescence de répertoires s'étalant sur plus d'un système de fichiers. Le programme dump(8) n'écrit pas de fichiers ou des répertoires sur la bande, mais écrit plutôt les blocs de données brutes dont sont constitués les fichiers et les répertoires.
Note : Si vous utilisez dump(8) sur votre répertoire racine, vous ne sauvegarderez pas /home, /usr ou beaucoup d'autres répertoires puisque que ces derniers sont généralement des points de montages pour d'autres systèmes de fichiers ou des liens symboliques vers ces systèmes de fichiers.
L'utilitaire dump(8) a quelques particularités datant de ses débuts sous la version 6 d'AT&T UNIX (circa 1975). Les paramètres par défaut conviennent aux bandes 9 pistes (6250 bpi), et non aux supports à haute densité d'aujourd'hui (jusqu'à 62182 ftpi). Il faut surcharger ces valeurs par défaut sur la ligne de commande pour utiliser la capacité des bandes actuelles.
Il est également possible de sauvegarder les données par l'intermédiaire d'un réseau sur un lecteur de bande se trouvant sur une autre ordinateur à l'aide des commandes rdump et rrestore. Ces deux programmes utilisent rcmd(3) et ruserok(3) pour accéder à l'unité de bandes distante. Cependant, l'utilisateur effectuant une sauvegarde doit être présent dans le fichier .rhosts sur la machine distante. Les arguments de rdump(8) et rrestore(8) doivent être compatibles avec une utilisation sur la machine distante. Quand on sauvegarde une machine FreeBSD sur un lecteur Exabyte installé sur un ordinateur Sun appelé komodo, utilisez:
# /sbin/rdump 0dsbfu 54000 13000 126 komodo:/dev/nsa8 /dev/da0a 2>&1
Attention: il y a des conséquences pour la sécurité à utiliser l'authentification .rhosts. Evaluez soigneusement votre situation.
Il est également possible d'utiliser dump(8) et restore(8) d'une façon plus sécurisée sur ssh(1).
Exemple 18-1. Utiliser dump(8) sur ssh
# /sbin/dump -0uan -f - /usr | gzip -2 | ssh -c blowfish \
targetuser@targetmachine.example.com dd of=/mybigfiles/dump-usr-l0.gz
Ou en utilisant une fonction interne de dump, positionner la variable d'environnement RSH:
Le programme tar(1) date aussi de la Version 6 d'AT&T UNIX (circa 1975). tar(1) travaille en coopération avec le système de fichiers; il permet d'écrire des fichiers et des répertoires sur bandes. tar(1) ne supporte pas toutes les options permises par cpio(1), mais ne demande pas l'inhabituelle concaténation de commandes qu'utilise cpio(1)
Sous FreeBSD 5.3 et versions suivantes, GNU tar et la version par défaut bsdtar sont disponibles. La version GNU peut être invoquée avec la commande gtar. Elle supporte les sauvegardes sur des périphériques distants et cela avec la même syntaxe que rdump(8). Pour sauvegarder avec tar(1) sur une unité Exabyte connectée sur une machine Sun appelée komodo, utilisez:
# /usr/bin/gtar cf komodo:/dev/nsa8 . 2>&1
La même opération peut être effectuée avec bsdtar en utilisant un tuyau et rsh(1) pour envoyer les données sur un lecteur de bande distant:
# tar cf - . | rsh hostname dd of=tape-device obs=20b
Si vous êtes inquiet au sujet de la sécurité de sauvegardes par réseau, vous devriez utiliser la commande ssh(1) à la place de rsh(1).
cpio(1) est le programme UNIX original pour l'échange de fichiers par bandes magnétiques. cpio(1) dispose d'options (parmi beaucoup d'autres) pour intervertir les octets, utiliser de nombreux différents formats, et envoyer les données à d'autres programmes. Cette dernière caractéristique fait de cpio(1) un excellent choix pour les supports d'installation. cpio(1) ne sait pas parcourir une arborescence de répertoires et il faut lui passer la liste des fichiers via stdin.
cpio(1) ne supporte pas les sauvegardes par le réseau. Vous pouvez utiliser un tuyau et rsh(1) pour envoyer les données sur un lecteur de bande distant:
# for f in directory_list; do find $f >> backup.list done # cpio -v -o --format=newc < backup.list | ssh user@host "cat > backup_device"
Où directory_list est la liste des répertoires que vous désirez sauvegarder, user@host est l'ensemble utilisateur/nom de machine qui effectuera les sauvegardes, et backup_device représente l'unité où seront écrites les sauvegardes (e.g., /dev/nsa0).
pax(1) est la réponse IEEE/POSIX à tar(1) et cpio(1). Au fil des ans les différentes versions de tar(1) et cpio(1) sont devenues légèrement incompatibles. Aussi, plutôt que de batailler pour les standardiser entièrement, POSIX a défini un nouvel utilitaire d'archivage. pax(1) tente de lire et d'écrire nombre des divers formats tar(1) et cpio(1), en plus de ses propres nouveaux formats. Son ensemble de commandes ressemble plus à celui de cpio(1) qu'à celui de tar(1).
Amanda (Advanced Maryland Network Disk Archiver--Système Avancé d'Archivage de Disques en Réseau du Maryland) est un système d'archivage client/serveur plutôt qu'un simple programme. Un serveur Amanda archivera sur une seule unité de bandes un nombre quelconque d'ordinateurs disposant de clients Amanda et un accès réseau au serveur Amanda. Un problème classique sur les sites qui ont de nombreux disques volumineux est que le temps nécessaire pour sauvegarder directement les données sur la bande dépasse le temps alloué à cette tâche. Amanda résout ce problème. Amanda peut utiliser un ``disque intermédiaire'' pour sauvegarder plusieurs systèmes de fichiers à la fois. Amanda des ``jeux d'archive'': un ensemble de bandes utilisé pour une période donnée pour créer une sauvegarde complète de tous les systèmes de fichiers listé dans le fichier de configuration d'Amanda. Le ``jeu d'archive'' contient également les sauvegardes nocturnes incrémentales (ou différentielles) de tous les systèmes de fichiers. Pour restaurer une système de fichiers endommagé, il faut la sauvegarde complète la plus récente et les sauvegardes incrémentales.
Le fichier de configuration permet un contrôle en finesse des sauvegardes et du trafic réseau qu'Amanda génère. Amanda utilisera n'importe quel des programmes de sauvegarde décrits plus haut pour écrire les données sur bande. Amanda est disponible sous forme de logiciel porté ou de logiciel pré-compilé, il n'est pas installé par défaut.
``Ne rien faire'' n'est pas un logiciel, mais c'est la stratégie de sauvegarde la plus utilisée. Il n'y a aucun investissement initial. Il n'y a pas de de planification des sauvegardes à suivre. Juste dire non. Si quelque chose arrive à vos données, souriez et débrouillez-vous!
Si votre temps et vos données ne valent pas grand chose, alors ``Ne rien faire'' est le programme de sauvegarde le mieux adapté à votre ordinateur. Mais prenez garde, UNIX est un outil utile, et vous pouvez vous rendre compte au bout de six mois que vous disposez d'une collection de fichiers qui vous sont utiles.
``Ne rien faire'' est la bonne méthode de sauvegarde pour /usr/obj et les autres répertoires qui peuvent facilement être recréés par votre ordinateur. Un exemple est les fichiers qui constituent la version HTML ou PostScript de ce manuel. Ces fichiers ont été générés à partir de fichiers SGML. Faire des sauvegardes des fichiers HTML ou PostScript n'est pas nécessaire. Les fichiers source SGML sont sauvegardés régulièrement.
dump(8) Point. Elizabeth D. Zwicky a soumis à rude épreuve tous les programmes de sauvegarde dont nous avons parlé. Le choix de dump(8) s'impose pour préserver toutes vos données et les particularités des systèmes de fichiers UNIX. Elizabeth a créé des systèmes de fichiers avec une grande variété de particularités inhabituelles (et quelques unes pas tellement inhabituelles) et a testé chacun des programmes en faisant une sauvegarde et une restauration de ces systèmes de fichiers. Parmi les spécificités testées: fichiers avec des trous, fichiers avec des trous et des blocs de caractères ``null'', fichiers dont les noms comportent des caractères inhabituels, les fichiers illisibles ou impossible à modifier, les périphériques, fichiers dont la taille change pendant la sauvegarde, fichiers créés ou détruits en cours de sauvegarde et bien plus. Elle a présenté les résultats de ces tests au LISA V en Octobre 1991. Voir les tests d'endurance des programmes de sauvegarde et d'archivage.
Il y a quatre étapes à mettre en oeuvre en prévision d'un désastre éventuel.
Tout d'abord, imprimez le label de chacun de vos disques (par exemple bsdlabel da0 | lpr), votre table des systèmes de fichiers (/etc/fstab) et tous les messages de démarrage, en deux exemplaires.
Deuxièmement, vérifiez que vos disquettes de démarrage et de reprise d'urgence (boot.flp et fixit.flp) incluent tous vos périphériques. La méthode la plus simple pour vérifier est de redémarrer avec la disquette de démarrage dans le lecteur et contrôler les messages de démarrage. Si tous vos périphériques sont listés et opérationnels, passez à la troisième étape.
Sinon, vous devez créer deux disquettes de démarrage sur-mesure avec un noyau qui puisse monter tous vos disques et accéder à votre unité de bandes. Ces disquettes doivent contenir: fdisk(8), bsdlabel(8), newfs(8), mount(8), et le programme de sauvegarde que vous utilisez. L'édition de liens de ces programmes doit être statique. Si vous utilisez dump(8), la disquette doit contenir restore(8).
Troisièmement, faites régulièrement des sauvegardes sur bandes. Toutes les modifications effectuées après votre dernière sauvegarde peuvent irrémédiablement perdues. Protégez vos bandes de sauvegarde en écriture.
Quatrièmement, testez les disquettes (soit boot.flp et fixit.flp soit les deux disquettes sur-mesure que vous avez créées à la seconde étape) et vos bandes de sauvegarde. Prenez note de la procédure. Conservez ces notes avec la disquette de démarrage, les impressions et les bandes de sauvegarde. Vous serez si préoccupé quand vous devrez restaurer que ces notes peuvent vous éviter de détruire vos bandes de sauvegarde (Comment? Au lieu de tar xvf /dev/sa0, vous pourriez taper accidentellement tar cvf /dev/sa0, ce qui écraserait votre bande de sauvegarde).
Par mesure de sécurité, créez une disquette de démarrage et deux bandes de sauvegarde à chaque fois. Conservez-les dans un lieu éloigné. Un endroit éloigné n'est PAS le sous-sol du même bâtiment. Un certain nombre de compagnies du World Trade Center l'ont appris à leurs dépends. Un endroit éloigné doit être physiquement séparé de vos ordinateurs et de vos disques par une distance significative.
Exemple 18-3. Procédure de création d'une disquette de démarrage
#!/bin/sh
#
# create a restore floppy
#
# format the floppy
#
PATH=/bin:/sbin:/usr/sbin:/usr/bin
fdformat -q fd0
if [ $? -ne 0 ]
then
echo "Bad floppy, please use a new one"
exit 1
fi
# place boot blocks on the floppy
#
bsdlabel -w -B /dev/fd0c fd1440
#
# newfs the one and only partition
#
newfs -t 2 -u 18 -l 1 -c 40 -i 5120 -m 5 -o space /dev/fd0a
#
# mount the new floppy
#
mount /dev/fd0a /mnt
#
# create required directories
#
mkdir /mnt/dev
mkdir /mnt/bin
mkdir /mnt/sbin
mkdir /mnt/etc
mkdir /mnt/root
mkdir /mnt/mnt # for the root partition
mkdir /mnt/tmp
mkdir /mnt/var
#
# populate the directories
#
if [ ! -x /sys/compile/MINI/kernel ]
then
cat << EOM
The MINI kernel does not exist, please create one.
Here is an example config file:
#
# MINI -- A kernel to get FreeBSD onto a disk.
#
machine "i386"
cpu "I486_CPU"
ident MINI
maxusers 5
options INET # needed for _tcp _icmpstat _ipstat
# _udpstat _tcpstat _udb
options FFS #Berkeley Fast File System
options FAT_CURSOR #block cursor in syscons or pccons
options SCSI_DELAY=15 #Be pessimistic about Joe SCSI device
options NCONS=2 #1 virtual consoles
options USERCONFIG #Allow user configuration with -c XXX
config kernel root on da0 swap on da0 and da1 dumps on da0
device isa0
device pci0
device fdc0 at isa? port "IO_FD1" bio irq 6 drq 2 vector fdintr
device fd0 at fdc0 drive 0
device ncr0
device scbus0
device sc0 at isa? port "IO_KBD" tty irq 1 vector scintr
device npx0 at isa? port "IO_NPX" irq 13 vector npxintr
device da0
device da1
device da2
device sa0
pseudo-device loop # required by INET
pseudo-device gzip # Exec gzipped a.out's
EOM
exit 1
fi
cp -f /sys/compile/MINI/kernel /mnt
gzip -c -best /sbin/init > /mnt/sbin/init
gzip -c -best /sbin/fsck > /mnt/sbin/fsck
gzip -c -best /sbin/mount > /mnt/sbin/mount
gzip -c -best /sbin/halt > /mnt/sbin/halt
gzip -c -best /sbin/restore > /mnt/sbin/restore
gzip -c -best /bin/sh > /mnt/bin/sh
gzip -c -best /bin/sync > /mnt/bin/sync
cp /root/.profile /mnt/root
cp -f /dev/MAKEDEV /mnt/dev
chmod 755 /mnt/dev/MAKEDEV
chmod 500 /mnt/sbin/init
chmod 555 /mnt/sbin/fsck /mnt/sbin/mount /mnt/sbin/halt
chmod 555 /mnt/bin/sh /mnt/bin/sync
chmod 6555 /mnt/sbin/restore
#
# create the devices nodes
#
cd /mnt/dev
./MAKEDEV std
./MAKEDEV da0
./MAKEDEV da1
./MAKEDEV da2
./MAKEDEV sa0
./MAKEDEV pty0
cd /
#
# create minimum file system table
#
cat > /mnt/etc/fstab <<EOM
/dev/fd0a / ufs rw 1 1
EOM
#
# create minimum passwd file
#
cat > /mnt/etc/passwd <<EOM
root:*:0:0:Charlie &:/root:/bin/sh
EOM
cat > /mnt/etc/master.passwd <<EOM
root::0:0::0:0:Charlie &:/root:/bin/sh
EOM
chmod 600 /mnt/etc/master.passwd
chmod 644 /mnt/etc/passwd
/usr/sbin/pwd_mkdb -d/mnt/etc /mnt/etc/master.passwd
#
# umount the floppy and inform the user
#
/sbin/umount /mnt
echo "The floppy has been unmounted and is now ready."
La question cruciale est: votre matériel a-t-il survécu? Vous avez régulièrement fait des sauvegardes, vous n'avez donc pas besoin de vous inquiéter pour les fichiers et les programmes.
Si le matériel a subi des dégâts, remplacez tout d'abord ce qui a été endommagé avant de tenter d'utiliser l'ordinateur.
Si votre matériel est en état, contrôlez vos disquettes. Si vous utilisez une disquette de démarrage personnalisée, démarrez en mode mono-utilisateur (tapez -s à l'invite boot:). Sautez le paragraphe suivant.
Si vous utilisez les disquettes boot.flp et fixit.flp, continuez à lire. Mettre la disquette boot.flp dans le premier lecteur et démarrez l'ordinateur. Le menu d'installation d'origine s'affiche à l'écran. Choisissez l'option Fixit--Repair mode with CDROM or floppy.. Insérez la disquette fixit.flp quand on vous la demande. restore(8) et les autres programmes dont vous avez besoin sont situés dans le répertoire /mnt2/rescue (/mnt2/stand pour les versions de FreeBSD antérieures à la 5.2).
Restaurez chaque système de fichiers séparément.
Essayez mount(8) (e.g. mount /dev/da0a /mnt) sur la partition racine de votre premier disque. Si le label du disque est endommagé, utilisez bsdlabel(8) pour repartitionner et libeller le disque conformément au label que vous avez imprimé et mis de côté. Utilisez newfs(8) pour recréer les systèmes de fichiers. Remontez la partition racine de la disquette en lecture/écriture (mount -u -o rw /mnt). Utilisez votre programme de restauration et vos bandes de sauvegardes pour restaurer les données de ce système de fichiers (e.g. restore vrf /dev/sa0). Démontez le système de fichiers (e.g. umount /mnt). Répétez l'opération pour chacun des systèmes de fichiers endommagés.
Une fois que le système fonctionne à nouveau, faites une sauvegarde sur de nouvelles bandes. Ce qui a causé la panne ou la perte de données peut se reproduire. Une heure de perdue maintenant peut vous épargner d'autres ennuis plus tard.
En plus des disques que vous introduisez physiquement dans votre ordinateur: disquettes, CD, disques durs, et ainsi de suite; d'autres formes de disques sont gérées par FreeBSD -- les disques virtuels.
Ceux-ci comprennent les systèmes de fichiers réseaux comme le NFS et Coda, les systèmes de fichiers en mémoire et les systèmes de fichiers sauvegardé dans un fichier.
En fonction de la version de FreeBSD que vous utilisez, vous devrez utiliser des outils différents pour la création et l'utilisation de systèmes de fichiers en mémoire ou sauvegardé dans un fichier.
Note : Utilisez devfs(5) pour allouer de façon transparente pour l'utilisateur les fichiers spéciaux de périphériques.
L'utilitaire mdconfig(8) est utilisé pour configurer et activer les disques mémoires, md(4), sous FreeBSD. Pour utiliser mdconfig(8), vous devez charger le module md(4) ou en ajouter le support dans votre fichier de configuration du noyau:
device md
La commande mdconfig(8) supporte trois sortes de disques virtuels en mémoire: les disques mémoire alloués avec malloc(9), les disques mémoires utilisant un fichier ou l'espace de pagination comme espace disque. Une des utilisations possibles est le montage d'images de disquettes ou de CDs conservées sous forme de fichier.
Pour monter l'image d'un système de fichiers:
Exemple 18-4. Utilisation de mdconfig pour monter une image d'un système de fichiers
# mdconfig -a -t vnode -f diskimage -u 0 # mount /dev/md0 /mnt
Pour créer l'image d'un nouveau système de fichiers avec mdconfig(8):
Exemple 18-5. Création d'un nouveau disque sauvegardé sur fichier avec mdconfig
# dd if=/dev/zero of=newimage bs=1k count=5k
5120+0 records in
5120+0 records out
# mdconfig -a -t vnode -f newimage -u 0
# bsdlabel -w md0 auto
# newfs md0a
/dev/md0a: 5.0MB (10224 sectors) block size 16384, fragment size 2048
using 4 cylinder groups of 1.25MB, 80 blks, 192 inodes.
super-block backups (for fsck -b #) at:
160, 2720, 5280, 7840
# mount /dev/md0a /mnt
# df /mnt
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/md0a 4710 4 4330 0% /mnt
Si vous ne préciser pas de numéro d'unité avec l'option
-u, mdconfig(8)
utilisera le mécanisme d'allocation automatique de md(4) pour
sélectionner un périphérique libre. Le nom de
l'unité allouée s'affichera sur la sortie standard comme par exemple
md4. Pour plus de détails concernant mdconfig(8),
référez-vous à la page de manuel.
L'outil mdconfig(8) est très utile, cependant son utilisation demande de nombreuses lignes de commandes pour créer un système de fichiers sauvegardé sur fichier. FreeBSD vient avec un outil appelé mdmfs(8), ce programme configure un disque md(4) en utilisant mdconfig(8), y ajoute dessus un système de fichiers UFS en utilisant newfs(8), et le monte avec mount(8). Par exemple, si vous désirez créer et monter la même image de système de fichiers que précédemment, tapez simplement ce qui suit:
Exemple 18-6. Création et montage d'un disque sauvegardé sur fichier avec mdmfs
# dd if=/dev/zero of=newimage bs=1k count=5k 5120+0 records in 5120+0 records out # mdmfs -F newimage -s 5m md0 /mnt # df /mnt Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/md0 4718 4 4338 0% /mnt
Si vous utilisez l'option md sans numéro
d'unité, mdmfs(8) utilisera la
fonction automatique de sélection d'unité de md(4) pour
choisir un périphérique non utilisé. Pour plus de
détails au sujet de mdmfs(8),
référez-vous à la page de manuel.
Pour un système de fichiers en mémoire la “sauvegarde sur l'espace de pagination” devrait être normalement utilisée. Utiliser l'espace de pagination ne signifie pas que le disque en mémoire sera par défaut sur l'espace de pagination, mais plutôt que le disque mémoire sera alloué sur une zone de mémoire qui pourra être sauvegardée sur l'espace de pagination si nécessaire. Il est également possible de créer un disque en mémoire dont la mémoire est allouée à l'aide de malloc(9), mais ce type de configuration, tout particulièrement dans le cas de disques de grande taille, peut donner lieu à une panique du système si le noyau se trouve à cours de mémoire.
Exemple 18-7. Création d'un disque mémoire avec mdconfig
# mdconfig -a -t swap -s 5m -u 1
# newfs -U md1
/dev/md1: 5.0MB (10240 sectors) block size 16384, fragment size 2048
using 4 cylinder groups of 1.27MB, 81 blks, 192 inodes.
with soft updates
super-block backups (for fsck -b #) at:
160, 2752, 5344, 7936
# mount /dev/md1 /mnt
# df /mnt
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/md1 4718 4 4338 0% /mnt
Quand un système de fichiers en mémoire ou sauvegardé dans un fichier n'est pas utilisé, vous devriez rendre au système toutes les ressources. La première chose à faire est de démonter le système de fichiers, ensuite utiliser mdconfig(8) pour détacher le disque du système et rendre les ressources.
Par exemple pour détacher et libérer toutes les ressources utilisées par /dev/md4:
# mdconfig -d -u 4
Il est possible d'afficher des informations sur les périphériques md(4) configurés en utilisant la commande mdconfig -l.
FreeBSD en association avec les Soft Updates offre une nouvelle caractéristique: les instantanés de systèmes de fichiers (``file system snapshots'').
Les instantanés permettent à un utilisateur de créer des images d'un système de fichiers précis, et de les traiter comme un fichier. Les instantanés doivent être créés dans le système de fichiers sur lequel on veut effectuer l'opération, et un utilisateur ne pourra pas créer plus de 20 instantanés par système de fichiers. Les instantanés actifs sont enregistrés dans le superbloc, ils sont donc conservés durant les opérations de démontage et de remontage lors des redémarrages du système. Quand un instantané n'est plus requis, il peut être supprimé avec la commande standard rm(1). Les instantanés peuvent être supprimés dans n'importe quel ordre, cependant tout l'espace utilisé pourra ne pas être à nouveau disponible car un autre instantané réclamera éventuellement les blocs libérés.
L'indicateur inaltérable snapshot est
positionné lors de la création initiale de l'instantané. La
commande unlink(1) fait une
exception pour les fichiers d'instantanés puisqu'elle autorise leur
suppression.
Les instantanés sont créés avec la commande mount(8). Pour placer un instantané de /var dans le fichier /var/snapshot/snap utilisez la commande suivante:
# mount -u -o snapshot /var/snapshot/snap /var
Alternativement, vous pouvez utiliser mksnap_ffs(8) pour créer un instantané:
# mksnap_ffs /var /var/snapshot/snap
Les fichiers d'instantanés peuvent être localisés sur un système de fichiers (e.g. /var) en utilisant la commande find(1):
# find /var -flags snapshot
Une fois un instantané créé, ce dernier pourra avoir de nombreux usages:
Certains administrateurs utiliseront un instantané pour des besoins de sauvegarde, car l'instantané peut être transféré sur CD ou bande.
Un contrôle d'intégrité du système fichiers, fsck(8), pourra être effectué sur l'instantané. En supposant que le système de fichiers était propre quand il a été monté, vous devriez toujours obtenir un résultat positif (et non différent). C'est essentiellement que effectue le processus de fsck(8) en tâche de fond (``background fsck(8)'').
Lancer l'utilitaire dump(8) sur
l'instantané. Une image cohérente du système de fichiers avec
les paramètres temporels de l'instantané sera produite.
dump(8) peut
également à partir d'un instantané, créer une image et
puis supprimer l'instantané en une seule fois en utilisant l'indicateur
-L dans la ligne de commande.
Monter l'instantané comme une image figée du système de fichiers. Pour monter l'instantané /var/snapshot/snap lancer:
# mdconfig -a -t vnode -f /var/snapshot/snap -u 4 # mount -r /dev/md4 /mnt
Vous pouvez maintenant parcourir l'arborescence de votre système de fichiers /var figé monter sous /mnt. Tout sera au départ dans le même état que lors de la création de l'instantané. La seule exception est que les instantanés antérieurs apparaîtront sous la forme de fichiers vides. Quand l'utilisation d'un instantané est terminée, il peut être démonté avec:
# umount /mnt # mdconfig -d -u 4
Pour plus d'informations sur les softupdates et les
instantanés de systèmes de fichiers, et également de la
documentation technique, vous pouvez consulter le site Web de Marshall Kirk
McKusick à l'adresse http://www.mckusick.com/
Les quotas sont une option du système d'exploitation qui vous permet de limiter la quantité d'espace disque et/ou le nombre de fichiers auxquels ont droit un utilisateur ou tous les utilisateurs d'un même groupe, sur un système de fichiers donné. On les utilise la plupart du temps sur les systèmes en temps partagé où il est souhaitable de limiter la quantité de ressources allouée à un utilisateur ou à un groupe. Cela évitera qu'un utilisateur ou un groupe d'utilisateur consomme tout l'espace disque.
Avant d'essayer de mettre en place des quotas disque, il est nécessaire de s'assurer que le noyau est configuré pour les quotas. Cela se fait en ajoutant la ligne suivante dans votre fichier de configuration du noyau:
options QUOTA
Cette option n'est pas activée par défaut dans le noyau GENERIC de base, vous devrez donc configurer, compiler et installer un noyau sur-mesure pour utiliser les quotas disque. Reportez-vous au chapitre Chapitre 8 pour plus d'informations sur la configuration du noyau.
Ensuite vous devrez activer les quotas disques dans le fichier /etc/rc.conf. Pour cela, ajoutez la ligne:
enable_quotas="YES"
Pour un contrôle plus fin des quotas au démarrage du système, il existe une variable supplémentaire de configuration. Normalement au démarrage, l'intégrité des quotas sur chaque système de fichiers est vérifiée par le programme quotacheck(8). Ce programme s'assure que les données de la base de données des quotas correspondent bien aux données présentes sur le système de fichiers. C'est un processus consommateur en temps qui affectera considérablement la durée de démarrage du système. Si vous désirez passer cette étape, une variable dans /etc/rc.conf est prévue à cet effet:
check_quotas="NO"
Vous devez enfin éditer le fichier /etc/fstab pour activer les quotas système de fichiers par système de fichiers. C'est là que vous pouvez soit activer les quotas par utilisateur ou par groupe soit les pour les deux sur tous vos systèmes de fichiers.
Pour activer les quotas par utilisateur sur un système de fichiers,
ajouter l'option userquota dans le champ d'options sur
l'entrée de /etc/fstab pour le système de
fichiers sur lequel vous voulez activer les quotas. Par exemple:
/dev/da1s2g /home ufs rw,userquota 1 2
De même, pour activer les quotas par groupe, utilisez l'option groupquota à la place de userquota. Pour activer à la fois les quotas par
utilisateur et par groupe, modifiez l'entrée de la façon suivante:
/dev/da1s2g /home ufs rw,userquota,groupquota 1 2
Par défaut, les fichiers où sont définis les quotas dans le répertoire racine du système de fichiers sous les noms quota.user et quota.group, respectivement pour les quotas utilisateur et les quotas par groupe. Consultez la page de manuel fstab(5) pour plus d'information. Bien que la page de manuel fstab(5) indique que vous pouvez spécifier un autre emplacement pour ces fichiers, cela n'est pas recommandé parce que les divers utilitaires qui gèrent les quotas ne semblent pas les prendre correctement en compte.
A ce point vous devriez redémarrer votre système avec votre nouveau noyau. La procédure /etc/rc exécutera automatiquement les commandes nécessaires pour créer les fichiers de quotas initiaux pour tous les quotas que vous avez définis dans /etc/fstab, vous n'avez donc pas besoin de créer à la main de fichiers de quotas vides.
Vous ne devriez pas avoir à exécuter les commandes quotacheck(8), quotaon(8), ou quotaoff(8) manuellement. Cependant, vous pouvez lire leur page de manuel pour vous familiariser avec leur rôle.
Une fois que vous avez activé les quotas sur votre système, assurez-vous que cela fonctionne correctement. Une manière simple de le faire est d'exécuter:
# quota -v
Vous devriez obtenir une ligne résumant l'utilisation disque avec les quotas actuellement définis pour chaque système de fichiers sur lesquels il y a des quotas.
Vous êtes maintenant prêt à définir les quotas avec la commande edquota(8).
Vous disposez de différentes options pour instaurer les quotas d'espace disque alloué à un utilisateur ou à un groupe, et le nombre de fichiers qu'ils peuvent créer. Vous pouvez baser les limitations sur l'espace disque alloué (quotas en nombre de blocs) ou sur le nombre de fichiers (quotas en inode) ou les deux. Ces options peuvent être divisées en deux catégories: les limites strictes ou souples.
Une limite stricte ne peut être dépassée. Une fois qu'un utilisateur atteint sa limite stricte, il ne pourra plus rien allouer sur le système de fichiers en question. Par exemple, si l'utilisateur a droit à une limite stricte de 500 Ko sur un système de fichiers et en utilise 490 Ko, il ne pourra allouer que 10 Ko supplémentaires. Une tentative d'allouer 11 Ko échouerait.
Une limite souple peut être dépassée pour une période de temps restreinte. C'est ce que l'on appelle le délai de grâce, qui est d'une semaine par défaut. Si un utilisateur dépasse cette limite au delà du délai de grâce, cette limite devient stricte, et plus aucune allocation ne sera possible. Quand l'utilisateur redescend en dessous de la limite souple, le délai de grâce est à nouveau réaccordé.
Ce qui suit est un exemple de ce que vous pourrez voir en utilisant la commande edquota(8). Quand vous invoquez la commande edquota(8), vous vous retrouvez dans l'éditeur défini par la variable d'environnement EDITOR, ou sous vi si la variable d'environnement EDITOR n'est pas positionnée, ce qui vous permet d'éditer les quotas.
# edquota -u test
Quotas for user test:
/usr: kbytes in use: 65, limits (soft = 50, hard = 75)
inodes in use: 7, limits (soft = 50, hard = 60)
/usr/var: kbytes in use: 0, limits (soft = 50, hard = 75)
inodes in use: 0, limits (soft = 50, hard = 60)
Vous verrez normalement deux lignes pour chaque système de fichiers sur lequel il y a des quotas. Une ligne pour les quotas de blocs, et une autre pour la limite d'inode. Modifiez simplement les valeurs que vous voulez mettre à jour. Par exemple, pour augmenter la limite de blocs accordée à cet utilisateur de 50 pour la limite souple et de 75 pour la limite stricte à 500 pour la limite souple et 600 pour la limite stricte, modifiez:
/usr: kbytes in use: 65, limits (soft = 50, hard = 75)
en:
/usr: kbytes in use: 65, limits (soft = 500, hard = 600)
Les nouveaux quotas seront en service dès que vous quitterez l'éditeur.
Il est parfois souhaitable de définir des quotas pour une plage d'UIDs
(identifiants utilisateur). Cela peut être réalisé avec l'option
-p de la commande edquota(8).
Définissez d'abord les quotas pour un seul utilisateur, et puis
exécutez edquota -p protouser startuid-enduid.
Par exemple, si l'utilisateur test dispose des quotas
désirés, la commande suivante peut être utilisée pour
appliquer ces quotas pour les UIDs de 10000 à 19999:
# edquota -p test 10000-19999
Pour plus d'informations consultez la page de manuel edquota(8).
Vous pouvez soit utiliser la commande quota(1) soit la commande repquota(8) pour consulter les quotas et l'utilisation des disques. La commande quota(1) peut être employée pour connaître les quotas et l'utilisation des disques pour un utilisateur et un groupe. Un utilisateur ne peut consulter que ses propres quotas et ceux d'un groupe auquel il appartient. Seul le super-utilisateur peut consulter les quotas et l'usage disque de tous les utilisateurs et groupes. La commande repquota(8) permet d'obtenir un résumé de tous les quotas et l'utilisation disque pour les systèmes de fichiers sur lesquels il y a des quotas.
Ce qui suit est un extrait de la sortie de la commande quota -v pour un utilisateur pour lequel on a défini des quotas sur deux systèmes de fichiers.
Disk quotas for user test (uid 1002):
Filesystem usage quota limit grace files quota limit grace
/usr 65* 50 75 5days 7 50 60
/usr/var 0 50 75 0 50 60
Sur le système de fichiers /usr dans l'exemple ci-dessus, l'utilisateur occupe 15 Ko de plus que la limite de 50 Ko qui lui est allouée et dispose d'un délai de grâce de 5 jours. Notez l'astérisque * qui indique que l'utilisateur dépasse actuellement son quota.
Normalement les systèmes de fichiers sur lesquels l'utilisateur n'occupe
pas d'espace n'apparaissent pas dans la sortie de la commande quota(1), même
s'il a des quotas sur ces systèmes de fichiers. L'option -v listera ces systèmes de fichiers, comme /usr/var dans l'exemple ci-dessus.
Les quotas sont gérés par le sous-système de gestion des quotas sur le serveur NFS. Le démon rpc.rquotad(8) fournit les informations sur les quotas à la commande quota(1) des clients NFS, permettant aux utilisateurs sur ces machines de consulter l'utilisation des quotas qui leur sont alloués.
Activez rpc.rquotad dans /etc/inetd.conf de la façon suivante:
rquotad/1 dgram rpc/udp wait root /usr/libexec/rpc.rquotad rpc.rquotad
Puis redémarrez inetd:
# kill -HUP `cat /var/run/inetd.pid`
FreeBSD offre d'excellentes protections contre un accès non autorisé aux données par l'intermédiaire du réseau. Les permissions sur les fichiers et le contrôle d'accès obligatoire -- ``Mandatory Access Control'' (MAC) (voir Chapitre 16) empêchent l'accès aux données pour des tiers non autorisés quand le système d'exploitation est actif et l'ordinateur en fonctionnement. Cependant, des permissions renforcés sont inutiles si l'attaquant a un accès physique à un ordinateur et peut simplement déplacer le disque dur sur un autre système pour copier et analyser les données sensibles.
Indépendamment de la manière dont une personne malveillante s'est trouvé en possession d'un disque dur ou a arrêté un ordinateur, le chiffrage de disque basé sur GEOM (gbde) (``GEOM Based Disk Encryption'') et le système de chiffrage geli de FreeBSD sont en mesure de protéger les données des systèmes de fichiers contre des attaquants très motivés et aux ressources importantes. A la différence des méthodes de chiffrage lourdes qui chiffrent uniquement les fichiers individuels, gbde et geli chiffrent de manière transparente l'intégralité du système de fichiers. Aucun texte en clair ne touche les plateaux du disque.
Devenir root
La configuration de gbde requiert les privilèges du super-utilisateur.
% su - Password:
Ajouter le support gbde(4) au fichier de configuration du noyau
Ajoutez la ligne suivante à votre fichier de configuration du noyau:
options GEOM_BDE
Recompilez le noyau comme décrit dans Chapitre 8.
Redémarrez avec le nouveau noyau.
Au lieu de recompiler le noyau, on peut utiliser kldload pour charger le support gbde(4):
# kldload geom_bde
L'exemple suivant suppose que vous ajoutez un nouveau disque dur à votre système et qui contiendra une seule partition chiffrée. Cette partition sera montée sous /private. gbde peut également être utilisé pour chiffrer les répertoires /home et /var/mail, mais cela demande une configuration plus complexe qui dépasse le cadre de cette introduction.
Ajouter le nouveau disque
Installez le nouveau disque comme expliqué dans Section 18.3. Pour les besoins de cet exemple, une nouvelle partition disque a été ajoutée en tant que /dev/ad4s1c. Les périphériques du type /dev/ad0s1* représentent les partitions FreeBSD standards sur le système exemple.
# ls /dev/ad* /dev/ad0 /dev/ad0s1b /dev/ad0s1e /dev/ad4s1 /dev/ad0s1 /dev/ad0s1c /dev/ad0s1f /dev/ad4s1c /dev/ad0s1a /dev/ad0s1d /dev/ad4
Créer un répertoire pour héberger les fichiers de verrouillage de GBDE
# mkdir /etc/gbde
Le fichier de verrouillage de gbde contient l'information nécessaire à gbde pour accéder aux partitions chiffrées. Sans accès au fichier de verrouillage, gbde sera incapable de déchiffrer les données contenues sur la partition chiffrée sans une aide manuelle significative ce qui n'est pas supporté par le logiciel. Chaque partition chiffrée utilise un fichier de verrouillage propre.
Initialiser la partition gbde
Une partition gbde doit être initialisée avant d'être utilisable. Cette initialisation doit être effectuée une seule fois:
# gbde init /dev/ad4s1c -i -L /etc/gbde/ad4s1c
gbde(8) lancera votre éditeur, vous permettant de fixer diverses options de configuration dans un gabarit. Pour une utilisation de UFS1 ou UFS2, fixez l'option sector_size à 2048:
$FreeBSD: src/sbin/gbde/template.txt,v 1.1 2002/10/20 11:16:13 phk Exp $ # # La taille d'un secteur est la plus petite unité de donnée # qui peut être lue ou écrite. # Une valeur trop petite diminue les performances et l'espace # disponible. # Une valeur trop grande peut empêcher des systèmes de # fichiers de fonctionner correctement. 512 est la valeur minimale # et sans risque. Pour l'UFS, utiliser la taille d'un fragment # sector_size = 2048 [...]
gbde(8) vous demandera de taper deux fois la phrase d'authentification qui devra être utilisée pour sécuriser les données. La phrase d'authentification doit être la même dans les deux cas. La capacité de gbde à protéger vos données dépend de la qualité de la phrase d'authentification que vous avez choisie. [10]
La commande gbde init crée un fichier de verrouillage pour votre partition gbde qui dans cet exemple est stocké sous /etc/gbde/ad4s1c.
AttentionLes fichiers de verrouillage de gbde doivent être conservés de pair avec le contenu des partitions chiffrées. Alors que la suppression seule d'un fichier de verrouillage ne peut empêcher une personne déterminée de déchiffrer une partition gbde, sans le fichier de verrouillage, le propriétaire légitime sera incapable d'accéder aux données de la partition chiffrée sans beaucoup de travail ce qui est totalement non supporté par gbde(8) et son concepteur.
Attacher la partition chiffrée au noyau
# gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1c
On vous demandera de fournir la phrase d'authentification que vous avez choisie lors de l'initialisation de la partition chiffrée. Le nouveau périphérique chiffré apparaîtra dans /dev en tant que /dev/nom_périphérique.bde:
# ls /dev/ad* /dev/ad0 /dev/ad0s1b /dev/ad0s1e /dev/ad4s1 /dev/ad0s1 /dev/ad0s1c /dev/ad0s1f /dev/ad4s1c /dev/ad0s1a /dev/ad0s1d /dev/ad4 /dev/ad4s1c.bde
Créer un système de fichiers sur le périphérique chiffré
Une fois que le périphérique chiffré a été
attaché au noyau, vous pouvez créer un système de fichiers sur
le périphérique. Pour créer un système de fichiers sur
le périphérique, utilisez newfs(8).
Puisqu'il est plus rapide d'initialiser un nouveau système de fichiers UFS2
qu'un nouveau système UFS1, l'utilisation de newfs(8) avec l'option
-O2 est recommandé.
# newfs -U -O2 /dev/ad4s1c.bde
Note : La commande newfs(8) peut être effectuée sur une partition gbde attachée qui est identifiée par une extension *.bde au niveau du nom de périphérique.
Monter la partition chiffrée
Créez un point de montage pour le système de fichiers chiffré.
# mkdir /private
Montez le système de fichiers chiffré.
# mount /dev/ad4s1c.bde /private
Vérifiez que le système de fichiers chiffré est disponible
Le système de fichiers chiffré devrait être visible par df(1) et prêt à être utilisé:
% df -H Filesystem Size Used Avail Capacity Mounted on /dev/ad0s1a 1037M 72M 883M 8% / /devfs 1.0K 1.0K 0B 100% /dev /dev/ad0s1f 8.1G 55K 7.5G 0% /home /dev/ad0s1e 1037M 1.1M 953M 0% /tmp /dev/ad0s1d 6.1G 1.9G 3.7G 35% /usr /dev/ad4s1c.bde 150G 4.1K 138G 0% /private
Après chaque démarrage, tout système de fichiers chiffré doit être rattaché au noyau, contrôlé pour les erreurs, et monté, avant que les systèmes de fichiers ne puissent être utilisés. Les commandes nécessaires doivent être exécutées en tant que root.
Attacher la partition gdbe au noyau
# gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1c
On vous demandera de fournir la phrase d'authentification que vous avez choisie lors de l'initialisation de la partition gbde chiffrée.
Contrôler les erreurs du système de fichiers
Puisque les systèmes de fichiers chiffrés ne peuvent être encore listés dans le fichier /etc/fstab pour un montage automatique, on doit donc contrôler les systèmes de fichiers pour d'éventuelles erreurs en exécutant manuellement fsck(8) avant le montage.
# fsck -p -t ffs /dev/ad4s1c.bde
Monter le système de fichiers chiffré
# mount /dev/ad4s1c.bde /private
Le système de fichiers est maintenant disponible à l'utilisation.
Il est possible de créer une procédure pour automatiquement attacher, contrôler, et monter une partition chiffrée, mais pour des raisons de sécurité la procédure ne devrait pas contenir le mot de passe gbde(8). A la place, il est recommandé que de telles procédures soient exécutées manuellement tout en fournissant le mot de passe via la console ou ssh(1).
Comme autre possibilité, une procédure rc.d est fournie. Des arguments peuvent être passés à cette procédure par l'intermédiaire de rc.conf(5),, par exemple:
gbde_autoattach_all="YES" gbde_devices="ad4s1c"
Cela impose la saisie de la phrase d'authentification gbde au démarrage. Après avoir entré la phrase d'authentification correctement, la partition chiffrée gbde sera montée automatiquement. Cela peut être très utile quand gbde est utilisé sur des ordinateurs portables.
gbde(8) chiffre la partie utile des secteurs en utilisant le chiffrage AES 128 bits en mode CBC. Chaque secteur sur le disque est chiffré avec une clé AES différente. Pour plus d'informations sur l'architecture cryptographique de gbde, y compris comment les clés pour chaque secteur sont des dérivés de la phrase d'authentification donnée par l'utilisateur, voir la page de manuel gbde(4).
sysinstall(8) est incompatible avec les périphériques gbde-chiffrés. Tous les périphériques *.bde doivent être détachés du noyau avant de lancer sysinstall(8) ou ce dernier plantera durant son processus initial de recherche des périphériques. Pour détacher le périphérique chiffré utilisé dans notre exemple, utilisez la commande suivante:
# gbde detach /dev/ad4s1c
Notez également qu'étant donné que vinum(4) n'utilise pas le sous-système geom(4), vous ne pouvez utiliser gbde avec des volumes vinum.
Depuis FreeBSD 6.0, une nouvelle classe GEOM pour le chiffrage des données
est disponible: geli. Cette classe est
développée par Pawel Jakub Dawidek <pjd@FreeBSD.org>. L'outil geli est différent de gbde; il
offre des fonctionnalités différentes et utilise une méthode
différente pour chiffrer les données.
Les caractéristiques les plus importantes de geli(8) sont:
Utilisation du système crypto(9) -- quand du matériel destiné au chiffrement est disponible dans la machine, geli l'utilisera automatiquement.
Support de plusieurs algorithmes de chiffrement (actuellement AES, Blowfish, et 3DES).
Permettre le chiffrage de la partition racine. La phrase d'authentification utilisée pour accéder à la partition racine chiffrée sera demandée au démarrage du système.
Permettre l'emploi de deux clés indépendantes (par exemple une “clé utilisateur” et une “clé entreprise”).
geli est rapide--il effectue un simple chiffrement de secteur à secteur.
Permettre la sauvegarde et la restauration des clés principales. Quand un utilisateur doit détruire ses clés, il sera possible d'accéder à nouveau aux données en restaurant les clés à partir de la sauvegarde.
Permettre d'attacher un disque avec une clé aléatoire à usage unique -- utile pour les partitions de pagination et les systèmes de fichiers temporaires.
Plus de caractéristiques concernant geli peuvent être trouvées dans la page de manuel de geli(8).
Les points suivants décriront comment activer le support pour geli dans le noyau FreeBSD et expliqueront comment créer et utiliser un provider (ou partition) chiffré geli.
Afin de pouvoir employer geli, vous devez utiliser FreeBSD 6.0-RELEASE ou une version ultérieure. Les privilèges du super-utilisateur seront également nécessaire puisque il faudra effectuer des modifications au niveau du noyau.
Ajouter le support geli au noyau
Ajoutez les lignes suivantes au fichier de configuration du noyau:
options GEOM_ELI device crypto
Recompilez le noyau comme décrit dans la Chapitre 8.
Sinon, le module geli peut être chargé au démarrage. Ajoutez la ligne suivante au fichier /boot/loader.conf:
geom_eli_load="YES"
Le système geli(8) devrait désormais être supporté par le noyau.
Générer la clé principale
L'exemple suivant décrira la méthode pour générer un fichier clé qui sera utilisé comme partie de la clé principale pour le provider chiffré monté sous le répertoire /private. Le fichier clé fournira des données aléatoires qui seront employées pour chiffrer la clé principale. La clé principale sera également protégée par une phrase d'authentification. La taille des secteurs du provider sera de 4Ko. De plus, sera décrit comment attacher au système le provider geli, créer un système de fichiers dessus, utiliser ce système de fichiers et enfin comment le détacher.
Il est recommandé d'utiliser une taille de secteur plus grande (comme 4Ko) pour de meilleures performances.
La clé principale sera protégée avec une phrase d'authentification et la source de données pour le fichier clé sera /dev/random. La taille des secteurs de /dev/da2.eli, partition que nous appelons provider, sera de 4Ko.
# dd if=/dev/random of=/root/da2.key bs=64 count=1 # geli init -s 4096 -K /root/da2.key /dev/da2 Enter new passphrase: Reenter new passphrase:
Il n'est pas obligatoire d'utiliser la phrase d'authentification et le fichier clé; chacune de ces méthodes de sécurisation de la clé principale peut être utilisée séparément.
Si à la place du fichier clé un “-” est passé, l'entrée standard sera utilisée. Cet exemple montre comment on peut utiliser plus d'un fichier clé:
# cat keyfile1 keyfile2 keyfile3 | geli init -K - /dev/da2
Attacher le provider avec la clé générée
# geli attach -k /root/da2.key /dev/da2 Enter passphrase:
Le nouveau périphérique sera appelé /dev/da2.eli.
# ls /dev/da2* /dev/da2 /dev/da2.eli
Créer le nouveau système de fichiers
# dd if=/dev/random of=/dev/da2.eli bs=1m # newfs /dev/da2.eli # mount /dev/da2.eli /private
Le système de fichiers chiffré devrait être maintenant visible par df(1) et disponible à l'utilisation:
# df -H Filesystem Size Used Avail Capacity Mounted on /dev/ad0s1a 248M 89M 139M 38% / /devfs 1.0K 1.0K 0B 100% /dev /dev/ad0s1f 7.7G 2.3G 4.9G 32% /usr /dev/ad0s1d 989M 1.5M 909M 0% /tmp /dev/ad0s1e 3.9G 1.3G 2.3G 35% /var /dev/da2.eli 150G 4.1K 138G 0% /private
Démonter et détacher le provider
Une fois l'utilisation de la partition chiffrée achevée et que la partition /private n'est plus nécessaire, il est prudent de penser à démonter et détacher la partition geli chiffrée:
# umount /private # geli detach da2.eli
Plus d'information sur l'utilisation de geli(8) peut être trouvée dans sa page de manuel.
La commande geli est fournie avec une procédure rc.d qui peut être employée pour simplifier l'utilisation de geli. Un exemple de configuration de geli à l'aide de rc.conf(5) sera:
geli_devices="da2" geli_da2_flags="-p -k /root/da2.key"
Ces lignes configureront /dev/da2 comme provider geli
avec une clé principale /root/da2.key, de
plus geli n'utilisera pas de phrase
d'authentification pour attacher le provider (notez que ceci n'est utilisable que si
l'option -P a été passée durant la
phase geli init). Le système détachera
du noyau le provider geli avant l'arrêt du système.
Plus d'information sur la configuration du système rc.d est fournie dans la section rc.d de ce Manuel.
Sous FreeBSD, le chiffrement de l'espace de pagination est simple à mettre en place et est possible depuis FreeBSD 5.3-RELEASE. En fonction de la version de FreeBSD utilisée, différentes options sont disponibles et la configuration peut légèrement varier. Depuis FreeBSD 6.0-RELEASE, les systèmes de chiffrage gbde(8) ou geli(8) peuvent être utilisé à cet effet. Avec les versions antérieures, seul gbde(8) est disponible. Les deux systèmes utilisent la procédure rc.d nommée encswap.
La section précédente, Chiffrer les partitions d'un disque, contient une courte explication sur les différents systèmes de chiffrage.
Comme pour le chiffrage des partitions d'un disque, chiffrer l'espace de pagination a pour but la protection des informations sensibles. Imaginez une application qui, par exemple, traite des mots de passe. Tant que ces mots de passe résident en mémoire tout va pour le mieux. Cependant, si le système d'exploitation commence à transférer des pages mémoires vers l'espace de pagination en vue de libérer de la mémoire pour d'autres applications, les mots de passe peuvent être écrits en clair sur les plateaux du disque et seront faciles à récupérer par une personne malveillante. Chiffrer l'espace de pagination peut être une solution contre ce scénario.
Note : Pour le reste de cette section, ad0s1b sera la partition réservée à l'espace de pagination.
Jusqu'ici l'espace de pagination n'a jamais été chiffré. Il est fort possible qu'il y ait déjà des mots de passe ou toute autre donnée sensible de présents en clair sur les plateaux du disque. Afin d'y remédier, les données de la partition de pagination doivent être écrasées avec des données aléatoires:
# dd if=/dev/random of=/dev/ad0s1b bs=1m
Si FreeBSD 6.0-RELEASE ou une version plus récente est utilisée, le suffixe .bde doit être ajouté au nom de périphérique sur la ligne du fichier /etc/fstab correspondant à cet espace de pagination:
# Device Mountpoint FStype Options Dump Pass# /dev/ad0s1b.bde none swap sw 0 0
Pour les systèmes antérieurs à FreeBSD 6.0-RELEASE, la ligne suivante doit également être ajoutée à /etc/rc.conf:
gbde_swap_enable="YES"
La procédure pour le chiffrage de l'espace de pagination avec geli(8) est similaire à celle pour l'utilisation de gbde(8). Le suffixe .eli doit être ajouté au nom de périphérique sur la ligne du fichier /etc/fstab correspondant à cet espace de pagination:
# Device Mountpoint FStype Options Dump Pass# /dev/ad0s1b.eli none swap sw 0 0
Par défaut, geli(8) utilise l'algorithme AES avec une longueur de clé de 256bits.
Les valeurs par défaut peuvent être modifiées en utilisant l'option geli_swap_flags dans le fichier /etc/rc.conf. La ligne suivante demande à la procédure rc.d encswap de créer des partitions de pagination en utilisant l'algorithme Blowfish avec une clé de 128 bits de longueur, une taille de secteur de 4 kilo-octets et avec l'option “detach on last close” (détacher après démontage de la partition) activée:
geli_swap_flags="-a blowfish -l 128 -s 4096 -d"
Veuillez vous référer à la description de la commande onetime dans la page de manuel geli(8) pour une liste des options possibles.
Une fois que le système a été redémarré, le fonctionnement correct de l'espace de pagination peut être vérifié en utilisant la commande swapinfo.
Si gbde(8) est utilisé:
% swapinfo Device 1K-blocks Used Avail Capacity /dev/ad0s1b.bde 542720 0 542720 0%
Si geli(8) est utilisé:
% swapinfo Device 1K-blocks Used Avail Capacity /dev/ad0s1b.eli 542720 0 542720 0%
Version française de Marc Fonvieille
<blackend@FreeBSD.org>.
Ce chapitre couvre l'utilisation des disques via le système GEOM sous FreeBSD. Cela comprend les utilitaires principaux de contrôle des niveaux RAID qui utilisent GEOM pour la configuration. Ce chapitre n'abordera pas en profondeur la manière dont GEOM gère et contrôle les E/S, les systèmes sous-jacents, ou le code utilisé. Ces informations sont fournies par la page de manuel geom(4) et ses nombreuses références. Ce chapitre n'est pas non plus un guide de référence sur les configurations RAID. Seuls les niveaux de RAID supportés par GEOM seront abordés.
Après la lecture de ce chapitre, vous saurez:
Quel type de support RAID est disponible avec GEOM.
Comment utiliser les utilitaires de base pour configurer, gérer et manipuler les différents niveaux de RAID.
Comment dupliquer, entrelacer, et connecter à distance des disques via le système GEOM.
Comment dépanner les disques attachés au système GEOM.
Avant de lire ce chapitre, vous devrez:
Comprendre comment FreeBSD gère les disques (Chapitre 18).
Savoir comment configurer et installer un nouveau noyau FreeBSD (Chapitre 8).
GEOM autorise l'accès et le contrôle de classes -- secteur principaux de démarrage (“Master Boot Records”), labels BSD, etc. -- par l'intermédiaire d'interfaces, ou de fichiers spéciaux du répertoire /dev. En supportant plusieurs configurations RAID logicielles, GEOM offrira un accès transparent au système d'exploitation et à ses utilitaires.
Le “striping” (ou entrelacement) est utilisé pour combiner plusieurs disques en un seul volume de stockage. Dans de nombreux cas, cette configuration est réalisée à l'aide de contrôleurs matériels. Le sous-système GEOM offre le support pour le niveau RAID0, également connu sous le nom de “striping”.
Dans un système RAID0, les données sont divisées en blocs répartis sur l'ensemble des disques de la “grappe”. Au lieu de devoir attendre l'écriture de 256k sur un disque, un système RAID0 peut écrire en simultané 64k sur quatre disques différents, offrant alors des performances d'accès supérieures. Ces performances peuvent être encore améliorées en utilisant plusieurs contrôleurs de disques.
Chaque disque d'une bande (“stripe”) RAID0 doit avoir la même taille, puisque les requêtes d'E/S sont entrelacées de manière à lire ou écrire sur plusieurs disques en parallèle.

Création d'un système entrelacé à partir de disques ATA non formatés
Chargez le module geom_stripe:
# kldload geom_stripe
Assurez-vous de l'existence d'un point de montage. Si ce volume doit devenir une partition racine, utilisez alors un autre point de montage comme /mnt.
# mkdir /mnt
Déterminez les noms de périphériques pour les disques qui seront entrelacé, et créez le nouveau périphérique entrelacé. Par exemple, pour entrelacer deux disques ATA non utilisés et non partitionnés, par exemple /dev/ad2 et /dev/ad3:
# gstripe label -v st0 /dev/ad2 /dev/ad3
Créez un label standard, également connu sous le nom de table des partitions, sur le nouveau volume et installez le code d'amoraçage par défaut:
# bsdlabel -wB /dev/stripe/st0
Cette opération doit avoir créé deux autres périphériques dans le répertoire /dev/stripe en plus du périphérique st0: st0a et st0c. A ce stade, un système de fichiers peut être créé sur st0a en utilisant la commande newfs:
# newfs -U /dev/stripe/st0a
Des nombres défileront à l'écran, l'opération sera s'achèvera après quelques secondes. Le volume a été créé et est prêt à être monté.
Pour monter manuellement une grappe de disques entrelacés fraîchement créée:
# mount /dev/stripe/st0a /mnt
Pour monter automatiquement au démarrage ce système de fichiers entrelacé, ajoutez les informations concernant ce volume dans le fichier /etc/fstab:
# echo "/dev/stripe/st0a /mnt ufs rw 2 2" \
>> /etc/fstab
Le module geom_stripe doit également être automatiquement chargé lors de l'initialisation du système en ajoutant une ligne au fichier /boot/loader.conf:
# echo 'geom_stripe_load="YES"' >> /boot/loader.conf
Le “mirroring” est une technologie utilisée par de nombreuses entreprises et beaucoup de particuliers pour sauvegarder les données sans interruption des activités. Quand un miroir existe, cela signifie que le disque B est une copie du disque A. Ou, autre cas, que les disques C+D sont une copie des disques A+B. Indépendamment de la configuration des disques, l'aspect important est que les données d'un disque ou d'une partition sont dupliquées. Ultérieurement, ces données pourront être plus facilement restaurées, sauvegardées sans interrompre le système ou les accès, et pourront même être stockées physiquement de manière sure.
Pour commencer, vérifiez que le système dispose de deux disques de taille identique, cet exemple suppose que ce sont des disques SCSI (da(4)).
Installez FreeBSD sur le premier disque avec uniquement deux partitions. Une partition sera la partition de pagination d'une taille double à celle de la RAM et l'espace restant sera alloué au système de fichiers racine (/). Il est possible d'avoir des partitions séparées pour les autres points de montage, cependant cela augmentera énormément le niveau de difficulté en raison des modifications manuelles nécessaires des paramètres de bsdlabel(8) et fdisk(8).
Redémarrez et attendez l'initialisation complète du système. Ensuite, ouvrez une session sous l'utilisateur root.
Créez le périphérique /dev/mirror/gm et liez-le avec /dev/da1:
# gmirror label -vnb round-robin gm0 /dev/da1
Le système devrait répondre par:
Metadata value stored on /dev/da1. Done.
Initialisez GEOM, cela devrait charger le module du noyau /boot/kernel/geom_mirror.ko:
# gmirror load
Note : Cette commande devrait créer le fichier spécial de périphérique gm0 sous le répertoire /dev/mirror.
Installez un label fdisk et un code de d'amorce génériques sur le nouveau périphérique gm0:
# fdisk -vBI /dev/mirror/gm0
Installez maintenant un label générique bsdlabel:
# bsdlabel -wB /dev/mirror/gm0s1
Note : S'il existe plusieurs “slices” et plusieurs partitions, il faudra modifier les paramètres des deux commandes précédentes. Elles doivent correspondre aux tailles des partitions et “slices” sur l'autre disque.
Utilisez l'utilitaire newfs(8) pour créer un système de fichiers UFS sur le périphérique gm0s1a:
# newfs -U /dev/mirror/gm0s1a
Le système devrait alors afficher un certain nombre d'informations et de nombres. C'est bon signe. Contrôlez l'affichage à la recherche de messages d'erreur et montez le périphérique sur le point de montage /mnt:
# mount /dev/mirror/gm0s1a /mnt
Transférez maintenant toutes les données du disque de démarrage vers ce nouveau système de fichiers. Dans notre exemple nous utilisons à cet effet les commandes dump(8) et restore(8), cependant la commande dd(1) conviendrait également.
# dump -L -0 -f- / |(cd /mnt && restore -r -v -f-)
Cela doit être effectué pour chaque système de fichiers. Placez simplement le système de fichiers approprié au bon endroit quand vous exécutez la commande précédente.
Editez ensuite le fichier /mnt/etc/fstab et supprimez ou mettez en commentaires le fichier de pagination [11]. Modifiez les autres paramètres du système de fichiers pour utiliser le nouveau disque comme présenté l'exemple suivant:
# Device Mountpoint FStype Options Dump Pass# #/dev/da0s2b none swap sw 0 0 /dev/mirror/gm0s1a / ufs rw 1 1
Créez maintenant un fichier boot.config sur la partition racine actuelle et celle nouvellement créée. Ce fichier “aidera” le BIOS à déterminer correctement sur quel disque démarrer:
# echo "1:da(1,a)/boot/loader" > /boot.config
# echo "1:da(1,a)/boot/loader" > /mnt/boot.config
Note : Nous l'avons ajouter sur les deux partitions racines afin d'assurer un démarrage correct. Si pour une raison quelconque le système ne pourrait le lire à partir de la nouvelle partition racine, une version de secours est disponible.
Assurez-vous que le module geom_mirror.ko sera chargé au démarrage du système en lançant la commande suivante:
# echo 'geom_mirror_load="YES"' >> /mnt/boot/loader.conf
Redémarrez le système:
# shutdown -r now
Si tout s'est bien passé, le système a dû démarrer à partir du périphérique gm0s1a et une invite d'ouverture de session doit être affichée. En cas de problème, consultez la section suivante consacrée au dépannage. Ajoutez maintenant le disque da0 au périphérique gm0:
# gmirror configure -a gm0 # gmirror insert gm0 /dev/da0
L'option -a demande à gmirror(8) d'utiliser
une synchronisation automatique, c'est à dire dupliquer automatiquement toute
écriture disque. La page de manuel explique comment reconstruire et remplacer les
disques, avec la différence qu'elle utilise data
à la place de gm0.
Si le démarrage du système s'interrompt à une invite semblable à:
ffs_mountroot: can't find rootvp Root mount failed: 6 mountroot>
Redémarrez la machine à l'aide du bouton de mise en marche ou de “reset”. Au menu de démarrage, sélectionnez la sixième option (6). Le système basculera alors vers une invite du chargeur (loader(8)). Chargez manuellement le module du noyau:
OK? load geom_mirror OK? boot
Si cela fonctionne, cela signifie que pour une raison quelconque le module n'a pas été correctement chargé. Ajoutez la ligne:
options GEOM_MIRROR
dans le fichier de configuration du noyau, recompilez-le puis réinstallez-le. Cela devrait corriger le problème.
GEOM supporte l'utilisation de périphériques distants, comme les disques durs, les CD-ROMs, les fichiers, etc. via l'utilisation des outils “gate”. Ce mécanisme est semblable à NFS.
Pour commencer, un fichier d'export doit être créé. Ce fichier précise qui est autorisé à accéder aux ressources partagées et quel niveau d'accès est offert. Par exemple, pour partager la quatrième tranche du premier disque SCSI, le fichier /etc/gg.exports suivant est adapté:
192.168.1.0/24 RW /dev/da0s4d
Cette ligne autorisera l'accès au système de fichiers présent sur la partition da0s4d à toutes les machines du réseau local.
Pour exporter ce périphérique, assurez-vous tout d'abord qu'il n'est pas déjà monté et lancez le “démon” ggated(8):
# ggated
Maintenant pour monter le périphérique sur la machine cliente, tapez les commandes suivantes:
# ggatec create -o rw 192.168.1.1 /dev/da0s4d ggate0 # mount /dev/ggate0 /mnt
A partir d'ici, on peut accéder au périphérique par l'intermédiaire du point de montage /mnt.
Note : Il est à noter que toutes ces opérations échoueront si le disque est déjà monté soit sur la machine serveur soit sur tout autre machine du réseau.
Quand le périphérique n'est plus utilisé, il peut être démonté sans risque avec la commande umount(8) de la même manière que pour tout autre disque.
Lors de l'initialisation du système, le noyau FreeBSD créé les fichiers spéciaux de périphériques à mesure que les périphériques sont détectés. Cette méthode de détection des périphériques soulève quelques problèmes, par exemple que se passe-t-il si un nouveau disque est ajouté par l'intermédiaire de l'interface USB? Il est très probable qu'un disque flash se verra proposer le nom de périphérique da0 et le périphérique original da0 déplacé en da1. Cela sera à l'origine de problèmes de montage des systèmes de fichiers s'ils sont listés dans /etc/fstab, en fait cela pourra tout simplement empêcher le démarrage du système.
Une solution à ce problème est d'“enchaîner” les périphériques SCSI afin que tout nouveau périphérique ajouté sur la carte SCSI se voit assigné un numéro de périphérique non-utilisé. Mais qu'en est-il des périphériques USB qui peuvent remplacer le premier disque SCSI? Cela se produit parce que les périphériques USB sont en général détectés avant la carte SCSI. Une solution est de brancher ces périphériques qu'après le démarrage du système. Une autre méthode serait de n'utiliser qu'un seul disque ATA et de ne jamais lister de périphériques SCSI dans le fichier /etc/fstab.
Une meilleure solution existe. En employant l'utilitaire glabel, un administrateur ou un utilisateur peut attribuer un label à chacun de ses disques et utiliser ces labels dans /etc/fstab. Comme glabel conserve le label sur le dernier secteur du support concerné, le label persistera après redémarrage du système. En utilisant ce label comme un véritable périphérique, le système de fichiers pourra toujours être monté indépendamment du fichier spécial de périphérique utilisé pour y accéder.
Note : Cela se fait sans préciser qu'un label sera permanent. L'utilitaire glabel peut être utilisé pour créer des labels persistants et des labels éphémères. Seul le label persistant sera conservé après redémarrage du système. Consultez la page de manuel de glabel(8) pour plus d'information sur les différences entre labels.
Il existe deux types de label, un label générique et un label de système de fichiers. La différence entre les labels est le système d'auto-détection associé avec les labels permanents, et le fait que ce type de label sera persistant après redémarrage du système. A ces labels est attribué un sous-répertoire spécifique de /dev dont le nom sera basé sur le type de système de fichiers. Par exemple, les labels de systèmes de fichiers UFS2 seront créés dans le répertoire /dev/ufs2.
Un label générique disparaîtra au redémarrage suivant. Ces labels seront créés dans le répertoire /dev/label et sont parfaits pour faire des expériences.
Les labels permanents peuvent être placés sur le système de fichiers en utilisant les utilitaires tunefs ou newfs. Pour créer un label permanent pour un système de fichier UFS2 sans endommager de données, utilisez la commande suivante:
# tunefs -L home /dev/da3
Avertissement : Si le système de fichiers est plein, cette opération pourra entraîner une corruption des données; si le système de fichiers est plein, alors la première chose à faire sera de supprimer les fichiers inutiles et non pas l'ajout de labels.
Un nouveau label devrait désormais apparaître dans /dev/ufs2 et pourra être ajouté à /etc/fstab:
/dev/ufs2/home /home ufs rw 2 2
Note : Le système de fichiers ne doit pas être monté lors de l'utilisation de tunefs.
Le système de fichiers peut, maintenant, être normalement monté:
# mount /home
La commande suivante peut être employée pour supprimer le label:
# glabel destroy home
A partir de cet instant, aussi longtemps que le module du noyau geom_label.ko est chargé au démarrage avec /boot/loader.conf ou que l'option GEOM_LABEL est présente dans le noyau, le fichier spécial de périphérique peut changer sans effet négatif pour le système.
Les systèmes de fichiers peuvent également être
créés avec un label par défaut en utilisant l'option -L avec newfs. Consultez la page de
manuel de newfs(8) pour plus
d'information.
Version française de Marc Fonvieille
<blackend@FreeBSD.org>.
Peu importe les disques dont vous disposez, ils seront toujours limités:
Ils pourront être trop petits.
Ils pourront être trop lents.
Ils pourront être peu fiables.
Vinum est un gestionnaire de volume, un pilote de disque virtuel qui permet de résoudre ces trois problèmes. Regardons-les plus en détails. De nombreuses solutions à ces problèmes ont été proposées et implémentées:
Les disques deviennent de plus en plus gros, mais tout comme les besoins en stockage. Vous vous apercevrez souvent que vous avez besoin d'un système de fichiers plus grand que les disques que vous avez à votre disposition. Bien évidemment, ce problème n'est plus aussi aigu qu'il l'était il y a de cela dix ans, mais il existe toujours. Certains systèmes l'ont résolu en créant un périphérique abstrait qui stocke ses données sur plusieurs disques.
Les systèmes modernes ont fréquemment besoin d'accéder aux données d'une manière hautement concourante. Par exemple, d'importants serveurs FTP ou HTTP peuvent supporter des milliers de sessions concourantes et avoir de multiple connexions à 100 Mbit/s vers le monde extérieur, et cela bien au-delà du taux de transfert soutenu de la plupart des disques.
Les disques actuels peuvent effectuer des transfert séquentiels de données jusqu'à une vitesse de 70 MO/s, mais ce chiffre a peu d'importance dans un environnement où plusieurs processus indépendants accèdent à un disque, où l'on pourra n'atteindre qu'une fraction de cette valeur. Dans de tels cas il est plus intéressant de voir le problème du point de vue du sous-système des disques: le paramètre important est la charge que provoque un transfert sur le sous-système, en d'autres termes le temps d'occupation du disque impliqué dans le transfert.
Dans n'importe quel transfert, le disque doit tout d'abord positionner les têtes de lecture, attendre le passage du premier secteur sous la tête de lecture, puis effectuer le transfert. Ces actions peuvent être considérées comme étant atomiques: cela n'a aucun sens de les interrompre.
Considérons un transfert typique d'environ 10 KO: la génération actuelle de disques hautes performances peuvent positionner leurs têtes en environ 3.5 ms. Les disques les plus véloces tournent à 15000 tr/minute, donc le temps de latence moyen de rotation (un demi-tour) est de 2 ms. A 70 MO/s, le transfert en lui-même prend environ 150 μs, presque rien comparé au temps de positionnement. Dans un tel cas, le taux de transfert effectif tombe à un peu plus de 1 MO/s et est clairement hautement dépendant de la taille du transfert.
La solution classique et évidente à ce goulot d'étranglement est ``plus de cylindres'': plutôt que d'utiliser un gros disque, on utilise plusieurs disques plus petits avec le même espace de stockage. Chaque disque est en mesure d'effectuer un transfert indépendamment des autres, aussi le taux de sortie augmente d'un facteur proche du nombre de disques utilisés.
L'amélioration du taux réel de sortie est, naturellement, inférieure au nombre de disques impliqués: bien que chaque disque soit capable de transférer en parallèle, il n'y a aucun moyen de s'assurer que les requêtes sont distribuées équitablement entre les disques. Inévitablement la charge d'un disque sera plus importante que celle d'un autre.
La répartition de la charge sur les disques dépend fortement de la manière dont les données sont partagées entre les disques. Dans la discussion suivant, il sera pratique de penser au stockage disque en tant qu'un grand nombre de secteurs qui sont adressables par l'intermédiaire d'un nombre, plutôt que comme les pages d'un livre. La méthode la plus évidente est de diviser le disque virtuel en groupes de secteurs consécutifs de taille égale aux disques physiques individuels et de les stocker de cette manière, plutôt que de les prendre comme un gros livre et de le déchirer en petites sections. Cette méthode est appelée concaténation et a pour avantage que les disques n'ont pas besoin d'avoir de rapport spécifique au niveau de leur taille respective. Cela fonctionne bien quand l'accès au disque virtuel est réparti de façon identique sur son espace d'adressage. Quand l'accès est limité à une petite zone, l'amélioration est moins marquée. Figure 20-1 décrit la séquence dans laquelle les unités sont assignées dans une organisation par concaténation.
Une organisation alternative est de diviser l'espace adressable en composants plus petits, de même taille et de les stocker séquentiellement sur différents périphériques. Par exemple, les 256 premiers secteurs peuvent être stockés sur le premier disque, les 256 secteurs suivants sur le disque suivant et ainsi de suite. Après avoir atteint le dernier disque, le processus se répète jusqu'à ce que les disques soient pleins. Cette organisation est appelée striping (découpage en bande ou segmentation) ou RAID-0 [12].
La segmentation exige légèrement plus d'effort pour localiser les données, et peut causer une charge additionnelle d'E/S quand un transfert est réparti sur de multiples disques, mais il peut également fournir une charge plus constante sur les disques. Figure 20-2 illustre l'ordre dans lequel les unités de stockage sont assignées dans une organisation segmentée.
Le dernier problème avec les disques actuels est qu'ils ne sont pas fiables. Bien que la fiabilité des disques s'est énormément améliorée depuis quelques années, ils sont toujours le composant principal d'un serveur le plus susceptible de tomber en panne. Et quand cela arrive, les résultats peuvent être catastrophiques: remplacer un disque en panne et restaurer les données peut prendre plusieurs jours.
La méthode originelle d'approche de ce problème fut le mode miroir, en conservant deux copies des données sur un matériel différent. Depuis l'avènement de la technologie RAID, cette technique est également nommée RAID niveau 1 ou RAID-1. Toute opération d'écriture sur le volume écrit sur les deux unités; une lecture peut être acquittée par l'une ou l'autre, aussi si l'un des disque tombe en panne, les données sont toujours accessibles sur l'autre disque.
Le mode miroir présente deux problèmes:
Le prix. Il demande au moins deux fois autant d'espace disque qu'une solution non-redondante.
L'impact sur la performance. Les écritures doivent être effectuées sur les deux disques, elles prennent donc deux fois plus de bande passante que sur un volume sans miroir. Les lectures de souffrent pas de baisse de performance: elles semblent même plus rapides.
Une alternative est l'utilisation de la parité, implémentée sous les niveaux RAID 2, 3, 4 et 5. De ces niveaux RAID-5 est le plus intéressant. Comme implémenté dans Vinum, c'est une variante de l'organisation segmentée qui dédie un bloc de chaque segment à la parité des autres blocs. Comme implémenté dans Vinum, un volume RAID-5 est identique à un volume segmenté, sauf qu'il implémente RAID-5 en incluant un bloc de parité dans chaque unité. Comme l'exige RAID-5, l'emplacement de ce bloc de parité varie d'une unité à l'autre. Le nombre de blocs de données indique le nombre relatif de blocs.
Comparé au mode miroir, RAID-5 a pour avantage de demander un espace de stockage significativement plus faible. L'accès en lecture est semblable à celui de l'organisation segmentée, mais l'accès en écriture est bien plus lent, approximativement 25% des performances en lecture. Si un disque tombe en panne, l'ensemble peut continuer à fonctionner dans un mode dégradé: une lecture sur un disque restant accessible se poursuit normalement, mais une lecture du disque perdu est recalculée à partir du bloc correspondant sur l'ensemble des disques restants.
Afin de résoudre ces problèmes, Vinum implémente une hiérarchie d'objets à quatre niveaux:
L'objet le plus visible est le disque virtuel, appelé volume. Les volumes ont essentiellement les mêmes propriétés qu'un disque UNIX™, bien qu'il y ait quelques différences mineures. Ils n'ont aucune limitation de taille.
Les volumes sont composés de plexes, chacune d'entre elles représente l'ensemble de l'espace d'adressable d'un volume. Ce niveau dans la hiérarchie permet ainsi la redondance. Pensez aux plexes comme différents disques dans un ensemble miroir, chacun contenant les mêmes données.
Comme Vinum existe dans le système de stockage disque d'UNIX™, il serait possible d'utiliser les partitions UNIX™ pour construire des blocs pour des plexes à disques multiples, mais en fait cela ne serait pas suffisamment flexible: les disques UNIX™ ne peuvent avoir qu'un nombre limités de partitions. Au lieu de cela Vinum subdivise une simple partition UNIX™ (le disque) en zones contiguës appelées sous-disques, qui sont utilisés comme bloc pour construire les plexes.
Les sous-disques résident sur le disque Vinum, en fait les partitions UNIX™. Les disques Vinum peuvent contenir un nombre quelconque de sous-disque. A l'exception d'une petite zone au début du disque, qui est utilisée pour stocker les informations de configuration et d'état, l'intégralité du disque est disponible pour le stockage des données.
Les sections suivantes décrivent la façon dont ces objets fournissent les fonctionnalités requises pour Vinum.
Les plexes peuvent comprendre de multiple sous-disques répartis sur tous les disques dans la configuration Vinum. Par conséquent, la taille d'un disque ne limite pas la taille d'une plex, et donc d'un volume.
Vinum implémente le mode miroir en attachant de multiples plexes à un volume. Un volume peut contenir entre une et huit plexes.
Bien qu'une plex représente les données complètes d'un volume, il est possible que des parties de la représentation soient physiquement manquantes, soit en raison de la mise en place (en définissant un sous-disque comme ne faisant pas partie de la plex) ou par accident (en raison de la panne d'un disque). Tant qu'au moins une plex peut fournir les données de l'intégralité de la plage d'adresse d'un volume, le volume est totalement fonctionnel.
Vinum implémente la concaténation et la segmentation au niveau de la plex:
Une plex concaténée utilise alternativement l'espace d'adresse de chaque sous-disque.
Une plex segmentée segmente les données sur chaque sous-disque. Les sous-disques doivent avoir la même taille, et il doit y avoir au moins deux sous-disques pour distinguer la plex d'une plex concaténée.
La version de Vinum fournie avec FreeBSD 9.0 implémente deux type de plexes:
Les plexes concaténées sont les plus flexibles: elles peuvent contenir un nombre quelconque de de sous-disques, et les sous-disques peuvent être de taille différentes. La plex peut être étendue en ajoutant des sous-disques supplémentaires. Elles demandent moins de temps CPU que les plexes segmentées, bien que la différence en charge CPU ne soit pas mesurable. D'autre part, elles sont plus susceptibles d'échauffement, là où un disque est très actif et les autres sont au repos.
Le plus grand avantage des plexes segmentées (RAID-0) est qu'elles réduisent les problèmes d'échauffement: en choisissant tailles de segments optimales (environ 256 KO), vous pouvez également réduire la charge des disques. Les inconvénients de cette approche sont un code (infimement) plus complexe et des restrictions sur les sous-disques: ils doivent être de la même taille, et agrandir une plex en ajoutant de nouveaux sous-disques est si complexe que Vinum ne l'implémente pas actuellement. Vinum impose une restriction triviale supplémentaire: une plex segmentée doit avoir au moins deux sous-disques, puisque sinon elle ne serait distinguable d'une plex concaténée.
Tableau 20-1 résume les avantages et inconvénients de chaque type d'organisation de plex.
Tableau 20-1. Organisations de plex Vinum
| Type de plex | Nombre minimal de sous-disques | Possibilité d'ajout de sous-disques | Doivent être de même taille | Application |
|---|---|---|---|---|
| concaténée | 1 | oui | non | Stockage de grandes quantités de données avec le maximum de flexibilité en terme de placement et des performances modérées |
| segmentée | 2 | non | oui | Haute performance combinée avec un accès hautement concourant |
Vinum maintient une base de données de configuration qui décrit les objets connus pour un système individuel. Initialement, l'utilisateur créé la base de données de configuration à partir d'un ou plusieurs fichiers de configuration avec l'aide de l'utilitaire vinum(8). Vinum conserve une copie de sa base de données de configuration sur chaque tranche (que Vinum nomme device) sous son contrôle. Cette base données est mise à jour à chaque changement d'état, aussi un redémarrage reconstitue exactement l'état de chaque objet Vinum.
Le fichier de configuration décrit les objets Vinum. La définition d'un simple volume pourrait être:
drive a device /dev/da3h
volume myvol
plex org concat
sd length 512m drive a
Ce fichier décrit quatre objets Vinum:
La ligne drive une partition disque (drive) et son emplacement relatif par rapport au matériel sous-jacent. On lui donne le nom symbolique a. Cette séparation entre le nom symbolique et le nom du périphérique permet aux disques d'être déplacés d'un emplacement à un autre sans confusion possible.
La ligne volume décrit un volume. Le seul attribut nécessaire est le nom, dans notre cas myvol.
La ligne plex définit une plex. Le seul paramètre requit est l'organisation, dans ce cas concat. Aucun nom n'est nécessaire: le système génère automatiquement un nom à partir du nom de volume en ajoutant le suffixe .px, où x est le nombre de plexes dans le volume. Donc cette plex sera appelée myvol.p0.
La ligne sd décrit un sous-disque. Les spécifications minimales sont le nom du disque sur lequel le stocker et la taille du sous-disque. Comme pour les plexes, aucun nom n'est nécessaire: le système assignera automatiquement des noms dérivés du nom de la plex en ajoutant le suffixe .sx, où x est le nombre de sous-disques dans la plex. Donc Vinum donnera le nom myvol.p0.s0 à ce sous-disque.
Après avoir traité ce fichier vinum(8) affiche ce qui suit:
# vinum -> create config1
Configuration summary
Drives: 1 (4 configured)
Volumes: 1 (4 configured)
Plexes: 1 (8 configured)
Subdisks: 1 (16 configured)
D a State: up Device /dev/da3h Avail: 2061/2573 MB (80%)
V myvol State: up Plexes: 1 Size: 512 MB
P myvol.p0 C State: up Subdisks: 1 Size: 512 MB
S myvol.p0.s0 State: up PO: 0 B Size: 512 MB
Cette sortie affiche une brève liste du format vinum(8). Elle est représentée graphiquement dans Figure 20-4.
Cette figure, et celles qui suivent, représentent un volume qui contient les plexes, qui à leur tour contiennent les sous-disques. Dans cet exemple trivial, le volume contient une plex, et la plex contient un sous-disque.
Ce volume particulier ne présente aucun avantage spécifique par rapport à une partition de disque conventionnelle. Il contient une seule plex, donc il n'est pas redondant. La plex contient un seul sous-disque, il n'y a donc pas de différence dans l'organisation du stockage des données par rapport à une partition de disque conventionnelle. Les sections suivantes présenteront diverses méthodes de configuration plus intéressantes.
La robustesse d'un volume peut être augmentée par le mode miroir. Quand on implémente un volume en mode miroir, il est important de s'assurer que les sous-disques de chaque plex sont sur des disques différents, de sorte qu'une panne disque ne mette hors service les deux plexes. La configuration suivante place en mode miroir un volume:
drive b device /dev/da4h
volume mirror
plex org concat
sd length 512m drive a
plex org concat
sd length 512m drive b
Dans cet exemple, il n'était pas nécessaire de spécifier une définition de disque a à nouveau, puisque Vinum garde trace de tous les objets dans sa base de données de configuration. Après le traitement de cette définition, la configuration ressemble à:
Drives: 2 (4 configured)
Volumes: 2 (4 configured)
Plexes: 3 (8 configured)
Subdisks: 3 (16 configured)
D a State: up Device /dev/da3h Avail: 1549/2573 MB (60%)
D b State: up Device /dev/da4h Avail: 2061/2573 MB (80%)
V myvol State: up Plexes: 1 Size: 512 MB
V mirror State: up Plexes: 2 Size: 512 MB
P myvol.p0 C State: up Subdisks: 1 Size: 512 MB
P mirror.p0 C State: up Subdisks: 1 Size: 512 MB
P mirror.p1 C State: initializing Subdisks: 1 Size: 512 MB
S myvol.p0.s0 State: up PO: 0 B Size: 512 MB
S mirror.p0.s0 State: up PO: 0 B Size: 512 MB
S mirror.p1.s0 State: empty PO: 0 B Size: 512 MB
Figure 20-5 présente la structure sous forme graphique.
Dans cet exemple, chaque plex contient un espace d'adressage de 512 MO. Comme dans l'exemple précédent, chaque plex contient seulement un seul sous-disque.
Le volume en mode miroir de l'exemple précédent est plus résistant aux pannes qu'un volume sans miroir, mais ses performances sont moindres: chaque écriture sur le volume demande d'écrire sur les deux disques, utilisant alors une plus grande proportion de la bande passante disque totale. Des considérations sur les performances demandent une approche différente: à la place d'un miroir, les données sont segmentées sur autant de disques que possible. La configuration suivante montre un volume avec une plex segmentée sur quatre disques:
drive c device /dev/da5h drive d device /dev/da6h volume stripe plex org striped 512k sd length 128m drive a sd length 128m drive b sd length 128m drive c sd length 128m drive d
Comme précédemment, il n'est pas nécessaire de définir les disques qui sont déjà connus de Vinum. Après traitement de cette définition, la configuration ressemble à:
Drives: 4 (4 configured)
Volumes: 3 (4 configured)
Plexes: 4 (8 configured)
Subdisks: 7 (16 configured)
D a State: up Device /dev/da3h Avail: 1421/2573 MB (55%)
D b State: up Device /dev/da4h Avail: 1933/2573 MB (75%)
D c State: up Device /dev/da5h Avail: 2445/2573 MB (95%)
D d State: up Device /dev/da6h Avail: 2445/2573 MB (95%)
V myvol State: up Plexes: 1 Size: 512 MB
V mirror State: up Plexes: 2 Size: 512 MB
V striped State: up Plexes: 1 Size: 512 MB
P myvol.p0 C State: up Subdisks: 1 Size: 512 MB
P mirror.p0 C State: up Subdisks: 1 Size: 512 MB
P mirror.p1 C State: initializing Subdisks: 1 Size: 512 MB
P striped.p1 State: up Subdisks: 1 Size: 512 MB
S myvol.p0.s0 State: up PO: 0 B Size: 512 MB
S mirror.p0.s0 State: up PO: 0 B Size: 512 MB
S mirror.p1.s0 State: empty PO: 0 B Size: 512 MB
S striped.p0.s0 State: up PO: 0 B Size: 128 MB
S striped.p0.s1 State: up PO: 512 kB Size: 128 MB
S striped.p0.s2 State: up PO: 1024 kB Size: 128 MB
S striped.p0.s3 State: up PO: 1536 kB Size: 128 MB
Ce volume est représenté sur Figure 20-6. La couleur des segments indique leur position dans l'espace d'adresses de la plex: le segment le plus clair vient en premier, le plus sombre en dernier.
Avec suffisamment de matériel, il est possible de créer des volumes qui présenteront une robustesse et des performances accrues comparés aux partitions UNIX™ standards. Un fichier de configuration pourrait être:
volume raid10
plex org striped 512k
sd length 102480k drive a
sd length 102480k drive b
sd length 102480k drive c
sd length 102480k drive d
sd length 102480k drive e
plex org striped 512k
sd length 102480k drive c
sd length 102480k drive d
sd length 102480k drive e
sd length 102480k drive a
sd length 102480k drive b
Les sous-disques de la seconde plex sont décalés de deux disques par rapport à ceux de la première plex: cela aide à s'assurer que les écritures ne vont pas sur les même sous-disques même si un transfert s'effectue sur les deux disques.
Figure 20-7 représente la structure de ce volume.
Comme décrit précédemment, Vinum assigne des noms par défaut aux plexes et aux sous-disques, bien qu'ils peuvent être imposés. Ne pas conserver les noms par défaut n'est pas recommandé: une expérience avec le gestionnaire de volume VERITAS, qui autorise les noms arbitraires pour les objets, a montré que cette flexibilité n'apporte pas d'avantage significatif, et peut être à l'origine de confusion.
Les noms pourront contenir tout caractère non vide, mais il est recommandé de se cantonner aux lettres, chiffres ou le caractère souligné. Les noms de volumes, plexes et sous-disques peuvent contenir jusqu'à 64 caractères, et le nom des disques 32 caractères.
On assigne à chaque objet Vinum un fichier spécial de périphérique dans la hiérarchie /dev/vinum. La configuration présentée plus haut aurait fait à Vinum créer les fichiers spéciaux de périphérique suivants:
Les périphériques de contrôle /dev/vinum/control et /dev/vinum/controld, qui sont respectivement utilisés par vinum(8)et le ``daemon'' Vinum.
Les entrées des périphériques en mode bloc et caractères par chaque volume. Ce sont les périphériques principaux utilisés par Vinum. Les noms de périphériques en mode bloc sont le nom du volume, alors que les noms de périphériques en mode caractère suivent la tradition BSD de faire précéder le nom de la lettre r. Donc la configuration précédent inclurait les périphériques en mode bloc /dev/vinum/myvol, /dev/vinum/mirror, /dev/vinum/striped, /dev/vinum/raid5 et /dev/vinum/raid10, et les périphériques en mode caractères /dev/vinum/rmyvol, /dev/vinum/rmirror, /dev/vinum/rstriped, /dev/vinum/rraid5 et /dev/vinum/rraid10. Un problème évident apparaît ici: il est possible d'avoir deux volumes appelés r et rr, mais il y aurait un conflit lors de la création du fichier spécial de périphérique /dev/vinum/rr: c'est le périphérique en mode caractère du volume r ou le périphérique en mode bloc du volume rr? Actuellement Vinum ne résout pas ce conflit: le premier volume défini obtiendra le nom.
Un répertoire /dev/vinum/drive avec des entrées pour chaque disque. Ces entrées sont en fait des liens symboliques vers les fichiers spéciaux de périphérique de disque correspondants.
Un répertoire /dev/vinum/volume avec des entrées pour chaque volume. Il contient des sous-répertoires pour chaque plex, qui à leur tour contiennent des sous-répertoires pour leurs sous-disques.
Les répertoires /dev/vinum/plex, /dev/vinum/sd, et /dev/vinum/rsd, qui contiennent les fichiers spéciaux de périphérique en mode bloc pour chaque plex et les fichiers spéciaux de périphérique en mode bloc et caractère pour chaque sous-disque.
Par exemple, considérons le fichier de configuration suivant:
drive drive1 device /dev/sd1h
drive drive2 device /dev/sd2h
drive drive3 device /dev/sd3h
drive drive4 device /dev/sd4h
volume s64 setupstate
plex org striped 64k
sd length 100m drive drive1
sd length 100m drive drive2
sd length 100m drive drive3
sd length 100m drive drive4
Après traitement de ce fichier, vinum(8) crée la structure suivante dans /dev/vinum:
brwx------ 1 root wheel 25, 0x40000001 Apr 13 16:46 Control
brwx------ 1 root wheel 25, 0x40000002 Apr 13 16:46 control
brwx------ 1 root wheel 25, 0x40000000 Apr 13 16:46 controld
drwxr-xr-x 2 root wheel 512 Apr 13 16:46 drive
drwxr-xr-x 2 root wheel 512 Apr 13 16:46 plex
crwxr-xr-- 1 root wheel 91, 2 Apr 13 16:46 rs64
drwxr-xr-x 2 root wheel 512 Apr 13 16:46 rsd
drwxr-xr-x 2 root wheel 512 Apr 13 16:46 rvol
brwxr-xr-- 1 root wheel 25, 2 Apr 13 16:46 s64
drwxr-xr-x 2 root wheel 512 Apr 13 16:46 sd
drwxr-xr-x 3 root wheel 512 Apr 13 16:46 vol
/dev/vinum/drive:
total 0
lrwxr-xr-x 1 root wheel 9 Apr 13 16:46 drive1 -> /dev/sd1h
lrwxr-xr-x 1 root wheel 9 Apr 13 16:46 drive2 -> /dev/sd2h
lrwxr-xr-x 1 root wheel 9 Apr 13 16:46 drive3 -> /dev/sd3h
lrwxr-xr-x 1 root wheel 9 Apr 13 16:46 drive4 -> /dev/sd4h
/dev/vinum/plex:
total 0
brwxr-xr-- 1 root wheel 25, 0x10000002 Apr 13 16:46 s64.p0
/dev/vinum/rsd:
total 0
crwxr-xr-- 1 root wheel 91, 0x20000002 Apr 13 16:46 s64.p0.s0
crwxr-xr-- 1 root wheel 91, 0x20100002 Apr 13 16:46 s64.p0.s1
crwxr-xr-- 1 root wheel 91, 0x20200002 Apr 13 16:46 s64.p0.s2
crwxr-xr-- 1 root wheel 91, 0x20300002 Apr 13 16:46 s64.p0.s3
/dev/vinum/rvol:
total 0
crwxr-xr-- 1 root wheel 91, 2 Apr 13 16:46 s64
/dev/vinum/sd:
total 0
brwxr-xr-- 1 root wheel 25, 0x20000002 Apr 13 16:46 s64.p0.s0
brwxr-xr-- 1 root wheel 25, 0x20100002 Apr 13 16:46 s64.p0.s1
brwxr-xr-- 1 root wheel 25, 0x20200002 Apr 13 16:46 s64.p0.s2
brwxr-xr-- 1 root wheel 25, 0x20300002 Apr 13 16:46 s64.p0.s3
/dev/vinum/vol:
total 1
brwxr-xr-- 1 root wheel 25, 2 Apr 13 16:46 s64
drwxr-xr-x 3 root wheel 512 Apr 13 16:46 s64.plex
/dev/vinum/vol/s64.plex:
total 1
brwxr-xr-- 1 root wheel 25, 0x10000002 Apr 13 16:46 s64.p0
drwxr-xr-x 2 root wheel 512 Apr 13 16:46 s64.p0.sd
/dev/vinum/vol/s64.plex/s64.p0.sd:
total 0
brwxr-xr-- 1 root wheel 25, 0x20000002 Apr 13 16:46 s64.p0.s0
brwxr-xr-- 1 root wheel 25, 0x20100002 Apr 13 16:46 s64.p0.s1
brwxr-xr-- 1 root wheel 25, 0x20200002 Apr 13 16:46 s64.p0.s2
brwxr-xr-- 1 root wheel 25, 0x20300002 Apr 13 16:46 s64.p0.s3
Bien qu'il soit recommandé de ne pas donner de nom spécifique aux plexes et sous-disques, les disques Vinum doivent avoir un nom. Cela rend possible de déplacer un disque à un emplacement différent et qu'il soit toujours reconnu automatiquement. Les noms de disques peuvent avoir jusqu'à 32 caractères.
Les volumes apparaissent pour le système comme des disques, avec une seule exception. Contrairement aux disques UNIX™, Vinum ne partitionne pas les volumes, qui ne contiennent donc pas de table de partitionnement. Cela a demandé de modifier certains utilitaires disque, en particulier newfs(8), qui auparavant tentait d'interpréter la dernière lettre du nom de volume Vinum comme un identifiant de partition. Par exemple, un disque peut avoir un nom comme /dev/ad0a$ ou /dev/da2h. Ces noms représentent respectivement la première partition (a) sur le premier (0) disque IDE (ad) la la huitième partition (h) sur le troisième (2) disque SCSI (da). En revanche, un volume Vinum pourra être appelé /dev/vinum/concat, un nom qui n'a pas de relation avec un nom de partition.
Normalement, newfs(8) interprète le nom du disque et