Linux From Scratch

Gerard Beekmans

Ce livre décrit le processus de création d'un système Linux depuis rien à l'aide d'une distribution Linux déjà installée, en n'utilisant rien d'autre que les sources des logiciels nécessaires.

Copyright (c) 1999-2001, Gerard Beekmans

All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  • Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

  • Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

  • Neither the name of LinuxFromScratch nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.



Dédicace

Ce livre est dédié à ma femme aimante au soutient indéfectible Beverly Beekmans.

Table des matières
Préface
Qui voudrait lire ce livre
Qui ne voudrait pas lire ce livre
Organisation
Partie I - Introduction
Part II - Installation du système LFS
Troisième partie - Annexes
I. Première Partie - Introduction
1. Introduction
Introduction
Comment les choses se dérouleront-elles
Version du livre
Remerciements
Journal des modifications
Listes de diffusion et archives
Information sur les contacts
2. Information Importante
A propos de $LFS
Comment télécharger le logiciel
Comment installer les logiciels
Télécharger les scripts de démarrage
Télécharger les commandes LFS
II. Partie II - Instalation du système LFS
3. Packages qui doivent être téléchargés
Introduction
Packages qui doivent être téléchargés
4. Préparation d'une nouvelle partition
Introduction
Création d'une nouvelle partition
Création d'un système de fichiers dans la nouvelle partition
Montage d'une nouvelle partition
Création des répertoires
5. Préparer le système LFS
Introduction
Installer tous les logiciels sous l'utilisateur root
Installer Bash
Installer Binutils
Installer Bzip2
Installer Diffutils
Installer Fileutils
Installer GCC
Installer le noyau Linux
Installer Grep
Installer Gzip
Installer Make
Installer Sed
Installer Shellutils
Installer Tar
Installer Textutils
Installer Mawk
Installer Texinfo
Installer Gettext
Créer les fichiers passwd et group
Monter le système de fichiers $LFS/proc
6. Installer les logiciels du système de base
Introduction
A propos des symboles de déboguage
Créer $LFS/root/.bash_profile
Entrer dans l'environnement chroot
Installer Glibc
Créer les périphériques
Installer Man-pages
Installer Ed
Installer Patch
Installer Findutils
Installer Mawk
Installer Ncurses
Installer Vim
Installer GCC
Installer Bison
Installer Less
Installer Groff
Installer Man
Installer Perl
Installer M4
Installer Texinfo
Installer Autoconf
Installer Automake
Installer Bash
Installer Flex
Installer File
Installer Libtool
Installer Bin86
Installer Binutils
Installer Bzip2
Installer Gettext
Installer Kbd
Installer Diffutils
Installer E2fsprogs
Installer Fileutils
Installer Grep
Installer Gzip
Installer Ld.so
Installer Lilo
Installer Make
Installer Modutils
Installer Procinfo
Installer Procps
Installer Psmisc
Installer Sed
Installer Shellutils
Installer Shadowpwd
Installer Sysklogd
Installer Sysvinit
Installer Tar
Installer Textutils
Installer Utillinux
Configurer les logiciels essentiels
7. Création des scripts de démarrage du système
Introduction
Comment fonctionne le processus de démarrage avec ces scripts?
Créer des répertoires
Créer le script rc
Créer le script rcS
Créer le script functions
Créer le script checkfs
Créer le script halt
Créer le script loadkeys
Créer le script mountfs
Création du script de redémarrage (reboot)
Création du script sendsignals
Créer le script setclock
Créer le script sysklogd
Créer le script modèle
Positionner les liens symboliques et les permissions
Créer le fichier /etc/fstab
8. Rendre amorçable le système LFS
Introduction
Installer un noyau
Rendre le système LFS amorçable
Redémarrer le système
9. Configurer le réseau de base
Introduction
Installer Netkit-base
Installer Net-tools
Créer le script de démarrage /etc/init.d/localnet
Créer le fichier /etc/sysconfig/network
Créer le fichier /etc/hosts
Créer le script /etc/init.d/ethnet
10. Fin
Fin
III. Troisième Partie - Annexes
A. Description des packages
Introduction
Glibc
Noyau Linux
Ed
Patch
GCC
Bison
Mawk
Findutils
Ncurses
Less
Groff
Man
Perl
M4
Texinfo
Autoconf
Automake
Bash
Flex
Binutils
Bzip2
Diffutils
E2fsprogs
File
Fileutils
Gettext
Grep
Gzip
Ld.so
Libtool
Bin86
Lilo
Make
Shellutils
Suite de Masquage des mots de passe
Modutils
Procinfo
Procps
Vim
Psmisc
Sed
Sysklogd
Sysvinit
Tar
Textutils
Util Linux
Kbd
Man-pages
Netkit-base
Net-tools
B. Ressources
Introduction
Livres
HOWTOs et Guides
Autres
C. Sites officiels de téléchargement
Sites officiels de téléchargement

Préface

Qui voudrait lire ce livre

Ce livre est destiné aux utilisateurs de Linux qui veulent configurer et personnaliser leur propre système Linux. Les raisons pour lesquelles vous voulez construire un tel système sont diverses. Peut-être en avez-vous marre des distributions qui sont souvent gonflées ou peut-être ne voulez-vous pas vous fier à des binaires pré-compilés pour des raions de sécurité. Il y a énormément de raisons pour lesquelles un utilisateur peut vouloir construire un système personnalisé. Si vous êtes un de ceux-là, ce livre est vraiment pour vous.

Les fruits récoltés en construisant votre propre système sont abondants, mais c'est un dur labeur. C'est un long chemin, mais à la fin vous pourrez vous prétendre être le fier propriétaire de votre propre système Linux, complètement taillé sur mesure. Vous déciderez vous-même de l'organisation des scripts de démarrage, de la hiérarchie du système de fichiers, de même vous choisirez vous-même dans quel répertoire installer les programmes, la version des logiciels à installer et plus encore. Peut-être que la raison principale est que vous voulez savoir exactement où tout est installé, pourquoi et comment.


Qui ne voudrait pas lire ce livre

Les utilisateurs qui ne veulent pas construire un système Linux complet à partir de zéro ne seront pas intéressés pour lire ce livre. Si vous voulez toutefois en apprendre plus sur ce qui se passe en coulisse, en particulier ce qui se passe entre le moment où vous démarrez l'ordinateur et le moment où apparaît le prompt, vous pouvez alors lire le " From Power Up To Bash Prompt"  (P2B) HOWTO. Cet HOWTO construit un système minimum, un peu similaire à celui que ce livre utilise, mais il se concentre plus sur la façon d'installer un système amorçable plutôt qu'un système complet.

Pour décider de lire ce livre ou le P2B HOWTO, posez-vous cette question: "Est ce mon objectif principal d'avoir un système Linux que je vais construire moi-même et, au fur et à mesure, apprendre à quoi sert chaque composant, ou est-ce que je veux juste apprendre de nouvelles choses ?" Si vous voulez construire un système et apprendre, lisez ce livre. Si vous voulez juste apprendre les bases, alors le P2B HOWTO est certainement plus intéressant à lire.

Le " From Power Up To Bash Prompt"  HOWTO est situé à l'adresse suivante: http://www.netspace.net.au/~gok/power2bash/


Organisation

Ce livre est divisé en les parties suivantes. Bien qu'il y ait beaucoup d'informations redondantes dans certaines de ces parties, c'est la façon la plus facile de lire ce livre.


Partie I - Introduction

La première partie donne des informations d'ordre général à propos de ce livre (la version, où le récupérer, les nouveautés , les listes de diffusions, et comment rentrer en contact avec nous). Elle explique aussi plusieurs aspects importants qu'un utilisateur veut et a besoin de savoir avant de commencer à construire un système LFS.


Part II - Installation du système LFS

La deuxième partie vous guide au travers de l'installation du système LFS qui sera la base pour tout le reste. Quelle que soit l'utilisation que vous ferez de ce système LFS flambant neuf, il sera construit sur les bases installées dans cette partie.


Troisième partie - Annexes

la troisième partie contient diverses annexes.

I. Première Partie - Introduction

Table des matières
1. Introduction
2. Information Importante

Chapitre 1. Introduction

Introduction

Ayant utilisé un certain nombre de distributions Linux différentes, je n'ai jamais eu entière satisfaction. Je n'aimais pas la manière dont les scripts de démarrage étaient organisés, la façon dont certains programmes étaient configurés par défaut, et bien d'autres choses. J'en suis venu à considérer que si je voulais être totalement satisfait avec un système Linux, je devrais le construire moi-même en partant de zéro, l'idéal étant de n'utiliser que le code source. Sans jamais utiliser un quelconque package précompilé, ni aucune aide venant d'un cédérom ou d'une disquette de démarrage qui installerait des utilitaires de base. Je me servirais de mon système Linux actuel pour construire mon propre système.

Au début, cette idée insensée semblait extrêmement difficile à réaliser et, par moments, presque impossible. Après avoir fait un tri de tous les types de problèmes de dépendance, de compilation, etc... un système Linux personnalisé a été créé et rendu totalement opérationnel. Je l'ai appelé LFS, ce qui signifie LinuxFromScratch (NdT : en français, "Linux en partant de zéro").


Comment les choses se dérouleront-elles

Nous allons construire le système LFS en utilisant une distribution Linux déjà installée, telle que Debian, SuSe, Slackware, Mandrake, RedHat, etc. Nul besoin de disquette de démarrage. Nous utiliserons un système Linux existant comme base (puisque nous aurons besoin d'un compilateur, d'un éditeur de liens, d'un éditeur de texte et d'autres outils).

Après avoir téléchargé les packages nécessaires à la constitution d'un système LFS, vous devrez créer une nouvelle partition native Linux, sur laquelle sera installé le système LFS.

L'étape suivante, abordée dans le Chapitre 5, est l'installation d'un nombre de packages liés statiquement et installés sur la partition LFS. Ces packages forment une suite de développement de base utilisée pour installer le système réel.

Le Chapitre 6 permet l'installation du système de base en question. Nous utiliserons le programme chroot pour commencer un nouveau shell, dont le répertoire root sera situé dans la partition LFS. En un sens, cela équivaut à redémarrer et avoir le noyau monté sur la partition LFS de la même manière qu'une partition root. Pourquoi nous ne redémarrons pas et, à la place, nous utilisons le programme chroot ? Parce qu'ainsi, vous conservez la possibilité d'utiliser votre système hôte. Tandis que le logiciel est en cours d'installation, vous pouvez passer sur une autre CV (Console Virtuelle) ou bureau X et continuer d'utiliser votre ordinateur.

Lorsque le logiciel est entièrement installé, on passera à la configuration des scripts de démarrage dans le Chapitre 7. Le Chapitre 8 traite quant à lui de la configuration du chargeur de démarrage Linux : vous pourrez alors redémarrer votre système sous LFS. La dernière étape, après le redémarrage, est la configuration des outils de réseau et des scripts de démarrage. Une fois cette dernière étape exécutée, vous aurez fini ce livre et votre système LFS sera prêt à l'emploi.

En résumé, telle est la démarche à suivre. Des informations détaillées sur les différentes étapes sont fournies tout au long des chapitres au fur et à mesure de votre progression. Si tout n'est pas encore clair, ne vous inquiétez pas. Cela ne saurait tarder.

Veuillez lire le Chapitre 2 avec attention car il explique un certain nombre de points importants qu'il vous faut connaître avant d'en arriver au Chapitre 5 et au-delà.


Version du livre

Ceci est le livre LFS INTEL version 3.0-pre2 daté du April 14th, 2001. Si cette version date de plus d'un mois, une version plus récente pourrait être disponible au téléchargement sur la page d'accueil de LFS.

Ci-dessous se trouve une liste de nos sites miroirs HTTP et FTP en date du 12 avril 2001. Cette liste peut ne plus être exacte. Les dernières informations sont accessibles sur notre site web à http://www.linuxfromscratch.org.


Miroirs FTP


Remerciements

Nous voudrions remercier les personnes et organisations suivantes pour leurs contributions au projet Linux From Scratch :

  • Bryan Dumm pour fournir le matériel et la bande passante du site linuxfromscratch.org.

  • DREAMWVR.COM pour leur parrainage et l'apport de différentes ressources au projet LFS et projets affiliés.

  • Jan Niemann pour héberger http://helga.lk.etc.tu-bs.de en tant que miroir de 134.169.139.209.

  • Johan Lenglet pour diriger le projet de traduction en français sur http://www.fr.linuxfromscratch.org.

  • Michael Peters pour sa contribution aux modifications pour les PowerPC Apple.

  • VA Linux Systems qui au nom de Linux.com, a fait don d'une station VA Linux 420 (anciennement StartX SP2) pour ce projet.

  • Jesse Tie Ten Quee qui a donné un Yamaha CDRW 8824E CD-RW.

  • Jesse Tie Ten Quee pour héberger quasar.highos.com en tant que miroir de www.ca.linuxfromscratch.org .

  • O'Reilly pour leur donation de livres sur SQL et PHP.

  • Robert Briggs pour avoir donné les noms de domaines linuxfromscratch.org et linuxfromscratch.com

  • Torsten Westermann pour diriger les sites miroirs HTTP et FTP de lfs.linux-provider.net

  • Dag Stenstad pour fournir le matériel et la bande passante du site miroir Norvégien et Ian Chilton pour la maintenance de ce miroir.

  • Sans compter les autres personnes membres des listes de diffusion LFS qui, par leurs suggestions, leurs tests et leurs rapports de bogues, permettent à ce livre de sortir.


Journal des modifications

Par exemple, si un changement est listé pour le chapitre 5, cela veut (généralement) dire que le même changement a été fait dans le chapitre correspondant pour les autres architechtures.

3.0-pre2 - April 14th, 2001

Nous avons (principalement Gérard) negligé le journal des modifications durant ces dernieres semaines, donc cette liste n'est pas complète et beaucoup trop de choses ont changé pour rappeler ce qui devrait être listé ici (ce qu'il est important de lister). Nous prêterons plus d'attention au journal des modifications apres que lfs-3.0-pre2 soit validé (autour du 13 Avril 2001).

  • Convertion du source SGML en XML.

  • Chapitre 4 : Annonce à l'utilisateur d'utiliser 'cfdisk' plutôt que 'fdisk'. La page de manuel de fdisk recommande cfdisk car il est plus stable.

  • Chapitre 4 : Changement de la rédaction afin de la rendre plus générale sachant que 'ext2' n'est plus le seul système de fichier. Par exemple, Reiserfs est souvent utilisé.

  • Chapitre 5 : Ajout de mawk, texinfo, et de gettext partiellement pour faciliter le déplacement de Glibc du chapitre 5 au chapitre 6.

  • Chapitre 5 : Ajout de Makedev au chapitre 5. Nous ne créons pas de fichier de périphérique ici, seulement la copie du script MAKEDEV et créons une copie temporaire qui sera utilisée pour la création des fichiers de périphérique. Ce deuxième fichier (MAKEDEV-temp) ne contient ni les noms d'utilisateurs ni les noms de groupes mais seulement les 'id' des utilisateurs et des groupes. Nous avons besoin d'un minimum de fichiers de périphérique pour installer Glibc, mais avant d'installer Glibc les noms d'utilisateurs et de groupes ne sont pas encore reconnus, seul les 'ids' le sont. Cela impose une légère modification du script MAKEDEV qui sera généré en modifiant l'original. Cette modification est faite au chapitre 5. Egalement, la finalisation des explications sur les deux installations de makedev.

  • Chapitre 5 : Recommandation d'installer tout les logiciels lorsque l'on est loggé (ou su en) en root.

  • Chapitre 5 : Simplification de la commande ln.

  • Chapitre 5 : Suppression de prefix=$LFS/usr dans 'make install' des fichier tar.

  • Chapitre 5+6 : Ajout du patch pour fileutils-4.0 qui est nécessaire à la compilation du package fileutils sur les systèmes basés sur Glibc-2.2 (comme par exemple le système LFS-3.0 qui arrive).

  • Chapitre 5+6 : Suppression --disable-nls de la configuration des programmes qui n'en ont pas besoin (bash, diffutils, gzip, sed, m4).

  • Chapitre 5+6 : Changement de "cd dir && make" en "make -C dir" (gettext-static, sysvinit).

  • Chapitre 5 : Arrangement de la procedure statique pour mawk

  • Chapitre 5+6 : Mise a jour de gcc-2.95.2 vers gcc-2.95.2.1.

  • Chapitre 5 : Changement du lien créé durant l'installation de gcc en $LFS/usr/bin/cpp.

  • Chapitre 5+6 : Déplacement de Glibc du chapitre 5 au chapitre 6

  • Chapitre 6 : Changement de libexecdir=/usr/bin dans fileutils en libexecdir=/bin.

  • Chapitre 6 : Mise a jour des instructions d'installation de glibc. la création du fichier 'configparms' a été supprimée. Aucun besoin de choisir un compilateur (soit celui de la distribution native soit celui de /usr/local/gcc2952/bin/gcc) ; nous sommes en chroot maintenant donc nous utiliserons celui que nous avons à présent.

  • Chapitre 6 : On ne copie que les pages de manuel depuis le package ld.so. Nous n'avons plus besoin du programme ldconfig et de ldd ; Glibc-2.2.1 s'accompagne de très bonnes versions.

  • Chapitre 6 : Changement de l'installation de procps par l'utilisation plus facile de sed.

  • Chapitre 6 : Ajout de la création du lien symbolique de lex dans l'installation de flex.

  • Chapitre 6 : Changement de $* en "$@" dans le script yacc durant l'installation de bison. "$@" permet l'usage d'arguments entre guillements comportant des vides.

  • Chapitre 6 : Arrangement de l'installation des pages de manuel durant l'installation des outils de console (console-tools).

  • Chapitre 6 : Quand on entre dans le mode chroot, la variable $TERM est positionné correctement. Ceci grâce à : chroot ... -i HOME=/root TERM=$TERM ...

  • Chapitre 6 : Aggregation des differentes lignes sulogin en une seule dans le fichier inittab.

  • Chapitre 6 : Changement de tout "rm file && ln -s dest file" en "ln -sf file" (dans les installations de glibc, bzip2 and gzip).

  • Chapitre 6 : Ajout d'un sed pour réglé un probleme durant l'installation de glibc. pt_chown ne peut pas être installé, parce que root n'est pas encore reconnu par glibc (dileme de la poule et de l'oeuf).

  • Chapitre 6 : Changement de consoledata/tools en kbd qui est plus activement developpé, et plus facile a installer.

  • Chapitre 7 : Modification du delais pour la fonction killproc dans le script des fonctions. Maintenant apres avoir tué un process, il verifie les PIDs, attends 2 secondes si necéssaire. Plus de détails peuvent être lus dans les commantaires du script.

  • Chapitre 7 : Ajout de l'explication du fonctionnement des 'runlevels' et de la procédure de boot quand on utilise les script LFS.

  • Chapitre 10 : Addition de ce chapitre. Il contient les notes "merci et bonne chance" et suggère de créer le fichier /etc/lfs-3.0-pre2.

  • Appendice A: Ajout de la description des packages Netkit-base et Net-tools.


Listes de diffusion et archives

Le serveur linuxfromscratch.org héberge les listes de diffusion publiques suivantes :

  • lfs-discuss

  • lfs-apps

  • lfs-announce

  • lfs-security

  • alfs-discuss

  • alfs-docs

  • alfs-ipc

  • alfs-profile

  • alfs-backend


lfs-discuss

La liste de diffusion lfs-discuss traite exclusivement de ce qui concerne le LFS-BOOK. Si vous avez des problèmes avec le livre, si vous voulez signaler un bogue ou deux ou si vous avez des suggestions pour améliorer le livre, cette liste est la bonne.

Tout autre email doit être posté sur la liste lfs-apps.


lfs-apps

La liste lfs-apps s'occupe de tout ce qui n'entre pas dans le domaine de la liste lfs-discuss.


lfs-announce

La liste de diffusion lfs-announce est une liste modérée. Il est possible de s'y abonner, mais pas d'y poster de message. Elle est utilisée pour annoncer les nouvelles versions stables. Cette liste lfs-discuss contiendra aussi des informations à propos de versions de développement. Si un utilisateur est déjà inscrit à la liste lfs-discuss, il n'aura que peu d'intérêt à s'inscrire aussi à la liste lfs-announce puisque tout ce qui est posté sur la liste lfs-announce le sera aussi sur lfs-discuss.


lfs-security

La liste de diffusion lfs-security traite des questions concernant la sécurité. Celles-ci, ainsi que tout autre problème de sécurité à propos d'un package utilisé par LFS, doivent être envoyés à cette liste.


alfs-discuss

La liste de distribution 'alfs-discuss' traite du développement de ALFS, qui signifie 'Automated Linux From Scratch'. Le but de ce projet est de développer un outil d'installation capable d'installer un système LFS (NDT: from scratch , a partir de zero). Son objectif principal est d'accélérer la compilation en se dégageant du besoin d'entrer les commandes pour configurer, compiler et installer les packages.


alfs-docs

ALFS-docs est le projet de documentation ALFS qui crée et maintient tout ce qui concerne la documentation ALFS.


alfs-ipc

La liste alfs-ipc traite de ce qui concerne la communication interprocessus de ALFS.


alfs-profile

La liste alfs-profile traite du développement du profil et de la DTD XML ALFS.


alfs-backend

La liste de diffusion 'alfs-backend' traite des sujets concernant les processus de fond d'ALFS.


Comment s'abonner ?

On peut s'abonner à toute liste de diffusion mentionnée ci-dessus en envoyant un email à listar@linuxfromscratch.org et en écrivant subscribe nom-de-la-liste comme en-tête du sujet du message.

On peut s'abonner à plusieurs listes à la fois en n'utilisant qu'un seul email. Ceci se fait en laissant le sujet à blanc puis en entrant toutes les commandes dans le corps de l'email. Celui-ci ressemblera alors à:


To: listar@linuxfromscratch.org
Subject:

subscribe lfs-discuss
subscribe lfs-apps
subscribe alfs-discuss

Une fois l'email envoyé, le programme Listar répondra par un email demandant confirmation de la demande d'abonnement. Une fois l'email de confirmation retourné, Listar enverra de nouveau un email précisant que l'utilisateur est abonné à la (aux) liste(s) et un message d'introduction pour cette liste particulière.


Comment annuler un abonnement ?

Pour annuler l'abonnement à une liste, envoyez un email à listar@linuxfromscratch.org et écrivez unsubscribe nom-de-la-liste comme en-tête du sujet du message.

On peut annuler l'abonnement à plusieurs listes en même temps en n'envoyant qu'un seul email. Ceci se fait en laissant l'en-tête du sujet à blanc puis en mettant toutes les commandes dans le corps du email. Le email ressemblera alors à ceci:



To: listar@linuxfromscratch.org
Subject:

unsubscribe lfs-discuss
unsubscribe lfs-apps
unsubscribe alfs-discuss 

Une fois le email envoyé, le programme Listar répondra par un email demandant une confirmation de la demande d'annulation. Après le retour de cet email de confirmation, Listar enverra de nouveau un email précisant que l'utilisateur n'est plus abonné à la (aux) liste(s).


Autres modes d'abonnement

Ces modes qui peuvent être choisis par un utilisateur nécessitent l'envoi d'un email à listar@linuxfromscratch.org. Les modes eux-mêmes sont positionnés en inscrivant la commande appropriée dans le sujet en en-tête du message.

Comme le libellé le suggère, Set command indique ce qu'il faut inscrire pour activer un mode. Unset command indique ce qu'il faut inscrire pour le désactiver.

Le nom de la liste dans le sujet donné en exemple, doit être remplacé par le nom de la liste à laquelle la commande doit s'appliquer. Si plus d'un mode doit être activé, (pour une ou pour plusieurs listes) avec un seul message, ceci peut être fait en laissant le sujet vide et en inscrivant l'ensemble des commandes dans le corps du message.


Condensés


Activer la commande: set listname digest
Désactiver la commande: unset listname digest

Toutes les listes disposent d'un mode "condensé", qui peut être activé après que l'utilisateur se soit inscrit sur une liste. Se mettre en mode condensé arrêtera la réception de messages unitaires au fur et à mesure qu'ils sont postés sur la liste et remplacera ceux-ci par un seul message journalier récapitulant tous les messages envoyés durant le jour en question.

Il existe un second mode condensé nommé digest2. Quand un utilisateur est positionné sur ce mode, il recevra le condensé journalier mais continuera également de recevoir les messages individuels tels qu'ils sont postés sur la liste. Pour positionner ce mode digest2 doit être inscrit à la place de digest dans le sujet du message.


Indisponibilité


Activer la commande: set listname vacation
Désactiver la commande: unset listname vacation

Si un utilisateur part pour une certaine durée ou souhaite arrêter de recevoir les messages de la liste mais ne veut pas se désabonner, il peut activer le mode "indisponibilité". Ceci a le même effet qu'un désabonnement sans avoir à passer par la procédure de désabonnement puis, à nouveau, la procédure d'abonnement.


Information sur les contacts

Envoyez de préférence tous vos emails vers la liste de diffusion lfs-discuss.

Si vous avez besoin de contacter Gerard Beekmans personnellement, envoyez un mail à gerard@linuxfromscratch.org.


Chapitre 2. Information Importante

A propos de $LFS

S'il vous plaît lisez soigneusement ce qui suit: au travers de ce livre la variable $LFS sera fréquemment utilisée. $LFS doit chaque fois être remplacée par le répertoire où est montée la partition contenant le système LFS. Il sera expliqué de manière détaillée comment créer et où monter la partition dans le chapitre 4. Dans mon cas, la partition LFS est montée sous /mnt/lfs.

Par exemple, quand on vous dit d'exécuter une commande comme ./configure --prefix=$LFS vous devez exécuter ./configure --prefix=/mnt/lfs

Il est important que ce soit fait quel que soit l'endroit où est lue cette variable; que ce soit depuis une commande tapée dans un interpréteur shell, ou d'un fichier édité ou créé.

Une solution est d'initialiser la variable LFS comme variable d'environnement. De cette manière $LFS peut être utilisée littéralement plutôt que d'être remplacée chaque fois par /mnt/lfs. Ceci peut être fait par export LFS=/mnt/lfs.

Maintenant, si on vous dit d'exécuter une commande comme ./configure --prefix=$LFS Vous pouvez littéralement taper la commande. Votre shell remplacera $LFS par /mnt/lfs quand il traitera la ligne de commande (c'est-à-dire quand pour presserez la touche Entrée après avoir tapé la commande).

Si vous prévoyez d'utiliser $LFS, n'oubliez pas d'initialiser la variable $LFS chaque fois. Si la variable n'est pas initialisée mais utilisée, $LFS sera ignorée et le reste sera exécuté. Une commande comme echo "root:x:0:0:root:/root:/bin/bash" > $LFS/etc/passwd sans $LFS initialisée recréera le fichier /etc/passwd de votre système hôte. En d'autres termes, cela détruira votre base courante de mot de passe.

Une manière d'être sûr que $LFS est bien initialisée à chaque fois est de l'ajouter dans le fichier /root/.bash_profile ou /root/.bashrc, ainsi chaque fois que vous entrerez sur le système en tant qu'utilisateur root ou que vous effectuerez un "su" root, la variable $LFS sera initialisée.


Comment télécharger le logiciel

Tout au long de ce document, je supposerai que tous les packages téléchargés ont été placés quelque part dans $LFS/usr/src.

La convention que j'utilise est d'avoir un répertoire $LFS/usr/src/sources. Sous le répertoire sources, J'ai le répertoire 0-9 et les répertoires de a à z. Un package comme sysvinit-2.78.tar.gz sera placé dans le répertoire $LFS/usr/src/sources/s/ . Un package comme bash-2.04.tar.gz sera placé dans le répertoire $LFS/usr/src/sources/b/, et ainsi de suite. Cette convention n'est pas impérative bien sûr, je ne faisais juste que vous donner un exemple. Il est préférable de laisser les packages hors de $LFS/usr/src et de les déplacer dans un sous répertoire, de façon à garder un répertoire $LFS/usr/src, dans lequel on pourra désarchiver les paquetages et travailler avec.

Le chapitre suivant contient la liste de tous les packages que vous devez télécharger, mais la partition devant héberger notre système LFS n'a pas encore été créée. Donc les fichiers seront stockés temporairement autre part (libre à vous de décider où), et ce ne sera qu'à la fin du chapitre décrivant la préparation de cette partition que vous pourrez les déplacer dans le répertoire $LFS/usr/src/ .


Comment installer les logiciels

Avant de réellement pouvoir faire quoi que ce soit avec un package, vous devez d'abord le déballer. Souvent les packages sont archivés à l'aide des utilitaires TAR et GZIP ou BZIP2. Je ne vais pas décrire à chaque fois comment déballer une archive. Je vais l'expliquer une fois pour toute, dans cette section.

Pour commencer, allez dans le répertoire $LFS/usr/src en exécutant:



        cd $LFS/usr/src

Si un fichier a été archivé à l'aide des utilitaires TAR et GZIP, il est déballé en exécutant, selon son extension,une des deux commandes suivantes:



        tar xvzf nomdufichier.tar.gz
        tar xvzf nomdufichier.tgz

Si un fichier a été archivé à l'aide des utilitaires TAR et BZIP2, il est déballé en exécutant:



        bzcat nomdufichier.tar.bz2 | tar xv

Certains programmes TAR (la plupart à ce jour mais pas tous) sont légèrement modifiés pour pouvoir traiter des fichiers BZIP2 directement en utilisant les options I ou y, exactement de la même façon que l'option z pour les archives GZIP. Peu importe comment le systeme hôte a décidé de patcher bzip2, la syntaxe précédente fonctionne.

Si un fichier est juste archivé à l'aide de l'utilitaire TAR, il est déballé en exécutant:



        tar xvf nomdufichier.tar

Quand une archive ab est déballée, un nouveau répertoire est créé sous le répertoire courant (et ce livre suppose que les archives sont déballées sous le répertoire $LFS/usr/src directory). Placez-vous dans ce répertoire avant de poursuivre les instructions de l'installation. De plus, chaque fois que ce livre installe un package, c'est à vous de déballer l'archive et de vous placer dans le répertoire nouvellement créé.

De temps en temps vous serez amenés à traiter de simples fichiers comme les patchs. Ces fichiers sont généralement compressés avec les utilitaires GZIP ou BZIP2. Avant que ces fichiers puissent être utilisés, ils doivent d'abord être décompressés.

Si le fichier est compressé avec l'utilitaire GZIP, il est décompressé en exécutant:



gunzip nomdufichier.gz

Si le fichier est compressé avec l'utilitaire BZIP2, il est décompressé en exécutant:



bunzip2 nomdufichier.bz2

Après qu'un package a été installé, deux choses peuvent y être faites : soit le répertoire qui contient les sources peut être effacé, soit il peut être laissé. Si il est laissé, cela ne me dérange pas, mais si le même package est de nouveau nécéssaire dans les chapitres suivants, le répertoire devra d'abord être effacé avant d'être utilisé à nouveau. Si cela n'est pas fait, vous pourriez finir par avoir des problèmes car d'anciens paramètrages seront utilisés (paramètrages qui sont appliqués au système hôte mais qui ne sont pas toujours appliqués au systeme LFS). Faire un simple make clean ou make distclean ne garantie pas totalement une arborescence propre.

Donc, épargnez vous des tracas et effacez le répertoire source immédiatement après l'avoir installé.

Il y a une exception à cette règle: n'effacez pas l'arborescence des sources du noyau Linux. Beaucoup de programmes ont besoin des fichiers d'entête du noyau, par conséquent c'est l'unique répertoire qui ne doit pas être effacé, sinon aucun autre package ne pourra être compilé.


Télécharger les scripts de démarrage

Retaper tous les scripts de démarrage des chapitres 7 et 9 peut être long, fastidieux et source d'erreurs.

Pour gagner du temps, les scripts de démarrage peuvent être téléchargés depuis http://packages.linuxfromscratch.org/bootscripts/ ou ftp://packages.linuxfromscratch.org/bootscripts/.


Télécharger les commandes LFS

LFS Commands est une archive tar contenant les fichiers décrivant les commandes d'installation des packages utilisés dans ce livre. Ces fichiers peuvent être directement copiés dans votre shell pour installer les packages, néanmoins certains doivent être modifiés (par exemple, lors de l'installation du package concernant le clavier, vous devez choisir le fichier de description du clavier, car on ne peut pas prévoir quel type vous utilisez)

Ces fichiers peuvent être aussi utilisés pour trouver rapidement les commandes qui ont été changées entre différentes versions de LFS. Téléchargez l'archive tar lfs-commands pour cette version du livre LFS ainsi que pour la précédente et lancez un diff sur ces fichiers. De cette manière, il est possible de voir dans quels packages les instructions d'installation ont été changées, et donc quels scripts vous devez modifier ou bien quel package vous devez réinstaller si vous pensez que cela est nécessaire.

L'archive lfs-command peut être téléchargée depuis http://packages.linuxfromscratch.org/lfs-commands/ ou ftp://packages.linuxfromscratch.org/lfs-commands/.


Chapitre 3. Packages qui doivent être téléchargés

Introduction

Ci-dessous, il y a une liste de tous les paquetages à télécharger pour construire le système de base. Les numéros de version affichés correspondent à des versions de logiciel qui fonctionnent, et qui sont la base du livre. Si vous rencontrez des problèmes que vous ne pouvez résoudre vous-même, veuillez télécharger dans ce cas la version indiquée par le livre (au cas où vous auriez téléchargé une version plus récente).

Si le serveur packages.linuxfromscratch.org n'autorise plus les connexions, essayez l'un de nos sites miroirs. Les adresses des sites miroirs se trouvent au Chapitre 1 - Version du livre.

Dans Annexe C - Sites officiels de téléchargement , nous avons fourni la liste des sites officiels de téléchargement des paquetages listés ci-dessous. L'archive LFS FTP ne contient que les versions des paquetages recommandées par ce livre. Vous avez toujours la possibilite de consulter les Sites officiels dans l'Annexe C afin de vérifier s'il existe une nouvelle version. Pour ceux qui téléchargeront une version plus récente, nous apprécierions énormement de savoir si vous êtes parvenus ou non à installer cette version, grâce aux instructions de ce livre.

Prenez note que tous les fichiers téléchargés de l'archive LFS FTP sont compressés avec bzip2 au lieu de gzip. Si vous ne savez pas comment utiliser les fichiers bz2, nous vous conseillons la lecture de Chapitre 2 - Comment installer le logiciel.

La liste ci-dessous a été mise à jour le 2 avril 2001.


Packages qui doivent être téléchargés



Explorer avec FTP: 
ftp://packages.linuxfromscratch.org/

Explorer avec HTTP:
http://packages.linuxfromscratch.org/


Tous les packages LFS - 70 290 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/lfs-packages-intel-3.0-pre2.tar
http://packages.linuxfromscratch.org/intel-3.0-pre2/lfs-packages-intel-3.0-pre2.tar

Bash (2.04) - 1 308 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/bash-2.04.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/bash-2.04.tar.bz2


Binutils (2.10.1) - 5 524 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/binutils-2.10.1.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/binutils-2.10.1.tar.bz2


Bzip2 (1.0.1) - 410 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/bzip2-1.0.1.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/bzip2-1.0.1.tar.bz2


Diff Utils (2.7) - 247 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/diffutils-2.7.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/diffutils-2.7.tar.bz2


File Utils (4.0) 801 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/fileutils-4.0.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/fileutils-4.0.tar.bz2


Patch de File Utils (4.0) - 1 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/fileutils-4.0.patch.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/fileutils-4.0.patch.bz2

GCC (2.95.2.1) 9 551 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/gcc-2.95.2.1.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/gcc-2.95.2.1.tar.bz2


Noyau Linux (2.4.2) 20 019 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/linux-2.4.2.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/linux-2.4.2.tar.bz2


Grep (2.4.2) 382 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/grep-2.4.2.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/grep-2.4.2.tar.bz2


Gzip (1.2.4a) 178 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/gzip-1.2.4a.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/gzip-1.2.4a.tar.bz2


Patch de Gzip (1.2.4a) 1 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/gzip-1.2.4a.patch.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/gzip-1.2.4a.patch.bz2


Make (3.79.1) 794 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/make-3.79.1.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/make-3.79.1.tar.bz2


Sed (3.02) 221 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/sed-3.02.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/sed-3.02.tar.bz2


Sh-utils (2.0) 824 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/sh-utils-2.0.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/sh-utils-2.0.tar.bz2


Tar (1.13) 730 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/tar-1.13.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/tar-1.13.tar.bz2


Patch de Tar (1.13) 1 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/gnutarpatch.txt.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/gnutarpatch.txt.bz2


Text Utils (2.0) 1 040 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/textutils-2.0.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/textutils-2.0.tar.bz2


Mawk (1.3.3) 168 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/mawk1.3.3.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/mawk1.3.3.tar.bz2


Texinfo (4.0) 812 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/texinfo-4.0.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/texinfo-4.0.tar.bz2


Gettext (0.10.36) 705 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/gettext-0.10.36.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/gettext-0.10.36.tar.bz2


MAKEDEV - 7 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/MAKEDEV.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/MAKEDEV.bz2


Glibc (2.2.1) 10 137 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/glibc-2.2.1.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/glibc-2.2.1.tar.bz2


Glibc-linuxthreads (2.2.1) 149 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/glibc-linuxthreads-2.2.1.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/glibc-linuxthreads-2.2.1.tar.bz2


Man-pages (1.35) 478 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/man-pages-1.35.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/man-pages-1.35.tar.bz2


Ed (0.2) - 158 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/ed-0.2.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/ed-0.2.tar.bz2


Patch (2.5.4) 149 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/patch-2.5.4.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/patch-2.5.4.tar.bz2


Find Utils (4.1) 226 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/findutils-4.1.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/findutils-4.1.tar.bz2


Patch de Find Utils (4.1) 1 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/findutils-4.1.patch.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/findutils-4.1.patch.bz2


Ncurses (5.2) 1 308 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/ncurses-5.2.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/ncurses-5.2.tar.bz2


Vim-rt (5.7) 905 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/vim-5.7-rt.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/vim-5.7-rt.tar.bz2

Vim-src (5.7) 963 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/vim-5.7-src.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/vim-5.7-src.tar.bz2


Bison (1.28) - 321 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/bison-1.28.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/bison-1.28.tar.bz2


Less (358) 178 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/less-358.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/less-358.tar.bz2


Groff (1.16.1) 1 174 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/groff-1.16.1.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/groff-1.16.1.tar.bz2


Man (1.5i) 158 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/man-1.5i.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/man-1.5i.tar.bz2


Perl (5.6.0) 4 327 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/perl-5.6.0.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/perl-5.6.0.tar.bz2


M4 (1.4) 249 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/m4-1.4.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/m4-1.4.tar.bz2


Autoconf (2.13) - 333 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/autoconf-2.13.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/autoconf-2.13.tar.bz2


Automake (1.4) - 277 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/automake-1.4.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/automake-1.4.tar.bz2


Flex (2.5.4a) 278 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/flex-2.5.4a.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/flex-2.5.4a.tar.bz2


File (3.34) - 130 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/file-3.34.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/file-3.34.tar.bz2



Libtool (1.3.5) 361 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/libtool-1.3.5.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/libtool-1.3.5.tar.bz2


Bin86 (0.15.4) - 112 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/bin86-0.15.4.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/bin86-0.15.4.tar.bz2


Kbd (1.05) 585 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/kbd-1.05.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/kbd-1.05.tar.bz2

E2fsprogs (1.19) - 808 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/e2fsprogs-1.19.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/e2fsprogs-1.19.tar.bz2


Ld.so (1.9.9) 280 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/ld.so-1.9.9.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/ld.so-1.9.9.tar.bz2


Lilo (21.7.3) 174 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/lilo-21.7.3.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/lilo-21.7.3.tar.bz2


Modutils (2.4.5) 200 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/modutils-2.4.5.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/modutils-2.4.5.tar.bz2


Procinfo (18) 22 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/procinfo-18.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/procinfo-18.tar.bz2


Procps (2.0.7) 153 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/procps-2.0.7.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/procps-2.0.7.tar.bz2


Psmisc (20.1) 51 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/psmisc-20.1.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/psmisc-20.1.tar.bz2


Kit Shadow Password (20001016) 551 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/shadow-20001016.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/shadow-20001016.tar.bz2


Patch du Kit Shadow Password (20001016) 1 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/shadow-20001016.patch.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/shadow-20001016.patch.bz2

Sysklogd (1.4.1) 67 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/sysklogd-1.4.1.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/sysklogd-1.4.1.tar.bz2


Sysvinit (2.78) 90 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/sysvinit-2.78.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/sysvinit-2.78.tar.bz2


Patch de Sysvinit (2.78) 1 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/sysvinit-2.78.patch.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/sysvinit-2.78.patch.bz2


Util Linux (2.11b) 919 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/util-linux-2.11b.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/util-linux-2.11b.tar.bz2


Netkit-base (0.17) 49 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/netkit-base-0.17.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/netkit-base-0.17.tar.bz2


Net-tools (1.59) 193 ko:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/net-tools-1.59.tar.bz2
http://packages.linuxfromscratch.org/intel-3.0-pre2/net-tools-1.59.tar.bz2



Taille totale de tous les packages Intel: 70 240 ko (68,60 Mo)


Chapitre 4. Préparation d'une nouvelle partition

Introduction

Dans ce chapitre, nous allons préparer la partition qui accueillera le système LFS. On créera tout d'abord cette partition, puis un système de fichiers et enfin la structure des répertoires. Après cela, nous pourrons passer au chapitre suivant et entamer réellement le processus de construction.


Création d'une nouvelle partition

Avant de pouvoir construire notre nouveau système Linux, nous devons avoir une partition Linux vide dans laquelle nous pourrons créer notre nouveau système. Je vous recommande une partition d'une taille d'au moins 750 Mo. Cela vous donne assez d'espace pour stocker toutes les archives et pour compiler tous les paquetages sans avoir à se préoccuper de manquer d'espace disque temporaire nécessaire. Cependant vous aurez probablement envie de plus d'espace que cela, si vous décidez d'utiliser le système LFS comme système principal. Si vous disposez déjà d'une partition native Linux , vous pouvez passer cette sous-section.

Le programme cfdisk (ou tout autre programme fdisk de votre choix) est démarré avec comme option le disque dur approprié (tel que /dev/hda, si une nouvelle partition doit être créée sur le disque maître primaire IDE). Cela permet de créer une partition native Linux, écrire la table de partition et sortir du programme cfdisk. Veuillez vous reporter à la documentation concernant le programme fdisk de votre choix (la lecture des pages man est un bon début) et lisez les procédures relatives à la création d'une partition native Linux et à l'écriture d'une table de partition.

Rappelez vous de l'identification de votre nouvelle partition. Ce peut être quelque chose comme hda11. Cette partition nouvellement créée sera appelée la partition LFS dans ce livre.


Création d'un système de fichiers dans la nouvelle partition

Dès que la partition est créée, nous devons créer un nouveau système de fichiers dans cette partition. Le système de fichiers standard utilisé généralement est le système de fichiers ext2, mais on rencontre également de plus en plus souvent les systèmes de fichiers dits journalisés. Il vous appartient bien sûr de choisir le type de système de fichiers que vous souhaitez créer, mais nous supposerons ici, par souci de simplicité, que vous avez opté pour le système de fichiers ext2.

Pour créer un système de fichiers ext2, utilisez la commande mke2fs. La partition LFS est utilisée comme unique paramètre de la commande et le système de fichiers est créé.



mke2fs /dev/xxx

Remplacez "xxx" par le nom de la partition (par exemple hda11).


Montage d'une nouvelle partition

Maintenant que le système de fichiers a été créé, il est prêt à être utilisé. Tout ce que nous avons à faire pour accéder à la partition (c'est-à-dire pour pouvoir y lire ou écrire des données) c'est de la monter. Si vous la montez sous /mnt/lfs, vous pouvez accéder à la partition en allant au répertoire /mnt/lfs. Nous considérerons dans ce livre que vous l'avez montée dans /mnt/lfs. Peu importe le répertoire que vous choisirez, du moment que vous vous en rappelez.

Créez le répertoire /mnt/lfs en exécutant :



mkdir -p /mnt/lfs

Maintenant, montez la partition LFS en exécutant :



mount /dev/xxx /mnt/lfs

Remplacez " xxx"  par l'identificateur de votre partition (tel que hda11).

Ce répertoire (/mnt/lfs) est la variable $LFS dont nous avons déjà parlé précédemment. Désormais si vous voulez utiliser la variable d'environnement $LFS, il vous faudra exécuter export LFS=/mnt/lfs.


Création des répertoires

Créons l'arborescence des répertoires dans la partition LFS en conformité au standard FHS qui se trouve en http://www.pathname.com/fhs/. Exécuter les commandes suivantes créera par defaut une structure différente de répertoire :



cd $LFS
mkdir -p bin boot dev/pts etc home lib mnt proc root sbin tmp var
for dirname in $LFS/usr $LFS/usr/local
   do
   mkdir $dirname
   cd $dirname
   mkdir bin etc include lib sbin share src tmp var
   ln -s share/man man
   ln -s share/doc doc
   ln -s share/info info
   cd $dirname/share
   mkdir dict doc info locale man nls misc terminfo zoneinfo
   cd $dirname/share/man
   mkdir man1 man2 man3 man4 man5 man6 man7 man8
done
cd $LFS/var
mkdir lock log mail run spool tmp

Normalement, les répertoires sont créés avec le mode de permission 755, ce qui n'est pas souhaitable pour tous les répertoires. Le premier changement est le mode 0750 pour le répertoire $LFS/root. Ceci pour s'assurer que tout le monde ne peut pas entrer dans le répertoire /root (vous feriez la mÍême chose pour les répertoires /home/username). Le deuxième changement est le mode 1777 pour les répertoires /tmp. De cette façon, tous les utilisateurs peuvent écrire dans le répertoire /tmp si besoin, mais ne peuvent pas supprimer les fichiers des autres utilisateurs (ceci grâce au "sticky bit" - bit 1 du masque bit 1777).



cd $LFS &&
chmod 0750 root &&
chmod 1777 tmp usr/tmp usr/local/tmp var/tmp

Maintenant que les répertoires sont créés, copiez les sources que vous avez téléchargés au chapitre 3 dans un sous-répertoire de $LFS/usr/src (vous devrez créer ce sous-répertoire vous même).


Chapitre 5. Préparer le système LFS

Introduction

Dans les chapitres suivants, nous allons installer tous les logiciels qui font partie d'un système Linux de base. Après en avoir terminé avec ce chapitre et le suivant, vous aurez un système Linux pleinement fonctionnel. Les chapitres restants traitent de la création des scripts de démarrage, de la manière de rendre le système LFS amorçable, et de la mise en place du réseau de base.

Les logiciels dans ce chapitre seront liés statiquement. Ces programmes seront réinstallés au chapitre suivant avec une édition de liens dynamiques. Nous commencons par une version statique parce qu'il est possible que notre système Linux normal et notre système LFS n'utilisent pas la même version de bibliothèque C. Si les programmes de la première partie étaient liés à une version ancienne de la bibliothèque C, ces programmes pourraient ne pas bien fonctionner dans le système LFS.

La clef pour apprendre ce qui fait fonctionner Linux est de savoir exactement quelle est l'utilité de chaque package et en quoi un utilisateur ou le système en a besoin. Les descriptions du contenu des packages sont fournies après la sous-section Installation de chaque package, et aussi dans l'annexe A.

Pendant l'installation de certains packages, vous verrez très probablement des messages d'alerte du compilateur défilant sur votre écran. Ceci est normal et peut être ignoré sans danger. Il s'agit seulement de messages d'avertissement (principalement au sujet d'utilisation incorrecte, mais pas illégale, de la syntaxe de C ou de C++. C'est simplement que, souvent, les standards du langage C ont changé, et les packages utilisent encore le vieux standard, ce qui n'est pas un problème).

Avant de commencer, assurez-vous que vous avez positionné correctement la variable LFS, si vous avez décidé de l'utiliser. Exécutez ce qui suit:



echo $LFS

Vérifiez que la sortie contient le bon répertoire vers le point de montage de la partition LFS (/mnt/lfs par exemple).


Installer tous les logiciels sous l'utilisateur root

Il vaut mieux se connecter sous root, ou changer l'utilisateur en root, quand on installe les packages. Ainsi, vous êtes sûr que tous les fichiers appartiennent à l'utilisateur et au groupe root (et ne sont pas la possession d'un identifiant d'utilisateur non root), et que si un package désire des permissions particulières, cela peut se faire sans problème lié à un accès non root.

La documentation fournie avec Glibc, Gcc et les autres packages recommande de ne pas compiler les packages avec l'utilisateur root. Nous pensons qu'il est sage d'ignorer cette recommandation et de compiler quand même sous root. Des centaines de personnes utilisant LFS l'ont fait sans problème, et nous n'avons rencontré aucun bogue dans le processus de compilation qui puisse causer du tort. C'est donc suffisamment sûr (on ne peut jamais être sûr à 100%, c'est donc à vous au final qu'il appartient de décider).


Installer Bash

Installation de Bash

Installez Bash en lançant les commandes suivantes:



./configure --enable-static-link --prefix=$LFS/usr \
   --bindir=$LFS/bin --with-curses &&
make &&
make install &&
cd $LFS/bin &&
ln -s bash sh

Si vous rencontrez des erreurs en compilant bash qui vous disent ne pas pouvoir trouver " -lcurses" , ces deux commandes doivent être lancées pour créer le lien symbolique manquant:

Note : Normalement, le fichier libncurses.a réside dans le répertoire /usr/lib, mais il peut aussi être dans /lib (comme dans un système LFS). Donc, vérifiez-le d'abord, et modifiez le chemin dans les commandes suivantes en accord avec cela.



cd /usr/lib &&
ln -s libncurses.a libcurses.a


Explication des commandes

--enable-static-link: Cette option de configure rend Bash lié de maniere statique.

--prefix=$LFS/usr: Cette option de configure installe tous les fichiers de Bash sous le répertoire $LFS/usr, qui deviendra le répertoire /usr après un chroot dans $LFS ou quand le système sera redémarré sous LFS.

--bindir=$LFS/bin: Ceci installe les fichiers exécutables dans $LFS/bin. Nous faisons ceci car nous voulons que bash soit dans /bin, et non dans /usr/bin. Une des raisons est la suivante : la partition /usr peut être une partition séparée montée quelque part. Avant que cette partition ne soit montée, un utilisateur a besoin de disposer de bash (il sera difficile d'exécuter les scripts de démarrage sans un shell, par exemple).

--with-curses: Ceci a pour effet de lier Bash à la bibliothèque curses au lieu de la bibliothèque par défaut termcap, qui devient obsolète.

ln -s bash sh: Cette commande crée le lien symbolique sh qui pointe sur bash. La plupart des scripts s'exécutent via 'sh' (invoqué par le #!/bin/sh dans la première ligne des scripts), qui invoque un mode spécial de bash. Bash se comportera alors (du mieux qu'il puisse) comme le shell Bourne original.

Les && à la fin de chaque ligne font que la commande suivante n'est exécutée que si la commande précédente se termine avec une valeur de retour de 0, indiquant le succès. Au cas où ces commandes sont copiées&collées dans le shell, il est important de s'assurer que, si ./configure échoue, make ne sera pas exécuté, et, de même, que si make échoue, make install ne sera pas exécuté, et ainsi de suite.


Contenu

Le package Bash contient le programme bash.


Description

bash est le SHell Bourne-Again, qui est un interpréteur de commandes couramment utilisé sur les systèmes Unix. bash est un programme qui lit l'entrée standard, c'est-à-dire le clavier. Un utilisateur tape quelque chose et le programme évalue ce qu'il a entré, et en fait quelque chose, comme lancer un programme.


Installer Binutils

Installation de Binutils

Installez Binutils en exécutant les commandes suivantes :



./configure --prefix=$LFS/usr --disable-nls &&
make -e LDFLAGS=-all-static tooldir=$LFS/usr &&
make -e tooldir=$LFS/usr install


Explication des commandes

make -e: Le paramètre -e indique à make que les variables d'environnement ont priorité sur les variables définies dans le(s) fichier(s) Makefile. Ceci est nécessaire pour pouvoir réussir à lier statiquement binutils.

LDFLAGS=-all-static: Positionner la variable LDFLAGS à la valeur -all-static impose l'édition de liens statique de binutils.

tooldir=$LFS/usr: Normalement, le répertoire tooldir (le répertoire où seront finalement installés les exécutables de binutils) est positionné à $(exec_prefix)/$(target_alias), ce qui vaut, par exemple, /usr/i686-pc-linux-gnu. Étant donné que nous ne créons ces exécutables que pour notre système, nous n'avons pas besoin de ce répertoire spécifique à une cible dans $LFS/usr. Cette option serait utilisée si le système devait être utilisé pour des compilations croisées (par exemple, pour compiler un package sur une machine Intel qui générerait du code exécutable sur une machine Apple PowerPC).


Contenu

Le package Binutils contient les programmes gasp, gprof, ld, as, ar, nm, objcopy, objdump, ranlib, readelf, size, strings, strip, c++filt et addr2line.


Description

gasp

gasp est le préprocesseur de macros assembleur.


gprof

gprof affiche les données de profil sous forme de graphe d'appel.


ld

ld combine plusieurs fichiers objets et archives, modifie l'emplacement de leurs données et lie les références des symboles. Souvent, la dernière étape dans la construction d'un nouveau programme compilé à exécuter est un appel à ld.


as

as a d'abord été prévu pour assembler la sortie du compilateur GNU C gcc, pour qu'elle puisse être utilisée par le lieur ld.


ar

Le programme ar crée, modifie et extrait des données depuis des archives. Une archive est un simple fichier contenant un ensemble d'autres fichiers dans une structure qui permet de retrouver les fichiers individuels d'origine (appelés membres de l'archive).


nm

nm liste les symboles des fichiers objet.


objcopy

L'utilitaire objcopy copie le contenu d'un fichier objet dans un autre. objcopy utilise la bibliothèque GNU BFD pour lire et écrire dans les fichiers objet. Il peut écrire le fichier objet destination dans un format différent de celui du fichier objet source.


objdump

objdump affiche des informations sur un ou plusieurs fichiers objet. Les options déterminent quelles informations spécifiques sont à afficher. Ces informations sont essentiellement utiles pour les programmeurs qui travaillent sur des outils de compilation, à l'inverse des programmeurs qui veulent juste que leur programme compile et fonctionne.


ranlib

ranlib génère un index du contenu d'une archive, et le stocke dans l'archive. L'index liste chaque symbole défini par un membre d'une archive, qui est un fichier objet re-localisable.


readelf

readelf affiche des informations sur les binaires de type elf.


size

size liste les tailles des sections -- et la taille totale -- de chaque fichier objet objfile dans sa liste d'arguments. Par défaut, une ligne est générée en sortie pour chaque fichier objet ou chaque module dans l'archive.


strings

Pour chaque fichier donné, strings affiche les séquences de caractères imprimables qui ont au moins une longueur de quatre caractères (ou le nombre spécifié en option du programme) et sont suivies d'un caractère non imprimable. Par défaut, il affiche seulement les chaînes des parties initialisées et chargées des fichiers objet; pour les autres types de fichier, il affiche les chaînes de tout le fichier.

strings est essentiellement utilisé pour déterminer le contenu des fichiers non-texte.


strip

strip débarrasse les fichiers objet de tous les symboles, ou de certains en particuliers. La liste des fichiers objet peut inclure des archives. Au moins un fichier objet doit être fourni. strip modifie les fichiers fournis en argument, plutôt que d'écrire les copies modifiées sous d'autres noms.


c++filt

Le langage C++ fournit un mécanisme de surcharge, ce qui signifie que vous pouvez écrire plusieurs fonctions ayant le même nom (pourvu que chacune réclame des paramètres de types différents). Tous les noms de fonction C++ sont encodés dans un nom d'assemblage de bas niveau (ce processus est connu sous le nom de broyage). Le programme c++filt fait l'association inverse: il décode (dé-broie) les noms de bas niveau en noms de niveau utilisateur, pour que le lieur puisse prévenir un conflit entre ces fonctions surchargées.


addr2line

addr2line traduit les adresses d'un programme en noms de fichier et numéros de ligne. A partir d'une adresse et d'un exécutable, il utilise les informations de déboguage présentes dans l'exécutable pour trouver quel nom de fichier et quel numéro de ligne sont associés à une adresse donnée.


Installer Bzip2

Installation de Bzip2

Installez Bzip2 en exécutant les commandes suivantes :



sed \
   s/"\$(CC) \$(CFLAGS) -o"/"\$(CC) \$(CFLAGS) \$(LDFLAGS) -o"/ \
   Makefile | make -f - LDFLAGS=-static &&
make PREFIX=$LFS/usr install &&
cd $LFS/usr/bin &&
mv bzcat bunzip2 bzip2 bzip2recover $LFS/bin


Explication des commandes

sed: Ici, la commande sed recherche les chaînes de caractères "$(CC) $(CFLAGS) -o" et les remplace par "$(CC) $(CFLAGS) $(LDFLAGS) -o" dans le fichier Makefile. Nous faisons cette modification pour qu'il soit plus aisé de faire l'édition de liens statique de bzip2.

...Makefile | make -f -: Makefile est le dernier paramètre de la commande sed, et indique le fichier dans lequel on recherche et remplace. Normalement, sed envoie le fichier modifié vers stdout (la sortie standard), qui serait la console. Avec la construction que nous utilisons, les sorties de sed seront injectées dans le programme make. Normalement, quand make est lancé, il cherche un certain nombre de fichiers comme Makefile. Mais nous avons modifié le fichier Makefile, aussi nous ne voulons pas que make l'utilise. Le paramètre "-f -" indique à make de lire son entrée depuis un autre fichier, ou depuis stdin (l'entrée standard), ce que le paramètre tiret (-) implique. C'est une des façons de procéder. Une autre manière aurait été de demander à sed d'écrire sa sortie dans un fichier différent, et d'indiquer à make, à l'aide du paramètre -f, de lire ce fichier alternatif.

LDFLAGS=-static: Ceci est la seconde manière que nous utilisons pour procéder à une édition de liens statique. C'est aussi la plus commune. La valeur -all-static n'est utilisée qu'avec les package binutils et gettext, et ne sera plus utilisée dans la suite de ce livre.


Contenu

Le package Bzip2 contient les programmes bzip2, bunzip2, bzcat et bzip2recover.


Description

bzip2

bzip2 compresse les fichiers avec l'algorithme de compression de texte par tri de blocs de Burrows-Wheeler, et le codage de Huffman. La compression est en général bien meilleure que celle obtenue par les compresseurs plus conventionnels basés sur LZ77/LZ78, et s'approche des performances de la famille PPM des compresseurs statistiques.


bunzip2

bunzip2 décompresse les fichiers qui ont été compressés avec bzip2.


bzcat

bzcat (ou bzip2 -dc) décompresse tous les fichiers spécifiés sur la sortie standard.


bzip2recover

bzip2recover restaure les données des fichiers bzip2 endommagés.


Installer Diffutils

Installation de Diffutils

Installez Diffutils en lançant les commandes suivantes:



export CPPFLAGS=-Dre_max_failures=re_max_failures2 &&
./configure --prefix=$LFS/usr &&
unset CPPFLAGS &&
make LDFLAGS=-static &&
make install


Explication des commandes

CPPFLAGS=-Dre_max_failures=re_max_failures2: La variable CPPFLAGS est lue par le programme cpp (préprocesseur C). La valeur de cette variable indique au préprocesseur de remplacer chaque instance de re_max_failures trouvée par re_max_failures2 avant de passer le fichier source au compilateur lui-même pour la compilation. Ce package a des problèmes quand on en fait l'édition de liens statique sur certaines plate-formes (cela dépend de la version de Glibc utilisée par le système), et cette construction résout ce problème.


Contenu

Le package Diffutils contient les programmes cmp, diff, diff3 et sdiff.


Description

cmp et diff

cmp et diff comparent tous deux deux fichiers et montrent leurs différences. Ces deux programmes ont des options pour comparer des fichiers dans différentes situations.


diff3

La différence entre diff et diff3 est que diff compare deux fichiers, et diff3 en compare trois.


sdiff

sdiff fusionne deux fichiers et affiche interactivement le résultat.


Installer Fileutils

Installation de Fileutils

Installez Fileutils en lançant les commandes suivantes:



patch -Np1 -i ../fileutils-4.0.patch &&
./configure --disable-nls \
--prefix=$LFS/usr --libexecdir=$LFS/bin --bindir=$LFS/bin &&
make LDFLAGS=-static &&
make install &&
cd $LFS/usr/bin &&
ln -s ../../bin/install


Explication de la commande

--libexecdir=$LFS/bin: Cette option de configuration va définir $LFS/bin comme étant le répertoire des exécutables. Normalement, ces exécutables sont dans /usr/libexec mais rien n'est mis dedans. Le changer empêche que ce répertoire soit créé pour rien.


Contenu

Le package Fileutils contient les programmes chgrp, chmod, chown, cp, dd, df, dir, dircolors, du, install, ln, ls, mkdir, mkfifo, mknod, mv, rm, rmdir, sync, touch et vdir.


Description

chgrp

chgrp modifie le groupe d'appartenance de chaque fichier donné en lui affectant le groupe spécifié, qui peut être un nom de groupe ou un ID de groupe numérique.


chmod

chmod modifie les permissions de chaque fichier spécifié selon le mode donné, qui peut être soit une représentation symbolique des changements à effectuer, ou un nombre octal représentant le schéma de bits pour les nouvelles permissions.


chown

chown modifie l'utilisateur et/ou le groupe d'appartenance de chaque fichier spécifié.


cp

cp copie les fichiers d'un endroit dans un autre.


dd

dd copie un fichier (depuis l'entrée standard vers la sortie standard, par défaut) avec une taille de bloc choisie par l'utilisateur, en pouvant éventuellement y faire des conversions.


df

df affiche la quantité d'espace disque disponible sur le système de fichiers contenant chaque nom de fichier en argument. Si aucun nom de fichier n'est donné, l'espace disponible sur tous les systèmes de fichier actuellement montés est affiché.


ls, dir et vdir

dir et vdir sont des versions de ls avec différents formats de sortie par défaut. Ces programmes listent chaque fichier ou répertoire spécifié. Le contenu des répertoires est trié alphabétiquement. Pour ls, les fichiers sont listés par défaut en colonne, triés verticalement, si la sortie standard est un terminal; autrement, ils sont listés un par ligne. Pour dir, les fichiers sont listés par défaut en colonne, triés verticalement. Pour vdir, les fichiers sont listés par défaut en format long.


dircolors

dircolors affiche les commandes pour positionner la variable d'environnement LS_COLOR. La variable LS_COLOR est utilisée pour modifier le schéma de couleurs par défaut utilisé par ls et les utilitaires associés.


du

du affiche la quantité d'espace disque utilisée par chaque argument, et pour chaque sous-répertoire du répertoire en argument.


install

install copie les fichiers et positionne leurs permissions et, si possible, leur propriétaire et leur groupe.


ln

ln crée des liens physiques ou logiques (symboliques) entre fichiers.


mkdir

mkdir crée des répertoires avec un nom spécifié.


mkfifo

mkfifo crée un FIFO avec chaque nom spécifié.


mknod

mknod crée un FIFO, fichier spécial de type caractère ou bloc, avec le nom de fichier spécifié.


mv

mv déplace des fichiers d'un répertoire dans un autre, ou renomme des fichiers, selon les arguments qui lui sont passés.


rm

rm supprime des fichiers ou des répertoires.


rmdir

rmdir supprime des répertoires, s'ils sont vides.


sync

sync force l'écriture des blocs modifiés sur disque et met à jour le super-bloc.


touch

touch positionne les heures d'accès et de modification de chaque fichier spécifié à l'heure courant. Les fichiers qui n'existent pas sont créés vides.


Installer GCC

Installation de GCC

Installez GCC en lançant les commandes suivantes:



mkdir $LFS/usr/src/gcc-build &&
cd $LFS/usr/src/gcc-build &&
../gcc-2.95.2.1/configure --prefix=/usr \
   --with-gxx-include-dir=/usr/include/g++ \
   --enable-languages=c,c++ --disable-nls &&
make -e LDFLAGS=-static bootstrap &&
make prefix=$LFS/usr local_prefix=$LFS/usr/local \
   gxx_include_dir=$LFS/usr/include/g++ install &&
cd $LFS/lib &&
ln -s ../usr/bin/cpp &&
cd $LFS/usr/lib &&
ln -s ../bin/cpp &&
cd $LFS/usr/bin &&
ln -s gcc cc


Explication des commandes

--enable-languages=c,c++: Ceci ne crée que les compilateurs C et C++, et pas les autres compilateurs disponibles, parce qu'ils sont en moyenne très peu utilisés. Si certains de ces autres compilateurs sont nécessaires, le paramètre --enable-languages peut être omis.

ln -s ../usr/bin/cpp: Ceci crée le lien symbolique $LFS/lib/cpp. Certains packages essaient explicitement de trouver cpp dans /lib.

ln -s ../bin/cpp: Ceci crée le lien symbolique $LFS/usr/lib/cpp, parce qu'il y a des packages qui s'attendent à ce que cpp soit dans /usr/lib.


Contenu

Le package GCC contient les compilateurs, les préprocesseurs et la bibliothèque GNU C++.


Description

Compilateur

Un compilateur traduit le code source sous format texte en un format que l'ordinateur peut comprendre. Après qu'un fichier de code source a été compilé en un fichier objet, un éditeur de liens crée un fichier exécutable à partir d'un ou plusieurs de ces fichiers objet générés par le compilateur.


Préprocesseur

Un préprocesseur pré-traduit un fichier source, faisant par exemple l'inclusion des contenus des fichiers d'en-tête dans le fichier source. Il est conseillé de ne pas faire cela manuellement, pour gagner du temps. On insère simplement une ligne comme #include <nom_fichier>. Le préprocesseur insère le contenu de ce fichier dans le fichier source. C'est une des choses que fait le préprocesseur.


Bibliothèque C++

La bibliothèque C++ est utilisée par les programmes C++. La bibliothèque C++ contient les fonctions qui sont couramment utilisées dans les programmes C++. Ainsi, le programmeur n'a pas à réécrire certaines fonctions (comme afficher une chaîne de caractères à l'écran) à chaque fois qu'il crée un programme.


Installer le noyau Linux

Installation du noyau Linux

Nous n'allons pas encore compiler une nouvelle image du noyau. Nous le ferons après avoir fini l'installation des logiciels du système de base dans ce chapitre. Mais, parce que certains logiciels ont besoin des fichiers d'en-tête du noyau, nous allons désarchiver le noyau maintenant et le configurer pour pouvoir compiler les packages ayant besoin du noyau.

Le fichier de configuration du noyau est créé en exécutant la commande suivante:



make mrproper &&
yes "" | make config &&
make dep &&
cd $LFS/usr/include &&
ln -s ../src/linux/include/linux &&
ln -s ../src/linux/include/asm


Explication des commandes

make mrproper: Ceci s'assure que l'arborescence du noyau est parfaitement propre.

yes "" | make config: Ceci exécute make config et donne la réponse par défaut à toutes les questions que le script de configuration pose à l'utilisateur (il fait ceci en se contentant de transmettre l'équivalent de l'appui sur la touche Enter, qui accepte les réponses par défaut Y et N aux questions). Nous ne configurons pas, ici, le véritable noyau; nous n'avons besoin que d'un fichier de configuration quelconque, pour pouvoir ensuite exécuter make dep qui créera de nouveaux fichiers dans $LFS/usr/src/linux/include/linux, comme version.h, entre autres, dont nous aurons besoin plus tard dans chroot pour compiler Glibc ainsi que d'autres packages.

make dep: make dep vérifie les dépendances et crée le fichier des dépendances. Nous n'avons pas vraiment besoin de la vérification des dépendances, mais ce qui nous importe est que make dep crée les fichiers susmentionnés dans $LFS/usr/src/linux/include/linux, dont nous aurons besoin plus tard.

ln -s ../src/linux/include/linux et ln -s ../src/linux/include/asm: Ces commandes créent les liens symboliques linux et asm dans le répertoire $LFS/usr/include et les font pointer vers les répertoires corrects dans l'arborescence des sources de Linux. Les packages nécessitant les en-têtes du noyau les incluent avec des lignes comme #include <linux/errno.h>. Ces chemins sont relatifs au répertoire /usr/include, donc le lien symbolique /usr/include/linux pointe vers le répertoire contenant les fichiers d'en-tête du noyau linux. Il en va de même pour le lien symbolique asm.


Contenu

Le package noyau Linux contient le noyau de Linux.


Description

Le noyau de Linux est au cœur de chaque système Linux. C'est lui qui fait tourner Linux. Quand vous allumez votre ordinateur et démarrez un système Linux, la toute première partie de logiciel Linux qui est chargée est le noyau. Le noyau initialise les composants matériels du système comme les ports série, les ports parallèles, les cartes son, les cartes réseau, les contrôleurs IDE, les contrôleurs SCSI et beaucoup d'autres choses. En bref, le noyau rend le matériel disponible pour que le logiciel puisse fonctionner.


Installer Grep

Installation de Grep

Installez Grep en exécutant les commandes suivantes :


 
        export CPPFLAGS=-Dre_max_failures=re_max_failures2 &&
        ./configure --prefix=$LFS/usr --disable-nls &&
        unset CPPFLAGS &&
        make LDFLAGS=-static &&
        make install
 


Contenu

Le package grep contient les programmes egrep, fgrep et grep.


Description

egrep

egrep affiche les lignes des fichiers qui vérifient une expression régulière étendue.


fgrep

fgrep affiche les lignes des fichiers qui vérifient une liste de chaînes fixes, séparées par des caractères de fin de ligne, l'une quelconque de ces chaînes devant correspondre.


grep

grep affiche les lignes des fichiers qui vérifient une expression régulière basique.


Installer Gzip

Installation de Gzip

Avant d'installer Gzip, il vous faut décompresser le fichier patch de gzip.



patch -Np1 -i ../gzip-1.2.4a.patch &&
./configure --prefix=$LFS/usr &&
make LDFLAGS=-static &&
make install &&
cp $LFS/usr/bin/gunzip $LFS/usr/bin/gzip $LFS/bin &&
rm $LFS/usr/bin/gunzip $LFS/usr/bin/gzip


Contenu

Le package Gzip contient les programmes compress, gunzip, gzexe, gzip, uncompress, zcat, zcmp, zdiff, zforece, zgrep, zmore et znew.


Description

gunzip

gunzip décompresse les fichiers qui ont été compressés avec gzip.


gzexe

gzexe permet de compresser des exécutables en les remplaçant, et de faire en sorte qu'ils se décompressent automatiquement et s'exécutent lorsqu'ils sont lancés (avec une dégradation des performances).


gzip

gzip réduit la taille des fichiers nommés en utilisant le codage de Lempel-Zip (LZ77).


zcat

zcat décompresse une liste de fichiers fournie en ligne de commande ou sur son entrée standard, et écrit les données décompressées sur la sortie standard.


zcmp

zcmp invoque le programme cmp sur des fichiers compressés.


zdiff

zdiff invoque le programme diff sur des fichiers compressés.


zforce

zforce force l'extension .gz sur tous les fichiers gzip, pour que gzip ne les compresse pas deux fois. Ceci peut être utile pour des fichiers dont les noms ont été tronqués après un transfert.


zgrep

zgrep invoque le programme grep sur des fichiers compressés.


zmore

zmore est un filtre qui permet d'examiner des fichiers texte simples ou compressés, écran par écran, sur un terminal (de la même manière que more).


znew

znew recompresse des fichiers du format .Z (compress) en format .gz (gzip).


Installer Make

Installation de Make

Installez Make en exécutant les commandes suivantes :



./configure --prefix=$LFS/usr --disable-nls &&
make LDFLAGS=-static &&
make install


Contenu

Le package Make contient le programme make.


Description

make détermine automatiquement quels morceaux d'un gros programme ont besoin d'être recompilés, et exécute les commandes pour les recompiler.


Installer Sed

Installation de Sed

Installez Sed en exécutant les commandes suivantes :



export CPPFLAGS=-Dre_max_failures=re_max_failures2 &&
./configure --prefix=$LFS/usr --bindir=$LFS/bin &&
unset CPPFLAGS &&
make LDFLAGS=-static &&
make install


Contenu

Le package Sed contient le programme sed.


Description

sed est un éditeur de flux. Un éditeur de flux est utilisé pour opérer des transformations de texte basiques sur un flux d'entrée (un fichier ou une entrée depuis un pipe).


Installer Shellutils

Installation de Sh-utils

Installez Shellutils en exécutant les commandes suivantes :



./configure --prefix=$LFS/usr --disable-nls &&
make LDFLAGS=-static &&
make install &&
cd $LFS/usr/bin &&
mv date echo false pwd stty $LFS/bin &&
mv su true uname hostname $LFS/bin


Contenu

Le package Shellutils contient les programmes basename, chroot, date, dirname, echo, env, expr, factor, false, groups, hostid, hostname, id, logname, nice, nohup, pathchk, pinky, printenv, printf, pwd, seq, sleep, stty, su, tee, test, true, tty, uname, uptime, users, who, whoami et yes.


Description

basename

basename supprime le répertoire et les suffixes des noms de fichier.


chroot

chroot lance une commande ou un shell interactif avec un répertoire racine particulier.


date

date affiche la date et l'heure courantes dans un format spécifié, ou positionne la date du système.


dirname

dirname supprime les suffixes autres que le répertoire du nom de fichier.


echo

echo affiche une ligne de texte.


env

env lance un programme dans un environnement modifié.


expr

expr évalue les expressions.


factor

factor affiche les facteurs premiers de tous les nombres entiers spécifiés.


false

false se termine toujours avec un code de statut indiquant une erreur.


groups

groups affiche les groupes auxquels appartient un utilisateur.


hostid

hostid affiche l'identifiant numérique (en hexadécimal) de l'hôte courant.


hostname

hostname positionne ou affiche le nom du système hôte courant.


id

id affiche les GID et UID réels et effectifs d'un utilisateur ou de l'utilisateur courant.


logname

logname affiche le nom de connexion de l'utilisateur courant.


nice

nice lance un programme avec une planification modifiée.


nohup

nohup lance une commande insensible aux interruptions, avec une sortie autre qu'un terminal.


pathchk

pathchk vérifie si des noms de fichier sont valides ou portables.


pinky

pinky est un utilitaire léger qui recherche des informations sur un utilisateur particulier.


printenv

printenv affiche tout ou partie de l'environnement.


printf

printf formate et affiche des données (identique à la fonction C printf).


pwd

pwd affiche le nom du répertoire de travail courant.


seq

seq affiche des nombres dans une certaine plage, avec un incrément spécifié.


sleep

sleep attend pendant un laps de temps spécifié.


stty

stty modifie et affiche les paramètres de ligne du terminal.


su

su lance un shell avec des ID d'utilisateur et de groupe substitués.


tee

tee lit depuis l'entrée standard et écrit sur la sortie standard et dans des fichiers.


test

test vérifie les types de fichier et compare les valeurs.


true

true se termine toujours avec un code de statut indiquant le succès.


tty

tty affiche le nom de fichier du terminal connecté à l'entrée standard.


uname

uname affiche des informations sur le système.


uptime

uptime indique depuis combien de temps le système tourne.


users

users affiche le nom des utilisateurs actuellement connectés sur l'hôte courant.


who

who montre qui est connecté.


whoami

whoami affiche votre id utilisateur effectif.


yes

yes sort une chaîne à répétition, jusqu'à ce qu'il soit tué.


Installer Tar

Installation de Tar

Pour pouvoir utiliser directement les fichiers bzip2 avec tar, utilisez le patch disponible sur le site FTP de LFS. Ce patch ajoute l'option -y à tar qui fonctionne de la même manière que l'option -z (qui peut être utilisée pour les fichiers compressés avec gzip).

Appliquez le patch en exécutant les commandes suivantes :



cd src &&
patch -i ../../gnutarpatch.txt &&
cd ..

Installez Tar en exécutant les commandes suivantes :



./configure --prefix=$LFS/usr --disable-nls \
   --libexecdir=$LFS/usr/bin &&
make LDFLAGS=-static &&
make install &&
mv $LFS/usr/bin/tar $LFS/bin


Contenu

Le package tar contient les programmes tar et rmt.


Description

tar

tar est un programme d'archivage conçu pour stocker et extraire des fichiers d'un fichier archive appelé fichier tar.


rmt

rmt est un programme utilisé par les programmes distants dump et restore pour manipuler un lecteur de bandes magnétiques via une connexion de communication inter-processus.


Installer Textutils

Installation de Textutils

Installez Textutils en exécutant les commandes suivantes :



./configure --prefix=$LFS/usr --disable-nls &&
make LDFLAGS=-static &&
make install &&
mv $LFS/usr/bin/cat $LFS/bin


Contenu

Le paquet Textutils contient les programmes cat, cksum, comm, split, cut, expand, fmt, fold, head, join, md5sum, nl, od, paste, pr, ptx, sort, split, sum, tac, tail, tr, tsort, unexpand, uniq et wc.


Description

cat

cat concatène le(s) fichier(s) ou l'entrée standard vers la sortie standard.


cksum

cksum affiche la somme de contrôle CRC et le nombre d'octets de chaque fichier spécifié.


comm

comm compare deux fichiers triés ligne à ligne.


csplit

cplit découpe un fichier en morceaux séparés par un(des) motif(s) dans des fichiers xx01, xx02, ..., et affiche le nombre d'octets de chaque morceau sur la sortie standard.


cut

cut écrit les parties sélectionnées des lignes des fichiers spécifiés sur la sortie standard.


expand

expand convertit les tabulations dans les fichiers en espaces, en écrivant sur la sortie standard.


fmt

fmt reformate chaque paragraphe dans le(s) fichier(s) spécifié(s), en écrivant sur la sortie standard.


fold

fold emballe les lignes d'entrée de chaque fichier spécifié (entrée standard par défaut), en écrivant sur la sortie standard.


head

head affiche les xx (10 par défaut) premières lignes de chaque fichier spécifié sur la sortie standard.


join

join fusionne les lignes identiques de deux fichiers dans un fichier commun.


md5sum

md5sum affiche ou vérifie les sommes de contrôle MD5.


nl

nl écrit chaque fichier spécifié sur la sortie standard, en y ajoutant les numéros de ligne.


od

od écrit une représentation non-ambiguë, en octal par défaut, d'un fichier spécifié, sur la sortie standard.


paste

paste écrit des lignes, d'une manière consistant à prendre séquentiellement les lignes correspondantes de chaque fichier spécifié, séparées par des tabulations, sur la sortie standard.


pr

pr met en pages ou en colonnes des fichiers pour impression.


ptx

ptx produit un index de permutation du contenu d'un fichier.


sort

sort écrit la concaténation triée de fichiers sur la sortie standard.


split

split extrait des morceaux de taille fixe d'un fichier d'entrée dans PREFIXaa, PREFIXab, ...


sum

sum écrit la somme de contrôle et le nombre de blocs de chaque fichier spécifié.


tac

tac écrit chaque fichier spécifié sur la sortie standard, la dernière ligne en premier.


tail

tail écrit les xx (10 par défaut) dernières lignes de chaque fichier spécifié sur la sortie standard.


tr

tr convertit, répète et/ou supprime des caractères de l'entrée standard, en écrivant sur la sortie standard.


tsort

tsort écrit des listes totalement ordonnées en accord avec l'ordonnancement partiel dans les fichiers spécifiés.


unexpand

unexpand convertit les espaces dans chaque fichier en tabulations, en écrivant sur la sortie standard.


uniq

uniq supprime toutes les lignes identiques successives sauf une depuis des fichiers ou l'entrée standard, et écrit dans des fichiers ou la sortie standard.


wc

wc affiche le nombre de lignes, mots et octets de chaque fichier spécifié, et une ligne de totalisation si plus d'un fichier est spécifié.


Installer Mawk

Installation de Mawk

Installez Mawk en lançant les commandes suivantes:



./configure &&
sed \
   s/"\$(CC) \$(CFLAGS) -o"/"\$(CC) \$(CFLAGS) \$(LDFLAGS) -o"/ \
   Makefile | make -f - LDFLAGS=-static &&
make BINDIR=$LFS/usr/bin \
   MANDIR=$LFS/usr/share/man/man1 install


Contenu

Le paquet Mawk contient le programme mawk.


Description

mawk

mawk est un interpréteur pour le langage de programmation AWK. Le langage AWK est utile pour manipuler des fichiers de données, retrouver et travailler sur du texte, et pour prototyper et expérimenter des algorithmes.


Installer Texinfo

Installation de Texinfo

Installez Texinfo en lançant les commandes suivantes:



./configure --prefix=$LFS/usr --disable-nls &&
make LDFLAGS=-static &&
make install


Contenu

Le package Texinfo contient les programmes info, install-info, makeinfo, texi2dvi et texindex.


Description

info

Le programme info lit les documents Info, en général situés dans le répertoire /usr/doc/info. Les documents Info sont comme des pages de man(uel), mais ont tendance à aller plus en profondeur que la simple explication des options d'un programme.


install-info

Le programme install-info met à jour les entrées d'info. Quand le programme info est exécuté, une liste de sujets disponibles (c'est-à-dire les documents info disponibles) est affichée. Le programme install-info est utilisé pour tenir cette liste de sujets disponibles à jour. Si des fichiers d'info sont supprimés manuellement, il faut également supprimer le sujet dans le fichier d'index. Ce programme est utilisé dans ce but. Il fonctionne également, dans l'autre sens, quand des documents d'info sont ajoutés.


makeinfo

Le programme makeinfo traduit des documents source Texinfo en différents formats. Les formats disponibles sont: fichiers info, texte et HTML.


texi2dvi

Le programme texi2dvi affiche les documents Texinfo.


texindex

Le programme texindex est utilisé pour trier les fichiers d'index Texinfo.


Installer Gettext

Installation de Gettext

Installez Gettext en lançant les commandes suivantes:



./configure --disable-nls &&
make -C lib &&
make -C intl &&
make -C src LDFLAGS=-all-static msgfmt &&
cp src/msgfmt $LFS/usr/bin


Contenu

Le pacakge gettext contient les programmes gettext, gettextize, msgcmp, msgcomm, msgfmt, msgmerge, msgunfmt et xgettext.


Description

gettext

Le package gettext est utilisé pour l'internationalisation (connue aussi sous le terme de i18n) et pour la localisation (connue aussi sous le terme de l10n). Les programmes peuvent être compilés avec le Support du Langage Natif (NLS) qui leur permet d'afficher les messages dans la langue natale des utilisateurs plutôt qu'en anglais, par défaut.


Créer les fichiers passwd et group

Pour que l'utilisateur et le groupe root soient reconnus et puissent se connecter, il faut une entrée correspondante dans les fichiers /etc/passwd et /etc/group. D'autre part, le groupe root ainsi que quelques autres sont recommandés et nécessaires pour certains packages. Les groupes et leur GID ci-dessous ne font partie d'aucun standard. Le LSB recommande uniquement, à côté d'un groupe root, un groupe bin avec un GID de 1. Les noms et GID des autres groupes peuvent être choisis par l'utilisateur. Les packages bien écrits ne dépendent pas du numéro de GID, mais seulement du nom du groupe, car le GID d'un groupe importe peu. Comme il n'y a aucun standard pour les groupes, je ne suivrai pas les conventions utilisées par Debian, RedHat ou d'autres. Les groupes ajoutés ici sont ceux mentionnés dans le script MAKEDEV (le script qui crée les fichiers de périphérique dans le répertoire /dev).

Créez un nouveau fichier $LFS/etc/passwd en exécutant la commande suivante :



echo "root:x:0:0:root:/root:/bin/bash" > $LFS/etc/passwd

Créez un nouveau fichier $LFS/etc/group en lançant ce qui suit :



cat > $LFS/etc/group << "EOF"
root:x:0:
bin:x:1:
sys:x:2:
kmem:x:3:
tty:x:4:
tape:x:5:
daemon:x:6:
floppy:x:7:
disk:x:8:
lp:x:9:
dialout:x:10:
audio:x:11:
EOF


Monter le système de fichiers $LFS/proc

Pour que certains programmes fonctionnent correctement, le système de fichiers proc doit être monté et accessible depuis l'environnement chroot. Il n'y a pas de problèmes à monter le système de fichiers proc deux fois, ou même plus, car c'est un système de fichiers virtuel maintenu par le noyau lui-même.

Le système de fichiers proc est monté sous $LFS/proc en exécutant la commande suivante:



mount proc $LFS/proc -t proc


Chapitre 6. Installer les logiciels du système de base

Introduction

L'installation de l'ensemble des logiciels est assez simple et vous allez penser qu'il serait bien plus facile et rapide de donner des instructions d'installation génériques pour tous les packages, et d'expliquer comment installer quelque chose uniquement si un package particulier requiert une méthode d'installation différente. Bien que je sois d'accord avec cela, j'ai cependant choisi de fournir l'ensemble des instructions pour chaque package. Ceci dans le simple but d'éviter toute confusion possible et des erreurs en découlant.


A propos des symboles de déboguage

La plupart des programmes et des bibliothèques sont compilés par défaut avec les symboles de déboguage (option de gcc -g). Laissez-moi vous expliquer ce que sont ces symboles de déboguage et pour quelle raison vous ne les voudriez pas.

Un programme compilé avec des symboles de déboguage signifie qu'un utilisateur peut exécuter un programme ou une bibliothèque via un débogueur, et que les résultats de ce débogueur seront facilement utilisables. Ces symboles de déboguage augmentent également la taille du programme ou de la bibliothèque de façon significative.

Avant que vous vous demandiez si ces symboles de déboguage feront une grande différence, voici quelques statistiques. Utilisez-les pour vous forger votre propre conclusion.

  • Un binaire Bash dynamique avec symboles de déboguage: 1.2Mo.

  • Un binaire Bash dynamique sans symboles de déboguage: 478ko.

  • /lib et /usr/lib (fichiers glibc et gcc) avec symboles de déboguage: 87Mo.

  • /lib et /usr/lib (fichiers glibc et gcc) sans symboles de déboguage: 16Mo.

Les tailles peuvent différer selon le compilateur utilisé et la version de la bibliothèque C utilisée pour lier les programmes dynamiques, mais vos résultats seront similaires si vous comparez les programmes avec et sans symboles de déboguage. Après avoir terminé ce chapitre et supprimé tous les symboles de déboguage de tous les binaires de LFS, j'ai regagné quelques 102Mo d'espace disque. Belle différence!

Pour supprimer les symboles de déboguage d'un fichier binaire (qui doit être un binaire de type a.out ou ELF), lancez strip --strip-debug filename. Vous pouvez utiliser des jokers si vous devez supprimer les symboles de déboguage de plusieurs fichiers (utilisez quelque chose comme strip --strip-debug $LFS/usr/bin/*). La plupart des gens n'utiliseront sans doute jamais un débogueur sur leurs logiciels, donc enlever ces symboles vous fera gagner beaucoup de place disque.

Vous trouverez plus d'information dans le guide d'optimisation, qui peut être trouvé à http://cvs.linuxfromscratch.org/index.cgi/hints/.


Créer $LFS/root/.bash_profile

A la section suivante lorsque nous serons entrés dans l'environnement chroot, nous voulons que soient exportées quelques variables d'environnement dans ce shell, comme PS1, PATH et d'autres variables qu'il est bon d'avoir positionnées. Pour cela, nous allons créer le fichier $LFS/root/.bash_profile qui sera lu par bash quand nous entrerons dans l'environnement chroot.

Créez un nouveau fichier $LFS/root/.bash_profile en lançant ce qui suit.



cat > $LFS/root/.bash_profile << "EOF"
# Debut /root/.bash_profile

PS1='\u:\w\$ '
PATH=/bin:/usr/bin:/sbin:/usr/sbin

export PS1 PATH

# Fin /root/.bash_profile
EOF

Vous pouvez ajouter d'autres variables d'environnement, des alias et tout ce que vous voulez ou avez besoin, à votre discrétion.


Entrer dans l'environnement chroot

Il est temps d'entrer dans notre environnement chroot pour installer le reste des logiciels dont nous avons besoin.

Tapez les commandes suivantes pour entrer dans l'environnement chroot. A partir de maintenant, il n'est plus nécessaire d'utiliser la variable $LFS, parce que tout ce qu'un utilisateur fera sera restreint à la partition LFS (puisque / est maintenant /mnt/lfs, mais le shell ne le sait pas).



cd $LFS &&
chroot $LFS /usr/bin/env -i HOME=/root \
   TERM=$TERM /bin/bash --login

La construction TERM=$TERM positionnera la valeur $TERM dans chroot à la même valeur que hors du chroot, ce qui est nécessaire pour que des programmes comme vim et less fonctionnent correctement.

Maintenant que nous sommes dans l'environnement chroot, nous pouvons continuer à installer tous les logiciels du système de base. Assurez-vous de bien exécuter toutes les commandes suivantes de ce chapitre et des suivants à partir de l'environnement chroot. Si vous quittez cet environnement pour une raison quelconque (en redémarrant, par exemple), souvenez-vous de monter de nouveau $LFS/proc et de ré-entrer dans chroot avant de poursuivre le livre.

Remarquez que l'invite de bash contiendra "I have no name!". Ceci est normal, car Glibc n'a pas encore été installé.


Installer Glibc

Installation de Glibc

Décompactez glibc-linuxthreads dans le répertoire glibc-2.2.1, et non dans /usr/src.

Installez Glibc en lançant les commandes suivantes:



mknod -m 0666 /dev/null c 1 3 &&
touch /etc/ld.so.conf &&
mkdir /usr/src/glibc-build &&
cd /usr/src/glibc-build &&
sed s/"\$(PERL)"/"\/usr\/bin\/perl"/ \
   ../glibc-2.2.1/malloc/Makefile > tmp~ &&
mv tmp~ ../glibc-2.2.1/malloc/Makefile &&
sed "s/root/0/" ../glibc-2.2.1/login/Makefile > tmp~ &&
mv tmp~ ../glibc-2.2.1/login/Makefile &&
../glibc-2.2.1/configure \
   --prefix=/usr --enable-add-ons \
   --libexecdir=/usr/bin &&
sed s/"cross-compiling = yes"/"cross-compiling = no"/ \
   config.make > config.make~ &&
mv config.make~ config.make &&
make &&
make install &&
make localedata/install-locales

En sortant de l'environnement chroot puis en y en y rentrant à nouveau, vous pourrez vous débarrasser du message "I have no name!" dans l'invite de commande, qui est due à l'incapacité de bash de transformer un identifiant d'utilisateur en nom d'utilisateur. Vous n'êtes pas obligé de sortir et rentrer dans chroot, mais ceci est fortement recommandé pour garantir un bash fonctionnant correctement.

Lancez les commandes suivantes pour faire cela:



logout
chroot $LFS /usr/bin/env -i HOME=/root \
   TERM=$TERM /bin/bash --login
 


Explication des commandes

mknod -m 0666 /dev/null c 1 3: Glibc a besoin d'un périphérique null pour compiler correctement. Tous les autres périphériques seront créés dans la section suivante.

touch /etc/ld.so.conf Une des étapes finales de l'installation de Glibc est de lancer ldconfig pour mettre à jour le cache du chargeur dynamique. Si ce fichier n'est pas présent, Glibc se terminera en erreur indiquant qu'il ne peut lire le fichier. Nous créons donc un fichier vide pour cela (le fichier vide entraînera l'utilisation par défaut par Glibc de /lib et /usr/lib, ce qui est parfait pour l'instant).

--enable-add-ons: Ceci active l'extension que nous avons installée avec Glibc: linuxthreads.


Contenu

Le package Glibc contient la bibliothèque GNU C.


Description

La bibliothèque C est un ensemble de fonctions couramment utilisées dans les programmes. Ainsi, un programmeur n'a pas besoin de créer ses propres fonctions pour chaque tâche de base. Les opérations les plus courantes comme écrire une ligne à l'écran sont déjà présentes et à la disposition du programmeur.

La bibliothèque C (comme, actuellement, presque toutes les bibliothèques) est fournie en deux versions: dynamique et statique. En bref, quand un programme utilise une bibliothèque C statique, le code de la bibliothèque C est copié dans le fichier exécutable. Quand un programme utilise une bibliothèque dynamique, cet exécutable ne contiendra pas le code de la bibliothèque C, mais simplement une routine qui chargera les fonctions depuis la bibliothèque au moment de l'exécution du programme. Cela signifie une réduction significative de la taille du fichier du programme. La documentation fournie avec la bibliothèque C décrit cela en détail, car cela est trop compliqué à expliquer ici en une ou deux lignes.


Créer les périphériques

Créer les périphériques

Note: Le fichier MAKEDEV.bz2 que vous avez décompacté n'est pas une archive; il ne créera donc pas de répertoire pour que vous vous y rendiez.

Créez les fichiers de périphérique en lançant les commandes suivantes:



chmod 755 MAKEDEV &&
cp MAKEDEV /dev &&
cd /dev &&
./MAKEDEV -v generic

Le paramètre " generic"  passé au script MAKEDEV ne crée pas tous les périphériques dont un utilisateur peut avoir besoin, comme les périphériques audio, hdc, hdd et autres. S'il semble que quelque chose manque, il faut dire à MAKEDEV de le créer. Pour créer hdc, remplacez generic par hdc. Un utilisateur peut aussi ajouter hdc à generic, pour exécuter ./MAKEDEV -v generic hdc pour créer l'ensemble des fichiers de périphériques générique, plus les fichiers nécessaires pour accéder à hdc (et hdc1, hdc2, etc.).

MAKEDEV créera hda[1-20] et hdb[1-20] et ainsi de suite, mais il faut garder à l'esprit que tous ces périphériques ne pourront pas forcément être utilisés, à cause des limitations du noyau concernant le nombre maximal de partitions.


Explication des commandes

./MAKEDEV -v generic: Ceci crée les périphériques génériques. Normalement, Il devrait y avoir tous les périphériques dont vous avez besoin. Il se peut qu'il vous manque quelques périphériques spéciaux nécessaires pour votre configuration matérielle. Créez-les avec ./MAKEDEV -v <peripherique>.


Contenu

Le package MAKEDEV contient le script MAKEDEV.


Description

MAKEDEV est un script qui peut aider à créer les fichiers de périphérique statiques nécessaires, qui sont d'habitude dans le répertoire /dev.


Installer Man-pages

Installation de Man-pages

Installez Man-pages en lançant les commandes suivantes:



make install


Contenu

Le paquet Man-pages contient différentes pages de manuel qui ne sont pas fournies avec les paquets.


Description

Des exemples de pages de manuel fournies sont les pages de manuel décrivant toutes les fonctions C et C++, quelques fichiers /dev/ importants, etc.


Installer Ed

Installation de Ed

Installez Ed en lançant les commandes suivantes:



./configure --prefix=/usr &&
make &&
make install &&
mv /usr/bin/ed /usr/bin/red /bin


Contenu

Le package Ed contient le programme ed.


Description

ed est un éditeur de texte par ligne. Il est utilisé pour créer, afficher, modifier et réaliser d'autres manipulations sur les fichiers texte.


Installer Patch

Installation de Patch

Installez Patch en lançant les commandes suivantes:



./configure --prefix=/usr &&
make &&
make install


Contenu

Le package Patch contient le programme patch.


Description

Le programme patch modifie un fichier en accord avec un fichier patch. Un fichier patch est, en général, une liste créée par le programme diff, qui contient des instructions sur la manière dont un fichier original doit être modifié. patch est très utilisé pour les corrections de code source, car il fait économiser du temps et de la place. Imaginez un pacakge d'une taille de 1Mo. Dans la version suivante de ce package ne sont modifiés que deux des fichiers de la première version. Il peut être mis à disposition comme un package entièrement nouveau de 1Mo, ou seulement comme un fichier patch de 1ko qui mettra à jour la première version pour la rendre identique à la seconde. Ainsi, si la première version a déjà été téléchargée, un fichier patch évite un second téléchargement important.


Installer Findutils

Installer Findutils

Avant d'installer Findutils, vous devez déballer le fichier patch de findutils.

Installez Findutils en lançant les commandes suivantes:



patch -Np1 -i ../findutils-4.1.patch &&
./configure --prefix=/usr &&
make &&
make libexecdir=/usr/bin install


Contenu

Le package Findutils contient les programmes find, locate, updatedb et xargs.


Description

find

Le programme find recherche, dans une hiérarchie de répertoires, les fichiers qui correspondent à un certain critère. Si aucun critère n'est fourni, il liste tous les fichiers dans le répertoire courant et ses sous-répertoires.


locate

locate scrute une base de données qui contient tous les fichiers et répertoires d'un système de fichiers. Ce programme liste les fichiers et répertoires de cette base de données qui vérifient un certain critère. Si un utilisateur recherche un fichier, ce programme va scruter la base de données et lui dire exactement où sont situés les fichiers qu'il a demandés. Cela n'a de sens que si la base de données de localisation est correctement mise à jour, autrement ce programme vous fournira des informations périmées.


updatedb

Le programme updatedb met à jour la base de données de localisation. Il scrute tout le système de fichiers (y compris les autres systèmes de fichiers actuellement montés, sauf si vous lui spécifiez de ne pas le faire), et enregistre chaque répertoire et fichier qu'il trouve dans la base de données qui sera utilisée par le programme locate, qui retrouve ces informations. C'est une bonne habitude que de mettre à jour cette base de données quotidiennement, pour qu'elle soit à jour au moment ou ce sera nécessaire.


xargs

La commande xargs applique une commande à une liste de fichiers. Si vous devez exécuter la même commande sur de multiples fichiers, vous pouvez créer un fichier qui contient tous ces fichiers (un par ligne) et utiliser xargs pour lancer une commande sur la liste.


Installer Mawk

Installation de Mawk

Installez Mawk en lançant les commandes suivantes:



./configure &&
make &&
make BINDIR=/usr/bin \
   MANDIR=/usr/share/man/man1 install &&
cd /usr/bin &&
ln -s mawk awk


Contenu

Le paquet Mawk contient le programme mawk.


Description

mawk

mawk est un interpréteur pour le langage de programmation AWK. Le langage AWK est utile pour manipuler des fichiers de données, retrouver et travailler sur du texte, et pour prototyper et expérimenter des algorithmes.


Installer Ncurses

Installation de Ncurses

Installez Ncurses en lançant les commandes suivantes:



./configure --prefix=/usr --libdir=/lib \
   --with-shared --disable-termcap &&
make &&
make install &&
cd /lib &&
ln -s libncurses.a libcurses.a


Explication des commandes

--with-shared: Ceci permet la construction des fichiers partagés de la bibliothèque ncurses.

--disable-termcap: Désactive la compilation du support de termcap.

ln -s libncurses.a libcurses.a: Ceci crée le lien symbolique /lib/libcurses.a qui, pour une raison inconnue, n'est pas créé pendant l'installation de libncurses.


Contenu

Le package Ncurses contient les bibliothèques ncurses, panel, menu et form. Il contient également les programmes tic, infocmp, clear, tput, toe et tset.


Description

Les bibliothèques

Les bibliothèques qui constituent la bibliothèque Ncurses sont utilisées pour afficher du texte (souvent de manière fantaisiste) à l'écran. Un exemple d'utilisation de ncurses se trouve dans le processus " make menuconfig"  du noyau. Les bibliothèques contiennent les routines pour créer des panneaux, des menus, des formulaires, et des routines générales d'affichage de texte.


tic

tic est le compilateur de description des entrées de terminfo. Le programme traduit un fichier terminfo du format source en format binaire utilisable avec les routines de la bibliothèque ncurses. Les fichiers terminfo contiennent des informations sur les capacités d'un terminal.


infocmp

Le programme infocmp peut être utilisé pour comparer une entrée binaire de terminfo avec d'autres, ré-écrire une description terminfo pour tenir compte du champ use= de terminfo, ou afficher une description terminfo du fichier binaire (term) sous différents formats (à l'opposé de ce que fait tic).


clear

Le programme clear efface l'écran, si cela est possible. Il regarde dans l'environnement du type de terminal, puis dans la base de données terminfo, pour trouver comment effacer l'écran.


tput

Le programme tput utilise la base de données terminfo pour construire les valeurs des capacités dépendant du terminal et les informations disponibles pour le shell, pour initialiser ou réinitialiser le terminal, ou renvoyer le nom long du type de terminal requis.


toe

Le programme toe liste tous les types de terminaux disponibles par leur nom primaire, avec leur description.


tset

Le programme tset initialise les terminaux pour qu'ils puissent être utilisés, mais il n'est plus beaucoup utilisé désormais. Il est fourni pour la compatibilité avec BSD 4.4.


Installer Vim

Installation de Vim

Si un utilisateur ne veut pas que vim soit installé comme éditeur sur le système LFS, il peut télécharger et installer un autre éditeur qu'il préfère. Il existe quelques guides sur la manière d'installer différents éditeurs disponibles à http://cvs.linuxfromscratch.org/index.cgi/hints/editors/.

Vous avez besoin de déballer à la fois les packages vim-rt et vim-src pour installer Vim. Les deux packages déballeront leurs fichiers dans le répertoire vim-5.7. Les fichiers des deux packages ne s'écrasent pas entre eux, donc l'ordre de déballage importe peu. Installez Vim en lançant les commandes suivantes:



./configure --prefix=/usr &&
make &&
make install &&
cd /usr/bin &&
ln -s vim vi

Si un utilisateur prévoit d'installer le système X Window sur son système LFS, il pourra recompiler Vim après l'installation de X. Vim est fourni avec une très jolie version GUI de l'éditeur, qui nécessite que X et quelques autres bibliothèques soient installés. Pour plus d'information, lisez la documentation de Vim.


Contenu

Le package Vim contient les programmes ctags, etags, ex, gview, gvim, rgview, rgvim, rview, rvim, view, vim, vimtutor et xxd.


Description

ctags

ctags génère des fichiers de marquage pour le code source.


etags

etags fait la même chose que ctags, mais il peut générer des fichiers de références croisées qui listent des informations sur les différents objets source trouvés dans un ensemble de fichiers de langage.


ex

ex démarre vim en mode Ex.


gview

gview est la version GUI de view.


gvim

gvim est la version GUI de vim.


rgview

rgview est la version GUI de rview.


rgvim

rgvim est la version GUI de rvim.


rview

rview est une version restreinte de view. Aucune commande shell ne peut être lancée et Vim ne peut pas être interrompu.


rvim

rvim est la version restreinte de vim. Aucune commande shell ne peut être lancée et Vim ne peut pas être interrompu.


view

view lance vim en mode lecture seule.


vim

vim lance vim de la manière normale, par défaut.


vimtutor

vimtutor lance le tutorial de Vim.


xxd

xxd crée un dump hexadécimal, ou fait l'inverse.


Installer GCC

Installation de GCC

Installez GCC en lançant les commandes suivantes:



mkdir /usr/src/gcc-build &&
cd /usr/src/gcc-build &&
../gcc-2.95.2.1/configure --prefix=/usr \
   --with-gxx-include-dir=/usr/include/g++ \
   --enable-shared --enable-languages=c,c++ &&
make bootstrap &&
make install


Contenu

Le package GCC contient les compilateurs, les préprocesseurs et la bibliothèque GNU C++.


Description

Compilateur

Un compilateur traduit le code source sous format texte en un format que l'ordinateur peut comprendre. Après qu'un fichier de code source a été compilé en un fichier objet, un éditeur de liens crée un fichier exécutable à partir d'un ou plusieurs de ces fichiers objet générés par le compilateur.


Préprocesseur

Un préprocesseur pré-traduit un fichier source, faisant par exemple l'inclusion des contenus des fichiers d'en-tête dans le fichier source. Il est conseillé de ne pas faire cela manuellement, pour gagner du temps. On insère simplement une ligne comme #include <nom_fichier>. Le préprocesseur insère le contenu de ce fichier dans le fichier source. C'est une des choses que fait le préprocesseur.


Bibliothèque C++

La bibliothèque C++ est utilisée par les programmes C++. La bibliothèque C++ contient les fonctions qui sont couramment utilisées dans les programmes C++. Ainsi, le programmeur n'a pas à réécrire certaines fonctions (comme afficher une chaîne de caractères à l'écran) à chaque fois qu'il crée un programme.


Installer Bison

Installation de Bison

Installez Bison en lançant les commandes suivantes:



./configure --prefix=/usr \
   --datadir=/usr/share/bison &&
make &&
make install

Certains programmes ignorent bison et tentent de trouver le programme yacc (bison est une (meilleure) alternative à yacc). Donc, pour satisfaire ces quelques programmes, nous allons créer un script yacc qui appelle bison et émule les conventions de nom suivies par yacc pour ses fichiers de sortie.

Créez un nouveau fichier /usr/bin/yacc en lançant ce qui suit:



cat > /usr/bin/yacc << "EOF"
#!/bin/sh
# Debut de /usr/bin/yacc

/usr/bin/bison -y "$@"

# Fin de /usr/bin/yacc
EOF
chmod 755 /usr/bin/yacc


Explication des commandes

--datadir=/usr/share/bison: Ceci installe les fichiers de grammaire de bison dans /usr/share/bison plutôt que dans /usr/share.


Contenu

Le package Bison contient le programme bison.


Description

Bison est un générateur de parseur, en remplacement de YACC. YACC signifie Encore un Autre Compilateur de Compilateurs. Qu'est-ce donc que Bison? C'est un programme qui génère un programme qui analyse la structure d'un fichier texte. Au lieu d'écrire le programme, un utilisateur spécifie comment les choses doivent être reliées et, avec ces règles, un programme est construit pour analyser le fichier texte.

Il y a de nombreux exemples où une structuration est nécessaire et l'un d'eux est la calculatrice.

Soit la chaîne:


        1 + 2 * 3

Un humain peut facilement arriver au résultat de 7. Pourquoi? A cause de sa structure. Notre cerveau sait comment interpréter la chaîne. L'ordinateur ne le sait pas, et Bison est un outil pour l'aider à comprendre cela, en présentant la chaîne sous la forme suivante au compilateur:



            +
           / \
          *   1
         / \
        2   3

En commençant en bas de l'arbre, et en arrivant aux nombres 2 et 3, qui sont liés par un symbole de multiplication, l'ordinateur multiplie 2 par 3. Le résultat de cette multiplication est mémorisé et la prochaine chose que l'ordinateur voit est le résultat de 2*3 et le nombre 1 qui sont reliés par le symbole d'addition. L'ajout de 1 au résultat précédent donne 7. En calcul, les opérations les plus complexes peuvent être exprimées sous ce format d'arbre, et l'ordinateur commence simplement en bas, et travaille en cheminant vers le haut, pour arriver à la réponse correcte. Bien entendu, Bison n'est pas uniquement utilisé pour les calculatrices.


Installer Less

Installation de Less

Installez Less en lançant les commandes suivantes:



./configure --prefix=/usr --bindir=/bin &&
make &&
make install


Contenu

Le package Less contient le programme less.


Description

Le programme less est un paginateur de fichier (ou un afficheur de texte). Il affiche le contenu d'un fichier avec la possibilité de défilement. Less est une évolution du paginateur habituel appelé " more" . Less permet le défilement arrière dans les fichiers et n'a pas besoin de lire tout le fichier quand il démarre, ce qui le rend plus rapide quand vous lisez de gros fichiers.


Installer Groff

Installation de Groff

Installez Groff en lançant les commandes suivantes:



./configure --prefix=/usr &&
make &&
make install


Contenu

Le package Groff contient les programmes addftinfo, afmtodit, eqn, grodvi, groff, grog, grohtml, grolj4, grops, grotty, hpftodit, indxbib, lkbib, lookbib, neqn, nroff, pfbtops, pic, psbb, refer, soelim, tbl, tfmtodit et troff.


Description

addftinfo

addftinfo lit un fichier de fonte troff et y ajoute des informations supplémentaires de métrique de fonte, afin qu'il soit utilisable par le système groff.


afmtodit

afmtodit crée un fichier de fonte pour être utilisé par groff et grops.


eqn

eqn compile les descriptions d'équations intégrées dans des fichiers d'entrée troff en commandes pouvant être comprises par troff.


grodvi

grodvi est un pilote pour groff qui produit un format dvi TeX.


groff

groff est un frontal pour le système de formatage de document groff. Normalement, il lance le programme troff et un post-processeur approprié au périphérique choisi.


grog

grog lit des fichiers et tente de trouver lesquelles des options groff -e, -man, -me, -mn, -ms, -p, -s et -t sont nécessaires pour imprimer les fichiers, et affiche la commande groff incluant ces options sur la sortie standard.


grohtml

grohtml traduit la sortie de troff GNU en html.


grolj4

grolj4 est un pilote pour groff qui produit une sortie en format PCL5 utilisable par une imprimante HP Laserjet 4.


grops

grops traduit la sortie de troff GNU en Postscript.


grotty

grotty traduit la sortie de troff GNU en une forme convenable pour les périphériques de type machine à écrire.


hpftodit

hpftodit crée un fichier de fonte destiné à être utilisé avec groff -Tlj4 à partir d'un fichier de métrique de fonte spécifique à HP.


indxbib

indxbib crée un index de permutation pour les bases de données bibliographiques à partir du fichier spécifié, destiné à être utilisé par refer, lookbib et lkbib.


lkbib

lkbib recherche dans les bases de données bibliographiques les références contenant les clés spécifiées, et affiche les références trouvées sur la sortie standard.


lookbib

lookbib affiche une invite sur la sortie d'erreur standard (sauf si l'entrée standard n'est pas un terminal), lit une ligne depuis l'entrée standard contenant un ensemble de mots-clés, recherche dans les bases de données bibliographiques dans un fichier spécifié les références contenant ces mots-clés, affiche les références trouvées sur la sortie standard, et répète le processus jusqu'à la fin de l'entrée.


neqn

Ce qu'est neqn ni ce qu'il fait n'est actuellement connu.


nroff

Le script nroff émule la commande nroff en utilisant groff.


pfbtops

pfbtops traduit une fonte PostScript de format .pfb en ASCII.


pic

pic compile les descriptions d'images incluses dans des fichiers d'entrée troff ou TeX en commandes qui peuvent être comprises par TeX ou troff.


psbb

psbb lit un fichier qui doit être un document Postscript conforme aux conventions de Structuration des Documents, et cherche un commentaire %%BoundingBox.


refer

refer copie le contenu d'un fichier sur la sortie standard, sauf que les lignes entre .[ et .] sont interprétées comme des citations, et que les lignes entre .R1 et .R2 sont interprétées comme des commandes sur la manière de traiter les citations.


soelim

soelim lit les fichiers et remplace les lignes de la forme fichier .so par le contenu de fichier.


tbl

tbl compile les descriptions de tables intégrées dans les fichiers d'entrée troff en commandes qui peuvent être comprises par troff.


tfmtodit

tfmtodit crée un fichier de fonte à utiliser avec groff -Tdvi.


troff

troff est en grande partie compatible avec le troff Unix. En général, il doit être invoqué avec la commande groff, qui lancera aussi les préprocesseurs et les post-processeurs dans l'ordre approprié, et avec les options qui conviennent.


Installer Man

Installation de Man

Installez Man en lançant les commandes suivantes:



sed -e 's|in \(.*\$PATH\)|in `echo \1`|' \
   configure > tmp~ &&
mv tmp~ configure &&
chmod 755 configure &&
./configure -default &&
make &&
make install &&
sed s/AWK=/"AWK=\/usr\/bin\/mawk"/ \
   /usr/sbin/makewhatis > makewhatis-new &&
mv makewhatis-new /usr/sbin/makewhatis &&
chmod 755 /usr/sbin/makewhatis


Explication des commandes

sed -e 's|in \(.*\$PATH\)|in `echo \1`|' configure...: Ceci corrige un petit problème dans la configuration de man. Le script de configuration cherche des fichiers comme cat, gunzip, bzip2, etc., dans une boudle for qui se déroule sur un chemin spécifié. La scission du chemin ne se fait pas correctement, et nécessite cette correction.

-default: Ceci configure le package man avec les choix par défaut.

sed s/AWK=/"AWK=\/usr\/bin\/mawk"/ /usr/sbin/makewhatis > makewhatis-new: Ceci remplace la variable AWK de /usr/bin/makewhatis par l'emplacement du programme mawk.

chmod 755 /usr/sbin/makewhatis: Ceci rend le script makewhatis de nouveau exécutable.


Contenu

Le package Man contient les programmes man, apropos, whatis et makewhatis.


Description

man

man formate et affiche les pages de manuel en ligne.


apropos

apropos recherche dans un ensemble de fichiers de base de données contenant des descriptions brèves des commandes système, en fonction de mots-clés, et affiche le résultat sur la sortie standard.


whatis

whatis recherche dans un ensemble de fichiers de base de données contenant des descriptions brèves de commandes système, en fonction de mots-clés, et affiche le résultat sur la sortie standard. Seules les correspondances de mots complets sont affichées.


makewhatis

makewhatis lit toutes les pages de manuel contenues dans les sections de manpath fournies, ou les pages préformatées contenues dans les sections de catpath données. Pour chaque page, il écrit une ligne dans la base de données whatis; chaque ligne contient le nom de la page et une brève description, séparés par un tiret. La description est extraite du contenu de la section NAME de la page du manuel.


Installer Perl

Installation de Perl

Installez Perl en lançant les commandes suivantes:



./Configure -Dprefix=/usr &&
make &&
make install

Si un utilisateur ne désire pas répondre à toutes les questions que Perl pose, il peut ajouter l'option -d au script de configuration, et Perl utilisera tous les paramètres par défaut. Pour éviter que le script Configure ne pose des questions après la création du fichier config.sh, on peut passer l'option -e à perl. Les commandes avec ces paramètres ressemblent à:



./Configure -Dprefix=/usr -d -e &&
make &&
make install


Contenu

Le package Perl contient Perl - Extraction et Rapport Pratiques


Description

Perl combine les capacités et les fonctionnalités de C, awk, sed et sh dans un puissant langage de programmation.


Installer M4

Installation de M4

Installez M4 en lançant les commandes suivantes:



./configure --prefix=/usr &&
make &&
make install

Si le système de base tourne avec un noyau 2.0 et que la version de Glibc est la 2.1, alors il est plus que probable qu'un utilisateur aura des difficultés à exécuter M4 dans l'environnement chroot, à cause d'incompatibilités entre le programme M4, Glibc-2.1 et le noyau en exécution 2.0. S'il a des problèmes pour exécuter le programme m4 dans l'environnement chroot (par exemple en installant les packages autoconf et automake), il doit sortir de l'environnement chroot et compiler M4 en statique. De cette manière, le binaire sera lié avec Glibc 2.0 (s'il tourne avec un noyau 2.0, la version de Glibc est au mieux 2.0 sur un système correct. Le noyau 2.0 et Glibc-2.1 ne vont pas très bien ensemble) et ne posera plus aucun problème.

Pour créer une version de M4 liée statiquement, exécutez les commandes suivantes:



logout
cd $LFS/usr/src/m4-1.4
./configure --prefix=/usr
make LDFLAGS=-static
make prefix=$LFS/usr install

Maintenant, il est possible d'entrer de nouveau dans l'environnement chroot et de continuer avec le pacakge suivant. Si M4 doit être recompilé dynamiquement, ceci peut être fait après avoir redémarré dans le système LFS au lieu d'y être via chroot.



chroot $LFS env -i HOME=/root bash --login


Contenu

Le package M4 contient le processeur M4.


Description

M4 est un processeur de macro. Il copie l'entrée sur la sortie en développant les macros au fur et à mesure. Les macros sont soit prédéfinies, soit définies par l'utilisateur, et peuvent prendre un nombre quelconque d'arguments. En plus de développer les macros, m4 a des fonctions prédéfinies pour inclure des fichiers nommés, lancer des commandes UNIX, faire de l'arithmétique d'entiers, manipuler du texte de diverses façons, faire de la récursivité, etc. M4 peut être utilisé soit comme frontal d'un compilateur, ou comme processeur de macros à part.


Installer Texinfo

Installation de Texinfo

Installez Texinfo en lançant les commandes suivantes:



./configure --prefix=/usr &&
make &&
make install


Contenu

Le package Texinfo contient les programmes info, install-info, makeinfo, texi2dvi et texindex.


Description

info

Le programme info lit les documents Info, en général situés dans le répertoire /usr/doc/info. Les documents Info sont comme des pages de man(uel), mais ont tendance à aller plus en profondeur que la simple explication des options d'un programme.


install-info

Le programme install-info met à jour les entrées d'info. Quand le programme info est exécuté, une liste de sujets disponibles (c'est-à-dire les documents info disponibles) est affichée. Le programme install-info est utilisé pour tenir cette liste de sujets disponibles à jour. Si des fichiers d'info sont supprimés manuellement, il faut également supprimer le sujet dans le fichier d'index. Ce programme est utilisé dans ce but. Il fonctionne également, dans l'autre sens, quand des documents d'info sont ajoutés.


makeinfo

Le programme makeinfo traduit des documents source Texinfo en différents formats. Les formats disponibles sont: fichiers info, texte et HTML.


texi2dvi

Le programme texi2dvi affiche les documents Texinfo.


texindex

Le programme texindex est utilisé pour trier les fichiers d'index Texinfo.


Installer Autoconf

Installation d'Autoconf

Installez Autoconf en lançant les commandes suivantes:



./configure --prefix=/usr &&
make &&
make install


Contenu

Le package Autoconf contient les programmes autoconf, autoheader, autoreconf, autoscan, autoupdate et ifnames.


Description

autoconf

autoconf est un outil pour produire des scripts shell qui configurent automatiquement les packages de code source logiciel pour les adapter à de nombreux systèmes UNIX. Les scripts de configuration produits par Autoconf sont indépendants d'Autoconf quand ils sont lancés; leurs utilisateurs n'ont donc pas besoin d'avoir Autoconf.


autoheader

Le programme autoheader peut créer un fichier modèle de commandes C #define à utiliser pour la configuration.


autoreconf

Si vous avez beaucoup de scripts générés par autoconf, le programme autoreconf peut vous faire gagner du temps. Il lance autoconf (et autoheader, si besoin) de façon répétée pour reconstruire les scripts de configuration Autoconf et les modèles d'en-tête de configuration dans l'arborescence rattachée au répertoire courant.


autoscan

Le programme autoscan peut vous aider à créer un fichier configure.in pour un package logiciel. autoscan scrute les fichiers sources dans une arborescence rattachée à un répertoire donné en argument de ligne de commande, ou le répertoire courant si aucun n'est spécifié. Il recherche les fichiers sources pour des problèmes habituels de portabilité et crée un fichier configure.scan qui est un préliminaire à configure.in pour ce package.


autoupdate

Le programme autoupdate met à jour un fichier configure.in qui appelle les macros Autoconf par leurs anciens noms, afin qu'il utilise les noms de macro actuels.


ifnames

ifnames peut servir lors de l'écriture d'un configure.in pour un package logiciel. Il affiche les identifiants que le package utilise déjà dans les conditions du préprocesseur C. Si un package a déjà été mis à jour pour une portabilité quelconque, ce programme peut vous aider à trouver ce que sa configuration doit vérifier. Il peut aider à remplir quelques trous dans un configure.in généré par autoscan.


Installer Automake

Installation d'Automake

Installez Automake en lançant les commandes suivantes:



./configure --prefix=/usr &&
make install


Contenu

Le package Automake contient les programmes aclocal et automake.


Description

aclocal

Automake inclut un certain nombre de macros Autoconf qui peuvent être utilisées dans les packages; certaines d'entre elles sont requises par Automake, dans certains cas. Ces macros doivent être définies dans le fichier aclocal.m4; autrement, elles ne seront pas vues par autoconf.

Le programme aclocal va générer automatiquement les fichiers aclocal.m4, en fonction du contenu de configure.in. Ceci fournit un bon moyen d'obtenir des macros produites par Automake, sans avoir à rechercher ici ou là. De plus, le mécanisme aclocal peut être étendu pour pouvoir être utilisé par d'autres packages.


automake

Pour créer tous les fichiers Makefile.in d'un package, lancez le programme automake dans le répertoire racine de ce package, sans arguments. automake va chercher automatiquement chaque Makefile.am approprié (en parcourant configure.in) et générer le Makefile.in correspondant.


Installer Bash

Installation de Bash

Installez Bash en lançant les commandes suivantes:



./configure --prefix=/usr --with-curses &&
make &&
make install &&
logout

Le Bash statique est remplacé par le Bash dynamique et on retourne dans l'environnement chroot en lançant:



mv $LFS/usr/bin/bash $LFS/usr/bin/bashbug $LFS/bin &&
chroot $LFS /usr/bin/env -i HOME=/root \
   TERM=$TERM /bin/bash --login
 


Contenu

Le package Bash contient le programme bash.


Description

bash est le SHell Bourne-Again, qui est un interpréteur de commandes couramment utilisé sur les systèmes Unix. bash est un programme qui lit l'entrée standard, c'est-à-dire le clavier. Un utilisateur tape quelque chose et le programme évalue ce qu'il a entré, et en fait quelque chose, comme lancer un programme.


Installer Flex

Installation de Flex

Installez Flex en lançant les commandes suivantes:



./configure --prefix=/usr &&
make &&
make install &&
cd /usr/bin &&
ln -s flex lex


Contenu

Le package Flex contient le programme flex.


Description

flex est un outil pour générer des programmes qui reconnaissent des motifs dans du texte. La reconnaissance de motifs est très utile dans de nombreuses applications. Un utilisateur définit les règles de recherche, et flex crée un programme qui recherche ces motifs. La raison pour laquelle les gens utilisent flex est qu'il est plus facile de définir des règles sur ce qu'il faut rechercher, que d'écrire un programme qui scrute le texte pour cela.


Installer File

Installation de File

Installez File en lançant les commandes suivantes:



./configure --prefix=/usr --datadir=/usr/share/misc &&
make &&
make install

File utilise les nombres magiques pour déterminer le type d'un fichier. Ces nombres magiques sont fournis avec File dans un fichier texte. File compile en interne cette base de données à chacune de ses exécutions. Ce n'est pas le type normal d'opérations pour File, car compiler un fichier texte à chaque fois n'est pas le moyen le plus rapide de faire cela. File fournit une option "-C" pour compiler ce fichier de nombres magiques. La raison pour laquelle cela n'est pas fait automatiquement est que certaines personnes veulent travailler sur les nombres magiques. D'un autre côté, beaucoup de gens ne réalisent pas qu'ils devraient compiler les nombres magiques; l'auteur de File a donc ajouté un avertissement quand le fichier texte magique est utilisé. Comme nous ne travaillerons pas de façon courante sur le fichier texte magique, nous le compilerons, parce que cela est plus rapide, évite un avertissement ennuyeux et correspond à ce qui devrait être:



        file -C


Contenu

Le pacakge File contient le programme file.


Description

file teste chaque fichier spécifié pour essayer de le classer. Il y a trois sortes de tests, réalisés dans cet ordre: tests du système de fichiers, test des nombres magiques et test de langage. Le premier test qui réussit provoque l'affichage du type de fichier.


Installer Libtool

Installation of Libtool

Install Libtool by running the following commands:



./configure --prefix=/usr &&
make &&
make install


Contenu

Le package Libtool contient les programmes libtool et libtoolize. Il contient aussi la bibliothèque ltdl.


Description

libtool

libtool fournit des services généraux de support de construction des bibliothèques.


libtoolize

libtoolize fournit un moyen standard d'ajouter un support libtool à un package.


Bibliothèque ltdl

Libtool fournit une petite bibliothèque, appelée 'libltdl', qui a pour but de masquer les différentes difficultés liées à l'ouverture dynamique des bibliothèques aux programmeurs.


Installer Bin86

Installation de Bin86

Installez Bin86 en lançant les commandes suivantes:



make &&
make PREFIX=/usr install


Contenu

Le paquet Bin86 contient les programmes as86, as86_encap, ld86, objdump86, nm86 et size86.


Description

as86

as86 est un assembleur pour les processeurs 8086...80386.


as86_encap

as86_encap est un script shell pour appeler as86 et convertir le binaire créé en fichier C prog.v à inclure ou à lier avec des programmes comme les installeurs de bloc de démarrage.


ld86

ld86 comprend uniquement les fichiers objet construit par l'assembleur as86; il peut soit les lier en un exécutable I&D séparé ou impur.


objdump86

Pas de description disponible.


nm86

Pas de description disponible.


size86

Pas de description disponible.


Installer Binutils

Installation de Binutils

Installez Binutils en lançant les commandes suivantes:



./configure --prefix=/usr --enable-shared &&
make -e tooldir=/usr &&
make -e tooldir=/usr install &&
make -e tooldir=/usr install-info


Contenu

Le package Binutils contient les programmes gasp, gprof, ld, as, ar, nm, objcopy, objdump, ranlib, readelf, size, strings, strip, c++filt et addr2line.


Description

gasp

gasp est le préprocesseur de macros assembleur.


gprof

gprof affiche les données de profil sous forme de graphe d'appel.


ld

ld combine plusieurs fichiers objets et archives, modifie l'emplacement de leurs données et lie les références des symboles. Souvent, la dernière étape dans la construction d'un nouveau programme compilé à exécuter est un appel à ld.


as

as a d'abord été prévu pour assembler la sortie du compilateur GNU C gcc, pour qu'elle puisse être utilisée par le lieur ld.


ar

Le programme ar crée, modifie et extrait des données depuis des archives. Une archive est un simple fichier contenant un ensemble d'autres fichiers dans une structure qui permet de retrouver les fichiers individuels d'origine (appelés membres de l'archive).


nm

nm liste les symboles des fichiers objet.


objcopy

L'utilitaire objcopy copie le contenu d'un fichier objet dans un autre. objcopy utilise la bibliothèque GNU BFD pour lire et écrire dans les fichiers objet. Il peut écrire le fichier objet destination dans un format différent de celui du fichier objet source.


objdump

objdump affiche des informations sur un ou plusieurs fichiers objet. Les options déterminent quelles informations spécifiques sont à afficher. Ces informations sont essentiellement utiles pour les programmeurs qui travaillent sur des outils de compilation, à l'inverse des programmeurs qui veulent juste que leur programme compile et fonctionne.


ranlib

ranlib génère un index du contenu d'une archive, et le stocke dans l'archive. L'index liste chaque symbole défini par un membre d'une archive, qui est un fichier objet re-localisable.


readelf

readelf affiche des informations sur les binaires de type elf.


size

size liste les tailles des sections -- et la taille totale -- de chaque fichier objet objfile dans sa liste d'arguments. Par défaut, une ligne est générée en sortie pour chaque fichier objet ou chaque module dans l'archive.


strings

Pour chaque fichier donné, strings affiche les séquences de caractères imprimables qui ont au moins une longueur de quatre caractères (ou le nombre spécifié en option du programme) et sont suivies d'un caractère non imprimable. Par défaut, il affiche seulement les chaînes des parties initialisées et chargées des fichiers objet; pour les autres types de fichier, il affiche les chaînes de tout le fichier.

strings est essentiellement utilisé pour déterminer le contenu des fichiers non-texte.


strip

strip débarrasse les fichiers objet de tous les symboles, ou de certains en particuliers. La liste des fichiers objet peut inclure des archives. Au moins un fichier objet doit être fourni. strip modifie les fichiers fournis en argument, plutôt que d'écrire les copies modifiées sous d'autres noms.


c++filt

Le langage C++ fournit un mécanisme de surcharge, ce qui signifie que vous pouvez écrire plusieurs fonctions ayant le même nom (pourvu que chacune réclame des paramètres de types différents). Tous les noms de fonction C++ sont encodés dans un nom d'assemblage de bas niveau (ce processus est connu sous le nom de broyage). Le programme c++filt fait l'association inverse: il décode (dé-broie) les noms de bas niveau en noms de niveau utilisateur, pour que le lieur puisse prévenir un conflit entre ces fonctions surchargées.


addr2line

addr2line traduit les adresses d'un programme en noms de fichier et numéros de ligne. A partir d'une adresse et d'un exécutable, il utilise les informations de déboguage présentes dans l'exécutable pour trouver quel nom de fichier et quel numéro de ligne sont associés à une adresse donnée.


Installer Bzip2

Installation de Bzip2

Installez Bzip2 en lançant les commandes suivantes:



make -f Makefile-libbz2_so &&
make bzip2recover libbz2.a &&
cp bzip2-shared /bin/bzip2 &&
cp bzip2recover /bin &&
cp bzip2.1 /usr/share/man/man1 &&
cp bzlib.h /usr/include &&
cp -a libbz2.so* libbz2.a /lib &&
rm /usr/lib/libbz2.a &&
cd /bin &&
ln -sf bzip2 bunzip2 &&
rm bzcat && ln -s bzip2 bzcat &&
cd /usr/share/man/man1 &&
ln -s bzip2.1 bunzip2.1 &&
ln -s bzip2.1 bzcat.1 &&
ln -s bzip2.1 bzip2recover.1

Bien que ce ne soit pas, à proprement parler, une partie du système LFS de base, il vaut la peine de mentionner que vous pouvez télécharger un patch pour Tar qui permet au programme tar de compresser et décompresser facilement en utilisant bzip2/bunzip2. Avec un tar normal, un utilisateur doit utiliser des constructions telles que bzcat fichier.tar.bz | tar xv ou tar --use-compress-prog=bunzip2 -xvf fichier.tar.bz2 pour utiliser bzip2 et bunzip2 avec tar. Ce patch vous fournit l'option -y pour qu'un utilisateur puisse décompacter des archives Bzip2 avec tar xvfy fichier.tar.bz2. L'application de ce patch sera décrite plus tard quand vous réinstallerez le package Tar.


Explication des commandes

make -f Makefile-libbz2_so: Ceci lance la construction de bzip2 avec un fichier Makefile différent, en l'occurrence Makefile-libbz2_so, qui crée une bibliothèque dynamique libbz2.so et lie les utilitaires bzip2 avec.


Contenu

Le package Bzip2 contient les programmes bzip2, bunzip2, bzcat et bzip2recover.


Description

bzip2

bzip2 compresse les fichiers avec l'algorithme de compression de texte par tri de blocs de Burrows-Wheeler, et le codage de Huffman. La compression est en général bien meilleure que celle obtenue par les compresseurs plus conventionnels basés sur LZ77/LZ78, et s'approche des performances de la famille PPM des compresseurs statistiques.


bunzip2

bunzip2 décompresse les fichiers qui ont été compressés avec bzip2.


bzcat

bzcat (ou bzip2 -dc) décompresse tous les fichiers spécifiés sur la sortie standard.


bzip2recover

bzip2recover restaure les données des fichiers bzip2 endommagés.


Installer Gettext

Installation de Gettext

Installez Gettext en lançant les commandes suivantes:



./configure --prefix=/usr &&
make &&
make install


Contenu

Le pacakge gettext contient les programmes gettext, gettextize, msgcmp, msgcomm, msgfmt, msgmerge, msgunfmt et xgettext.


Description

gettext

Le package gettext est utilisé pour l'internationalisation (connue aussi sous le terme de i18n) et pour la localisation (connue aussi sous le terme de l10n). Les programmes peuvent être compilés avec le Support du Langage Natif (NLS) qui leur permet d'afficher les messages dans la langue natale des utilisateurs plutôt qu'en anglais, par défaut.


Installer Kbd

Installation de Kbd

Installez Kbd en lançant les commandes suivantes:



./configure --datadir=/usr/share/kbd &&
make &&
make install &&
rm /usr/share/kbd/keymaps/i386/qwerty/defkeymap.map.gz

Nous devons maintenant choisir un plan de clavier par défaut. Parcourez le répertoire /usr/share/kbd/keymaps et trouvez-y le plan de clavier que vous voudrez utiliser par défaut. Puis exécutez cette commande:



cd /usr/share/kbd/keymaps &&
ln -s <chemin-du-plan-de-clavier> defkeymap.map.gz

Remplacez <chemin-du-plan-de-clavier> par le chemin vers le plan de clavier que vous avez choisi, relativement au répertoire /usr/share/kbd/keymaps. Par exemple, si vous avez choisi le plan de clavier US, vous le remplacerez par i386/qwerty/us.map.gz.


Explication des commandes

--datadir=/usr/share/kbd: Ceci met les fichiers de données de kbd (fontes, plans du clavier et autres) dans le répertoire /usr/share/kbd, en accord avec le FHS.

rm /usr/share/kbd/keymaps/i386/qwerty/defkeymap.map.gz: Nous supprimons ce fichier parce que nous ne connaissons pas le plan du clavier qu'il vous faut.

ln -s <path-to-keymap> defkeymap.map.gz Avec cette commande, vous positionnez le plan du clavier par défaut, qui peut être chargé avec la commande loadkeys -d.


Contenu

Le package Kbd contient les programmes chvt, deallocvt, dumpkeys, fgconsole, getkeycodes, kbd_mode, kbdrate, loadkeys, loadunimap, mapscrn, psfxtable, resizecons, screendump, setfont, setkeycodes, setleds, setmetamode, setvesablank, showfont, showkey, unicode_start et unicode_stop. Il y a d'autres programmes, qui ne sont pas installés par défaut, car ils sont très optionnels. Examinez le contenu du package Kbd si vous avez des problèmes avec votre console.


Description

chvt

chvt modifie le terminal virtuel de premier plan.


deallocvt

deallocvt désalloue les terminaux virtuels inutilisés.


dumpkeys

dumpkeys affiche les tables de conversion du clavier.


fgconsole

fgconsole affiche le numéro du terminal virtuel actif.


getkeycodes

getkeycodes affiche la table de correspondance de scancode en keycode du noyau.


kbd_mode

kbd_mode indique ou positionne le mode du clavier.


kbdrate

kbdrate positionne les taux de répétition et de temporisation du clavier.


loadkeys

loadkeys charge les tables de conversion du clavier.


loadunimap

loadunimap charge la table de correspondance d'unicode en fonte du noyau.


mapscrn

mapscrn charge une table de correspondance des caractères de sortie définie par l'utilisateur dans le pilote de la console. Notez qu'il est obsolète et que ses fonctionnalités sont reprises dans setfont.


psfxtable

psfxtable est un outil pour gérer les tables de caractères Unicode pour les fontes de console.


resizecons

resizeicons modifie la représentation de la taille de la console pour le noyau.


screendump

Un utilitaire de copie de l'écran pour la console.


setfont

Ceci vous permet de modifier les fontes EGA/VGA dans la console.


setkeycodes

setkeycodes charge les entrées de la table de correspondance scancode en keycode du noyau.


setleds

setleds positionne les LED du clavier. Beaucoup de personnes trouvent utile d'avoir numlock activé par défaut, et c'est en utilisant ce programme que vous pourrez y arriver.


setmetamode

setmetamode définit la gestion de la touche méta du clavier.


setvesablank

Ceci vous laisse trafiquer l'économiseur d'écran matériel (pas de grilles-pain, seulement un écran vide).


showfont

showfont affiche des données sur une fonte. L'information montrée comprend les informations sur la fonte, ses propriétés, les métriques des caractères, et les images des caractères.


showkey

showkey examine les scancodes et les keycodes transmis par le clavier.


unicode_start

unicode_start met la console en mode Unicode.


unicode_stop

unicode_stop annule le mode unicode pour le clavier et la console.


Installer Diffutils

Installation de Diffutils

Installez Diffutils en lançant les commandes suivantes:



./configure --prefix=/usr &&
make &&
make install


Contenu

Le package Diffutils contient les programmes cmp, diff, diff3 et sdiff.


Description

cmp et diff

cmp et diff comparent tous deux deux fichiers et montrent leurs différences. Ces deux programmes ont des options pour comparer des fichiers dans différentes situations.


diff3

La différence entre diff et diff3 est que diff compare deux fichiers, et diff3 en compare trois.


sdiff

sdiff fusionne deux fichiers et affiche interactivement le résultat.


Installer E2fsprogs

Installation de E2fsprogs

Installez E2fsprogs en lançant les commandes suivantes:

Remarquez bien que l'option vide --with-root-prefix= ci-dessous doit rester telle quelle. Nous n'avons pas oublié de fournir une valeur ici.



./configure --prefix=/usr --with-root-prefix= \
   --enable-elf-shlibs &&
make &&
make install &&
make install-libs


Contenu

Le package e2fsprogs contient les programmes chattr, lsattr, uuidgen, badblocks, debugfs, dumpe2fs, e2fsck, e2label, fsck, fsck.ext2, mke2fs, mkfs.ext2, mklost+found et tune2fs.


Description

chattr

chattr modifie les attributs d'un fichier sur un système de fichier Linux ext2.


lsattr

lsattr liste les attributs d'un fichier sur un système de fichiers ext2.


uuidgen

Le programme uuidgen crée un nouvel identifiant universel unique (UUID) en utilisant la bibliothèque libuuid. Le nouvel UUID peut raisonnablement être considéré comme unique parmi tous les UUID créés sur le système local, et parmi les UUID créés sur d'autres systèmes, dans le passé ou le futur.


badblocks

badblocks est utilisé pour rechercher les secteurs défectueux sur un périphérique (en général une partition de disque).


debugfs

Le programme debugfs est un débogueur de système de fichiers. Il peut être utilisé pour examiner et modifier l'état d'un système de fichiers ext2.


dumpe2fs

dumpe2fs affiche le super-bloc et les informations de groupe de blocs pour le système de fichiers présent sur un périphérique spécifié.


e2fsck et fsck.ext2

e2fsck est utilisé pour vérifier un système de fichiers Linux ext2. fsck.ext2 fait la même chose que e2fsck.


e2label

e2label affiche ou modifie le nom de système de fichiers sur un système de fichiers ext2 situé sur le périphérique spécifié.


fsck

fsck est utilisé pour vérifier et éventuellement réparer un système de fichiers Linux.


mke2fs et mkfs.ext2

mke2fs est utilisé pour créer un système de fichiers Linux ext2 sur un périphérique (en général une partition de disque). mkfs.ext2 fait la même chose que mke2fs.


mklost+found

mklost+found est utilisé pour créer le répertoire lost+found dans le répertoire de travail courant d'un système de fichiers Linux ext2. mklost+found pré-alloue des blocs de disque pour le répertoire, pour le rendre utilisable par e2fsck.


tune2fs

tune2fs ajuste les paramètres d'optimisation de système de fichiers sur un système de fichiers Linux ext2.


Installer Fileutils

Installation de Fileutils

Installez Fileutils en lançant les commandes suivantes:



patch -Np1 -i ../fileutils-4.0.patch &&
./configure --prefix=/usr --bindir=/bin \
   --libexecdir=/bin &&
make &&
make install


Contenu

Le package Fileutils contient les programmes chgrp, chmod, chown, cp, dd, df, dir, dircolors, du, install, ln, ls, mkdir, mkfifo, mknod, mv, rm, rmdir, sync, touch et vdir.


Description

chgrp

chgrp modifie le groupe d'appartenance de chaque fichier donné en lui affectant le groupe spécifié, qui peut être un nom de groupe ou un ID de groupe numérique.


chmod

chmod modifie les permissions de chaque fichier spécifié selon le mode donné, qui peut être soit une représentation symbolique des changements à effectuer, ou un nombre octal représentant le schéma de bits pour les nouvelles permissions.


chown

chown modifie l'utilisateur et/ou le groupe d'appartenance de chaque fichier spécifié.


cp

cp copie les fichiers d'un endroit dans un autre.


dd

dd copie un fichier (depuis l'entrée standard vers la sortie standard, par défaut) avec une taille de bloc choisie par l'utilisateur, en pouvant éventuellement y faire des conversions.


df

df affiche la quantité d'espace disque disponible sur le système de fichiers contenant chaque nom de fichier en argument. Si aucun nom de fichier n'est donné, l'espace disponible sur tous les systèmes de fichier actuellement montés est affiché.


ls, dir et vdir

dir et vdir sont des versions de ls avec différents formats de sortie par défaut. Ces programmes listent chaque fichier ou répertoire spécifié. Le contenu des répertoires est trié alphabétiquement. Pour ls, les fichiers sont listés par défaut en colonne, triés verticalement, si la sortie standard est un terminal; autrement, ils sont listés un par ligne. Pour dir, les fichiers sont listés par défaut en colonne, triés verticalement. Pour vdir, les fichiers sont listés par défaut en format long.


dircolors

dircolors affiche les commandes pour positionner la variable d'environnement LS_COLOR. La variable LS_COLOR est utilisée pour modifier le schéma de couleurs par défaut utilisé par ls et les utilitaires associés.


du

du affiche la quantité d'espace disque utilisée par chaque argument, et pour chaque sous-répertoire du répertoire en argument.


install

install copie les fichiers et positionne leurs permissions et, si possible, leur propriétaire et leur groupe.


ln

ln crée des liens physiques ou logiques (symboliques) entre fichiers.


mkdir

mkdir crée des répertoires avec un nom spécifié.


mkfifo

mkfifo crée un FIFO avec chaque nom spécifié.


mknod

mknod crée un FIFO, fichier spécial de type caractère ou bloc, avec le nom de fichier spécifié.


mv

mv déplace des fichiers d'un répertoire dans un autre, ou renomme des fichiers, selon les arguments qui lui sont passés.


rm

rm supprime des fichiers ou des répertoires.


rmdir

rmdir supprime des répertoires, s'ils sont vides.


sync

sync force l'écriture des blocs modifiés sur disque et met à jour le super-bloc.


touch

touch positionne les heures d'accès et de modification de chaque fichier spécifié à l'heure courant. Les fichiers qui n'existent pas sont créés vides.


Installer Grep

Installation de Grep

Installez Grep en lançant les commandes suivantes:



./configure --prefix=/usr &&
make &&
make install


Contenu

Le package grep contient les programmes egrep, fgrep et grep.


Description

egrep

egrep affiche les lignes des fichiers qui vérifient une expression régulière étendue.


fgrep

fgrep affiche les lignes des fichiers qui vérifient une liste de chaînes fixes, séparées par des caractères de fin de ligne, l'une quelconque de ces chaînes devant correspondre.


grep

grep affiche les lignes des fichiers qui vérifient une expression régulière basique.


Installer Gzip

Installation de Gzip

Installez Gzip en lançant les commandes suivantes:



./configure --prefix=/usr &&
make &&
make install &&
cd /usr/bin &&
mv gzip /bin &&
rm gunzip &&
cd /bin &&
ln -sf gzip gunzip &&
ln -s gzip compress &&
ln -s gunzip uncompress


Contenu

Le package Gzip contient les programmes compress, gunzip, gzexe, gzip, uncompress, zcat, zcmp, zdiff, zforece, zgrep, zmore et znew.


Description

gunzip

gunzip décompresse les fichiers qui ont été compressés avec gzip.


gzexe

gzexe permet de compresser des exécutables en les remplaçant, et de faire en sorte qu'ils se décompressent automatiquement et s'exécutent lorsqu'ils sont lancés (avec une dégradation des performances).


gzip

gzip réduit la taille des fichiers nommés en utilisant le codage de Lempel-Zip (LZ77).


zcat

zcat décompresse une liste de fichiers fournie en ligne de commande ou sur son entrée standard, et écrit les données décompressées sur la sortie standard.


zcmp

zcmp invoque le programme cmp sur des fichiers compressés.


zdiff

zdiff invoque le programme diff sur des fichiers compressés.


zforce

zforce force l'extension .gz sur tous les fichiers gzip, pour que gzip ne les compresse pas deux fois. Ceci peut être utile pour des fichiers dont les noms ont été tronqués après un transfert.


zgrep

zgrep invoque le programme grep sur des fichiers compressés.


zmore

zmore est un filtre qui permet d'examiner des fichiers texte simples ou compressés, écran par écran, sur un terminal (de la même manière que more).


znew

znew recompresse des fichiers du format .Z (compress) en format .gz (gzip).


Installer Ld.so

Installation de Ld.so

Installez Ld.so en lançant les commandes suivantes:



cd man &&
cp ldd.1 /usr/share/man/man1 &&
cp *.8 /usr/share/man/man8


Contenu

Du package Ld.so, nous n'utilisons que les pages man de ldconfig et ldd. Les binaires ldconfig et ldd eux-mêmes sont fournis avec Glibc.


Installer Lilo

Installation de Lilo

Installez Lilo en lançant les commandes suivantes:



make &&
make install

Il semble que la compilation de ce package échoue sur certaines machines quand l'option du compilateur -g est utilisée. Si un utilisateur ne parvient pas à compiler Lilo ainsi, il devrait essayer de supprimer la valeur -g de la variable CFLAGS dans le fichier Makefile.

A la fin de l'installation, le processus make install écrira un message indiquant que vous devez exécuter /sbin/lilo pour terminer la mise à jour. Ne le faites pas, car cela ne sert à rien. Le fichier /etc/lilo.conf n'est pas encore présent. Nous complèterons l'installation de lilo dans le chapitre 8.


Contenu

Le package Lilo contient le programme lilo.


Description

lilo installe le chargeur de démarrage de Linux, qui est utilisé pour lancer un système Linux.


Installer Make

Installation de Make

Installez Make en lançant les commandes suivantes:



./configure --prefix=/usr &&
make &&
make install


Contenu

Le package Make contient le programme make.


Description

make détermine automatiquement quels morceaux d'un gros programme ont besoin d'être recompilés, et exécute les commandes pour les recompiler.


Installer Modutils

Installation de Modutils

Installez Modutils en lançant les commandes suivantes:



./configure &&
make &&
make install


Contenu

Le package Modutils contient les programmes depmod, genksyms, insmod, insmod_ksymoops_clean, kerneld, kernelversion, ksyms, lsmod, modinfo, modprobe et rmmod.


Description

depmod

depmod gère les descriptions de dépendance pour les modules du noyau qui peuvent être chargés.


genksyms

genksyms lit (sur l'entrée standard) la sortie de gcc -E source.c et génère un fichier contenant des informations de version.


insmod

insmod installe dans le noyau utilisé un module qui peut être chargé.


insmod_ksymoops_clean

insmod_ksymoops_clean supprime les ksym et les modules sauvés qui n'ont pas été accédés depuis deux jours.


kerneld

kerneld exécute une action du noyau dans l'espace utilisateur (comme le chargement sur demande de modules).


kernelversion

kernelversion renvoie la version majeure du noyau utilisé.


ksyms

ksyms affiche les symboles exportés du noyau.


lsmod

lsmod fournit les informations sur tous les modules chargés.


modinfo

modinfo examine un fichier objet associé à un module du noyau et affiche toutes les informations qu'il peut y trouver.


modprobe

modprobe utilise un fichier de dépendance ressemblant à Makefile, créé par depmod, pour charger automatiquement le(s) module(s) pertinent(s) de l'ensemble des modules disponibles, dans l'arborescence des répertoires prédéfinie.


rmmod

rmmod décharge des modules chargés du noyau utilisé.


Installer Procinfo

Installation de Procinfo

Installez Procinfo en lançant les commandes suivantes:



sed "s/-ltermcap/-lncurses/" Makefile | make -f - &&
make install


Explication des commandes

sed "s/-ltermcap/-lncurses/" Makefile | make -f -: Ceci remplacera -ltermcap par -lncurses dans le Makefile et dirigera la sortie de sed (le Makefile modifié) directement vers le programme make. C'est un moyen alternatif et plus efficace de diriger la sortie vers un fichier et indiquer à make de l'utiliser. Nous faisons cela parce que libtermcap est déclaré obsolète au bénéfice de libncurses.


Contenu

Le package Procinfo contient le programme procinfo.


Description

procinfo recueille des données système depuis le répertoire /proc et les affiche de façon correctement formatée sur le périphérique de sortie standard.


Installer Procps

Installation de Procps

Installez Procps en lançant les commandes suivantes:



make &&
make XSCPT='' install &&
mv /usr/bin/kill /bin


Explication des commandes

make XSCPT='' install: Ceci positionnera la variable XSCPT de Makefile à une valeur vide, pour désactiver l'installation de XConsole. Autrement, "make install" tente de copier le fichier XConsole dans /usr/X11R6/bin. Et ce répertoire n'existe pas, parce que X n'est pas encore installé.


Contenu

Le package Procps contient les programmes free, kill, oldps, ps, skill, snice, sysctl, tload, top, uptime, vmstat, w et watch.


Description

free

free affiche la quantité totale de mémoire, libre et utilisée, physique ou d'échange, dans le système, ainsi que la mémoire partagée et les mémoires tampon utilisées par le noyau.


kill

kill envoie des signaux aux processus.


oldps and ps

ps fournit une photographie instantanée des processus en cours.


skill

skill envoie des signaux aux processus répondant à un critère donné.


snice

snice modifie la priorité d'ordonnancement des processus répondant à un critère donné.


sysctl

sysctl modifie les paramètres du noyau en exécution.


tload

tload affiche un graphe de la charge moyenne du système courant sur le terminal spécifié (ou le terminal du processus tload si aucun autre n'est spécifié).


top

top fournit une vue de l'activité en cours du processeur en temps réel.


uptime

uptime affiche une ligne contenant les informations suivantes: l'heure courante, la durée de fonctionnement du système, le nombre d'utilisateurs actuellement connectés, et les moyennes de charge du système pour les 1, 5 et 15 dernières minutes.


vmstat

vmstat donne des informations sur les processus, la mémoire, la pagination, les entrées/sorties de blocs, les trappes et l'activité du cpu.


w

w affiche des informations sur les utilisateurs actuellement connectés à la machine, et leurs processus.


watch

watch lance une commande de façon répétitive, affichant sa sortie (le premier écran complet).


Installer Psmisc

Installation de Psmisc

Installez Psmisc en lançant les commandes suivantes:



./configure --prefix=/usr &&
make &&
make install


Contenu

Le package Psmisc contient les programmes fuser, killall et pstree.


Description

fuser

fuser affiche le PID des processus utilisant les fichiers ou les systèmes de fichiers spécifiés.


killall

killall envoie un signal à tous les processus faisant tourner une des commandes spécifiées.


pstree

pstree montre les processus en cours sous la forme d'un arbre.


Installer Sed

Installation de Sed

Installez Sed en lançant les commandes suivantes:



./configure --prefix=/usr --bindir=/bin &&
make &&
make install


Contenu

Le package Sed contient le programme sed.


Description

sed est un éditeur de flux. Un éditeur de flux est utilisé pour opérer des transformations de texte basiques sur un flux d'entrée (un fichier ou une entrée depuis un pipe).


Installer Shellutils

Installation de Shellutils

Installez Shellutils en lançant les commandes suivantes:



./configure --prefix=/usr &&
make &&
make install &&
cd /usr/bin &&
mv date echo false pwd stty /bin &&
mv su true uname hostname /bin


Contenu

Le package Shellutils contient les programmes basename, chroot, date, dirname, echo, env, expr, factor, false, groups, hostid, hostname, id, logname, nice, nohup, pathchk, pinky, printenv, printf, pwd, seq, sleep, stty, su, tee, test, true, tty, uname, uptime, users, who, whoami et yes.


Description

basename

basename supprime le répertoire et les suffixes des noms de fichier.


chroot

chroot lance une commande ou un shell interactif avec un répertoire racine particulier.


date

date affiche la date et l'heure courantes dans un format spécifié, ou positionne la date du système.


dirname

dirname supprime les suffixes autres que le répertoire du nom de fichier.


echo

echo affiche une ligne de texte.


env

env lance un programme dans un environnement modifié.


expr

expr évalue les expressions.


factor

factor affiche les facteurs premiers de tous les nombres entiers spécifiés.


false

false se termine toujours avec un code de statut indiquant une erreur.


groups

groups affiche les groupes auxquels appartient un utilisateur.


hostid

hostid affiche l'identifiant numérique (en hexadécimal) de l'hôte courant.


hostname

hostname positionne ou affiche le nom du système hôte courant.


id

id affiche les GID et UID réels et effectifs d'un utilisateur ou de l'utilisateur courant.


logname

logname affiche le nom de connexion de l'utilisateur courant.


nice

nice lance un programme avec une planification modifiée.


nohup

nohup lance une commande insensible aux interruptions, avec une sortie autre qu'un terminal.


pathchk

pathchk vérifie si des noms de fichier sont valides ou portables.


pinky

pinky est un utilitaire léger qui recherche des informations sur un utilisateur particulier.


printenv

printenv affiche tout ou partie de l'environnement.


printf

printf formate et affiche des données (identique à la fonction C printf).


pwd

pwd affiche le nom du répertoire de travail courant.


seq

seq affiche des nombres dans une certaine plage, avec un incrément spécifié.


sleep

sleep attend pendant un laps de temps spécifié.


stty

stty modifie et affiche les paramètres de ligne du terminal.


su

su lance un shell avec des ID d'utilisateur et de groupe substitués.


tee

tee lit depuis l'entrée standard et écrit sur la sortie standard et dans des fichiers.


test

test vérifie les types de fichier et compare les valeurs.


true

true se termine toujours avec un code de statut indiquant le succès.


tty

tty affiche le nom de fichier du terminal connecté à l'entrée standard.


uname

uname affiche des informations sur le système.


uptime

uptime indique depuis combien de temps le système tourne.


users

users affiche le nom des utilisateurs actuellement connectés sur l'hôte courant.


who

who montre qui est connecté.


whoami

whoami affiche votre id utilisateur effectif.


yes

yes sort une chaîne à répétition, jusqu'à ce qu'il soit tué.


Installer Shadowpwd

Installation de la Suite de Masquage des mots de passe

Installez la Suite de Masquage des mots de passe en lançant les commandes suivantes:



patch -Np1 -i ../shadow-20001016.patch &&
./configure --prefix=/usr &&
make &&
make install &&
cd etc &&
cp limits login.access login.defs.linux /etc &&
mv /etc/login.defs.linux /etc/login.defs


Explication des commandes

cp limits login.access et autres: Ces fichiers ne sont pas installés pendant l'installation du package; nous devons donc les copier manuellement, car ces fichiers sont utilisés pour configurer les détails d'authentification sur le système.


Contenu

La Suite «Shadow Password» (masquage des mots de passe) contient les programmes chage, chfn, chsh, expiry, faillog, gpasswd, lastlog, login, newgrp, passwd, sg, su, chpasswd, dpasswd, groupadd, groupdel, groupmod, grpck, grpconv, grpunconv, logoutd, mkpasswd, newusers, pwck, pwconv, pwunconv, useradd, userdel, usermod et vipw.


Description

chage

chage modifie le nombre de jours entre deux changements de mot de passe et la date du dernier changement de mot de passe.


chfn

chfn modifie le nom complet de l'utilisateur, le numéro de travail, le poste de travail et le numéro de téléphone du domicile pour un compte utilisateur.


chsh

chsh modifie le shell de connexion de l'utilisateur.


expiry

Vérifie et applique la politique d'expiration des mots de passe.


faillog

faillog formate le contenu du journal d'échec /var/log/faillog, et conserve le nombre et les limites des échecs.


gpasswd

gpasswd est utilisé pour administrer le fichier /etc/group.


lastlog

lastlog formate et affiche le contenu du journal de dernière connexion, /var/log/lastlog. Le nom de connexion, le port et l'heure de dernière connexion seront affichés.


login

login est utilisé pour établir une nouvelle session avec le système.


newgrp

newgrp est utilisé pour modifier l'ID du groupe courant pendant une session de connexion.


passwd

passwd modifie les mots de passe des comptes utilisateur et groupe.


sg

sg exécute une commande avec un ID de groupe différent.


su

Modifie les id effectifs de groupe et d'utilisateur en ceux d'un utilisateur. Ceci remplace le programme su installé avec le package Shellutils.


chpasswd

chpasswd lit un fichier contenant des paires nom d'utilisateur et mot de passe depuis l'entrée standard, et utilise ces informations pour mettre à jour un groupe d'utilisateurs existants.


dpasswd

dpasswd ajoute, supprime et met à jour les mots de passe d'appel pour les shells de connexion utilisateur.


groupadd

La commande groupadd crée un nouveau compte de groupe avec les valeurs spécifiées en ligne de commande et les valeurs par défaut du système.


groupdel

La commande groupdel modifie les fichiers de compte du système, supprimant toutes les entrées faisant référence au groupe.


groupmod

La commande groupmod modifie les fichiers de compte du système pour refléter les changements spécifiés sur la ligne de commande.


grpck

grpck vérifie l'intégrité des informations d'authentification du système.


grpconv

grpconv convertit en fichiers de groupe masqués des fichiers de groupe normaux.


grpunconv

grpunconv convertit en fichiers de groupe normaux des fichiers de groupe masqués.


logoutd

logoutd applique les restrictions de temps de connexion et de port spécifiées dans /etc/porttime.


mkpasswd

mkpasswd lit un fichier dans le format donné par les options et le convertit dans le format de fichier de base de données correspondant.


newusers

newusers lit un fichier contenant des paires nom d'utilisateur et mot de passe en clair, et utilise ces informations pour mettre à jour un groupe d'utilisateurs existants ou pour créer de nouveaux utilisateurs.


pwck

pwck vérifie l'intégrité des informations d'authentification du système.


pwconv

pwconv convertit en fichiers «Shadow Password» (mot de passe masqués) des fichiers de mot de passe normaux.


pwunconv

pwunconv convertit en fichiers de mots de passe normaux des fichiers «Shadow Password» (mot de passe masqués).


useradd

useradd crée un nouvel utilisateur ou met à jour les informations par défaut d'un nouvel utilisateur.


userdel

userdel modifie les fichiers de compte du système, supprimant toutes les entrées faisant référence au nom de connexion spécifié.


usermod

usermod modifie les fichiers de compte du système pour refléter les modifications spécifiées sur la ligne de commande.


vipw et vigr

vipw et vigr éditent respectivement les fichiers /etc/passwd et /etc/group. Avec l'option -s, ils éditent les versions masquées de ces fichiers, respectivement /etc/shadow et /etc/gshadow.


Installer Sysklogd

Installation de Sysklogd

Installez Sysklogd en lançant les commandes suivantes:



make &&
make install


Contenu

Le package Sysklogd contient les programmes klogd et syslogd.


Description

klogd

klogd est un démon système qui intercepte et journalise les messages du noyau de Linux.


syslogd

syslogd fournit une sorte de journalisation que de nombreux programmes modernes utilisent. Chaque message journalisé contient au moins une heure et un champ nom d'hôte, normalement un champ nom de programme également, mais cela dépend de la fidélité du programme qui journalise.


Installer Sysvinit

Installation de Sysvinit

Quand les niveaux d'exécution sont modifiés (par exemple au moment d'arrêter le système), le programme init envoie les signaux TERM et KILL à tous les processus qu'init a lancés. Mais init affiche un message à l'écran disant "sending all processes the TERM signal" (envoi du signal TERM à tous les processus), et la même chose pour le signal KILL. Ce message signifie qu'init envoie ce signal à tous les processus actuellement en train de tourner, ce qui n'est en fait pas le cas. Pour éviter cette confusion, un utilisateur peut appliquer le patch sysvinit trouvé sur le site FTP de LFS à sysvinit, qui modifie le message dans le fichier shutdown.c et fait afficher "sending all processes started by init the TERM signal" (envoi du signal TERM à tous les processus lancés par init).

Appliquez le patch en lançant la commande suivante:


patch -Np1 -i ../sysvinit-2.78.patch

Installez Sysvinit en lançant les commandes suivantes:



make -C src &&
make -C src install


Contenu

Le package Sysvinit contient les programmes pidof, last, lastb, mesg, utmpdump, wall, halt, init, killall5, poweroff, reboot, runlevel, shutdown, sulogin et telinit.


Description

pidof

pidof trouve les identifiants des processus (pid) des programmes spécifiés et affiche ces identifiants sur la sortie standard.


last

last recherche en arrière dans le fichier /var/log/wtmp (ou le fichier désigné par l'option -f) et affiche une liste de tous les utilisateurs s'étant connectés (et déconnectés) depuis la création du fichier.


lastb

lastb est identique à last, sauf que, par défaut, il affiche un journal du fichier /var/log/btmp, qui contient toutes les tentatives de connexion ayant échouées.


mesg

mesg contrôle l'accès au terminal de l'utilisateur par d'autres. Typiquement, il est utilisé pour autoriser ou interdire à d'autres utilisateurs d'écrire sur son terminal.


utmpdump

utmpdumps affiche le contenu d'un fichier (en général /var/run/utmp) sur la sortie standard dans un format compréhensible par l'utilisateur.


wall

wall envoie un message à toutes les personnes connectées ayant leur permission mesg positionnée à yes.


halt

halt note que le système est en train de s'arrêter dans le fichier /var/log/wtmp, puis dit au noyau soit de s'arrêter, soit de redémarrer, ou d'éteindre le système. Si halt ou reboot est appelé quand le système n'est pas dans un niveau d'exécution de 0 ou 6, shutdown sera appelé à la place (avec une option -h ou -r).


init

init est le père de tous les processus. Son rôle principal est de créer les processus à partir d'un script enregistré dans le fichier /etc/inittab. Ce fichier a en général des entrées indiquant à init d'engendrer des getty sur chaque ligne où l'utilisateur peut se connecter. Il contrôle aussi les processus autonomes requis par un système particulier.


killall5

killall5 est la commande killall de SystemV. Il envoie un signal à tous les processus, sauf les processus dans sa propre session, de manière à ne pas tuer le shell qui fait tourner le script qui l'a appelé.


poweroff

poweroff est équivalent à shutdown -h -p now. Il arrête l'ordinateur et l'éteint (si un BIOS compatible APM est utilisé, et qu'APM est activé dans le noyau).


reboot

reboot est équivalent à shutdown -r now. Il redémarre l'ordinateur.


runlevel

runlevel lit le fichier utmp du système (typiquement, /var/run/utmp) pour localiser l'enregistrement du niveau d'exécution, puis écrit les niveaux d'exécution du système, le précédent et l'actuel, sur sa sortie standard, séparés par un seul espace.


shutdown

shutdown arrête le système de façon sécurisée. Tous les utilisateurs connectés sont avertis que le système va s'arrêter, et la connexion est bloquée.


sulogin

sulogin est invoqué par init quand le système passe en mode mono-utilisateur (ceci est réalisé par une entrée dans /etc/inittab). init tente également d'exécuter sulogin quand l'option -b lui est passée par le chargeur d'amorçage (comme LILO).


telinit

telinit envoie les signaux appropriés à init, lui indiquant le niveau d'exécution sous lequel passer.


Installer Tar

Installation de Tar

Si un utilisateur veut pouvoir utiliser directement des fichiers bzip2 avec tar, il peut utiliser le patch tar disponible sur le site FTP de LFS. Ce patch ajoutera l'option -y à tar, qui fonctionne de la même manière que l'option -z pour tar (que vous pouvez utiliser pour les fichiers gzip).

Appliquez le patch en lançant la commande suivante:



cd src &&
patch -i ../../gnutarpatch.txt &&
cd ..

Installez Tar en lançant les commandes suivantes depuis le répertoire racine:



./configure --prefix=/usr --libexecdir=/usr/bin &&
make &&
make install &&
mv /usr/bin/tar /bin


Contenu

Le package tar contient les programmes tar et rmt.


Description

tar

tar est un programme d'archivage conçu pour stocker et extraire des fichiers d'un fichier archive appelé fichier tar.


rmt

rmt est un programme utilisé par les programmes distants dump et restore pour manipuler un lecteur de bandes magnétiques via une connexion de communication inter-processus.


Installer Textutils

Installation de Textutils

Installez Textutils en lançant les commandes suivantes:



./configure --prefix=/usr &&
make &&
make install &&
mv /usr/bin/cat /bin


Contenu

Le paquet Textutils contient les programmes cat, cksum, comm, split, cut, expand, fmt, fold, head, join, md5sum, nl, od, paste, pr, ptx, sort, split, sum, tac, tail, tr, tsort, unexpand, uniq et wc.


Description

cat

cat concatène le(s) fichier(s) ou l'entrée standard vers la sortie standard.


cksum

cksum affiche la somme de contrôle CRC et le nombre d'octets de chaque fichier spécifié.


comm

comm compare deux fichiers triés ligne à ligne.


csplit

cplit découpe un fichier en morceaux séparés par un(des) motif(s) dans des fichiers xx01, xx02, ..., et affiche le nombre d'octets de chaque morceau sur la sortie standard.


cut

cut écrit les parties sélectionnées des lignes des fichiers spécifiés sur la sortie standard.


expand

expand convertit les tabulations dans les fichiers en espaces, en écrivant sur la sortie standard.


fmt

fmt reformate chaque paragraphe dans le(s) fichier(s) spécifié(s), en écrivant sur la sortie standard.


fold

fold emballe les lignes d'entrée de chaque fichier spécifié (entrée standard par défaut), en écrivant sur la sortie standard.


head

head affiche les xx (10 par défaut) premières lignes de chaque fichier spécifié sur la sortie standard.


join

join fusionne les lignes identiques de deux fichiers dans un fichier commun.


md5sum

md5sum affiche ou vérifie les sommes de contrôle MD5.


nl

nl écrit chaque fichier spécifié sur la sortie standard, en y ajoutant les numéros de ligne.


od

od écrit une représentation non-ambiguë, en octal par défaut, d'un fichier spécifié, sur la sortie standard.


paste

paste écrit des lignes, d'une manière consistant à prendre séquentiellement les lignes correspondantes de chaque fichier spécifié, séparées par des tabulations, sur la sortie standard.


pr

pr met en pages ou en colonnes des fichiers pour impression.


ptx

ptx produit un index de permutation du contenu d'un fichier.


sort

sort écrit la concaténation triée de fichiers sur la sortie standard.


split

split extrait des morceaux de taille fixe d'un fichier d'entrée dans PREFIXaa, PREFIXab, ...


sum

sum écrit la somme de contrôle et le nombre de blocs de chaque fichier spécifié.


tac

tac écrit chaque fichier spécifié sur la sortie standard, la dernière ligne en premier.


tail

tail écrit les xx (10 par défaut) dernières lignes de chaque fichier spécifié sur la sortie standard.


tr

tr convertit, répète et/ou supprime des caractères de l'entrée standard, en écrivant sur la sortie standard.


tsort

tsort écrit des listes totalement ordonnées en accord avec l'ordonnancement partiel dans les fichiers spécifiés.


unexpand

unexpand convertit les espaces dans chaque fichier en tabulations, en écrivant sur la sortie standard.


uniq

uniq supprime toutes les lignes identiques successives sauf une depuis des fichiers ou l'entrée standard, et écrit dans des fichiers ou la sortie standard.


wc

wc affiche le nombre de lignes, mots et octets de chaque fichier spécifié, et une ligne de totalisation si plus d'un fichier est spécifié.


Installer Utillinux

Installation de Util-Linux

Installez Util-Linux en lançant les commandes suivantes:



sed s/HAVE_SLN=no/HAVE_SLN=yes/ \
   MCONFIG > MCONFIG~ &&
mv MCONFIG~ MCONFIG &&
./configure &&
make &&
make install


Explication des commandes

HAVE_SLN=yes: Nous ne construisons pas ce programme parce qu'il a déjà été installé par Glibc.


Contenu

Le package Util-linux contient les programmes arch, dmesg, kill, more, mount, umount, agetty, blockdev, cfdisk, ctrlaltdel, elvtune, fdisk, fsck.minix, hwclock, kbdrate, losetup, mkfs, mkfs.bfs, mkfs.minix, mkswap, sfdisk, swapoff, swapon, cal, chkdupexe, col, colcrt, colrm, column, cytune, ddate, fdformat, getopt, hexdump, ipcrm, ipcs, logger, look, mcookie, namei, rename, renice, rev, script, setfdprm, setsid, setterm, ul, whereis, write, ramsize, rdev, readprofile, rootflags, swapdev, tunelp et vidmode.


Description

arch

arch affiche l'architecture de la machine.


dmesg

dmesg est utilisé pour examiner ou vérifier la mémoire tampon circulaire du noyau (messages de démarrage du noyau).


kill

kill envoie un signal donné au processus spécifié.


more

more est un filtre pour paginer le texte écran par écran.


mount

mount monte un système de fichiers depuis un périphérique dans un répertoire (point de montage).


umount

umount démonte un système de fichiers monté.


agetty

agetty ouvre un port tty, demande un nom de connexion et appelle la commande /bin/login.


blockdev

blockdev permet d'exécuter des ioctls sur un périphérique de type bloc depuis la ligne de commande.


cfdisk

cfdisk est un manipulateur de table de partitions de disque basé sur libncurses.


ctrlaltdel

ctrlaltdel positionne la fonction associée à la combinaison de touche CTRL+ALT+DEL (remise à zéro logicielle ou matérielle).


elvtune

elvtune permet d'optimiser l'élévateur d'entrées/sorties par file de périphérique de type bloc.


fdisk

fdisk est un manipulateur de table de partitions de disque.


fsck.minix

fsck.minix effectue une vérification de cohérence pour le système de fichiers Linux MINIX.


hwclock

hwclock interroge et positionne l'horloge matérielle (appelée aussi horloge RTC ou BIOS).


kbdrate

kbdrate réinitialise le taux de répétition du clavier et son délai.


losetup

losetup configure et contrôle les périphériques de boucle.


mkfs

mkfs construit un système de fichiers Linux sur un périphérique, en général une partition de disque dur.


mkfs.bfs

mkfs.bfs crée un système de fichiers SCO bfs sur un périphérique, en général une partition de disque dur.


mkfs.minix

mkfs.minix crée un système de fichiers Linux MINIX sur un périphérique, en général une partition de disque dur.


mkswap

mkswap met en place une zone d'échange Linux sur un périphérique ou dans un fichier.


sfdisk

sfdisk est un manipulateur de table de partitions de disque.


swapoff

swapoff désactive la pagination et l'échange pour les périphériques et les fichiers.


swapon

swapon active la pagination et l'échange pour les périphériques et les fichiers.


cal

cal affiche un calendrier simple.


chkdupexe

chkdupexe trouve les exécutables en double.


col

col filtre les lignes inversées depuis son entrée.


colcrt

colcrt filtre les sorties de nroff pour une prévisualisation via CRT.


colrm

colrm supprime les colonnes d'un fichier.


column

column met des listes en colonne.


cytune

cytune interroge et modifie le seuil d'interruption pour le pilote Cyclades.


ddate

ddate convertit les dates en système Grégorien en dates en système Discordien.


fdformat

fdformat réalise le formatage de bas niveau d'une disquette.


getopt

getopt sépare les options de commande, de la même manière que la commande C getopt.


hexdump

hexdump affiche les fichiers spécifiés, ou l'entrée standard, dans un format spécifié par l'utilisateur (ascii, décimal, hexadécimal, octal).


ipcrm

ipcrm supprime une ressource spécifiée.


ipcs

ipcs fournit des informations sur les utilitaires IPC.


logger

logger crée des entrées dans le journal système.


look

look affiche les lignes commençant par une chaîne donnée.


mcookie

mcookie génère des marques magiques pour xauth.


namei

namei suit un chemin jusqu'à trouver un point terminal.


rename

rename renomme les fichiers.


renice

renice modifie la priorité des processus en exécution.


rev

rev inverse les lignes d'un fichier


script

script enregistre une session de terminal dans un fichier texte.


setfdprm

setfdprm positionne les paramètres fournis par l'utilisateur pour la disquette.


setsid

setsid lance les programmes dans une nouvelle session.


setterm

setterm positionne les attributs d'un terminal.


ul

ul lit un fichier et traduit les occurrences de blancs soulignés en séquences qui indiquent le soulignement sur le terminal utilisé.


whereis

whereis localise un binaire, un fichier source et une page de manuel pour une commande.


write

write envoie un message à un autre utilisateur.


ramsize

ramsize interroge et positionne la taille du disque mémoire.


rdev

rdev interroge et positionne le périphérique racine image, le périphérique d'échange, la taille du disque mémoire ou le mode vidéo.


readprofile

readprofile lit les informations de profil du noyau.


rootflags

rootflags interroge et positionne des informations supplémentaires utilisées lors du montage de la racine.


swapdev

swapdev interroge et positionne le périphérique d'échange.


tunelp

tunelp positionne différents paramètres pour le périphérique LP.


vidmode

vidmode interroge et positionne le mode vidéo.


Configurer les logiciels essentiels

Maintenant que tous les logiciels sont installés, tout ce qu'il nous reste à faire pour que certains programmes fonctionnent correctement est de créer leurs fichiers de configuration.


Configurer Vim

Par défaut, Vim fonctionne en mode compatible avec vi. Certains peuvent l'apprécier, mais je préfère nettement faire tourner vim en mode vim (autrement, je n'aurais pas inclu Vim dans ce livre, mais le Vi original). Créez le fichier /root/.vimrc en lançant ce qui suit:



cat > /root/.vimrc << "EOF"
" Debut /root/.vimrc

set nocompatible
set bs=2

" Fin /root/.vimrc
EOF


Configurer Glibc

Nous avons besoin de créer le fichier /etc/nsswitch.conf. Bien que glibc fournisse des valeurs par défaut quand ce fichier est absent ou corrompu, ces valeurs ne fonctionnent pas correctement avec le réseau dont nous traiterons dans un prochain chapitre. De plus, notre zone horaire doit être configurée.

Créez un nouveau fichier /etc/nsswitch.conf en lançant ce qui suit:



cat > /etc/nsswitch.conf << "EOF"
# Debut de /etc/nsswitch.conf

passwd: files
group: files
shadow: files

publickey: files

hosts: files dns
networks: files

protocols: db files
services: db files
ethers: db files
rpc: db files

netgroup: db files

# Fin de /etc/nsswitch.conf
EOF

Le script tzselect doit être lancé, et les réponses à propos de votre zone horaire sont à fournir. Ceci fait, le script vous fournira l'emplacement du fichier de zone horaire dont vous aurez besoin.

Créez le lien symbolique /etc/localtime en lançant:



cd /etc &&
ln -sf ../usr/share/zoneinfo/<tzselect's output> localtime

La sortie de tzselect peut ressembler à EST5EDT ou Canada/Eastern.

Le lien symbolique qu'un utilisateur créera avec cette information sera:



ln -s ../usr/share/zoneinfo/EST5EDT localtime 

Ou:



ln -s ../usr/share/zoneinfo/Canada/Eastern localtime


Configurer le Chargeur Dynamique

Par défaut, le chargeur dynamique recherche les bibliothèques dynamiques dans quelques répertoires par défaut; normalement, le fichier /etc/ld.so.conf est donc inutile, à moins que le système n'aie d'autres répertoires dans lesquels un utilisateur voudrait que le système fasse ses recherches. Le répertoire /usr/local/lib n'est pas, par défaut, scruté pour rechercher des bibliothèques dynamiques; nous devons donc ajouter ce chemin, pour qu'un utilisateur installant des logiciels ne soit pas surpris qu'ils ne fonctionnent pas pour cette raison.

Créez un nouveau fichier /etc/ld.so.conf en lançant ce qui suit:



cat > /etc/ld.so.conf << "EOF"
# Debut de /etc/ld.so.conf

/lib
/usr/lib
/usr/local/lib

# Fin de /etc/ld.so.conf
EOF

Bien qu'il ne soit pas nécessaire d'ajouter les répertoires /lib et /usr/lib, cela ne fait pas de mal. De cette manière, ce qui est recherché est clairement visible, et un utilisateur n'a pas à se remémorer les chemins de recherche par défaut, s'il ne le veut pas.


Configurer Sysklogd

Créez un nouveau fichier /etc/syslog.conf en lançant ce qui suit:



cat > /etc/syslog.conf << "EOF"
# Debut /etc/syslog.conf

auth,authpriv.* -/var/log/auth.log
*.*;auth,authpriv.none -/var/log/sys.log
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
mail.* -/var/log/mail.log
user.* -/var/log/user.log
*.emerg *

# Fin /etc/syslog.conf
EOF


Configurer la Suite Masquage des Mots de passe (Shadow passwords)

Ce package contient les utilitaires pour modifier les mots de passe des utilisateurs, ajouter de nouveaux groupes/utilisateurs, détruire des groupes/utilisateurs, etc. Je ne vais pas vous expliquer ce que signifie « masquage des mots de passe » (password shadowing). Tout ce qui concerne cela se trouve dans le fichier doc/HOWTO dans l'arborescence source de la suite masquage des mots de passe déballée. Il y a une chose qu'un utilisateur doit garder à l'esprit, s'il décide d'utiliser le support des mots de passe masqués, c'est que les programmes qui nécessitent la vérification des mots de passe (par exemple, xdm, les démons ftp, les démons pop3, etc.) doivent être "compatibles avec le masquage" (shadow-compliant), c'est-à-dire qu'ils doivent pouvoir travailler avec des mots de passe masqués.

Les mots de passe masqués ne sont pas activés par défaut. Se contenter d'installer la suite masquage des mots de passe n'active pas les mots de passe masqués.

C'est maintenant une bonne occasion pour lire le chapitre 5 du fichier doc/HOWTO. Il décrit comment activer les mots de passe masqués, comment tester si le masquage fonctionne et, sinon, comment le désactiver de nouveau.

La documentation fait allusion à la création de npasswd et nshadow après l'exécution de pwconv. Ceci est une erreur dans la documentation. Ces deux fichiers ne seront pas créés. Après avoir exécuté pwconv, /etc/passwd ne contiendra plus de mots de passe, mais /etc/shadow oui. Un utilisateur n'a pas besoin de renommer les fichiers npasswd et nshadow lui-même.


Configurer Sysvinit

Créez un nouveau fichier /etc/inittab en lançant ce qui suit:



cat > /etc/inittab << "EOF"
# Début de /etc/inittab

id:3:initdefault:

si::sysinit:/etc/init.d/rcS

l0:0:wait:/etc/init.d/rc 0
l1:S1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2
l3:3:wait:/etc/init.d/rc 3
l4:4:wait:/etc/init.d/rc 4
l5:5:wait:/etc/init.d/rc 5
l6:6:wait:/etc/init.d/rc 6

ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now

su:S016:respawn:/sbin/sulogin

1:2345:respawn:/sbin/agetty tty1 9600
2:2345:respawn:/sbin/agetty tty2 9600
3:2345:respawn:/sbin/agetty tty3 9600
4:2345:respawn:/sbin/agetty tty4 9600
5:2345:respawn:/sbin/agetty tty5 9600
6:2345:respawn:/sbin/agetty tty6 9600

# Fin de /etc/inittab
EOF


Créer les fichiers /var/run/utmp, /var/log/wtmp et /var/log/btmp

Les programmes comme login, shutdown, uptime et d'autres cherchent à lire et à écrire dans /var/run/utmp, /var/log/btmp et /var/log/wtmp. Ces fichiers contiennent des informations sur qui est actuellement connecté. Ils contiennent également des informations sur l'heure des derniers démarrage et arrêt de l'ordinateur, et un enregistrement des tentatives de connexion ayant échoué.

Créez ces fichiers avec leurs permissions adéquates en lançant les commandes suivantes:



touch /var/run/utmp /var/log/wtmp /var/log/btmp /var/log/lastlog &&
chmod 644 /var/run/utmp /var/log/wtmp /var/log/btmp /var/log/lastlog


Créer le mot de passe de root

Choisissez un mot de passe pour l'utilisateur root et créez-le en lançant la commande suivante:



passwd root


Chapitre 7. Création des scripts de démarrage du système

Introduction

Ce chapitre créera les scripts nécessaires lancés lors du démarrage du système. Ces scripts accomplissent des tâches comme remonter en mode lecture-écriture le système de fichiers racine monté en mode lecture seule par le noyau, activer la(les) partition(s) d'échange, lancer une vérification du système de fichiers racine pour s'assurer qu'il est intact, et lancer les démons utilisés par le système.


Comment fonctionne le processus de démarrage avec ces scripts?

Linux utilise un utilitaire de démarrage particulier, appelé SysVinit. Il est basé sur le concept de niveaux d'exécution. Cela peut être très différent d'un système à un autre; on ne peut donc pas supposer que, parce que cela fonctionne dans <insérer le nom de la distribution>, cela fonctionnera de même dans LFS aussi. LFS a sa propre façon de faire les choses, mais il respecte en général les standards couramment acceptés.

SysVinit (que nous appellerons init à partir de maintenant) fonctionne avec un schéma de niveaux d'exécution. Il y a 7 (de 0 à 6) niveaux d'exécution (en fait, il y en a plus, mais ils servent dans des cas spécifiques, et ne sont en général pas utilisés. La page man de init décrit cela en détail), et chacun d'eux correspond à des choses que l'ordinateur est censé faire quand il démarre. Le niveau d'exécution par défaut est 3. Voici une description des différents niveaux d'exécution tels qu'ils sont souvent implémentés:


0: arrête l'ordinateur
1: mode mono-utilisateur
2: mode multi-utilisateurs sans réseau
3: mode multi-utilisateurs avec réseau
4: réservé pour la personnalisation, sinon identique au 3
5: comme 4, en général utilisé pour une connexion GUI (comme xdm de X ou kdm de KDE)
6: redémarre l'ordinateur

La commande utilisée pour changer de niveau d'exécution est init <niveau d'exécution>, où <niveau d'exécution> est le niveau d'exécution cible. Par exemple, pour redémarrer un ordinateur, un utilisateur lancera la commande init 6. La commande reboot est simplement un alias, comme la commande halt est un alias pour init 0.

Le script /etc/init.d/rcS est exécuté à chaque démarrage de l'ordinateur, avant qu'un quelconque niveau d'exécution soit exécuté, et il lance les scripts listés dans /etc/rcS.d.

Il y a plusieurs répertoires sous /etc qui ressemblent à rc?.d, où ? est le numéro du niveau d'exécution, et rcS.d. Un utilisateur peut regarder dans l'un d'eux (après la fin de ce chapitre, car il n'y a rien pour le moment). Il y a là plusieurs liens symboliques. Certains commencent par K, les autres par S, et tous ont trois chiffres après la lettre initiale. Le K signifie l'arrêt (kill) d'un service, et le S signifie le démarrage (start) d'un service. Les chiffres déterminent l'ordre dans lequel ces scripts sont exécutés, de 000 à 999; plus un nombre est petit, plus il sera exécuté tôt. Quand init bascule dans un autre niveau d'exécution, les services appropriés sont arrêtés, et d'autres sont démarrés.

Les vrais scripts sont dans /etc/init.d. Ils font tout le travail, et les liens symboliques pointent tous vers eux. Les liens d'arrêt et de démarrage pointent vers le même script dans /etc/init.d. Ceci est dû au fait que les scripts peuvent être appelés avec différents paramètres, comme start, stop, restart, reload, status. Quand un lien K est rencontré, le script correspondant est lancé avec l'argument stop. Quand un lien S est rencontré, le script associé est lancé avec l'argument start.

Voici une description de ce que les arguments font réaliser aux scripts:

  • start: Le service est lancé.

  • stop: Le service est arrêté.

  • restart: Le service est arrêté puis lancé de nouveau.

  • reload: La configuration du service est mise à jour. Ceci est utilisé après la modification du fichier de configuration d'un service, quand le service n'a pas besoin d'être redémarré.

  • status: Indique si le service tourne, et avec quel PID.

Modifiez librement la façon dont le processus de démarrage travaille (après tout, c'est votre système LFS, pas le nôtre). Les fichiers fournis ici sont simplement un exemple de la manière dont cela peut être fait proprement (en tout cas, ce que nous considérons comme propre. Vous pouvez ne pas l'aimer ainsi).


Créer des répertoires

Nous avons besoin pour commencer de créer quelques répertoires supplémentaires qui seront utilisés par les scripts de démarrage. Ces répertoires sont créés en lançant:



cd /etc &&
mkdir sysconfig rc0.d rc1.d rc2.d rc3.d &&
mkdir rc4.d rc5.d rc6.d init.d rcS.d &&
cd init.d


Créer le script rc

Le premier script principal de démarrage est le script /etc/init.d/rc. Un nouveau fichier /etc/init.d/rc est créé, contenant ce qui suit:



cat > rc << "EOF"
#!/bin/sh
# Debut de /etc/init.d/rc
#
# Par Jason Pearce  - jason.pearce@linux.org
# Modifie par Gerard Beekmans - gerard@linuxfromscratch.org
# print_error_msg base sur une idee de Simon Perreault - nomis80@videotron.ca

#
# Inclure les fonctions declarees dans le fichier /etc/init.d/functions 
#

source /etc/init.d/functions

#
# La fonction print_error_msg affiche un message d'erreur lorsqu'une
# erreur imprevue se produit et n'a pas ete interceptee, pour une raison
# quelconque, par un appel a evaluate_retval ou un controle d'erreur,
# quel qu'il soit.
#

print_error_msg()
{

        echo
        $FAILURE
        echo -n "Vous ne devriez pas lire ce message d'erreur. Il "
        echo "signifie qu'une erreur imprevue "
        echo -n "s'est produite et que le sous-script $i s'est termine "
        echo "avec la valeur de retour "
        echo -n "$error_value, pour une raison inconnue. Si vous "
        echo "arrivez a rapprocher cette "
        echo -n "erreur d'un bogue dans un des fichiers fournis dans "
        echo "ce livre, merci "
        echo -n "de nous en informer a lfs-discuss@linuxfromscratch.org"
        $NORMAL
        echo
        echo
        echo "Appuyez sur une touche pour continuer..."
        read
}

#
# Si vous decommentez la variable debug ci-dessous, aucun des scripts
# ne sera execute; seuls le nom du script et ses parametres seront
# affiches a l'ecran, pour que vous puissiez voir comment les scripts
# sont appeles par rc.
#

# Decommenter la ligne suivante pour deboguage.
# debug=echo

#
# Demarrage de script ou programme.

startup() {

        $debug $*

}   

#
# Ignorer CTRL-C seulement dans ce shell, de telle sorte que nous
# puissions interrompre les sous-processus.
#

trap ":" INT QUIT TSTP

#
# Maintenant, determiner les niveaux d'execution actuel et precedent.
# La variable $RUNLEVEL est renseignee par init pour tous ses enfants.
# Ce script s'execute en tant que fils d'init.
#

runlevel=$RUNLEVEL

#
# Recuperer le premier argument. Positionner le nouveau niveau 
# d'execution avec cet argument. Si aucun niveau d'execution
# n'a ete passe a ce script, nous ne changeons pas les niveaux d'execution.
#

[ "$1" != "" ] && runlevel=$1
if [ "$runlevel" = "" ]
then
        echo "Usage: $0 <niveau d'execution>" >&2
        exit 1
fi

#
# La meme chose pour $PREVLEVEL (cf. ci-dessus $RUNLEVEL). previous sera
# renseigne avec le niveau d'execution precedent. Si $PREVLEVEL n'est pas
# positionne, cela signifie qu'il n'y avait pas de niveau d'execution
# precedent, et nous positionnerons previous à N.
#

previous=$PREVLEVEL
[ "$previous" = "" ] && previous=N

export runlevel previous

#
# Y a-t'il un repertoire rc pour le nouveau niveau d'execution ?
#

if [ -d /etc/rc$runlevel.d ]

then

#
# Si oui, recuperer d'abord tous les scripts K* de ce nouveau
# niveau d'execution.
#

        if [ $previous != N ]
        then
                for i in /etc/rc$runlevel.d/K*
                do
                [ ! -f $i ] && continue

#
# La variable suffix contiendra le nom du script sans le Kxxx initial
#

                        suffix=${i#/etc/rc$runlevel.d/K[0-9][0-9][0-9]}
#
# S'il y a un script de demarrage pour ce script K dans le niveau d'execution
# precedent, determiner son chemin d'acces complet
#
            previous_start=/etc/rc$previous.d/S[0-9][0-9][0-9]$suffix
#
# S'il n'y avait pas de niveau d'execution precedent, il se peut que
# quelque chose ait ete demarre dans rcS.d (niveau sysinit); nous
# determinerons aussi le chemin pour cette possibilite.
#

                        sysinit_start=/etc/rcS.d/S[0-9][0-9][0-9]$suffix

#
# Arreter le service s'il y a un script de demarrage dans le niveau
# precedent ou dans le niveau sysinit. Si previous_start ou sysinit_start
# n'existent pas, la commande "continue" est lancee, ce qui conduit le
# script a interrompre cette iteration de la boucle for et a poursuivre
# avec l'iteration suivante.
# Cela revient a ce qu'il n'execute pas les commandes apres les deux
# lignes suivantes et recommence au debut de cette boucle for. Cf.
# man bash pour plus d'information a ce sujet.
#

                        [ ! -f $previous_start ] &&
                        [ ! -f $sysinit_start ] && continue

#
# Si nous trouvons previous_start ou sysinit_start, lancer le
# script K
#

                        startup $i stop
                        error_value=$?
#
# Si la valeur de retour du script n'est pas 0, quelque chose n'a pas
# fonctionne avec le controle d'erreur inclus dans le script. La fonction
# print_error_msg sera appelee et le message avec la valeur de retour du
# script K sera affiche a l'ecran.
#

                        if [ $error_value != 0 ]
                        then
                                print_error_msg 
                        fi

                done
        fi

#
# Maintenant, lancer les scripts START pour ce niveau d'execution.
#

        for i in /etc/rc$runlevel.d/S*
        do
                [ ! -f $i ] && continue

                if [ $previous != N ]
        then
#
# Trouver le script de demarrage dans le niveau d'execution precédent,
# et stopper le script dans ce niveau d'execution.
#

                        suffix=${i#/etc/rc$runlevel.d/S[0-9][0-9][0-9]}
                        stop=/etc/rc$runlevel.d/K[0-9][0-9][0-9]$suffix
                  previous_start=/etc/rc$previous.d/S[0-9][0-9][0-9]$suffix
#
# S'il y a un script de demarrage dans le niveau precedent et pas de script
# d'arret dans ce niveau, nous n'avons pas a relancer le service; interrompre
# cette iteration et demarrer la suivante.
#

                        [ -f $previous_start ] && [ ! -f $stop ] && 
                        continue
                fi

                case "$runlevel" in
                        0|6)

#
# Les niveaux 0 et 6 sont les niveaux d'arret (halt) et de redemarrage (reboot).
# Nous n'y demarrons reellement rien, si bien que nous faisons l'appel avec le
# parametre "stop".
#

                                startup $i stop
                                error_value=$?
#
# Si la valeur de retour du script n'est pas 0, quelque chose n'a pas
# fonctionne dans le controle d'erreur du script. La fonction 
# print_error_msg sera appelee et le message avec la valeur de retour du
# script K sera affiche a l'ecran.
#

                                if [ $error_value != 0 ]
                                then
                                        print_error_msg
                                fi
                                ;;
                        *)
                                startup $i start
                                error_value=$?
#
# Si la valeur de retour du script n'est pas 0, quelque chose n'a pas
# fonctionne dans le controle d'erreur du script. La fonction 
# print_error_msg sera appelee et le message avec la valeur de retour du
# script K sera affiche a l'ecran.
#

                                if [ $error_value != 0 ]
                                then
                                        print_error_msg
                                fi
                                ;;
                esac
        done
fi

# Fin de /etc/init.d/rc
EOF


Créer le script rcS

Le second script principal de démarrage est le script rcS. Créez un nouveau fichier /etc/init.d/rcS contenant ce qui suit:



cat > rcS << "EOF"
#!/bin/sh
# Debut de /etc/init.d/rcS

#
# Voir le script rc pour les commentaires complets sur les constructions
# utilisees ici.
#

runlevel=S
prevlevel=N
umask 022
export runlevel prevlevel

trap ":" INT QUIT TSTP

#
# Recupere tous les scripts S de /etc/rcS.d et les execute de meme
#

for i in /etc/rcS.d/S??*
do
        [ ! -f  "$i" ] && continue;
                $i start
done

# Fin de /etc/init.d/rcS
EOF


Créer le script functions

Un nouveau fichier /etc/init.d/functions est créé, contenant ce qui suit:



cat > functions << "EOF"
#!/bin/sh
# Debut de /etc/init.d/functions

#
# Definition de quelques variables qui influencent la facon dont
# le texte sera affiche a l'ecran. La variable SET_COL fait demarrer
# le texte en colonne 70 (comme specifie par la variable COL).
# NORMAL affiche le texte en mode normal. SUCCESS affichera le texte en
# vert et FAILURE en rouge.
#

COL=70
SET_COL="echo -en \\033[${COL}G"
NORMAL="echo -en \\033[0;39m"
SUCCESS="echo -en \\033[1;32m"
FAILURE="echo -en \\033[1;31m"

#
# La fonction evaluate_retval evalue la valeur de retour du processus
# qui etait execute juste avant que la fonction ne soit appelee. Si cette
# valeur de retour etait 0, indiquant le succes, la fonction print_status
# est appelee avec le parametre "success". Dans les autres cas, la fonction
# print_status est appelee avec le parametre d'erreur.
#

evaluate_retval()
{
        if [ $? = 0 ]
        then
                print_status success
        else
                print_status failure
        fi
}

#
# La fonction print_status affiche [ OK  ] ou [ECHEC] a l'ecran. OK
# apparaitra avec la couleur definie par la variable SUCCESS et FAILED 
# avec celle definie par la variable FAILURE. Les deux sont affichees
# a partir de la colonne definie par la variable COL.
#

print_status()
{

#
# Si aucun parametre n'est passe a la fonction print_status, afficher
# le mode d'emploi.
#

        if [ $# = 0 ]
        then
                echo "Usage: print_status {success|failure}"
                return 1
        fi

        case "$1" in
                success)
                        $SET_COL
                        echo -n "[ "
                        $SUCCESS
                        echo -n "OK"
                        $NORMAL
                        echo "  ]"
                        ;;
                failure)
                        $SET_COL
                        echo -n "["
                        $FAILURE
                        echo -n "ECHEC"
                        $NORMAL
                        echo "]"
                        ;;
        esac

}

#
# La fonction loadproc lance un processus (souvent un demon)
# avec les controles d'erreur appropries.
#

loadproc()
{

#
# Si aucun parametre n'est passe a la fonction loadproc, afficher
# le mode d'emploi.
#

        if [ $# = 0 ]
        then
                echo "Usage: loadproc {program}"
                exit 1
        fi
#
# Trouver le nom de base ("basename") du premier parametre (le nom du demon
# sans le chemin d'acces qui a ete fourni: ainsi /usr/sbin/syslogd devient
# "syslogd" une fois que basename a ete lance).
#

        base=$(/usr/bin/basename $1)
#
# La variable pidlist contiendra le resultat de la commande pidof.
# pidof essaiera de trouver le PID correspondant a une chaine de
# caracteres donnee ($base dans le cas present).
#

        pidlist=$(/bin/pidof -o $$ -o $PPID -o %PPID -x $base)

        pid=""

        for apid in $pidlist
        do
                if [ -d /proc/$apid ]
                then
                        pid="$pid $apid"
                fi
        done
#
# Si la variable $pid contient quelque chose (provenant de la boucle for
# precedente), cela signifie que le demon tourne deja.
#

        if [ ! -n "$pid" ]
        then
#
# Une variable $pid vide signifie que le demon ne tourne pas; nous executons
# donc $* (tous les parametres du script sont passes a cette fonction par
# le script) puis nous controlons la valeur de retour.
#
                $*
                evaluate_retval
        else
#
# La variable $pid n'etait pas vide, signifiant que le demon tournait
# deja. Nous affichons maintenant [ECHEC].
#
                print_status failure
        fi

}

#
# La fonction killproc tue un processus en effectuant le controle
# d'erreur proprement.
#

killproc()
{

#
# Si aucun parametre n'est passe a la fonction killproc, afficher
# le mode d'emploi.
#

        if [ $# = 0 ]
        then
                echo "Usage: killproc {program} [signal]"
                exit 1
        fi

#
# Trouver le nom de base ("basename") du premier parametre (le nom du demon
# sans le chemin d'acces fourni: ainsi /usr/sbin/syslogd devient
# "syslogd" une fois que basename a ete lance).
#

        base=$(/usr/bin/basename $1)

#
# Verifie si nous avons passe un signal pour tuer le processus (tel que
# -HUP, -TERM, -KILL, etc.) a cette fonction (le second parametre). Si
# aucun second parametre n'a ete fourni, la variable nolevel est positionnee.
# Dans le cas contraire, la variable killlevel recoit la valeur de $2
# (le second parametre).
#

        if [ "$2" != "" ]
        then
                killlevel=-$2
        else
                nolevel=1
        fi

#
# La variable pidlist contiendra le resultat de la commande pidof.
# pidof essaiera de trouver le PID correspondant a une chaine de
# caracteres donnee ($base dans le cas present).
#

        pidlist=$(/bin/pidof -o $$ -o $PPID -o %PPID -x $base)

        pid=""

        for apid in $pidlist
        do
                if [ -d /proc/$apid ]
                then
                        pid="$pid $apid"
                fi
        done

#
# Si $pid contient quelque chose provenant de la boucle for, cela
# signifie qu'on a trouve un ou plusieurs PID appartenant aux processus
# qu'il faut tuer.
#
        if [ -n "$pid" ]
        then
#
# Si aucun signal pour kill n'a ete indique, on va d'abord essayer -TERM
# puis attendre 2 secondes pour laisser le temps à kill de finir
# son travail.
#
                if [ "$nolevel" = 1 ]
                then
                        /bin/kill -TERM $pid
#
# Si apres -TERM, le PID existe toujours, nous attendons 2 secondes avant
# d'essayer de le tuer avec un -KILL. Si le PID existe encore apres cela,
# attendre encore 2 secondes. Si les PID existent encore, alors il faut
# considerer que nous ne pouvons pas les tuer.
#

                        if /bin/ps h $pid >/dev/null 2>&1
                        then
                                /usr/bin/sleep 2
                                if /bin/ps h $pid > /dev/null 2>&1
                                then
                                        /bin/kill -KILL $pid
                                        if /bin/ps h $pid > /dev/null 2>&1
                                        then
                                                /usr/bin/sleep 2
                                        fi
                                fi
                        fi
                        /bin/ps h $pid >/dev/null 2>&1
                        if [ $? = 0 ]
                        then
#
# Si, apres le -KILL, il existe encore, il ne peut etre tue pour une
# raison quelconque; on va donc afficher [ECHEC].
#
                                print_status failure
                        else
#
# Il a ete tue; on supprime un eventuel fichier PID qui subsisterait
# dans /var/run puis on affiche [ OK  ].
#
                                /bin/rm -f /var/run/$base.pid
                                print_status success
                        fi
                else
#
# Un signal de kill a ete fourni. On execute donc kill avec le signal
# en question puis on attend 2 secondes pour permettre a kill de finir
# son travail.
#
                        /bin/kill $killlevel $pid
                        if /bin/ps h $pid > /dev/null 2>&1
                        then
                                /usr/bin/sleep 2
                        fi
                        /bin/ps h $pid >/dev/null 2>&1
                        if [ $? = 0 ]
                        then
#
# Si la valeur de retour de ps vaut 0, cela signifie que cette commande
# s'est executee avec succes et par consequent que le PID existe toujours.
# Donc le processus n'a pas ete tue correctement avec le signal fourni.
# Afficher [ECHEC].
#
                                print_status failure
                        else
#
# Si la valeur de retour valait 1 ou plus, cela signifie que le PID
# n'existe plus desormais, donc qu'il a ete tue avec succes. Supprimer
# un eventuel fichier PID residuel et afficher [ OK  ].
#
                                /bin/rm -f /var/run/$base.pid
                                print_status success
                        fi
                fi
        else
#
# Le PID n'existe pas, il n'est donc pas necessaire d'essayer
# de le tuer. Afficher [ECHEC]
#
                print_status failure
        fi
}

#
# La fonction reloadproc envoie un signal au demon en lui disant de
# recharger son fichier de configuration. Elle est presque identique
# a la fonction killproc si ce n'est qu'elle n'essaie pas de tuer le
# processus avec un signal -KILL (c'est-a-dire -9).
#

reloadproc()
{

#
# Si aucun parametre n'est passe a la fonction reloadproc, afficher
# le mode d'emploi.
#

        if [ $# = 0 ]
        then
                echo "Usage: reloadproc {program} [signal]"
                exit 1
        fi

#
# Trouver le nom de base ("basename") du premier parametre (le nom du demon
# sans le chemin d'acces fourni: ainsi /usr/sbin/syslogd devient
# "syslogd" une fois que basename a ete lance).
#

        base=$(/usr/bin/basename $1)

#
# Verifie si nous avons passe un signal a envoyer au processus (comme
# -HUP) a la fonction (le second parametre). Si aucun second parametre
# n'a ete fourni, la variable nolevel est positionnee. Dans le cas contraire,
# la variable killlevel recoit la valeur de $2 (le second parametre).
#


        if [ -n "$2" ]
        then
                killlevel=-$2
        else
                nolevel=1
        fi

#
# La variable pidlist contiendra le resultat de la commande pidof.
# pidof essaiera de trouver le PID correspondant à une chaine de
# caracteres donnee ($base dans le cas present).
#

        pidlist=$(/bin/pidof -o $$ -o $PPID -o %PPID -x $base)

        pid=""

        for apid in $pidlist
        do
                if [ -d /proc/$apid ]
                then
                        pid="$pid $apid"
                fi
        done

#
# Si $pid contient quelque chose provenant de la boucle for precedente,
# cela signifie qu'un ou plusieurs PID appartenant aux processus a
# recharger ont ete trouves.
#

        if [ -n "$pid" ]
        then

#
# Si aucun signal n'a ete indique, on va utiliser le signal de
# rechargement par defaut : SIGHUP.
#

                if [ "$nolevel" = 1 ]
                then
                        /bin/kill -SIGHUP $pid
                        evaluate_retval
                else
#
# Sinon, on utilisera le signal fourni.
#

                        /bin/kill $killlevel $pid
                        evaluate_retval
                fi
        else
#
# Si $pid est vide, aucun PID appartenant au processus n'a ete trouve
# et on affiche [ECHEC].
#

                print_status failure
        fi
}

#
# La fonction statusproc essaiera de savoir si un processus tourne
# ou non.
#

statusproc()
{

#
# Si aucun parametre n'a ete passe a la fonction statusproc, afficher
# le mode d'emploi.
#

        if [ $# = 0 ]
        then
                echo "Usage: status {program}"
                return 1
        fi

#
# $pid contiendra la liste des PIDs appartenant à un processus.
#

        pid=$(/bin/pidof -o $$ -o $PPID -o %PPID -x $1)
        if [ -n "$pid" ]
        then
#
# Si $pid contient quelque chose, le processus tourne:
# on affiche le contenu de la variable $pid.
#
                echo "$1 en cours d'execution, avec le PID $pid"
                return 0
        fi

#
# Si $pid ne contient rien, on regarde s'il existe un fichier PID et
# on en informe eventuellement l'utilisateur.
#

        if [ -f /var/run/$1.pid ]
        then
                pid=$(/usr/bin/head -1 /var/run/$1.pid)
                if [ -n "$pid" ]
                then
                        echo "$1 ne tourne plus mais /var/run/$1.pid existe"
                        return 1
                fi
        else
                echo "$1 ne tourne plus"
        fi

}

# Fin de /etc/init.d/functions
EOF


Créer le script checkfs

Un nouveau fichier /etc/init.d/checkfs est créé, contenant ce qui suit:



cat > checkfs << "EOF"
#!/bin/sh
# Debut de /etc/init.d/checkfs

#
# Inclure les fonctions declarees dans le fichier /etc/init.d/functions
#

source /etc/init.d/functions

#
# Activer toutes les partitions d'echange declarees dans /etc/fstab
#

echo -n "Activation de l'echange..."
/sbin/swapon -a
evaluate_retval

#
# Si le fichier /fastboot existe, on ne lance pas la verification des partitions
#

if [ -f /fastboot ]
then
        echo "Demarrage accelere, pas de verification des systemes de fichiers"
else

#
# Montage de la partition racine en lecture seule (juste au cas ou le
# noyau la monterait en lecture-ecriture alors que nous ne voulons pas
# lancer fsck sur une partition montee en lecture-ecriture).
#

        /bin/mount -n -o remount,ro /
        if [ $? = 0 ]
        then

#
# Si le fichier /forcefsck existe, nous voulons forcer une verification de
# partition, meme si la partition avait ete demontee proprement la 
# derniere fois
#

                if [ -f /forcefsck ]
                then
                        echo -n "/forcefsck existe, verification forcee "
                        echo "du systeme de fichiers"
                        force="-f"
                else
                        force=""
                fi

#
# Controle tous les systemes de fichiers mentionnes dans /etc/fstab
# qui ont le champ fs_passno positionne a 1 ou 2 (le 6eme champ.
# cf. man fstab pour plus d'informations)
#

                echo "Verification des systemes de fichiers..."
                /sbin/fsck $force -a -A -C -T

#
# Si quelque chose se passe mal lors de la verification de l'une des 
# partitions, fsck se terminera avec une valeur de retour superieure
# a 1. Si c'est le cas, on lance sulogin de facon a ce que vous
# puissiez reparer manuellement les degats.
#

                if [ $? -gt 1 ]
                then
                        $FAILURE
                        echo
                        echo -n "Echec de fsck. Reparez vos systemes "
                        echo "de fichiers en lancant manuellement /sbin/fsck"
                        echo "sans l'option -a"
                        echo
                        echo -n "Notez bien que le systeme de fichiers "
                        echo "racine est actuellement monte en lecture seule."
                        echo
                        echo -n "Je vais maintenant lancer sulogin. A votre "
                        echo "sortie, je redemarrerai votre systeme."
                        echo
                        $NORMAL
                        /sbin/sulogin
                        /sbin/reboot -f
                else
                        print_status success
                fi

        else

#
# Si le remontage en mode lecture seule ne fonctionne pas, on interrompt
# fsck et on affiche une erreur.
#

                echo -n "Impossible de controler le systeme de fichiers racine "
                echo "car il n'a pu etre monte en mode lecture seule."
        fi
fi

# Fin de /etc/init.d/checkfs
EOF


Créer le script halt

Un nouveau fichier /etc/init.d/halt est créé, contenant ce qui suit:



cat > halt << "EOF"
#!/bin/sh
# Debut de /etc/init.d/halt

#
# Appel de halt. Cf. man halt pour la signification des
# parametres
#

/sbin/halt -d -f -i -p

# Fin de /etc/init.d/halt
EOF


Créer le script loadkeys

Un utilisateur n'a besoin de créer ce script que s'il ne possède pas un clavier standard US à 101 touches. Un nouveau fichier /etc/init.d/loadkeys doit être créé, contenant ce qui suit:



cat > loadkeys << "EOF"
#!/bin/sh
# Debut de /etc/init.d/loadkeys

#
# Inclure les fonctions declarees dans le fichier /etc/init.d/functions
#

source /etc/init.d/functions

#
# Charger le fichier de plan du clavier par defaut
#

echo -n "Chargement du plan de clavier..."
/bin/loadkeys -d 2>/dev/null
evaluate_retval

# Fin de /etc/init.d/loadkeys
EOF


Créer le script mountfs

Un nouveau fichier /etc/init.d/mountfs est créé, contenant ce qui suit:



cat > mountfs << "EOF"
#!/bin/sh
# Debut de /etc/init.d/mountfs

#
# Inclure les fonctions declarees dans le fichier /etc/init.d/functions 
#

source /etc/init.d/functions

case "$1" in
    start)

        #
        # Remonter la partition racine en mode lecture-ecriture. -n
        # indique a mount de ne pas ecrire dans le fichier /etc/mtab
        # (car il ne pourra pas le faire. La partition racine
        # est tres probablement montee en mode lecture seule).
        #

        echo -n "Remontage du systeme racine en mode lecture-ecriture..."
        /bin/mount -n -o remount,rw /
        evaluate_retval

        #
        # D'abord vider le fichier /etc/mtab. Puis remonter la partition
        # racine une nouvelle fois en mode lecture-ecriture, mais en passant
        # -f a mount. De cette facon, mount fait tout sauf le montage lui-meme.
        # Ceci est necessaire pour ecrire dans le fichier mtab qui contient une
        # liste des systemes de fichiers actuellement montes.
        #

        echo > /etc/mtab
        /bin/mount -f -o remount,rw /

        #
        # Supprimer les eventuels fichiers /fastboot et /forcefsck. Ils
        # ne sont supposes etre utilises que lors du checkfs du prochain
        # demarrage, qui vient de se produire. Si vous desirez de nouveau
        # fastboot ou forcefsck, vous devrez recreer ces fichiers.
        #

        /bin/rm -f /fastboot /forcefsck

        #
        # Balayer le fichier /etc/fstab et monter tous les systemes de
        # fichiers qui n'ont pas l'option noauto positionnee dans
        # le champ fs_mntops (le 4eme champ. cf. man fstab pour plus
        # d'informations).
        #

        echo -n "Montage des autres systemes de fichiers..."
        /bin/mount -a
        evaluate_retval
        ;;

    stop)

        #
        # Desactiver toutes les partitions d'echange
        #

        echo -n "Desactivation de l'echange..."
        /sbin/swapoff -a
        evaluate_retval

        #
        # Et demonter tous les systemes de fichiers, monter
        # le systeme de fichiers racine en lecture seule (tous
        # sont demontes mais comme la racine ne peut pas l'etre
        # a ce moment, mount la remontera automatiquement en 
        # lecture seule, ce que est suppose se passer. De cette
        # facon, aucune donnee ne pourra plus etre inscrite sur
        # le disque).
        #

        echo -n "Demontage des systemes de fichiers..."
        /bin/umount -a -r
        evaluate_retval
        ;;

    *)
        echo "Usage: $0 {start|stop}"
        exit 1
    ;;
esac

# Fin de /etc/init.d/mountfs
EOF


Création du script de redémarrage (reboot)

Créez un nouveau fichier /etc/init.d/reboot contenant ce qui suit:



cat > reboot << "EOF"
#!/bin/sh
# Begin /etc/init.d/reboot

#
# Appelle reboot. Cf. man halt pour la signification des parametres.
#


echo "Redemarrage du systeme en cours..."

/sbin/reboot -d -f -i

# End /etc/init.d/reboot
EOF


Création du script sendsignals

Créez un nouveau fichier /etc/init.d/sendsignals contenant ce qui suit:



cat > sendsignals << "EOF"
#!/bin/sh
# Begin /etc/init.d/sendsignals

#
# Inclusion des fonctions declarees dans le fichier /etc/init.d/functions 
#

source /etc/init.d/functions

#
# Envoyer a tous les processus restant le signal TERM
#

echo -n "Envoi du signal TERM a tous les processus..."
/sbin/killall5 -15
evaluate_retval

#
# Envoyer a tous les processus restant (une fois que le signal TERM
# leur a ete envoye) le signal KILL.
#

echo -n "Envoi du signal KILL a tous les processus..."
/sbin/killall5 -9
evaluate_retval

# End /etc/init.d/sendsignals
EOF


Créer le script setclock

Le script suivant n'a de réelle utilité que lorsque votre horloge matérielle (également appelée horloge BIOS ou CMOS) n'est pas réglée sur le temps GMT. Le réglage recommandé consiste à configurer votre horloge matérielle en GMT et à convertir l'heure en local en utilisant le lien symbolique /etc/localtime. Mais si un système d'exploitation tourne, qui n'utilise pas une horloge réglée en GMT (notamment les OS de Microsoft), un utilisateur peut vouloir régler l'horloge en temps local, de telle façon que l'heure soit correctement affichée sur ces systèmes d'exploitation. Ce script réinitialisera l'heure du noyau avec l'horloge matérielle sans convertir l'heure en utilisant le lien symbolique /etc/localtime.

Si un utilisateur veut utiliser ce script sur le système même si l'horloge matérielle est réglée en GMT, alors la variable UTC ci-dessous doit être modifiée pour lui donner la valeur 1.



cat > setclock << "EOF"
#!/bin/sh
# Debut de /etc/init.d/setclock

#
# Inclure les fonctions declarees dans le fichier /etc/init.d/functions
# et les variables du fichier /etc/sysconfig/clock.
#

source /etc/init.d/functions
source /etc/sysconfig/clock

#
# Des maintenant, nous voulons regler l'horloge systeme sur l'horloge
# materielle, aussi nous utilisons le parametre -hctosys.
#

CLOCKPARAMS="--hctosys"

#
# Si la variable UTC est initialisee dans le fichier /etc/sysconfig/clock,
# ajouter aussi le parametre -u, pour indiquer a hwclock que l'horloge
# materielle est reglee sur le temps UTC plutot qu'en temps local.
#

case "$UTC" in
        yes|true|1)
                CLOCKPARAMS="$CLOCKPARAMS -u"
                ;;
esac

echo -n "Reglage de l'horloge..."
/sbin/hwclock $CLOCKPARAMS
evaluate_retval

# Fin de /etc/init.d/setclock
EOF


Créer le fichier /etc/sysconfig/clock

Créez un nouveau fichier /etc/sysconfig/clock en lançant ce qui suit:



cat > /etc/sysconfig/clock << "EOF"
# Debut de /etc/sysconfig/clock

UTC=1

# Fin de /etc/sysconfig/clock
EOF

Si l'horloge matérielle (appelée aussi horloge BIOS ou CMOS) n'est pas réglée sur le temps GMT, la variable UTC du fichier /etc/sysconfig/clock doit recevoir la valeur 0 (zéro).


Créer le script sysklogd

Un nouveau fichier /etc/init.d/sysklogd est créé, contenant ce qui suit:



cat > sysklogd << "EOF"
#!/bin/sh
# Debut de /etc/init.d/sysklogd

#
# Inclure les fonctions declarees dans le fichier /etc/init.d/functions 
#

source /etc/init.d/functions

case "$1" in
        start)
                echo -n "Demarrage du demon de journalisation systeme..."
                loadproc /usr/sbin/syslogd -m 0

                echo -n "Demarrage du demon de journalisation du noyau..."
                loadproc /usr/sbin/klogd
                ;;

        stop)
                echo -n "Arret du demon de journalisation du noyau..."
                killproc klogd

                echo -n "Arret du demon de journalisation systeme..."
                killproc syslogd
                ;;

        reload)
        echo "Rechargement de la configuration du demon de journalisation systeme..."
                reloadproc syslogd 1
                ;;

        restart)
                $0 stop
                /usr/bin/sleep 1
                $0 start
                ;;

        status)
                statusproc /usr/sbin/syslogd
                statusproc /usr/sbin/klogd
                ;;

        *)
                echo "Usage: $0 {start|stop|reload|restart|status}"
                exit 1
        ;;

esac

# Fin de /etc/init.d/sysklogd
EOF


Créer le script modèle

Un nouveau fichier /etc/init.d/template est créé, contenant ce qui suit:



cat > template << "EOF"
#!/bin/sh
# Debut de /etc/init.d/

#
# Inclure les fonctions declarees dans le fichier /etc/init.d/functions 
#

source /etc/init.d/functions

case "$1" in
        start)
                echo -n "Lancement de ..."
                loadproc
                ;;

        stop)
                echo -n "Arret de ..."
                killproc
                ;;

        reload)
                echo -n "Rechargement de ..."
                reloadproc
                ;;

        restart)
                $0 stop
                /usr/bin/sleep 1
                $0 start
                ;;

        status)
                statusproc
                ;;

        *)
                echo "Usage: $0 {start|stop|reload|restart|status}"
                exit 1
        ;;

esac

# Fin de /etc/init.d/
EOF


Positionner les liens symboliques et les permissions

Ces fichiers reçoivent les permissions appropriées et les liens symboliques nécessaires sont créés en exécutant les commandes suivantes. Si un utilisateur n'a pas créé les scripts loadkeys et setclock, il doit veiller à ne pas les taper dans les commandes ci-dessous.



cd /etc/init.d &&
chmod 754 rc rcS functions checkfs halt loadkeys mountfs reboot &&
chmod 754 sendsignals setclock sysklogd template &&
cd ../rc0.d &&
ln -s ../init.d/sysklogd K900sysklogd &&
ln -s ../init.d/sendsignals S800sendsignals &&
ln -s ../init.d/mountfs S900mountfs &&
ln -s ../init.d/halt S999halt &&
cd ../rc6.d &&
ln -s ../init.d/sysklogd K900sysklogd &&
ln -s ../init.d/sendsignals S800sendsignals &&
ln -s ../init.d/mountfs S900mountfs &&
ln -s ../init.d/reboot S999reboot &&
cd ../rcS.d &&
ln -s ../init.d/checkfs S200checkfs &&
ln -s ../init.d/mountfs S300mountfs &&
ln -s ../init.d/setclock S400setclock &&
ln -s ../init.d/loadkeys S500loadkeys &&
cd ../rc1.d &&
ln -s ../init.d/sysklogd K900sysklogd &&
cd ../rc2.d &&
ln -s ../init.d/sysklogd S100sysklogd &&
cd ../rc3.d &&
ln -s ../init.d/sysklogd S100sysklogd &&
cd ../rc4.d &&
ln -s ../init.d/sysklogd S100sysklogd &&
cd ../rc5.d &&
ln -s ../init.d/sysklogd S100sysklogd


Créer le fichier /etc/fstab

On utilise le fichier /etc/fstab pour permettre à certains programmes de déterminer où certaines partitions sont supposées avoir été montées par défaut. Un nouveau fichier /etc/fstab est créé, contenant ce qui suit:



cat > /etc/fstab << "EOF"
# Debut de /etc/fstab

/dev/<designation de la partition LFS> / <type de fs> defaults 1 1
/dev/<designation de la partition d'echange> swap swap defaults 0 0
proc /proc proc defaults 0 0

# Fin de /etc/fstab
EOF

<designation de la partition LFS>, <designation de la partition d'echange> et <type de fs> doivent être remplacés par les valeurs appropriées (/dev/hda2, /dev/hda5 et reiserfs, par exemple).


Chapitre 8. Rendre amorçable le système LFS

Introduction

Ce chapitre va rendre LFS amorçable. Il traite de la construction d'un nouveau noyau pour notre nouveau système LFS, et de l'ajout des entrées adéquates à LILO pour que le système LFS puisse être démarré depuis l'invite LILO:.


Installer un noyau

Construire le noyau requiert plusieurs étapes: le configurer et le compiler. Il y a plusieurs méthodes pour configurer le noyau. Si vous n'aimez pas la façon de faire de ce livre, lisez le fichier README fourni avec l'arborescence des sources du noyau, et cherchez quelles autres options existent. Les commandes suivantes sont lancées pour construire le noyau:



cd /usr/src/linux &&
make mrproper &&
make menuconfig &&
make dep &&
make bzImage &&
make modules &&
make modules_install &&
cp arch/i386/boot/bzImage /boot/lfskernel &&
cp System.map /boot

Note: Le chemin arch/i386/boot/bzImage peut différer selon les plateformes.


Rendre le système LFS amorçable

Pour être en mesure de démarrer le système LFS, nous devons mettre à jour notre chargeur d'amorçage. Nous supposerons que votre système hôte utilise Lilo (car c'est le chargeur d'amorçage le plus utilisé pour le moment).

Nous ne lancerons pas le programme lilo dans chroot. Lancer lilo dans chroot peut avoir des effets de bord dévastateurs, rendant votre MBR inutilisable et nécessitant que vous ayez une disquette de démarrage pour pouvoir démarrer un système Linux quelconque (soit le système hôte, soit LFS).

En premier lieu, nous sortirons de chroot et copierons le fichier noyau de LFS dans le système hôte:



logout
cp $LFS/boot/lfskernel /boot

L'étape suivante est d'ajouter une entrée à /etc/lilo.conf, pour que nous puissions sélectionner LFS en démarrant l'ordinateur:



cat >> /etc/lilo.conf << "EOF"
image=/boot/lfskernel
        label=lfs
        root=<partition>
        read-only
EOF

<partition> doit être remplacé par la désignation de votre partition LFS.

Maintenant, mettez à jour le chargeur d'amorçage en lançant:



/sbin/lilo

La dernière étape est de synchroniser les fichiers de configuration de lilo du système hôte avec ceux du système LFS:



cp /etc/lilo.conf $LFS/etc &&
cp <images du noyau> $LFS/boot

Pour déterminer quels fichiers d'images du noyau sont utilisées, regardez dans le fichier /etc/lilo.conf les lignes commençant par image=. Si votre système hôte a des fichiers de noyau ailleurs que dans le répertoire /boot, assurez-vous de mettre à jour les chemins dans le fichier $LFS/etc/lilo.conf, pour qu'il les recherche dans le répertoire /boot.

Dès que nous aurons démarré dans LFS, nous pourrons lancer /sbin/lilo depuis le système LFS, pour avoir la dernière version de Lilo dans le MBR.


Redémarrer le système

Maintenant que tous les logiciels ont été installés, que les scripts de démarrage ont été créés, il est temps de redémarrer l'ordinateur. Lancez une commande comme /sbin/shutdown -r now ou /sbin/reboot pour redémarrer votre système et, à l'invite LILO:, dites-lui bien de démarrer lfs.

Lors du premier démarrage, vous aurez quelques erreurs de syslogd et klogd. Ces erreurs surviennent parce que nous n'avons pas encore paramétré le réseau. Ceci sera fait dans le prochain chapitre. Ne vous inquiétez donc pas de ces erreurs pour le moment.

Comme cela a déjà été mentionné, la configuration du réseau reste à faire. Après avoir redémarré et terminé le chapitre suivant de ce livre, le système LFS sera complètement prêt pour son utilisation, et vous pourrez commencer à y ajouter vos propres logiciels.


Chapitre 9. Configurer le réseau de base

Introduction

Ce chapitre va configurer un réseau de base. Bien que le système ne soit pas forcément connecté à un réseau, les logiciels Linux utilisent cependant des fonctions de réseau. Nous allons installer au moins le périphérique de boucle local, et une carte réseau si cela est applicable. Les scripts de démarrage appropriés seront également créés pour que le réseau soit activé lors du démarrage.


Installer Netkit-base

Installation de Netkit-base

Installez Netkit-base en lançant les commandes suivantes:


        
./configure &&
make &&
make install &&
cd etc.sample &&
cp services protocols /etc

Il y a d'autres fichiers dans le répertoire etc.sample, qui peuvent intéresser l'utilisateur.


Contenu

Le package Netkit-base contient les programmes inetd et ping.


Description

inetd

inetd est la mère de tous les démons. Elle écoute les connexions, et transfère l'appel au démon approprié.


ping

ping envoie des paquets ICMP ECHO_REQUETS à un hôte et détermine son temps de réponse.


Installer Net-tools

Installation de Net-tools

La variable CFLAGS du fichier Makefile doit être modifiée si des optimisations du compilateur doivent être ajoutées.

Installez Net-tools en lançant les commandes suivantes:



make &&
make install


Contenu

Le package Net-tools contient les programmes arp, hostname, ifconfig, netstat, plipconfig, rarp, route, et slattach.


Description

arp

arp est utilisé pour manipuler le cache ARP du noyau, en général pour ajouter ou supprimer une entrée, ou pour lister le cache ARP.


hostname

hostname, avec ses liens symboliques domainname, dnsdomainname, nisdomainname, ypdomainname et nodename, est utilisé pour positionner ou montrer le nom d'hôte du système (ou autre, selon le lien symbolique qui est utilisé).


ifconfig

La commande ifconfig est la commande générale utilisée pour configurer les interfaces de réseau.


netstat

netstat est un outil multi-fonctions, utilisé pour afficher les connexions de réseau, les tables de routage, les statistiques d'interface, les connexions de masquage, et l'appartenance à des multi-diffusions.


plipconfig

plipconfig est utilisé pour régler finement les paramètres du périphérique PLIP, dans l'espoir de le rendre plus rapide.


rarp

Similairement au programme arp, le programme rarp manipule la table RARP du système.


route

route est un utilitaire général utilisé pour manipuler la table de routage IP.


slattach

slattach attache une interface réseau à une ligne série, càd met une ligne de terminal normale dans un des différents modes "réseau".


Créer le script de démarrage /etc/init.d/localnet

Un nouveau fichier /etc/init.d/localnet est créé, contenant ce qui suit:



cat > /etc/init.d/localnet << "EOF"
#!/bin/sh 
# Debut de /etc/init.d/localnet

#
# Inclure les fonctions declarees dans le fichier /etc/init.d/functions
# et les variables du fichier /etc.sysconfig/network.


source /etc/init.d/functions
source /etc/sysconfig/network

case "$1" in
        start)
                echo -n "Lancement de l'interface de boucle (loopback)..."
                /sbin/ifconfig lo 127.0.0.1
                evaluate_retval

                echo -n "Configuration de hostname..."
                /bin/hostname $HOSTNAME
                evaluate_retval
                ;;

        stop)
                echo -n "Arret de l'interface de boucle (loopback)..."
                /sbin/ifconfig lo down
                evaluate_retval
                ;;

        restart)
                $0 stop
                sleep 1
                $0 start
                ;;
        *)
                echo "Usage: $0: {start|stop|restart}"
                exit 1
                ;;
esac

# Fin de /etc/init.d/localnet
EOF


Configurer les permissions et le lien symbolique

Les commandes suivantes positionnent les permissions et créent le lien symbolique nécessaire:



cd /etc/init.d &&
chmod 754 localnet &&
cd ../rcS.d &&
ln -s ../init.d/localnet S100localnet


Créer le fichier /etc/sysconfig/network

Un nouveau fichier /etc/sysconfig/network est créé, et le nom de l'hôte y est mis en lançant:



echo "HOSTNAME=lfs" > /etc/sysconfig/network

" lfs"  doit être remplacé par le nom d'appel de l'ordinateur. Un utilisateur ne devrait pas entrer le FQDN (Nom de Domaine Entièrement Qualifié) ici. Cette information sera mise dans le fichier /etc/hosts ultérieurement.


Créer le fichier /etc/hosts

Si une carte réseau doit être configurée, un utilisateur doit choisir une adresse IP, un FQDN et d'éventuels alias à utiliser dans le fichier /etc/hosts. Un exemple est:



<mon-IP> hote.domaine.org alias

Il faut s'assurer que l'adresse IP appartient bien à l'espace d'adressage IP du réseau privé. Les choix valides sont:



Class Réseaux
A     10.0.0.0
B     172.16.0.0 à 172.31.0.0
C     192.168.0.0 à 192.168.255.0

Une adresse IP correcte peut être 192.168.1.1. Un FQDN valide pour cette adresse IP peut être www.linuxfromscratch.org.

Si un utilisateur ne compte pas utiliser une carte réseau, il doit quand même avoir un FQDN. Ceci est nécessaire pour que des programmes comme Sendmail fonctionnent correctement (en fait, Sendmail ne démarrera pas s'il ne peut pas déterminer le FQDN).

Si aucune carte réseau ne doit être configurée, un nouveau fichier /etc/hosts est créé en lançant:



cat > /etc/hosts << "EOF"
# Debut de /etc/hosts (version sans carte réseau)

127.0.0.1 www.mondomaine.com <valeur de HOSTNAME> localhost

# Fin de /etc/hosts (version sans carte réseau)
EOF

Si une carte réseau doit être configurée, un nouveau fichier /etc/hosts est créé, contenant:



cat > /etc/hosts << "EOF"
# Debut de /etc/hosts (version avec carte réseau)

127.0.0.1 localhost.localdomain localhost
192.168.1.1 www.mondomaine.org <valeur de HOSTNAME>

# Fin de /etc/hosts (version avec carte réseau)
EOF

Bien sûr, les valeurs 192.168.1.1 et www.mondomaine.org doivent être modifiées selon le choix de l'utilisateur (ou ce qui est imposé si une adresse IP est assignée par un administrateur réseau/système et que cette machine est prévue pour être connectée à ce réseau).


Créer le script /etc/init.d/ethnet

Cette partie concerne uniquement le cas où un utilisateur veut configurer une carte réseau. Autrement, elle peut être sautée.

Un nouveau fichier /etc/init.d/ethnet est créé, contenant ce qui suit:



cat > /etc/init.d/ethnet << "EOF"
#!/bin/sh
# Debut de /etc/init.d/ethnet
#
# Script principal par Gerard Beekmans - gerard@linuxfromscratch.org
# Verification de GATEWAY par Jean-François Le Ray - jfleray@club-internet.fr
#

#
# Inclure les fonctions declarees dans le fichier /etc/init.d/functions
# et les variables du fichier /etc/sysconfig/network.
#

source /etc/init.d/functions
source /etc/sysconfig/network

case "$1" in
        start)

#
# Parcourir tous les fichiers de configuration de la carte réseau
#

        for interface in $(ls /etc/sysconfig/network-scripts/ifcfg* | \
            grep -v ifcfg-lo)
        do
#
# Charger les variables depuis ce fichier
#

            source $interface
#
# Si la variable ONBOOT est positionnee a yes, traiter ce fichier et
# demarrer l'interface
#

            if [ "$ONBOOT" == yes ]
            then
                echo -n "Lancement de l'interface $DEVICE..."
                /sbin/ifconfig $DEVICE $IP broadcast $BROADCAST \
                    netmask $NETMASK
                evaluate_retval
            fi
        done

#
# Si le fichier /etc/sysconfig/network contient une variable GATEWAY,
# positionnement de la passerelle.
#

            if [ "$GATEWAY" != "" ]; then
                echo -n "Configuration du routage pour l'interface eth0.."
                /sbin/route add default gw $GATEWAY metric 1
                evaluate_retval
            fi
                ;;

        stop)

#
# Parcours de tous les fichiers de configuration de la carte reseau
#

        for interface in $(ls /etc/sysconfig/network-scripts/ifcfg* | \
            grep -v ifcfg-lo)
        do
#
# Charger les variables depuis ce fichier
#

            source $interface
#
# Si la variable ONBOOT est positionnee a yes, traiter ce fichier et
# arreter l'interface
#

            if [ $ONBOOT == yes ]
            then
                echo -n "Arret de l'interface $DEVICE..."
                /sbin/ifconfig $DEVICE down
                evaluate_retval
            fi
        done
                ;;

        restart)
                $0 stop
                sleep 1
                $0 start
                ;;
        *)
                echo "Usage: $0 {start|stop|restart}"
                exit 1
                ;;
esac

# Fin de /etc/init.d/ethnet
EOF


Ajouter la passerelle par défaut à /etc/sysconfig/network

La commande suivante permet de configurer une passerelle par défaut, si besoin est:



cat >> /etc/sysconfig/network << "EOF"
GATEWAY=192.168.1.2
EOF

Modifiez GATEWAY pour le faire correspondre à votre configuration du réseau.


Créer les fichiers de configuration NIC

Les fichiers du répertoire déterminent quelles interfaces sont lancées ou arrêtées par le script ethnet. Ce répertoire devrait contenir des fichiers de la forme ifcfg-x, où x est un numéro d'identification (ou quelque autre dénomination au gré de l'utilisateur).

Le répertoire network-scripts est tout d'abord créé en lançant:



mkdir /etc/sysconfig/network-scripts

Maintenant, de nouveaux fichiers sont créés dans ce répertoire, contenant ce qui suit. Ceci crée un fichier d'exemple ifcfg-eth0:



cat > /etc/sysconfig/network-scripts/ifcfg-eth0 << EOF
ONBOOT=yes
DEVICE=eth0
IP=192.168.1.1
NETMASK=255.255.255.0
BROADCAST=192.168.1.255
EOF

Bien entendu, les valeurs de ces quatre variables doivent être modifiées dans chaque fichier, pour correspondre à la bonne configuration. En général, NETMASK et BROADCAST restent tels quels, et seules les variables DEVICE et IP changent pour chaque interface réseau. Si la variable ONBOOT est positionnée à yes, le script ethnet la lancera lors du démarrage du système. Si elle est positionnée à une autre valeur que yes, le fichier sera ignoré par le script ethnet, et donc l'interface ne sera pas lancée.


Configurer les permissions et les liens symboliques

Les commandes suivantes positionnent les permissions et créent les liens symboliques nécessaires:



cd /etc/init.d &&
chmod 754 ethnet &&
cd ../rc3.d &&
ln -s ../init.d/ethnet S200ethnet &&
cd ../rc4.d &&
ln -s ../init.d/ethnet S200ethnet &&
cd ../rc5.d &&
ln -s ../init.d/ethnet S200ethnet


Chapitre 10. Fin

Fin

Bravo ! L'installation de votre système LFS est terminée. Cela vous a peut être pris du temps, mais cela en valait la peine. Nous vous souhaitons beaucoup de plaisir avec votre tout nouveau système Linux personnalisé.

Si vous prévoyez de vous mettre à jour avec une nouvelle version de LFS dans le futur, ce serait une bonne idée de créer le fichier /etc/lfs-3.0-pre2. Grâce à ce fichier, il vous est très facile (et pour nous aussi, si vous avez besoin d'assistance à un moment donné) de savoir quelle version de LFS est installée sur votre système. Un fichier de taille nulle, que vous pouvez créer par touch /etc/lfs-3.0-pre2, suffit.

N'oubliez pas qu'il y a plusieurs listes de distribution auxquelles vous pouvez souscrire, si vous avez besoin d'assistance, de conseils, etc. Référez-vous au chapitre Chapitre 1 - Listes de diffusion pour de plus amples informations.

Encore une fois, nous vous remercions d'utiliser le livre LFS et espérons que vous l'avez trouvé utile et qu'il en valait la peine.

III. Troisième Partie - Annexes


Annexe A. Description des packages

Introduction

Cet appendice décrit les aspects suivants de chaque package installé dans ce livre:

  • Le contenu de chaque package

  • La fonction de chaque programme d'un package

Les packages sont listés dans le même ordre que celui de leur installation dans les chapitres 5 (systèmes Intel) ou 11 (systèmes PPC).

La plupart des informations sur ces packages (surtout leur description) provient des pages man de ces packages. Je ne vais pas afficher toute la page de man, mais juste les éléments vitaux pour pouvoir comprendre ce que fait un programme. Pour connaître tous les détails sur un programme, je vous conseille de commencer par lire la page de man complètement, en plus de cet appendice.

Certains packages sont documentés plus en profondeur que d'autres. Ceci est dû au fait que je commence à mieux connaître certains packages que d'autres. Si quelque chose est à ajouter aux descriptions qui suivent, n'hésitez pas à m'envoyer un mail. Cette liste est prévue pour contenir une description poussée de chaque package installé, mais je ne peux faire ceci seul. J'ai reçu de l'aide de plusieurs personnes, mais une aide supplémentaire est encore nécessaire.

Remarquez bien que, actuellement, seul ce que fait un package est décrit, et non pas pourquoi vous avez besoin de l'installer. Ceci sera ajouté ultérieurement.


Glibc

Contenu

Le package Glibc contient la bibliothèque GNU C.


Description

La bibliothèque C est un ensemble de fonctions couramment utilisées dans les programmes. Ainsi, un programmeur n'a pas besoin de créer ses propres fonctions pour chaque tâche de base. Les opérations les plus courantes comme écrire une ligne à l'écran sont déjà présentes et à la disposition du programmeur.

La bibliothèque C (comme, actuellement, presque toutes les bibliothèques) est fournie en deux versions: dynamique et statique. En bref, quand un programme utilise une bibliothèque C statique, le code de la bibliothèque C est copié dans le fichier exécutable. Quand un programme utilise une bibliothèque dynamique, cet exécutable ne contiendra pas le code de la bibliothèque C, mais simplement une routine qui chargera les fonctions depuis la bibliothèque au moment de l'exécution du programme. Cela signifie une réduction significative de la taille du fichier du programme. La documentation fournie avec la bibliothèque C décrit cela en détail, car cela est trop compliqué à expliquer ici en une ou deux lignes.


Noyau Linux

Contenu

Le package noyau Linux contient le noyau de Linux.


Description

Le noyau de Linux est au cœur de chaque système Linux. C'est lui qui fait tourner Linux. Quand vous allumez votre ordinateur et démarrez un système Linux, la toute première partie de logiciel Linux qui est chargée est le noyau. Le noyau initialise les composants matériels du système comme les ports série, les ports parallèles, les cartes son, les cartes réseau, les contrôleurs IDE, les contrôleurs SCSI et beaucoup d'autres choses. En bref, le noyau rend le matériel disponible pour que le logiciel puisse fonctionner.


Ed

Contenu

Le package Ed contient le programme ed.


Description

ed est un éditeur de texte par ligne. Il est utilisé pour créer, afficher, modifier et réaliser d'autres manipulations sur les fichiers texte.


Patch

Contenu

Le package Patch contient le programme patch.


Description

Le programme patch modifie un fichier en accord avec un fichier patch. Un fichier patch est, en général, une liste créée par le programme diff, qui contient des instructions sur la manière dont un fichier original doit être modifié. patch est très utilisé pour les corrections de code source, car il fait économiser du temps et de la place. Imaginez un pacakge d'une taille de 1Mo. Dans la version suivante de ce package ne sont modifiés que deux des fichiers de la première version. Il peut être mis à disposition comme un package entièrement nouveau de 1Mo, ou seulement comme un fichier patch de 1ko qui mettra à jour la première version pour la rendre identique à la seconde. Ainsi, si la première version a déjà été téléchargée, un fichier patch évite un second téléchargement important.


GCC

Contenu

Le package GCC contient les compilateurs, les préprocesseurs et la bibliothèque GNU C++.


Description

Compilateur

Un compilateur traduit le code source sous format texte en un format que l'ordinateur peut comprendre. Après qu'un fichier de code source a été compilé en un fichier objet, un éditeur de liens crée un fichier exécutable à partir d'un ou plusieurs de ces fichiers objet générés par le compilateur.


Préprocesseur

Un préprocesseur pré-traduit un fichier source, faisant par exemple l'inclusion des contenus des fichiers d'en-tête dans le fichier source. Il est conseillé de ne pas faire cela manuellement, pour gagner du temps. On insère simplement une ligne comme #include <nom_fichier>. Le préprocesseur insère le contenu de ce fichier dans le fichier source. C'est une des choses que fait le préprocesseur.


Bibliothèque C++

La bibliothèque C++ est utilisée par les programmes C++. La bibliothèque C++ contient les fonctions qui sont couramment utilisées dans les programmes C++. Ainsi, le programmeur n'a pas à réécrire certaines fonctions (comme afficher une chaîne de caractères à l'écran) à chaque fois qu'il crée un programme.


Bison

Contenu

Le package Bison contient le programme bison.


Description

Bison est un générateur de parseur, en remplacement de YACC. YACC signifie Encore un Autre Compilateur de Compilateurs. Qu'est-ce donc que Bison? C'est un programme qui génère un programme qui analyse la structure d'un fichier texte. Au lieu d'écrire le programme, un utilisateur spécifie comment les choses doivent être reliées et, avec ces règles, un programme est construit pour analyser le fichier texte.

Il y a de nombreux exemples où une structuration est nécessaire et l'un d'eux est la calculatrice.

Soit la chaîne:


        1 + 2 * 3

Un humain peut facilement arriver au résultat de 7. Pourquoi? A cause de sa structure. Notre cerveau sait comment interpréter la chaîne. L'ordinateur ne le sait pas, et Bison est un outil pour l'aider à comprendre cela, en présentant la chaîne sous la forme suivante au compilateur:



            +
           / \
          *   1
         / \
        2   3

En commençant en bas de l'arbre, et en arrivant aux nombres 2 et 3, qui sont liés par un symbole de multiplication, l'ordinateur multiplie 2 par 3. Le résultat de cette multiplication est mémorisé et la prochaine chose que l'ordinateur voit est le résultat de 2*3 et le nombre 1 qui sont reliés par le symbole d'addition. L'ajout de 1 au résultat précédent donne 7. En calcul, les opérations les plus complexes peuvent être exprimées sous ce format d'arbre, et l'ordinateur commence simplement en bas, et travaille en cheminant vers le haut, pour arriver à la réponse correcte. Bien entendu, Bison n'est pas uniquement utilisé pour les calculatrices.


Mawk

Contenu

Le paquet Mawk contient le programme mawk.


Description

mawk

mawk est un interpréteur pour le langage de programmation AWK. Le langage AWK est utile pour manipuler des fichiers de données, retrouver et travailler sur du texte, et pour prototyper et expérimenter des algorithmes.


Findutils

Contenu

Le package Findutils contient les programmes find, locate, updatedb et xargs.


Description

find

Le programme find recherche, dans une hiérarchie de répertoires, les fichiers qui correspondent à un certain critère. Si aucun critère n'est fourni, il liste tous les fichiers dans le répertoire courant et ses sous-répertoires.


locate

locate scrute une base de données qui contient tous les fichiers et répertoires d'un système de fichiers. Ce programme liste les fichiers et répertoires de cette base de données qui vérifient un certain critère. Si un utilisateur recherche un fichier, ce programme va scruter la base de données et lui dire exactement où sont situés les fichiers qu'il a demandés. Cela n'a de sens que si la base de données de localisation est correctement mise à jour, autrement ce programme vous fournira des informations périmées.


updatedb

Le programme updatedb met à jour la base de données de localisation. Il scrute tout le système de fichiers (y compris les autres systèmes de fichiers actuellement montés, sauf si vous lui spécifiez de ne pas le faire), et enregistre chaque répertoire et fichier qu'il trouve dans la base de données qui sera utilisée par le programme locate, qui retrouve ces informations. C'est une bonne habitude que de mettre à jour cette base de données quotidiennement, pour qu'elle soit à jour au moment ou ce sera nécessaire.


xargs

La commande xargs applique une commande à une liste de fichiers. Si vous devez exécuter la même commande sur de multiples fichiers, vous pouvez créer un fichier qui contient tous ces fichiers (un par ligne) et utiliser xargs pour lancer une commande sur la liste.


Ncurses

Contenu

Le package Ncurses contient les bibliothèques ncurses, panel, menu et form. Il contient également les programmes tic, infocmp, clear, tput, toe et tset.


Description

Les bibliothèques

Les bibliothèques qui constituent la bibliothèque Ncurses sont utilisées pour afficher du texte (souvent de manière fantaisiste) à l'écran. Un exemple d'utilisation de ncurses se trouve dans le processus " make menuconfig"  du noyau. Les bibliothèques contiennent les routines pour créer des panneaux, des menus, des formulaires, et des routines générales d'affichage de texte.


tic

tic est le compilateur de description des entrées de terminfo. Le programme traduit un fichier terminfo du format source en format binaire utilisable avec les routines de la bibliothèque ncurses. Les fichiers terminfo contiennent des informations sur les capacités d'un terminal.


infocmp

Le programme infocmp peut être utilisé pour comparer une entrée binaire de terminfo avec d'autres, ré-écrire une description terminfo pour tenir compte du champ use= de terminfo, ou afficher une description terminfo du fichier binaire (term) sous différents formats (à l'opposé de ce que fait tic).


clear

Le programme clear efface l'écran, si cela est possible. Il regarde dans l'environnement du type de terminal, puis dans la base de données terminfo, pour trouver comment effacer l'écran.


tput

Le programme tput utilise la base de données terminfo pour construire les valeurs des capacités dépendant du terminal et les informations disponibles pour le shell, pour initialiser ou réinitialiser le terminal, ou renvoyer le nom long du type de terminal requis.


toe

Le programme toe liste tous les types de terminaux disponibles par leur nom primaire, avec leur description.


tset

Le programme tset initialise les terminaux pour qu'ils puissent être utilisés, mais il n'est plus beaucoup utilisé désormais. Il est fourni pour la compatibilité avec BSD 4.4.


Less

Contenu

Le package Less contient le programme less.


Description

Le programme less est un paginateur de fichier (ou un afficheur de texte). Il affiche le contenu d'un fichier avec la possibilité de défilement. Less est une évolution du paginateur habituel appelé " more" . Less permet le défilement arrière dans les fichiers et n'a pas besoin de lire tout le fichier quand il démarre, ce qui le rend plus rapide quand vous lisez de gros fichiers.


Groff

Contenu

Le package Groff contient les programmes addftinfo, afmtodit, eqn, grodvi, groff, grog, grohtml, grolj4, grops, grotty, hpftodit, indxbib, lkbib, lookbib, neqn, nroff, pfbtops, pic, psbb, refer, soelim, tbl, tfmtodit et troff.


Description

addftinfo

addftinfo lit un fichier de fonte troff et y ajoute des informations supplémentaires de métrique de fonte, afin qu'il soit utilisable par le système groff.


afmtodit

afmtodit crée un fichier de fonte pour être utilisé par groff et grops.


eqn

eqn compile les descriptions d'équations intégrées dans des fichiers d'entrée troff en commandes pouvant être comprises par troff.


grodvi

grodvi est un pilote pour groff qui produit un format dvi TeX.


groff

groff est un frontal pour le système de formatage de document groff. Normalement, il lance le programme troff et un post-processeur approprié au périphérique choisi.


grog

grog lit des fichiers et tente de trouver lesquelles des options groff -e, -man, -me, -mn, -ms, -p, -s et -t sont nécessaires pour imprimer les fichiers, et affiche la commande groff incluant ces options sur la sortie standard.


grohtml

grohtml traduit la sortie de troff GNU en html.


grolj4

grolj4 est un pilote pour groff qui produit une sortie en format PCL5 utilisable par une imprimante HP Laserjet 4.


grops

grops traduit la sortie de troff GNU en Postscript.


grotty

grotty traduit la sortie de troff GNU en une forme convenable pour les périphériques de type machine à écrire.


hpftodit

hpftodit crée un fichier de fonte destiné à être utilisé avec groff -Tlj4 à partir d'un fichier de métrique de fonte spécifique à HP.


indxbib

indxbib crée un index de permutation pour les bases de données bibliographiques à partir du fichier spécifié, destiné à être utilisé par refer, lookbib et lkbib.


lkbib

lkbib recherche dans les bases de données bibliographiques les références contenant les clés spécifiées, et affiche les références trouvées sur la sortie standard.


lookbib

lookbib affiche une invite sur la sortie d'erreur standard (sauf si l'entrée standard n'est pas un terminal), lit une ligne depuis l'entrée standard contenant un ensemble de mots-clés, recherche dans les bases de données bibliographiques dans un fichier spécifié les références contenant ces mots-clés, affiche les références trouvées sur la sortie standard, et répète le processus jusqu'à la fin de l'entrée.


neqn

Ce qu'est neqn ni ce qu'il fait n'est actuellement connu.


nroff

Le script nroff émule la commande nroff en utilisant groff.


pfbtops

pfbtops traduit une fonte PostScript de format .pfb en ASCII.


pic

pic compile les descriptions d'images incluses dans des fichiers d'entrée troff ou TeX en commandes qui peuvent être comprises par TeX ou troff.


psbb

psbb lit un fichier qui doit être un document Postscript conforme aux conventions de Structuration des Documents, et cherche un commentaire %%BoundingBox.


refer

refer copie le contenu d'un fichier sur la sortie standard, sauf que les lignes entre .[ et .] sont interprétées comme des citations, et que les lignes entre .R1 et .R2 sont interprétées comme des commandes sur la manière de traiter les citations.


soelim

soelim lit les fichiers et remplace les lignes de la forme fichier .so par le contenu de fichier.


tbl

tbl compile les descriptions de tables intégrées dans les fichiers d'entrée troff en commandes qui peuvent être comprises par troff.


tfmtodit

tfmtodit crée un fichier de fonte à utiliser avec groff -Tdvi.


troff

troff est en grande partie compatible avec le troff Unix. En général, il doit être invoqué avec la commande groff, qui lancera aussi les préprocesseurs et les post-processeurs dans l'ordre approprié, et avec les options qui conviennent.


Man

Contenu

Le package Man contient les programmes man, apropos, whatis et makewhatis.


Description

man

man formate et affiche les pages de manuel en ligne.


apropos

apropos recherche dans un ensemble de fichiers de base de données contenant des descriptions brèves des commandes système, en fonction de mots-clés, et affiche le résultat sur la sortie standard.


whatis

whatis recherche dans un ensemble de fichiers de base de données contenant des descriptions brèves de commandes système, en fonction de mots-clés, et affiche le résultat sur la sortie standard. Seules les correspondances de mots complets sont affichées.


makewhatis

makewhatis lit toutes les pages de manuel contenues dans les sections de manpath fournies, ou les pages préformatées contenues dans les sections de catpath données. Pour chaque page, il écrit une ligne dans la base de données whatis; chaque ligne contient le nom de la page et une brève description, séparés par un tiret. La description est extraite du contenu de la section NAME de la page du manuel.


Perl

Contenu

Le package Perl contient Perl - Extraction et Rapport Pratiques


Description

Perl combine les capacités et les fonctionnalités de C, awk, sed et sh dans un puissant langage de programmation.


M4

Contenu

Le package M4 contient le processeur M4.


Description

M4 est un processeur de macro. Il copie l'entrée sur la sortie en développant les macros au fur et à mesure. Les macros sont soit prédéfinies, soit définies par l'utilisateur, et peuvent prendre un nombre quelconque d'arguments. En plus de développer les macros, m4 a des fonctions prédéfinies pour inclure des fichiers nommés, lancer des commandes UNIX, faire de l'arithmétique d'entiers, manipuler du texte de diverses façons, faire de la récursivité, etc. M4 peut être utilisé soit comme frontal d'un compilateur, ou comme processeur de macros à part.


Texinfo

Contenu

Le package Texinfo contient les programmes info, install-info, makeinfo, texi2dvi et texindex.


Description

info

Le programme info lit les documents Info, en général situés dans le répertoire /usr/doc/info. Les documents Info sont comme des pages de man(uel), mais ont tendance à aller plus en profondeur que la simple explication des options d'un programme.


install-info

Le programme install-info met à jour les entrées d'info. Quand le programme info est exécuté, une liste de sujets disponibles (c'est-à-dire les documents info disponibles) est affichée. Le programme install-info est utilisé pour tenir cette liste de sujets disponibles à jour. Si des fichiers d'info sont supprimés manuellement, il faut également supprimer le sujet dans le fichier d'index. Ce programme est utilisé dans ce but. Il fonctionne également, dans l'autre sens, quand des documents d'info sont ajoutés.


makeinfo

Le programme makeinfo traduit des documents source Texinfo en différents formats. Les formats disponibles sont: fichiers info, texte et HTML.


texi2dvi

Le programme texi2dvi affiche les documents Texinfo.


texindex

Le programme texindex est utilisé pour trier les fichiers d'index Texinfo.


Autoconf

Contenu

Le package Autoconf contient les programmes autoconf, autoheader, autoreconf, autoscan, autoupdate et ifnames.


Description

autoconf

autoconf est un outil pour produire des scripts shell qui configurent automatiquement les packages de code source logiciel pour les adapter à de nombreux systèmes UNIX. Les scripts de configuration produits par Autoconf sont indépendants d'Autoconf quand ils sont lancés; leurs utilisateurs n'ont donc pas besoin d'avoir Autoconf.


autoheader

Le programme autoheader peut créer un fichier modèle de commandes C #define à utiliser pour la configuration.


autoreconf

Si vous avez beaucoup de scripts générés par autoconf, le programme autoreconf peut vous faire gagner du temps. Il lance autoconf (et autoheader, si besoin) de façon répétée pour reconstruire les scripts de configuration Autoconf et les modèles d'en-tête de configuration dans l'arborescence rattachée au répertoire courant.


autoscan

Le programme autoscan peut vous aider à créer un fichier configure.in pour un package logiciel. autoscan scrute les fichiers sources dans une arborescence rattachée à un répertoire donné en argument de ligne de commande, ou le répertoire courant si aucun n'est spécifié. Il recherche les fichiers sources pour des problèmes habituels de portabilité et crée un fichier configure.scan qui est un préliminaire à configure.in pour ce package.


autoupdate

Le programme autoupdate met à jour un fichier configure.in qui appelle les macros Autoconf par leurs anciens noms, afin qu'il utilise les noms de macro actuels.


ifnames

ifnames peut servir lors de l'écriture d'un configure.in pour un package logiciel. Il affiche les identifiants que le package utilise déjà dans les conditions du préprocesseur C. Si un package a déjà été mis à jour pour une portabilité quelconque, ce programme peut vous aider à trouver ce que sa configuration doit vérifier. Il peut aider à remplir quelques trous dans un configure.in généré par autoscan.


Automake

Contenu

Le package Automake contient les programmes aclocal et automake.


Description

aclocal

Automake inclut un certain nombre de macros Autoconf qui peuvent être utilisées dans les packages; certaines d'entre elles sont requises par Automake, dans certains cas. Ces macros doivent être définies dans le fichier aclocal.m4; autrement, elles ne seront pas vues par autoconf.

Le programme aclocal va générer automatiquement les fichiers aclocal.m4, en fonction du contenu de configure.in. Ceci fournit un bon moyen d'obtenir des macros produites par Automake, sans avoir à rechercher ici ou là. De plus, le mécanisme aclocal peut être étendu pour pouvoir être utilisé par d'autres packages.


automake

Pour créer tous les fichiers Makefile.in d'un package, lancez le programme automake dans le répertoire racine de ce package, sans arguments. automake va chercher automatiquement chaque Makefile.am approprié (en parcourant configure.in) et générer le Makefile.in correspondant.


Bash

Contenu

Le package Bash contient le programme bash.


Description

bash est le SHell Bourne-Again, qui est un interpréteur de commandes couramment utilisé sur les systèmes Unix. bash est un programme qui lit l'entrée standard, c'est-à-dire le clavier. Un utilisateur tape quelque chose et le programme évalue ce qu'il a entré, et en fait quelque chose, comme lancer un programme.


Flex

Contenu

Le package Flex contient le programme flex.


Description

flex est un outil pour générer des programmes qui reconnaissent des motifs dans du texte. La reconnaissance de motifs est très utile dans de nombreuses applications. Un utilisateur définit les règles de recherche, et flex crée un programme qui recherche ces motifs. La raison pour laquelle les gens utilisent flex est qu'il est plus facile de définir des règles sur ce qu'il faut rechercher, que d'écrire un programme qui scrute le texte pour cela.


Binutils

Contenu

Le package Binutils contient les programmes gasp, gprof, ld, as, ar, nm, objcopy, objdump, ranlib, readelf, size, strings, strip, c++filt et addr2line.


Description

gasp

gasp est le préprocesseur de macros assembleur.


gprof

gprof affiche les données de profil sous forme de graphe d'appel.


ld

ld combine plusieurs fichiers objets et archives, modifie l'emplacement de leurs données et lie les références des symboles. Souvent, la dernière étape dans la construction d'un nouveau programme compilé à exécuter est un appel à ld.


as

as a d'abord été prévu pour assembler la sortie du compilateur GNU C gcc, pour qu'elle puisse être utilisée par le lieur ld.


ar

Le programme ar crée, modifie et extrait des données depuis des archives. Une archive est un simple fichier contenant un ensemble d'autres fichiers dans une structure qui permet de retrouver les fichiers individuels d'origine (appelés membres de l'archive).


nm

nm liste les symboles des fichiers objet.


objcopy

L'utilitaire objcopy copie le contenu d'un fichier objet dans un autre. objcopy utilise la bibliothèque GNU BFD pour lire et écrire dans les fichiers objet. Il peut écrire le fichier objet destination dans un format différent de celui du fichier objet source.


objdump

objdump affiche des informations sur un ou plusieurs fichiers objet. Les options déterminent quelles informations spécifiques sont à afficher. Ces informations sont essentiellement utiles pour les programmeurs qui travaillent sur des outils de compilation, à l'inverse des programmeurs qui veulent juste que leur programme compile et fonctionne.


ranlib

ranlib génère un index du contenu d'une archive, et le stocke dans l'archive. L'index liste chaque symbole défini par un membre d'une archive, qui est un fichier objet re-localisable.


readelf

readelf affiche des informations sur les binaires de type elf.


size

size liste les tailles des sections -- et la taille totale -- de chaque fichier objet objfile dans sa liste d'arguments. Par défaut, une ligne est générée en sortie pour chaque fichier objet ou chaque module dans l'archive.


strings

Pour chaque fichier donné, strings affiche les séquences de caractères imprimables qui ont au moins une longueur de quatre caractères (ou le nombre spécifié en option du programme) et sont suivies d'un caractère non imprimable. Par défaut, il affiche seulement les chaînes des parties initialisées et chargées des fichiers objet; pour les autres types de fichier, il affiche les chaînes de tout le fichier.

strings est essentiellement utilisé pour déterminer le contenu des fichiers non-texte.


strip

strip débarrasse les fichiers objet de tous les symboles, ou de certains en particuliers. La liste des fichiers objet peut inclure des archives. Au moins un fichier objet doit être fourni. strip modifie les fichiers fournis en argument, plutôt que d'écrire les copies modifiées sous d'autres noms.


c++filt

Le langage C++ fournit un mécanisme de surcharge, ce qui signifie que vous pouvez écrire plusieurs fonctions ayant le même nom (pourvu que chacune réclame des paramètres de types différents). Tous les noms de fonction C++ sont encodés dans un nom d'assemblage de bas niveau (ce processus est connu sous le nom de broyage). Le programme c++filt fait l'association inverse: il décode (dé-broie) les noms de bas niveau en noms de niveau utilisateur, pour que le lieur puisse prévenir un conflit entre ces fonctions surchargées.


addr2line

addr2line traduit les adresses d'un programme en noms de fichier et numéros de ligne. A partir d'une adresse et d'un exécutable, il utilise les informations de déboguage présentes dans l'exécutable pour trouver quel nom de fichier et quel numéro de ligne sont associés à une adresse donnée.


Bzip2

Contenu

Le package Bzip2 contient les programmes bzip2, bunzip2, bzcat et bzip2recover.


Description

bzip2

bzip2 compresse les fichiers avec l'algorithme de compression de texte par tri de blocs de Burrows-Wheeler, et le codage de Huffman. La compression est en général bien meilleure que celle obtenue par les compresseurs plus conventionnels basés sur LZ77/LZ78, et s'approche des performances de la famille PPM des compresseurs statistiques.


bunzip2

bunzip2 décompresse les fichiers qui ont été compressés avec bzip2.


bzcat

bzcat (ou bzip2 -dc) décompresse tous les fichiers spécifiés sur la sortie standard.


bzip2recover

bzip2recover restaure les données des fichiers bzip2 endommagés.


Diffutils

Contenu

Le package Diffutils contient les programmes cmp, diff, diff3 et sdiff.


Description

cmp et diff

cmp et diff comparent tous deux deux fichiers et montrent leurs différences. Ces deux programmes ont des options pour comparer des fichiers dans différentes situations.


diff3

La différence entre diff et diff3 est que diff compare deux fichiers, et diff3 en compare trois.


sdiff

sdiff fusionne deux fichiers et affiche interactivement le résultat.


E2fsprogs

Contenu

Le package e2fsprogs contient les programmes chattr, lsattr, uuidgen, badblocks, debugfs, dumpe2fs, e2fsck, e2label, fsck, fsck.ext2, mke2fs, mkfs.ext2, mklost+found et tune2fs.


Description

chattr

chattr modifie les attributs d'un fichier sur un système de fichier Linux ext2.


lsattr

lsattr liste les attributs d'un fichier sur un système de fichiers ext2.


uuidgen

Le programme uuidgen crée un nouvel identifiant universel unique (UUID) en utilisant la bibliothèque libuuid. Le nouvel UUID peut raisonnablement être considéré comme unique parmi tous les UUID créés sur le système local, et parmi les UUID créés sur d'autres systèmes, dans le passé ou le futur.


badblocks

badblocks est utilisé pour rechercher les secteurs défectueux sur un périphérique (en général une partition de disque).


debugfs

Le programme debugfs est un débogueur de système de fichiers. Il peut être utilisé pour examiner et modifier l'état d'un système de fichiers ext2.


dumpe2fs

dumpe2fs affiche le super-bloc et les informations de groupe de blocs pour le système de fichiers présent sur un périphérique spécifié.


e2fsck et fsck.ext2

e2fsck est utilisé pour vérifier un système de fichiers Linux ext2. fsck.ext2 fait la même chose que e2fsck.


e2label

e2label affiche ou modifie le nom de système de fichiers sur un système de fichiers ext2 situé sur le périphérique spécifié.


fsck

fsck est utilisé pour vérifier et éventuellement réparer un système de fichiers Linux.


mke2fs et mkfs.ext2

mke2fs est utilisé pour créer un système de fichiers Linux ext2 sur un périphérique (en général une partition de disque). mkfs.ext2 fait la même chose que mke2fs.


mklost+found

mklost+found est utilisé pour créer le répertoire lost+found dans le répertoire de travail courant d'un système de fichiers Linux ext2. mklost+found pré-alloue des blocs de disque pour le répertoire, pour le rendre utilisable par e2fsck.


tune2fs

tune2fs ajuste les paramètres d'optimisation de système de fichiers sur un système de fichiers Linux ext2.


File

Contenu

Le pacakge File contient le programme file.


Description

file teste chaque fichier spécifié pour essayer de le classer. Il y a trois sortes de tests, réalisés dans cet ordre: tests du système de fichiers, test des nombres magiques et test de langage. Le premier test qui réussit provoque l'affichage du type de fichier.


Fileutils

Contenu

Le package Fileutils contient les programmes chgrp, chmod, chown, cp, dd, df, dir, dircolors, du, install, ln, ls, mkdir, mkfifo, mknod, mv, rm, rmdir, sync, touch et vdir.


Description

chgrp

chgrp modifie le groupe d'appartenance de chaque fichier donné en lui affectant le groupe spécifié, qui peut être un nom de groupe ou un ID de groupe numérique.


chmod

chmod modifie les permissions de chaque fichier spécifié selon le mode donné, qui peut être soit une représentation symbolique des changements à effectuer, ou un nombre octal représentant le schéma de bits pour les nouvelles permissions.


chown

chown modifie l'utilisateur et/ou le groupe d'appartenance de chaque fichier spécifié.


cp

cp copie les fichiers d'un endroit dans un autre.


dd

dd copie un fichier (depuis l'entrée standard vers la sortie standard, par défaut) avec une taille de bloc choisie par l'utilisateur, en pouvant éventuellement y faire des conversions.


df

df affiche la quantité d'espace disque disponible sur le système de fichiers contenant chaque nom de fichier en argument. Si aucun nom de fichier n'est donné, l'espace disponible sur tous les systèmes de fichier actuellement montés est affiché.


ls, dir et vdir

dir et vdir sont des versions de ls avec différents formats de sortie par défaut. Ces programmes listent chaque fichier ou répertoire spécifié. Le contenu des répertoires est trié alphabétiquement. Pour ls, les fichiers sont listés par défaut en colonne, triés verticalement, si la sortie standard est un terminal; autrement, ils sont listés un par ligne. Pour dir, les fichiers sont listés par défaut en colonne, triés verticalement. Pour vdir, les fichiers sont listés par défaut en format long.


dircolors

dircolors affiche les commandes pour positionner la variable d'environnement LS_COLOR. La variable LS_COLOR est utilisée pour modifier le schéma de couleurs par défaut utilisé par ls et les utilitaires associés.


du

du affiche la quantité d'espace disque utilisée par chaque argument, et pour chaque sous-répertoire du répertoire en argument.


install

install copie les fichiers et positionne leurs permissions et, si possible, leur propriétaire et leur groupe.


ln

ln crée des liens physiques ou logiques (symboliques) entre fichiers.


mkdir

mkdir crée des répertoires avec un nom spécifié.


mkfifo

mkfifo crée un FIFO avec chaque nom spécifié.


mknod

mknod crée un FIFO, fichier spécial de type caractère ou bloc, avec le nom de fichier spécifié.


mv

mv déplace des fichiers d'un répertoire dans un autre, ou renomme des fichiers, selon les arguments qui lui sont passés.


rm

rm supprime des fichiers ou des répertoires.


rmdir

rmdir supprime des répertoires, s'ils sont vides.


sync

sync force l'écriture des blocs modifiés sur disque et met à jour le super-bloc.


touch

touch positionne les heures d'accès et de modification de chaque fichier spécifié à l'heure courant. Les fichiers qui n'existent pas sont créés vides.


Gettext

Contenu

Le pacakge gettext contient les programmes gettext, gettextize, msgcmp, msgcomm, msgfmt, msgmerge, msgunfmt et xgettext.


Description

gettext

Le package gettext est utilisé pour l'internationalisation (connue aussi sous le terme de i18n) et pour la localisation (connue aussi sous le terme de l10n). Les programmes peuvent être compilés avec le Support du Langage Natif (NLS) qui leur permet d'afficher les messages dans la langue natale des utilisateurs plutôt qu'en anglais, par défaut.


Grep

Contenu

Le package grep contient les programmes egrep, fgrep et grep.


Description

egrep

egrep affiche les lignes des fichiers qui vérifient une expression régulière étendue.


fgrep

fgrep affiche les lignes des fichiers qui vérifient une liste de chaînes fixes, séparées par des caractères de fin de ligne, l'une quelconque de ces chaînes devant correspondre.


grep

grep affiche les lignes des fichiers qui vérifient une expression régulière basique.


Gzip

Contenu

Le package Gzip contient les programmes compress, gunzip, gzexe, gzip, uncompress, zcat, zcmp, zdiff, zforece, zgrep, zmore et znew.


Description

gunzip

gunzip décompresse les fichiers qui ont été compressés avec gzip.


gzexe

gzexe permet de compresser des exécutables en les remplaçant, et de faire en sorte qu'ils se décompressent automatiquement et s'exécutent lorsqu'ils sont lancés (avec une dégradation des performances).


gzip

gzip réduit la taille des fichiers nommés en utilisant le codage de Lempel-Zip (LZ77).


zcat

zcat décompresse une liste de fichiers fournie en ligne de commande ou sur son entrée standard, et écrit les données décompressées sur la sortie standard.


zcmp

zcmp invoque le programme cmp sur des fichiers compressés.


zdiff

zdiff invoque le programme diff sur des fichiers compressés.


zforce

zforce force l'extension .gz sur tous les fichiers gzip, pour que gzip ne les compresse pas deux fois. Ceci peut être utile pour des fichiers dont les noms ont été tronqués après un transfert.


zgrep

zgrep invoque le programme grep sur des fichiers compressés.


zmore

zmore est un filtre qui permet d'examiner des fichiers texte simples ou compressés, écran par écran, sur un terminal (de la même manière que more).


znew

znew recompresse des fichiers du format .Z (compress) en format .gz (gzip).


Ld.so

Contenu

Du package Ld.so, nous n'utilisons que les pages man de ldconfig et ldd. Les binaires ldconfig et ldd eux-mêmes sont fournis avec Glibc.


Libtool

Contenu

Le package Libtool contient les programmes libtool et libtoolize. Il contient aussi la bibliothèque ltdl.


Description

libtool

libtool fournit des services généraux de support de construction des bibliothèques.


libtoolize

libtoolize fournit un moyen standard d'ajouter un support libtool à un package.


Bibliothèque ltdl

Libtool fournit une petite bibliothèque, appelée 'libltdl', qui a pour but de masquer les différentes difficultés liées à l'ouverture dynamique des bibliothèques aux programmeurs.


Bin86

Contenu

Le paquet Bin86 contient les programmes as86, as86_encap, ld86, objdump86, nm86 et size86.


Description

as86

as86 est un assembleur pour les processeurs 8086...80386.


as86_encap

as86_encap est un script shell pour appeler as86 et convertir le binaire créé en fichier C prog.v à inclure ou à lier avec des programmes comme les installeurs de bloc de démarrage.


ld86

ld86 comprend uniquement les fichiers objet construit par l'assembleur as86; il peut soit les lier en un exécutable I&D séparé ou impur.


objdump86

Pas de description disponible.


nm86

Pas de description disponible.


size86

Pas de description disponible.


Lilo

Contenu

Le package Lilo contient le programme lilo.


Description

lilo installe le chargeur de démarrage de Linux, qui est utilisé pour lancer un système Linux.


Make

Contenu

Le package Make contient le programme make.


Description

make détermine automatiquement quels morceaux d'un gros programme ont besoin d'être recompilés, et exécute les commandes pour les recompiler.


Shellutils

Contenu

Le package Shellutils contient les programmes basename, chroot, date, dirname, echo, env, expr, factor, false, groups, hostid, hostname, id, logname, nice, nohup, pathchk, pinky, printenv, printf, pwd, seq, sleep, stty, su, tee, test, true, tty, uname, uptime, users, who, whoami et yes.


Description

basename

basename supprime le répertoire et les suffixes des noms de fichier.


chroot

chroot lance une commande ou un shell interactif avec un répertoire racine particulier.


date

date affiche la date et l'heure courantes dans un format spécifié, ou positionne la date du système.


dirname

dirname supprime les suffixes autres que le répertoire du nom de fichier.


echo

echo affiche une ligne de texte.


env

env lance un programme dans un environnement modifié.


expr

expr évalue les expressions.


factor

factor affiche les facteurs premiers de tous les nombres entiers spécifiés.


false

false se termine toujours avec un code de statut indiquant une erreur.


groups

groups affiche les groupes auxquels appartient un utilisateur.


hostid

hostid affiche l'identifiant numérique (en hexadécimal) de l'hôte courant.


hostname

hostname positionne ou affiche le nom du système hôte courant.


id

id affiche les GID et UID réels et effectifs d'un utilisateur ou de l'utilisateur courant.


logname

logname affiche le nom de connexion de l'utilisateur courant.


nice

nice lance un programme avec une planification modifiée.


nohup

nohup lance une commande insensible aux interruptions, avec une sortie autre qu'un terminal.


pathchk

pathchk vérifie si des noms de fichier sont valides ou portables.


pinky

pinky est un utilitaire léger qui recherche des informations sur un utilisateur particulier.


printenv

printenv affiche tout ou partie de l'environnement.


printf

printf formate et affiche des données (identique à la fonction C printf).


pwd

pwd affiche le nom du répertoire de travail courant.


seq

seq affiche des nombres dans une certaine plage, avec un incrément spécifié.


sleep

sleep attend pendant un laps de temps spécifié.


stty

stty modifie et affiche les paramètres de ligne du terminal.


su

su lance un shell avec des ID d'utilisateur et de groupe substitués.


tee

tee lit depuis l'entrée standard et écrit sur la sortie standard et dans des fichiers.


test

test vérifie les types de fichier et compare les valeurs.


true

true se termine toujours avec un code de statut indiquant le succès.


tty

tty affiche le nom de fichier du terminal connecté à l'entrée standard.


uname

uname affiche des informations sur le système.


uptime

uptime indique depuis combien de temps le système tourne.


users

users affiche le nom des utilisateurs actuellement connectés sur l'hôte courant.


who

who montre qui est connecté.


whoami

whoami affiche votre id utilisateur effectif.


yes

yes sort une chaîne à répétition, jusqu'à ce qu'il soit tué.


Suite de Masquage des mots de passe

Contenu

La Suite «Shadow Password» (masquage des mots de passe) contient les programmes chage, chfn, chsh, expiry, faillog, gpasswd, lastlog, login, newgrp, passwd, sg, su, chpasswd, dpasswd, groupadd, groupdel, groupmod, grpck, grpconv, grpunconv, logoutd, mkpasswd, newusers, pwck, pwconv, pwunconv, useradd, userdel, usermod et vipw.


Description

chage

chage modifie le nombre de jours entre deux changements de mot de passe et la date du dernier changement de mot de passe.


chfn

chfn modifie le nom complet de l'utilisateur, le numéro de travail, le poste de travail et le numéro de téléphone du domicile pour un compte utilisateur.


chsh

chsh modifie le shell de connexion de l'utilisateur.


expiry

Vérifie et applique la politique d'expiration des mots de passe.


faillog

faillog formate le contenu du journal d'échec /var/log/faillog, et conserve le nombre et les limites des échecs.


gpasswd

gpasswd est utilisé pour administrer le fichier /etc/group.


lastlog

lastlog formate et affiche le contenu du journal de dernière connexion, /var/log/lastlog. Le nom de connexion, le port et l'heure de dernière connexion seront affichés.


login

login est utilisé pour établir une nouvelle session avec le système.


newgrp

newgrp est utilisé pour modifier l'ID du groupe courant pendant une session de connexion.


passwd

passwd modifie les mots de passe des comptes utilisateur et groupe.


sg

sg exécute une commande avec un ID de groupe différent.


su

Modifie les id effectifs de groupe et d'utilisateur en ceux d'un utilisateur. Ceci remplace le programme su installé avec le package Shellutils.


chpasswd

chpasswd lit un fichier contenant des paires nom d'utilisateur et mot de passe depuis l'entrée standard, et utilise ces informations pour mettre à jour un groupe d'utilisateurs existants.


dpasswd

dpasswd ajoute, supprime et met à jour les mots de passe d'appel pour les shells de connexion utilisateur.


groupadd

La commande groupadd crée un nouveau compte de groupe avec les valeurs spécifiées en ligne de commande et les valeurs par défaut du système.


groupdel

La commande groupdel modifie les fichiers de compte du système, supprimant toutes les entrées faisant référence au groupe.


groupmod

La commande groupmod modifie les fichiers de compte du système pour refléter les changements spécifiés sur la ligne de commande.


grpck

grpck vérifie l'intégrité des informations d'authentification du système.


grpconv

grpconv convertit en fichiers de groupe masqués des fichiers de groupe normaux.


grpunconv

grpunconv convertit en fichiers de groupe normaux des fichiers de groupe masqués.


logoutd

logoutd applique les restrictions de temps de connexion et de port spécifiées dans /etc/porttime.


mkpasswd

mkpasswd lit un fichier dans le format donné par les options et le convertit dans le format de fichier de base de données correspondant.


newusers

newusers lit un fichier contenant des paires nom d'utilisateur et mot de passe en clair, et utilise ces informations pour mettre à jour un groupe d'utilisateurs existants ou pour créer de nouveaux utilisateurs.


pwck

pwck vérifie l'intégrité des informations d'authentification du système.


pwconv

pwconv convertit en fichiers «Shadow Password» (mot de passe masqués) des fichiers de mot de passe normaux.


pwunconv

pwunconv convertit en fichiers de mots de passe normaux des fichiers «Shadow Password» (mot de passe masqués).


useradd

useradd crée un nouvel utilisateur ou met à jour les informations par défaut d'un nouvel utilisateur.


userdel

userdel modifie les fichiers de compte du système, supprimant toutes les entrées faisant référence au nom de connexion spécifié.


usermod

usermod modifie les fichiers de compte du système pour refléter les modifications spécifiées sur la ligne de commande.


vipw et vigr

vipw et vigr éditent respectivement les fichiers /etc/passwd et /etc/group. Avec l'option -s, ils éditent les versions masquées de ces fichiers, respectivement /etc/shadow et /etc/gshadow.


Modutils

Contenu

Le package Modutils contient les programmes depmod, genksyms, insmod, insmod_ksymoops_clean, kerneld, kernelversion, ksyms, lsmod, modinfo, modprobe et rmmod.


Description

depmod

depmod gère les descriptions de dépendance pour les modules du noyau qui peuvent être chargés.


genksyms

genksyms lit (sur l'entrée standard) la sortie de gcc -E source.c et génère un fichier contenant des informations de version.


insmod

insmod installe dans le noyau utilisé un module qui peut être chargé.


insmod_ksymoops_clean

insmod_ksymoops_clean supprime les ksym et les modules sauvés qui n'ont pas été accédés depuis deux jours.


kerneld

kerneld exécute une action du noyau dans l'espace utilisateur (comme le chargement sur demande de modules).


kernelversion

kernelversion renvoie la version majeure du noyau utilisé.


ksyms

ksyms affiche les symboles exportés du noyau.


lsmod

lsmod fournit les informations sur tous les modules chargés.


modinfo

modinfo examine un fichier objet associé à un module du noyau et affiche toutes les informations qu'il peut y trouver.


modprobe

modprobe utilise un fichier de dépendance ressemblant à Makefile, créé par depmod, pour charger automatiquement le(s) module(s) pertinent(s) de l'ensemble des modules disponibles, dans l'arborescence des répertoires prédéfinie.


rmmod

rmmod décharge des modules chargés du noyau utilisé.


Procinfo

Contenu

Le package Procinfo contient le programme procinfo.


Description

procinfo recueille des données système depuis le répertoire /proc et les affiche de façon correctement formatée sur le périphérique de sortie standard.


Procps

Contenu

Le package Procps contient les programmes free, kill, oldps, ps, skill, snice, sysctl, tload, top, uptime, vmstat, w et watch.


Description

free

free affiche la quantité totale de mémoire, libre et utilisée, physique ou d'échange, dans le système, ainsi que la mémoire partagée et les mémoires tampon utilisées par le noyau.


kill

kill envoie des signaux aux processus.


oldps and ps

ps fournit une photographie instantanée des processus en cours.


skill

skill envoie des signaux aux processus répondant à un critère donné.


snice

snice modifie la priorité d'ordonnancement des processus répondant à un critère donné.


sysctl

sysctl modifie les paramètres du noyau en exécution.


tload

tload affiche un graphe de la charge moyenne du système courant sur le terminal spécifié (ou le terminal du processus tload si aucun autre n'est spécifié).


top

top fournit une vue de l'activité en cours du processeur en temps réel.


uptime

uptime affiche une ligne contenant les informations suivantes: l'heure courante, la durée de fonctionnement du système, le nombre d'utilisateurs actuellement connectés, et les moyennes de charge du système pour les 1, 5 et 15 dernières minutes.


vmstat

vmstat donne des informations sur les processus, la mémoire, la pagination, les entrées/sorties de blocs, les trappes et l'activité du cpu.


w

w affiche des informations sur les utilisateurs actuellement connectés à la machine, et leurs processus.


watch

watch lance une commande de façon répétitive, affichant sa sortie (le premier écran complet).


Vim

Contenu

Le package Vim contient les programmes ctags, etags, ex, gview, gvim, rgview, rgvim, rview, rvim, view, vim, vimtutor et xxd.


Description

ctags

ctags génère des fichiers de marquage pour le code source.


etags

etags fait la même chose que ctags, mais il peut générer des fichiers de références croisées qui listent des informations sur les différents objets source trouvés dans un ensemble de fichiers de langage.


ex

ex démarre vim en mode Ex.


gview

gview est la version GUI de view.


gvim

gvim est la version GUI de vim.


rgview

rgview est la version GUI de rview.


rgvim

rgvim est la version GUI de rvim.


rview

rview est une version restreinte de view. Aucune commande shell ne peut être lancée et Vim ne peut pas être interrompu.


rvim

rvim est la version restreinte de vim. Aucune commande shell ne peut être lancée et Vim ne peut pas être interrompu.


view

view lance vim en mode lecture seule.


vim

vim lance vim de la manière normale, par défaut.


vimtutor

vimtutor lance le tutorial de Vim.


xxd

xxd crée un dump hexadécimal, ou fait l'inverse.


Psmisc

Contenu

Le package Psmisc contient les programmes fuser, killall et pstree.


Description

fuser

fuser affiche le PID des processus utilisant les fichiers ou les systèmes de fichiers spécifiés.


killall

killall envoie un signal à tous les processus faisant tourner une des commandes spécifiées.


pstree

pstree montre les processus en cours sous la forme d'un arbre.


Sed

Contenu

Le package Sed contient le programme sed.


Description

sed est un éditeur de flux. Un éditeur de flux est utilisé pour opérer des transformations de texte basiques sur un flux d'entrée (un fichier ou une entrée depuis un pipe).


Sysklogd

Contenu

Le package Sysklogd contient les programmes klogd et syslogd.


Description

klogd

klogd est un démon système qui intercepte et journalise les messages du noyau de Linux.


syslogd

syslogd fournit une sorte de journalisation que de nombreux programmes modernes utilisent. Chaque message journalisé contient au moins une heure et un champ nom d'hôte, normalement un champ nom de programme également, mais cela dépend de la fidélité du programme qui journalise.


Sysvinit

Contenu

Le package Sysvinit contient les programmes pidof, last, lastb, mesg, utmpdump, wall, halt, init, killall5, poweroff, reboot, runlevel, shutdown, sulogin et telinit.


Description

pidof

pidof trouve les identifiants des processus (pid) des programmes spécifiés et affiche ces identifiants sur la sortie standard.


last

last recherche en arrière dans le fichier /var/log/wtmp (ou le fichier désigné par l'option -f) et affiche une liste de tous les utilisateurs s'étant connectés (et déconnectés) depuis la création du fichier.


lastb

lastb est identique à last, sauf que, par défaut, il affiche un journal du fichier /var/log/btmp, qui contient toutes les tentatives de connexion ayant échouées.


mesg

mesg contrôle l'accès au terminal de l'utilisateur par d'autres. Typiquement, il est utilisé pour autoriser ou interdire à d'autres utilisateurs d'écrire sur son terminal.


utmpdump

utmpdumps affiche le contenu d'un fichier (en général /var/run/utmp) sur la sortie standard dans un format compréhensible par l'utilisateur.


wall

wall envoie un message à toutes les personnes connectées ayant leur permission mesg positionnée à yes.


halt

halt note que le système est en train de s'arrêter dans le fichier /var/log/wtmp, puis dit au noyau soit de s'arrêter, soit de redémarrer, ou d'éteindre le système. Si halt ou reboot est appelé quand le système n'est pas dans un niveau d'exécution de 0 ou 6, shutdown sera appelé à la place (avec une option -h ou -r).


init

init est le père de tous les processus. Son rôle principal est de créer les processus à partir d'un script enregistré dans le fichier /etc/inittab. Ce fichier a en général des entrées indiquant à init d'engendrer des getty sur chaque ligne où l'utilisateur peut se connecter. Il contrôle aussi les processus autonomes requis par un système particulier.


killall5

killall5 est la commande killall de SystemV. Il envoie un signal à tous les processus, sauf les processus dans sa propre session, de manière à ne pas tuer le shell qui fait tourner le script qui l'a appelé.


poweroff

poweroff est équivalent à shutdown -h -p now. Il arrête l'ordinateur et l'éteint (si un BIOS compatible APM est utilisé, et qu'APM est activé dans le noyau).


reboot

reboot est équivalent à shutdown -r now. Il redémarre l'ordinateur.


runlevel

runlevel lit le fichier utmp du système (typiquement, /var/run/utmp) pour localiser l'enregistrement du niveau d'exécution, puis écrit les niveaux d'exécution du système, le précédent et l'actuel, sur sa sortie standard, séparés par un seul espace.


shutdown

shutdown arrête le système de façon sécurisée. Tous les utilisateurs connectés sont avertis que le système va s'arrêter, et la connexion est bloquée.


sulogin

sulogin est invoqué par init quand le système passe en mode mono-utilisateur (ceci est réalisé par une entrée dans /etc/inittab). init tente également d'exécuter sulogin quand l'option -b lui est passée par le chargeur d'amorçage (comme LILO).


telinit

telinit envoie les signaux appropriés à init, lui indiquant le niveau d'exécution sous lequel passer.


Tar

Contenu

Le package tar contient les programmes tar et rmt.


Description

tar

tar est un programme d'archivage conçu pour stocker et extraire des fichiers d'un fichier archive appelé fichier tar.


rmt

rmt est un programme utilisé par les programmes distants dump et restore pour manipuler un lecteur de bandes magnétiques via une connexion de communication inter-processus.


Textutils

Contenu

Le paquet Textutils contient les programmes cat, cksum, comm, split, cut, expand, fmt, fold, head, join, md5sum, nl, od, paste, pr, ptx, sort, split, sum, tac, tail, tr, tsort, unexpand, uniq et wc.


Description

cat

cat concatène le(s) fichier(s) ou l'entrée standard vers la sortie standard.


cksum

cksum affiche la somme de contrôle CRC et le nombre d'octets de chaque fichier spécifié.


comm

comm compare deux fichiers triés ligne à ligne.


csplit

cplit découpe un fichier en morceaux séparés par un(des) motif(s) dans des fichiers xx01, xx02, ..., et affiche le nombre d'octets de chaque morceau sur la sortie standard.


cut

cut écrit les parties sélectionnées des lignes des fichiers spécifiés sur la sortie standard.


expand

expand convertit les tabulations dans les fichiers en espaces, en écrivant sur la sortie standard.


fmt

fmt reformate chaque paragraphe dans le(s) fichier(s) spécifié(s), en écrivant sur la sortie standard.


fold

fold emballe les lignes d'entrée de chaque fichier spécifié (entrée standard par défaut), en écrivant sur la sortie standard.


head

head affiche les xx (10 par défaut) premières lignes de chaque fichier spécifié sur la sortie standard.


join

join fusionne les lignes identiques de deux fichiers dans un fichier commun.


md5sum

md5sum affiche ou vérifie les sommes de contrôle MD5.


nl

nl écrit chaque fichier spécifié sur la sortie standard, en y ajoutant les numéros de ligne.


od

od écrit une représentation non-ambiguë, en octal par défaut, d'un fichier spécifié, sur la sortie standard.


paste

paste écrit des lignes, d'une manière consistant à prendre séquentiellement les lignes correspondantes de chaque fichier spécifié, séparées par des tabulations, sur la sortie standard.


pr

pr met en pages ou en colonnes des fichiers pour impression.


ptx

ptx produit un index de permutation du contenu d'un fichier.


sort

sort écrit la concaténation triée de fichiers sur la sortie standard.


split

split extrait des morceaux de taille fixe d'un fichier d'entrée dans PREFIXaa, PREFIXab, ...


sum

sum écrit la somme de contrôle et le nombre de blocs de chaque fichier spécifié.


tac

tac écrit chaque fichier spécifié sur la sortie standard, la dernière ligne en premier.


tail

tail écrit les xx (10 par défaut) dernières lignes de chaque fichier spécifié sur la sortie standard.


tr

tr convertit, répète et/ou supprime des caractères de l'entrée standard, en écrivant sur la sortie standard.


tsort

tsort écrit des listes totalement ordonnées en accord avec l'ordonnancement partiel dans les fichiers spécifiés.


unexpand

unexpand convertit les espaces dans chaque fichier en tabulations, en écrivant sur la sortie standard.


uniq

uniq supprime toutes les lignes identiques successives sauf une depuis des fichiers ou l'entrée standard, et écrit dans des fichiers ou la sortie standard.


wc

wc affiche le nombre de lignes, mots et octets de chaque fichier spécifié, et une ligne de totalisation si plus d'un fichier est spécifié.


Util Linux

Contenu

Le package Util-linux contient les programmes arch, dmesg, kill, more, mount, umount, agetty, blockdev, cfdisk, ctrlaltdel, elvtune, fdisk, fsck.minix, hwclock, kbdrate, losetup, mkfs, mkfs.bfs, mkfs.minix, mkswap, sfdisk, swapoff, swapon, cal, chkdupexe, col, colcrt, colrm, column, cytune, ddate, fdformat, getopt, hexdump, ipcrm, ipcs, logger, look, mcookie, namei, rename, renice, rev, script, setfdprm, setsid, setterm, ul, whereis, write, ramsize, rdev, readprofile, rootflags, swapdev, tunelp et vidmode.


Description

arch

arch affiche l'architecture de la machine.


dmesg

dmesg est utilisé pour examiner ou vérifier la mémoire tampon circulaire du noyau (messages de démarrage du noyau).


kill

kill envoie un signal donné au processus spécifié.


more

more est un filtre pour paginer le texte écran par écran.


mount

mount monte un système de fichiers depuis un périphérique dans un répertoire (point de montage).


umount

umount démonte un système de fichiers monté.


agetty

agetty ouvre un port tty, demande un nom de connexion et appelle la commande /bin/login.


blockdev

blockdev permet d'exécuter des ioctls sur un périphérique de type bloc depuis la ligne de commande.


cfdisk

cfdisk est un manipulateur de table de partitions de disque basé sur libncurses.


ctrlaltdel

ctrlaltdel positionne la fonction associée à la combinaison de touche CTRL+ALT+DEL (remise à zéro logicielle ou matérielle).


elvtune

elvtune permet d'optimiser l'élévateur d'entrées/sorties par file de périphérique de type bloc.


fdisk

fdisk est un manipulateur de table de partitions de disque.


fsck.minix

fsck.minix effectue une vérification de cohérence pour le système de fichiers Linux MINIX.


hwclock

hwclock interroge et positionne l'horloge matérielle (appelée aussi horloge RTC ou BIOS).


kbdrate

kbdrate réinitialise le taux de répétition du clavier et son délai.


losetup

losetup configure et contrôle les périphériques de boucle.


mkfs

mkfs construit un système de fichiers Linux sur un périphérique, en général une partition de disque dur.


mkfs.bfs

mkfs.bfs crée un système de fichiers SCO bfs sur un périphérique, en général une partition de disque dur.


mkfs.minix

mkfs.minix crée un système de fichiers Linux MINIX sur un périphérique, en général une partition de disque dur.


mkswap

mkswap met en place une zone d'échange Linux sur un périphérique ou dans un fichier.


sfdisk

sfdisk est un manipulateur de table de partitions de disque.


swapoff

swapoff désactive la pagination et l'échange pour les périphériques et les fichiers.


swapon

swapon active la pagination et l'échange pour les périphériques et les fichiers.


cal

cal affiche un calendrier simple.


chkdupexe

chkdupexe trouve les exécutables en double.


col

col filtre les lignes inversées depuis son entrée.


colcrt

colcrt filtre les sorties de nroff pour une prévisualisation via CRT.


colrm

colrm supprime les colonnes d'un fichier.


column

column met des listes en colonne.


cytune

cytune interroge et modifie le seuil d'interruption pour le pilote Cyclades.


ddate

ddate convertit les dates en système Grégorien en dates en système Discordien.


fdformat

fdformat réalise le formatage de bas niveau d'une disquette.


getopt

getopt sépare les options de commande, de la même manière que la commande C getopt.


hexdump

hexdump affiche les fichiers spécifiés, ou l'entrée standard, dans un format spécifié par l'utilisateur (ascii, décimal, hexadécimal, octal).


ipcrm

ipcrm supprime une ressource spécifiée.


ipcs

ipcs fournit des informations sur les utilitaires IPC.


logger

logger crée des entrées dans le journal système.


look

look affiche les lignes commençant par une chaîne donnée.


mcookie

mcookie génère des marques magiques pour xauth.


namei

namei suit un chemin jusqu'à trouver un point terminal.


rename

rename renomme les fichiers.


renice

renice modifie la priorité des processus en exécution.


rev

rev inverse les lignes d'un fichier


script

script enregistre une session de terminal dans un fichier texte.


setfdprm

setfdprm positionne les paramètres fournis par l'utilisateur pour la disquette.


setsid

setsid lance les programmes dans une nouvelle session.


setterm

setterm positionne les attributs d'un terminal.


ul

ul lit un fichier et traduit les occurrences de blancs soulignés en séquences qui indiquent le soulignement sur le terminal utilisé.


whereis

whereis localise un binaire, un fichier source et une page de manuel pour une commande.


write

write envoie un message à un autre utilisateur.


ramsize

ramsize interroge et positionne la taille du disque mémoire.


rdev

rdev interroge et positionne le périphérique racine image, le périphérique d'échange, la taille du disque mémoire ou le mode vidéo.


readprofile

readprofile lit les informations de profil du noyau.


rootflags

rootflags interroge et positionne des informations supplémentaires utilisées lors du montage de la racine.


swapdev

swapdev interroge et positionne le périphérique d'échange.


tunelp

tunelp positionne différents paramètres pour le périphérique LP.


vidmode

vidmode interroge et positionne le mode vidéo.


Kbd

Contenu

Le package Kbd contient les programmes chvt, deallocvt, dumpkeys, fgconsole, getkeycodes, kbd_mode, kbdrate, loadkeys, loadunimap, mapscrn, psfxtable, resizecons, screendump, setfont, setkeycodes, setleds, setmetamode, setvesablank, showfont, showkey, unicode_start et unicode_stop. Il y a d'autres programmes, qui ne sont pas installés par défaut, car ils sont très optionnels. Examinez le contenu du package Kbd si vous avez des problèmes avec votre console.


Description

chvt

chvt modifie le terminal virtuel de premier plan.


deallocvt

deallocvt désalloue les terminaux virtuels inutilisés.


dumpkeys

dumpkeys affiche les tables de conversion du clavier.


fgconsole

fgconsole affiche le numéro du terminal virtuel actif.


getkeycodes

getkeycodes affiche la table de correspondance de scancode en keycode du noyau.


kbd_mode

kbd_mode indique ou positionne le mode du clavier.


kbdrate

kbdrate positionne les taux de répétition et de temporisation du clavier.


loadkeys

loadkeys charge les tables de conversion du clavier.


loadunimap

loadunimap charge la table de correspondance d'unicode en fonte du noyau.


mapscrn

mapscrn charge une table de correspondance des caractères de sortie définie par l'utilisateur dans le pilote de la console. Notez qu'il est obsolète et que ses fonctionnalités sont reprises dans setfont.


psfxtable

psfxtable est un outil pour gérer les tables de caractères Unicode pour les fontes de console.


resizecons

resizeicons modifie la représentation de la taille de la console pour le noyau.


screendump

Un utilitaire de copie de l'écran pour la console.


setfont

Ceci vous permet de modifier les fontes EGA/VGA dans la console.


setkeycodes

setkeycodes charge les entrées de la table de correspondance scancode en keycode du noyau.


setleds

setleds positionne les LED du clavier. Beaucoup de personnes trouvent utile d'avoir numlock activé par défaut, et c'est en utilisant ce programme que vous pourrez y arriver.


setmetamode

setmetamode définit la gestion de la touche méta du clavier.


setvesablank

Ceci vous laisse trafiquer l'économiseur d'écran matériel (pas de grilles-pain, seulement un écran vide).


showfont

showfont affiche des données sur une fonte. L'information montrée comprend les informations sur la fonte, ses propriétés, les métriques des caractères, et les images des caractères.


showkey

showkey examine les scancodes et les keycodes transmis par le clavier.


unicode_start

unicode_start met la console en mode Unicode.


unicode_stop

unicode_stop annule le mode unicode pour le clavier et la console.


Man-pages

Contenu

Le paquet Man-pages contient différentes pages de manuel qui ne sont pas fournies avec les paquets.


Description

Des exemples de pages de manuel fournies sont les pages de manuel décrivant toutes les fonctions C et C++, quelques fichiers /dev/ importants, etc.


Netkit-base

Contenu

Le package Netkit-base contient les programmes inetd et ping.


Description

inetd

inetd est la mère de tous les démons. Elle écoute les connexions, et transfère l'appel au démon approprié.


ping

ping envoie des paquets ICMP ECHO_REQUETS à un hôte et détermine son temps de réponse.


Net-tools

Contenu

Le package Net-tools contient les programmes arp, hostname, ifconfig, netstat, plipconfig, rarp, route, et slattach.


Description

arp

arp est utilisé pour manipuler le cache ARP du noyau, en général pour ajouter ou supprimer une entrée, ou pour lister le cache ARP.


hostname

hostname, avec ses liens symboliques domainname, dnsdomainname, nisdomainname, ypdomainname et nodename, est utilisé pour positionner ou montrer le nom d'hôte du système (ou autre, selon le lien symbolique qui est utilisé).


ifconfig

La commande ifconfig est la commande générale utilisée pour configurer les interfaces de réseau.


netstat

netstat est un outil multi-fonctions, utilisé pour afficher les connexions de réseau, les tables de routage, les statistiques d'interface, les connexions de masquage, et l'appartenance à des multi-diffusions.


plipconfig

plipconfig est utilisé pour régler finement les paramètres du périphérique PLIP, dans l'espoir de le rendre plus rapide.


rarp

Similairement au programme arp, le programme rarp manipule la table RARP du système.


route

route est un utilitaire général utilisé pour manipuler la table de routage IP.


slattach

slattach attache une interface réseau à une ligne série, càd met une ligne de terminal normale dans un des différents modes "réseau".


Annexe B. Ressources

Introduction

Une liste de livres, de HOWTOs et d'autres documents qu'il peut être utile de télécharger ou d'acheter suit. Cette liste est simplement un petit choix pour débuter. Nous espérons pouvoir étendre cette liste au fur et à mesure que nous découvrirons d'autres livres ou documents utiles.


Livres

  • Guide de l'Administrateur Réseau Linux publié par O'Reilly. ISBN: 1-56502-087-2 (Linux Network Administrator's Guide)

  • Lancer Linux publié par O'Reilly. ISBN: 1-56592-151-8 (Running Linux)


HOWTOs et Guides

Tous les HOWTO suivants peuvent être téléchargés depuis le site du Projet de Documentation Linux à http://www.linuxdoc.org.

  • Guide de l'Administrateur Réseau Linux (Linux Network Administrator's Guide)

  • HOWTO Du démarrage à Bash (Powerup2Bash-HOWTO)


Autres

  • Les différentes pages de man ou d'information qui sont fournies avec les paquets.


Annexe C. Sites officiels de téléchargement

Sites officiels de téléchargement

Vous trouverez ci-dessous la liste des packages du chapitre trois avec leur site de téléchargement d'origine. Elle devrait vous aider à trouver plus rapidement une nouvelle version d'un package.



Bash (2.04):
ftp://ftp.gnu.org/gnu/bash/


Binutils (2.10.1):
ftp://ftp.gnu.org/gnu/binutils/


Bzip2 (1.0.1):
ftp://sourceware.cygnus.com/pub/bzip2/


Diff Utils (2.7):
ftp://ftp.gnu.org/gnu/diffutils/


File Utils (4.0):
ftp://ftp.gnu.org/gnu/fileutils/


Patch de File Utils (4.0):
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/
http://packages.linuxfromscratch.org/intel-3.0-pre2/

GCC (2.95.2.1):
ftp://ftp.freesoftware.com/pub/sourceware/gcc/releases/


Noyau Linux (2.4.2):
ftp://ftp.kernel.org/pub/linux/kernel/

Glibc (2.2.1):
ftp://ftp.gnu.org/gnu/glibc/


Glibc-linuxthreads (2.2.1):
ftp://ftp.gnu.org/gnu/glibc/


Grep (2.4.2):
ftp://ftp.gnu.org/gnu/grep/


Gzip (1.2.4a):
ftp://ftp.gnu.org/gnu/gzip/


Patch de Gzip (1.2.4a):
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/
http://packages.linuxfromscratch.org/intel-3.0-pre2/

Make (3.79.1):
ftp://ftp.gnu.org/gnu/make/


Sed (3.02):
ftp://ftp.gnu.org/gnu/sed/


Sh-utils (2.0):
ftp://ftp.gnu.org/gnu/sh-utils/


Tar (1.13):
ftp://ftp.gnu.org/gnu/tar/


Patch de Tar (1.13):
http://sourceware.cygnus.com/bzip2/

Text Utils (2.0):
ftp://ftp.gnu.org/gnu/textutils/


MAKEDEV:
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/
http://packages.linuxfromscratch.org/intel-3.0-pre2/


Bison (1.28):
ftp://ftp.gnu.org/gnu/bison/


Mawk (1.3.3):
ftp://ftp.whidbey.net/pub/brennan/


Patch (2.5.4):
ftp://ftp.gnu.org/gnu/patch/


Find Utils (4.1):
ftp://ftp.gnu.org/gnu/findutils/


Patch de Find Utils (4.1):
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/
http://packages.linuxfromscratch.org/intel-3.0-pre2/

Ncurses (5.2):
ftp://ftp.gnu.org/gnu/ncurses/


Less (358):
ftp://ftp.gnu.org/gnu/less/


Groff (1.16.1):
ftp://ftp.gnu.org/gnu/groff/


Man (1.5i):
ftp://ftp.win.tue.nl/pub/linux-local/utils/man/


Perl (5.6.0):
http://www.perl.com


M4 (1.4):
ftp://ftp.gnu.org/gnu/m4/


Texinfo (4.0):
ftp://ftp.gnu.org/gnu/texinfo/


Autoconf (2.13):
ftp://ftp.gnu.org/gnu/autoconf/


Automake (1.4):
ftp://ftp.gnu.org/gnu/automake/


Flex (2.5.4a):
ftp://ftp.gnu.org/non-gnu/flex/


File (3.34):
ftp://ftp.gw.com/mirrors/pub/unix/file/


Libtool (1.3.5):
ftp://ftp.gnu.org/gnu/libtool/


Bin86 (0.15.4):
http://www.cix.co.uk/~mayday/


Gettext (0.10.36):
ftp://ftp.gnu.org/gnu/gettext/


Kbd (1.05):
ftp://ftp.win.tue.nl/pub/linux-local/utils/kbd/

E2fsprogs (1.19):
ftp://download.sourceforge.net/pub/sourceforge/e2fsprogs/


Ed (0.2):
ftp://ftp.gnu.org/gnu/ed/


Ld.so (1.9.9):
ftp://ftp.ods.com/pub/linux/


Lilo (21.7.3):
ftp://metalab.unc.edu/pub/Linux/system/boot/lilo


Modutils (2.4.5):
ftp://ftp.kernel.org/pub/linux/utils/kernel/modutils


Vim-rt (5.7):
ftp://ftp.vim.org/pub/editors/vim/unix/

Vim-src (5.7):
ftp://ftp.vim.org/pub/editors/vim/unix/

Procinfo (18):
ftp://ftp.cistron.nl/pub/people/svm/


Procps (2.0.7):
ftp://people.redhat.com/johnsonm/procps/


Psmisc (20.1):
http://download.sourceforge.net/psmisc/
ftp://download.sourceforge.net/pub/sourceforge/psmisc/


Suite de masquage des mots de passe (20001016):
ftp://ftp.pld.org.pl/software/shadow/

Patch de la Suite de masquage des mots de passe (20001016):
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/
http://packages.linuxfromscratch.org/intel-3.0-pre2/

Sysklogd (1.4.1):
ftp://ftp.ibiblio.org/pub/Linux/system/daemons/


Sysvinit (2.78):
ftp://ftp.cistron.nl/pub/people/miquels/sysvinit/


Patch de Sysvinit (2.78):
ftp://packages.linuxfromscratch.org/intel-3.0-pre2/
http://packages.linuxfromscratch.org/intel-3.0-pre2/

Util Linux (2.11b):
ftp://ftp.win.tue.nl/pub/linux-local/utils/util-linux/


Man-pages (1.35):
ftp://ftp.win.tue.nl/pub/linux-local/manpages/


Netkit-base (0.17):
ftp://ftp.uk.linux.org/pub/linux/Networking/netkit/


Net-tools (1.59):
http://www.tazenda.demon.co.uk/phil/net-tools/