Académique Documents
Professionnel Documents
Culture Documents
Sommaire
• Si Linux m’était conté • Avant de mettre la main à la pâte • Linux installé par une poule • Premier
contact avec le plan de travail • Linux en mode texte : consolez-vous ! • Gérer les utilisateurs • Gérer
les droits d’accès • Chercher une aiguille dans une botte de foin • Créer et manipuler des liens •
Gérer les processus • Gérer les services • Accéder aux systèmes de fichiers • Gérer les archives
compressées • Premiers pas sur le réseau • Installer et gérer des logiciels • Manipuler le chargeur de
démarrage et le noyau • Configurer le serveur graphique X.Org • Linux installé par un chef • Xfce
bien mitonné • Une sélection d’applications aux petits oignons • Faites bonne impression sous Linux •
Larguez les amarres grâce au Wi-Fi • Confectionner une clé USB d’installation • Les différentes
procédures de partitionnement • Installer Linux sur un ordinateur avec EFI
Biographie auteur
Féru d’informatique depuis les jours du processeur 8080 et du Commodore VC-20, Kiki Novak est
gérant de la société Microlinux, spécialisée dans l’élaboration de solutions informatiques durables
basées à cent pour cent sur GNU/Linux et les logiciels libres. Microlinux est également un organisme
de formation s’adressant aux utilisateurs et aux administrateurs de Linux et du libre.
www.editions-eyrolles.com
DANS LA MÊME COLLECTION
P. MARTIN, J. PAULI, C.PIERRE DE GEYER. – PHP 7 avancé.
N°14357, 2016, 732 pages.
L. BLOCH, C. WOLFHUGEL, A. KOKOS, G. BILLOIS, A. SOULLIÉ, T. DEBIZE. – Sécurité informatique.
N°11849, 5e édition, 2016, 648 pages.
R. GOETTER. – CSS 3 Flexbox.
N°14363, 2016, 152 pages.
W. MCKINNEY. – Analyse de données en Python.
N°14109, 2015, 488 pages.
E. BIERNAT, M. LUTZ. – Data science : fondamentaux et études de cas.
N°14243, 2015, 312 pages.
B. PHILIBERT. – Bootstrap 3 : le framework 100 % web design.
N°14132, 2015, 318 pages.
C. CAMIN. – Développer avec Symfony2.
N°14131, 2015, 474 pages.
S. PITTION, B. SIEBMAN. – Applications mobiles avec Cordova et PhoneGap.
N°14052, 2015, 184 pages.
H. GIRAUDEL, R. GOETTER. – CSS 3 : pratique du design web.
N°14023, 2015, 372 pages.
C. DELANNOY. – Le guide complet du langage C.
N°14012, 2014, 844 pages.
K. AYARI. – Scripting avancé avec Windows PowerShell.
N°13788, 2013, 358 pages.
W. BORIES, O. MIRIAL, S. PAPP. – Déploiement et migration Windows 8.
N°13645, 2013, 480 pages.
W. BORIES, A. LAACHIR, D. THIBLEMONT, P. LAFEIL, F.-X. VITRANT. – Virtualisation du poste de travail Windows 7 et
8 avec Windows Server 2012.
N°13644, 2013, 218 pages.
J.-M. DEFRANCE. – jQuery-Ajax avec PHP.
N°13720, 4e édition, 2013, 488 pages.
Attention : pour lire les exemples de lignes de code, réduisez la police de votre support au
maximum.
En application de la loi du 11 mars 1957, il est interdit de reproduire intégralement ou partiellement le présent ouvrage, sur quelque
support que ce soit, sans l’autorisation de l’Éditeur ou du Centre Français d’exploitation du droit de copie, 20, rue des Grands Augustins,
75006 Paris.
© Groupe Eyrolles, 2017, ISBN : 978-2-212-13793-4
À la mémoire d’Albert Bruc...
The White Rabbit put on his spectacles. « Where shall I begin, please
your Majesty ? » he asked.
« Begin at the beginning », the King said, very gravely, « and go on
till you come to the end : then stop. »1
Lewis Carroll, Alice in Wonderland
1. Le Lapin Blanc mit ses lunettes. « Plaise à Votre Majesté, où dois-je commencer ? » demanda-t-il. « Commencez au
commencement », dit le Roi d’un ton grave, « et continuez jusqu’à ce que vous arriviez à la fin ; ensuite, arrêtez-vous. »
Lewis Carroll, Alice au pays des merveilles (trad. H. Bué, 1972).
2. Nous la raconterons en détail, exactement et minutieusement. En effet, l’intérêt d’une histoire ou l’ennui qu’elle nous cause
ont-ils jamais dépendu de l’espace et du temps qu’elle a exigé ? Sans craindre de nous exposer au reproche d’avoir été
méticuleux à l’excès, nous inclinons au contraire à penser que seul est vraiment divertissant ce qui est minutieusement
élaboré. Thomas Mann, La montagne magique (trad. M. Betz, Fayard, 1981).
3. Grise, cher ami, est toute théorie / Et vert l’arbre doré de la vie. Goethe, Faust I (trad. Jean Malaplate, GF, 1984).
Avant-propos
Le présent ouvrage s’adresse en premier lieu à tous ceux qui utilisent l’informatique au quotidien et
qui cherchent une alternative...
Linux, un système écologique et performant
Vous rappelez-vous ce qu’étaient les Trabant, ces petites voitures en plastique produites par millions
en ex-RDA, censées révolutionner le confort routier non seulement de l’ouvrier est-allemand, mais
plus généralement des habitants de tous les pays membres du pacte de Varsovie vers lesquels on les
exportait massivement ? Propulsée par un moteur à deux temps monté dans une carrosserie en résine
artificielle, la Trabant peuplait les routes est-allemandes, hongroises, tchèques et polonaises.
Les gens qui roulaient en Trabant n’avaient pas vraiment le choix ; ils n’avaient pas opté pour ce
modèle par conviction. La Trabant tenait aussi peu la route qu’une Lada, s’avérait tout aussi
gloutonne que polluante et bruyante et, au vu de ses performances routières modestes, le coût d’achat
et d’entretien était relativement élevé.
CLIN D’ŒIL
Mon grand-père en Hongrie roulait en Trabant. Il en était fier comme un pape et je me souviens
encore du jour où il m’a copieusement fâché parce qu’en m’allumant une Gauloise sans trop faire
attention, j’ai réussi à faire un trou dans la portière en phénoplaste en la brûlant.
Imaginez donc un monde où tout le monde roulerait en Trabant. Et imaginez que, dans ce même
monde, les Clio, 206, Jaguar XS et autres Porsche 911 seraient gratuites. Elles pousseraient sur les
arbres et aussi dans les champs. Il suffirait de les déterrer ou de les cueillir. Les Clio et les 206
seraient prêtes à démarrer, clé en main ou presque, et consommeraient moins de trois litres au cent.
Quant aux Jaguar et aux Porsche, elles viendraient en pièces détachées. Quiconque s’aventurerait à
récolter et assembler les pièces aurait une belle surprise, car il se retrouverait avec un bolide
distillant de belles sensations, un troupeau de deux cents chevaux sous les fesses, consommant moins
d’un litre sur cent kilomètres. Un litre d’huile d’olive.
Figure 1
Et si on roulait tous en Trabant ?
Belle utopie, direz-vous. Trop belle pour être vraie. Et pourtant, il est un domaine dans notre
quotidien à tous, où dix-neuf personnes sur vingt « roulent en Trabant » et pensent qu’elles n’ont pas
le choix parce qu’elles ignorent l’existence des autres Clio, 206 et Porsche, qui poussent à côté. Je
parle de l’informatique.
Dans notre monde imaginaire, les conducteurs de Trabant regarderaient d’un œil mauvais ces Jaguar
qui poussent dans les champs. Forcément, si ça pousse dans les champs, ce n’est pas sérieux ; si ça ne
coûte rien, ça ne vaut rien. Et bien évidemment, si ça consomme peu, les performances doivent être
décevantes, voire carrément minables. Le conducteur de Trabant est plein de mépris envers le
conducteur de Jaguar, mépris qui se mue en rancœur lorsqu’il apprend que les Jaguar tombent très
rarement en panne – en tout cas, pas aussi régulièrement que sa Trabant, mais bon. Il doit
certainement s’agir d’un mythe, car n’oublions pas que si la Trabant est la voiture la plus populaire,
c’est qu’il doit bien y avoir une bonne raison à cela... Or tout cela a lieu dans notre monde, dans le
domaine de l’informatique...
En informatique, la Trabant serait le système d’exploitation Microsoft Windows que les vendeurs
vous obligent à acquérir lors de l’achat d’un PC neuf, en vous faisant croire que vous n’avez pas le
choix. C’est cher ; vous payez la licence et les options sont toutes facturées à part. Ça ne tient pas la
route, au nombre élevé de plantages, et c’est vulnérable à toutes sortes d’attaques de virus et autres
vers. C’est gourmand en ressources, ce qui vous oblige à investir dans du matériel suffisamment
performant pour avoir un système fonctionnel. Ça vous espionne de partout, sans le moindre respect
pour la confidentialité de vos données. Et c’est polluant, parce que votre vieux matériel aux
performances désormais trop modestes se retrouve tout bonnement relégué à la casse.
Pourquoi ce livre ? Et pour qui ?
Le présent ouvrage s’adresse donc à tous les conducteurs de Trabant qui aimeraient bien savoir ce
que peuvent valoir ces Jaguar et ces Porsche qui poussent sur les arbres. Cette alternative existe :
elle s’appelle Linux.
Sans doute avez-vous déjà entendu parler de Linux. Peut-être avez-vous tenté de l’installer chez vous.
Peut-être même l’utilisez-vous déjà et vous êtes-vous déjà rendu compte que tout ce que vous faisiez,
tant bien que mal, avec votre système Windows, vous le faites mieux avec un système Linux. Sur
votre vieux PC, sans être obligé d’acheter du matériel plus performant. Gratuitement, sans être obligé
de vous procurer une licence pour le système, ni pour les logiciels. Et en toute liberté, en l’installant
sur autant de machines qu’il vous chante et autant de fois que vous le voulez... Et sans que votre
propre système vous espionne derrière votre dos !
Il existe déjà des livres sur Linux et il est même réjouissant de voir que les publications sur ce sujet
se multiplient. Plutôt que réinventer la roue, j’ai choisi pour cet ouvrage une approche pragmatique :
vous faire découvrir Linux en plongeant les mains dans le cambouis.
Aucune connaissance, aucune compétence spécifique n’est présupposée de votre côté. Si vous êtes
muni d’une dose saine de curiosité et d’un certain plaisir à expérimenter, considérez-vous comme le
lecteur idéal de ces pages.
À propos de l’auteur
Féru d’informatique depuis les jours du processeur monoplatine 8080 et du Commodore VC-20,
j’ai découvert le monde de GNU/Linux relativement tard. En 2001, je développais du PHP pour un
éditeur et regrettais de passer plus de temps derrière ma machine que devant. « T’as qu’à installer
Linux », me suggéra alors un message posté sur un forum. Quelques jours plus tard, j’avais
remplacé mon système propriétaire par Slackware Linux dans sa version 7.1 et j’étais inscrit sur la
liste de diffusion de basiclinux.net, un groupe de vétérans chevronnés qui prodiguaient gratuitement
des cours détaillés sur l’administration d’un système Linux, mais qui a malheureusement cessé
toute activité.
Établi dans le Gard à mi-chemin entre Nîmes et les Cévennes, j’ai créé ma propre entreprise en
2009. Microlinux est spécialisée dans l’élaboration de solutions informatiques durables basées à
cent pour cent sur GNU/Linux et les logiciels libres. Microlinux est également un organisme de
formation s’adressant aux utilisateurs et aux administrateurs de Linux et du libre. En dehors de mes
publications chez Eyrolles, j’ai écrit de nombreux articles pour la presse écrite, notamment Linux
Pratique et Planète Linux.
http://www.microlinux.fr
Table des matières
CHAPITRE 1
Si Linux m’était conté
Au commencement était Unix
Richard Stallman et le projet GNU
Linus Torvalds et le noyau Linux
Les ancêtres Slackware, Red Hat et Debian
Slackware Linux
Les distributions de l’entreprise Red Hat
Debian GNU/Linux
Linux pour tous : la famille Ubuntu
Les systèmes BSD, une autre famille d’Unix libres
La foire aux distributions
Quelle est la « meilleure » distribution Linux ?
La panoplie logicielle
L’actualité des paquets
Les outils d’administration
Le caractère commercial
La qualité « entreprise »
La configuration par défaut
La qualité de la documentation
Qui utilise Linux ?
CHAPITRE 2
Avant de mettre la main à la pâte
Petite introduction culinaire
Se former à Linux avec Slackware
Une distribution robuste sans fioritures
Le matériel : usine à gaz ou simple gazinière ?
Quelques scénarios à éviter
Un PC pour Linux, mais lequel ?
Soyez branché !
Comment obtenir la distribution Slackware ?
Utiliser un client BitTorrent pour récupérer les images ISO
Acheter un support d’installation Slackware ?
Graver les fichiers ISO
Et si je n’ai pas de lecteur optique ?
CHAPITRE 3
Linux installé par une poule
L’œuf ou la poule ?
Au commencement était le BIOS
Testez votre mémoire !
Installation de Slackware
Premiers pas
Choisir la disposition du clavier
Se connecter en tant que root
Partitionner le disque dur
Choisir le schéma de partitionnement
Partitionner le disque dur avec cfdisk
Lancer l’installateur Slackware
Formater la partition d’échange
Formater la partition principale
Décider ce que l’on souhaite installer
Configurer et installer le chargeur de démarrage
Configurer la souris
Configurer le réseau
Configurer les services au démarrage et la police de la console
Configurer l’horloge et le fuseau horaire
Choisir le gestionnaire de fenêtres
Définir un mot de passe root
Fin de l’installation et redémarrage initial
Configuration post-installation sommaire
Définir les utilisateurs de la machine
Derniers réglages et lancement de Xfce
CHAPITRE 4
Premier contact avec le plan de travail
Découvrir le bureau Xfce
Ouvrir et fermer une session
Premières impressions
Quelques retouches initiales
Le menu Applications
Repérer les applications de base
Manipuler les fenêtres
Le navigateur de fichiers Thunar
Configuration sommaire de Thunar
Où suis-je ?
Une structure en arborescence
Naviguer dans les répertoires
Home sweet home
Naviguer avec les boutons
Visite guidée du système en dix minutes
Remonter à la racine : /
Les répertoires /bin et /boot
Les répertoires /dev et /etc
Le répertoire /lib
Les répertoires /mnt, /media et /run
Les répertoires /proc et /sys
Les répertoires /root et /sbin
Le répertoire /usr
Les répertoires /tmp et /var
La nausée devant l’abondance ?
CHAPITRE 5
Linux en mode texte : consolez-vous !
Introduction à la ligne de commande
Faut-il avoir peur du mode texte ?
Console ? Terminal ? Et quoi encore ?
Jouer avec les consoles virtuelles
Utiliser un émulateur de terminal
L’émulateur de terminal Xfce Terminal
Configurer Terminal pour une utilisation agréable
Premiers pas en ligne de commande
Naviguer : ls, pwd et cd
Afficher le contenu d’un répertoire avec ls
Décrypter les résultats de votre ordinateur
Qu’est-ce qui est quoi là-dedans ?
Mais encore ?
Humain, pas trop humain ?
Splendeur et misère des fichiers cachés
Cachez cette configuration que je ne saurais voir
Afficher les informations détaillées d’un répertoire
pwd : « Vous êtes ici ! »
On bouge avec cd !
Chemin relatif ou absolu ?
À court d’arguments
« Ici » et « à l’étage »
Deux commandes de sortie simples : echo et cat
echo : afficher une ligne de texte
cat : afficher et concaténer
Visualiser : more et less
Gérer l’affichage de fichiers longs
Visualiser avec more
Less is more : moins, c’est plus !
Créer : touch et mkdir
Modifier l’horodatage d’un fichier avec touch
Créer un fichier vide avec touch
Créer des fichiers texte sans éditeur de texte
Avec cat
Avec echo
Créer des répertoires avec mkdir
Créer une série de répertoires
Gare aux espaces !
Les arborescences en un coup d’œil avec tree
Créer une arborescence de répertoires
Copier, déplacer et renommer : cp et mv
Copier des fichiers et des répertoires avec cp
Sauvegarder un répertoire
Déplacer des fichiers et des répertoires avec mv
Renommer des fichiers et des répertoires avec mv
Supprimer : rm et rmdir
Gare aux armes de destruction massive
Travailler avec ou sans filet ?
Supprimer des répertoires avec rmdir
Un coup d’essuie-glace avec clear
Éditer des fichiers texte : Vi
Une réputation problématique
L’éditeur de texte installé sur tous les systèmes Linux
Vi amélioré : Vim
Vimtutor
Travailler moins pour taper plus
Geek ou neuneu ?
La complétion automatique
Vous avez dit « confort » ?
La paresse devient un gage de qualité
Répéter une commande
Utiliser l’historique des commandes
Invoquer une commande en utilisant la recherche inversée
Consulter l’aide en ligne : man et info
Unix est long et la vie est brève
On appelle les secours ?
Le bonheur est dans le PC
Afficher le manuel en ligne : man
Comment lire une page man ?
Mettre en forme une page man pour l’imprimer
Afficher le manuel en ligne : info
CHAPITRE 6
Gérer les utilisateurs
Systèmes mono-utilisateurs et systèmes multi-utilisateurs
Ajouter de nouveaux utilisateurs : adduser
Utiliser n’est pas administrer
Changer d’identité et devenir root
Savoir qui l’on est
En savoir un peu plus sur les utilisateurs : id, groups, finger
Comprendre le fichier /etc/passwd
Les utilisateurs système
Trouver les utilisateurs physiques du système
Vue détaillée sur l’ajout d’un utilisateur
Le profil par défaut des nouveaux utilisateurs
Personnaliser le profil par défaut des nouveaux utilisateurs
Modifier le mot de passe d’un utilisateur
Associer les utilisateurs aux groupes
Créer et supprimer des groupes
Supprimer un utilisateur
Vider l’eau du bain avec le bébé
CHAPITRE 7
Gérer les droits d’accès
Qui a le droit de faire quoi ?
Un exemple pratique
Comprendre les permissions dans l’affichage détaillé
Rendre un fichier exécutable
Ajouter et retirer les droits de lecture et d’écriture
Gérer les permissions en mode graphique
Une autre approche : la notation numérique
Attribuer tous les droits à tout le monde
Retirer et ajouter des droits
Les permissions par défaut : umask
Gérer les droits d’accès des répertoires
Changer le propriétaire et le groupe d’un fichier
Pas de cadeaux !
CHAPITRE 8
Chercher une aiguille dans une botte de foin
Chercher l’emplacement d’un fichier dont on connaît le nom
Limiter la recherche à certains répertoires
Zone interdite
Faire fi des avertissements
Interrompre une recherche
Chercher des fichiers dont on ne connaît pas le nom exact
Chercher selon d’autres critères que le nom
Chercher en fonction de la taille
Appliquer une commande sur les fichiers trouvés
Chercher par type
Chercher selon les droits d’accès
Cas pratique : attribuer des permissions à un ensemble de fichiers
Chercher du texte à l’intérieur d’un fichier
Chercher du texte dans une série de fichiers
Affiner la recherche
Quelques applications pratiques : obtenir des informations sur son matériel
CHAPITRE 9
Créer et manipuler des liens
Les liens symboliques
Créer des liens symboliques
À quoi servent les liens symboliques ?
Lequel est le vrai ?
Les liens symboliques en mode graphique
Casser un lien symbolique
Effacer un lien symbolique
Les permissions des liens symboliques
Les liens physiques
Un nom de fichier alternatif
Un lien physique a la vie dure
CHAPITRE 10
Gérer les processus
Linux, un système multitâche
Lancer et surveiller un processus : ps
Afficher les processus en cours
Compter les processus en cours
Envoyer un signal à un processus : kill
Arrêter et relancer un processus
Terminer et tuer un processus
S’adresser à un processus par son nom : killall
Utiliser kill ou killall ?
Les processus dans tous leurs états
Un lien de parenté : pstree
Massacre familial
Tirer à vue sur tout ce qui bouge ?
Surveiller l’utilisation des ressources de la machine : top
CHAPITRE 11
Gérer les services
Une confusion babylonienne
Qu’est-ce qu’un service ?
Arrêter et (re)démarrer un service
Activer un service au démarrage de la machine
Les services au démarrage et les niveaux d’exécution
Deux niveaux d’exécution un peu spéciaux : 0 et 6
Éteindre et redémarrer la machine
CHAPITRE 12
Accéder aux systèmes de fichiers
La gestion des périphériques amovibles en mode graphique
Insérer un DVD ou un CD
Insérer une clé USB
Première conclusion
Petit retour à l’âge de pierre
Les fichiers de périphérique
La notion de montage/démontage
Monter manuellement un CD ou un DVD
Démonter le CD ou le DVD
Monter et démonter manuellement une clé USB
Scier la branche sur laquelle on est assis
Le blocage des lecteurs
Éjecter un DVD ou un CD-Rom : eject
Obtenir des informations sur les périphériques montés
CHAPITRE 13
Gérer les archives compressées
Les différents formats d’archivage
Compresser et décompresser un fichier
Compresser et décompresser un fichier avec gzip
Compresser et décompresser un fichier avec bzip2
Manipuler les archives avec tar
Créer une archive avec tar
Extraire les fichiers d’une archive
Combiner l’archivage et la compression
Extraire une archive compressée
CHAPITRE 14
Premiers pas sur le réseau
Une grande confusion
Prérequis matériel et logiciel
Le modem routeur ADSL
Questions de câblage
La carte Ethernet
Les pilotes sous Linux
Principe de fonctionnement des réseaux
Afficher la configuration des interfaces réseau : ifconfig
L’adresse MAC de votre carte
L’adresse IP et le masque de sous-réseau
Les adresses IP
Un peu de pratique
Un peu de théorie
Établir un contact avec une machine distante : ping
Le routeur : un centre de tri pour paquets numériques
Sous les pavés numériques, la plage d’adresses IP privées
Relier le public et le privé
Le système de noms de domaine : l’annuaire d’Internet
Configurer une connexion à Internet
Configuration dynamique : DHCP
Paramétrer le serveur DHCP intégré dans le modem routeur
La configuration DHCP en détail
Configuration statique
Renseigner les serveurs DNS
Diagnostiquer le réseau en cas de panne
Et comment faire avec plusieurs PC ?
CHAPITRE 15
Installer et gérer des logiciels
Petit aperçu pour les utilisateurs de Windows
Anatomie d’un paquet Slackware
Gérer les paquets Slackware avec les outils traditionnels
Installer un paquet
Vérifier si un paquet est installé
Supprimer un paquet
Mettre à jour un paquet
En savoir plus sur le contenu d’un paquet
Gérer les paquets Slackware avec slackpkg
Configuration initiale
Installer des paquets
Supprimer des paquets
Mettre à jour des paquets
Rechercher des paquets ou des fichiers individuels
Deux options fort pratiques
Recompiler des paquets officiels
Fabriquer un paquet à partir du code source
Modifier un paquet officiel
Compiler des paquets tiers depuis les sources
Construire un paquet à partir d’un script de SlackBuilds.org
Gérer les dépendances des paquets
Gérer les paquets tiers confortablement avec sbopkg
Installer sbopkg
Utiliser sbopkg
Installer des paquets tiers précompilés
Les paquets fournis par Eric Hameleers
Autres ressources de paquets binaires
Installer les paquets multilib pour Slackware64
Installer l’outil slackpkg+
Configurer slackpkg+ pour l’utilisation du dépôt multilib
Installer les paquets multilib
CHAPITRE 16
Manipuler le chargeur de démarrage et le noyau
Le chargeur de démarrage LILO
Modifier le délai d’attente au démarrage
Options globales et paramètres de démarrage
Modifier la résolution de la console
Récupérer un système qui ne démarre plus
Configurer le système et le noyau à charger
Basculer vers le noyau GENERIC
Le noyau GENERIC et les mises à jour
CHAPITRE 17
Configurer le serveur graphique X.Org
Le système X Window et X.Org
Quelques préparatifs
Le gestionnaire de fenêtres WindowMaker
Définir la disposition du clavier
Personnaliser l’aspect du terminal XTerm
Quel pilote pour quelle carte graphique ?
Tester l’accélération graphique
Corriger la résolution avec le framebuffer activé
Corriger le comportement du pavé tactile
Utiliser le pilote propriétaire Nvidia
Utiliser le pilote propriétaire AMD/ATi
Le gestionnaire de fenêtres Fluxbox
CHAPITRE 18
Linux installé par un chef
Les options de démarrage
Partitionnement et formatage
Installer et configurer Slackware
Configuration post-installation
Créer un utilisateur
Peaufiner l’éditeur Vim
Personnaliser l’invite de commande
Avec un peu de couleur, c’est encore mieux
Quelques alias pratiques pour la console
Définir Vim comme l’éditeur principal
Compléter le PATH pour les utilisateurs
Effectuer la mise à jour initiale
Basculer vers le noyau GENERIC et peaufiner LILO
Configurer et personnaliser le serveur graphique X.Org
Définir le français comme langue principale du système
Installer et configurer sbopkg
CHAPITRE 19
Xfce bien mitonné
Installer le jeu d’icônes Elementary-Xfce
Installer le thème GTK Clearlooks Phenix
Installer une police mieux adaptée à l’interface
Installer une collection de fonds d’écran
Remplacer le menu Applications par Whisker Menu
Remplacer le tableau de bord inférieur par le dock Plank
Installer Plank
Tester Plank et configurer le lancement automatique
Peaufiner le compositeur d’affichage
Configurer Plank
Utiliser Plank au quotidien
Remplacer le gestionnaire de connexion XDM par LXDM
Installer LXDM
Configurer LXDM
Activer le verrouillage numérique
Relancer le serveur graphique à la déconnexion
Définir un fond d’écran personnalisé
Désactiver le sélecteur de langues
Désactiver l’affichage des utilisateurs
Corriger la couleur de la police d’affichage
Touches finales
Supprimer les icônes du bureau
Choisir un économiseur d’écran
CHAPITRE 20
Une sélection d’applications aux petits oignons
Naviguer sur Internet avec Mozilla Firefox
Franciser Firefox
Se documenter
Installer le plug-in Macromedia Flash
Installer le module Adblock Plus
Gérer le courrier électronique avec Mozilla Thunderbird
Franciser Thunderbird
Configurer un compte mail
Configurer le format d’envoi des courriels
Le bon grain et l’ivraie : filtrer ses courriels
L’alternative Seamonkey
Franciser Seamonkey
Utiliser Seamonkey
Utiliser des outils bureautiques
La suite bureautique LibreOffice
Installer JDK
Installer LibreOffice
Désactiver l’insertion automatique
Supprimer les polices exotiques
Installer les jeux de polices Microsoft
Apprendre à se servir de LibreOffice
Afficher des documents PDF avec Evince
Éditer des textes simples avec Gedit
Gérer les fichiers
Rechercher des fichiers avec Recoll
Gérer les archives compressées avec File Roller
Graver des CD et des DVD avec Brasero
Manipuler les images
Visionner des images avec gThumb
Retoucher des photos et dessiner avec Gimp
Gérer les graphismes vectoriels avec Inkscape
Faire de la PAO avec Scribus
Manipuler les fichiers audio
Lire des fichiers et des flux audio avec Audacious
Extraire des CD audio avec Asunder
Éditer des fichiers audio avec Audacity
Manipuler les fichiers vidéo
Regarder des fichiers vidéo avec MPlayer
Utiliser MPlayer
Quelques astuces
Une interface graphique pour MPlayer ?
Regarder des fichiers vidéo et des DVD avec VLC
Télécharger des torrents avec Transmission
Aller plus loin
CHAPITRE 21
Faites bonne impression sous Linux
Imprimer avec CUPS
Activer et démarrer le serveur CUPS
Votre imprimante et Linux
Configurer une imprimante HP Officejet Pro 8600
Administrer CUPS
Configurer une imprimante mal prise en charge
Configurer une imprimante Brother HL-2140
Configurer une imprimante Canon PIXMA MG2250
Configurer une imprimante Canon PIXMA iP4200
Numériser des documents
Numériser des documents avec XSane
Numériser des documents avec Simple Scan
CHAPITRE 22
Larguez les amarres grâce au Wi-Fi
Le point d’accès Wi-Fi
Configurer le Wi-Fi sur un ordinateur portable
Gérer les connexions réseau avec NetworkManager
Ajouter le Wi-Fi à une station de travail
ANNEXE A
Confectionner une clé USB d’installation
ANNEXE B
Les différentes procédures de partitionnement
MBR et GPT
Master Boot Record (MBR)
GUID Partition Tables (GPT)
Migrer vers GPT
Revenir au partitionnement MBR
ANNEXE C
Installer Slackware sur un ordinateur avec EFI
EFI et BIOS
Un exemple pratique : l’Asus S300
Configuration du BIOS et démarrage
Partitionnement
Le chargeur de démarrage GRUB
Peaufiner l’aspect de GRUB
Index
1
Le 16 septembre 2004, Linux est sorti tout ficelé du crâne de son inventeur Mark Shuttleworth,
revêtu de son armure et prêt à conquérir le monde.
Je plaisante.
Au commencement était Unix
Linux ? Unix ? Logiciels libres ? Faisons donc un petit voyage dans le temps pour y voir un peu plus
clair. Pas forcément dans la préhistoire, car les tables à calcul de l’ère babylonienne datant de plus
de quatre mille ans ne sont que d’un intérêt limité pour nous. Arrêtons-nous plutôt vers le milieu du
XXe siècle et situons là le début de « notre » préhistoire.
Les premiers ordinateurs construits à l’époque de la guerre froide étaient de véritables monstres
bibliques. Leur force de calcul était constituée de dizaines de milliers de tubes électroniques ou
« lampes ». Ils occupaient l’équivalent d’un terrain de foot ou d’un hangar, consommaient autant
d’électricité qu’un village entier et dégageaient plus de chaleur qu’une mare de geysers en activité.
Vers le début des années 1960, la taille des machines a pu être réduite de façon considérable avec
l’avènement des semi-conducteurs. Les tubes électroniques ont été successivement remplacés par des
transistors, puis par des circuits intégrés. Cette nouvelle génération de machines occupait à peine
l’espace d’une collection d’armoires normandes. Malheureusement, toutes souffraient toujours du
même défaut majeur.
Chacun de ces ordinateurs disposait en effet de son propre système d’exploitation, conçu en même
temps que la machine et taillé sur mesure par la force des choses. Un ingénieur qui avait appris à se
servir de l’une d’entre elles et qui souhaitait travailler sur un autre type de machine était contraint de
jeter par-dessus bord tout son savoir-faire pour revenir à la case départ et tout réapprendre depuis le
début. Si seulement toutes ces machines pouvaient parler le même langage. Il fallait trouver une
solution.
Le projet Multics (Multiplexed Information and Computing Service) a été initié en 1964 pour
apporter précisément cette solution. L’ambition de Multics consistait à fournir un système
d’exploitation portable, c’est-à-dire capable d’être porté sur la plupart des machines existantes.
Ambition pharaonique, car si le projet réussissait, il mettrait fin à la confusion babylonienne des
systèmes d’exploitation.
Multics n’a connu qu’un succès modeste, comme cela arrive parfois avec les projets pharaoniques.
Hormis quelques thésards en informatique et une poignée de vétérans, l’humanité a même fini par
l’oublier. Ce qui nous est resté de Multics, c’est une série de bonnes idées, mais surtout sa
descendance totalement imprévue : un rejeton qui n’était pas au programme, mais qui a fini par
connaître un succès incroyable.
1969, l’année où l’astronaute Neil Armstrong se promène sur la Lune, deux ingénieurs des
laboratoires Bell1, Dennis Ritchie et Ken Thompson, décident d’écrire un système d’exploitation
pour l’ordinateur dont ils disposent plus ou moins librement dans leur bureau. Cette machine, un DEC
PDP-7, est considérée comme un « mini-ordinateur » à l’époque. Pour avoir une vague idée de la
taille de l’engin, imaginez une batterie de quatre ou cinq réfrigérateurs de taille familiale posés les
uns à côté des autres. Ritchie et Thompson se servent des bouts de code du projet Multics, mais leur
ambition est bien plus modeste, pour ne pas dire purement ludique. Ce qui les motive dans
l’immédiat, c’est de disposer d’une machine suffisamment fonctionnelle pour jouer à un jeu tout à fait
dans l’air du temps : Space Travel, un jeu interactif en mode texte, où il s’agit de poser une capsule
spatiale sur la Lune.
Figure 1–1
Ken Thompson et Dennis Ritchie, les fondateurs d’Unix
Leur projet est un succès, comme cela arrive souvent lorsqu’on fait quelque chose uniquement pour
s’amuser et que l’ambition ne vient pas gâcher le plaisir. Étant donné que leur nouveau système
tourne sur une seule machine, celle qu’ils ont à portée de main, ils s’amusent à faire un jeu de mots
sur le système qui les a inspirés et décident de le baptiser « Unics ».
ÉTYMOLOGIE Le « X » de Unix
Le nom « Unics » est contracté par la suite en « Unix ». Cette consonne finale sera caractéristique
d’un certain nombre de variantes, dérivées et clones d’Unix : XENIX, AIX, HP-UX, Ultrix, IRIX,
Minix... sans oublier Linux et Mac OS X.
La fin des années 1960, ce n’est pas seulement la conquête spatiale, mais également la révolution de
mai 1968, Woodstock, le flower power et la culture hippie. Les campus des universités et les
entreprises pullulent de barbus à sandales qui ont une idée en tête : contribuer au code d’Unix en vue
de l’améliorer. Certes, la propriété intellectuelle et les brevets existent déjà, mais cela n’empêche
personne de vivre pour autant. Les hackers – au sens noble du terme – échangent entre eux leurs
meilleures idées et les bouts de code source qui vont avec, aussi naturellement que leurs grand-mères
échangent entre elles leurs meilleures recettes de cuisine. Les entreprises et les facultés ne payent pas
de frais de licence pour utiliser Unix et, lorsqu’elles réclament le code source à Ken Thompson,
celui-ci a l’habitude d’ajouter un petit mot au colis de bandes magnétiques et de disquettes : « Love,
Ken ».
Figure 1–2
À quoi ressemblait l’informatique en 1970, avant Microsoft et Apple ?
Durant les années 1970 et le début des années 1980, les universités utilisent à peu près exclusivement
Unix. Les entreprises décident d’emboîter le pas et l’adoptent également à grande échelle. Après tout,
les étudiants d’aujourd’hui font les ingénieurs de demain. Techniquement, Unix est à la pointe des
systèmes d’exploitation. C’est un vrai système multitâche et multi-utilisateur, robuste et transparent. Il
définit clairement les droits d’accès aux fichiers, il sépare les processus bien proprement et il est
conçu dès le départ pour fonctionner en réseau. Petit à petit, Unix est en bonne voie de faire tourner
les ordinateurs du monde entier.
L’âge d’or d’Unix connaît une fin abrupte et quelque peu absurde en 1983. Dans le cadre de la lutte
antitrust du gouvernement de Ronald Reagan, les laboratoires Bell sont séparés de leur maison mère,
l’entreprise de télécommunications AT & T (American Telephone and Telegraph). Dans la foulée des
actions judiciaires qui s’ensuivent, un décret qui empêchait la commercialisation d’Unix jusque-là est
rendu caduc. AT & T décide de sauter dans la brèche ouverte par la nouvelle législation et de
s’approprier le système Unix et tout le code qui va avec, en faisant fi des nombreuses contributions
externes. L’émoi causé par cette mainmise – qui a failli sonner le glas du système – est considérable
dans la communauté des hackers.
Les étudiants qui ont contribué au code d’Unix s’estiment doublement lésés. D’une part, AT & T
« oublie » de les rémunérer alors que les licences sont monnayées au prix fort. D’autre part, ils n’ont
plus accès à leur propre code ou – situation plus ubuesque encore – n’ont plus le droit de l’utiliser
pour de sombres raisons de propriété intellectuelle.
Certes, AT & T essaie de calmer le jeu en annonçant que les universités pourront désormais
bénéficier de tarifs préférentiels pour les licences. Il n’empêche que l’accès au code source est
dorénavant restreint. Du jour au lendemain, Unix est devenu un système d’exploitation rigoureusement
propriétaire et commercial.
Figure 1–3
Richard Stallman, l’initiateur du projet GNU
Revenons un peu en arrière, en 1980, et rendons visite à Richard Stallman dans son laboratoire
d’Intelligence Artificielle au Massachusetts Institute of Technology (MIT). Richard est confronté à
un problème qu’il n’arrive pas à résoudre. La nouvelle imprimante laser du laboratoire, une Xerox
9700, se bloque régulièrement et refuse d’imprimer suite à des erreurs de bourrage papier. En bon
hacker qui se respecte, Richard aime relever les défis techniques et le dysfonctionnement d’un
périphérique tombe dans cette catégorie.
La précédente imprimante, une Xerox XGP, avait connu exactement le même problème de bourrage
papier et Richard l’avait résolu comme un informaticien de l’époque pouvait résoudre ce genre de
problème : il avait réclamé le code source du pilote à Xerox et s’était plongé dans sa lecture. Après
avoir identifié l’erreur, il lui avait suffi de modifier et recompiler le code pour que l’imprimante
fonctionne correctement.
GLOSSAIRE Pilote/driver
Un driver ou « pilote » de périphérique, c’est le code qui permet au système d’exploitation de
communiquer avec le périphérique en question.
Or, le problème auquel Richard se heurte cette fois-ci n’est pas d’ordre technique. Le fabricant Xerox
vient en effet d’opposer un refus à sa demande, estimant que le code source est désormais un secret
de fabrication. Richard ne peut donc pas y accéder, encore moins l’étudier ou le corriger. En
revanche, Xerox l’invite à « envoyer un rapport d’erreurs », afin que les ingénieurs de l’entreprise
puissent étudier le problème à sa place et mettre à disposition une mise à jour qui corrigera
éventuellement le dysfonctionnement.
Richard sent naître en lui un mélange de colère et d’impuissance. Les constructeurs de matériel
informatique tendent visiblement à ne plus livrer que des pilotes au format binaire, sans le code
source qui va avec. L’utilisation de licences logicielles restrictives s’impose manifestement comme
une nouvelle norme. C’est une véritable gangrène qui touche le monde de l’informatique et le pourrit
de l’intérieur. Il faut donc trouver une solution, une force nouvelle qui puisse contrecarrer cette
tendance funeste.
Le 27 septembre 1983, quelques mois après la mainmise d’AT & T sur Unix, Richard Stallman poste
un message sur Usenet pour annoncer la naissance du projet GNU, un système d’exploitation libre
compatible à Unix.
Pour Richard comme pour beaucoup d’autres, Unix reste le système d’exploitation de référence, pour
toutes les raisons évoquées plus haut. Son seul défaut, c’est qu’il n’est pas libre. L’ambition du projet
GNU consiste ni plus ni moins à réinventer la roue et proposer un système d’exploitation libre 100 %
compatible Unix mais qui, justement, n’est pas Unix, c’est-à-dire qu’il ne contient aucune ligne de
code d’Unix.
Un système d’exploitation comme Unix n’est pas un bloc monolithique. Il est composé d’une
multitude de petits programmes, dont chacun s’acquitte d’une tâche bien définie. Cette modularité va
considérablement faciliter la tâche au projet GNU, qui se pose comme but concret de remplacer l’un
après l’autre chacun des composants d’Unix par un équivalent libre.
C’est donc un projet d’envergure, une vaste mosaïque qu’il s’agit de compléter avec beaucoup de
patience, morceau par morceau. Richard Stallman lui-même démissionne de son poste au MIT en
janvier 1984 pour se consacrer entièrement au projet GNU et développer quelques logiciels
significatifs : un compilateur, un débogueur, une collection d’outils basiques et l’éditeur de texte
Emacs.
Richard comprend très vite que le projet GNU a besoin d’une infrastructure légale pour assurer sa
pérennité et lui éviter d’être cannibalisé par les éditeurs de logiciels propriétaires. En 1985, il crée
la FSF (Free Software Foundation), une organisation à but non lucratif pour la défense et la
promotion du logiciel libre. Cette même année, il publie le Manifeste GNU, un texte fondateur qui
porte aussi bien sur l’aspect technique et social du projet que sur sa philosophie.
Le terme de « logiciel libre » est également clarifié ; en effet, le terme anglais free comporte une
ambiguïté et il s’agit de distinguer free as in speech (libre, dans le sens de « liberté de la parole ») et
free as in beer (gratuit, dans le sens de « bière à gogo »). Selon la définition proposée par Richard,
un logiciel est libre s’il respecte les quatre conditions fondamentales :
• la liberté d’utiliser le logiciel ;
• la liberté de le copier ;
• la liberté d’en étudier le fonctionnement ;
• la liberté de le modifier et de redistribuer cette version modifiée.
Une seule obligation permet de préserver ces quatre libertés : toute personne qui souhaite apporter
des modifications au code source d’un logiciel – en vue de l’améliorer ou d’en modifier le
comportement – est tenue de publier ces modifications sous les mêmes conditions, en respectant à son
tour les quatre libertés fondamentales. C’est l’application du principe du copyleft (un jeu de mots sur
copyright, « droit d’auteur ») qui évite notamment l’appropriation du code source libre par une
entreprise. Ce principe est entériné dans la licence publique générale GNU (ou licence GPL), que
Stallman publie en 1989.
Durant la seconde moitié des années 1980, le projet GNU progresse lentement, mais sûrement. En
1990, l’ensemble des composants est réalisé et il ne manque plus que le noyau du système. Or, le
noyau – ou kernel – constitue également la partie la plus importante du code, la pièce maîtresse, celle
qui se situe le plus près du matériel et qui contrôle les fonctions élémentaires comme la gestion de la
mémoire et des processus, le contrôle des périphériques, etc.
Pour compléter son système d’exploitation libre, la FSF (Free Software Foundation) lance Hurd, un
projet de noyau libre pour les systèmes Unix en général et GNU en particulier. Malheureusement, le
développement s’avère long et fastidieux. Le projet va battre de l’aile dès les débuts et Hurd fera
progressivement sa descente vers les limbes de ces grands projets informatiques voués à rester
éternellement en chantier.
Figure 1–5
À ce jour, le noyau GNU/Hurd n’est toujours pas finalisé. La version 0.8 a été publiée le 18 mai
2016.
Linus Torvalds et le noyau Linux
Début janvier 1991, de l’autre côté de l’Atlantique, en Finlande, le jeune étudiant en informatique
Linus Torvalds décide d’investir dans du matériel informatique. Il n’hésite pas à s’endetter sur trois
ans pour acheter ce qui se fait de mieux en matière d’ordinateur personnel : un IBM PC 30 386
flambant neuf, équipé d’un processeur 32-bits.
Il commande un jeu de disquettes d’installation du système Minix, une variante pédagogique d’Unix
développée par le professeur Andrew Tanenbaum, qui lui servira pour les cours sur l’architecture
des systèmes d’exploitation qu’il suit à l’université de Helsinki. Tanenbaum est l’auteur de l’ouvrage
de référence en la matière, Operating Systems Design and Implementation, un pavé de plus de sept
cents pages. Selon ses propres dires, Linus Torvalds passe les premiers mois de l’année 1991 à faire
deux choses principalement :
1 Rien.
2 Lire Operating Systems Design and Implementation.
Au bout d’un mois d’attente, Linus Torvalds finit par trouver le jeu de disquettes Minix dans sa boîte
aux lettres, ce qui lui permet de remplacer le système MS-DOS livré en version réduite avec son
matériel par quelque chose qui ressemble à Unix. Malgré sa visée pédagogique, Minix reste un
système Unix sous le capot et son code source est disponible. Linus va passer les mois suivants à se
faire les dents sur son nouveau système et à l’explorer dans ses moindres recoins pour en découvrir
les possibilités.
URL Minix
Le système d’exploitation Minix (Minimal Unix) est toujours utilisé à des fins pédagogiques. Il en
est actuellement à sa version 3.3.0.
http://www.minix3.org/
Les limitations de Minix ne tardent pas à frustrer Linus, notamment l’émulateur de terminal qui est
censé gérer la connexion à distance à l’ordinateur de l’université. Les hivers sont rudes en Finlande
et, lorsqu’un étudiant en informatique veut éviter de sortir de chez lui, la possibilité de se connecter à
distance pour travailler devient une nécessité. Certes, l’émulateur de terminal inclus dans Minix
permet à Linus de lire ses courriels et de poster des messages sur Usenet, mais le téléchargement de
fichiers à distance ne fonctionne pas. Ajoutons à cela le fait que l’architecture 16-bits de Minix ne
tire pas pleinement profit des ressources de son processeur. Enfin, même si le code source est
disponible, le système n’est pas vraiment libre, au vu des restrictions imposées par Andrew
Tanenbaum quant à la modification et à la redistribution du code.
Linus a bientôt terminé la lecture d’Operating Systems Design and Implementation. Il sent que les
cours sur Minix ne lui apportent plus grand-chose. Il décide donc de sécher ses cours et de mettre à
profit le temps ainsi gagné pour coder son propre émulateur de terminal. Il part littéralement de zéro,
c’est-à-dire qu’il écrit son code directement au niveau du matériel, sans passer par Minix.
Le 25 août 1991, Linus Torvalds poste un message désormais célèbre sur news://comp.os.minix. J’essaie
de le traduire aussi fidèlement que possible :
De : torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Groupe : comp.os.minix
Sujet : Qu’est-ce que vous aimeriez bien voir dans Minix ?
Date : 25 Août 91
Je construis un système d’exploitation (libre) pour les clones 386(486)AT (juste pour le fun, rien de gros et
pro genre gnu). C’est en train de mijoter depuis avril et ça commence à être prêt. J’aimerais avoir des retours
sur ce que les gens aiment/ n’aiment pas dans Minix, vu que mon OS y ressemble plus ou moins (même organisation
physique du système de fichiers [pour des raisons pratiques] entre autres choses).
Pour l’instant, j’ai porté bash(1.08) et gcc(1.40) ; ça a l’air de marcher. Ce qui signifie que j’aurai quelque
chose d’utilisable d’ici quelques mois et j’aimerais savoir ce que les gens voudraient comme fonctionnalités.
Toutes les suggestions sont les bienvenues, mais je ne promets pas de les implémenter :-)
Linus (torvalds@kruuna.helsinki.fi)
PS. Oui – il est débarrassé de tout code Minix et il a un système de fichiers multithread. Il n’est PAS portable
et il ne supportera probablement jamais autre chose que les disques durs AT, étant donné que c’est tout ce que
j’ai :-(
Quelques semaines plus tard, le 17 septembre 1991, Linus décide de publier la version 0.01 de son
système sur le serveur FTP de l’université. Il choisit le nom de Freax, une contraction de free
(libre/gratuit), de freak (obsédé) et du « X » final caractéristique des Unix. Ari Lemmke n’apprécie
pas du tout ce nom et décide de son propre chef de nommer le répertoire de téléchargement
/pub/OS/Linux.
Linus n’envoie pas d’annonce officielle pour la version 0.01 et se contente d’en informer quelques
amis et collègues par courriel. En revanche, la publication de la version 0.02 est annoncée
solennellement sur news://comp.os.minix et beaucoup d’utilisateurs de Linux considèrent que le message
correspondant marque la « véritable » naissance de Linux :
De : torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Groupe : comp.os.minix
Sujet : Sources d’un noyau libre de type Minix pour 386-AT
Date : 5 octobre 91
Vous regrettez le bon vieux temps de minix-1.1, lorsque les hommes étaient des hommes et écrivaient eux-mêmes
les pilotes pour leur matériel ? Vous n’avez pas de projet intéressant en cours et vous crevez d’envie de mettre
les mains dans le cambouis d’un OS que vous pouvez adapter à vos besoins ? Ça vous agace quand tout marche bien
sous Minix ? Finies les nuits blanches pour faire fonctionner un petit logiciel bien pratique ? Alors ce message
est sûrement pour vous.
Comme je l’ai dit il y a un mois (?), je travaille en ce moment sur une version libre d’un minixoïde pour les
machines de type AT-386. J’en suis à un stade où c’est même utilisable (ou pas, ça dépend de ce que vous voulez)
et je suis prêt à distribuer les sources à plus grande échelle. C’est juste la version 0.02 (+1 [très petit]
patch déjà), mais j’ai réussi à faire tourner bash/gcc/gnu-make/gnu-sed/compress etc. avec.
Les sources de mon petit projet sont disponibles à nic.funet.fi (128.214.6.100) dans le répertoire
/pub/OS/Linux. Ce répertoire contient également un fichier README et une poignée de binaires pour travailler
sous Linux (bash, update et gcc, que demander de plus :-). Les sources complètes du noyau sont fournies, vu
qu’aucune ligne de code Minix n’a été utilisée. Les sources des bibliothèques ne sont que partiellement libres,
elles ne peuvent donc pas être redistribuées pour le moment. Le système peut être compilé tel quel et il est
censé fonctionner. Heh. Les sources des binaires (bash et gcc) sont disponibles au même endroit, dans /pub/gnu.
ALERTE ! AVERTISSEMENT ! ATTENTION ! Ces sources ont tout de même besoin de minix-386 pour être compilées (et
gcc-1.40, peut-être même 1.37.1, pas testé) et il vous faut Minix pour le configurer si vous voulez le faire
tourner, donc ce n’est pas encore un système indépendant pour ceux qui n’auraient pas minix. J’y travaille. Il
vous faut également avoir l’esprit bidouilleur pour le configurer (?), donc ceux qui cherchent une alternative à
minix-386, passez votre chemin. Pour l’instant, ça s’adresse aux bidouilleurs qui s’intéressent aux systèmes
d’exploitation et aux 386 avec un accès à Minix.
Le système a besoin d'un disque dur compatible AT (l’IDE c’est très bien) et EGA/VGA. Si vous êtes toujours
intéressés, procurez-vous le README/RELNOTES sur le ftp et/ou envoyez-moi un mail pour des infos
supplémentaires.
Je vous entends déjà (enfin, presque) vous demander : "Pourquoi?". Hurd va sortir d’ici un an (ou deux, ou dans
un mois, qui sait) et j’ai déjà Minix. C’est un système fait par un bidouilleur pour les bidouilleurs. Je me
suis bien amusé à l’écrire et ça fera peut-être plaisir à quelqu’un d’y jeter un coup d’œil et même de l’adapter
à ses propres besoins. Il est suffisamment petit pour qu’on puisse le comprendre, l’utiliser et le modifier.
J’attends les commentaires que vous pourrez y apporter.
[...]
Linus
Dans le contexte de l’époque, ce message est un véritable pavé dans la mare. Voilà quelqu’un qui a
réussi à faire tourner un « vrai » Unix sur son ordinateur personnel. Un Unix libre de surcroît, avec
son propre noyau libre et les outils GNU qui vont avec : le compilateur GCC, l’interpréteur de
commandes Bash, l’éditeur de flux sed, etc.
Cette fois-ci, les contraintes matérielles et les lacunes du projet constituent juste autant de défis à
surmonter. Les réactions de la communauté ne tardent pas à venir et elles sont aussi enthousiastes que
nombreuses. C’est une véritable avalanche que Linus a déclenchée. Les hackers du monde entier lui
envoient une foule de suggestions et de demandes, mais également des rapports de bogues.
Durant les mois à venir, Linus va peaufiner le code de son système en interaction constante avec la
communauté. Celle-ci se montre d’ailleurs reconnaissante en organisant spontanément une collecte
qui permettra à Linus de s’acquitter des mensualités restantes pour sa machine de développement. Fin
1991, il décide d’aller voir une conférence de Richard Stallman sur le projet GNU à l’université de
Helsinki. Il est impressionné par la présentation de Stallman et prend une décision d’une importance
capitale pour la suite du projet.
Figure 1–6
Linus Torvalds, créateur et mainteneur du noyau Linux
Les toutes premières versions de Linux étaient certes libres, avec une restriction cruciale toutefois :
l’utilisation commerciale du code était interdite. En janvier 1992, Linus Torvalds annonce son
intention de libérer complètement le code de son noyau en le publiant dorénavant sous licence GNU
General Public License. Ce changement de licence va encourager de nombreux utilisateurs dans le
monde à migrer de Minix vers Linux.
Les ancêtres Slackware, Red Hat et Debian
En 1992, l’installation d’un système Linux – ou plus exactement d’un système GNU et d’un noyau
Linux – reste une aventure réservée à une élite de bidouilleurs avec un certain sens de l’aventure,
comme Linus Torvalds a pu le préciser dans son message détaillé sur Usenet : this is a program for
hackers by a hacker.
Les toutes premières versions de Linux sont distribuées sous forme de deux disquettes qui fournissent
le minimum syndical du système.
• La première disquette est amorçable et contient le noyau.
• La deuxième disquette fournit une panoplie d’outils GNU qui permettent entre autres choses de
créer un système de fichiers.
Un tel système minimal ne permet pas de faire grand-chose. Le nombre de logiciels libres
disponibles au téléchargement augmente certes de façon exponentielle, mais leur installation reste une
procédure longue et pénible. Le code source de chaque composant d’un logiciel doit d’abord être
téléchargé au compte-gouttes via une connexion téléphonique. Une fois qu’on a récupéré le code
source, il faut le configurer manuellement pour l’adapter au système avant de lancer la compilation et
l’installation. Chacune de ces étapes est hautement chronophage et engloutit facilement des après-
midis ensoleillés, voire des week-ends entiers.
Les premières distributions Linux apparaissent dans le but de simplifier la procédure d’installation :
Boot Root, Yggdrasil Linux/GNU/X, SLS Softlanding Linux Systems et d’autres encore.
Ces toutes premières distributions souffrent toutes d’une série de défauts prohibitifs. Soit elles sont
pathologiquement minimalistes et n’offrent guère de confort. Soit la panoplie de logiciels fournis est
déjà plus complète, mais l’installateur est truffé de bogues à tel point que l’ensemble reste à peu près
inutilisable.
Slackware Linux
Le 16 juillet 1993, Patrick Volkerding, étudiant en informatique à la Minnesota State University
Moorhead, annonce la publication de Slackware Linux 1.00 sur news://comp.os.linux :
De : Patrick J. Volkerding (bf703@cleveland.Freenet.Edu)
Sujet : ANNONCE: Slackware Linux 1.00
Groupes: comp.os.linux
Date : 1993-07-16 17:21:20 PST
La distribution Slackware Linux (v. 1.00) est disponible dès à présent sur FTP anonyme. Il s’agit d’un système
d’installation complet, conçu pour les systèmes avec une disquette 3.5". Il a été abondamment testé avec un
système 386/IDE. Le noyau par défaut n’offre pas de support SCSI, mais s’il y a suffisamment de demande, ça
pourrait me motiver pour compiler une poignée de noyaux spécifiques que je mettrais sur FTP.
Cette version est largement basée sur le système SLS, avec une série de modifications et d’améliorations
substantielles. Elle est constituée de deux principaux groupes de disquettes, A (13 disquettes) et X (11
disquettes).
[...]
--
Patrick Volkerding
volkerdi@mhd1.moorhead.msus.edu
bf703@cleveland.freenet.edu
On peut considérer que Slackware est bien la première distribution Linux, dans la mesure où il s’agit
du premier système Linux réellement utilisable. Contrairement à l’ancêtre SLS Softlanding Linux
Systems sur lequel elle se base, Slackware ne contraint plus les utilisateurs à sauter à travers des
cerceaux en feu pour obtenir un système Linux raisonnablement complet sur leur machine.
Figure 1–7
Patrick Volkerding, le créateur de la distribution Slackware
Vous serez peut-être surpris d’apprendre que la distribution Slackware est encore activement
maintenue et qu’elle se porte très bien. Elle a fêté ses vingt ans le 16 juillet 2013. Au moment de la
rédaction de ces lignes, la dernière version stable est la Slackware 14.2, publiée le 1er juillet 2016.
URL Slackware Linux
http://www.slackware.com
Figure 1–8
La distribution Red Hat Linux est développée entre 1994 et 2003. Elle cède la place à la distribution
communautaire Fedora et son pendant commercial Red Hat Enterprise Linux.
Debian GNU/Linux
Le projet Debian est lancé deux mois après la publication de la première version de Slackware, dans
le but de fournir une distribution Linux de qualité, qui resterait entièrement communautaire. Le nom
de la distribution est une contraction des prénoms respectifs de son regretté fondateur Ian Murdock et
de celui de sa femme Debra. Peu de temps après la fondation, le nom de « Debian Linux » est
officiellement modifié en « Debian GNU/Linux » pour souscrire à l’avis de la Free Software
Foundation, qui considère qu’il s’agit d’un système GNU avec un noyau Linux.
Les objectifs de cette distribution sont fixés dans le Manifeste Debian, une sorte de contrat social qui
définit notamment l’engagement du projet vis-à-vis de ses utilisateurs et la priorité accordée aux
logiciels libres. En ses débuts, la distribution est d’ailleurs sponsorisée par la Free Software
Foundation.
La première version de Debian ne voit le jour qu’en 1996 et porte le nom de code « Buzz ». Depuis
cette première version et à ce jour, le système est constamment disponible en trois branches : stable,
testing et unstable. La branche stable, comme son nom le suggère, est à privilégier pour les machines
de production. La branche testing contient les éléments de la future version stable. Quant à unstable,
il s’agit d’une version en constante évolution. Cette façon de procéder garantit avant tout la
transparence du processus de développement de Debian. Notez au passage que l’adjectif unstable ne
signifie pas « qui plante tout le temps », mais « susceptible de changer de temps en temps ».
De nos jours, Debian est un projet vaste, avec plus d’un millier de développeurs dans le monde
entier, douze architectures prises en charge et quelques dizaines de milliers de paquets sources. Sur
les serveurs, Debian reste l’une des distributions les plus utilisées dans le monde. Sur les postes de
travail, elle constitue également la base robuste d’un certain nombre de projets à grande envergure
dans plusieurs pays.
Figure 1–9
Debian est la seule distribution majeure dont le nom fasse référence au projet GNU.
Techniquement, le système Debian se distingue par son gestionnaire de paquets dpkg et le frontend
APT (A Package Tool). Tout comme le gestionnaire de paquets RPM de Red Hat Linux, APT gère les
dépendances des paquets, mais il les résout automatiquement, ce qui facilite considérablement les
opérations d’installation et de mise à jour. Là encore, nous verrons tout cela en détail un peu plus
loin.
P OUR ALLER PLUS LOIN Les ouvrages sur Debian aux éditions Eyrolles
Les ouvrages sur Debian rédigés par Raphaël Hertzog et Roland Mas et publiés chez Eyrolles pour
chaque version stable de Debian constituent sans doute le meilleur support pour se former à cette
distribution, sur les serveurs aussi bien que sur les postes de travail. Je ne peux que vous en
conseiller la lecture, une fois que vous aurez terminé celui que vous tenez entre les mains ;o)
Linux pour tous : la famille Ubuntu
En 2002, le milliardaire et philanthrope sud-africain Mark Shuttleworth réalise le rêve de sa vie et
embarque à bord de la mission spatiale Soyouz TM-34 en tant que touriste de l’espace. Cet humaniste
passionné d’informatique devient ainsi un des rares privilégiés à avoir pu embrasser notre planète
d’un regard.
Il décide alors de financer le développement d’un système d’exploitation « par des humains, pour des
humains » et d’y participer lui-même. Ce projet sera basé sur la distribution Debian, pour laquelle
Mark Shuttleworth a travaillé à la fin des années 1990. En tant qu’ancien développeur de ce projet, il
en connaît les ficelles et la grande qualité technique. Cependant, Debian reste trop complexe à
installer pour un utilisateur lambda. La procédure d’installation et la configuration du système
requièrent une connaissance technique considérable. C’est justement là que réside le défi : créer un
système d’une grande qualité et d’une grande stabilité, accessible à tous : Ubuntu.
Le projet Ubuntu est actuellement financé et maintenu par la fondation du même nom, créée par Mark
Shuttleworth et dotée d’une mise initiale de 10 millions de dollars. La société Canonical, également
fondée par Shuttleworth, s’occupe quant à elle du support commercial et de la certification Ubuntu.
Figure 1–10
Mark Shuttleworth, le milliardaire philanthrope qui a initié le projet Ubuntu.
La distribution Ubuntu suit un cycle de développement programmé. Une nouvelle version est prévue
tous les six mois, donc deux versions par an. Ces versions sont numérotées par l’année et le mois de
la date de sortie. Ainsi, la version 14.04 est sortie en avril 2014, la 14.10 en octobre 2014, la 15.04
en avril 2015, la 15.10 en octobre 2015, et ainsi de suite.
Tous les deux ans, Ubuntu publie une version LTS (Long Term Support) qui bénéficie d’un cycle de
support prolongé pour les mises à jour de sécurité. Les versions 12.04, 14.04 et 16.04 sont des
versions LTS et reçoivent des mises à jour pendant une période de cinq ans.
La panoplie logicielle
La panoplie logicielle, c’est d’une part l’ensemble des logiciels installés dans la configuration par
défaut, définie par le distributeur, et d’autre part, l’ensemble des logiciels disponibles, autrement dit,
ceux que vous pouvez installer.
• Slackware et Red Hat Enterprise Linux ne livrent qu’une sélection restreinte de paquets
soigneusement entretenus.
• Debian, Ubuntu, openSUSE et Fedora proposent des paquets binaires pour tous les logiciels libres
entre ciel et terre. Ou presque.
En principe, si un logiciel n’est pas inclus dans la distribution, il est toujours possible d’aller
récupérer le code source et de le compiler soi-même. Le degré de difficulté de cette opération varie
grandement selon les distributions.
Dans la pratique quotidienne, le choix des logiciels installés par défaut constitue une différence
majeure entre les systèmes d’exploitation propriétaires et le monde du logiciel libre. Une installation
par défaut de Microsoft Windows ou de Mac OS X vous fournit généralement un navigateur web, un
client de courrier électronique, un navigateur de fichiers ainsi qu’une poignée d’amuse-gueule comme
un bloc-notes, un jeu de démineur, un jeu de cartes ou un jeu d’échecs. Un PC Windows acheté neuf
vous proposera très probablement une sélection de raccourcis du genre Cliquez ici pour tester ce
logiciel pendant 30 jours et autres cripplewares, terme anglais que l’on pourrait traduire par
« amputiciels », c’est-à-dire des logiciels dont vous devez activer certaines fonctionnalités en
achetant un code d’activation.
En comparaison, les distributions Linux grand public comprennent généralement d’office une
panoplie complète de logiciels pour Internet, la bureautique, le graphisme et le multimédia qui vous
rendent immédiatement productif. Et si vous souhaitez graver un CD ou exporter un PDF, pas la peine
de sortir la Carte Bleue pour acheter le logiciel de gravure ou le plug-in qui manque – ou d’appeler
le cousin Gérard pour qu’il vienne vous installer une version piratée.
Le caractère commercial
Un certain nombre de malentendus circulent autour des distributions commerciales, que nous allons
dissiper à l’aide de quelques exemples concrets.
Slackware Linux est une distribution commerciale, ce qui signifie qu’un utilisateur a la possibilité de
l’acheter. En effet, le site officiel propose un lien discret vers le Slackware Store avec toute sa
panoplie d’offres et de souscriptions. Cette formule est tout à fait volontaire et concerne tous ceux qui
souhaitent apporter un soutien financier à la distribution. Rien ne vous empêche cependant de
télécharger Slackware librement et gratuitement sur l’un des sites miroirs ; cette version téléchargée
ne diffère en rien de la version achetée, si ce n’est que les CD-Rom et les DVD achetés sont pressés
et non gravés. L’offre libre et gratuite n’est donc pas tronquée ou autrement réduite.
En comparaison, des distributions comme Red Hat Enterprise Linux, SUSE Linux Enterprise Server
ou SUSE Linux Enterprise Desktop sont des produits purement commerciaux, dans le sens où vous
devez payer une souscription pour les utiliser. Là encore, la logique n’est pas la même que pour les
systèmes propriétaires. Ce que vous achetez, ce ne sont pas les logiciels en eux-mêmes, mais la
possibilité de contacter le support technique du distributeur. Par ailleurs, la disponibilité des mises à
jour de sécurité pour votre système est également liée à l’achat d’une licence.
En dehors de cela, une distribution commerciale comme Red Hat Enterprise Linux respecte
parfaitement les termes de la licence GNU et reste un système libre. En effet, Red Hat publie
scrupuleusement le code source de toutes les déclinaisons de ses systèmes, un peu comme un grand
chef d’un restaurant quatre étoiles publierait l’ensemble de ses recettes « aux petits oignons » sur son
blog personnel.
La distribution Ubuntu offre encore une autre déclinaison dans le paradigme commercial. Chaque
version d’Ubuntu est normalement libre et gratuite, sans que l’accès aux mises à jour de sécurité soit
restreint. À partir de là, il est possible de contacter Canonical pour acheter une licence de support
professionnel.
La qualité « entreprise »
Non, ce n’est pas une erreur dans le manuscrit. Dans l’univers du logiciel libre, le caractère
commercial d’une distribution et sa qualité « entreprise » constituent effectivement deux aspects bien
distincts, même s’ils se rejoignent sur certains points.
Imaginons que votre entreprise héberge son site de e-commerce sur un serveur Linux. Une faille de
sécurité importante vient d’être découverte sur un des composants et l’administrateur décide de
mettre à jour le serveur. Malheureusement, l’application de e-commerce ne semble plus compatible
avec certains des nouveaux composants. Le site ne fonctionne plus correctement et il faut songer à
revoir d’urgence l’intégralité du code pour l’adapter à la nouvelle version. C’est le scénario
catastrophe.
L’ambition des distributions de qualité entreprise est donc de fournir une plate-forme robuste, stable
et pérenne pour faire tourner des applications sans causer de problèmes de compatibilité. Les deux
principes de base sur lesquels repose une telle distribution sont, d’une part, l’extension de la durée
du support et, d’autre part, la mise à disposition de mises à jour peu risquées. En pratique, pendant
une période de cinq ou sept ans, parfois même plus, un tel système bénéficiera de mises à jour de
sécurité sans que celles-ci introduisent de nouvelles fonctionnalités susceptibles de causer des
mauvaises surprises.
Les « grandes » distributions commerciales affichent cette qualité entreprise dans leur nom même :
Red Hat Enterprise Linux, SUSE Linux Enterprise Server, SUSE Linux Enterprise Desktop. Chacun
de ces produits bénéficie en effet d’une période de support étendu comprise entre sept et dix ans. En
comparaison, la durée du système communautaire Fedora est limitée à dix-huit mois, ce qui est bien
trop court pour un usage en entreprise.
Puisque Red Hat publie le code source de ses systèmes, rien n’empêche les utilisateurs un tant soit
peu chevronnés de le compiler pour fabriquer leur propre système de qualité entreprise. En pratique,
une telle compilation n’est pas une opération triviale, mais c’est effectivement ce qui se passe avec
des distributions comme CentOS (Community Enterprise Operating System), Scientific Linux,
Springdale Linux, Oracle Linux et autres. Tous ces distributeurs – la communauté CentOS, le
laboratoire du CERN à Genève, l’université de Princeton, la société Oracle – partent du code source
RHEL pour produire un système binairement compatible avec l’original. Les seules différences
visibles, ce sont les logos et la collection de fonds d’écran par défaut, que chacun adapte à son
propre gré.
DISTRIBUTION CentOS
La toute première version du présent ouvrage, intitulée Linux aux petits oignons et publiée chez
Eyrolles en juin 2009, est basée sur CentOS 5.3.
http://www.centos.org
Notons que l’entreprise Red Hat soutient activement les efforts des communautés comme CentOS,
étant donné qu’elle bénéficie entre autres choses des rapports de bogues qui lui reviennent en amont.
Toute cette famille de « clones RHEL » est extrêmement populaire sur les serveurs ainsi que sur les
super-ordinateurs. En effet, les ordinateurs les plus puissants de la terre tournent en majorité sous
CentOS.
Depuis quelques années, la variante LTS (Long Term Support) d’Ubuntu constitue également une
distribution libre et gratuite de qualité entreprise. À titre d’exemple, c’est la distribution proposée
par défaut sur les serveurs dédiés de la société Online. Au moment de la rédaction de ces lignes,
Ubuntu LTS équipe près de 70 000 postes de travail de la gendarmerie nationale.
La qualité de la documentation
La qualité de la documentation en ligne varie énormément selon les distributions.
Les distributions « brutes de décoffrage » comme Arch, Gentoo ou LFS (Linux From Scratch) se
distinguent à peu près toutes par une documentation exceptionnelle. Étant donné que l’installation, la
configuration et la maintenance de ces systèmes nécessitent constamment de plonger les mains dans le
cambouis, une bonne documentation est tout simplement vitale.
La documentation en ligne de Red Hat Enterprise Linux est également très complète. Les utilisateurs
des distributions clonées comme CentOS, Scientific Linux ou Springdale peuvent également s’en
servir, étant donné que leurs systèmes sont binairement compatibles.
La distribution Ubuntu dispose d’une documentation très bien faite sur deux niveaux. Le volet « poste
de travail » s’adresse aux débutants, dans un langage accessible aux non-informaticiens. La
documentation « serveur » est plus technique et offre un guide d’administration système assez bien
fait et qui couvre toutes sortes de scénarios.
En dehors des documents officiels, certaines distributions bénéficient d’une excellente documentation
rédigée par des tiers, comme la Formation Debian d’Alexis de Lattre, ou encore le Slackware
Documentation Project. Les communautés francophone et germanophone d’Ubuntu offrent également
deux véritables portails d’information bien plus complets que la documentation officielle.
Qui utilise Linux ?
Au cours des vingt dernières années, Linux s’est répandu un peu partout dans le monde, sans faire de
bruit, sans campagnes publicitaires et sans qu’une multinationale ne vienne « encourager » le
déploiement à coups de lobbying et autres méthodes douteuses. Voici quelques exemples en vrac.
• Les ordinateurs les plus puissants de la terre tournent à peu près exclusivement sous Linux.
D’après les statistiques publiées en novembre 2016, 498 des 500 machines recensées par
top500.org tournent sous Linux, trois sous Unix et aucune sous Windows. La prochaine fois que
quelqu’un vous sort que « Linux c’est bien gentil, mais c’est pour les bricoleurs », comme j’ai pu
l’entendre dans la bouche d’un décideur de l’Éducation nationale, vous saurez quoi lui rétorquer.
• L’infrastructure d’Internet est assurée en grande partie par Linux. Les gigantesques parcs de
serveurs des grandes entreprises comme Google, Facebook ou Amazon fonctionnent tous sous
Linux.
• Les systèmes Linux embarqués sont omniprésents dans notre quotidien et font tourner à peu près
tout, du modem-routeur ADSL au téléviseur, du distributeur de billets de trains au système de
navigation GPS, du téléphone portable au distributeur de boissons, etc. Il m’arrive de me
demander le matin dans la salle de bains si Linux est installé sur mon rasoir électrique.
• La gendarmerie nationale a migré une grande partie de son parc de 90 000 postes de travail de
Microsoft Windows XP vers Gendbuntu, une version spécialisée d’Ubuntu Linux LTS.
• La ville de Munich a migré ses quelque 15 000 postes de travail vers LiMux, une distribution
« maison » basée sur Debian et adaptée aux besoins de la municipalité. Pour l’instant, le projet
semble résister aux efforts de lobbying incessants déployés par Microsoft depuis 2003.
• La région d’Extrémadure en Espagne a également développé sa propre distribution GnuLinEx,
basée sur Debian, pour équiper l’ensemble des postes de travail dans les écoles et les
administrations.
• Le gouvernement d’Andalousie sponsorise le développement de Guadalinex, également basée sur
Debian, et qui équipe l’ensemble des postes de travail dans les écoles, les bibliothèques et les
lieux publics de cette région, sans compter les centaines de milliers de CD d’installation gratuits
distribués aux citoyens.
• Les grands studios de Hollywood utilisent des fermes de calcul GNU/Linux pour leurs images de
synthèse et les grands blockbusters comme Le Monde de Nemo ou Avatar ont été réalisés avec
des outils libres comme Blender, Gimp ou Inkscape.
• Les bourses de Londres et de New York ont migré l’ensemble de leurs serveurs critiques vers
Linux.
Cet aperçu est loin d’être complet. Notons qu’il est difficile voire impossible d’établir des
statistiques précises sur l’adoption des systèmes Linux dans le monde, pour la simple raison que les
distributeurs ne suivent pas les utilisateurs à la trace.
Envie d’apprendre à cuisiner ? Il vous faut tout d’abord... une cuisine. Un four, un réfrigérateur,
un évier. Des ustensiles de base. Sans parler des ingrédients, pour lesquels il va falloir songer à
faire quelques courses : marché ou supermarché ? Prenons le temps de répondre à toutes les
questions élémentaires que l’apprenti cuisinier sous Linux peut se poser. Car toute recette « aux
petits oignons » demande un peu de préparation...
Petite introduction culinaire
Il existe grosso modo trois façons de concevoir la cuisine. Prenons l’exemple d’un plat de lasagnes.
1 Achetez une boîte de lasagnes congelées. Placez le contenu dans un four à micro-ondes et faites
chauffer. Observez la transformation progressive du bloc de béton grisâtre en geyser de boue ocre
en ébullition. Notez qu’à aucun moment de l’opération, le plat ne ressemble à l’illustration
appétissante de l’emballage.
2 Achetez les ingrédients nécessaires pour la préparation d’un plat de lasagnes. Faites vos
emplettes au marché et aux petits commerces du quartier, en dédaignant les supermarchés. Pour
quatre personnes, prenez trois cent cinquante grammes de bœuf maigre, trois cents grammes de
farine, quatre œufs, un oignon, une carotte, une échalote, une branche de céleri, un bouquet garni,
quelques cuillerées d’huile d’olive, deux feuilles de sauge et un zeste de citron. Sans oublier une
grappe de tomates fraîches, un bol de parmesan râpé et un demi-litre de bouillon. Le cas échéant,
les tomates en boîte, le fromage en sachet et le bouillon en cube font très bien l’affaire. Si vous
êtes amateur, ajoutez un demi-litre de bon vin rouge, mais ce n’est pas indispensable. Épluchez,
lavez, hachez finement, épluchez encore, égouttez, hachez encore, coupez en petits dés, faites
chauffer, couvrez, laissez étuver, remuez, mélangez, salez, poivrez, faites bouillir, arrosez, portez
à ébullition, et ainsi de suite. Au bout d’une heure, sortez les lasagnes du four et servez-les avec
une petite coupelle de parmesan.
3 Inscrivez-vous à la Faculté des Sciences et suivez le cursus de biochimie alimentaire. Découvrez
et apprenez par cœur la composition moléculaire de quelques milliers d’aliments. Au bout de
deux ans à peine, vous serez en mesure d’évaluer le pH d’une sauce tomate et cinq ans d’études
suffiront pour vous permettre d’entreprendre la modélisation moléculaire d’un plat de lasagnes
alla bolognese.
Vous l’aurez deviné : le présent ouvrage se propose de vous initier à l’installation, la configuration,
l’administration et l’utilisation du système d’exploitation GNU/Linux comme un chef vous initierait à
la cuisine. Sa philosophie – son approche, si vous préférez – sera donc en tous points pratique et
pragmatique, semblable à la deuxième conception culinaire énoncée précédemment.
L’apprentissage de la cuisine nécessite d’une part de se familiariser avec une série d’ustensiles, de
les manier correctement. Bien sûr, on peut très bien essayer de découper un gigot avec un économe et
rien ne vous empêche de presser un citron avec un hachoir. Pourtant vous serez probablement bien
plus à l’aise lorsque vous aurez appris à manipuler de façon appropriée les ustensiles de base. De
façon analogue, les outils du monde GNU/Linux s’acquittent chacun d’une seule tâche bien précise et
c’est dans la combinaison des outils que réside leur puissance.
Par ailleurs, le choix des aliments constitue un point crucial dans la confection d’un bon plat. Le
projet Linux From Scratch utilise également une métaphore culinaire pour décrire la configuration
d’un système Linux. Selon LFS, l’utilisateur friand de hamburgers peut très bien se contenter d’en
acheter un tout fait au fast food du coin, à moins qu’il ne décide de se lancer lui-même dans la
confection d’un hamburger à son goût et choisisse soigneusement chacun des ingrédients.
Au final, qu’est-ce qu’on gagne ? Un système d’exploitation avec plus de saveur ? Développons un
peu plus la métaphore culinaire... À l’ère de la malbouffe logicielle généralisée, l’utilisateur
compétent d’un système GNU/Linux configuré « aux petits oignons » éprouvera une satisfaction
indéniable à mitonner sa propre préparation, sans cholestérol, sans OGM, sans date limite de
conservation. Et 100 % bio.
Et maintenant, en cuisine !
Se former à Linux avec Slackware
Pour la deuxième mouture de ce livre, j’ai pris le parti de choisir une distribution bien précise :
Slackware Linux, dans sa version 14.2, la dernière en date au moment de la rédaction de ces lignes.
Je préfère encore une fois illustrer mon propos par une analogie.
Il existe des centaines – voire des milliers – de modèles de voitures et de motos. Pourtant, lorsqu’on
observe ceux choisis par les moniteurs d’auto-écoles, ce sont toujours les mêmes deux ou trois
modèles qui reviennent : une 206 ou une Clio, un CB 500 ou une GS 500.
Les plus connaisseurs parmi les élèves bâilleront d’avance face aux prestations ennuyeuses de ces
véhicules. D’autres – comme le moniteur – affirmeront qu’ils cachent bien leur jeu et qu’il suffit de
savoir conduire. Quoi qu’il en soit, les modèles ont été choisis pour leur solidité et, surtout, parce
qu’ils ne réservent aucune mauvaise surprise. Et d’ailleurs, une fois le permis en poche, chaque
conducteur est libre de choisir son véhicule – Coccinelle, Espace, Jaguar – et d’y ajouter les
accessoires nécessaires pour une conduite agréable : ailerons, jantes en alu, queues de castor, sapins
magiques, autocollants Racing et pots d’échappement William Saurin.
Slackware est une distribution « brute de décoffrage » et dépourvue de toute la panoplie d’assistants
graphiques que l’on trouve habituellement dans les distributions grand public comme Ubuntu, Mint,
Mageia, Fedora ou openSUSE. Les scripts de configuration automatique que l’on peut trouver dans
les systèmes Debian ou CentOS lui font également défaut, ce qui est un atout pour nous.
Un système Slackware ne fera jamais rien à notre place : l’utilisateur est censé configurer son
système à la main, de A à Z, après s’être raisonnablement documenté. C’est précisément pour cette
raison que Slackware constitue la plate-forme par excellence pour découvrir tout ce qui tourne sous
le capot d’un système Linux et se familiariser avec.
En dehors de l’aspect purement pédagogique, Slackware est prisée par les administrateurs
professionnels pour sa fiabilité légendaire et la pérennité de sa conception. Face à la majorité des
distributions Linux, ses vingt ans d’expérience font effectivement toute la différence. Slackware est
avant tout une distribution mûrie, ce qui se traduit au quotidien par une robustesse qui cherche son
pareil. Concrètement, tous les composants sont dûment testés par Patrick Volkerding et son équipe
avant d’être intégrés dans la distribution. Les nouvelles versions de Slackware sont publiées sans
grand écho médiatique et apportent leur lot d’améliorations incrémentales tout en évitant les grands
bouleversements rebutants que l’on rencontre bien trop souvent dans l’univers de Linux et du libre.
Les utilisateurs des distributions grand public peuvent se moquer du « dinosaure », mais il faut bien
au moins une pluie de météorites pour en venir à bout.
Bien évidemment, il ne s’agit là que d’un bref aperçu superficiel, motivé par un proverbe de mon
pays natal qui dit « qu’une image en dit plus qu’un millier de paroles », mais c’est l’occasion de
préciser un principe pédagogique de ce livre.
Dans un premier temps, je vous montre certes ma manière de faire, en suivant mes choix pour tout
ce qui concerne non seulement la distribution, mais aussi l’environnement de travail autant que la
panoplie d’applications. En revanche, au terme de cet enseignement, vous aurez acquis une série
de compétences et de réflexes, un savoir-faire qui vous permettra finalement d’effectuer vos
propres choix et de peaufiner votre système Linux. Voilà toute l’ambition de ce livre.
Le matériel : usine à gaz ou simple gazinière ?
Je connais un pianiste hongrois d’une certaine renommée qui a une façon assez singulière de répéter.
Lorsqu’on lui confie un nouveau morceau à étudier, il prend la pile de partitions, s’installe dans un
fauteuil confortable et étudie chaque page en sirotant un café. Suivant la durée et la complexité du
morceau, l’opération peut durer quelques minutes ou quelques heures. Et c’est seulement après avoir
appris, mémorisé et maîtrisé mentalement chaque note, chaque mesure et chaque passage que le
maestro se lève, s’installe au piano et s’exécute.
Si vous vous sentez un talent comparable pour l’informatique, vous pouvez très bien vous contenter
de la simple lecture de ce livre. Dans le cas contraire, si vous doutez de vos capacités d’émulation
mentale, il vous faudra songer à vous procurer l’instrument approprié pour mettre en pratique le
contenu des chapitres à venir, à savoir un ordinateur.
Les utilisateurs curieux de s’initier à Linux possèdent généralement déjà un ordinateur, équipé dans la
totalité des cas d’un système Microsoft Windows préinstallé : 10, 8, 7, Vista ou XP.
Figure 2–2
Ce PC datant de 2008 est parfaitement adapté pour s’initier à Linux.
Étant donné que cet ouvrage se base principalement sur un environnement de bureau léger pour la
partie graphique, toutes les configurations présentées ont même pu être testées avec succès sur une
paire de vieux postes de travail NEC Powermate achetés neufs en 2002, dotés chacun d’un disque dur
de 40 gigaoctets, de 512 mégaoctets de RAM et d’une carte graphique Nvidia premier prix, autrement
dit le genre de machine qui faisait rêver un astrophysicien en 1996 et qui ferait tout juste pleurer de
désespoir un collégien de 2017 si vous lui en faites cadeau.
En théorie, peu importe que vous utilisiez un poste de travail classique ou un PC portable pour votre
apprentissage. Dans la pratique quotidienne, l’utilisation d’un portable peut éventuellement vous
confronter à un ou plusieurs des problèmes suivants :
• De plus en plus d’ordinateurs portables sont dépourvus de lecteur optique, ce qui nécessite la
confection d’une clé USB d’installation. La fin de ce chapitre détaille cette manipulation qui ne
relève certes pas de la magie noire, sans être tout à fait triviale non plus.
Figure 2–3
Ce vieux coucou datant de 2002 vous permettra également de mettre en pratique les exemples
proposés dans cet ouvrage.
• Certains composants spécifiques aux ordinateurs portables – notamment les cartes vidéo hybrides
ou certaines cartes réseau sans fil – sont un peu plus « pointus » à configurer. Il vaut mieux avoir
un peu d’expérience avant de s’atteler à la configuration de ce genre de matériel exotique.
• Si jamais un composant – comme la carte graphique ou la webcam – se montre récalcitrant à la
configuration, on pourra facilement le changer sur un poste fixe, mais pas sur un portable.
Ceci étant dit, ce sont surtout les machines très récentes qui risquent de poser des problèmes. Si vous
disposez d’un ordinateur portable vieux de quelques années, il y a de fortes chances que tous les
composants soient gérés d’office.
Voici quelques indications concernant la configuration matérielle requise pour votre machine :
• Processeur : un Pentium IV première génération ou l’équivalent de chez AMD ou VIA sera
largement suffisant. Si vous disposez d’un vieux portable équipé d’un processeur Pentium M,
vous pourrez également l’utiliser sous Slackware.
• Mémoire vive : 512 mégaoctets de RAM suffisent pour installer le poste de travail léger présenté
dans ce livre. Avec un ou deux gigaoctets de RAM, votre système sera bien plus réactif et vous
travaillerez plus confortablement. À titre comparatif, la moindre tour vendue neuve en promotion
de nos jours est généralement équipée de quatre gigaoctets (autrement dit 4 096 mégaoctets) de
RAM.
• Disque dur : un disque de 40 à 80 gigaoctets est largement suffisant pour notre installation.
Théoriquement, même un disque de 8 à 10 gigaoctets pourrait suffire. Là encore, les plus petits
disques SATA ou IDE vendus neufs de nos jours ne vont pas en-dessous de la barrière des 250
gigaoctets.
• Carte graphique : une carte bas de gamme fera l’affaire pour ce que nous projetons de faire. Si
vous optez pour un des postes Dell OptiPlex présentés plus haut, la puce graphique Intel intégrée
sur la carte mère convient parfaitement. Quoi qu’il en soit, il est inutile d’investir plus de 40 €
dans l’acquisition d’une carte vidéo. Autant acheter un avion de chasse pour aller faire vos
courses à l’épicerie du coin. Dans la plupart des cas, les cartes graphiques AGP et PCI Express
fonctionnent convenablement sous Linux. Voyez l’encadré pour un peu plus de détails.
• Lecteur : préférez un lecteur DVD-Rom à un lecteur CD-Rom.
• Clavier et souris : je recommande les produits Microsoft, très agréables au toucher.
• Écran : un écran plat 17 ou 19 pouces sera parfait, mais un modèle 15 pouces d’occasion fera
également l’affaire. Je vous conseille juste d’éviter les écrans cathodiques. Vos yeux valent plus
cher qu’un moniteur.
URL Ariase
http://www.ariase.com
Là encore, sans entrer dans des informations exhaustives, vous pouvez vous en tenir à ces quelques
règles générales :
• Évitez les abonnements « bas débit » par modem téléphonique 56 kbps. Si vous n’êtes pas éligible
à l’ADSL, il existe des solutions par satellite qui ne sont pas forcément plus chères, hormis
l’investissement matériel initial.
• En zone rurale, une connexion ADSL « bas débit » (512 kbps – 2 Mbps) fait très bien l’affaire.
• Exigez que le fournisseur d’accès vous livre un modem Ethernet qui fasse office de routeur. Évitez
les modems USB.
Figure 2–4
Tous les fournisseurs d’accès ne connaissent pas Linux.
• Pour installer Slackware 32-bits sur une machine munie d’un lecteur DVD, téléchargez le fichier
slackware-14.2-install-dvd.iso.
• Si votre machine est seulement munie d’un lecteur CD-Rom qui ne lit pas les DVD, téléchargez les
images CD. Pour installer le poste de travail léger présenté dans cet ouvrage, il vous suffira de
récupérer les trois premières images de CD-Rom slackware-14.2-install-d1.iso, slackware-14.2-install-
d2.iso et slackware-14.2-install-d3.iso. Notez que les images CD sont fournies seulement pour la
version 32-bits.
• Pour Slackware64, optez pour slackware64-install-dvd.iso.
Figure 2–5
Repérez l’entrée de menu Graver une image.
URL UNetbootin
http://unetbootin.sourceforge.net/
Une fois que UNetbootin est installé, insérez la clé USB, lancez l’application et sélectionnez le
bouton DisqueImage. Cliquez sur … et sélectionnez votre fichier .iso. Vérifiez si votre clé USB
apparaît bien dans le champ juste en-dessous, puis cliquez sur OK. Une barre de progression vous
informe alors de l’avancement de l’écriture du système de fichiers sur la clé.
Figure 2–6
UNetbootin permet de confectionner une clé USB d’installation.
Figure 2–7
Choisissez une clé d’une capacité de 4 gigaoctets ou plus.
1. Expérience vécue.
3
Pour découvrir un système d’exploitation comme Linux, il faut d’abord l’installer sur son
ordinateur. C’est probablement beaucoup moins difficile que vous ne l’imaginez. Avec un peu de
préparation, c’est même un jeu d’enfant.
L’œuf ou la poule ?
Nous voilà donc armés jusqu’aux dents de matériel, de supports d’installation et de bonne volonté. Et
nous nous retrouvons face à un dilemme. Tout le monde connaît le paradoxe de l’œuf et de la poule :
lequel était là en premier ? L’œuf, répondrez vous, pour vous raviser instantanément en songeant
qu’une poule a bien dû le pondre. La poule, donc ; mais non, car de quel œuf a-t-elle bien pu éclore ?
Et ainsi de suite, ad galinam aeternam.
Notre dilemme est analogue et peut être formulé ainsi :
• L’apprentissage de Linux par la pratique nécessite une installation fonctionnelle de Linux.
• L’installation de Linux nécessite de connaître un tant soit peu le système.
Pour sortir de ce cercle vicieux, nous allons effectuer dans un premier temps ce que certains
informaticiens anglophones appellent une chicken install : l’installation d’un système d’exploitation
telle qu’une poule serait capable de la réaliser. Il suffit qu’elle accepte les choix par défaut de
l’installateur en actionnant la touche Entrée avec son bec : OK, OK, OK, OK, OK, OK...
Au commencement était le BIOS
La première chose à faire lorsqu’on installe un système d’exploitation, c’est de régler le BIOS (Basic
Input/Output System ou « système élémentaire d’entrée/sortie ») de la machine pour qu’il démarre
sur le support d’installation, en l’occurrence le DVD, le premier CD-Rom ou la clé USB.
B.A.-BA Le BIOS
En termes très simples, le BIOS, c’est ce qui s’active immédiatement après l’allumage de votre
ordinateur, lorsque vous voyez défiler divers logos de carte mère et de carte graphique, un test
sommaire de la mémoire vive, ainsi que quantité d’informations diverses que vous avez toujours
eu envie d’ignorer – et qui défilent d’ailleurs à une telle vitesse que l’on a rarement le temps de les
lire.
Chaque constructeur possède sa touche magique pour entrer dans le menu du BIOS. Il vous suffit
d’appuyer dessus juste après avoir allumé votre ordinateur. Le plus souvent, c’est la touche Suppr.
D’autres fois, c’est une des touches Fx en haut de votre clavier : F1, F2 ou F10. Dans certains cas, il
est nécessaire d’appuyer sur la touche Échap avant de faire tout cela. Et dans de très rares cas, il
s’agit d’une combinaison improbable de touches, figurant dans un manuel introuvable, mais qu’une
armée de singes ataviques finirait par trouver au bout de quelques milliers d’années à peine.
Figure 3–1
Exemple de menu BIOS traditionnel
Tout ce que vous avez à faire ici, c’est indiquer à votre PC que le premier périphérique utilisé au
démarrage (First Boot Device) est votre lecteur CD-Rom ou DVD-Rom ou votre clé USB si votre
machine est dépourvue de lecteur optique. Le menu correspondant peut aussi s’appeler Boot Priority
(priorité de démarrage) ou bien Boot Order (ordre de démarrage). Enregistrez les changements et
quittez le menu du BIOS, ce qui s’effectue dans la majorité des cas en appuyant sur la touche F10.
Figure 3–2
Exemple de BIOS moderne. Repérez l’option UEFI.
À présent, démarrez sur votre DVD de Slackware. Si vous disposez du jeu de CD-Rom
d’installation, insérez le premier CD. Si tout se passe bien, vous voyez apparaître l’écran de
démarrage que voici :
Figure 3–3
Démarrage sur le DVD ou le premier CD-Rom d’installation de Slackware
L’écran de démarrage se présentera différemment si vous avez confectionné une clé USB
d’installation avec UNetbootin. Dans ce cas, ne vous tracassez pas. Votre clé USB offre les mêmes
fonctionnalités qu’un DVD ou un CD-Rom d’installation. Ce n’est que la présentation de l’écran
d’accueil de l’installateur qui change.
Testez votre mémoire !
Normalement, il nous suffirait d’appuyer sur Entrée pour lancer l’installation. Il est vrai que nous
nous étions promis de fonctionner en mode « poule écervelée » et de n’utiliser que les options par
défaut. Pourtant, dérogeons à notre propre règle pour cette fois, créant ainsi la fameuse exception qui
la confirme, et tapons memtest, suivi de la touche Entrée.
Memtest86 est un petit utilitaire inclus dans le disque d’installation de Slackware, qui permet de
tester le bon fonctionnement de la RAM (Random Access Memory, autrement dit la mémoire vive de
votre PC). Rien ne vous empêche de visualiser cette mémoire vive comme un amas de millions de
petites cellules grises. Tout ce que l’ordinateur traite, calcule, affiche, etc. passe par ces petites
cellules.
URL Memtest86
Memtest86 est un utilitaire indépendant de Slackware.
http://www.memtest86.com
Figure 3–4
L’écran de Memtest86
Chez l’être humain normalement constitué, la destruction de quelques millions de cellules grises –
suite à une soirée bien arrosée, par exemple – pourrait presque passer inaperçue, à condition de ne
pas répéter l’opération trop souvent, bien sûr. Dans le cas du PC, en revanche, le dysfonctionnement
ne serait-ce que d’une seule de ces millions de cellules peut entraîner des conséquences désastreuses,
résultant en un système à peu près inutilisable.
Le hic, c’est que les erreurs provenant d’une barrette de RAM défectueuse peuvent se révéler
perfides. Dans certains cas, elles ne se manifestent pas immédiatement. Pendant un certain temps,
l’ordinateur semble même fonctionner normalement. Cependant, à peine a-t-on lancé plus de trois
applications en même temps que l’on obtient des erreurs inexplicables.
Ajoutez à cela le fait que les barrettes de mémoire vendues neuves dans le commerce ne sont pas
testées et vous avez toutes les raisons de vouloir vous assurer que vous partez sur des bases saines.
L’affichage de Memtest86 semble quelque peu hermétique, mais parmi toutes les informations
retournées, seule une poignée nous intéresse.
• Dans la première colonne à gauche, Memory: affiche la quantité totale de RAM disponible, en
mégaoctets. Sur notre exemple, 2048M signifie que la machine dispose de deux gigaoctets de
mémoire vive. Vérifiez si la totalité de la mémoire dont vous êtes censé disposer s’affiche bien
ici.
• Les deux barres de progression dessinées par répétition du symbole dièse ####### près du bord
supérieur de l’écran indiquent l’état d’avancement des tests effectués.
• Dans la colonne des résultats, il n’y a que deux valeurs qui nous intéressent : Pass et Errors. La
première indique le nombre de fois que Memtest86 a effectué la totalité des tests. Et si Errors
indique autre chose que 0 (zéro), il vous faudra songer à remplacer la ou les barrette(s)
incriminée(s).
Notez que Memtest86 ne s’arrête pas spontanément en bout de course. Dès que l’ensemble des tests a
été appliqué sur la totalité de la mémoire, le programme s’exécute à nouveau depuis le début. Vous
devez donc l’interrompre manuellement, grâce à la touche Échap.
À SAVOIR
Comptez entre dix minutes et plusieurs heures pour un test complet, en fonction de la puissance de
calcul du processeur et de la quantité de mémoire à tester.
Installation de Slackware
Premiers pas
Lancez l’installation pour de bon, autrement dit, confirmez simplement avec Entrée à l’invite de
commande boot:.
Vous voyez défiler une série de messages cryptiques qui vous inquiètent vaguement. Au terme de
l’initialisation de l’installateur, un premier écran vous affiche le message suivant :
<OPTION TO LOAD SUPPORT FOR NON-US KEYBOARD>
If you are not using a US keyboard, you may now load a different keyboard map. To select a different keyboard
map, please enter 1 now. To continue using the US map, just hit enter.
Et là, vous vous inquiétez encore plus, parce que vous parlez l’anglais comme si vous aviez une
patate chaude dans la bouche.
L’écran KEYBOARD MAP SELECTION affiche alors la liste des dispositions clavier disponibles.
Utilisez les touches FlècheHaut et FlècheBas pour naviguer dans cette liste. Sélectionnez azerty/fr-
latin1.map pour un clavier français AZERTY, en appuyant sur la touche Entrée une fois qu’il est en
surbrillance.
Figure 3–5
Choisissez la disposition du clavier dans la liste.
L’écran subséquent vous laisse tester la disposition clavier choisie en tapant du texte au hasard. Pour
confirmer, tapez 1 ; sinon, tapez 2.
Figure 3–6
Identifiez-vous simplement en tant que root pour continuer.
Le message se termine sur une invite de connexion qui vous invite justement à vous identifier en tant
que root. Nous reviendrons plus en détail sur ce mystérieux root, qui n’est personne d’autre que
l’administrateur sur les systèmes Unix et Linux. Pour l’instant, tapez simplement ce nom et validez
par Entrée :
You may now login as ‘root’.
Un message s’affiche alors, qui commence par Linux-4.4.14 ou Linux-4.4.14-smp et se termine par une
invite de commandes :
root@slackware:/# _
Vous l’aurez deviné : le curseur qui clignote distraitement derrière le dièse # signifie que le système
attend que vous lui disiez quoi faire.
Les vétérans de Windows remarqueront un air de famille avec le programme de partitionnement Fdisk.
Cela n’a rien de surprenant, étant donné que cfdisk a été conçu justement pour ressembler à l’outil du
monde Microsoft.
Ici, deux cas de figure se présentent :
• Votre disque dur est vierge et cfdisk vous affiche le dialogue de sélection du type de
partitionnement Select label type. Optez pour un partitionnement DOS traditionnel. À partir de là,
l’intégralité de votre disque dur s’affiche en tant que Free space (espace libre).
• Vous voyez une ou plusieurs partition(s) subsistant d’une ancienne installation et c’est un joyeux
mélange de ntfs et/ou de vfat et/ou de Free space. Dans ce cas, il vous faut d’abord supprimer
toutes ces partitions l’une après l’autre avant de pouvoir continuer.
Figure 3–7
Avant de commencer à partitionner, supprimez les partitions qui peuvent subsister d’une installation
existante.
Figure 3–8
Sur un disque dur vierge dépourvu de table de partitions, nous devons choisir entre un
partitionnement GPT moderne et DOS traditionnel. Dans le doute, optez pour DOS.
Figure 3–10
La taille (size) de la partition d’échange sera égale à la quantité de mémoire vive disponible, soit 2
gigaoctets dans notre cas.
Figure 3–11
Nous avons le choix entre une partition primaire (primary) et une partition étendue (extended). Pour
l’instant, optez pour « primary ». Nous verrons les différents types de partitions plus loin.
Figure 3–12
Une fois que la partition est créée, il faut indiquer à cfdisk qu’il s’agit d’une partition d’échange en
passant par « Type ».
Figure 3–13
Un menu déroulant nous confronte à une pléthore de types de partition disponibles. Choisissez « 82
Linux swap ».
Figure 3–14
La partition d’échange a été créée avec succès.
Figure 3–15
Il ne reste plus qu’à créer la partition principale. Positionnez la barre en surbrillance sur l’espace
libre et sélectionnez « New » pour une nouvelle partition.
Figure 3–16
La nouvelle partition occupera tout le reste du disque. Confirmez simplement la taille calculée par
défaut.
Figure 3–17
Là aussi, nous optons pour la création d’une partition primaire.
Figure 3–18
L’option « Bootable » active ou désactive le fanion d’amorçage (Boot). Appuyez plusieurs fois
dessus pour tester l’option, puis maintenez éventuellement l’état amorçable, tout en sachant que
l’activation du fanion d’amorçage n’a plus qu’un intérêt historique depuis belle lurette.
Figure 3–19
À présent, il faut écrire la nouvelle table de partitions sur le disque, ce qui s’effectue avec l’option
« Write ».
Figure 3–20
La redéfinition d’une table de partitions n’est pas une tâche anodine. C’est pour cela que cfdisk nous
demande de confirmer explicitement en saisissant « yes » et en validant par la touche Entrée.
Figure 3–21
Il ne nous reste plus qu’à quitter (Quit) l’outil de partitionnement.
L’installateur Slackware comporte une interface NCurses, c’est-à-dire une interface graphique en
mode texte. Vous n’utiliserez donc pas la souris pour naviguer, mais les touches Tab, Espace, Entrée
ainsi que les touches fléchées, comme vous l’avez fait précédemment pour la définition du clavier.
Le menu principal de l’installateur offre une série d’entrées HELP, KEYMAP, ADDSWAP, TARGET,
etc. Chacune de ces entrées constitue une étape dans le processus d’installation. Nous allons nous
passer de la lecture du fichier d’aide (HELP – Read the Slackware Setup HELP file) et de la
redéfinition du clavier (KEYMAP – Remap your keyboard if you’re not using a US one), pour nous
attaquer directement au troisième point (ADDSWAP – Set up your swap partition(s)) : la partition
d’échange.
Figure 3–22
Commençons par configurer la partition d’échange.
Figure 3–23
Si nous avons effectué le partitionnement correctement, la partition d’échange est détectée
automatiquement par l’installateur et il suffit de confirmer par OK.
Figure 3–24
Non, ce n’est pas la peine de formater en mode méticuleux pour rechercher d’éventuels secteurs
défectueux sur le disque.
Figure 3–25
La partition d’échange a été correctement configurée.
Formater la partition principale
Linux propose une multitude de systèmes de fichiers au choix pour formater une partition :
• ext2(second extended file system) est le système de fichiers historique de GNU/Linux.
• ext3 est un autre système de fichiers GNU/Linux, une évolution d’ext2. Ce qui le caractérise
principalement, c’est l’utilisation d’un fichier journal. On arrive ainsi à éviter la longue phase de
récupération lors d’un arrêt brutal de la machine.
• ext4 est le successeur d’ext3. C’est le système de fichiers proposé par défaut par l’installateur
Slackware et nous l’utiliserons pour formater notre partition principale.
• En dehors de cela, il existe une multitude de systèmes de fichiers comme jfs, xfs, reiserfs ou btrfs,
qui ont chacun des avantages et des inconvénients.
Figure 3–26
L’installateur nous propose de configurer la partition restante comme partition principale.
Figure 3–27
Là aussi, acceptons le partitionnement rapide sans passer par la recherche d’éventuels secteurs
défectueux.
Figure 3–28
Le système de fichiers ext4 sélectionné par défaut nous convient parfaitement.
Figure 3–29
La partition principale a été correctement configurée.
Figure 3–31
L’installateur propose de détecter automatiquement le lecteur optique. Acceptez cette option.
L’écran PACKAGE SERIES SELECTION nous présente une série de groupes de logiciels au choix.
Plus exactement, il s’agit de groupes de paquets (voir l’encadré). Dans un cas comme dans l’autre, le
néophyte se posera probablement quelques questions du genre : « Qu’est-ce que ça peut bien être ? »
ou « Est-ce que j’ai besoin de tel ou tel truc ? »
Cette soupe d’alphabet n’est pas très parlante pour un utilisateur novice de Linux. Elle ne l’est
d’ailleurs pas forcément pour un utilisateur expérimenté. C’est pourquoi le distributeur nous facilite
la tâche, en proposant une sélection de groupes de paquetages. Ne vous en faites pas si le descriptif
de certains groupes comme System libraries needed by KDE, GNOME, X and more suscite chez
vous tout au plus des rêveries confuses de nains de jardin et de films pour adultes. Vous aurez
l’occasion de vous familiariser petit à petit avec tous les composants d’un système Linux.
Les groupes de paquetages A, AP, D et E, etc. jusqu’à Y sont en fait un résidu archaïque et quelque
peu anachronique des toutes premières versions de la distribution. À l’époque, Slackware était livrée
en jeux de disquettes souples : le groupe A était le système de base, le groupe AP contenait une série
d’applications en ligne de commande, le groupe N(networking) fournissait tout ce qui fonctionnait en
réseau (le serveur web Apache, par exemple). Cette classification historique a curieusement survécu
et d’autres catégories sont venues s’ajouter petit à petit au fil des années. Voici donc la liste complète
des groupes de paquets de Slackware 14.2 et leur signification :
• A – le système de base, de quoi avoir une invite de commandes et un éditeur de texte, mais guère
plus ;
• AP – une panoplie d’applications qui n’ont pas besoin d’environnement graphique ;
• D – les outils de développement (tout ce qu’il faut pour compiler des programmes et plus encore) ;
• E – l’éditeur Emacs ;
• F – une collection assez fournie de HOWTOs, la documentation du Linux Documentation
Project ;
• K – le code source du noyau ;
• KDE – l’environnement de bureau KDE ;
• KDEI – les fichiers de traduction pour l’interface KDE ;
• L – les bibliothèques partagées pour toute une série d’applications ;
• N – tout ce qui fonctionne en réseau (serveur web, serveur mail, serveur DHCP et DNS, clients
mail et Usenet en ligne de commande, etc.) ;
• T – le système de mise en forme de documents LaTeX ;
• TCL – le langage TCL ;
• X – le serveur graphique X.Org ;
• XAP – une série d’applications graphiques comme Firefox, Thunderbird ou Gimp, ainsi qu’une
panoplie de gestionnaires de fenêtres légers comme Fluxbox, Blackbox ou WindowMaker ;
• XFCE – l’environnement de bureau Xfce ;
• Y – les jeux BSD très rudimentaires.
Notre ambition ici est d’installer un poste de travail doté de l’environnement de bureau Xfce. Vous
pouvez donc procéder comme ceci :
• Désélectionnez le groupe KDE.
• Désélectionnez le groupe E, car nous n’utiliserons pas l’éditeur Emacs.
• Acceptez tels quels tous les autres groupes de paquets présélectionnés.
Figure 3–32
Désélectionnez les groupes de paquets E et KDE en utilisant la touche Espace et acceptez tels quels
les autres groupes de paquets présélectionnés.
Figure 3–34
Les paquets s’installent l’un après l’autre et vous voyez défiler tout ce qui constitue votre système
Slackware Linux.
Figure 3–35
L’installateur nous propose de créer une clé USB de démarrage. Ce n’est pas nécessaire et nous
pouvons sereinement passer (Skip) cette étape.
Figure 3–36
Les options de configuration de LILO sont pour la plupart gérées automatiquement par l’installateur.
Confirmez simplement par OK.
Figure 3–37
L’utilisation du « frame buffer » permet de modifier la résolution de la console. Malheureusement,
elle peut amener quelques dysfonctionnements avec certaines cartes vidéo. Dans le doute, optons
pour la valeur « standard ».
Figure 3–38
Nous verrons plus loin les différents paramètres de démarrage ainsi que leur signification. Pour
l’instant, nous allons nous en passer et nous contenter d’un coup de bec bien senti sur OK.
L’écran USE UTF-8 TEXT CONSOLE ? vous somme de décider si vous souhaitez utiliser le système Unicode
ou UTF-8.
Un système d’encodage décrit la façon dont l’ordinateur traduit les chiffres et les lettres que vous lui
fournissez en données purement numériques qu’il est capable de digérer, si l’on peut dire.
• Le grand avantage d’UTF-8, c’est qu’il est universel dans le sens où vous pourrez par exemple
représenter simultanément du texte en différents alphabets (français, grec, russe, arabe, farsi,
hébreu, etc.), ce que les encodages traditionnels (comme ISO-8859-1 ou ISO-8859-15) ne
permettaient pas de faire.
• En contrepartie, certains petits utilitaires en ligne de commande voire certaines applications
obsolètes peuvent mal gérer la représentation des caractères spéciaux comme les voyelles
accentuées ou le C cédille en Unicode.
L’installateur ne vous propose pas l’UTF-8 par défaut. Il faut sans doute voir là un excès de
prudence, que l’on peut expliquer par un penchant perfectionniste du distributeur. Je vous conseille
tout de même de l’utiliser en optant pour Yes. L’Unicode s’est imposé comme standard sur l’écrasante
majorité des distributions Linux et ses avantages l’emportent largement sur ses inconvénients.
Il ne nous reste plus qu’à décider de l’endroit où LILO devra être installé. Le choix par défaut
conviendra très bien. Le MBR (Master Boot Record) est la zone d’amorçage du disque dur. Il s’agit
là du tout premier secteur de votre disque dur, un secteur un peu spécial qui contient la table des
partitions et qui est adressable par le BIOS.
Figure 3–39
Utilisez l’encodage UTF-8 (Yes), même si l’installateur ne vous le propose pas par défaut.
Figure 3–40
Confirmez le choix par défaut et installez LILO sur le secteur d’amorçage (MBR) du disque dur.
Configurer la souris
Les deux écrans subséquents concernent la configuration de la souris. Dans un premier temps, vous
devez spécifier le type de souris que vous utilisez. La sélection par défaut imps2 – Microsoft PS/2
Intellimouse ne se limite pas seulement aux souris de la marque Microsoft, mais désigne plus
généralement toutes les souris modernes à molette. Par expérience, j’affirme que vous pouvez
sereinement confirmer ce choix par défaut, même si votre souris se branche sur le port USB et même
si elle n’est pas équipée d’une roulette centrale.
Figure 3–41
Confirmez le choix par défaut « imps2 », qui fonctionnera avec toutes les souris à molette modernes.
L’écran GPM CONFIGURATION définit le lancement du logiciel GPM (General Purpose Mouse),
une application qui permet d’utiliser les fonctionnalités de la souris en mode console, c’est-à-dire
en-dehors d’un environnement graphique. Dans les chapitres qui suivent, nous utiliserons
essentiellement le clavier pour manipuler du texte en mode console. Théoriquement, nous n’avons
donc pas besoin de GPM et vous pourriez très bien désactiver son lancement automatique en optant
pour No. Je vous conseille quand même d’opter pour Yes par défaut, étant donné que GPM nous
servira de « cobaye » dans le chapitre 11 consacré à la gestion des services.
Figure 3–42
GPM (General Purpose Mouse) est un serveur de souris pour la console. Activez-le, il nous servira
de « cobaye » un peu plus loin.
Configurer le réseau
Les détails de la configuration du réseau sous Linux seront abordés plus avant dans ce livre. Pour
l’instant, retenons que la configuration proposée par défaut peut fonctionner d’office si vous disposez
d’un modem Ethernet avec un routeur intégré. C’est le cas pour les modems livrés par le fournisseur
d’accès Nerim. Et si vous avez opté pour un des grands suspects habituels (Orange, Free, Darty, SFR,
Bouygues, etc.), vous pourrez vous connecter sans problème avec votre box.
Pour le nom d’hôte de votre machine, choisissez-en un à votre convenance et notez-le en minuscules.
Voici quelques exemples pour vous donner une idée :
• slackbox
• alphamule
• grossebertha
• poste10
• etc.
Votre machine n’est pas un serveur dédié avec une ouverture frontale sur Internet, vous êtes donc
libre de choisir un nom de domaine « en bois », comme ceci :
• local
• maison.campagne
• microlinux.lan
• etc.
Si vous optez pour une configuration DHCP, tous vos paramètres réseau vous seront automatiquement
transmis par votre modem routeur lors du démarrage du PC. Autrement, demandez ces paramètres à
l’administrateur de votre réseau et saisissez-les vous-mêmes dans la succession d’écrans de
configuration qui s’affichent si vous choisissez static IP :
• l’adresse IP de la machine ;
• le masque de sous-réseau (netmask) ;
• l’adresse IP de la passerelle (gateway) ;
• l’adresse IP du serveur DNS (nameserver).
Tous ces termes seront expliqués en détail dans le chapitre 14.
RÉSEAU DHCP
DHCP signifie Dynamic Host Configuration Protocol et désigne un protocole d’allocation
dynamique d’adresses IP. Pour comprendre le principe de fonctionnement du DHCP, imaginez un
cours d’anglais où le professeur décide de donner des noms typiquement anglais à ses élèves. Pour
la durée du cours, tel élève s’appellera donc Freddy, sa voisine à droite sera Pamela et son voisin
à gauche sera connu sous le nom de Brian. Pour éviter toute confusion, chaque élève portera un
prénom distinct. De façon analogue et en simplifiant un tant soit peu, le modem routeur dira à votre
PC : « Pour une durée de 32 400 secondes, tu seras la machine 192.168.1.2 dans le réseau. »
Figure 3–43
« Yes », nous souhaitons configurer notre réseau.
Figure 3–44
Choisissez un nom d’hôte pour votre PC.
Figure 3–45
Sur un poste de travail, nous sommes libres de choisir un nom de domaine « bidon ».
Figure 3–46
Configuration statique ou DHCP ? Avec un modem routeur ADSL, vous choisirez très probablement
une configuration DHCP.
Figure 3–47
L’écran « SET DHCP HOSTNAME » concerne les fournisseurs d’accès qui requièrent l’envoi
préalable d’un nom d’hôte DHCP pour la connexion. Laissez ce champ vide, tout simplement.
Figure 3–48
Le résumé final de la confirmation du réseau. Confirmez par « Yes » ou reconfigurez le tout en
choisissant « No ».
Configurer les services au démarrage et la police de la console
L’écran CONFIRM STARTUP SERVICES TO RUN affiche la liste des services à lancer
automatiquement – ou à ignorer – lorsque vous démarrez le PC, en fonction des groupes de paquets
que vous avez installés. Étant donné que nous avons fait l’impasse sur les seuls groupes E et KDE,
cette liste est complète.
Dans sa configuration par défaut, Slackware ne lance que très peu de services, juste ce qu’il faut pour
faire fonctionner correctement un poste de travail dans une configuration minimale.
Figure 3–49
Confirmez simplement la panoplie de services à lancer au démarrage.
Figure 3–50
Pour l’instant, la police par défaut nous convient très bien pour la console.
Figure 3–51
La synchronisation de l’horloge système est obligatoire uniquement pour un double boot avec
Windows. Optez donc pour l’UTC.
Figure 3–52
Choisissez votre fuseau horaire, par exemple « Europe/Paris » pour la France.
Nous aborderons la question des utilisateurs plus loin. Pour l’instant, contentez-vous de choisir un
mot de passe administrateur.
Figure 3–54
Définissez un mot de passe pour root.
Figure 3–55
Le mot de passe n’apparaît ni pendant la saisie initiale, ni pendant la confirmation.
Figure 3–56
L’option « EXIT » sert à quitter l’installateur Slackware.
Figure 3–57
Le système éjecte automatiquement le DVD ou le CD-Rom d’installation.
Figure 3–58
L’installation est terminée. Choisissez « Yes » pour redémarrer la machine.
L’ordinateur redémarre et vous affiche tout d’abord l’écran du chargeur de démarrage. Le réglage par
défaut prévoit un temps d’attente de deux minutes avant le lancement automatique du système. Nous
verrons plus loin comment écourter ce délai de façon permanente. En attendant, appuyez simplement
sur Entrée pour lancer le démarrage de votre machine.
Figure 3–59
Appuyez sur « Entrée » pour éviter d’attendre deux minutes avant le démarrage du système.
Les messages d’initialisation de votre nouveau système Slackware défilent l’un après l’autre sur
l’écran. Ne vous inquiétez pas si vous n’y comprenez rien, même si vous voyez passer l’un ou l’autre
message error quelquechose. Ne vous tracassez pas non plus si la police d’affichage de votre
console vous paraît un peu trop petite. Essayez de faire avec en attendant que nous voyions plus loin
comment régler ce paramètre.
Au terme de l’initialisation du système, vous vous retrouvez confronté à un message qui ressemble à
peu de choses près à ceci :
Welcome to Linux 4.4.14 (tty1)
slackbox login: _
Pour l’instant, nous ne disposons que du seul compte root. C’est donc cette identité que nous utilisons
pour nous connecter au système. Là encore, le mot de passe ne s’affiche pas lors de la saisie :
slackbox login: root
Password: *********
Linux 4.4.14.
You have mail.
root@slackbox:~# _
Vous voilà « comme le bœuf devant la nouvelle porte de l’étable », comme on dit dans mon pays
natal. C’est donc ça, Linux ? Une télé noir et blanc tombée en panne, avec un truc qui clignote
bizarrement en bas de l’écran ?
Patientez encore un peu, nous allons bientôt nous retrouver dans un environnement graphique.
Configuration post-installation sommaire
Notre système installé en mode « poule » nécessite encore quelques petites manipulations avant
d’être fonctionnel.
La première information que vous devez fournir à adduser, c’est l’identifiant (login name) du nouvel
utilisateur. Il existe une série de règles et de conventions sur les systèmes Linux en ce qui concerne
les noms d’utilisateur :
• Il est interdit d’utiliser les caractères spéciaux et les espaces.
• Préférez les lettres minuscules. C’est une convention et rien ne vous empêche théoriquement
d’utiliser des majuscules.
• Un nom d’utilisateur est généralement composé de la première lettre (initiale) du prénom, suivie
du nom de famille. Là aussi, c’est une recommandation et vous n’êtes pas obligé de vous y tenir.
Si nous respectons ces règles, l’utilisateur Gaston Lagaffe utilisera donc le nom d’utilisateur glagaffe.
Jacques Martin s’identifiera sur le système en tant que jmartin et le login de Jean-Kévin Tartempion
ressemblera à quelque chose comme jktartempion.
Rien ne vous oblige pourtant à être aussi strict dans la définition du nom d’utilisateur. Kiki Novak
pourra préférer kikinovak à knovak, Jean-Kévin Tartempion favorisera warlordz ou nemesis, Gaston Lagaffe
utilisera un simple gaston et rien n’empêchera Jean-Philippe Smet de s’identifier en tant que johnny,
plus incisif que jpsmet.
Login name for new user []: kikinovak
À partir de là, la création de l’utilisateur se déroulera également en mode « poule », dans le sens où
nous nous contentons d’accepter les valeurs proposées par défaut par adduser. Le numéro identifiant de
l’utilisateur (User ID ou UID), c’est en quelque sorte l’équivalent de votre numéro de sécurité
sociale dans la vie quotidienne. Sur un système Linux, chaque utilisateur est associé à un UID unique
qui l’identifie sans ambiguïté. Confirmez simplement par Entrée et adduser se chargera de vous en
choisir un :
User ID ('UID') [ defaults to next available ]:
Chaque utilisateur est membre de groupes, qui définissent la politique d’accès à certaines parties du
système et des données. À titre d’exemple, si dans la vie de tous les jours, vous êtes membre du Club
d’Escalade de Clarensac, vous avez le droit d’utiliser le mur d’escalade du gymnase de Clarensac le
lundi, le mardi et le jeudi. Si vous êtes inscrit au Club de Judo de Montpezat, vous avez accès au
tatami tous les mardi et vendredi. De façon similaire, un utilisateur Linux pourra être membre d’une
série de groupes, par exemple audio, plugdev, lp ou scanner, ce qui lui permettra d’utiliser la carte son,
les périphériques amovibles, l’imprimante, le scanner et ainsi de suite.
usersest le groupe initial par défaut d’un utilisateur sous Slackware, un peu comme lorsqu’en France,
vous avez d’abord la nationalité française ou le droit de vote avant d’adhérer à une série
d’associations ou de clubs locaux. Là encore, confirmez simplement par Entrée :
Initial group [ users ]:
La prochaine étape concerne l’ajout de l’utilisateur aux groupes supplémentaires. Prenez garde à ne
pas simplement confirmer par Entrée, cela aurait pour effet de n’ajouter l’utilisateur à aucun groupe
supplémentaire. Ce serait considérablement handicapant dans l’utilisation de son poste de travail,
étant donné qu’il n’aurait pratiquement pas le droit d’accéder à ses périphériques :
Press ENTER to continue without adding any additional groups
Or press the UP arrow key to add/select/edit additional groups :
Ici, appuyez sur la touche FlècheHaut (UP arrow key) pour faire apparaître la liste des groupes dont
l’utilisateur peut raisonnablement être membre, puis confirmez l’ensemble des groupes par Entrée :
Press ENTER to continue without adding any additional groups
Or press the UP arrow key to add/select/edit additional groups : audio cdrom floppy plugdev video power netdev
lp scanner
---------------------------------------
Login name.......: kikinovak
UID..............: [ Next available ]
Initial group....: users
Additional groups: audio,cdrom,floppy,plugdev,video,power,
netdev,lp,scanner
Home directory...: /home/kikinovak
Shell............: /bin/bash
Expiry date......: [ Never ]
This is it... if you want to bail out, hit Control-C. Otherwise, press ENTER to go ahead and make the account.
Prenez un moment pour vérifier ces informations. Si vous voyez une erreur – par exemple si les
groupes supplémentaires n’apparaissent pas – la combinaison de touches Ctrl+C interrompt
l’opération et vous invite à recommencer. Si tout vous semble correct, appuyez sur Entrée pour
lancer la création du compte :
Creating new account...
Saisissez votre nom complet ( Full Name). Ici en revanche, vous pouvez utiliser tous les caractères
spéciaux que vous voulez : voyelles accentuées, espaces, majuscules, peu importe :
Changing the user information for kikinovak
Enter the new value, or press ENTER for the default
Full Name []: Kiki Novak
Ensuite, adduser vous pose une série de questions qui peuvent sembler indiscrètes. Non, il ne s’agit
pas d’un quelconque enregistrement obligatoire en ligne comme ceux auxquels le monde du logiciel
propriétaire a pu nous habituer. Unix – le système d’exploitation ancestral dont Linux est un clone
libre – a tout simplement été créé dès le début comme système multi-utilisateur à une époque où les
ordinateurs étaient réservés aux entreprises et aux universités. Les champs comme Room Number, Work
Phone ou Home Phone sont avant tout censés permettre aux différents utilisateurs d’échanger des
informations sur eux-mêmes. Et il est parfaitement licite de ne rien indiquer du tout en appuyant
plusieurs fois de suite sur Entrée :
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Enfin, il ne vous reste plus qu’à définir un mot de passe pour votre utilisateur, comme vous avez pu le
faire pour root :
Changing password for kikinovak
Enter the new password (minimum of 5 characters)
Please use a combination of upper and lower case letters and numbers.
New password: ********
Re-enter new password: ********
passwd: password changed.
Maintenant que l’utilisateur est créé, nous allons tout d’abord nous déconnecter de , ce qui nous
root
ramène à l’invite de connexion initale :
root@slackbox:~# logout
slackbox login: _
Ensuite, nous allons utiliser notre nouveau compte pour nous connecter :
slackbox login: kikinovak
Password: ********
Linux 4.4.14.
No mail.
kikinovak@slackbox:~$ _
L’écran de sélection de xwmconfig est le même que celui que vous avez utilisé lors de l’installation. Si
nous l’invoquons à nouveau ici, c’est qu’il est théoriquement possible de définir une session
graphique différente pour chaque utilisateur. Vérifiez si votre gestionnaire par défaut est bien
xinitrc.xfce – The Cholesterol Free Desktop Environment et confirmez par OK.
Nous verrons plus loin comment franciser définitivement l’ensemble de l’environnement graphique.
En attendant, nous pouvons déjà définir le français comme langue par défaut pour la durée de la
session, en invoquant la commande suivante :
kikinovak@slackbox:~$ xwmconfig
Attention, recopiez bien la commande telle quelle, c’est-à-dire sans le moindre espace et avec un
sous-tiret (underscore ou « tiret huit ») entre fr et FR.
À présent, retenez votre souffle et démarrez l’interface graphique :
kikinovak@slackbox:~$ startx
Si tout se passe bien, une fenêtre graphique s’affiche et vous demande si vous préférez Utiliser les
paramètres par défaut ou Un tableau de bord vide. Optez pour les paramètres par défaut, faute de
quoi il manquera quelques composants essentiels à votre bureau.
Figure 3–60
Utilisez les paramètres par défaut.
Le bureau Xfce s’affiche enfin dans toute sa splendeur, si l’on peut dire. Nous verrons plus loin
comment nous y prendre pour corriger son aspect austère et le rendre plus agréable à l’œil. Lisez le
prochain chapitre pour une première prise en main de cet environnement.
Figure 3–61
Le bureau Xfce dans sa configuration par défaut.
4
Notre poste de travail Linux flambant neuf vous rappelle peut-être de près ou de loin le système
Windows ou Mac OS X auquel vous étiez habitué. C’est un peu comme si vous découvriez un plat
exotique. Certains détails familiers vous rassurent, d’autres vous semblent vaguement inquiétants.
Le moment est venu de faire un petit tour d’horizon.
Découvrir le bureau Xfce
Figure 4–1
Un clic sur votre nom en haut à droite de l’écran permet de quitter la session Xfce.
Figure 4–2
Le bouton Déconnexion vous ramène en mode console.
Premières impressions
Le bureau Xfce (XForms Common Environment, pour les lecteurs qui regretteront instantanément
leur curiosité) a été fondé en 1996 par le français Olivier Fourdan pour cloner l’environnement Unix
CDE, dans le but de fournir un contexte graphique intuitif, rapide et peu gourmand en ressources
matérielles.
Dans sa configuration par défaut, Xfce affiche deux tableaux de bord (également appelés panneaux)
en haut et en bas de l’écran.
Le menu Applications en haut à gauche de l’écran donne accès non seulement aux applications du
système, comme son nom le suggère, mais également à l’ensemble des paramètres du bureau. La
partie centrale du tableau de bord supérieur affiche une barre des tâches, qui permet de basculer entre
toutes les fenêtres qui s’affichent. Le côté droit contient une zone de notifications censée afficher des
informations sur le système comme l’heure ou l’état de la connexion réseau. Un sélecteur de bureaux
sert enfin à basculer entre quatre bureaux virtuels.
Le code source du bureau CDE a été libéré à l’été 2012 et publié sur le site Sourceforge. Les
nostalgiques de CDE et autres fans de bureaux « rétro » peuvent donc désormais l’installer sur leur
ordinateur.
http://sourceforge.net/projects/cdesktopenv/
En bas de l’écran, le tableau de bord inférieur ressemble vaguement au dock de Mac OS X redessiné
par un informaticien est-allemand des années 1970. Plusieurs lanceurs ouvrent rapidement les
applications les plus courantes, mais sans le moindre effet graphique.
Figure 4–4
Le gestionnaire de paramètres donne accès à toutes les options personnalisables de l’environnement
graphique.
Ouvrez le module Apparence et choisissez un Style pour vos fenêtres, autrement dit un thème de
couleurs pour l’habillage des applications. Prenez votre temps pour les passer en revue. Essayez
Xfce-redmondxp pour singer les couleurs de Windows XP, ou Xfce-dusk pour un aspect très nocturne
et geek quoique peu lisible. Peut-être bien que vous reviendrez au style Adwaita défini par défaut,
sobre et agréable à l’œil.
L’onglet Icônes du même module sert à sélectionner un thème d’icônes pour l’ensemble du bureau.
L’installation par défaut ne comporte que trois thèmes : Adwaita, HighContrast et Tango. Essayez de
basculer sur ce dernier, moins terne que le thème Adwaita par défaut. Le thème HighContrast a été
conçu spécialement pour les utilisateurs malvoyants. Nous verrons plus loin dans ce livre comment
installer des jeux d’icônes « dernier cri » comme Elementary, Numix ou Faenza.
L’onglet Style du module Gestionnaire de fenêtres définit les décorations de fenêtres. La version
4.12 de Xfce a considérablement réduit le nombre de thèmes disponibles et n’en propose plus qu’une
demi-douzaine. Essayez-les tous avant de vous décider pour celui qui vous convient le mieux. Là
encore, le thème par défaut est assez réussi.
Figure 4–5
L’onglet Style du module Apparence permet de définir un thème pour les fenêtres.
Figure 4–6
Si le jeu d’icônes Adwaita installé par défaut ne vous convient pas, essayez le thème Tango.
L’onglet Thème du module Souris et pavé tactile modifie le curseur de la souris. Si vous trouvez que
le pointeur noir par défaut n’est pas ce qu’il y a de plus esthétique, essayez le thème whiteglass,
blanc légèrement translucide et agréable à l’œil.
Figure 4–7
L’onglet Style permet de sélectionner le jeu de décorations de fenêtres.
Figure 4–8
Configurez le thème du pointeur de la souris.
En dehors de l’aspect esthétique, une retouche purement fonctionnelle s’impose ici. Nous n’avons pas
encore eu l’occasion de saisir du texte, ce qui nous a évité le constat consternant que la disposition
de notre clavier se trouve soudainement changée en QWERTY américain, au lieu de l’AZERTY
défini pendant l’installation. C’est que le système Linux utilise des paramétrages séparés pour les
dispositions clavier en mode graphique et en mode console. Nous verrons plus loin comment régler
ces paramètres de manière globale, c’est-à-dire qui affecte tous les utilisateurs du système. En
attendant, le gestionnaire de paramètres nous laisse choisir la disposition clavier souhaitée.
Figure 4–9
L’environnement graphique vous a fait basculer en clavier QWERTY. Revenez en AZERTY à l’aide
du module Clavier du gestionnaire de paramètres.
Ouvrez le module Clavier et activez l’onglet Disposition. Décochez l’option Utiliser les paramètres
par défaut, ce qui a pour effet de déverrouiller l’accès à la section Disposition du clavier.
Sélectionnez Anglais (USA) et cliquez sur Modifier. Dans le module qui s’ouvre, il ne vous reste plus
qu’à sélectionner Français pour un clavier AZERTY, puis Valider.
Nous allons laisser là les ajustements initiaux et aborder la prise en main du système Linux à
proprement parler. Essayons d’apprécier l’esthétique légèrement améliorée de notre bureau en
attendant de nous familiariser avec les outils de base. Nous verrons plus loin comment peaufiner
l’aspect de notre environnement de travail à notre guise, jusque dans les moindres détails.
Le menu Applications
Le menu Applications en haut à gauche de l’écran sert à lancer des applications.
Cliquez dessus pour le déplier et afficher les catégories de logiciels, puis cliquez sur le logiciel que
vous souhaitez lancer. Les applications les plus courantes offrent en plus un accès rapide, en haut du
menu.
Figure 4–10
Le menu des applications de Xfce.
Figure 4–11
Un air de famille
Il n’est peut-être pas inutile de rappeler quelques principes de base dans la manipulation des
fenêtres, qui ne semblent pas toujours bien assimilés même chez des personnes qui utilisent l’outil
informatique au quotidien.
• Le bouton de droite, symbolisé par une croix, ferme une application et/ou une fenêtre. Lorsque
vous fermez (ou « quittez ») une application, elle cesse d’accaparer une portion de mémoire vive
de la machine.
• Le bouton de gauche, figuré par un trait horizontal, réduit une fenêtre. Dans ce cas, l’application
n’est pas fermée. Elle continue toujours de « tourner » et son état « réduit » est symbolisé par un
onglet dans la barre des tâches.
• Le bouton du milieu bascule entre deux états : maximisé ou réduit à une portion de l’écran. Selon
l’état « actif », il est symbolisé par un voire deux carrés.
La capture d’écran ci-après montre deux applications ouvertes simultanément, chacune étant
symbolisée sur la partie supérieure de l’écran par un onglet dans la barre des tâches. Un simple clic
sur l’un de ces onglets réduit ou restaure la fenêtre correspondante.
Figure 4–12
La manipulation des fenêtres n’a rien de dépaysant si vous avez déjà travaillé avec d’autres systèmes.
Figure 4–13
Tout comme sous Windows, le raccourci clavier Alt+Tab bascule confortablement entre les fenêtres.
Fort de ce savoir, n’hésitez pas à vous entraîner un peu si vous n’avez pas trop l’habitude. Ouvrez
des applications, fermez-les, réduisez-les, maximisez-les et faites-les basculer alternativement en
avant-plan et en arrière-plan.
Figure 4–14
Accès à l’interface de configuration de Thunar
Dans l’onglet Affichage, la rubrique Vue par défaut propose le choix entre différents modes
d’affichage, les deux principaux étant Vue en icônes et Vue en liste détaillée. Essayez les deux pour
voir celui qui vous convient le mieux. Fermez et relancez Thunar pour que les changements prennent
effet.
Le mode d’affichage peut également être modifié ponctuellement par le biais du menu Affichage. Le
choix que vous effectuez ici n’est pas défini de façon permanente ; autrement dit, Thunar reviendra au
mode d’affichage défini par défaut au prochain lancement.
Avant d’aller plus loin, arrêtons-nous un instant pour apporter quelques clarifications.
Figure 4–16
Le mode « Liste détaillée » offre un affichage plus compact par défaut.
Où suis-je ?
Parmi les questions que peuvent se poser les utilisateurs de Windows qui viennent de passer à Linux,
voici les plus fréquentes :
• « Lorsque je viens de me connecter au système, où est-ce que je me retrouve ? »
• « Où sont mes fichiers et mes documents ? »
• « Où est mon lecteur C: ? »
Figure 4–17
Pour entrer dans un répertoire, double-cliquez sur son icône.
• soit nous « sortons » d’un répertoire, c’est-à-dire que nous montons d’un cran dans l’arborescence
pour nous rendre dans le répertoire parent, en cliquant sur le bouton Répertoire parent, avec le
menu Aller>Ouvrir le dossier parent, ou encore à l’aide du raccourci clavier correspondant
Alt+FlècheHaut.
Figure 4–18
Remontez d’un cran vers le répertoire parent.
Figure 4–19
Le principe des poupées russes
Figure 4–20
Chaque utilisateur dispose de son propre répertoire.
Figure 4–22
Utilisez les boutons pour naviguer plus rapidement.
Visite guidée du système en dix minutes
Vous avez peut-être déjà vu ces cars de touristes japonais, ornés du sigle publicitaire Visit Europe in
six days (Visitez l’Europe en six jours). Le but du jeu de cette formule touristique consiste
apparemment à parcourir une moyenne de mille kilomètres par jour pour avoir tout juste le temps de
prendre en photo le sourire exténué des compatriotes devant Big Ben, la Tour Eiffel, le Vésuve et la
maison natale de Mozart.
C’est un peu dans le même esprit que nous allons entreprendre une première visite sommaire du
système, maintenant que nous savons nous déplacer dans les répertoires. Un système Linux comme
celui que nous venons d’installer est composé de milliers de répertoires et de sous-répertoires,
contenant des dizaines, voire une centaine de milliers de fichiers. Si cette idée vous est
insupportable, songez à la découverte d’une grande ville. Mettez-vous dans la peau d’un touriste qui
vient passer une semaine à Marseille. La ville est constituée de centaines de rues avec des milliers
d’immeubles et des centaines de milliers de gens. Est-ce que cela vous empêchera d’aller vous
balader sur la Canebière ou de boire un café au Vieux Port ? Non ? Bon.
Remonter à la racine : /
Dans le navigateur de fichiers, partez de votre répertoire d’utilisateur. Montez d’un cran et vous voilà
dans le répertoire /home. Si vous renouvelez l’opération, vous vous retrouvez à la racine du système
de fichiers, symbolisée par une barre oblique /. Vous retrouverez ce symbole dans la fenêtre URL qui
s’affiche lorsque vous utilisez le raccourci clavier Ctrl+L (Aller>Aller à...) ou lorsque vous affichez
la barre d’URL avec Affichage>Sélecteur d’emplacement>Style de barre d’outils.
B.A.BA URL
Une adresse URL (Uniform Resource Locator ou « localisateur uniforme de ressource »), c’est
plus ou moins une chaîne de caractères qui ressemble à une adresse web.
Pour notre première visite, faites comme les touristes tout juste sortis du car. Regardez tout, prenez
des photos, mais ne touchez à rien. Nous reviendrons bientôt pour revoir tout cela en détail.
/boot est l’endroit où un système Linux range tout ce qu’il lui faut pour démarrer (to boot,
« démarrer »). Les fichiers dont le nom commence par vmlinuz sont les différents noyaux de votre
machine. Vous pouvez en avoir un seul ou toute une collection au choix. En revanche, vous n’en
utiliserez jamais plus qu’un seul à la fois.
CULTURE Le noyau
Non, ce n’est pas un pépin, mais toute distribution de Linux est basée sur un noyau commun,
également connu sous sa dénomination anglaise de kernel Linux. Comme nous l’avons vu au début
de cet ouvrage, c’est la partie du système d’exploitation qui est la plus près de notre matériel.
C’est précisément ce fichier qui est chargé, dès que LILO (Linux Loader, le chargeur de démarrage)
passe la main au système. LILO est en quelque sorte un logiciel ayant pour seule tâche de démarrer le
noyau. Et certains fichiers utilisés par LILO – par exemple le logo de Slackware qui s’affiche lorsque
vous allumez votre PC – se trouvent dans /boot. Si cela ne vous évoque pas grand-chose pour
l’instant, ne vous tracassez pas. De temps en temps, je me permettrai de vous fournir des aperçus sur
les rouages du système, que nous approfondirons en temps et en heure.
Figure 4–24
Strictement parlant, « Linux » c’est ça !
Le fichier s’ouvre avec l’éditeur de texte simple GVim. Descendez vers la fin du fichier et vous y
verrez les entrées correspondant aux utilisateurs que vous avez définis. Il n’y a rien là de bien
spectaculaire, objecterez-vous en réprimant un bâillement d’ennui. Éh bien, si !
La configuration d’un système Linux – qu’il s’agisse d’un poste de travail comme le vôtre ou d’une
ferme de calcul de trois mille machines de la NASA – est stockée dans de simples fichiers de texte
humainement lisibles. Il est donc possible de configurer le système en modifiant ces fichiers avec un
éditeur de texte comme seul outil. Nous profiterons amplement de cette possibilité dans les prochains
chapitres.
Si vous êtes curieux, jetez un œil distrait à quelques autres fichiers de ce répertoire, sans vous laisser
intimider par leurs noms quelque peu barbares : DIR_COLORS, HOSTNAME, exports, fstab, group, hosts, inittab,
passwdou profile. Ne vous inquiétez pas si vous n’y comprenez rien du tout. Retenez simplement que ce
sont des fichiers au format texte simple.
Le répertoire /lib
Les bibliothèques partagées par les programmes de /bin et /sbin se trouvent dans /lib (libraries,
« bibliothèques »).
Si vous vous rendez dans le répertoire /lib/modules, vous y trouverez un répertoire 4.4.14 sur un
système 64-bits, ou alors deux répertoires nommés respectivement 4.4.14 et 4.4.14-smp sur un système
32-bits. Les lecteurs attentifs noteront un air de parenté avec les noms de noyaux vmlinuz-quelquechose-
4.4.14 que nous avons vus un peu plus haut. Effectivement, tous les fichiers contenus dans ce
répertoire appartiennent au noyau. Ce sont là les « modules », l’équivalent de ce que les utilisateurs
de Windows ou Mac OS X connaissent sous la désignation de pilote (driver ou « gestionnaire de
périphérique ») : des petits bouts de code que l’on charge dans le noyau pour lui permettre de gérer
tel ou tel périphérique. Avec Linux, contrairement à Windows, on peut effectuer cette opération sur un
système en état de marche, sans que cela ne nécessite un redémarrage. De façon analogue, on peut
enlever un module, ce qui permet donc d’activer ou de désactiver la prise en charge d’un certain
matériel sur un système « à chaud ».
Pour vous faire une idée un petit peu moins vague, entrez dans un des répertoires 4.4.14 ou 4.4.14-smp,
puis continuez dans kernel/drivers/net/ethernet. Dans la liste de répertoires qui s’affiche, vous
reconnaîtrez peut-être vaguement des noms de fabricants : 3com, adaptec, atheros, broadcom, cisco, dlink,
fujitsu, hp, intel, nvidia, qlogic, realtek, sis, via, etc. Jetez un œil distrait dans quelques-uns de ces
répertoires et observez les différents fichiers .ko qu’ils contiennent. Chaque nom de fichier
correspond en effet à un certain type de matériel, plus précisément à une série de cartes réseau (net
signifie « réseau »). Ainsi, 8139cp.ko et 8139too.ko dans le répertoire realtek correspondent à une carte
réseau équipée d’une puce (chip) Realtek 8139. De manière similaire, les fichiers commençant par 3c
dans le répertoire 3com correspondent à des cartes réseau 3COM, e100.ko et e1000.ko dans
l’arborescence intel gèrent les cartes réseau Intel et ainsi de suite. Dans la plupart des cas, le nom du
module permet de deviner quel matériel lui correspond. Dans d’autres cas, la relation n’est pas
évidente et il faut se renseigner. Nous verrons plus loin où et comment faire.
Figure 4–26
Les « drivers » de Linux, ce sont les modules du kernel.
Le répertoire /sbin (system binaries, autrement dit « binaires système ») renferme une série
d’exécutables pour l’administrateur. Ces outils servent à partitionner et formater des disques,
configurer les interfaces réseau, gérer l’arrêt de la machine et bien d’autres choses encore. Une partie
de ces commandes peut être invoquée par les utilisateurs du « commun des mortels ». Cependant,
pour la plupart, ces utilitaires représentent l’équivalent numérique d’une tronçonneuse. Dans les
mains d’un expert, cela permet d’abattre de la besogne en un tour de main. Mettez un utilisateur
lambda aux commandes et attendez-vous à un massacre.
Le répertoire /usr
L’arborescence sous /usr (Unix System Resources ou Unix Specific Resources2) renferme
précisément tout ce qui n’est pas nécessaire au fonctionnement minimal du système. Vous serez
d’ailleurs peut-être surpris d’apprendre que cela représente la part du lion. Sur le poste de travail sur
lequel j’écris ces lignes, l’arborescence /usr contient près de 90 % de la totalité du système sans
compter les données personnelles. Vous constaterez que certains répertoires rencontrés à la racine du
système sont également présents ici : /usr/bin, /usr/lib ou encore /usr/sbin.
Pour vous rendre compte par vous-même de l’importance de cette arborescence, cliquez-droit sur
l’icône du répertoire /usr. Dans le menu contextuel qui apparaît, cliquez sur Propriétés.
Figure 4–27
Un clic droit sur une icône fait apparaître le menu contextuel.
Figure 4–28
Le répertoire /usr contient près de 300 000 fichiers, totalisant plus de 6 gigaoctets.
Avec un système d’une telle complexité, il est important que chaque chose ait une place bien définie
pour que l’on s’y retrouve. Dans le cas contraire, votre PC ressemblerait à ma cuisine lorsque je
décide de m’aventurer dans la confection d’un poulet au paprika pour douze personnes. Pour éviter
ce genre de désordre, chaque composant du système est rangé à sa place :
• /usr/sbin comporte d’autres commandes pour l’administrateur.
• /usr/bin renferme la majorité des exécutables pour les utilisateurs.
Figure 4–29
Les applications du système se trouvent pour la plupart ici.
Sous Linux, /usr/bin représente à peu de choses près l’équivalent du répertoire C:\Program Files de
Windows. Lorsque vous l’ouvrez, vous remarquez qu’il lui faut quelques secondes avant de s’ouvrir,
étant donné que notre installation contient près de 3 600 exécutables, rien que dans ce répertoire. 3
600 programmes par défaut ? Tout ça ? En fait, il ne s’agit pas seulement des applications graphiques
comme Thunar, Terminal, GVim, Firefox ou Thunderbird. Les exécutables présents dans ce répertoire
sont en majorité des utilitaires en ligne de commande, accomplissant chacun une tâche et une seule. À
titre d’exemple, /usr/bin/passwd servira à un utilisateur pour choisir son propre mot de passe,
/usr/bin/find retrouvera une aiguille de fichier dans une botte de foin d’arborescence de répertoires,
etc.
Lors de l’ouverture du répertoire /usr/bin, une petite animation sous forme de chronomètre stylisé en
haut à droite du navigateur de fichiers vous indique que la machine est occupée à calculer, en
l’occurrence à chercher tous les fichiers présents dans le répertoire pour les afficher par ordre
alphabétique.
Figure 4–30
Lorsque le système est occupé, il vous l’indique par une petite icône animée.
Rien ne vous empêche de lancer les applications directement à partir de leur emplacement, comme
vous aviez peut-être l’habitude de le faire sur d’autres systèmes. Jusqu’à présent, nous n’avons vu
que deux applications : le navigateur de fichiers Thunar (/usr/bin/thunar) et l’éditeur de texte GVim
(/usr/bin/gvim). Pour les lancer, il suffit de double-cliquer sur leur icône, ce qui a exactement le même
effet qu’un double-clic sur un fichier .EXE dans C:\Program Files (Windows) ou sur une icône
d’application dans le dossier Applications (Mac OS X).
Vous commencez probablement à comprendre le principe d’organisation de /usr. Effectivement, le
système n’a pas besoin de Thunar, de GVim ou de l’utilitaire passwd pour démarrer. C’est pourquoi ils
sont tous rangés non pas dans /bin, mais dans /usr/bin.
Si cela ne vous paraît pas très parlant, prenons un exemple concret. Imaginez un serveur
d’imprimante dans un bureau. Trois personnes appuient à peu près en même temps sur le bouton
Imprimer de leur logiciel. Sur le serveur d’impression, les trois travaux en attente se rangent alors
dans /var/spool/cups (CUPS comme Common Unix Printing System, le système d’impression Unix). Et
si vous vous demandez pourquoi vous ne pouvez pas afficher le contenu de ce répertoire, contentez-
vous de savoir que celui-ci appartient au système d’impression de votre machine et que les
utilisateurs lambda n’ont rien à y faire.
À part des files d’attente d’impression, /var peut contenir toutes sortes de choses : des journaux, des
boîtes aux lettres de messagerie, des bases de données ou même des sites web. Les journaux se
situent dans /var/log, mais ne vous attendez pas à y trouver Libé, l’Équipe ou l’Humanité. Ces
journaux ou logfiles sont des fichiers textes « crachés » à la volée par différents composants d’un
système en marche. Un serveur de courrier électronique déposera les messages pour les utilisateurs
dans /var/spool/mail. Et le jour où vous installerez un serveur web sur votre machine3, les pages de vos
sites seront stockées en dessous de /var/www/htdocs.
Un système Linux est vaste et il y a certes beaucoup de choses à apprendre. Certains formateurs Linux
de ma connaissance emploient volontiers le terme de « courbe d’apprentissage raide », que mon œil
intérieur représente spontanément comme une sorte de face nord de l’Eiger, à peine arrondie, mais au
moins aussi pénible à surmonter. Je n’ai que ce seul conseil à vous donner : mettez un pied devant
l’autre et laissez le temps au temps. Ou alors tenezvous-en à la pédagogie de Méphistophélès, qui
fournit déjà l’exergue de ce livre. Il a formulé ce conseil bien plus joliment :
Traduction :
1. Un peu comme ces jardins « privatifs » que les agents immobiliers cherchent à vous vendre dans l’espoir d’être « rénumérés ».
2. Aucun lien avec us(e)r.
3. Si si. C’est beaucoup plus facile que vous ne pensez.
5
Vos amis vous regardent de travers parce que vous cuisinez vos propres gratins au lieu de les
acheter congelés au supermarché ? Ils ont peur de se salir et de perdre leur temps ? Si l’idée de
casser un œuf ou d’éplucher des pommes de terre ne vous paraît pas aberrante, poursuivez votre
lecture. Nous abordons les gestes de base de la cuisine sous Linux.
Introduction à la ligne de commande
Figure 5–1
L’utilisation de la ligne de commande effraie la plupart des utilisateurs.
Ce refus en bloc peut se comprendre lorsqu’on voit certains ouvrages, soi-disant « pour les nuls »,
qui inculquent avant tout au lecteur le sentiment d’être effectivement nul en la matière, ou encore
lorsqu’on considère certains ouvrages « d’introduction », « pour débutants » ou autres, qui n’ont
d’autre but que de vous plonger la tête dans le cambouis en vous faisant faire le tour, complet et
exhaustif, des commandes Unix de A à Z, avant de vous lancer dans un grand écart sans échauffement
vers l’édition de scripts shell. Ajoutons à cela les mauvais souvenirs que certains auront pu garder de
la fameuse invite de commande DOS de Microsoft et les réticences s’expliquent.
Le présent chapitre s’adresse à tous ces utilisateurs intimidés, angoissés par une utilisation plus
« poussée » de leur machine. Laissons là toute polémique et même toute théorie ; concentrons-nous
sur la pratique. Dites-vous avant tout que ça ne coûte rien d’essayer et que vous ne risquez pas de
casser quoi que ce soit sur votre machine.
« Oui, mais il existe des centaines de commandes, avec des milliers d’options, comment vaisje
apprendre tout ça ? » objecterez-vous avec une moitié de coquille d’œuf sur la tête, tout comme
Calimero. Pour vous répondre, je pourrais me demander d’abord si vous vous priveriez d’un week-
end à Londres sous prétexte que vous n’êtes pas agrégé de littérature et civilisation anglaise. Je me
contenterai de vous dire qu’avec une poignée de commandes, on arrive déjà à faire des choses très
étonnantes.
… ou à cela :
bash-4.3$
Selon la devise désormais célèbre que différents chemins mènent à Saint-Bauzille-de-Montmel, vous
avez pour cela trois possibilités :
• rester ou revenir en mode console, autrement dit ne pas lancer l’environnement graphique ;
• activer une console virtuelle à partir de l’environnement graphique ;
• toujours en mode graphique, lancer un émulateur de terminal.
Jouer avec les consoles virtuelles
Appuyez sur Ctrl+Alt+F1 pour activer la première console virtuelle et lisez au moins jusqu’à la fin
du paragraphe suivant pour éviter de rester coincé en mode console, comme cela arrive souvent aux
débutants. Votre écran bascule en mode texte et vous vous retrouvez confronté à un flot de messages
cryptiques qui ressemblent à ceci :
X.org X Server 1.18.3
Release Date: 2016-04-04
X Protocol Version 11, Revision 0
Build Operating System: Slackware 14.2 Slackware Linux Project
...
Il s’agit tout simplement des messages de votre serveur graphique. Ils viennent s’afficher dans la
première console parce que c’est à partir de là que vous avez démarré (startx) l’environnement
graphique.
Pour basculer sur la deuxième console, tapez Ctrl+Alt+F2. Vous voilà face à une invite de connexion
qui ressemble plus ou moins à ceci :
Welcome to Linux 4.4.14 (tty2)
slackbox login:
Connectez-vous en tant que root ou en tant que simple utilisateur, comme vous le faites lorsque vous
venez de démarrer la machine. Ou alors laissez l’invite de connexion telle quelle, sans rien faire.
Tapez Ctrl+Alt+F3 pour activer la troisième console (tty3), Ctrl+Alt+F4 pour la quatrième (tty4) et
ainsi de suite jusqu’à Ctrl+Alt+F6 pour la sixième (tty6). Maintenant, tapez Ctrl+Alt+F7 et vous
voilà non pas dans une septième console virtuelle, mais de retour dans votre environnement
graphique. À présent, essayez de basculer joyeusement entre les consoles virtuelles et
l’environnement graphique.
Figure 5–2
Une pièce de musée : un « terminal », un vrai
Figure 5–3
L’émulateur de terminal Xfce Terminal
L’onglet Apparence sert à sélectionner la police par défaut. Veillez à utiliser une police à chasse fixe.
Figure 5–6
Choix de l’arrière-plan
L’option Arrière-plan transparent vous affiche l’image de l’arrière-plan du bureau en
pseudotransparence, c’est-à-dire que vous apercevez le fond d’écran, mais pas les fenêtres ouvertes
derrière le terminal. Nous verrons plus loin comment configurer une transparence réelle pour toutes
les fenêtres.
Figure 5–7
Désactivation de la barre de défilement
Étant donné que je me sers des touches de curseur pour faire défiler du texte, je désactive la barre de
défilement obsolète.
Figure 5–8
Voici à quoi ressemble le terminal si vous appliquez toutes les options indiquées précédemment.
N’hésitez pas à expérimenter un peu pour trouver l’apparence qui vous convient. Bien évidemment,
l’apparence de la console n’aura aucune incidence sur la manière dont les commandes seront
interprétées.
Vous venez de taper votre première commande... et vous vous retrouvez face à votre premier message
d’erreur. Mais que s’est-il passé exactement ?
• L’interpréteur de commandes vous a affiché une invite : bash-4.3$. Il vous a ainsi signifié qu’il était
prêt à recevoir une ou plusieurs commandes.
• Vous avez tapé une commande : make.
• Vous avez fait suivre la commande make d’un argument : love.
• L’interpréteur a essayé en vain d’exécuter ce que vous lui avez demandé de faire et vous a dit plus
ou moins clairement ce qu’il en pense, en l’occurrence : make: *** Aucune règle pour fabriquer la cible
« love ». Arrêt.
• L’interpréteur de commandes vous affiche à nouveau l’invite, pour vous indiquer qu’il est prêt à
recevoir une ou plusieurs commandes.
À présent, nous n’avons qu’à essayer avec des commandes qui ont un peu plus de sens pour votre
machine.
Naviguer : ls, pwd et cd
Comment lire ce résultat ? La commande ls nous a retourné les éléments situés dans notre répertoire
d’utilisateur.
Résultat :
bin dev home lost+found mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
Et l’on obtient :
ConsoleKit/ minirc.dfl
DIR_COLORS misc@
HOSTNAME mke2fs.conf
ImageMagick-6/ mkinitrd.conf.sample
NetworkManager/ modprobe.d/
...
asound.state@ nail.rc
at-spi2/ named.conf
at.deny nanorc
auto.master netatalk/
auto.master.d/ netconfig
auto.misc netgroup
auto.net* networks
auto.smb* nfsmount.conf
...
Le résultat de cette commande dépassera probablement la taille d’un écran. Pour revenir en arrière et
afficher les écrans précédents, maintenez la touche Maj enfoncée et utilisez les touches PageHaut et
PageBas pour faire défiler l’affichage en arrière et en avant.
Vous constatez que certains éléments sont suivis d’une barre oblique /, d’autres d’une arobase @ ou
d’une astérisque * ; le reste des éléments ne contient aucun suffixe.
• La barre oblique / (couleur par défaut : bleu) désigne un répertoire.
• L’absence de suffixe (couleur par défaut : noir ou blanc, selon le paramétrage de Terminal si vous
travaillez en mode console) indique qu’il s’agit d’un fichier régulier non exécutable.
• L’arobase @ (couleur par défaut : turquoise) nous montre qu’il s’agit d’un lien symbolique, ce qui
constitue l’équivalent d’un raccourci sous Windows. Nous verrons les liens symboliques un peu
plus loin.
• L’astérisque * (couleur par défaut : vert) nous indique qu’il s’agit d’un fichier régulier exécutable.
Il nous en manque encore quelques-uns, mais nous ne les traiterons pas. Nous éviterons ainsi
d’épuiser le sujet et le lecteur.
Mais encore ?
Ces informations peuvent nous paraître un peu maigres. Nous pouvons en afficher davantage en
utilisant l’option -l (comme long) :
bash-4.3$ ls -l /etc/cups
total 64
-rw-r--r-- 1 root root 1077 Jan 17 07:52 command.types
-rw-r--r-- 1 root root 14365 Jan 17 04:10 cups-browsed.conf
-rw-r----- 1 root lp 2916 Dec 10 18:21 cups-files.conf
...
-rw-r----- 1 root lp 142 Dec 10 18:21 snmp.conf
-rw-r----- 1 root lp 142 Dec 10 18:21 snmp.conf.default
drwx------ 2 root lp 4096 Dec 10 18:21 ssl/
L’utilisateur non averti trouvera cet affichage quelque peu énigmatique. En fait, il est facile à lire une
fois que l’on sait à quoi correspond chaque terme.
Tout à fait à gauche, vous avez une série de dix caractères. Le tout premier vous indique s’il s’agit
d’un fichier (tiret -) ou d’un répertoire (d comme directory). Ensuite, la série de neuf caractères (en
fait, trois fois trois) indique les droits d’accès au fichier ou au répertoire. Nous traiterons la question
des droits d’accès un peu plus loin. Les caractères r, w, x et - décrivent ce que l’on a le droit de faire
avec le fichier ou le répertoire :
• lire : r comme read ;
• écrire (modifier) : w comme write ;
• exécuter : x pour e[x]ecute ;
• rien du tout : -.
Je disais : ce que l’on a le droit de faire. Ce on est en fait assez bien spécifié : les trois premiers
caractères de la série concernent le propriétaire du fichier, les trois suivants le groupe et les trois
derniers le reste du monde. Nous y reviendrons bientôt en détail.
Le chiffre qui suit (ici : la série de 1 et de 2 dans la deuxième colonne) n’est pas d’une grande
importance pour nous. Précisons tout de même qu’il indique le nombre de liens pointant vers le
fichier ou le répertoire.
Les deux indications immédiatement après nous montrent le propriétaire du fichier, ainsi que le
groupe auquel il appartient. Dans l’exemple, fichiers et répertoires appartiennent à l’utilisateur root,
ainsi qu’aux groupes root et lp (pour line printer, imprimante). Ceci n’est pas surprenant, étant donné
que nous nous trouvons au cœur du système, à la racine du répertoire de configuration du serveur
d’impression.
La taille des fichiers est tout de suite beaucoup plus lisible, car le système l’indique en kilo-octets
(K), mégaoctets (M) ou gigaoctets (G).
Quant aux deux dernières colonnes, elles nous indiquent respectivement la date de la création ou de
la dernière modification et, pour finir, le nom du fichier ou du répertoire.
Cette option sert à afficher les fichiers et répertoires cachés. Dans un système Linux, les fichiers et
répertoires dont le nom commence par un point ne s’affichent pas lorsque ls est invoqué normalement.
Vous ne les verrez donc qu’en utilisant l’option -a.
Pour afficher ces fichiers et répertoires cachés dans le navigateur de fichiers Thunar, cochez l’option
Affichage>Afficher les fichiers cachés. Vous pouvez également utiliser le raccourci clavier Ctrl+H
pour basculer d’un mode d’affichage à l’autre.
Figure 5–9
Les fichiers et répertoires cachés dans Thunar
TILDE ? Tilt !
Les lecteurs attentifs auront probablement déjà noté le tilde ~ dans l’invite de la configuration par
défaut du mode console :
kikinovak@slackbox:~$
Lorsque vous vous promenez dans une grande ville, il vous arrive de vous perdre. Avec un peu de
chance, vous tombez sur un de ces grands plans de la ville, avec une flèche et un petit rond bien
visibles, qui vous indique : « VOUS ÊTES ICI ». C’est exactement ce que fait pwd. Et maintenant que
nous savons nous repérer, apprenons à nous déplacer.
On bouge avec cd !
La commande cd (change directory) est utilisée pour changer de répertoire courant. Il suffit de la
faire suivre du chemin du répertoire dans lequel on veut se placer. Dans l’exemple ci-après,
l’invocation de la commande pwd après cd montre que nous sommes bien dans le répertoire demandé.
bash-4.3$ cd /
bash-4.3$ pwd
/
bash-4.3$ cd bin
bash-4.3$ pwd
/bin
bash-4.3$ cd /etc
bash-4.3$ pwd
/etc
bash-4.3$ cd /usr/bin
bash-4.3$ pwd
/usr/bin
Ces deux exemples de la vie courante vous permettront peut-être de saisir la nuance :
• « remontez la rue devant vous, tournez à gauche, continuez deux cents mètres, puis tournez à droite
et encore à droite » (chemin relatif) ;
• « partez du Vieux Port, remontez la Canebière, puis prenez le boulevard Longchamp et arrêtez-
vous au Palais Longchamp » (chemin absolu).
Dans l’exemple précédent, nous nous situons dans le répertoire /etc. Si nous écrivons cd bin sans la
barre oblique / qui précède, l’interpréteur de commandes cherchera un répertoire inexistant /etc/bin et
affichera une erreur.
À court d’arguments
Pour revenir dans votre répertoire d’utilisateur, il suffit d’invoquer cd tout court, sans arguments :
bash-4.3$ cd /etc
bash-4.3$ pwd
/etc
bash-4.3$ cd cups
bash-4.3$ pwd
/etc/cups
bash-4.3$ cd
bash-4.3$ pwd
/home/kikinovak
« Ici » et « à l’étage »
Voyons maintenant deux répertoires un peu particuliers. Affichez la totalité du contenu de votre
répertoire d’utilisateur :
bash-4.3$ ls -aF
./ .gimp-2.8/ .thumbnails/
../ .gnupg/ .viminfo
.ICEauthority .gvfs/ Bureau/
...
Vous remarquez qu’en début de liste, vous avec un répertoire nommé . et un autre nommé ... Affichez
maintenant le contenu d’un autre répertoire, avec la même option -a combinée avec l’option -F :
bash-4.3$ ls -aF /usr
./ adm@ games/ lib/ sbin/ tmp@
../ bin/ i586-slackware-linux/ libexec/ share/
X11@ dict@ include/ local/ spool@
X11R6/ doc/ info/ man/ src/
Si vous répétez l’opération sur d’autres répertoires au hasard, vous constaterez que chaque liste
débute invariablement par ces mêmes répertoires . et .. :
• . est le répertoire courant.
• .. est le répertoire parent.
Là encore, la mise en pratique vous aidera à saisir le concept. Essayez ceci :
bash-4.3$ cd /var/log/cups
bash-4.3$ pwd
/var/log/cups
bash-4.3$ cd ..
bash-4.3$ pwd
/var/log
bash-4.3$ cd ..
bash-4.3$ pwd
/var
bash-4.3$ cd ..
bash-4.3$ pwd
/
Chaque appel à cd .. nous fait ainsi remonter d’un cran dans l’arborescence, jusqu’à ce que nous nous
retrouvions à la racine.
Quant au point ., il faut se le représenter comme le fameux « VOUS ÊTES ICI » sur le plan de la
ville. Admettons que je me situe dans le répertoire /etc et que je veuille me rendre dans le sous-
répertoire cups ; je pourrais utiliser indépendamment ces deux notations, qui reviendraient au même :
bash-4.3$ cd /
bash-4.3$ cd bin
bash-4.3$ pwd
/bin
Ou alors :
bash-4.3$ cd /
bash-4.3$ cd ./bin
bash-4.3$ pwd
/bin
L’utilité de cette notation vous apparaîtra un peu plus loin. Pour l’instant, retenez simplement que .
signifie « ici ».
Notez aussi que .. peut très bien faire partie d’un chemin. Admettons que vous soyez dans le
répertoire /etc/httpd et que vous souhaitiez vous rendre dans /etc/cups. Vous pourriez vous y prendre
comme ceci :
bash-4.3$ cd /etc/httpd
bash-4.3$ pwd
/etc/httpd
bash-4.3$ cd ..
bash-4.3$ cd cups
bash-4.3$ pwd
/etc/cups
Vous pouvez également monter de plusieurs crans, si cela est nécessaire. Si votre répertoire courant
est /etc/httpd/extra et si vous souhaitez vous rendre dans /etc/cups, il va falloir que vous montiez de
deux crans, pour ensuite entrer dans le répertoire cups. En pratique, cela ressemblerait à l’exemple
suivant :
bash-4.3$ cd /etc/httpd/extra
bash-4.3$ pwd
/etc/httpd/extra
bash-4.3$ cd ../../cups
bash-4.3$ pwd
/etc/cups
Voilà un grand pas pour nous, un petit pas pour l’humanité. Continuons :
bash-4.3$ echo Bonjour Monsieur ! > bonjour.txt
Cette fois-ci, il n’y a aucun résultat immédiat. Regardons le contenu du répertoire courant :
bash-4.3$ ls
Bureau Images Musique Téléchargements bonjour.txt
Documents Modèles Public Vidéos
Explication : la flèche > a redirigé la sortie standard vers un fichier, comme le formulerait quelqu’un
du métier. En d’autres termes, la chaîne de caractères Bonjour Monsieur ! a été écrite dans le fichier
bonjour.txt au lieu de s’afficher sur l’écran.
Si nous mettons nos trois nouveaux fichiers en argument, cat affiche leurs contenus respectifs l’un
après l’autre :
$ cat bonjour.txt bonjour2.txt bonjour3.txt
Bonjour Monsieur !
Bonjour Madame !
Bonjour les enfants !
REMARQUE Convention pour un affichage simplifié
Vous remarquerez que, dorénavant, je réduis l’invite de commande à un simple $, ce qui est une
manière habituelle de procéder et permet de faire figurer ma commande sur une seule ligne.
Et là aussi, nous pouvons rediriger la sortie standard. Le résultat s’écrira dans un fichier au lieu de
s’afficher à l’écran :
$ cat bonjour.txt bonjour2.txt bonjour3.txt > bonjourtous.txt
$ cat bonjourtous.txt
Bonjour Monsieur !
Bonjour Madame !
Bonjour les enfants !
Ici, j’ai mis la charrue de la pratique avant les bœufs de la théorie pour vous faire comprendre le
fonctionnement de cat, qui remplit essentiellement deux fonctions. D’une part, cette commande sert à
la « concaténation » de fichiers, d’où son nom ; c’est le fait de rassembler le contenu de ces fichiers
en un seul gros :
$ cat fichier1 fichier2 fichier3 > grosfichier
D’autre part, l’autre rôle de cat est tout simplement d’afficher le contenu de fichiers textes simples.
Essayez de remonter au début du fichier, jusqu’à ce que vous aperceviez la ligne contenant l’invite de
commande. Vous n’en voyez pas la fin (ou plutôt : le début) ? C’est normal : le fichier en question
compte 2 400 lignes. Sa longueur pose un problème dans le sens où nous arrivons aux limites de :
• la patience de l’utilisateur qui n’en peut plus d’appuyer sur Maj+PageHaut ;
• la mémoire d’affichage de la console, qui ne conserve qu’un nombre limité de caractères : au-
delà, il n’est plus possible de remonter davantage pour voir le début du fichier.
Visualiser avec more
Bien sûr, nous pourrions décider d’ouvrir tous ces fichiers dont l’affichage dépasse la taille d’un
écran avec un éditeur de texte simple. Avec un système Linux, si nous souhaitons seulement voir le
contenu d’un certain fichier de configuration sans toutefois l’éditer, nous aurons d’abord le réflexe
d’utiliser un pager. Le terme anglais a été francisé en « logiciel de pagination », « logiciel de
visualisation », « visualiseur » ou « pageur » pour faire plus court. En voici un :
$ more /etc/passwd
Figure 5–10
Pour visualiser un fichier de configuration plus long, utilisez un logiciel de pagination comme more
ou less.
Le visualiseur more affiche le fichier spécifié en argument en remplissant exactement un écran, puis il
s’arrête. Pour voir le reste du fichier, vous avez le choix entre :
• appuyer sur Entrée pour avancer ligne par ligne ;
• utiliser la touche Espace pour progresser page par page ;
• ou appuyer sur Q (comme quit ou « quitter ») pour sortir du mode de visualisation.
Dès que more est arrivé à la fin du fichier, il considère qu’il a terminé son travail. L’invite de
commande réapparaît et le clignotement du curseur vous indique que vous pouvez continuer de
travailler normalement dans la console.
Essayez more sur un fichier plus long :
$ more /etc/services
EN SAVOIR PLUS Sur more
Les anciennes versions de more ne permettaient pas de revenir en arrière, ce qui ne facilitait pas la
recherche dans un fichier un peu plus volumineux. Les versions plus récentes – comme celle
incluse dans notre installation de Slackware – ont ajouté cette fonctionnalité sous forme de la
touche B (comme back), qui permet de « feuilleter » le fichier page par page en sens inverse.
Toutefois, il faudra bien se résoudre à admettre que more fait partie de la poignée d’utilitaires un
peu obtus du monde Linux et qu’il n’est pas vraiment confortable à utiliser.
Vous constatez que less vous laisse naviguer exactement comme more. La touche Entrée sert à avancer
d’une ligne, les touches Espace et B permettent de feuilleter le fichier dans un sens et dans l’autre, Q
interrompt la pagination et fait réapparaître l’invite de commande. Cependant ce n’est pas tout :
• À la différence de more, less ne quitte pas le mode de pagination lorsqu’il arrive à la fin du fichier,
ce qui évite les manipulations énervantes du style « retour à la case départ ».
• Les touches directionnelles du clavier FlècheHaut et FlècheBas permettent également de naviguer
dans le fichier. Non content de cela, FlècheGauche et FlècheDroite vous déplacent latéralement
dans un fichier dont la largeur dépasse celle de l’écran. Essayez.
• Il arrive très souvent que l’on ouvre un fichier de configuration à la recherche d’une certaine
chaîne de caractères. Lorsque le fichier compte plusieurs milliers de lignes, cela revient à
chercher une aiguille dans une botte de foin. Pour remédier à cela, less inclut une fonction de
recherche simple. Pour exemple, ouvrez le fichier /etc/passwd avec less, appuyez sur la barre
oblique / et faites-la suivre de la chaîne de caractères que vous cherchez, par exemple false ou
votre nom d’utilisateur. Vous remarquez que less vous affiche toutes les occurrences trouvées (que
celles-ci soient en majuscules ou en minuscules) en surbrillance. Utilisez la touche N (next =
prochain) pour sauter d’occurrence en occurrence et Maj+N pour faire la même chose en sens
inverse.
Figure 5–11
less est un visualiseur bien plus confortable à utiliser que more.
Nous constatons que l’horodatage du fichier indique maintenant le 1er décembre, à 11h07. En effet,
cela correspond à la date et à l’heure auxquelles j’écris ces lignes.
Ici, la commande touch a créé un fichier vide yatahongaga.txt, d’une taille de 0 octet.
Nous avons écrit trois lignes de texte dans un fichier ~/livres.txt. N’oubliez pas que le symbole tilde ~
représente ici le répertoire d’utilisateur, dans mon cas /home/kikinovak. La suite de caractères EOF
(comme End Of File) définit la fin du fichier.
Avec echo
Aurions-nous pu obtenir quelque chose de comparable avec la commande echo ? Essayons :
$ echo Beethoven > compositeurs.txt
$ cat compositeurs.txt
Beethoven
La commande echo a créé ici un nouveau fichier compositeurs.txt en y écrivant une ligne Beethoven.
Jusqu’ici, cela ressemble beaucoup à ce que nous avons fait plus haut avec bonjour.txt. Maintenant,
essayons ceci :
$ echo Bach > compositeurs.txt
$ cat compositeurs.txt
Bach
Ce n’était donc pas la bonne méthode pour ajouter une ligne à notre fichier. Le dernier contenu en
date a tout simplement écrasé l’ancien contenu. Nous allons donc nous y prendre autrement :
$ echo Bartok >> compositeurs.txt
$ cat compositeurs.txt
Bach
Bartok
Voilà qui est mieux. L’utilisation du double chevron >> au lieu du simple > a provoqué l’ajout de la
chaîne de caractères à la fin du fichier, en évitant la substitution du contenu précédent. Si nous
souhaitons ajouter un troisième nom à la liste, il devrait donc suffire de répéter la dernière commande
en insérant un autre nom. Essayons :
$ echo Schubert >> compositeurs.txt
$ cat compositeurs.txt
Bach
Bartok
Schubert
Effectivement, c’est bien cela. Soit dit en passant, nous en avons profité pour avoir un autre petit
aperçu de la redirection sous Linux. Passons maintenant à la création de répertoires.
DÉCRYPTAGE
Ignorez le chiffre 4096, qui n’a rien à voir avec la taille réelle du répertoire : c’est l’espace occupé
par ses métadonnées, c’est-à-dire par les informations sur son contenu, et non pas le contenu lui-
même.
Il est également possible de spécifier le chemin complet du répertoire à créer. Pour créer un dossier
2012 à l’intérieur du répertoire existant Images, je pourrais le faire comme ceci :
$ mkdir /home/kikinovak/Images/2012
$ cd
$ ls -ld Images/2012
drwxr-xr-x 2 kikinovak users 4096 Dec 1 11:21 Images/2012/
Bien évidemment, dans cet exemple, il vous faudra remplacer kikinovak dans le chemin par votre nom
d’utilisateur. D’ailleurs, pour être sûr que c’est bien dans notre répertoire d’utilisateur que l’on crée
le dossier, nous aurions pu écrire cette dernière commande comme ceci :
$ mkdir ~/Images/2012
$ cd ~/Images/2012
$ mkdir Photos Graphismes Captures
$ ls -l
total 12
drwxr-xr-x 2 kikinovak users 4096 Dec 1 11:24 Captures/
drwxr-xr-x 2 kikinovak users 4096 Dec 1 11:24 Graphismes/
drwxr-xr-x 2 kikinovak users 4096 Dec 1 11:24 Photos/
Ce dernier exemple appelle deux remarques. D’une part, il est tout à fait possible de créer une série
de répertoires à la louche. Il suffit de spécifier leurs noms respectifs en argument, en les séparant
d’un espace. D’autre part, notez bien le d comme directory en tête des attributs complets (drwxrwxr-x,
etc.), qui signifie que nous avons affaire à des répertoires.
Vous voyez le problème : la commande mkdir nous a créé deux répertoires distincts : Mes et Documents. Ce
n’est pas ce que nous voulions faire.
Prenons un autre exemple pour voir comment nous aurions pu nous y prendre. Revenons dans notre
répertoire d’utilisateur, créons un répertoire Test2 et, à l’intérieur de ce dernier, essayons de créer
trois répertoires distincts Mes Documents, Mes Images et Mes Films.
$ cd
$ mkdir Test2
$ cd Test2
$ mkdir "Mes Documents"
$ mkdir 'Mes Images'
$ mkdir Mes\ Films
$ ls -l
total 12
drwxr-xr-x 2 kikinovak users 4096 Dec 1 11:27 Mes Documents
drwxr-xr-x 2 kikinovak users 4096 Dec 1 11:27 Mes Images
drwxr-xr-x 2 kikinovak users 4096 Dec 1 11:27 Mes Films
Cette fois-ci, nous avons bien obtenu le résultat escompté. Vous aurez certainement remarqué que
pour chacun des trois répertoires, je me suis servi d’une syntaxe différente, en utilisant
respectivement des guillemets doubles, des guillemets simples et un caractère d’échappement devant
l’espace.
Dans un premier temps, essayez de venir à bout de cet exercice par vos propres moyens. Si vous
avez du mal, reprenez les exemples des pages précédentes. Vous ferez probablement des erreurs,
ce qui est inévitable pour progresser.
Voici une solution possible :
$ cd
$ mkdir Fichiers
$ cd Fichiers/
$ mkdir Documents Images Films
$ cd Documents/
$ touch texte.txt
$ cd ../Images/
$ touch photo.jpg
$ cd ../Films/
$ touch film.avi
$ cd
Notez bien que je n’ai pas parlé de la solution, mais bien d’une solution possible pour venir à bout
de notre tâche.
3 directories, 3 files
Les anglophones parmi vous auront peut-être deviné que la commande tree – qui signifie « arbre » en
anglais – sert à représenter des arborescences. Hormis ce que vous avez pu créer en vous exerçant,
rappelez-vous que votre répertoire d’utilisateur contient aussi une série de fichiers et de répertoires
cachés, dont nous allons pouvoir examiner le contenu à l’aide de tree. Invoquez ls -a pour afficher la
totalité des fichiers du répertoire courant, puis :
$ tree .config
.config/
|-- Thunar
| |-- accels.scm
| `-- uca.xml
|-- Trolltech.conf
|-- gconf
|-- pulse
|-- user-dirs.dirs
|-- user-dirs.locale
`-- xfce4
|-- desktop
| `-- icons.screen0-1264x928.rc
...
Puisque nous avons parlé d’arbre, vous pouvez très bien imaginer les suites de répertoires et de sous-
répertoires comme autant de branches qui se ramifient. Les fichiers (comme accels.scm ou uca.xml dans
l’exemple précédent) correspondent alors aux feuilles de cet arbre. Et pour filer la métaphore : tout
se rejoint à la racine2.
L’option -d de tree montre les différents embranchements, mais sans les feuilles. En d’autres termes,
tree -d (comme directory) affichera seulement les répertoires d’une arborescence. Reprenons le
dernier exemple avec cette option :
$ tree -d .config
.config/
|-- Thunar
|-- gconf
|-- pulse
`-- xfce4
|-- desktop
...
Est-ce que tree nous affiche vraiment tout ? Appliquons-le sur le répertoire suivant :
$ tree /etc/skel
/etc/skel/
0 directories, 0 files
$ tree -a /etc/skel
/etc/skel/
`-- .screenrc
0 directories, 1 file
Nous en déduisons que l’option -a fonctionne de manière similaire avec tree et ls.
La première idée sera sans doute d’invoquer mkdir avec le chemin complet des sous-répertoires :
$ mkdir branche1/branche2/branche3/branche4
Réprimons un instant une éventuelle pulsion soudaine de traverser de notre poing l’écran de
l’ordinateur. Au lieu de cela, regardons de plus près le message d’erreur et prenons-le au pied de la
lettre. Ce que notre shell (interpréteur de commande) essaie de nous faire comprendre – de façon un
peu laconique, certes – c’est qu’il n’arrive pas à créer le répertoire branche4 parce que les répertoires
parents branche1, branche2 et branche3 n’existent pas. Nous devons donc invoquer mkdir avec l’option -p
(comme parent) :
$ mkdir -p branche1/branche2/branche3/branche4
$ tree branche1
branche1/
`-- branche2
`-- branche3
`-- branche4
3 directories, 0 files
Je disais que notre shell se montrait un peu trop laconique à notre égard. Sachez que, dans bien des
cas, il ne tient qu’à nous de le rendre un peu plus bavard. Créons une autre série de répertoires
imbriqués, mais cette fois-ci, utilisons l’option supplémentaire -v comme --verbose, c’est-à-dire
« bavard » :
$ mkdir -pv poupee1/poupee2/poupee3
mkdir: création du répertoire « poupee1 »
mkdir: création du répertoire « poupee1/poupee2 »
mkdir: création du répertoire « poupee1/poupee2/poupee3 »
Pour copier des répertoires entiers avec leur contenu, il faudra invoquer cp avec l’option -R (comme
recursive, « récursif »). Dans l’exemple, j’utilise en plus l’option -v qui explicite bien chaque détail
de l’opération.
$ tree Fichiers/
Fichiers/
|-- Documents
| `-- texte.txt
|-- Films
| `-- film.avi
`-- Images
`-- image.jpg
3 directories, 3 files
$ cp -Rv Fichiers/ /tmp/
« Fichiers/ » -> « /tmp/Fichiers »
« Fichiers/Documents » -> « /tmp/Fichiers/Documents »
« Fichiers/Documents/texte.txt » -> « /tmp/Fichiers/Documents/texte.txt »
« Fichiers/Images » -> « /tmp/Fichiers/Images »
« Fichiers/Images/photo.jpg » -> « /tmp/Fichiers/Images/photo.jpg »
« Fichiers/Films » -> « /tmp/Fichiers/Films »
« Fichiers/Films/film.avi » -> « /tmp/Fichiers/Films/film.avi »
$ tree /tmp/Fichiers/
/tmp/Fichiers/
|-- Documents
| `-- texte.txt
|-- Films
| `-- film.avi
`-- Images
`-- image.jpg
3 directories, 3 files
Voici maintenant une utilisation de cp qui peut ressembler (de loin) au quotidien réel d’un
administrateur système. Créez un fichier de configuration config dans votre répertoire d’utilisateur.
Effectuez-en ensuite une copie de sauvegarde config.orig, qui représentera en quelque sorte l’état
initial de votre fichier de configuration. Maintenant, modifiez config en ajoutant une ligne, par
exemple. Vos fichiers ne sont désormais plus les mêmes.
$ cat > config << EOF
> Option 1
> Option 2
> Option 3
> EOF
$ cp -v config config.orig
« config » -> « config.orig »
$ ls -l config*
-rw-r--r-- 1 kikinovak users 29 déc. 1 11:51 config
-rw-r--r-- 1 kikinovak users 29 déc. 1 11:51 config.orig
$ echo Option 4 >> config
$ ls -l config*
-rw-r--r-- 1 kikinovak users 38 déc. 1 11:52 config
-rw-r--r-- 1 kikinovak users 29 déc. 1 11:51 config.orig
Les habitués de MS-DOS verront tout de suite la différence : sous Windows, le joker aurait dû être
invoqué sous la forme BONJOUR*.*, voire BONJOUR*.TXT.
a. J’évite d’utiliser les traductions françaises comme « caractère générique » ou « métacaractère », tout juste aptes à séduire les
penseurs postmodernes.
Sauvegarder un répertoire
Pour en revenir à cp, je peux également copier l’intégralité d’un répertoire vers un répertoire d’un
autre nom :
$ cp -Rv Fichiers/ CopieFichiers
« Fichiers/ » -> « CopieFichiers »
« Fichiers/Documents » -> « CopieFichiers/Documents »
« Fichiers/Documents/texte.txt » -> « CopieFichiers/Documents/texte.txt »
« Fichiers/Images » -> « CopieFichiers/Images »
« Fichiers/Images/photo.jpg » -> « CopieFichiers/Images/photo.jpg »
« Fichiers/Films » -> « CopieFichiers/Films »
« Fichiers/Films/film.avi » -> « CopieFichiers/Films/film.avi »
Admettons maintenant que je souhaite effectuer une copie complète du répertoire Fichiers et de tout
son contenu vers un autre endroit du système, tout en donnant un autre nom au répertoire copié, par
exemple Sauvegarde20160208. Dans ce cas, voici ce qu’il faut faire :
$ cp -Rv Fichiers/ /tmp/Sauvegarde20160208
« Fichiers/ » -> « /tmp/Sauvegarde20160208 »
« Fichiers/Documents » -> « /tmp/Sauvegarde20160208/Documents »
« Fichiers/Documents/texte.txt » -> « /tmp/Sauvegarde20160208/Documents/texte.txt »
« Fichiers/Images » -> « /tmp/Sauvegarde20160208/Images »
« Fichiers/Images/photo.jpg » -> « /tmp/Sauvegarde20160208/Images/photo.jpg »
« Fichiers/Films » -> « /tmp/Sauvegarde20160208/Films »
« Fichiers/Films/film.avi » -> « /tmp/Sauvegarde20160208/Films/film.avi »
Le seul aspect peu réaliste de ce dernier exemple, c’est que /tmp n’est pas un endroit approprié pour
ranger des sauvegardes. De meilleurs endroits seront à découvrir un peu plus loin.
Question épineuse : comment déplacer à nouveau le fichier /tmp/bonjour.txt vers mon répertoire
d’utilisateur lorsque je me trouve dans ce dernier ? Voici la réponse :
$ mv /tmp/bonjour.txt ./
Vous rappelez-vous ce que nous avons dit un peu plus haut concernant le point . qui signifie « ici » ?
Dans ce cas, la première des deux commandes précédentes peut se lire littéralement comme ceci :
« déplace (mv) le fichier bonjour.txt qui se situe dans le répertoire tmp vers ici (./) ».
Là, nous venons tout simplement de renommer le fichier bonjour.txt en hello.txt. Pour déplacer ce
fichier hello.txt vers /tmp, tout en le renommant en bonjour.txt, c’est très simple :
$ mv hello.txt /tmp/bonjour.txt
Supprimer : rm et rmdir
Vous n’obtiendrez pas de demande de confirmation du genre Êtes-vous sûr de... ? ou autres Voulez-
vous vraiment... ?, votre système Linux n’a rien d’une nounou qui vous prend par la main. Vous lui
avez ordonné de supprimer le fichier bonjour.txt et c’est sans broncher qu’il s’est exécuté pour
l’envoyer au paradis des octets. Ici, vous ne trouverez pas de Corbeille non plus, où vous auriez pu
repêcher vos données malencontreusement supprimées.
SUPPRESSION La Corbeille
Les environnements de bureau comme Xfce ou KDE disposent bien d’une Corbeille qui permet de
repêcher des fichiers supprimés en mode graphique par le biais du navigateur de fichiers. En
revanche, un fichier supprimé en ligne de commande sera perdu à jamais.
Dans certains cas, ce fonctionnement peut être implémenté par défaut par ce qu’on appelle un alias de
commande. Ouvrons une petite parenthèse sur les alias.
Le répertoire que vous souhaitez supprimer doit impérativement être vide. Dans le cas contraire, rmdir
refuse de s’exécuter et vous obtenez un message d’erreur.
$ mkdir repertoirebidon
$ touch repertoirebidon/fichierbidon
$ rmdir repertoirebidon/
rmdir: échec de suppression de « repertoirebidon/ »: Le dossier n'est pas vide
Dans ce cas, c’est-à-dire si l’on souhaite supprimer un répertoire ainsi que tout son contenu, on peut
avoir recours à la commande rm suivie de l’option -r (comme recursive). Dans l’exemple suivant,
j’ajoute l’option -i pour bien expliciter chaque opération de suppression.
$ mkdir repertoirebidon
$ touch repertoirebidon/fichierbidon
$ rm -ri repertoirebidon/
rm : descendre dans le répertoire « repertoirebidon » ? o
rm : supprimer fichier vide « repertoirebidon/fichierbidon » ? o
rm : supprimer répertoire « repertoirebidon » ? o
Dans la pratique quotidienne, c’est plutôt l’inverse que l’on souhaite faire. Il est souvent fastidieux de
confirmer chaque suppression dans une arborescence de répertoires. Dans certains cas de figure,
c’est même impossible : lorsque vous décidez par exemple de nettoyer vos anciens répertoires de
sources du noyau, il vous faudrait confirmer plus de 63 000 opérations de suppression. C’est là que
l’option -f (force) intervient :
$ alias rm='rm -i'
$ mkdir repertoirebidon
$ touch repertoirebidon/fichierbidon
$ rm -rf repertoirebidon/
Comme l’exemple précédent vous le montre, rm -rf ne vous demande pas votre avis et anéantit
joyeusement tout ce que vous spécifiez, à condition que vous en ayez le droit, bien sûr. Invoquée en
tant que root, la commande rm -rf peut même vous faire commettre l’équivalent numérique d’un
Seppuku3.
Pour aller plus vite, utilisez simplement le raccourci clavier Ctrl+L, ce qui revient au même.
Éditer des fichiers texte : Vi
Vi amélioré : Vim
Vi existe en plusieurs versions ou incarnations, les plus répandues étant l’ancêtre vi, le clone elvis et
vim (ou Vi Improved), une version améliorée. Notre système Slackware fournit Vi dans trois moutures
différentes :
• l’ancêtre Vi sous forme du clone Elvis : elvis ou vi ;
• Vim : vim ;
• la version GVim dotée d’une interface graphique : gvim.
Dorénavant, lorsque je mentionnerai « Vi », je parlerai en fait de la version améliorée invoquée par
la commande vim. Une fois que vous l’aurez maîtrisée, vous ne serez pas dépaysé en utilisant une
version plus rudimentaire.
L’apprentissage de Vi se déroule généralement en deux temps. Tout d’abord, il s’agit d’apprendre à
survivre, c’est-à-dire à réaliser des opérations simples d’édition de texte. Ensuite, une fois que les
manipulations de base sont à peu près maîtrisées, on découvre peu à peu le potentiel de cet éditeur. Il
se révèle alors être un outil de travail extrêmement puissant au quotidien, qui peut servir aussi bien à
administrer des serveurs distants, confectionner des sites web, des scripts ou des programmes, qu’à
élaborer des documents scientifiques avec le logiciel de mise en page LaTeX.
Figure 5–12
L’éditeur de texte Vim, une version améliorée de l’ancêtre Vi
Parmi les nombreuses fonctionnalités que présente Vim, on trouve la coloration syntaxique, le
formatage automatique des fonctions de recherche et de remplacement, l’utilisation de macros,
l’intégration du shell et beaucoup d’autres choses encore ; autant d’atouts qui en font l’outil de
prédilection des programmeurs, des webmestres ou des administrateurs système.
Commençons par les fonctions simples.
Vimtutor
Il existe un grand nombre de méthodes, de livres (imprimés ou en ligne) et de tutoriels pour
apprendre Vi. Tous ont un point en commun : ils vous dressent tôt ou tard une liste impressionnante de
raccourcis clavier plus rébarbatifs les uns que les autres, de façon à ce que seuls les utilisateurs très
têtus ou les compulsifs obsessionnels puissent espérer arriver au bout du tutoriel. Sachez donc que le
meilleur pédagogue pour enseigner Vi, c’est... Vi lui-même !
Il existe en effet un petit logiciel incorporé, nommé vimtutor, qui vous permet de vous entraîner à
souhait sur cet outil. C’est aussi ce que je vous conseille de faire, en faisant fi de toutes les méthodes
imprimées ou autres, car Vi est un outil de travail qui doit avant tout vous rentrer dans les doigts. Ne
cherchez pas à mémoriser directement ses fonctions, mais apprenez-les en les utilisant, par
l’entraînement et par la répétition.
$ vimtutor
Figure 5–13
La fenêtre de bienvenue de Vimtutor et le début de la première leçon interactive
À partir de maintenant, il suffit de lire attentivement les instructions qui vous sont données et de les
mettre en pratique. Vimtutor estime qu’il faut « entre 25 et 30 minutes » pour apprendre les bases.
Comptez plutôt entre trois quarts d’heure et une bonne heure si vous débutez. Si vous prévoyez
d’effectuer un passage complet par jour, il y a fort à parier qu’au bout d’une semaine, vous soyez
raisonnablement à l’aise dans l’édition de fichiers de configuration avec Vi.
Geek ou neuneu ?
Le monde des utilisateurs Linux se scinde grossièrement en deux camps :
• les utilisateurs qui reculent avec horreur devant la console ; ils sont rassurés par la présence
d’interfaces graphiques pour administrer leur système ;
• les aficionados de la ligne de commande, qui méprisent le recours à tout outil graphique ; ils
s’acquittent de toutes leurs tâches d’administration avec un seul terminal et un éditeur de texte
comme outil.
Les positions respectives des deux camps peuvent se résumer ainsi :
• du point de vue de la plupart des débutants, les gens qui utilisent la ligne de commande pour
administrer leur système sont un ramassis de geeks, terme argotique qui désigne un passionné de
l’informatique présentant une série de troubles comportementaux ;
• pour le camp des ascètes de la ligne de commande, les neuneus qui ont besoin d’un clicodrome
pour utiliser leur machine constituent une espèce tout aussi méprisable.
Prenons un exemple précis, développé de façon à peine moins caricaturale, qui vous donnera une
idée des deux approches : la configuration d’une interface réseau.
Le bureau de l’utilisateur A (geek) ressemblera à peu de choses près à la figure 5-14, abstraction
faite de la dame dévêtue au regard affamé faisant généralement office de fond d’écran :
Pour configurer sa carte réseau, l’utilisateur A lancera son émulateur de terminal préféré et éditera le
fichier /etc/rc.d/rc.inet1.conf à l’aide de Vi. Il éprouvera une certaine satisfaction – en partie
rationnelle – à n’avoir eu aucun recours à un quelconque assistant de configuration.
L’utilisateur B (neuneu) cliquera sur l’icône du Poste de travail, puis sur le Control Center, parce
que cela lui rappelle vaguement le Panneau de configuration de Windows (figure 5-15).
Ensuite, l’utilisateur B ira sur Périphériques réseau dans le menu, parce que c’est bien d’une carte
réseau qu’il s’agit. Dans la pléthore d’options qui s’affichent, il cliquera sur Paramètres réseau et
attendra patiemment la fin de l’Initialisation de la configuration réseau. À partir de là, il cliquera
successivement sur tous les onglets et croisera les doigts pour que l’interface de configuration
présente bien toutes les options dont il a besoin.
Figure 5–14
Le bureau du geek (utilisateur A)
Figure 5–15
Le bureau du neuneu (utilisateur B)
Pour compléter le tableau, il faudrait peut-être ajouter un troisième type d’utilisateur, plus rare :
l’utilisateur C, celui qui travaille quotidiennement avec des assistants de configuration tout en sachant
très bien ce qui se passe sous le capot. Méprisé par les uns, méconnu par les autres, l’utilisateur C
accepte son sort avec philosophie.
Le présent ouvrage ne vous demande certainement pas de trancher et de choisir votre camp. Il se
propose simplement de vous enseigner certains principes communs à tous les systèmes Linux et de
vous fournir un aperçu de ce qui se passe sous la surface. De par mon humble expérience, une bonne
connaissance des outils en ligne de commande vous permettra avant tout de vous sentir à l’aise dans
votre travail au quotidien, que celui-ci s’effectue avec ou sans surcouche graphique, et
indépendamment de la distribution et de l’environnement que vous choisirez en définitive.
Ceci étant dit, nous verrons que la notion de confort d’utilisation peut également s’appliquer à la
ligne de commande, car nous allons aborder une fonctionnalité extrêmement puissante du shell.
La complétion automatique
Commençons par une commande simple :
$ ls /usr/bin/firefox
L’invocation de cette commande représente un certain travail. En tout et pour tout, il faut saisir dix-
neuf caractères et confirmer par Entrée. Pfouh !
Essayons donc de faire plus court. Tapez ceci, sans confirmer par Entrée :
$ ls /u
Continuez. Ajoutez un B :
$ ls /usr/b
Ensuite, saisissez F, I, R :
$ ls /usr/bin/fir
Prenons un autre exemple. Imaginons que vous souhaitiez vous rendre dans le répertoire . Vous
/boot
devriez donc taper la commande suivante :
$ cd /boot/
Explication : le shell est confronté à une ambiguïté. Il ne sait pas s’il doit se rendre dans /bin ou dans
/boot. Lorsque vous avez appuyé une seconde fois sur Tab, il vous a montré toutes les possibilités qui
s’offrent à lui. Pour lever l’ambiguïté, il suffit de fournir un caractère supplémentaire...
$ cd /bo
… suivi de Tab :
$ cd /boot/
Si je me contente de saisir ls /s suivi de Tab, j’entends un simple bip et rien ne se passe. Une seconde
pression sur la touche Tab me montre alors toutes les possibilités qui s’offrent à moi :
$ ls /s
sbin/ srv/ sys/
$ ls /s
Il suffit donc de saisir le b de /sbin pour lever l’ambiguïté et permettre au shell de compléter le nom
du répertoire.
Continuons avec un peu de pratique. Dans votre répertoire d’utilisateur, créez une série de cinq
fichiers vides :
$ touch fichier1.txt fichier2.txt fichier3.txt
$ touch fichier3.png fichier3.avi
Admettons que vous souhaitiez afficher les propriétés détaillées de chacun d’entre eux, un par un.
Commencez par le premier :
$ ls -l f
Tab :
$ ls -l fichier
1, puis Tab :
$ ls -l fichier1.txt
Tab :
$ ls -l fichier
3, Tab, Tab :
$ ls -l fichier3.
fichier3.avi fichier3.png fichier3.txt
$ ls -l fichier3.
T, Tab :
$ ls -l fichier3.txt
Là, nous restons quelque peu perplexes. La documentation du serveur graphique a pourtant insisté sur
l’utilisation de ce répertoire et voilà qu’il n’existe pas. Que se passe-t-il donc ?
Regardez bien : le sous-répertoire de /etc s’appelle X11 (avec un X majuscule) et non x11, ce qui n’est
pas la même chose. Maintenant, invoquez cette même commande, mais en utilisant la complétion
automatique, c’est-à-dire en tapant :
$ ls /e
Tab :
$ ls /etc/
Maj+X, Tab :
$ ls /etc/X11/
Ici, le shell a complété le nom du répertoire correctement. Si nous avions essayé de taper la touche X
au lieu de Maj+X pour le répertoire X11, nous nous serions tout de suite aperçu de notre erreur, suite à
l’absence pour le moins suspecte de X11 dans la liste des répertoires proposés.
Cette petite expérience nous permet de tirer la conclusion suivante. Outre l’avantage d’accélérer la
saisie de façon considérable, la complétion automatique offre également un contrôle de qualité, en
jouant un rôle non négligeable de correcteur.
Après la petite seconde de surprise initiale, vous vous apercevez tout de suite de l’erreur : vous avez
tapé xorg.donf.d au lieu de xorg.conf.d. Pour corriger votre erreur, il vous suffirait de ressaisir la
commande en prenant soin, cette fois-ci, d’écrire correctement le nom du répertoire. Avant de faire
cela, appuyez simplement sur la touche FlècheHaut et voyez ce qui se passe :
$ ls /etc/X11/xorg.donf.d
En effet, votre shell a gardé la dernière commande en mémoire. Dans ce cas, il sera plus simple de
remplacer le d par un c que de retaper l’intégralité de la commande.
Ce n’est pas tout. Actionnez plusieurs fois de suite la touche FlècheHaut et observez ce qui se passe.
Apparemment, le shell n’a pas mémorisé seulement la dernière commande, mais toutes celles que
vous avez pu invoquer depuis belle lurette ! Ajoutez à cela la touche FlècheBas et vous voilà capable
de naviguer dans l’historique de toutes les commandes saisies jusque-là – enfin, pas toutes, il y a une
limite quand même.
Pour répéter l’une des commandes dans la liste, remontez dans l’historique en appuyant autant de fois
que nécessaire sur la touche FlècheHaut. Dans certains cas, ce sera un exercice fastidieux et il vaut
mieux afficher l’historique complet, puis sélectionner la commande directement. Pour ce faire, il
suffit de taper un point d’exclamation ! suivi du numéro de la commande. Admettons que je veuille
réinvoquer la commande mkdir repertoirebidon de l’exemple précédent, il me suffirait de saisir ceci :
$ !512
mkdir repertoirebidon
À présent, dès que vous tapez les premiers caractères de la commande, le shell complète
instantanément avec ce qu’il trouve dans l’historique. En l’occurrence, il me suffit ici de saisir M et
K pour obtenir ce que je veux :
(reverse-i-search)'mk': mkdir repertoirebidon
Prenons notre machine au pied de la lettre et faisons exactement ce qu’elle nous suggère dans le
mélange de français et d’anglais qui lui semble propre :
$ cp --help
Utilisation : cp [OPTION]... [-T] SOURCE DEST
ou : cp [OPTION]... SOURCE... DIRECTORY
ou : cp [OPTION]... --target-directory=DIRECTORY
SOURCE...
Copie la SOURCE vers DEST, ou de multiples SOURCES vers DIRECTORY.
...
Le shell nous affiche une liste assez longue d’options applicables à la commande cp, ainsi qu’une
série d’explications sur son fonctionnement.
L’affichage des pages de manuel s’effectue par le biais du visualiseur less et ce sont les raccourcis
clavier de ce dernier qui servent à naviguer : Espace pour avancer d’un écran et Q pour quitter.
Alternativement, vous pouvez également utiliser les touches directionnelles (Page-Haut, PageBas,
FlècheHaut, FlècheBas) pour avancer et reculer.
Dans l’exemple qui suit, je choisis de mettre en forme la page man de la commande mv :
$ man -t mv > manuel_mv.ps
Figure 5–17
Un fichier Postscript a été produit dans le répertoire courant.
Étant donné que nous avons opté pour une configuration légère sans le bureau KDE, nous ne
disposons que de GNU GV5, une application quelque peu archaïque qui permet de visualiser les
fichiers Postscript et PDF. En attendant de savoir installer un visualiseur moderne qui s’intègre bien
dans notre environnement Xfce, utilisons GV en l’invoquant directement à partir du terminal
graphique :
$ gv manuel_mv.ps
Figure 5–18
La page du manuel est prête pour l’impression.
Une autre astuce consiste à transformer votre page man en simple fichier texte, ce qui peut toujours
s’avérer utile à un moment ou un autre :
$ man mv | col -b > manuel_mv.txt
Le fichier manuel_mv.txt résultant pourra être affiché à l’aide d’un simple visualiseur de texte :
$ less manuel_mv.txt
À la différence d’une simple page man, vous disposez ici d’un curseur. Celui-ci vous permet de
naviguer de page en page, en suivant les liens. Une page info est en fait une véritable arborescence de
pages organisées de façon hiérarchique. Pour naviguer dans cette arborescence, il suffit de placer le
curseur sur les bouts de texte compris entre une étoile * et un deux-points :. La touche Entrée vous
permet alors de vous rendre dans le nœud (node) correspondant. Pour revenir en arrière, utilisez la
touche U (comme up, c’est-à-dire « remonter »). Là aussi, servezvous du raccourci Q pour quitter la
page info.
À en juger par les commentaires des utilisateurs chevronnés de systèmes Unix dans les forums ou les
listes de diffusion, les pages info ont moins bonne presse que les pages man, en raison de leur système
de navigation quelque peu désuet et, surtout, de l’impossibilité de les mettre en forme, notamment
pour en imprimer tout ou partie.
Bien évidemment, il existe une quantité de façons d’obtenir de l’aide pour votre système Linux : les
sites de documentation, les forums, les listes de diffusion, les newsgroups (ou groupes de discussion
Usenet), les canaux IRC spécialisés, sans parler de la documentation spécifique à chaque
distribution. Dans le monde Linux, ce n’est certainement pas la documentation qui fait défaut, mais il
est parfois difficile de s’y retrouver. Pour l’instant, n’oubliez pas que l’aide la plus immédiate
lorsque vous utilisez la ligne de commande se trouve à portée de doigts.
1. Oui, nous pourrons bientôt changer tout cela à notre guise pour utiliser l’affichage coloré partout.
2. Note pour ceux qui pinailleraient : oui, notre arbre est à l’envers. La racine est en haut et il faut descendre vers les feuilles.
3. Puisque vous tenez à le savoir, c’est # rm -rf / ... mais NE TENTEZ SURTOUT PAS ÇA !!!
4. Oui, il y a aussi un jeu de démineur sous Linux. Et même un solitaire. Ceux parmi vous qui envisagent de migrer depuis Windows ne
seront donc pas trop dépaysés.
5. GV est une amélioration du logiciel Ghostview.
6
Tout comme Unix, Linux a été conçu dès le départ comme un vrai système multi-utilisateur. Gérer
les utilisateurs revient à définir qui a accès à quoi dans un système Linux.
Systèmes mono-utilisateurs et systèmes multi-utilisateurs
Linux est un vrai système multi-utilisateur, tout comme son ancêtre Unix. Pour comprendre la portée
de cette assertion, imaginez un poste de travail comme on peut en trouver dans la salle informatique
d’une grande université, fréquentée par une bonne dizaine de milliers d’étudiants. Chaque étudiant
inscrit a le droit d’utiliser les machines de la salle informatique. Il possède donc son identifiant
personnel et son mot de passe, qui lui permettent de se connecter à une machine de la salle
informatique pour y travailler, c’est-à-dire effectuer ses recherches, écrire ses devoirs, rédiger son
mémoire ou sa thèse, etc. Une telle installation doit répondre à quelques exigences :
• Chaque utilisateur du système doit disposer de son répertoire personnel, c’est-à-dire d’un endroit
pour lui seul, utilisable par lui seul, où il peut stocker toutes ses données.
• La confidentialité doit être assurée, c’est-à-dire qu’un étudiant connecté ne pourra pas aller
fouiner librement dans les données de ses collègues.
• Il ne faut pas non plus qu’un utilisateur puisse effacer par mégarde (ou même intentionnellement)
les données qui ne lui appartiennent pas.
• Enfin, l’intégrité du système ne doit en aucun cas être mise en péril par les utilisateurs.
Si l’importance de ces points ne vous apparaît pas dans toute son ampleur, imaginez dans un tel
contexte un système mono-utilisateur comme Windows 95, 98 ou Millennium :
• Les données de tous les utilisateurs, c’est-à-dire quelques dizaines voire centaines de milliers de
fichiers, seraient stockées en vrac dans une seule arborescence.
• Chaque étudiant pourrait lire les données de ses collègues.
• Il pourrait les modifier et/ou les effacer comme bon lui semble.
• Chaque utilisateur serait libre de compromettre l’intégrité du système.
Bref, ça ferait désordre.
Votre configuration personnelle sera probablement plus modeste qu’une série de postes de travail
dans la salle informatique d’une université ; il n’empêche que l’approche multi-utilisateur est tout
aussi pertinente, même pour un usage strictement domestique. Après tout, peu importe si le système
gère deux ou trois utilisateurs ou vingt-cinq mille.
RÉSEAU Profils itinérants
Techniquement parlant, le seul détail qui différencierait votre installation domestique d’un poste de
travail à la faculté des sciences, ce serait la configuration itinérante des profils d’utilisateurs.
Dans une telle configuration, l’ensemble des données, les identifiants de connexion et les mots de
passe sont stockés de façon centralisée sur un serveur. À partir de là, chaque étudiant peut se
connecter sur n’importe quelle machine de la salle et retrouver son environnement, alors que sur
votre poste de travail à la maison, chaque compte d’utilisateur restera lié à la machine locale.
Ajouter de nouveaux utilisateurs : adduser
Lors de la configuration post-installation de notre système, j’ai défini un premier utilisateur du
« commun des mortels » pour la machine. Cela signifie que ma machine connaît déjà deux comptes :
l’administrateur root et l’utilisateur en question (kikinovak).
Si vous êtes plusieurs à vous servir de la même machine dans votre foyer, il est judicieux de prévoir
un compte individuel pour chaque utilisateur afin de garantir la confidentialité des données et de
permettre à chacun de configurer son environnement de travail personnalisé sans empiéter sur celui
de la copine, du copain, des colocataires ou des autres membres de la famille.
En dehors de mon utilisateur initial, je vais créer quelques comptes supplémentaires :
• Laurène Gibaud (lgibaud)
• Alexandre Habian (ahabian)
• Gaston Lagaffe (glagaffe)
• Jean-Kevin Tartempion (jktartempion)
Chacun des utilisateurs sera créé à l’aide de la commande interactive adduser, la même qui nous a
servi à créer notre utilisateur initial. L’invocation de cette commande requiert des droits
d’administrateur. Dans un premier temps, nous allons acquérir ces droits de façon peu élégante, avec
les moyens du bord :
1 Quittez l’environnement graphique : Déconnexion.
2 Déconnectez l’utilisateur :
kikinovak@slackbox:~$ exit
La prochaine étape concerne l’appartenance aux groupes supplémentaires. Appuyez sur FlècheHaut
(UP arrow key) pour faire apparaître la liste des groupes supplémentaires, puis confirmez par
Entrée :
Press ENTER to continue without adding any additional groups
Or press the UP arrow key to add/select/edit additional groups : audio cdrom floppy plugdev video power netdev
lp scanner
Acceptez les valeurs par défaut proposées dans les trois prochaines étapes :
• l’emplacement du répertoire d’utilisateur (/home/lgibaud) ;
• le choix de l’interpréteur de commandes (/bin/bash) ;
• la date d’expiration du compte (jamais).
Après confirmation, adduser affiche le récapitulatif suivant :
New account will be created as follows:
---------------------------------------
Login name.......: lgibaud
UID..............: [ Next available ]
Initial group....: users
Additional groups: audio,cdrom,floppy,plugdev,video,power,
netdev,lp,scanner
Home directory...: /home/lgibaud
Shell............: /bin/bash
Expiry date......: [ Never ]
This is it... if you want to bail out, hit Control-C. Otherwise, press ENTER to go ahead and make the account.
Saisissez le nom complet (full name) de l’utilisateur. Ici, vous êtes libres d’utiliser les voyelles
accentuées et autres caractères spéciaux comme bon vous semble :
Changing the user information for lgibaud
Enter the new value, or press ENTER for the default
Full Name []: Laurène Gibaud
Les informations subséquentes sont facultatives et vous pouvez parfaitement les ignorer en appuyant
plusieurs fois de suite sur Entrée :
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Procédez de même pour créer les autres utilisateurs de la machine : ahabian, glagaffe, jktartempion. Une
fois que vous avez terminé, reconnectez-vous en tant que vous-même (kikinovak dans mon cas).
Relancez l’environnement graphique Xfce ou restez en mode console, comme vous préférez.
Utiliser n’est pas administrer
Tout au long de notre initiation à la ligne de commande dans le chapitre précédent, nous avons
travaillé en tant que simples utilisateurs pour créer, éditer, visualiser, déplacer, copier et effacer des
fichiers. Ces tâches ne mettaient pas en péril le fonctionnement du système ou les données des autres
utilisateurs et ne nécessitaient par conséquent aucun privilège spécifique. Il n’en est plus de même
pour la gestion des utilisateurs, qui comprend entre autres choses :
• la création d’un nouvel utilisateur ;
• la définition de son mot de passe ;
• la configuration de ses droits : à quoi aura-t-il accès dans le système ?
• la suppression éventuelle de l’utilisateur ainsi que de toutes ses données.
Changer d’identité et devenir root
Lors de l’installation du système, nous avons défini un mot de passe pour l’utilisateur root. Un peu
plus haut, nous avons eu besoin des privilèges de root pour créer quelques utilisateurs
supplémentaires, que nous avons acquis en nous déconnectant/reconnectant. Or, il existe un moyen
bien plus simple grâce à la commande su (switch user, c’est-à-dire « changer d’utilisateur »). Ouvrez
un terminal et tapez ce qui suit, en saisissant votre mot de passe root lorsque le système vous le
demande :
bash-4.3$ su -
Mot de passe:
root@slackbox:~#
Notez le tiret – qui suit la commande su. Il précise qu’il faut devenir root en récupérant toutes les
variables d’environnement de ce compte. Nous y reviendrons. Contentez-vous pour l’instant de
connaître la démarche.
S’il est utile de savoir comment acquérir les pleins pouvoirs sur la machine, il est tout aussi
indispensable de savoir comment revenir en sens inverse pour se débarrasser de tous ces super-
pouvoirs lorsqu’on n’en a plus besoin. Dans ce cas, c’est exactement la même commande que pour
quitter une session dans la console. Vous avez donc le choix entre les deux commandes logout et exit, à
moins que vous ne préfériez le raccourci clavier Ctrl+D.
root@slackbox:~# exit
logout
bash-4.3$
Savoir qui l’on est
La commande su ne nous permet pas seulement de devenir root. Si le système dispose d’un utilisateur
glagaffe, je pourrais très bien devenir glagaffe en invoquant la commande suivante (et en saisissant
ensuite son mot de passe) :
bash-4.3$ su - glagaffe
Mot de passe:
glagaffe@slackbox:~$
Là encore, notez l’utilisation du tiret – pour indiquer que vous souhaitez devenir un autre utilisateur en
utilisant ses variables d’environnement. L’invite de commandes (glagaffe@slackbox:~$) nous indique
qu’un changement d’identité a eu lieu. Pour le vérifier, nous avons tout loisir de demander à notre
système qui nous sommes, grâce à la commande whoami (Who am I ?, « Qui suis-je ? »). Voici une
petite démonstration pratique :
bash-4.3$ su - glagaffe
Mot de passe:
glagaffe@slackbox:~$ whoami
glagaffe
glagaffe@slackbox:~$ exit
logout
bash-4.3$ whoami
kikinovak
bash-4.3$ su -
Mot de passe:
root@slackbox:~# whoami
root
root@slackbox:~# exit
logout
bash-4.3$ whoami
kikinovak
Vous remarquerez que si j’invoque su sans autre argument que le tiret, cela revient exactement à la
même chose que su - root :
bash-4.3$ su - root
Mot de passe:
root@slackbox:~#
En savoir un peu plus sur les utilisateurs : id, groups,
finger
Chacun des utilisateurs que nous avons créés jusqu’ici possède un certain nombre de
caractéristiques : son UID unique, son GID, les groupes secondaires auxquels il appartient, son
répertoire d’utilisateur, son shell de connexion, etc. Voyons maintenant comment afficher ces
différentes informations. Commençons par nous-mêmes, en utilisant la commande id :
bash-4.3$ id
uid=1000(kikinovak) gid=100(users) groupes=100(users),7(lp),
11(floppy),17(audio),18(video),19(cdrom),83(plugdev),84(power),
86(netdev),93(scanner)
Invoquée sans autre argument, la commande id nous affiche l’UID, le GID, ainsi que la liste complète
des groupes secondaires auxquels l’utilisateur est affecté. Les options vont me permettre de cibler les
informations.
Évidemment, personne ne vous demande de retenir toutes ces options par cœur. N’oubliez pas que
vous avez la page du manuel pour cela :
bash-4.3$ man id
Pour en savoir plus sur les autres utilisateurs du système, il suffit de fournir leur nom en argument.
Ces informations sont accessibles à tous les utilisateurs non privilégiés du système :
bash-4.3$ id lgibaud
uid=1001(lgibaud) gid=100(users) groupes=100(users),7(lp),
11(floppy),17(audio),18(video),19(cdrom),83(plugdev),84(power), 86(netdev),93(scanner)
Les arguments et les options peuvent évidemment être combinés à souhait, par exemple pour afficher
l’UID d’un autre utilisateur :
bash-4.3$ id -u lgibaud
1001
Lors de la création des utilisateurs, le script adduser nous a fourni la possibilité de renseigner une
série de champs comme le nom complet, le numéro de bureau, les téléphones professionnel et
personnel, etc. Il s’agit là des données GECOS de l’utilisateur.
ACRONYME GECOS
GECOS signifie General Electric Comprehensive Operating System, du nom d’un système
d’exploitation mainframe créé originellement par la General Electric.
Certains d’entre vous seront peut-être vaguement surpris voire inquiets de pouvoir lire ce fichier sans
autres privilèges. C’est tout à fait normal et nous y viendrons.
Le fichier /etc/passwd contient l’ensemble des informations qui régissent la connexion des utilisateurs.
Chaque ligne de ce fichier correspond à un utilisateur. Essayez de repérer l’entrée qui correspond à
votre humble personne :
kikinovak:x:1000:100:Kiki Novak,,,:/home/kikinovak:/bin/bash
Comment décrypter ce charabia ? Il s’agit en fait d’une série de champs séparés par deux-points, où
l’on trouve dans l’ordre :
• l’identifiant de connexion (kikinovak) ;
• la lettre x, signifiant que le mot de passe crypté de l’utilisateur se situe dans le fichier /etc/ shadow ;
• l’UID (User Identification, ici 1000), que le système utilise plutôt que votre identifiant pour gérer
les droits d’accès de vos fichiers ;
• le GID (Group Identification, 100 ici), groupe auquel appartient l’utilisateur.
• le champ GECOS, comprenant, séparés par des virgules, le nom complet (Kiki Novak) et des
données facultatives comme le bureau de la personne ou son numéro de téléphone ;
• le répertoire de connexion (/home/kikinovak) ;
• le shell de connexion de l’utilisateur (/bin/bash).
L’opération ressemble à un succès partiel : pas mal d’écrémage du côté des utilisateurs système et les
utilisateurs en chair et en os sont tous là. D’un autre côté, il reste un « faux positif » comme operator et
l’affichage du résultat semble un peu brut de décoffrage, sans compter le fait que root est un cas à
part. Essayons donc une approche différente.
Nous avons vu plus haut que ce qui distingue les utilisateurs « en chair et en os », c’est leur UID
supérieur ou égal à 1 000. Nous avons vu également que le fichier /etc/passwd était organisé en
colonnes séparées par des deux-points. Je vais me servir de l’outil de filtrage awk pour arriver à mes
fins. GNU AWK est un véritable langage de traitement de lignes qui sert à manipuler des fichiers
textes. Voyons quelques exemples simples.
La première colonne du fichier /etc/passwd contient les noms d’utilisateurs :
bash-4.3$ awk -F: '{print $1}' /etc/passwd
root
bin
daemon
...
glagaffe
jktartempion
L’option -F: indique à awk que le fichier /etc/passwd utilise les deux-points comme séparateur et '{print
$1}' signifie « affiche la première colonne ».
Les UID des utilisateurs figurent dans la troisième colonne. Je peux donc les « extraire » de la sorte :
bash-4.3$ awk -F: '{print $3}' /etc/passwd
0
1
2
...
1003
1004
À partir de là, j’ai la réponse à ma question. Il suffit que j’affiche la première colonne ($1) de chaque
ligne où le contenu de la troisième colonne ($3) est strictement supérieur à 999 :
bash-4.3$ awk -F: '$3 > 999 {print $1}' /etc/passwd
kikinovak
lgibaud
ahabian
glagaffe
jktartempion
Enfin, je peux combiner la commande précédente avec sort pour afficher le résultat par ordre
alphabétique :
bash-4.3$ awk -F: '$3 > 999 {print $1}' /etc/passwd | sort
ahabian
glagaffe
jktartempion
kikinovak
lgibaud
• Un répertoire d’utilisateur est créé et c’est l’identifiant de l’utilisateur qui servira de base pour le
nommer. L’utilisatrice lgibaud aura donc un répertoire /home/lgibaud.
• Par défaut, c’est l’interpréteur de commandes Bash (/bin/bash) qui sera utilisé.
Au moment de la création de son compte, son répertoire d’utilisateur se trouve apparemment vide :
# tree /home/ahabian/
/home/ahabian/
0 directories, 0 files
En fait, il n’est pas si vide que cela, si nous regardons d’un peu plus près :
# tree -a /home/ahabian/
/home/ahabian/
`-- .screenrc
0 directories, 1 file
D’où sort ce mystérieux fichier ~/.screenrc ? Regardez à nouveau la page man de useradd, dans la section
OPTIONS :
Cette option n'est valable que si l'option -m (ou --create-home) est utilisée.
...
0 directories, 1 file
Cela ressemble effectivement au contenu de mon répertoire d’utilisateur nouvellement créé. Pour en
avoir le cœur net, tentons une petite expérience.
Avant même qu’il ne se connecte pour la première fois, penchons-nous sur le contenu de son
répertoire d’utilisateur :
# ls -la /home/fantasio/
total 16
drwx--x--x 2 fantasio users 4096 Oct 16 08:19 ./
drwxr-xr-x 9 root root 4096 Oct 16 08:19 ../
-rw-r--r-- 1 fantasio users 3729 May 17 2013 .screenrc
-rw-r--r-- 1 fantasio users 45 Oct 16 08:19 LISEZ_MOI.txt
Figure 6–2
Lorsque l’utilisateur fantasio se connectera pour la première fois sur la machine et qu’il ouvrira son
répertoire personnel, voici ce qu’il y verra.
L’utilisation de /etc/skel ne se limite pas à l’ajout de documents par défaut ; de manière plus générale,
tout fichier peut être distribué aux nouveaux utilisateurs. On peut donc également répliquer des
configurations par défaut du bureau ou des logiciels et définir par exemple le même fond d’écran et le
même thème d’icônes par défaut pour tous les utilisateurs. Il suffit pour cela de repérer le fichier (ou
répertoire) de configuration en question et de le recopier dans /etc/skel avant la création des
utilisateurs.
Modifier le mot de passe d’un utilisateur
Nous avons vu que la création d’un nouveau compte comprend l’affectation d’un mot de passe. Sous
le capot, c’est la commande passwd qui s’en charge. Elle n’est d’ailleurs pas réservée à
l’administrateur. Appelée par un simple utilisateur, elle lui servira à changer son mot de passe pour
choisir quelque chose de plus personnalisé :
fantasio@slackbox:~$ passwd
Changement du mot de passe de fantasio
Ancien mot de passe: ********
Entrez le nouveau mot de passe (5 caractères minimum)
Utilisez une combinaison de lettres majuscules, minuscules et de chiffres.
Nouveau mot de passe: ********
Nouveau mot de passe (pour vérification): ********
passwd: mot de passe changé.
Les utilisateurs membres de ces groupes bénéficient de toute une série de « privilèges » qui leur
donnent accès à un ensemble de fonctionnalités dans leur environnement de bureau :
kikinovak@slackbox:~$ groups
users lp floppy audio video cdrom plugdev power netdev scanner
Admettons que j’aie défini l’utilisateur kjoly (Karine Joly) sans toutefois l’ajouter à la panoplie de
groupes secondaires proposés par adduser. On part ainsi du minimum syndical :
# groups kjoly
kjoly : users
Dans cette configuration par défaut, Karine ne pourra pas correctement utiliser les périphériques
amovibles. Je décide donc de l’ajouter au groupe plugdev grâce à la commande usermod :
# usermod -a -G plugdev kjoly
Notez en passant que si Karine est connectée pendant cette opération, il faudra qu’elle se déconnecte
et qu’elle démarre une nouvelle session pour que l’ajout aux groupes secondaires prenne effet.
Les distraits parmi vous qui auront oublié d’ajouter un nouvel utilisateur aux groupes secondaires
suggérés par adduser pourront donc se rattraper :
# usermod -a -G \
lp,floppy,audio,video,cdrom,plugdev,power,netdev,scanner kjoly
N’hésitez pas à ouvrir la page man usermod pour avoir une idée un peu plus précise de ce que nous
venons de faire.
• usermod modifie un compte utilisateur.
• L’option -a (comme --append) ajoute l’utilisateur à un groupe supplémentaire.
• Elle s’utilise conjointement avec l’option -G (--groups).
La manière la plus simple pour révoquer l’appartenance d’un utilisateur à un groupe, c’est d’utiliser
la commande gpasswd. Admettons que Jean-Kevin nous agace depuis quelque temps à écouter son
groupe de métal satanique finlandais préféré. Nous allons le supprimer du groupe audio :
# groups jktartempion
jktartempion : users lp floppy audio video cdrom plugdev power netdev scanner
# gpasswd -d jktartempion audio
Removing user jktartempion from group audio
# groups jktartempion
jktartempion : users lp floppy video cdrom plugdev power netdev scanner
La commande gpasswd ne permet de spécifier qu’un seul groupe en argument. Je devrai donc l’invoquer
plusieurs fois de suite si je souhaite retirer un utilisateur d’une série de groupes :
# gpasswd -d jktartempion lp
Removing user jktartempion from group lp
# gpasswd -d jktartempion scanner
Removing user jktartempion from group scanner
Là encore, jetez un œil dans man gpasswd et repérez l’option -d comme --delete.
# groupadd eyrolles
# groupadd spirou
# usermod -a -G eyrolles lgibaud
# usermod -a -G eyrolles ahabian
# usermod -a -G spirou glagaffe
# usermod -a -G spirou fantasio
Pour savoir ce qui s’est passé, ouvrez /etc/group et examinez les deux dernières lignes de ce fichier.
Vous pourriez très bien utiliser cat, more ou less pour visualiser /etc/group, mais j’en profite en passant
pour vous présenter la commande tail. Dans sa configuration par défaut, tail affiche les dix dernières
lignes du fichier fourni en argument. L’option -n 2 nous limitera aux deux dernières lignes :
# tail -n 2 /etc/group
eyrolles:x:1000:lgibaud,ahabian
spirou:x:1001:glagaffe,fantasio
La syntaxe du fichier /etc/group est assez intuitive et ressemble de loin à celle de /etc/passwd : une série
de colonnes délimitées par des deux-points. Dans notre cas, la première colonne comporte le nom du
groupe, la troisième le GID correspondant et la quatrième la liste complète de tous les membres du
groupe en question.
Pour supprimer un groupe, utilisez la commande groupdel :
# groupdel eyrolles
# groupdel spirou
Supprimer un utilisateur
Vous voilà en mesure de créer des utilisateurs et de gérer leurs comptes. Il ne vous reste plus qu’à
savoir comment vous en débarrasser, le cas échéant. Comme un employé doit vider son bureau et
rendre son badge, il arrive qu’un utilisateur n’ait plus sa place sur votre système. Dans ce cas, vous
serez amené à supprimer son compte. C’est l’objet de la commande userdel.
Appliquons-la sur l’utilisateur fantasio :
# userdel fantasio
La commande userdel s’est chargée de supprimer l’utilisateur fantasio, mais pas son répertoire.
Les fichiers et répertoires de /home/fantasio sont toujours là, mais ils « appartiennent » à présent à
l’UID 1 005 et au groupe users. Admettons que vous ayez maintenant l’idée de créer un nouveau
compte et de lui affecter ces identifiants d’utilisateur et de groupe désormais vacants. Il se
retrouverait propriétaire de tous les fichiers de fantasio. Autrement dit : fantasio a rendu son badge,
mais il n’a vidé ni son bureau ni son casier et c’est le nouvel employé qui en a désormais la clé.
Lors de la suppression, il peut donc s’avérer nécessaire de supprimer le répertoire d’utilisateur
correspondant au compte. Cependant, si nous affichons la page man de la commande userdel, nous
lisons ceci :
OPTIONS
-r, --remove
Files in the user's home directory will be removed along with the home directory itself and the user's
mail spool.
Cela signifie que l’option -r (ou --remove) se charge de supprimer les fichiers présents dans le
répertoire personnel de l’utilisateur en même temps que le répertoire lui-même, ainsi que le
répertoire d’attente des courriels.
Essayons cette option sur l’utilisateur jktartempion , que nous avons dans le collimateur depuis un petit
moment :
# userdel -r jktartempion
# ls -l /home/
total 28
drwx--x--x 2 ahabian users 4096 Oct 8 10:47 ahabian/
drwx--x--x 18 1005 users 4096 Oct 16 11:01 fantasio/
drwxr-xr-x 2 root root 4096 Sep 18 2012 ftp/
drwx--x--x 2 glagaffe users 4096 Oct 8 10:48 glagaffe/
drwx--x--x 19 kikinovak users 4096 Oct 20 09:12 kikinovak/
drwx--x--x 18 kjoly users 4096 Oct 20 09:09 kjoly/
drwx--x--x 2 lgibaud users 4096 Oct 8 10:47 lgibaud/
La commande userdel suivie de l’option -r a donc bien supprimé le compte utilisateur jktartempion ainsi
que le répertoire utilisateur /home/jktartempion avec toutes les données qu’il contenait.
7
Une fois que les utilisateurs du système sont créés, la question de leurs droits d’accès se pose.
Définir des permissions saines pour les utilisateurs et leur assurer un minimum de confidentialité,
c’est le B.A.-ba de la sécurité.
Qui a le droit de faire quoi ?
Dans le chapitre précédent, nous avons comparé un système multi-utilisateur au fonctionnement d’une
grande entreprise. Chaque employé possède son badge qui lui donne accès aux locaux. En principe,
les employés partagent les ressources de l’entreprise, mais pas forcément tous les mêmes. Beaucoup
disposent de leur bureau individuel, d’autres travaillent en équipe dans de grandes pièces spacieuses,
où l’accès aux ordinateurs, aux photocopieuses et aux documents est ouvert à tous les membres de
l’équipe. Quelques rares privilégiés ont un accès plus large : l’agent de sécurité, le PDG ou le DRH.
La métaphore peut ainsi être filée et affinée, mais vous avez compris le principe sous-jacent.
Considérons l’exemple suivant.
• Imaginons un système avec trois utilisateurs : ahabian, lgibaud et kikinovak. Supprimez tous les autres
utilisateurs que vous avez pu créer jusqu’ici.
• Chaque utilisateur dispose de son répertoire d’utilisateur respectif (~) :
# ls /home/
ahabian kikinovak lgibaud
• Chacun de nos utilisateurs va donc ranger ses données dans son répertoire personnel. Dans
l’exemple, chacun disposera d’un document « confidentiel » confectionné comme suit :
$ cat > ~/Documents/Confidentiel.txt << EOF
> Ce document est confidentiel.
> Personne d'autre que moi ne doit pouvoir le lire.
> EOF
27 directories, 3 files
Qui a accès à quoi là-dedans ? Est-ce que ahabian pourra lire le fichier Confidentiel.txt de lgibaud ? Est-
ce que celle-ci pourra modifier le fichier Confidentiel.txt de kikinovak ? En effet, il ne suffit pas que
chaque utilisateur dispose de son propre répertoire en-dessous de /home. Aussi faut-il que ses données
soient à l’abri des autres utilisateurs de la machine. Tout ce petit monde doit pouvoir se connecter à
la machine sans gêner les autres.
Un exemple pratique
Les nouveaux utilisateurs de Linux sont souvent intimidés par les questions de permissions et de
droits d’accès, qu’ils perçoivent comme une nébuleuse complexe et impressionnante. Ici comme
ailleurs, je vous propose de rester fidèle à la devise en exergue de ce livre, qui a d’ailleurs été
déclinée par le grand neurologue français Charcot : « La théorie, c’est bon, mais ça n’empêche pas
d’exister ».
Pour commencer, créez un fichier droits.txt dans votre répertoire d’utilisateur, comme ceci :
$ cat > droits.txt << EOF
> echo "Voici la date : "
> date
> EOF
Rien ne vous empêche de créer et d’éditer ce fichier avec Vi. Au final, vous devez juste obtenir ceci :
$ cat droits.txt
echo "Voici la date : "
date
Comprendre les permissions dans l’affichage détaillé
Vous voilà donc avec votre fichier droits.txt. Qui en est le propriétaire ? Qui peut faire quoi avec ?
D’ailleurs, qu’est-ce qu’on peut bien faire avec un fichier ? En lire le contenu ? Le modifier ?
L’effacer ? Et puis quoi encore ?
$ ls -l droits.txt
-rw-r--r-- 1 kikinovak users 29 Oct 24 10:06 droits.txt
Les droits concernant le propriétaire ont bien changé : ils sont passés de rw- à rwx. Ce rwx signifie :
« L’utilisateur kikinovak a le droit de lire ce fichier. Il peut le modifier et même l’effacer. Il a
également le droit de l’exécuter. » Et c’est ce que nous allons faire :
$ ./droits.txt
Voici la date :
ven. oct. 24 10:17:39 CEST 2016
Vous voyez que tous les autres (plus exactement les membres du groupe users et tous les autres) ont le
droit de lire ce fichier, mais pas celui de le modifier ou de l’exécuter (r--r--). Comment empêcher ces
autres d’accéder à mon fichier, ne serait-ce qu’en lecture seule ? Tout simplement en faisant ceci :
$ chmod go-r droits.txt
$ ls -l droits.txt
-rwx------ 1 kikinovak users 29 oct. 24 10:06 droits.txt
Effectivement, les classes d’utilisateurs group (g) et others (o) n’ont plus le droit de rien faire,
comme le montre le ------ final.
Un système Linux permet d’attribuer des droits d’accès aux fichiers avec une précision quasi-
chirurgicale.
Ajouter et retirer les droits de lecture et d’écriture
Donnons maintenant le droit à tout le monde (a comme all) de lire (r comme read) le fichier :
$ chmod a+r droits.txt
$ ls -l droits.txt
-rwxr--r-- 1 kikinovak users 29 Oct 24 10:06 droits.txt
Ici, les trois classes d’utilisateurs (user, group et others) obtiennent des droits de lecture.
De façon analogue, pour retirer les droits de lecture et d’écriture au groupe et aux autres, il suffit
d’invoquer la commande suivante :
$ chmod g-rw,o-rw droits.txt
$ ls -l droits.txt
-rwx------ 1 kikinovak users 29 Oct 24 10:06 droits.txt
Figure 7–1
Les droits d’accès en mode graphique dans le navigateur de fichiers Thunar
À première vue, cette interface graphique n’offre qu’un choix réduit par rapport à la console en
matière de droits d’accès. Nous retrouvons certes nos trois catégories d’utilisateurs (Propriétaire,
Groupe, Autres). Les droits de lecture et d’écriture peuvent être définis grâce à une suite de menus
déroulants. Un autre menu déroulant permet de spécifier le groupe du fichier. En revanche, on ne voit
pas la moindre trace d’une option pour gérer les droits d’exécution.
Notons que cette limitation n’est pas inhérente à l’utilisation d’une interface. Elle est propre au
navigateur de fichiers Thunar. Voyons ce que cela donne dans le navigateur de fichiers Dolphin de
l’environnement KDE.
Figure 7–2
La gestion des permissions dans l’environnement KDE
Cette fois-ci, je dispose bien d’un bouton est exécutable, mais ce droit sera appliqué « à la louche »,
c’est-à-dire que je ne pourrai pas spécifier s’il doit s’appliquer au propriétaire, au groupe ou à tous
les autres.
Cette petite démonstration n’a certainement pas pour but de vous dissuader de travailler en mode
graphique. Le navigateur de fichiers est un outil très puissant et souvent bien plus confortable que la
console. Cependant, comme tout outil graphique, il a ses limites, qu’il est bon de connaître pour ne
pas être gêné dans son travail.
Une autre approche : la notation numérique
À côté de la notation ugo (user, group, others), il existe une autre façon de définir les droits d’accès
des fichiers et des répertoires. Si je vous la montre, ce n’est pas pour compliquer les choses, mais
parce qu’elle est également très répandue et que vous risquez de tomber dessus un jour ou l’autre : je
parle de la notation numérique.
Nous avons vu qu’il existe trois catégories d’utilisateurs, qui peuvent bénéficier de trois droits
d’accès différents.
Tableau 7–1
Classes d’utilisateurs et permissions
user group others
rwx rwx rwx
Tableau 7–2
Valeur numérique des permissions
r (read, lecture) 4
w (write, écriture) 2
x (e[x]ecute, exécution) 1
Il suffit alors d’additionner les valeurs respectives de ces droits pour les définir. Prenons quelques
exemples.
Essayons autre chose : l’utilisateur a le droit de lire et d’écrire, le groupe et tous les autres ont
seulement celui de lire :
• utilisateur : 4 (lecture) + 2 (écriture) + 0 (exécution) = 6 ;
• groupe : 4 (lecture) + 0 (écriture) + 0 (exécution) = 4 ;
• autres : 4 (lecture) + 0 (écriture) + 0 (exécution) = 4.
$ chmod 644 droits.txt
$ ls -l droits.txt
-rw-r--r-- 1 kikinovak users 29 Oct 24 10:06 droits.txt
Les deux modes de notation sont strictement équivalents. Autrement dit, le dernier exemple aurait très
bien pu être défini ainsi :
$ chmod u=rw,go=r droits.txt
$ ls -l droits.txt
-rw-r--r-- 1 kikinovak users 29 Oct 24 10:06 droits.txt
Je vois que droits2.txt est créé d’emblée avec une structure . Qui ou quoi décide des
rw-r--r--
permissions pour les fichiers nouvellement créés ?
Il faut savoir que, sur un système Linux, il n’est pas possible de créer un fichier qui possède
d’emblée les droits d’exécution. Cela signifie que les permissions maximales que je peux obtenir à la
création, c’est rw-rw-rw-, autrement dit 666. Or, si je regarde de plus près mon fichier droits2.txt, il est
affublé des droits rw-r--r--, c’est-à-dire 644 en notation numérique. J’en conclus maussadement que je
me suis fait gruger de 022 au passage.
Le responsable de cette restriction se nomme umask . Le seul rôle de ce réglage est de soustraire des
droits lors de la création de fichiers.
$ umask
0022
La conséquence de cette redéfinition est immédiate. En effet, lorsque je crée un nouveau fichier, ses
droits par défaut sont définis en fonction de la nouvelle valeur. Concrètement, avec un umask de 002,
j’obtiens des permissions par défaut de 664, soit rw-rw-r-- :
$ touch droits3.txt
$ ls -l droits3.txt
-rw-rw-r-- 1 kikinovak users 0 Nov 7 08:07 droits3.txt
Tiens ! Contrairement à ce que j’ai pu énoncer plus haut, les droits d’exécution sont bel et bien
définis d’emblée. Non content de cela, ils sont définis pour tout le monde !
L’explication pour cette anomalie apparente est simple, car les droits d’exécution n’ont pas la même
signification pour un répertoire que pour un fichier. À y regarder de près, c’est même normal, car
cela n’a pas de sens de vouloir « exécuter un répertoire ». Le x ici signifie simplement qu’on a le
droit de se placer dans le répertoire avec la commande cd et d’en afficher le contenu.
Faisons la preuve par l’exemple pour nous en assurer. Dans ce répertoire test/, créons trois fichiers :
fichier1, fichier2 et fichier3, puis revenons au point de départ :
$ cd test/
$ touch fichier1 fichier2 fichier3
$ ls -l
total 0
-rw-r--r-- 1 kikinovak users 0 Nov 7 08:16 fichier1
-rw-r--r-- 1 kikinovak users 0 Nov 7 08:16 fichier2
-rw-r--r-- 1 kikinovak users 0 Nov 7 08:16 fichier3
$ cd ..
À partir du répertoire d’utilisateur, nous pouvons très bien afficher le contenu de test/ grâce à un
simple ls test/ ou ls -l test/. Nous pouvons aussi y revenir en invoquant un simple cd .
test/
Maintenant, retirons les droits d’exécution au répertoire, pour tout le monde tant que nous y sommes.
Nous avons donc le choix :
$ chmod a-x test/
Ou, en utilisant la notation numérique :
$ chmod 644 test/
Dans ce cas, pouvons-nous au moins afficher le contenu de l’extérieur ? L’entrée est bloquée, mais
essayons de nous hisser sur la pointe des pieds et de jeter un œil curieux par-dessus le mur. Est-ce
que nous voyons quelque chose ?
$ ls -l test/
...
total 0
-????????? ? ? ? ? ? fichier1
-????????? ? ? ? ? ? fichier2
-????????? ? ? ? ? ? fichier3
Oui, mais non. Pas vraiment. Tout ce que nous devinons, c’est que ce répertoire contient trois fichiers
fichier1, fichier2 et fichier3. Quant à obtenir des informations détaillées sur ces derniers, il n’en est pas
question.
Allons plus loin dans le verrouillage et ôtons les droits de lecture du répertoire. Là encore, mettons
tout le monde à la même enseigne :
$ chmod a-r test/
$ ls -ld test
d-w------- 2 kikinovak users 4096 nov. 7 08:16 test/
Que se passe-t-il maintenant si je restitue à l’utilisateur les droits de lecture et d’exécution, mais pas
les droits en écriture ?
$ chmod u+rx test/
$ ls -ld test/
dr-x------ 2 kikinovak users 4096 nov. 7 08:16 test/
Respectivement :
$ chmod 700 test/
Soit :
$ ls -ld test/
drwx------ 2 kikinovak users 4096 nov. 7 08:16 test/
Changer le propriétaire et le groupe d’un fichier
Le propriétaire et le groupe d’un fichier sont-ils immuables ? A priori, vous vous dites que non. Vous
commencez à comprendre que Linux est un système extrêmement flexible et cela vous étonnerait qu’il
y ait des choses que l’on ne puisse pas changer. La réponse est : oui, mais pas n’importe comment. Et
surtout pas n’importe qui.
Prenons un exemple pour illustrer la chose. En tant que root, copiez n’importe quel fichier du système
dans votre répertoire d’utilisateur :
# cp -v /etc/cups/cupsd.conf /home/kikinovak/
'/etc/cups/cupsd.conf' -> '/home/kikinovak/cupsd.conf'
Deux précautions s’imposent ici. La première, c’est que votre répertoire utilisateur ne soit pas
/home/kikinovak, mais plutôt /home/<votre_identifiant>. Ça, vous l’aurez compris. En revanche, n’utilisez
pas ~ pour le répertoire d’utilisateur, étant donné que vous êtes root et que le ~ de root, c’est /root.
Redevenez un utilisateur normal (exit, logout ou Ctrl+D), assurez-vous de vous retrouver dans votre
répertoire d’utilisateur (cd sans arguments le cas échéant) et regardez de près ce nouveau fichier :
$ ls -l cupsd.conf
-rw-r----- 1 root root 4582 nov. 7 08:26 cupsd.conf
Il se trouve dans votre répertoire d’utilisateur, mais il appartient à l’utilisateur root et au groupe root.
Essayons de changer cela avec une commande spécialement conçue pour ce genre d’opération : chown
(change owner, changer de propriétaire).
$ man chown
NOM
chown – change file owner and group
...
Apparemment, le système se rebiffe. Je vais donc essayer autre chose : redevenir root et, en tant que
root, attribuer ce fichier /home/kikinovak/cupsd.conf à l’utilisateur kikinovak et au groupe users.
$ su -
Mot de passe :
# chown kikinovak:users /home/kikinovak/cupsd.conf
Pas de cadeaux !
Cette fois-ci, l’opération s’est déroulée comme prévu. Le fichier m’appartient désormais et je suis
tellement content... que je décide d’en faire cadeau à un autre utilisateur présent sur le système, par
exemple à lgibaud.
$ whoami
kikinovak
$ chown lgibaud:users cupsd.conf
chown: modification du propriétaire de « cupsd.conf »: Opération non permise
Je constate alors avec consternation que Linux est un système pour utilisateurs radins : on ne peut
même pas faire cadeau de ses fichiers à un autre utilisateur.
Essayons de tirer la conclusion de tout cela :
• Un utilisateur normal ne peut pas s’attribuer des fichiers qui appartiennent à quelqu’un d’autre.
• Il ne peut pas non plus attribuer ses propres fichiers à d’autres utilisateurs sur le système.
• L’administrateur root peut attribuer des fichiers à tous les utilisateurs, à sa guise.
• Il peut aussi, inversement, s’attribuer des fichiers appartenant aux autres utilisateurs.
8
Un système Linux comme le poste de travail Slackware que vous avez installé est composé de
plusieurs centaines de milliers de fichiers et de répertoires, sans compter vos données. Il arrive
parfois que l’on ait à chercher un certain fichier ou un certain répertoire dans tout ce fatras. Et
là, comment faire ? Naviguer manuellement dans tous les répertoires et les sous-répertoires
jusqu’à ce que l’on trouve ce que l’on cherche ? Essayez donc, mais vous n’irez probablement pas
bien loin ; autant chercher une aiguille dans une botte de foin, voire dans un continent de granges.
Heureusement pour nous, notre système Linux comporte toute une panoplie d’outils de recherche
aussi simples que puissants.
Chercher l’emplacement d’un fichier dont on connaît le
nom
Partons tout de suite d’un cas de figure très concret. Vous vous rappelez que le fichier pour configurer
votre système d’impression s’appelle cupsd.conf mais vous ne vous souvenez plus de son emplacement
exact. Que faire alors ? Essayez ceci, en tant que root :
# find / -name 'cupsd.conf'
...
/etc/cups/cupsd.conf
/home/kikinovak/cupsd.conf
J’obtiens deux résultats : le fichier original, si l’on peut dire, situé dans , ainsi que la copie
/etc/cups
que nous avions effectuée dans le chapitre précédent.
Pour l’instant, ne vous occupez pas des avertissements (WARNING) divers qui s’affichent. Nous y
reviendrons un peu plus loin.
Zone interdite
Pourquoi vaut-il mieux être root pour se lancer dans la recherche d’un fichier de configuration du
système ? Essayez donc d’invoquer la dernière commande en tant que simple utilisateur et voyez le
résultat :
$ find /etc -name 'cupsd.conf'
find: "/etc/cups/ssl": Permission non accordée
/etc/cups/cupsd.conf
find: "/etc/sudoers.d": Permission non accordée
find: "/etc/samba/private": Permission non accordée
find: "/etc/polkit-1/localauthority": Permission non accordée
find: "/etc/openvpn/keys": Permission non accordée
find: "/etc/openvpn/certs": Permission non accordée
Songez à ce que nous avons vu dans le chapitre précédent sur les permissions. Certains répertoires de
votre système sont à l’abri des regards curieux des simples utilisateurs, ce qui aura forcément une
incidence sur le fonctionnement des outils de recherche. En l’occurrence, la commande find invoquée
en tant que simple utilisateur vous servira si votre recherche porte effectivement sur le contenu de
votre propre répertoire :
$ pwd
/home/kikinovak
$ find . -name 'cupsd.conf'
./cupsd.conf
Si la syntaxe de cette dernière commande vous laisse perplexe, rappelez-vous que le point signifie
« ici ». Notez que j’aurais pu écrire aussi bien :
$ find /home/kikinovak -name 'cupsd.conf'
/home/kikinovak/cupsd.conf
Ou encore :
$ find ~ -name 'cupsd.conf'
/home/kikinovak/cupsd.conf
Une astuce consiste ici à ne pas afficher les avertissements et les erreurs, en redirigeant ceux-ci vers
le vide-ordures de notre système, si l’on peut dire :
$ find /etc -name 'cupsd.conf' 2> /dev/null
/etc/cups/cupsd.conf
Notre recherche effectuée sur l’ensemble du système en tant que root nous affichait une erreur de
permission pour le répertoire ~/.gvfs de l’utilisateur kikinovak, ainsi qu’un avertissement vaguement
inquiétant :
# find / -name 'cupsd.conf'
/home/kikinovak/cupsd.conf
find: `/home/kikinovak/.gvfs': Permission denied
/etc/cups/cupsd.conf
find: WARNING: Hard link count is wrong for `/proc/fs'
Là aussi, nous pouvons opter pour l’équivalent numérique de la pensée positive. Nous réitérons notre
recherche, mais cette fois-ci, nous redirigeons la sortie d’erreurs standard, pour utiliser le terme
technique :
# find / -name 'cupsd.conf' 2> /dev/null
/etc/cups/cupsd.conf
Si vous vous rappelez que c’est un fichier dont le nom finit par .conf et qui se situe en dessous de
/etc/cups, vous taperez :
La syntaxe de cette option vous paraîtra un peu moins biscornue si vous considérez que la paire
d’accolades {} symbolise « le résultat de la recherche ». Sinon, la dernière opération peut s’effectuer
plus simplement en utilisant xargs, une commande qui sert à « construire et exécuter des lignes de
commande à partir de l’entrée standard » (d’après la page de manuel xargs(1)). Essayez :
# find /bin -size +200k | xargs ls -l
-rwxr-xr-x 1 root root 996040 Nov 11 06:22 /bin/bash
-rwxr-xr-x 1 root root 620980 Aug 7 2015 /bin/gawk-4.1.3
-rwxr-xr-x 1 root root 1496348 Jun 10 2013 /bin/ksh
-rwxr-xr-x 1 root root 381376 Dec 3 08:16 /bin/tar
-rwxr-xr-x 1 root root 390832 Nov 11 06:15 /bin/tcsh
-rwxr-xr-x 1 root root 686912 Oct 26 21:54 /bin/zsh
Dans cette arborescence en dessous de ~/etc, nous trouvons essentiellement deux choses :
• des répertoires et des sous-répertoires ;
• des fichiers.
Cherchons tous les répertoires et les sous-répertoires dans cette arborescence, sans tenir compte des
fichiers. C’est l’option -type de find qui nous donnera le résultat escompté :
$ find ~/etc -type d
Le résultat de cette recherche dépassera probablement la taille d’un écran et il faut admettre qu’il
n’est pas très éloquent. Essayons d’obtenir un affichage plus détaillé :
$ find ~/etc -type d | xargs ls -ld
drwxr-xr-x 96 kikinovak users 12288 nov. 7 11:01 etc/
drwxr-xr-x 5 kikinovak users 4096 nov. 7 11:01 etc/ConsoleKit
…
Oui, je sais, on dirait que le chat a marché sur le clavier. Réitérez la recherche de répertoires
combinée avec un affichage détaillé des résultats :
$ find ~/etc -type d | xargs ls -ld
Vous constatez qu’à présent tous les répertoires ont des droits d’accès rwxr-xr-x identiques.
Procédons de manière similaire pour les fichiers. Pour les trouver, il faut combiner find avec l’option
-type f :
Jetez un œil rapide au résultat de la commande pour en avoir le cœur net. Effectivement, tous nos
fichiers ont désormais des permissions rw-r--r--.
L’exemple que je viens de vous donner n’est abstrait que dans le sens où les données sur lesquelles
nous l’avons appliqué sont à utilité discutable. Il existe cependant une série de cas de figure sur
lesquels il peut s’appliquer tel quel, notamment dans l’assainissement des droits pour toutes les
données importées à partir de certains périphériques de stockage de masse.
Rappelez-vous que ce fichier contient des renseignements sur tous les utilisateurs du système, c’est-à-
dire l’administrateur root, les utilisateurs système et les utilisateurs « réels ».
Dans un chapitre précédent, je vous ai montré qu’il était possible de filtrer cet affichage, pour ne
visualiser que les lignes qui contiennent une certaine chaîne de caractères, en l’occurrence "bash".
Voici ce que nous avions fait :
$ cat /etc/passwd | grep bash
root:x:0:0::/root:/bin/bash
operator:x:11:0:operator:/root:/bin/bash
kikinovak:x:1000:100:Kiki Novak,,,:/home/kikinovak:/bin/bash
lgibaud:x:1001:100:Laurène Gibaud,,,:/home/lgibaud:/bin/bash
ahabian:x:1002:100:Alexandre Habian,,,:/home/ahabian:/bin/bash
Cette dernière commande signifie en français : « affiche-moi toutes les lignes du fichier /etc/ passwd
qui contiennent la chaîne de caractères "bash" ».
Comme c’est le cas pour find, l’option -i rend la recherche insensible à la casse :
$ grep -i alexandre /etc/passwd
ahabian:x:1002:100:Alexandre Habian,,,:/home/ahabian:/bin/bash
Cette syntaxe fonctionne pour les chaînes de caractères comme pour des mots simples. Dès que le
terme recherché contient des caractères tels que des espaces, nous devons employer des guillemets :
$ grep "Laurène Gibaud" /etc/passwd
lgibaud:x:1001:100:Laurène Gibaud,,,:/home/lgibaud:/bin/bash
Dans certains cas, il peut s’avérer pratique d’afficher le numéro de la ligne à laquelle se trouve la
chaîne de caractères en question. C’est particulièrement pratique pour les fichiers un peu plus longs
et c’est l’option -n qui nous permettra de le faire :
$ grep -n "https" /etc/services
741:https 443/tcp
742:https 443/udp
Dans ce dernier exemple, les occurrences de la chaîne de caractères recherchée se situent aux lignes
741 et 742 du fichier /etc/services.
Suivant le nombre de résultats trouvés, grep peut être une commande extrêmement bavarde.
Heureusement, il existe plusieurs façons d’obtenir un résultat plus lisible. Reprenons donc notre
commande :
$ grep bash /etc/passwd
Au lieu d’afficher toutes les lignes contenant la chaîne de caractères "bash", nous allons nous contenter
d’afficher leur nombre :
$ grep -c bash /etc/passwd
5
Cette simple commande m’indique donc combien d’utilisateurs de ma machine utilisent le shell Bash.
Le résultat de cette opération ressemble à un succès partiel. L’occurrence de "PS1" est bien détectée
dans le fichier /etc/profile, au beau milieu d’une avalanche d’avertissements. En effet, grep ne peut
chercher du texte que dans des fichiers au format texte… et pas dans des répertoires à proprement
parler.
Comme nous l’avons vu un peu plus haut, nous pouvons faire fi des erreurs en les redirigeant vers
/dev/null. Recommençons :
# grep "PS1" /etc/* 2> /dev/null
/etc/profile:#PS1='`hostname`:`pwd`# '
/etc/profile: PS1='! $ '
/etc/profile: PS1='! ${PWD/#$HOME/~}$ '
/etc/profile: PS1='%n@%m:%~%# '
/etc/profile: PS1='$ '
/etc/profile: PS1='\u@\h:\w\$ '
/etc/profile:export PATH DISPLAY LESS TERM PS1 PS2
/etc/zprofile:#PS1='`hostname`:`pwd`# '
/etc/zprofile: PS1='! $ '
/etc/zprofile: PS1='! ${PWD/#$HOME/~}$ '
/etc/zprofile: PS1='%n@%m:%~%# '
/etc/zprofile: PS1='$ '
/etc/zprofile: PS1='\u@\h:\w\$ '
/etc/zprofile:export PATH DISPLAY LESS TERM PS1 PS2
Essayons maintenant de chercher la chaîne de caractères "TERM" dans les fichiers du répertoire /etc :
# grep "TERM" /etc/* 2> /dev/null
Les résultats de la recherche inondent la console et l’ensemble souffre d’un manque de lisibilité.
Dans certains cas, l’abondance des occurrences peut rendre ce genre de requête à peu près
inutilisable.
Retentons avec l’option -l, qui nous affiche simplement le nom des fichiers dans lesquels il y a au
moins une occurrence :
# grep -l "TERM" /etc/* 2> /dev/null
/etc/DIR_COLORS
/etc/csh.login
/etc/login.defs
/etc/lynx.cfg
/etc/profile
/etc/termcap
/etc/termcap-BSD
/etc/termcap-Linux
/etc/zprofile
Maintenant, essayons la même chose avec une approche différente. L’option -maxdepth 1 indique à find
de ne pas descendre dans les sous-répertoires pour sa recherche :
# find /etc/ -type f -maxdepth 1 | xargs grep -l "TERM"
/etc/termcap-BSD
/etc/csh.login
/etc/lynx.cfg
/etc/DIR_COLORS
/etc/profile
/etc/termcap
/etc/login.defs
/etc/termcap-Linux
Vous aurez remarqué que le résultat n’est pas tout à fait le même. C’est que le fichier /etc/ zprofile est
en réalité un lien symbolique (caractérisé par le l devant les droits d’accès) :
# ls -l /etc/zprofile
lrwxrwxrwx 1 root root 7 Jan 18 16:38 /etc/zprofile -> profile
Affiner la recherche
Pareillement, il peut arriver qu’une chaîne de caractères présente de très nombreuses occurrences
dans un fichier, ce qui ne facilite pas exactement la recherche. Essayez donc ceci :
$ grep "at" /etc/services
Vous constatez que la chaîne de caractères "at" semble omniprésente dans ce fichier, ce qui est
normal, puisqu’elle fait partie d’un grand nombre de mots de la langue anglaise. Dans ce cas, nous
pouvons peaufiner notre recherche, par exemple en lançant une requête sur toutes les lignes qui
commencent par "at" :
# grep "^at" /etc/services
at-rtmp 201/tcp #AppleTalk Routing Maintenance
at-rtmp 201/udp #AppleTalk Routing Maintenance
at-nbp 202/tcp #AppleTalk Name Binding
at-nbp 202/udp #AppleTalk Name Binding
at-3 203/tcp #AppleTalk Unused
at-3 203/udp #AppleTalk Unused
at-echo 204/tcp #AppleTalk Echo
at-echo 204/udp #AppleTalk Echo
...
De façon analogue, je peux également rechercher toutes les lignes qui finissent par une certaine
chaîne de caractères. Affichons donc toutes les lignes du fichier /etc/services qui comportent "DNS" à la
fin :
# grep "DNS$" /etc/services
mdns 5353/tcp #Multicast DNS
mdns 5353/udp #Multicast DNS
Les possibilités de grep sont extrêmement variées. C’est un véritable couteau suisse de la recherche
de chaînes de caractères dans un système de fichiers. Nous nous arrêterons là pour l’instant. Les
applications de grep que nous avons vues jusqu’ici nous permettent déjà de faire un bon bout de
chemin dans la pratique.
Pour extraire des renseignements plus précis dans tout ce flot d’informations, il suffit que je combine
la commande lspci avec grep.
Je peux filtrer l’affichage de /proc/cpuinfo pour connaître le nombre de processeurs sur la machine.
Voilà ce que cela donne sur ma station de travail munie d’un processeur Intel Core i7 :
$ cat /proc/cpuinfo | grep "processor"
processor : 0
processor : 1
processor : 2
processor : 3
processor : 4
processor : 5
processor : 6
processor : 7
L’utilisation de grep ne s’arrête pas là, mais je pense que les exemples cités vous ont permis de saisir
le principe.
9
Jusqu’ici, notre prise en main du système Linux consistait essentiellement à manipuler des fichiers
et des répertoires. À l’occasion de nos travaux pratiques, peut-être avez-vous remarqué ici ou là,
la présence de fichiers mystérieux qui ne semblent tomber ni dans l’une ni dans l’autre de ces
deux catégories.
Les liens symboliques
Si vous affichez les détails du fichier /bin/sh, vous obtenez ceci :
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Oct 4 10:28 /bin/sh -> bash
Cet OVNI (Objet Virtuel Non Identifié) est un lien ; plus exactement, un lien symbolique. Dans
l’affichage détaillé, il est identifié non pas par un - (fichier) ou par un d (directory, c’està-dire
répertoire), mais par un l comme link, autrement dit un lien.
Notez la petite flèche -> qui pointe vers un autre nom de fichier, en l’occurrence bash. Il faut donc
lire : /bin/sh est un lien symbolique qui pointe vers le fichier bash situé dans le même répertoire.
$ mkdir test_liens
$ cd test_liens/
$ cat > texte.txt << EOF
> Première ligne
> Deuxième ligne
> Troisième ligne
> EOF
Vu sous cet angle, le contenu des deux fichiers est identique. Voyons si nous pouvons ajouter du
contenu :
$ echo "Quatrième ligne" >> lien.txt
$ cat lien.txt
Première ligne
Deuxième ligne
Troisième ligne
Quatrième ligne
Nous constatons que, depuis que nous avons ajouté du texte à lien.txt, la taille de ce dernier n’a pas
changé. En revanche, c’est bien texte.txt qui compte désormais 66 octets au lieu de 49.
APPLICATION Commande wc
Non ce n’est pas ce que vous pensez. La commande wc (word count) sert à compter les octets, les
mots ou les lignes d’un fichier. Avec l’option -l, elle affiche le nombre de sauts de ligne. Reportez-
vous à sa page man pour plus d’informations.
À quoi peuvent donc servir tous ces liens ? Prenons quelques exemples.
Gimp est un logiciel de traitement d’images (GNU Image Manipulation Program), l’équivalent de
Photoshop sous Linux. On peut imaginer un cas de figure1 où un utilisateur décide de le lancer en
invoquant directement le nom du logiciel, soit en le tapant directement dans le terminal, soit en
l’exécutant à partir du raccourci clavier Alt+F2.
Figure 9–1
Le raccourci clavier Alt+F2 permet de lancer une application directement en invoquant son nom.
Si le lien symbolique /usr/bin/gimp n’existait pas, l’utilisateur devrait donc saisir gimp-2.8 pour lancer
le logiciel. Et lorsqu’il aura installé la prochaine version, il devra se rappeler le nom correspondant.
Le lien symbolique servira donc avant tout à lui faciliter la vie.
De façon similaire, certaines applications ont pu changer de nom au cours de leur existence :
$ ls -l /usr/bin/mozilla
lrwxrwxrwx 1 root root 9 Oct 4 10:43 /usr/bin/mozilla -> seamonkey
D’autres encore se situent dans des endroits non conventionnels et/ou en dehors du PATH :
$ ls -l /usr/bin/firefox
lrwxrwxrwx 1 root root 31 Oct 4 10:42 /usr/bin/firefox -> /usr/lib64/firefox-45.2.0/
firefox
Dans tous ces cas de figure, les liens symboliques servent manifestement à accéder à une application
avec son nom habituel (gimp, mozilla, thunar, firefox) dans un emplacement habituel (/usr/bin).
Nous l’avons dit plus haut : /tmp est un répertoire temporaire, comme son nom le suggère. Lorsque
vous naviguez sur le Web et que vous ouvrez un fichier avec Firefox, par exemple, c’est là que le
navigateur stocke les données en question jusqu’à ce que vous décidiez de passer à autre chose.
Affichez le contenu de ce répertoire :
$ ls /tmp/
gpg-YWZFtb/ pulse-2L9K88eMlGn7/ pulse-PKdhtXMmr18n/
ssh-Wk63R8wrV5YK/
Il ne s’agit pas d’une copie du contenu de /tmp, mais bel et bien des mêmes données. Autrement dit, le
lien symbolique depot fonctionne comme un représentant à part entière du répertoire /tmp vers lequel il
pointe.
Figure 9–2
Les liens symboliques dans le navigateur de fichiers
Vous constatez que lien.txt apparaît comme un « vrai » fichier texte dans le navigateur. En mode
Icônes, le seul détail qui nous montre sa véritable nature, c’est la petite flèche qui accompagne
l’icône. En mode Liste détaillée, la colonne Type nous indique bien qu’il s’agit d’un lien vers
texte.txt. Pour en avoir le cœur net, cliquez-droit sur l’icône de lien.txt et choisissez Propriétés dans
le menu contextuel.
Ici, l’onglet Général nous informe effectivement qu’il ne s’agit pas d’un fichier, mais d’un lien vers
texte.txt. Cette information est reprise dans la ligne Cible du lien, qui nous indique le fichier vers
lequel pointe le lien symbolique, en l’occurrence texte.txt.
Pareillement, le lien depot apparaît bien comme un vrai répertoire dans le navigateur de fichiers, au
détail près qu’il est lui aussi affublé d’une petite flèche l’identifiant en tant que lien symbolique. Là
aussi, cliquez-droit sur l’icône et affichez les Propriétés.
Figure 9–3
Les propriétés de lien.txt
Figure 9–4
La fenêtre des propriétés nous indique bien qu’il s’agit d’un lien symbolique qui pointe vers le
répertoire /tmp.
Figure 9–5
Un lien cassé
Un lien dont la cible a disparu est un « lien cassé » (broken link). Comment se présentent les liens
cassés en ligne de commande ? Revenons dans notre terminal et effectuons un ls -l ; nous ne voyons
pas grand-chose. Revenons dans la console et retentons la même chose. Les liens cassés apparaissent
en rouge. Notez que, dans l’environnement graphique, nous aurions pu obtenir un affichage coloré
grâce à l’option suivante :
$ ls -l --color=auto
Nous pouvons repêcher la cible dans la corbeille (clic sur la Corbeille, clic-droit sur le fichier
texte.txt, Restaurer) si nous avons choisi de ne pas la supprimer définitivement en mode graphique.
Alternativement, nous pourrions la recréer moyennant un simple touch. Le fichier serait vide, certes,
son ancien contenu serait perdu, mais le lien « saurait » que sa cible existe et ne rouspéterait plus.
Ce qu’il faut retenir ici, c’est que la suppression d’un lien symbolique par le biais de la commande rm
n’entraîne en aucun cas la suppression de la cible. En effet, texte.txt est toujours là.
Il en va de même pour un lien symbolique qui pointe vers un répertoire :
$ ls -l depot
lrwxrwxrwx 1 kikinovak users 5 Nov 8 13:06 depot -> /tmp/
$ rm depot
$ ls -ld /tmp/
drwxrwxrwt 7 root root 4096 Nov 8 14:40 /tmp/
Ici, nous utilisons bien un simple rm, car depot n’est pas un répertoire à proprement parler. C’est un
lien symbolique pointant vers un répertoire. Vous ne pourrez donc pas utiliser rmdir pour supprimer ce
genre de lien.
À présent, créez un lien physique vers texte.txt. C’est très simple, il suffit d’omettre l’option -s de la
commande ln :
$ ln texte.txt lien.txt
$ ls -l
total 8
-rw-r--r-- 2 kikinovak users 49 Nov 8 15:27 lien.txt
-rw-r--r-- 2 kikinovak users 49 Nov 8 15:27 texte.txt
Ici, nous avons supprimé texte.txt, mais le fichier a en quelque sorte bénéficié d’une seconde vie,
sous forme du lien physique lien.txt. Pour nous débarrasser une bonne fois pour toutes du fichier et de
son contenu, il faudra donc également supprimer lien.txt.
La gestion des processus de Linux vous permet, par exemple, d’écouter les Concertos
brandebourgeois sur votre lecteur audio favori en surfant sur le Web, tout en gardant un œil sur le
courrier entrant. Chaque programme que vous démarrez devient un processus. Si vous démarrez le
même programme plusieurs fois, il en résultera une série de processus.
Linux, un système multitâche
Linux est un système multitâche, ce qui veut dire que vous pouvez exécuter des programmes en
parallèle, comme bon vous semble. Chaque programme occupe une certaine quantité de ressources,
notamment de mémoire vive (RAM) et de processeur (CPU). Par conséquent, un nombre croissant de
processus a pour effet de ralentir le système.
Tous ces programmes ne tournent pas vraiment en même temps, à proprement parler. Chaque
processus reçoit un peu de temps de calcul, à tour de rôle, et cette répartition des ressources
s’effectue tellement rapidement que l’utilisateur humain a l’illusion que tout se passe simultanément.
Tous les processus sont soigneusement séparés les uns des autres, ce qui signifie qu’une application
mal codée qui « plante » n’entraînera pas le reste du système dans sa déconfiture.
Tous les systèmes Linux contiennent une série d’outils pour surveiller et gérer les processus. Nous
allons en présenter quelques-uns en détail, sous forme d’un atelier pratique agrémenté d’un zeste de
théorie.
Lancer et surveiller un processus : ps
Lancez un terminal et démarrez la table de caractères gucharmap en invoquant la commande suivie d’une
esperluette :
$ gucharmap &
APPLICATION Gucharmap
La table de caractères permet d’insérer des caractères spéciaux dans un document ou une zone de
texte. Elle contient des caractères accentués, des symboles mathématiques, des symboles spéciaux
divers ainsi que des signes de ponctuation. Un certain nombre de ces caractères ne sont pas
accessibles par le clavier standard.
La table de caractères se lance dans une fenêtre à part et le terminal vous retourne un message qui
ressemble à ceci :
[1] 9081
Maintenant, cliquez une fois sur le terminal (pour ramener le focus sur lui) et tapez la commande
suivante :
$ ps
Elle vous retourne un petit bilan qui ressemble au résultat ci-après. Ne vous inquiétez pas si les
numéros ne sont pas les mêmes que sur ma machine. C’est normal.
PID TTY TIME CMD
9054 pts/0 00:00:00 bash
9081 pts/0 00:00:00 gucharmap
9085 pts/0 00:00:00 ps
Les plus curieux d’entre vous ont probablement déjà parcouru la page du manuel en ligne de ps (man
ps) pour avoir une idée de ce qu’ils viennent de faire. Et ils ont trouvé la définition suivante :
La commande ps présente donc un cliché instantané des processus en cours. Invoquée sans autre
argument, elle se limite aux processus de la console active. Ce qui nous intéresse ici, ce sont les deux
colonnes PID et CMD. PID (Process IDentifier) est un nombre unique qui identifie un processus sans
ambiguïté. Quant à la colonne CMD (Command), elle correspond à la commande qui a déclenché le
processus.
La colonne TTY nous indique le terminal à partir duquel le processus a été lancé. Étant donné que nous
n’avons pas fourni d’autre argument à ps, il est tout à fait normal que TTY nous affiche partout pts/0, ce
qui correspond à notre terminal graphique. Enfin, TIME indique le temps processeur utilisé par le
processus, ce qu’il ne faut pas confondre avec le temps réel écoulé depuis le lancement du processus.
L’information 00:00:01 signifie tout simplement que gucharmap utilise une seconde de temps CPU depuis
son lancement, ce qui est tout à fait normal.
Figure 10–1
Sous Linux, chaque programme que vous lancez correspond à un ou plusieurs processus.
Dans notre exemple, la table de caractères « tourne » avec le PID 9 081. C’est d’ailleurs le numéro
qui s’est affiché lors du lancement de gucharmap. Tous les processus en cours ont reçu un identifiant
unique se situant entre 1 et 32 767. Chaque nouveau processus se voit attribuer le prochain PID
disponible. Lorsqu’un processus est terminé d’une façon ou d’une autre (voir ci-après), il libère son
PID. Une fois que le PID maximum est atteint, le prochain nouveau processus sera doté du plus petit
PID disponible.
La sortie de ps est assez longue. Sur notre poste de travail Xfce, le système lance près de 180
processus, dont une cinquantaine appartiennent à l’utilisateur connecté.
Le nombre de processus correspond à peu de choses près au nombre de lignes renvoyées par la
commande précédente. La ligne d’en-têtes des colonnes ne correspond pas à un processus ;
supprimons-la de l’affichage en utilisant l’option -v (ou --invert-match) de grep :
$ ps ax | grep -v COMMAND
À partir de là, je peux donc reprendre ma commande et la combiner avec wc pour obtenir le nombre
de lignes, c’est-à-dire le nombre de processus en cours :
$ ps ax | grep -v COMMAND | wc -l
182
Nous obtenons un total de 182 processus. De la même manière, si je veux savoir combien de ces
processus m’appartiennent, il suffit que j’invoque seulement l’option x :
$ ps x | grep -v COMMAND | wc -l
47
Envoyer un signal à un processus : kill
Maintenant, tentez l’expérience suivante. Dans le terminal, invoquez la commande kill suivie du PID
de gucharmap. Sur ma machine, c’est 9 081 ; sur la vôtre, ce sera probablement un autre identifiant :
$ kill 9081
Ah ? La fenêtre de gucharmap a disparu. Est-ce que nous l’aurions « tuée », comme le suggère le nom de
la commande ? kill est en effet susceptible de se révéler un véritable assassin et de terminer des
processus avec l’équivalent numérique d’un coup de massue sur la tête. Néanmoins, il a procédé
autrement ici.
kill invoqué sans arguments est un gentil tueur, c’est-à-dire qu’il laisse au processus le temps de
s’arrêter proprement, de ranger à leur place toutes les données en cours d’utilisation. En revanche, si
on le lui précise explicitement, kill montre les crocs et devient impitoyable, ce qui est parfois
nécessaire face à un processus qui a décidé de faire des siennes et de bloquer la machine.
Chose plus importante encore, kill n’est pas qu’un tueur, comme son nom le laisserait croire. Il sait
faire bien plus que cela. Pour en avoir la certitude, l’option -l vous affichera la liste complète de ses
compétences :
$ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
...
Non, nous n’allons pas examiner les soixante-quatre options en détail. Nous avons juste compris que
kill permettait d’envoyer toute une série de signaux à des processus et nous allons en tester quelques-
uns.
À présent, vous pouvez continuer à utiliser gucharmap normalement. Réinvoquez kill -l et repérez
SIGSTOP et SIGCONT dans la liste des signaux. Vous voyez qu’ils sont affublés respectivement des
identifiants de signal 19 et 18. Nous aurions également pu invoquer les deux dernières commandes
comme ceci :
$ kill -19 5712
Un coup d’œil sur la page de manuel de kill nous apprend que c’est TERM qui est utilisé si aucun signal
n’est spécifié. Utilisez cette méthode si vous souhaitez terminer un programme dans les règles de
l’art.
Il arrive parfois que cela ne soit pas possible. Personne n’est parfait et les programmeurs
n’échappent pas à cette règle. Même dans le monde GNU/Linux, il arrive qu’un programme fasse des
siennes et plante. Si nous n’avons pas d’application mal codée sous la main, nous pouvons nous
amuser à simuler un plantage. Ce n’en est pas vraiment un, mais voici comment en avoir une vague
idée :
1 Lancez gucharmap.
2 Envoyez-lui un SIGSTOP.
3 Essayez de fermer gucharmap en cliquant sur le bouton de fermeture de la fenêtre.
4 Admirez le résultat.
Figure 10–2
Une simulation de plantage
Sous Linux, une application qui refuse d’obtempérer ne vous poussera pas à en venir à ces
extrémités. Il suffit de lui envoyer un petit SIGKILL et le tour est joué. Concrètement, si nous reprenons
notre exemple :
$ kill -9 5712
Ou alors :
$ kill -KILL 5712
Les signaux à fournir en argument sont les mêmes que pour kill et vous pouvez aussi utiliser la
syntaxe numérique :
$ killall -9 gucharmap
Toutes les tables de caractères ont disparu de l’écran. Nous pouvons en conclure que killall
s’adresse à toutes les instances d’un processus qui portent le même nom. Au cas où l’on souhaite
s’adresser à un processus individuellement, il faudra recourir à kill.
Les processus dans tous leurs états
Vous avez sans doute remarqué la présence d’une colonne STAT supplémentaire dans l’affichage de ps
avec certains arguments. Il s’agit de l’état (status) du processus en question :
• S (sleeping) désigne un processus endormi.
• R (running) signifie que le processus est en cours d’exécution.
• Z (zombie) concerne les processus terminés dont le processus parent n’a pas pu lire le code de
retour.
• SW (swap) veut dire que le processus est non seulement endormi, mais qu’il a été délocalisé dans la
mémoire d’échange. Rappelez-vous, il s’agit d’une portion du disque dur spécialement réservée
pour les cas où la mémoire vive ne suffit pas pour faire tourner correctement tous les processus
actifs.
Un lien de parenté : pstree
Nous venons d’évoquer le terme de « processus parent ». Sachez que les processus d’un système
Linux s’organisent de façon hiérarchique. Le premier programme lancé au démarrage de votre
machine est /sbin/init. Arrêtons-nous un instant et voyons ce qui se passe lorsque vous allumez votre
ordinateur (ne vous inquiétez pas si vous ne comprenez pas tout, nous aurons l’occasion de revenir
dessus) :
1 Le matériel de la machine est initialisé par le BIOS.
2 Le secteur de démarrage (MBR ou Master Boot Record) est chargé. Il exécute le chargeur de
démarrage (bootloader).
3 Le chargeur de démarrage lance le noyau (kernel).
4 Le noyau initialise les périphériques.
5 Il charge les modules (ou pilotes ou drivers) correspondants.
6 Il monte le système de fichiers racine.
7 Il exécute /sbin/init, le programme responsable du démarrage de tous les processus utilisateurs.
8 À son tour, /sbin/init exécute un ensemble de scripts.
9 Etc.
La commande pstree affiche l’organisation hiérarchique de tous les processus en cours sur votre
système :
$ pstree
init-+-ModemManager---2*[{ModemManager}]
|-acpid
|-5*[agetty]
|-applet.py
|-at-spi-bus-laun-+-dbus-daemon
| `-3*[{at-spi-bus-lau}]
|-at-spi2-registr---{at-spi2-regist}
|-atd
|-bash---bash---xinit-+-X
...
Notez qu’en haut à gauche, vous retrouvez init, le père de tous les processus. Une autre façon de
prendre en compte la hiérarchie des processus consiste à utiliser ps avec les arguments nécessaires :
$ ps axfl
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY ...
1 0 2 0 20 0 0 0 - S ? ...
1 0 3 2 20 0 0 0 - S ? ...
...
Figure 10–3
L’organisation hiérarchique des processus mise en évidence par ps
Ici, c’est l’option l (lettre L) qui se charge d’expliciter les liens de famille entre les différents
processus. Juste à côté de la colonne PID, la colonne PPID (Parent Process Identifier) affiche les
identifiants respectifs des processus parents. Tout en haut de la liste, notez que le processus init n’est
le fils de personne. Son PPID est égal à 0.
Massacre familial
Vous pouvez tenter une petite expérience pour mieux cerner la notion de filiation entre processus.
Fermez toutes les applications sur votre bureau, lancez le terminal (Applications>Système>Terminal
Xfce) et, à l’intérieur de ce dernier, lancez le lecteur audio Audacious, sans l’esperluette cette fois-
ci :
$ audacious
Figure 10–4
Le père et le fils
Que constatez-vous, non sans une certaine surprise ? Les deux terminaux graphiques ont disparu,
comme il fallait s’y attendre. Non content de cela, le lecteur audio a également tiré sa révérence. Cela
tient au fait que la dernière commande killall a engendré un petit massacre familial, car en tuant le
processus père (le terminal), vous avez également tué le fils (le lecteur audio).
killet killall permettent donc de viser des processus... et de se tirer dans le pied au passage. Pour en
avoir le cœur net, essayez ceci :
$ killall xinit
Un simple utilisateur ne peut pas afficher tous les processus en cours sur la machine pour ensuite tirer
à vue sur tout ce qui bouge. En revanche, là comme ailleurs, root peut tout se permettre. Il a donc la
possibilité de mettre fin à tous les processus de n’importe quel utilisateur du système :
• les processus des utilisateurs physiques (kikinovak, ahabian, lgibaud, etc.) ;
• les processus des utilisateurs système (mail, news, messagebus) ;
• ses propres processus, c’est-à-dire ceux qui appartiennent à root.
Surveiller l’utilisation des ressources de la machine : top
Le contrôle des processus a davantage d’importance lorsque le système est installé sur une machine
peu performante en termes de processeur et de mémoire vive. Comme nous l’avons vu plus haut,
chaque processus occupe une portion de mémoire vive tout en réclamant sa part de puissance de
calcul.
La machine sur laquelle j’écris ces lignes est une station de travail dernière génération, dotée d’un
processeur huit cœurs et d’une quantité ahurissante de mémoire vive1. Je peux donc faire tourner
simultanément un traitement de texte, mon client de courrier électronique, un navigateur avec une
bonne douzaine d’onglets ouverts, un client de messagerie instantanée, plusieurs fenêtres du
navigateur de fichiers, une session sur un ordinateur distant, un lecteur audio pour écouter la radio sur
Internet, un logiciel de retouche d’images et d’autres applications encore, sans ressentir le moindre
ralentissement de ma machine. Si je m’amusais à faire la même chose sur un des vieux Pentium IV
première génération qui prennent la poussière dans mon grenier, il y a fort à parier que le système
serait très vite complètement saturé. Dans ce cas, il faudrait utiliser les ressources de la machine
avec plus de parcimonie.
Il existe un moyen fort pratique de mesurer exactement la consommation en ressources de chaque
processus : c’est l’outil top. Pour le lancer, ouvrez un terminal et invoquez simplement son nom :
$ top
Figure 10–5
L’outil top surveille la gourmandise des processus en temps réel.
L’affichage par défaut de top classe les processus par ordre décroissant de consommation de
puissance de calcul (CPU). Si vous souhaitez obtenir des renseignements plus pertinents sur la
consommation en mémoire vive, vous pouvez le faire comme ceci :
1 Appuyez sur Maj+O pour afficher la fenêtre de sélection des critères d’affichage de top.
2 Sélectionnez VIRT en appuyant sur O.
3 Confirmez avec Entrée.
À présent, top vous affiche l’ensemble des processus actifs classés par ordre décroissant de
consommation de mémoire virtuelle. Les processus les plus gourmands figurent en tête. Dans
l’exemple de la figure, le processus le plus gourmand est donc le serveur graphique X.
1. Vingt-quatre millions de fois plus que la mémoire vive de l’ordinateur monocarte 8080 que je tripotais durant mon adolescence au début
des années 1980.
11
Un peu plus tôt dans cet ouvrage, nous avons défini un « service » comme un logiciel qui tourne en
tâche de fond pendant que l’utilisateur fait autre chose. Certains de ces services sont
indispensables pour le fonctionnement cohérent d’un poste de travail et doivent être lancés au
démarrage de la machine. D’autres sont facultatifs et dépendent de l’utilisation spécifique que
vous faites de votre PC. Le présent chapitre vous propose une introduction facile et pratique à la
gestion des services sous Slackware Linux.
Une confusion babylonienne
Un homme demande à son ami aveugle : « Veux-tu boire un verre de lait ? » Son ami lui répond :
« Qu’est-ce que c’est, le lait ? — C’est un liquide blanc, qu’on donne surtout à boire aux enfants. —
Blanc, qu’est-ce que c’est ? — Blanc, c’est une couleur. C’est la couleur... des cygnes, par exemple.
— Des cygnes ? — Oui, tu sais, c’est un animal avec un cou très long et un peu tordu. — Tordu ? —
Oui, regarde, je vais poser mon bras sur la table et tu vas tâter mon coude et mon avant-bras, comme
ça tu en auras une idée. » L’aveugle tripote le bras de son ami pendant quelque temps et finit par lui
dire : « Oui, je veux bien un verre de lait, s’il te plaît. »
Je me demande si l’inventeur de cette blague n’a pas lu les chapitres sur la gestion des services et
des niveaux d’exécution dans les manuels d’administration Linux les plus courants. Les choses que
l’on y trouve sont certes justes, mais la présentation complexe de l’enchevêtrement des mécanismes
risque fort de frustrer le lecteur pourtant doté d’une dose saine de curiosité. Ajoutez à cela le fait que
la gestion des services varie parfois considérablement entre les distributions, sans compter que les
développeurs du monde du libre adorent réinventer la roue en échafaudant des systèmes
d’initialisation de plus en plus révolutionnaires et qui apportent enfin une solution à tous les
problèmes qui n’existaient pas au départ. Bref, bienvenue dans la confusion babylonienne de la
gestion des services sous Linux. « Tout cela est bien vrai », soupirait Candide face aux
démonstrations ampoulées du philosophe Pangloss, « mais il faut cultiver notre jardin. » C’est ce que
nous allons faire. Un peu de jardinage, donc. Un râteau, une bêche et c’est parti.
Qu’est-ce qu’un service ?
Pour avoir une idée de ce qu’est un service, nous n’avons qu’à en prendre un au hasard sur notre
machine pour le regarder de près :
$ ps ax | grep gpm | grep -v grep
1004 ? Ss 0:01 /usr/sbin/gpm -m /dev/mouse -t imps2
GPM (General Purpose Mouse) est un serveur de souris pour la console. Si vous n’avez pas la
moindre idée de ce que cela peut bien être :
1 Basculez en mode console : Ctrl+Alt+F6.
2 Faites bouger la souris et regardez ce qui se passe à l’écran.
3 Revenez en mode graphique : Ctrl+Alt+F7.
GPM est donc un service qui sert à utiliser la souris en mode console. Cela s’avère pratique dans
certaines situations, par exemple si vous travaillez en mode console sur un serveur dépourvu
d’environnement graphique et souhaitez copier/coller des quantités de texte.
Un service connaît principalement deux états :
• marche ;
• arrêt.
C’est un peu comme le moteur d’une voiture. Soit il est démarré, soit il ne tourne pas. Après, savoir
si vous le laissez tourner au point mort ou si vous embrayez, c’est une autre histoire…
Arrêter et (re)démarrer un service
Dans une voiture, je coupe le contact pour arrêter le moteur. Je peux faire pareil pour un service,
après avoir acquis les droits d’administrateur :
# /etc/rc.d/rc.gpm stop
Stopping gpm...
Retournez dans la console (Ctrl+Alt+F6) et faites bouger la souris. Effectivement, GPM est arrêté.
Pour démarrer le service, je dois faire ceci :
# /etc/rc.d/rc.gpm start
Starting gpm: /usr/sbin/gpm -m /dev/mouse -t imps2
Dans certaines situations, il est nécessaire de redémarrer un service, par exemple après avoir apporté
des modifications à sa configuration, pour que celles-ci soient prises en compte. Dans ce cas, le
redémarrage s’effectue comme ceci :
# /etc/rc.d/rc.gpm restart
Restarting gpm...
Le « redémarrage » n’est pas véritablement une fonctionnalité à part. Pour le système, il s’agit
simplement d’une commande stop suivie d’une commande start.
Activer un service au démarrage de la machine
Jetons un œil dans le répertoire /etc/rc.d :
# ls -l /etc/rc.d
Ce répertoire contient une panoplie de scripts rc.quelquechose, qui se distinguent à première vue par
leurs permissions. Certains de ces scripts sont exécutables avec des droits 0755 (rwxr-xr-x) :
...
-rwxr-xr-x 1 root root 1893 Jan 30 2011 rc.fuse
-rwxr-xr-x 1 root root 1156 Nov 10 10:36 rc.gpm
...
-rwxr-xr-x 1 root root 1893 Jul 10 2013 rc.messagebus
...
-rwxr-xr-x 1 root root 1600 Oct 17 2013 rc.sshd
-rwxr-xr-x 1 root root 981 Jun 22 2013 rc.syslog
...
D’autres ont des droits 0644 (rw-r—r--) et ne sont donc pas exécutables :
...
-rw-r--r-- 1 root root 4308 Oct 10 2013 rc.cups
...
-rw-r--r-- 1 root root 1061 Aug 5 2013 rc.httpd
...
-rw-r--r-- 1 root root 2764 Aug 17 2013 rc.mysqld
...
-rw-r--r-- 1 root root 1481 Oct 14 2013 rc.ntpd
...
Une des étapes de l’installation de Slackware consistait à définir les services à démarrer au
lancement de la machine (CONFIRM STARTUP SERVICES TO RUN). Nous pouvons réinvoquer cet écran de
configuration :
# pkgtool
Figure 11–1
L’écran principal de pkgtool permet de réinvoquer les scripts de configuration de l’installateur.
Figure 11–2
Affichez l’assistant de gestion des services.
Figure 11–3
Dans la liste des services, repérez CUPS et activez-le en appuyant sur Espace.
Le script de lancement de CUPS est donc devenu exécutable. Est-ce que le service est lancé pour
autant ? Vérifions :
# ps ax | grep cups | grep -v grep
Dans un cas comme dans l’autre, nous constatons que le service a été activé, mais qu’il n’a pas été
démarré pour autant. Lancez CUPS manuellement :
# /etc/rc.d/rc.cups start
cups: started scheduler. [ OK ]
À présent, lancez le petit utilitaire de configuration des imprimantes. Dans le menu Applications,
vous le trouverez dans Système>Print Settings.
Figure 11–4
Le gestionnaire des imprimantes est connecté au serveur CUPS.
Figure 11–5
Le fonctionnement de l’interface graphique dépend de l’activation du service correspondant sous le
capot.
Et puisque nous avons parlé d’activation au démarrage, tentons deux autres expériences. Voici la
première :
1 Arrêtez CUPS : /etc/rc.d/rc.cups stop.
2 Redémarrez la machine.
3 Vérifiez l’état de CUPS : /etc/rc.d/rc.cups status.
Et voilà la seconde :
1 Enlevez les droits d’exécution au script de démarrage de CUPS : chmod .
-x /etc/rc.d/ rc.cups
Ce fichier répertorie les différents niveaux d’exécution sur notre système Slackware. Le niveau 3
correspond donc au mode multi-utilisateur (multiuser mode), mais en mode console. Effectivement, nous
nous sommes connectés à la machine en mode console jusqu’ici et nous avons démarré
l’environnement graphique à la main, en invoquant la commande startx.
Tentons une première expérience et modifions le niveau d’exécution par défaut. Le niveau 4 est
également un mode multi-utilisateur, à la différence près que l’environnement graphique est lancé
automatiquement (X11 with KDM/GDM/XDM). Repérez la ligne qui définit le niveau d’exécution par défaut :
# Default runlevel. (Do not set to 0 or 6)
id:3:initdefault:
Définissez le niveau d’exécution 4 par défaut (si vous avez la persistante et sournoise impression que
les fautes de frappe sont potentiellement fatales ici, vous avez raison) :
# Default runlevel. (Do not set to 0 or 6)
id:4:initdefault:
Redémarrez la machine. À présent, c’est un gestionnaire de connexion graphique qui vous somme de
vous identifier.
Figure 11–6
Le gestionnaire de connexion XDM se lance automatiquement (rassurez-vous, il en existe de moins
laids).
Une fois que nous avons fourni notre login et notre mot de passe, le bureau Xfce démarre directement.
Nous nous sommes enfin affranchis de la commande startx. En revanche, notre bureau démarre en
anglais.
Le niveau d’exécution 1 (single user mode) est utilisé pour des travaux de maintenance, par exemple
lorsque la mauvaise configuration d’un service empêche le démarrage de la machine. Au lieu d’éditer
la valeur initdefault dans /etc/inittab comme nous l’avons fait tout à l’heure, nous allons changer de
niveau d’exécution à la volée :
# init 1
L’environnement graphique tire une révérence et la console affiche une série de messages :
Sending all processes the SIGHUP signal.
Waiting for processes to hangup......
Sending all processes the SIGTERM signal.
Waiting for processes to terminate......
Sending all processes the SIGKILL signal.
Waiting for processes to exit......
Le niveau d’exécution 1 ne démarre que le minimum syndical en matière de services. Nous nous
retrouvons face à la connexion en mode console. À partir de là, nous pouvons nous identifier en tant
que root et – généralement – lancer un éditeur de texte pour corriger les éventuelles bourdes que nous
avons pu commettre dans les fichiers de configuration. Voyons ce que nous dit la commande runlevel :
# runlevel
4 1
Autrement dit, le système a initialement démarré le mode d’exécution 4, pour ensuite passer au niveau
1. Nous comprenons mieux la description de l’utilitaire runlevel dans la page man correspondante :
NAME
runlevel -- find the previous and current system runlevel.
ATTENTION Niveaux 0 et 6
Le commentaire du fichier /etc/inittab précise bien qu’il ne faut surtout pas (Do not) utiliser les
valeurs 0 ou 6 pour le niveau d’exécution par défaut, étant donné que celles-ci correspondent
respectivement à l’arrêt et au redémarrage du système. Si jamais vous avez la malheureuse idée de
le faire quand même, vous obtenez un système qui, à peine lancé, s’arrêtera ou redémarrera. Voilà
une autre façon de se tirer dans le pied.
Entraînez-vous un peu à basculer entre les niveaux d’exécution 1, 3 et 4 – manuellement aussi bien
qu’en éditant /etc/inittab – et voyez à chaque fois ce que vous dit la commande runlevel. Le potentiel
de divertissement de cette manipulation est assez limité, je l’avoue, mais elle vous montre comment
un changement de niveau d’exécution arrête (SIGTERM) et tue (SIGKILL) les processus du niveau courant
avant d’en lancer éventuellement une autre série, dans un ordre bien défini.
# init 0
Vous vous en êtes probablement douté : l’affichage graphique disparaît, les messages d’arrêt des
services défilent dans la console et la machine s’arrête.
Relancez le système et retentez une expérience similaire :
# init 6
Cette fois-ci, c’est le même tableau, au détail près que la machine ne s’arrête pas, mais redémarre. Et
vous comprenez mieux pourquoi il ne faut jamais définir 0 ou 6 comme valeur par défaut pour
initdefault dans /etc/inittab.
L’option -h (halt) signifie à shutdown qu’il faut procéder à un arrêt complet du système. En revanche,
l’option -r (reboot) déclenche un redémarrage. Quant à now (maintenant), c’est le moment où le
système sera arrêté. Si vous autorisez votre petite nièce à jouer à Tuxracer pendant une demi-heure
avant d’aller se coucher, vous pouvez très bien lui accorder ce délai comme suit :
# shutdown -h +30
Pour l’arrêt comme pour le redémarrage, vous n’avez pas que cette possibilité. La commande halt,
par exemple, procède à un arrêt du système, mais sans envoyer le signal d’extinction au PC. Essayez :
# halt
Pour le redémarrage de la machine, il vous reste deux possibilités. Vous pouvez tout d’abord appeler
la commande reboot dans un terminal :
# reboot
Sinon, vous pouvez procéder au fameux three finger salute (salut à trois doigts) en appuyant sur
Ctrl+Alt+Suppr. Contrairement à shutdown ou à reboot, cette méthode est applicable en tant
qu’utilisateur normal. En revanche, elle ne fonctionne qu’en mode console. En d’autres termes, elle
n’a aucun effet si vous vous trouvez dans un environnement graphique.
ALLER PLUS LOIN La gestion des services et niveaux d’exécution dans les autres
distributions
La procédure de démarrage et de gestion des services que je vous ai présentée dans ce chapitre est
spécifique à la distribution Slackware et aux dérivées de celle-ci comme Salix, Zenwalk, Slax,
Porteus, etc. Red Hat Enterprise Linux, CentOS et Debian ont longtemps utilisé la procédure
System V, avec des niveaux d’exécution organisés différemment. D’autres systèmes d’initialisation
ont vu le jour petit à petit, comme Upstart, développé par Canonical et adopté pendant quelque
temps par Ubuntu et Fedora, ou encore OpenRC, utilisé par Gentoo depuis ses débuts.
Actuellement, l’écrasante majorité des distributions a décidé d’adopter systemd, une alternative à
System V spécifiquement conçue pour le noyau Linux.
Notons au passage que l’adoption de systemd a suscité une série de controverses sans précédent
dans le monde du libre. En résumé, les objections ne portent pas tant sur les mérites de systemd en
tant que système d’initialisation, mais sur le fait qu’il s’impose de force au détriment des solutions
alternatives en s’étendant de façon tentaculaire dans des domaines qui n’ont plus rien à voir avec
l’initialisation à proprement parler, sans oublier qu’il casse volontairement la compatibilité Posix
avec les systèmes non-Linux comme la famille des BSD.
Je ne vais pas entrer dans les détails des divergences techniques pour éviter la confusion. Je pense
que la bonne manière de procéder consiste à bien vous familiariser avec le fonctionnement de la
distribution que nous avons choisie à nos fins d’apprentissage. Par la suite, une fois que vous serez
à l’aise et que vous administrerez votre système Slackware « avec le sourire »a, vous pourrez vous
tourner vers d’autres horizons et vous reporter à la documentation spécifique de chaque
distribution pour en apprécier les similitudes et les différences de fonctionnement.
a. Les maîtres d’arts martiaux vietnamiens considèrent qu’une technique est acquise lorsqu’on la pratique « avec le sourire ».
12
« Où sont les données de mon CD-Rom ? Comment faire pour accéder à ma clé USB ? » Voilà ce
que l’on est sûr de retrouver dans le palmarès des questions les plus fréquemment posées par des
utilisateurs venant de Microsoft Windows. Linux n’utilise pas les lettres de l’alphabet pour
désigner ses périphériques et c’est en vain que vous chercherez des lecteurs A:, C:, D:, E: ou F:. Au
lieu de cela, les périphériques sont inclus directement dans la hiérarchie du système de fichiers. Si
cela vous paraît obscur, la présente section vous expliquera tout en détail, pas à pas. Suivez le
guide.
La gestion des périphériques amovibles en mode
graphique
Un système Linux moderne n’a rien à envier à un poste de travail tournant sous Microsoft Windows
ou sous Mac OS X, en termes de confort d’utilisation. Si nous considérons la gestion des
périphériques amovibles, elle se fait de manière tout aussi transparente que sur les deux systèmes
propriétaires nommés. Par « transparent », entendez que si vous utilisez un environnement de bureau
comme Xfce ou KDE, il suffit généralement d’insérer le périphérique en question et de cliquer sur
une icône pour accéder à son contenu.
Insérer un DVD ou un CD
Pour l’exemple, je prends le DVD d’installation de Slackware et je l’insère dans le lecteur. Une
icône le représentant apparaît sur le bureau. Je double-clique dessus et le contenu du DVD s’affiche
dans la fenêtre du navigateur de fichiers.
Figure 12–1
Le contenu du DVD d’installation dans le navigateur de fichiers
Un coup d’œil dans la barre de navigation indique que le contenu du DVD apparaît dans le répertoire
.
/run/media/kikinovak/SlackDVD
Maintenant, je clique sur la petite icône Éjecter, dans le panneau latéral, ou alors je clique-droit sur
l’icône représentant le DVD, puis sur Éjecter le volume.
Figure 12–2
Éjection d’un périphérique amovible
Le tiroir du lecteur s’ouvre et je peux extraire le DVD. Je referme le tiroir et j’ouvre le répertoire
/run/media/kikinovak dans le navigateur de fichiers.
Figure 12–3
Après éjection du DVD, le répertoire /run/media/kikinovak est vide.
Il n’y a plus rien ; le répertoire /run/media/kikinovak/SlackDVD a disparu. Avant de sauter à pieds joints sur
une conclusion, je retente l’expérience avec un autre périphérique amovible.
Figure 12–4
Le contenu de la clé USB dans le navigateur de fichiers
Je vais faire comme pour le DVD, au détail près qu’une clé ne « s’éjecte » pas à proprement parler :
je clique sur la petite icône Éjecter dans le panneau latéral, ou alors sur l’entrée de menu Éjecter le
volume dans le menu contextuel.
L’icône correspondant à la clé disparaît du panneau latéral. À présent, je peux l’enlever en toute
sécurité. Là aussi, je retourne voir dans /run/media/kikinovak. Je constate que /run/ media/kikinovak/SLACK32,
/run/media/kikinovak/PHOTOS ou /run/media/kikinovak/3856-5FB1 a disparu et qu’il ne reste que
/run/media/kikinovak, sans rien dedans.
Première conclusion
Tentons prudemment une première conclusion. Lorsqu’un périphérique amovible est inséré, ses
données sont accessibles en dessous du répertoire /run/media/<utilisateur>/, dans un répertoire
vraisemblablement créé à la volée par le système et qui correspond au nom du volume. Vrai ou faux ?
C’est vrai... à condition de se retrouver dans un environnement graphique. Si notre bureau Xfce était
une voiture, il serait équipé de toute une série de gadgets comme le correcteur électronique de
trajectoire, l’ABS, le GPS, etc. Au quotidien, il n’y a rien à redire sur ces assistants de conduite, à
condition qu’ils fonctionnent correctement et qu’ils augmentent effectivement notre confort
d’utilisation. En revanche, si l’on veut savoir ce qui se cache sous le capot et comprendre comment
ça se passe dans le moteur, il vaut mieux changer de voiture et monter dans une vieille 4L, du moins
dans un premier temps.
Petit retour à l’âge de pierre
C’est précisément ce que nous allons faire : transformer notre installation Linux en vieille 4L, du
moins temporairement. Pour désactiver les assistants et passer en mode manuel, rien n’est plus
simple. Il suffit de basculer en niveau d’exécution 3. Éditez la valeur correspondante de initdefault
dans /etc/inittab et redémarrez votre machine :
id:3:initdefault:
Reconnectez-vous en mode console et retentez l’expérience. Insérez un DVD, un CD-Rom ou une clé
USB et voyez s’il se passe quelque chose. Oui, mais où ?
$ ls /run/media/kikinovak
/bin/ls: impossible d'accéder à /run/media/kikinovak: Aucun fichier ou dossier de ce type
$ ls /run/media/
/bin/ls: impossible d'accéder à /run/media/: Aucun fichier ou dossier de ce type
$ ls /run/
lock/ lvm/ mount/ udev/
L’arborescence /run/media semble avoir disparu. Qu’à cela ne tienne, nous allons donc partir de rien.
Nos ancêtres ne possédaient pas de four à micro-ondes, vivaient dans des cavernes sans électricité et
chassaient l’ours à mains nues. Voyons comment ils s’y prenaient pour accéder aux systèmes de
fichiers amovibles sous Unix.
Les fichiers de périphérique
Pour commencer, jetez un œil au répertoire /dev. Son nom provient du mot device qui signifie
« périphérique ». Faites un petit ls pour en afficher le contenu. La première chose qui vous saute aux
yeux, c’est la couleur de tous ces fichiers : jaune ! Ce ne sont vraisemblablement pas des fichiers
comme tous les autres. Cette première suspicion est d’ailleurs étayée par l’affichage détaillé :
# ls -l /dev/sda
brw-rw---- 1 root disk 8, 0 nov. 18 07:01 /dev/sda
# ls -l /dev/input/mice
crw-rw---- 1 root root 13, 63 nov. 18 07:01 /dev/input/mice
Les fichiers contenus dans /dev sont des fichiers de périphérique, device files en anglais. Chacun
représente (ou symbolise) un périphérique bien spécifique sur votre système. Ils ne contiennent pas
de données à proprement parler, mais servent à communiquer avec le noyau.
Dans l’affichage détaillé, les lettres b et c différencient respectivement les périphériques de type bloc
(block devices) et ceux de type caractère (character devices) :
• Le disque dur, par exemple, est un périphérique bloc : il lit ou écrit des données sous forme de
blocs de taille fixe.
• La souris, le clavier, la console ou encore la carte audio sont des périphériques caractère : ils
lisent ou écrivent un flux d’octets en série.
Quant aux deux chiffres qui apparaissent avant la date, ce sont les numéros majeur et mineur :
# ls -l /dev/sda?
brw-rw---- 1 root disk 8, 1 nov. 18 07:01 /dev/sda1
brw-rw---- 1 root disk 8, 2 nov. 18 07:01 /dev/sda2
Pour la machine sur laquelle j’écris ces lignes, c’est sr0. Il se peut que chez vous, ce soit scd0, sdb ou
autre chose, mais peu importe. La cible des liens symboliques /dev/cdrom et/ou /dev/dvd vous le dira.
Insérez par exemple un CD-Rom (ou DVD) d’installation dans le lecteur et – toujours en tant que root
– invoquez la commande suivante, en prenant soin de remplacer /dev/sr0 par le fichier de périphérique
correspondant à votre lecteur. Comme vous vous en doutez, vous pouvez bien évidemment remplacer
/dev/sr0 par un des liens symboliques correspondants /dev/cdrom ou /dev/dvd :
Effectivement, /mnt/cdrom contient les données du premier CD-Rom d’installation. Naviguez un peu
dans les répertoires avec cd, vous verrez que tout y est. Le CD est effectivement « monté » sur
/mnt/cdrom. Voici quelques explications sur la commande :
Démonter le CD ou le DVD
Pour procéder en sens inverse, c’est-à-dire pour retirer le contenu du DVD de notre système de
fichiers, il suffit de le « démonter ». Pour ce faire, placez-vous en-dehors de l’arborescence de
/mnt/cdrom (par exemple, en invoquant cd sans arguments) et invoquez la commande suivante :
# umount -v /mnt/cdrom
/dev/sr0 a été démonté
L’option -v demande simplement à la commande umount de nous tenir informés de ce qu’elle fait. Jetez
un œil dans /mnt/cdrom :
# ls /mnt/cdrom
Il n’y a plus rien. Le répertoire est désormais vide. Il semblerait que nous ayons réussi manuellement,
en mode console, le montage et le démontage d’un périphérique. Avant d’aborder les questions de
détails, essayons de faire la même chose avec notre clé USB.
Oui, ce serait possible. C’est assez fréquent que l’on fasse les choses de manière passablement
compliquée, pour se rendre compte ensuite (parfois des années plus tard) qu’il existe un autre moyen,
beaucoup plus élégant et surtout plus simple. C’est le cas ici.
Lorsque vous branchez un périphérique USB, le noyau en prend note dans son journal, le fichier
/var/log/messages. Regardez ce que ce fichier contient :
# cat /var/log/messages
Du charabia ? Je suis d’accord avec vous. Mais peut-être pas si charabia que ça, comme vous allez
le voir tout de suite. Rappelez-vous la commande tail que nous avons utilisée dans le chapitre 6, pour
afficher la fin d’un fichier :
# tail /var/log/messages
Le comportement par défaut de tail ressemble à celui de head. Il affiche dix lignes, pas plus.
Cependant, une option bien particulière permet de suivre en direct l’évolution d’un fichier lorsque
des données s’y ajoutent :
# tail -f /var/log/messages
Maintenant, branchez votre clé USB et attendez un peu. Au bout de quelques secondes, vous verrez
apparaître une série de messages ressemblant à ce qui suit :
...
Nov 22 10:00:07 slackbox kernel: [ 3070.883598] sdb: sdb1
Nov 22 10:00:07 slackbox kernel: [ 3070.888344] sd 4:0:0:0: [sdb] Attached SCSI
removable disk
...
Le noyau nous envoie une bonne quinzaine de lignes de messages, dans lesquelles nous retrouvons
facilement l’information qui nous intéresse. Le fichier de périphérique correspondant à notre clé USB
est donc sdb et la partition contenant le système de fichiers est sdb1. Attention, sur votre machine ce
sera peut-être autre chose : sdc1, sdd1, sde1, etc. Appuyez sur Ctrl+C pour interrompre tail -f et
récupérer la main sur la console. Si vous êtes scrupuleux, vérifiez l’information délivrée par le
noyau :
# ls -l /dev/sdb1
brw-rw---- 1 root plugdev 8, 17 nov. 22 10:00 /dev/sdb1
Là encore, remplacez /dev/sdb1 par le fichier de périphérique symbolisant votre clé USB :
# mount -v -t vfat /dev/sdb1 /mnt/hd
/dev/sdb1 on /mnt/hd type vfat (rw)
Essayons de traduire cette dernière commande en français : « monte (mount) la clé USB (/dev/ sdb1) qui
contient un système de fichiers FAT (-t vfat) sur le point de montage /mnt/hd (/mnt/hd) et dis-nous ce
que tu fais (-v). »
Voyons si le contenu de la clé apparaît bien en dessous de /mnt/hd :
# ls /mnt/hd
ANNOUNCE.14_1* PACKAGES.TXT*
BOOTING.TXT* patches/
ChangeLog.txt* READ_DVD.TXT*
CHANGES_AND_HINTS.TXT* README_CRYPT.TXT*
CHECKSUMS.md5* README.initrd*
CHECKSUMS.md5.asc* README_LVM.TXT*
COPYING* README_RAID.TXT*
COPYING3* README.TXT*
...
Bravo ! Il ne nous reste plus qu’à démonter la clé. Sortons de l’arborescence /mnt/hd (cd sans
arguments, par exemple), puis invoquons :
# umount -v /mnt/hd
/dev/sdb1 a été démonté
Là aussi, nous pouvons vérifier que /mnt/hd ne contient plus rien après le démontage du périphérique.
Maintenant, à partir de /mnt/cdrom, essayez de démonter le lecteur. Voyez ce que le système vous dit :
# umount /mnt/cdrom
démontage : /mnt/cdrom : périphérique occupé.
(Dans certains cas, des infos sur les processus l'utilisant sont récupérables par lsof(8) ou fuser(1))
Tant que vous vous trouvez dans l’arborescence /mnt/cdrom, vous ne pourrez donc tout simplement pas
procéder au démontage.
Si tout se passe bien, le tiroir du lecteur CD/DVD s’ouvre. Pour le refermer, invoquez simplement
ceci :
# eject -t
La commande eject combine le démontage et l’éjection d’un périphérique. Autrement dit, si votre
DVD est monté, ce n’est pas la peine d’invoquer umount ; eject s’en charge. Comme umount, eject accepte
en argument le nom d’un périphérique, à condition que celui-ci soit éjectable bien sûr. Invoquée sans
arguments, la commande agit sur le périphérique défini par défaut. Pour le connaître, utilisez l’option
-d :
# eject -d
eject: périphérique par défaut: `cdrom'
Normalement, eject fonctionne avec les lecteurs CD/DVD et les graveurs, ainsi qu’avec les lecteurs
ZIP, même si ces derniers sont tombés en désuétude.
Si vous avez tout bien suivi jusqu’ici, la lecture de cette information ne devrait pas vous poser trop
de problèmes. La ligne nous dit simplement que le périphérique /dev/sr0 est monté sur /mnt/cdrom, que
le système de fichiers du périphérique est l’ISO 9 660 et qu’il est monté en lecture seule (ro pour
read only).
Si je monte ma clé USB sur /mnt/hd et si j’invoque mount, j’obtiens ceci :
/dev/sdb1 on /mnt/hd type vfat (rw)
Dans ce cas, l’information se lit comme suit : /dev/sdb1 est monté sur /mnt/hd, le périphérique est
formaté en FAT et il est accessible en lecture et écriture (rw pour read/write).
Par ailleurs, le fichier /etc/mtab donne les mêmes informations sur les périphériques montés que mount
sans argument :
# cat /etc/mtab
/dev/sda2 / ext4 rw 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
tmpfs /dev/shm tmpfs rw 0 0
/dev/sr0 /mnt/cdrom iso9660 ro 0 0
/dev/sdb1 /mnt/hd vfat rw 0 0
Là encore, notez la présence du CD-Rom et de la clé USB sur les deux dernières lignes, montés
respectivement sur /mnt/cdrom et /mnt/hd.
Il reste encore beaucoup de choses à dire sur le montage des systèmes de fichiers, notamment sur
l’organisation de ces derniers sur le ou les disque(s) dur(s). Je vous propose de voir tout cela un peu
plus loin, à l’occasion de l’installation en mode expert. Celle-ci nous fournira l’occasion de mettre
en application directe des compétences nouvellement acquises. Pour l’instant, laissez reposer un peu
la pâte et digérez ce que vous avez appris jusqu’ici.
13
Qu’est-ce qu’une archive compressée et à quoi cela peut-il bien servir ? Si le terme de
compression ne vous évoque absolument rien, imaginez une grande marmite pleine de soupe. Vous
lui faites subir toute une série de processus, vous la déshydratez... et vous obtenez une boîte de
bouillons-cubes que vous pouvez transporter assez aisément.
Autre image, qui illustre davantage le terme d’archivage, pensez à votre dernier déménagement.
Toute la vaisselle, toutes les casseroles, tous les bibelots sur les étagères se sont retrouvés bien
empaquetés et ficelés dans des cartons. Il suffisait alors d’appeler les copains pour faire quelques
allers et retours entre l’appartement et le camion.
Les différents formats d’archivage
Les archives compressées sont omniprésentes dans le quotidien informatique et elles sont utilisées à
des fins très variées. À titre d’exemple, lorsque vous souhaitez envoyer vos photos de vacances par
courrier électronique, il sera bien plus commode d’envoyer une archive plutôt que d’ajouter chaque
photo individuellement en pièce jointe. Étant donné que de nos jours, la taille moyenne des photos –
c’est-à-dire leur poids en mégaoctets – est assez importante, vous utiliserez plutôt un service de
transfert de fichiers en ligne et, dans certains cas, la confection préalable d’une archive sera
obligatoire. Une archive compressée représente également le format idéal pour effectuer une
sauvegarde de vos données. Enfin, l’utilisation de fichiers compressés pour le transfert sur Internet
vous fait économiser de la bande passante.
Si vous avez l’habitude de Windows, vous avez certainement déjà croisé des fichiers .zip et .rar sur
votre disque. Ces formats ne sont pas inconnus à Linux – et nous allons voir comment les traiter –
mais les deux formats d’archives compressées les plus largement répandus sous Linux sont les
fichiers .tar.gz et .tar.bz2. Derrière ces extensions, quelque peu énigmatiques pour un néophyte, se
cachent en réalité trois programmes, trois petits outils. tar rassemble plusieurs fichiers et répertoires
en une archive, gzip et bzip2 se chargent de la compression.
Ces formats sont très bien gérés par les différents systèmes d’exploitation. Linux sait gérer les
archives au format .zip ou .rar et, inversement, lorsque vous travaillez sous Windows, vous trouverez
des outils libres pour traiter les archives au format .tar.gz ou .tar.bz2. Dans cette section, nous nous
concentrerons sur les deux principaux formats natifs de Linux. Nous aurons l’occasion de voir les
autres plus loin.
Compresser et décompresser un fichier
L’affichage détaillé nous montre qu’il s’agit d’un fichier texte assez important en termes de taille : 82
kilo-octets. C’est pour cela que je l’ai choisi. Essayons de le compacter :
$ gzip services
gzipremplace le fichier d’origine par une version plus compacte, comportant l’extension de fichier
supplémentaire .gz :
$ ls -lh services.gz
-rw-r--r-- 1 kikinovak users 24K Feb 6 09:45 services.gz
Dans cet exemple, la compression est assez conséquente : le fichier résultant est environ trois fois et
demi plus petit que l’original.
Effectivement, le taux de compression est légèrement supérieur : le fichier compressé ne pèse plus
que 22 kilo-octets avec bzip2, contre 24 kilo-octets avec gzip.
Pour décompresser un fichier compacté à l’aide de , nous avons également le choix entre deux
bzip2
commandes, qui ont exactement le même effet :
$ bzip2 -d services.bz2
Ou :
$ bunzip2 services.bz2
Manipuler les archives avec tar
Nous allons rassembler tous ces fichiers contenus dans ~/config pour en constituer une archive en
utilisant la commande tar :
$ tar -cvf config.tar config/
config/
config/v4l.conf
config/named.conf
config/hplip.conf
config/57-dejavu-sans.conf
config/fonts.conf
config/90-ttf-telugu-fonts.conf
config/30-urw-aliases.conf
config/xboard.conf
config/60-latin.conf
...
Le nom du programme (tape archiver, en anglais) révèle son utilisation initiale : tar a servi en
premier lieu à la gestion d’archives sur bande magnétique. Voici une petite explication de l’exemple
que nous venons de voir :
• tar reçoit l’ordre de créer (create) une archive avec l’option -c.
• La commande nous dit ce qui se passe en coulisse avec l’option -v.
• Le premier argument (config.tar) sera interprété comme le nom de l’archive grâce à l’option -f (file
ou fichier).
Voici un exemple plus général pour vous familiariser avec la syntaxe de tar pour la création d’une
archive. Nous allons créer trois fichiers fichier1, fichier2 et fichier3 et les rassembler dans une archive
archive.tar :
$ touch fichier1 fichier2 fichier3
$ tar -cvf archive.tar fichier1 fichier2 fichier3
fichier1
fichier2
fichier3
Dans l’autre sens, c’est donc l’option -x (pour extract) qui procède au dépaquetage de l’archive.
Et avec bzip2 :
$ gunzip config.tar.gz
$ bzip2 config.tar
$ ls -lh config.tar.bz2
-rw-r--r-- 1 kikinovak users 193K févr. 9 10:24 config.tar.bz2
Cependant, il est possible de faire encore plus simple. tar comporte une série d’options qui
permettent de créer une archive et de la compresser à la volée. Effacez les archives compressées de
l’exercice précédent et gardez seulement le répertoire ~/config et son contenu. Maintenant, créez une
archive compressée avec les options suivantes :
$ tar -cvzf config.tar.gz config/
...
$ ls -lh config.tar.gz
-rw-r--r-- 1 kikinovak users 241K févr. 9 10:45 config.tar.gz
Si vous souhaitez créer une archive compressée avec bzip2, il suffit de remplacer l’option -z par -j :
$ tar -cvjf config.tar.bz2 config/
...
$ ls -lh config.tar.bz2
-rw-r--r-- 1 kikinovak users 193K févr. 9 10:45 config.tar.bz2
Les options de tar sont souvent utilisées sans le tiret - initial. Vous pouvez donc écrire
indifférement tar -xvjf ou tar xvjf, cela n’a aucune incidence sur le fonctionnement de la commande.
14
Il existe une minorité d’utilisateurs irréductibles qui se contentent de considérer leur ordinateur
comme une machine à écrire glorifiée. On allume le PC le matin, on saisit des textes, des tableaux,
des factures, toutes sortes de documents. Pour les faire parvenir au destinataire, il suffit de les
imprimer, de les glisser dans une enveloppe et de coller un timbre dessus. On éteint la machine le
soir, et la Poste se charge du reste. Dans cette catégorie d’utilisateurs en voie d’extinction,
certains n’hésitent pas à se montrer plus téméraires dans l’emploi des nouvelles technologies et,
dans ce cas, les documents imprimés sont envoyés directement par fax.
Bien sûr, rien ne vous empêche d’utiliser votre PC en mode « autiste ». Dans mon quotidien
professionnel, il m’est arrivé de croiser ces « ordinosaures », généralement équipés de Windows
XP ou 98, reliés à aucun réseau, ornés de Post-It du genre « Interdiction formelle d’utiliser des
disquettes et des clés USB » (par peur des virus), curieusement increvables comme la vieille 4L de
mon voisin.
Cependant, je ne doute pas que vous ne fassiez partie de la large majorité des utilisateurs qui
souhaitent profiter des moyens de communication modernes comme Internet, le courrier
électronique, la messagerie instantanée, la vidéoconférence, sans parler de la possibilité d’avoir
plusieurs machines qui communiquent entre elles, d’installer des logiciels en un tour de main sans
avoir à chercher un obscur CD d’installation, de bénéficier de mises à jour, etc.
Une grande confusion
La communication est un besoin essentiel pour l’être humain, au même titre que respirer, boire et
manger. De nos jours, on peut filer la métaphore et légitimement considérer que la communication
avec d’autres machines fait partie du minimum syndical que l’on peut exiger d’un ordinateur. Le hic,
c’est que la communication entre les ordinateurs est une chose très complexe, probablement autant
que celle entre les humains. Ça parle plusieurs langues, ça utilise des patois différents, ça crée des
malentendus, ça entend de travers, ça monopolise le discours, c’est sourd comme un pot et parfois
stupide comme un pot. Bref, c’est la pagaille.
Là encore, il existe une série d’ouvrages sur le sujet, toute la gamme allant de « pour les nuls » à
« pour les pros ». En règle générale, ils comprennent une histoire exhaustive des réseaux depuis la
guerre froide et ARPANET, suivie d’une introduction détaillée à l’algèbre binaire, octale et
hexadécimale. Vous feuilletez ces livres de plus en plus vite, puis vous les reposez en vous sentant
progressivement envahi par une vague nausée existentielle. MAC ? ARP ? IP ? TCP ? UDP ?
DHCP ? DNS ? NTP ? HTTP ? FTP ? Comment vous en sortir ?
Je prends le parti de vous initier aux réseaux et à leur fonctionnement par une approche résolument
pratique, en mettant les mains à la pâte, avec un minimum de théorie. Nous avancerons par étapes
successives, en partant du cas de figure le plus simple. Puis, peu à peu, lorsque vous aurez digéré les
notions de base, je vous présenterai des configurations un peu plus sophistiquées, quitte à rectifier le
tir et à reprendre les simplifications abusives dont je me serai rendu coupable. Le tout part d’un
exemple très concret, le cas de figure le plus simple et en même temps le plus fréquent : un ordinateur
relié à Internet par le biais d’un modem routeur ADSL.
Prérequis matériel et logiciel
Lorsque vous souscrivez un abonnement Internet ADSL auprès d’un des grands fournisseurs d’accès,
celui-ci vous fournit un modem routeur. Que vous soyez abonné chez Nerim, Orange, SFR ou autre, le
principe technique de la connexion à Internet sera le même. Ce qui changera, c’est la forme du boîtier
de votre modem et quelques menus détails dans la configuration.
Figure 14–1
Un modem routeur Technicolor, tel qu’il est fourni par le fournisseur d’accès Nerim
Figure 14–2
Une Livebox, le modem routeur fourni par Orange
Questions de câblage
Le modem routeur est peut-être équipé d’un point d’accès WiFi, mais nous n’allons pas l’utiliser tout
de suite. Dans un premier temps, notre configuration de base nécessitera en tout et pour tout deux
câbles (sans compter l’alimentation du modem, bien sûr) :
• Le câble reliant la prise téléphonique au modem. Il vous faudra probablement songer à installer un
filtre. Normalement, une fiche explicative livrée avec le modem détaille ce genre de chose de
manière assez claire.
• Le câble Ethernet reliant le modem à la carte Ethernet du PC.
Figure 14–3
Un câble Ethernet
La carte Ethernet
Si nous procédons méthodiquement, nous devons d’abord nous poser la question : l’ordinateur
dispose-t-il d’une carte Ethernet ? Si oui, est-elle branchée correctement ? Bien sûr, nous pouvons
jeter un coup d’œil sur les branchements du PC, ce qui nécessite parfois de grimper derrière le
meuble où il est rangé. Alternativement, nous pouvons rester assis devant et nous contenter
d’invoquer la commande suivante :
$ /sbin/lspci | grep -i eth
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168 PCI Express Gigabit Ethernet
controller (rev 02)
Le résultat de cette dernière commande nous montre que, apparemment, le noyau reconnaît la carte
Ethernet. Dans le cas contraire, nous aurions eu droit à un message d’erreur de ce genre :
eth0: unknown interface: No such device
Ce n’est pas le cas (heureusement) et nous savons que le noyau est capable de gérer le matériel avec
le module r8169. Il est peut-être utile de s’attarder un moment sur cette notion de « module ».
Les modules se trouvent dans /lib/modules, dans le répertoire correspondant à la version du noyau en
cours. Concrètement, le pilote de notre carte se trouve donc dans une des deux arborescences
/lib/modules/4.4.14 ou /lib/modules/4.4.14-smp, dans le sous-répertoire kernel/drivers/net/ethernet/realtek et
c’est le fichier r8169.ko. C’est précisément ce fichier (.ko signifie kernel object) qui est chargé par le
noyau pour gérer une carte Ethernet équipée d’une puce Realtek 8168.
Prenons deux autres exemples pour mieux illustrer ceci :
• un portable Asus S300 (slackbook-pro.microlinux.lan) ;
• un serveur HP Proliant ML40 (nestor.microlinux.lan).
Le portable est équipé d’une carte Ethernet Atheros AR 8161 :
[root@slackbook-pro:~] # lspci | grep -i eth
03:00.0 Ethernet controller: Qualcomm Atheros AR8161 Gigabit Ethernet (rev 10)
À première vue, les messages de démarrage n’affichent rien qui corresponde à ces deux cartes :
[root@nestor:~] # dmesg | grep -i eth
Si nous les épluchons depuis le début (dmesg | less), nous nous apercevons que le terme recherché
(grep -i eth) n’était pas approprié cette fois-ci. Apparemment, le message correspondant du noyau
peut varier en fonction du type de carte :
[root@nestor:~] # dmesg | grep -i network
e1000e: Intel(R) PRO/1000 Network Driver - 2.3.2-k
e1000e 0000:02:00.0 eth0: Intel(R) PRO/1000 Network Connection
e1000e 0000:03:00.0 eth1: Intel(R) PRO/1000 Network Connection
Les deux cartes en question sont donc gérées par le module e1000e, situé dans le sous-répertoire
kernel/drivers/net/ethernet/intel/e1000e/ de l’arborescence /lib/modules/4.4.14/.
Principe de fonctionnement des réseaux
Figure 14–4
Invoquée sans autre argument, la commande ifconfig affiche la configuration des interfaces réseau.
Le résultat de la commande ifconfig se décompose en deux sections dans notre exemple : eth0 et lo. La
partie lo (comme localhost) désigne la boucle locale, une interface qui représente approximativement
le journal intime de votre PC et qui lui permet de soliloquer. Laissons-la de côté pour l’instant.
L’interface qui intéresse les bricoleurs de réseau comme nous, c’est tout ce qui commence par les
lettres magiques eth comme « Ethernet ». Considérons donc la section eth0 et essayons de lire les
informations qui nous concernent.
$ /sbin/ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.10 netmask 255.255.255.0
broadcast 192.168.0.255
inet6 fe80::21e:c9ff:fe43:a7bf prefixlen 64
scopeid 0x20<link>
ether 00:1e:c9:43:a7:bf txqueuelen 1000 (Ethernet)
...
F UTUR IPv6
Vous vous êtes peut-être demandé ce que peut bien signifier inet6 fe80::21e:c9ff:fe43:a7bf. Il s’agit là
tout simplement d’un nouveau protocole d’adressage IP, dans la mesure où un protocole réseau mis
au point vers la fin des années 1990 peut être qualifié de « nouveau ». Les adresses IP que nous
traitons dans ce chapitre font partie du protocole IPv4 à 32 bits : grosso modo, quatre nombres de
0 à 255, en notation décimale, séparés par des points. Le hic avec ce protocole, c’est que le
nombre d’adresses distinctes possibles est non seulement limité, mais véritablement épuisé. Les
adresses IP existantes ont effectivement été attribuées. IPv6 constitue le remède à cette pénurie.
C’est un protocole à 128 bits ; le nombre d’adresses possibles passe donc de 232 à 2128. En
contrepartie, les adresses IP du futur ressembleront à quelque chose de ce genre :
1fff:0000:0a88:85a3:0000:0000:ac1f:8001
Il va falloir s’y faire un jour...
Les adresses IP
Un peu de pratique
Voici une petite expérience amusante pour illustrer la notion d’adresse IP. Prenons au hasard un nom
de site web suffisamment connu, par exemple www.google.fr. Ouvrons un terminal et invoquons la
commande suivante :
$ host www.google.fr
www.google.fr has address 216.58.209.67
www.google.fr has IPv6 address 2a00:1450:4007:80b::2003
La commande me retourne deux réponses : une adresse IPv4 216.58.209.67 et une adresse IPv6 dont je
ne me préoccupe pas.
Maintenant, ouvrez le navigateur Mozilla Firefox (Applications>Internet>Firefox), effacez le
contenu de la barre d’adresses et mettez-y http://216.58.209.67. Que constatez-vous ?
Figure 14–5
Voici la machine 216.58.209.67, Google pour les intimes.
Notez au passage que Firefox – comme tous les navigateurs modernes – remplace aussitôt l’adresse
IP saisie dans la barre d’adresses par le nom de domaine correspondant, dès l’ouverture de la page.
L’expérience ne fonctionne pas avec n’importe quel nom de domaine, puisqu’elle dépend de la
configuration du serveur web correspondant. Vous pouvez quand même la retenter avec d’autres sites,
par exemple www.centos.org ou www.xfce.org.
Sans aller chercher plus loin, vous commencez à avoir une idée un peu plus concrète de l’utilité
d’une adresse IP. Maintenant, revenons à notre réseau local et à notre machine. J’ai les informations
suivantes :
• Mon adresse IP est 192.168.0.10.
• Mon masque de sous-réseau est 255.255.255.0.
Un peu de théorie
Chaque adresse IP se subdivise en une partie réseau et une partie hôte. Prenons deux exemples.
• J’ai un masque de sous-réseau de 255.255.255.0. Cela signifie que mon réseau est 192.168.0.quelque
chose. La valeur de quelque chose peut varier de 1 à 254 ; je peux donc configurer un réseau de 254
machines différentes, avec des adresses IP allant de 192.168.0.1 à 192.168.0.254. Ces machines
pourront toutes communiquer entre elles.
• Si mon masque de sous-réseau était de 255.255.0.0, cela signifierait que mon réseau serait
192.168.truc.muche. Les valeurs pouvant varier respectivement de 0 à 255 pour truc et de 1 à 254
pour muche, j’obtiendrais un total de 256 × 254 = 65 024 machines possibles dans mon réseau,
avec des adresses IP allant de 192.168.0.1 à 192.168.255.254. Ces machines pourront également toutes
communiquer entre elles.
Un sous-réseau est un groupe de machines dont les adresses IP respectent un certain ordre. Il est
défini à l’aide de deux éléments :
• le réseau (network prefix) : quelque chose comme 192.168.0.0 ou 10.23.2.0.
• le masque de sous-réseau (subnet mask) : quelque chose comme 255.255.255.0 ou 255.255.0.0.
À première vue, on ne voit pas trop comment ces deux éléments sont censés définir l’ensemble des
adresses IP d’un sous-réseau. Or, il suffit de les convertir en binaire pour mieux comprendre. Le
masque définit l’emplacement des bits dans une adresse IP qui sont communs au sous-réseau. Voici
par exemple les formes binaires de 192.168.0.0 et 255.255.255.0 :
192.168.0.0 : 11000000 10101000 00000000 00000000
255.255.255.0 : 11111111 11111111 11111111 00000000
Dans chacun des exemples, je peux faire varier les bits qui ne sont pas en gras (la partie à droite)
pour obtenir une adresse IP valide dans le sous-réseau.
Établir un contact avec une machine distante : ping
Retenons le fait que les machines d’un même réseau sont capables de communiquer entre elles. Pour
l’instant, notre réseau ne comporte que deux machines, si l’on peut dire : le PC et le routeur. En effet,
le routeur est aussi une machine (ou un hôte), même s’il n’est doté ni d’un clavier ni d’un écran. Il
contient un petit système d’exploitation embarqué (Linux, eh oui !) et il s’acquitte des quelques tâches
simples pour lesquelles il est construit.
Normalement, un routeur est livré avec une adresse IP fixe préconfigurée par défaut, indiquée sur la
petite note explicative qui l’accompagne. À titre d’exemple, les Livebox de chez Orange sont souvent
préconfigurées avec une adresse IP 192.168.1.1. Dans notre cas, le routeur Netgear livré par Nerim a
une adresse IP par défaut 192.168.0.1. Voyons voir si j’arrive à établir une liaison avec le routeur. Pour
cela, j’utilise la commande ping, qui dit en quelque sorte « Allô, il y a quelqu’un ? » :
$ ping -c 4 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=0.354 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=0.361 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=64 time=0.340 ms
64 bytes from 192.168.0.1: icmp_seq=4 ttl=64 time=0.334 ms
Le routeur a répondu !
La colonne Destination nous fournit des préfixes de réseaux et la colonne Genmask affiche le masque de
sous-réseau correspondant. Dans l’exemple, deux réseaux sont définis :
• 0.0.0.0/0.0.0.0 correspond à l’ensemble des adresses Internet.
• 192.168.0.0/255.255.255.0 correspond à notre réseau local.
La lettre U dans la colonne Flags indique que le réseau en question est actif (Up) et la lettre G signifie
que tout le trafic pour le réseau en question doit nécessairement être envoyé à la passerelle
(Gateway). Enfin, la colonne Gateway fait bien apparaître l’adresse IP de notre routeur. Nous
reviendrons plus en détail sur la configuration de celui-ci.
À RETENIR
S’il ne fallait retenir que cela : dans un réseau local privé, la passerelle vous permet de
communiquer avec Internet.
La configuration des interfaces réseau de notre machine est gérée par le fichier /etc/rc.d/ rc.inet1 .
Il s’agit d’un fichier texte ASCII exécutable, c’est-à-dire d’un script shell. Ce qui m’importe ici,
c’est qu’il soit humainement lisible et que je puisse afficher son contenu à l’aide d’outils comme cat,
less, head ou de mon éditeur de texte préféré :
# head -n 4 /etc/rc.d/rc.inet1
#! /bin/sh
# /etc/rc.d/rc.inet1
# This script is used to bring up the various network
# interfaces.
Si nous relançons ce script, nous obtenons la même série de messages que ceux qui s’affichaient au
démarrage :
# /etc/rc.d/rc.inet1 restart
...
eth0: soliciting a DHCP lease
eth0: offered 192.168.0.10 from 192.168.0.1
eth0: leased 192.168.0.10 for 86400 seconds
eth0: adding route to 192.168.0.0/24
eth0: adding default route via 192.168.0.1
...
En clair, notre machine requiert un bail DHCP (DHCP lease). Le serveur DHCP à l’adresse
192.168.0.1 attribue alors l’adresse 192.168.0.10 à notre machine et ce pour une durée d’un jour (86 400
secondes). Enfin, l’adresse IP de la passerelle 192.168.0.1 (default route) est également définie.
Votre routeur intègre un serveur DHCP. C’est lui qui se charge de configurer votre PC par magie au
moment du démarrage.
Figure 14–6
L’interface de configuration du routeur
• L’Adresse IP du routeur (192.168.0.1 dans l’exemple) est préconfigurée, mais vous voyez qu’elle
n’est pas immuable.
AVERTISSEMENT
Attention tout de même : ce n’est pas pour rien que nous sommes en mode Avancé dans la
configuration. Pour l’instant, je vous conseille de ne pas trop modifier les données dans les
champs, sous peine de ne plus pouvoir utiliser votre accès à Internet. Essayons d’abord de
comprendre.
Là encore, il s’agit bien d’un fichier texte et nous pouvons donc en afficher le contenu avec les outils
Unix habituels ou avec un éditeur de texte simple.
En règle générale, les fichiers de configuration sont amplement commentés par Patrick Volkerding et
l’on peut considérer que ces commentaires constituent une partie importante de la documentation de
Slackware :
# less /etc/rc.d/rc.inet1.conf
...
# This file contains the configuration settings for network
# interfaces. If USE_DHCP[interface] is set to "yes", this
# overrides any other settings.
#
# If you don't have an interface, leave the settings null ("").
# You can configure network interfaces other than eth0,eth1...
# by setting IFNAME[interface] to the interface's name. If
# IFNAME[interface] is unset or empty, it is assumed you're
# configuring eth<interface>.
...
Les valeurs respectives de IPADDR[0] et NETMASK[0] ne sont pas renseignées, ce qui est normal, étant
donné qu’elles nous sont fournies par le serveur DHCP. Il en va de même pour GATEWAY, que vous
trouverez un peu plus bas dans le fichier :
# Default gateway IP address:
GATEWAY=""
Il ne nous manque plus que l’adresse IP d’un serveur DNS. Comment connaître ce dernier,
d’ailleurs ? C’est le fichier /etc/resolv.conf qui nous le dira :
# cat /etc/resolv.conf
# Generated by dhcpcd from eth0.dhcp
# /etc/resolv.conf.head can replace this line
nameserver 192.168.0.1
# /etc/resolv.conf.tail can replace this line
Configuration statique
Jusque-là, c’est le serveur DHCP qui a « décidé » de la configuration IP de notre machine. Il est
possible de faire autrement, en configurant notre PC de manière statique.
Nous avons vu que le minimum pour configurer une connexion à Internet, c’était une adresse IP et un
masque de sous-réseau pour le PC, une adresse IP de passerelle et – au moins – une autre pour un
serveur DNS. Oublions allègrement notre serveur DHCP et faisons les choses nous-mêmes, en éditant
/etc/rc.d/rc.inet1.conf.
Tout d’abord, il faut indiquer à rc.inet1.conf de ne plus configurer la carte Ethernet par le biais du
serveur DHCP, mais statiquement. Dans un premier temps, on va donc supprimer USE_DHCP[0]="yes" pour
laisser le champ vide :
USE_DHCP[0]=""
À présent, plus rien ni personne ne nous fournira d’adresse IP. C’est donc à nous de nous en charger.
Veillez à bien respecter les principes énoncés dans l’encadré ci-après.
Dans notre exemple, je choisis l’adresse IP 192.168.0.2 pour ma machine. D’une part, cette adresse
n’est utilisée par aucune autre machine dans le réseau. D’autre part, elle se situe bien en dehors de la
plage d’adresses attribuées par le serveur DHCP. Pour ce faire, j’indique ceci dans rc.inet1.conf :
# Config information for eth0:
IPADDR[0]="192.168.0.2"
NETMASK[0]="255.255.255.0"
USE_DHCP[0]=""
DHCP_HOSTNAME[0]=""
Dans certains cas de figure, votre fournisseur d’accès vous indique l’adresse d’un ou deux serveurs
DNS publics. Le fichier /etc/resolv.conf pourra donc ressembler à ceci :
nameserver 195.5.209.150
nameserver 194.79.128.150
À présent, testez la connexion en envoyant un ping vers une machine extérieure :
$ ping -c 4 www.google.fr
Figure 14–7
Une multiprise pour un réseau câblé : un switch
Au cas où votre modem routeur n’offre pas assez de branchements, la liaison physique des câbles
s’effectue avec ce que l’on appelle en bon français un switch, une sorte de multiprise pour câbles
réseau. Un switch neuf vaut une dizaine d’euros, peut-être un petit peu plus, mais n’allez pas investir
cinquante euros ou même beaucoup plus dans de l’équipement haut de gamme pour un usage
domestique. Techniquement parlant, c’est un peu plus compliqué, mais pour ce que nous entreprenons,
vous pouvez très bien considérer un switch aussi simplement que la multiprise 220 volts que vous
utilisez pour brancher le tuner, le lecteur CD, le lecteur de cassettes et l’ampli à l’unique prise
derrière le meuble Hi-Fi.
La connexion des différents composants est un jeu d’enfant. D’un côté, reliez la prise Ethernet du
modem routeur avec l’un des ports du switch, peu importe lequel. Et de l’autre côté, chacun des ports
restants du switch pourra être utilisé pour relier la carte réseau de chaque PC. Précisons que là aussi,
il faut utiliser des câbles plats partout. Certains switchs sont intelligents et « rectifient le tir » si vous
utilisez accidentellement un câble croisé, mais il vaut mieux partir du bon pied.
Nous aurons l’occasion de revenir sur les questions de réseau vers la fin de cet ouvrage, en abordant
les réseaux sans fil. Pour l’instant, restons-en là, car il y a déjà pas mal de choses à assimiler.
Les distributions comme SuSE ou Mageia utilisent également des scripts dans /etc/sysconfig, mais il
s’agit là de distributions qui déconseillent explicitement l’édition manuelle des fichiers de
configuration (en les éditant, vous verrez parfois des commentaires du genre DO NOT EDIT THIS BY
HAND).
La configuration du réseau dans les distributions de la famille Debian (SolydK, SolydX, Mint,
Ubuntu, Kubuntu, Xubuntu, etc.) s’effectue dans /etc/network/interfaces pour l’ensemble des
interfaces réseau.
En règle générale, reportez-vous à la documentation spécifique pour chaque distribution. Vous
verrez qu’une fois que vous aurez compris le principe sous-jacent à la configuration du réseau, les
différences entre les distributions ne sont souvent qu’une simple question de syntaxe. C’est comme
passer d’une Mercedes à une 206 (vécu). Les manettes, les pédales et le frein à main ne sont pas
tout à fait au même endroit, mais après un temps d’adaptation, les différences se font vite oublier.
1. Un client m’a appelé un jour et m’a confié d’une voix terrifiée : « Googol a disparu. »
2. D’où l’expression « administrer un coup de pied »...
15
L’installation et la gestion des logiciels est un domaine qui différencie de manière fondamentale
l’univers de Windows et celui de Linux. Non content de cela, c’est également là que l’on verra
diverses façons de gérer les paquets logiciels selon les familles de distributions Linux.
L’utilisation de Slackware nous sera particulièrement utile ici sur un plan purement pédagogique,
étant donné que sa panoplie de gestionnaires de paquets traditionnels s’avère extrêmement
flexible et robuste au quotidien. Enfin, comparée aux autres distributions, la construction de
paquets logiciels à partir du code source est même relativement simple.
Petit aperçu pour les utilisateurs de Windows
Certains d’entre vous ont peut-être déjà eu l’occasion d’installer un logiciel sous Windows. Pour
installer Mozilla Thunderbird, par exemple, vous vous rendez sur le site web correspondant
(https://www.mozilla.org/fr/thunderbird) et vous cliquez sur Téléchargement gratuit en-dessous de la
présentation du logiciel. Ensuite, vous lancez l’assistant d’installation en double-cliquant sur l’icône
du fichier Thunderbird Setup.exe téléchargé ; vous confirmez successivement les choix par défaut et le
tour est joué. Pour installer par exemple le lecteur multimédia VLC, vous vous rendez sur le site
http://www.videolan.org/vlc, cliquez sur Télécharger VLC, passez la publicité, téléchargez le fichier vlc-
x.y.z-win32.exe, le lancez en double-cliquant dessus, choisissez la langue, acceptez la licence,
définissez le profil par défaut et le dossier cible et vous terminez l’installation.
Le jour où vous ne souhaitez plus utiliser les logiciels en question, vous vous rendez dans le Panneau
de Configuration, ouvrez la rubrique Programmes>Désinstaller un programme, cliquez-droit sur la
ligne du programme, choisissez Désinstaller et le logiciel en question sera supprimé de votre disque
dur. Il n’en restera rien... à part quelques obscurs griffonnages dans la base de registre, résidus
quasiment négligeables, à condition de ne pas répéter trop souvent les opérations d’installation et de
désinstallation.
L’installation de logiciels sous Linux est radicalement différente, à tel point que je n’essaierai même
pas de relever d’éventuelles similitudes comme point de départ de mon explication. Au lieu de cela,
je traiterai la question en revenant à la case départ, ou presque. Là encore, nous mettrons un pied
devant l’autre en appliquant chaque chose apprise sur un exemple pratique. Une fois que vous aurez
saisi les principes de base, nous pourrons comparer les différentes approches.
Anatomie d’un paquet Slackware
Regardons de plus près à quoi ressemblent les paquets logiciels fournis par Slackware. Pour ce faire,
nous pouvons utiliser le DVD d’installation, le jeu de CD-Rom ou les dépôts en ligne. Si j’utilise le
DVD de Slackware64 14.2, je pourrai parcourir son contenu comme suit :
# mount /dev/cdrom /mnt/cdrom
# cd /mnt/cdrom/slackware64/
Bien entendu, rien ne vous empêche de vous servir du navigateur de fichiers Thunar pour parcourir le
support d’installation. À défaut de lecteur optique, vous pouvez toujours lancer votre navigateur web
Mozilla Firefox à l’adresse http://mirrors.slackware.com/slackware/ et parcourir les arborescences
slackware-14.2/ et slackware64-14.2/.
Les répertoires a/, ap/, d/, e/, f/, etc. correspondent chacun à un groupe de paquets Slackware, comme
nous l’avons vu au chapitre 3. Vous constaterez qu’ils contiennent tous une série de fichiers *.txz, *.txt
et *.txz.asc.
Installer un paquet
Lors de l’installation de notre système Slackware, nous avons désélectionné le groupe E, qui contient
le seul paquet emacs. Installez maintenant ce paquet depuis le DVD d’installation. Si vous utilisez le
jeu de CD-Rom, Emacs se trouve sur le premier CD :
# mount /dev/cdrom /mnt/cdrom/
# cd /mnt/cdrom/slackware64/e/
# installpkg emacs-24.5-x86_64-2.txz
Verifying package emacs-24.5-x86_64-2.txz.
Installing package emacs-24.5-x86_64-2.txz [ADD]:
PACKAGE DESCRIPTION:
# emacs (GNU Emacs)
#
# Emacs is the extensible, customizable, self-documenting
# real-time display editor. If this seems to be a bit of a
# mouthful, an easier explanation is that Emacs is a text
# editor and more. At its core is an interpreter for Emacs
# Lisp, a dialect of the Lisp programming language with
# extensions to support text editing.
# This version supports X.
#
# http://www.gnu.org/software/emacs/
#
Executing install script for emacs-24.5-x86_64-2.txz.
Package emacs-24.5-x86_64-2.txz installed.
Si votre machine est dépourvue de lecteur optique, vous pouvez toujours rapatrier le paquet emacs
depuis le miroir de téléchargement Slackware à l’adresse http://mirrors.slackware.com/slackware/. Rangez
le paquet à un endroit approprié (/root par exemple, ou alors créez un répertoire /root/pkg) et installez-
le en invoquant installpkg en tant que root.
L’éditeur Emacs est désormais installé. Il existe en deux versions :
• une version graphique dans Applications>Développement>Emacs ;
• une version emacs en ligne de commande.
Figure 15–1
Nous venons d’installer l’éditeur Emacs sur notre machine. Le voici dans sa version graphique.
Pour savoir si un paquet est installé, il suffit donc de vérifier s’il dispose d’une entrée dans ce
répertoire. Par exemple, cherchons Firefox :
# ls /var/log/packages/*firefox*
/var/log/packages/mozilla-firefox-45.2.0esr-x86_64-1
Ici, Firefox est installé dans la version 45.2.0 ESR.
Voici un autre exemple de recherche :
# ls /var/log/packages/*kde*
/bin/ls: impossible d'accéder à '/var/log/packages/*kde*': Aucun fichier ou dossier de ce type
Aucun paquet dont le nom contient la suite de caractères 'kde' n’est installé sur ce système.
Faites attention aux majuscules dans les noms de certains paquets :
# ls /var/log/packages/mplayer*
/bin/ls: impossible d'accéder à '/var/log/packages/mplayer*':
Aucun fichier ou dossier de ce type
# ls /var/log/packages/MPlayer*
/var/log/packages/MPlayer-1.2_20160125-x86_64-3
Supprimer un paquet
Pour supprimer un paquet installé, on utilise removepkg . Il suffit de donner le nom du paquet en
argument :
# removepkg emacs
Removing package /var/log/packages/emacs-24.5-x86_64-2...
Removing files:
...
--> Deleting empty directory /usr/libexec/emacs/24.5/
--> Deleting empty directory /usr/libexec/emacs/
--> Deleting empty directory /usr/doc/emacs-24.5/
On peut également fournir le nom complet du paquet en argument. Dans ce cas, la bonne pratique
consiste à se placer dans /var/log/packages avant d’invoquer la commande, ce qui permet d’utiliser la
complétion automatique :
# cd /var/log/packages/
# removepkg emacs-24.5-x86_64-2
Utilisez les touches FlècheBas et FlècheHaut pour naviguer de lien en lien. La touche Entrée permet
de suivre un lien et la touche FlècheGauche vous fait revenir en arrière vers la page précédente. Une
fois que vous affichez la page ChangeLog.txt, c’est le visualiseur less qui est utilisé pour vous déplacer
dans le document. Enfin, utilisez la touche Q pour quitter Links.
Figure 15–2
En l’absence d’interface graphique, utilisez un navigateur en ligne de commande comme Links ou
Lynx pour lire le ChangeLog sur le site de Slackware.
Ce qu’il faut retenir ici, c’est qu’en date du 31 août 2016, le paquet mozilla-thunderbird a été mis à jour
vers la version 45.3.0. Cette mise à jour corrige des failles de sécurité et apporte des améliorations.
Le nouveau paquet est disponible sur les miroirs de téléchargement Slackware, dans le répertoire
patches/packages/.
Là aussi, nous allons utiliser le navigateur Links pour récupérer la mise à jour manuellement, mais
auparavant, nous allons créer un répertoire /root/patches/ dans lequel nous rangerons les mises à jour
téléchargées :
# cd
# mkdir patches
# cd patches
# links mirrors.slackware.com
Si tout s’est bien passé, essayez de répéter l’opération en choisissant une autre mise à jour
mentionnée dans le ChangeLog de Slackware 14.2, comme curl, screen ou glib2.
Configuration initiale
Le fichier /etc/slackpkg/mirrors contient la liste des miroirs de téléchargement de Slackware. Éditez ce
fichier et décommentez (c’est-à-dire enlevez le dièse # devant) une seule source de paquets au choix,
par exemple :
# GERMANY (DE)
ftp://ftp.fu-berlin.de/unix/linux/slackware/slackware-14.2/
Veillez à ne pas vous tromper de section et à ne pas utiliser un site miroir de slackware-current ou
slackware64-current, sous peine de vous retrouver avec la version de développement de Slackware.
Il suffit de confirmer l’installation dans l’écran subséquent et le paquet est directement récupéré et
installé.
On peut également fournir plusieurs paquets en argument :
# slackpkg install bittorrent recordmydesktop
Cette dernière commande vous installe non seulement un bureau KDE complet, mais également
l’ensemble des traductions disponibles pour cet environnement. Si vous ne souhaitez pas télécharger
près d’un gigaoctet de paquets, cliquez simplement sur Annuler dans la fenêtre de confirmation.
Si notre machine ne disposait pas du bureau Xfce, nous aurions pu installer le groupe de paquets
correspondant comme ceci :
# slackpkg install xfce
Ou encore :
# slackpkg remove xfce
Lorsqu’une mise à jour du noyau est installée, slackpkg vous affiche le message suivant :
Your kernel image was updated.
We highly recommend you run: lilo
Do you want slackpkg to run lilo now? (Y/n)
Dans ce cas, il est impératif de répondre par l’affirmative (Y comme Yes), étant donné que le chargeur
de démarrage doit être capable de trouver le nouveau noyau :
Warning: LBA32 addressing assumed
Added Linux *
One warning was issued.
Par ailleurs, la mise à jour des paquets risque d’écraser certains fichiers de configuration et slackpkg
vous laisse le choix :
Searching for NEW configuration files
Étant donné que vous n’avez pas encore personnalisé grand-chose dans votre installation, vous
pouvez sereinement répondre par O comme Overwrite, ce qui installera les nouveaux fichiers de
configuration à la place des anciens.
Il ne vous reste plus qu’à croiser les doigts et à redémarrer.
Notez que la recherche ne doit pas obligatoirement porter sur l’intégralité du nom d’un paquet :
# slackpkg search terminal
Looking for terminal in package list. Please wait... DONE
The list below shows all packages with name matching "terminal".
[ installed ] - xfce4-terminal-0.6.3-x86_64-2
L’option file-search cherche des fichiers individuels, ce qui affiche le cas échéant le ou les paquet(s)
contenant le fichier en question :
# slackpkg file-search libncurses.so
Looking for libncurses.so in package list. Please wait... DONE
The list below shows the packages that contains "libncurses\.so" file.
[ installed ] - aaa_elflibs-14.2-x86_64-23
[ installed ] - ncurses-5.9-x86_64-4
Si l’on souhaite en savoir un peu plus sur le contenu d’un paquet, on utilise l’option info :
# slackpkg info mesa
L’option clean-system supprime tous les paquets tiers qui ne font pas partie de la distribution officielle.
Nous n’en avons pas encore pour l’instant, étant donné que nous n’avons pas encore vu la
compilation de paquets, mais cela ne saurait tarder. À ce moment-là, clean-system permettra de faire un
brin de ménage sur votre système :
# slackpkg clean-system
Vous pouvez également vous servir de slackpkg pour réparer un paquet endommagé. Admettons que
vous ayez accidentellement supprimé le fichier /usr/bin/glxgears. Dans un premier temps, il vous faut
rechercher le paquet qui le fournit :
# slackpkg file-search glxgears
Looking for glxgears in package list. Please wait... DONE
The list below shows the packages that contains "glxgears" file.
[ installed ] - mesa-11.2.2-x86_64-1
Choisissez un endroit pour ranger le code source et les scripts, par exemple :
# cd
# mkdir -pv source/xfce4-terminal
mkdir: création du répertoire 'source'
mkdir: création du répertoire 'source/xfce4-terminal'
# cd source/xfce4-terminal/
# links mirrors.slackware.com/slackware
Au total, notre répertoire source/xfce4-terminal/ devra contenir les trois éléments suivants :
# ls
slack-desc
xfce4-terminal-0.6.3.tar.xz
xfce4-terminal.SlackBuild
Le script se charge de tout ce qui est nécessaire à la construction du paquet : extraction de l’archive,
configuration, compilation, installation dans un répertoire temporaire, etc. Faisons abstraction de tous
les détails de la fabrication du paquet, du moment qu’au bout de l’opération, nous nous retrouvons
avec quelque chose qui ressemble à ceci :
Slackware package /tmp/xfce4-terminal-0.6.3-x86_64-2.txz created.
À partir de là, il ne nous reste plus qu’à installer le paquet résultant et le tour est joué :
# installpkg /tmp/xfce4-terminal-0.6.3-x86_64-2.txz
Certaines fonctionnalités de MPlayer peuvent poser problème, en effet. Les encodeurs audio comme
LAME pour le MP3 sont encombrés par des brevets et l’utilisation de la bibliothèque de décryptage
DVDCSS vous met carrément dans l’illégalité dans certains pays, parmi lesquels la France depuis la
loi DADVSI votée en 2006.
La distribution Slackware n’a pas voulu entrer en conflit avec ces réglementations diverses et c’est
pour cela que toutes ces fonctionnalités potentiellement problématiques ont été désactivées. Le
paquet binaire résultant peut être redistribué dans tous les pays du monde, sans que cela ne pose de
problèmes en termes purement légaux.
Or, comme le dit le commentaire reproduit plus haut, si vous n’êtes qu’un utilisateur lambda,
personne ne viendra vous embêter si vous décidez de les employer. Et c’est précisément ce que nous
allons faire. Éditons le script MPlayer.SlackBuild et modifions la ligne magique :
USE_PATENTS=${USE_PATENTS:-"YES"}
Ici, la construction du paquet durera plus longtemps. Comptez un petit quart d’heure sur un processeur
dual core muni de deux gigaoctets de RAM.
URL SlackBuilds.org
http://slackbuilds.org
Figure 15–3
SlackBuilds.org permet de trouver à peu près tout ce qui n’est pas fourni d’office par la distribution
Slackware.
À la limite, on peut faire un brin de ménage et supprimer l’archive qui ne sert plus à rien :
# rm -f cowsay.tar.gz
0 directories, 6 files
Placez-vous dans le répertoire, vérifiez si le script cowsay.SlackBuild est bien exécutable, puis
invoquez-le pour lancer la construction du paquet :
# cd cowsay/
# ./cowsay.SlackBuild
Cette fois-ci, l’opération ne dure que quelques secondes, même sur une machine lente. Si tout se
passe bien, on se retrouve avec un paquet dans /tmp :
...
usr/share/games/cows/hellokitty.cow
usr/share/games/cows/eyes.cow
usr/share/games/cows/daemon.cow
usr/share/games/cows/bud-frogs.cow
usr/share/games/cows/stimpy.cow
usr/man/
usr/man/man1/
usr/man/man1/cowsay.1.gz
Testez l’application :
$ cowsay Et voilà !
_____________
< Et voilà ! >
-------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
Chaque collection de scripts contient par ailleurs un fichier *.info qui précise les paquets requis.
Dans le fichier clearlooks-phenix-theme.info, nous trouvons un champ REQUIRES :
PRGNAM="clearlooks-phenix-theme"
VERSION="6.0.3"
HOMEPAGE="https://github.com/jpfleury/clearlooks-phenix"
...
REQUIRES="gtk-engines"
MAINTAINER="Mario Preksavec"
EMAIL="mario at slackware dot hr"
URL sbopkg
https://www.sbopkg.org
Installer sbopkg
Allez sur le site du projet :
# links www.sbopkg.org
Variable Assignment
-------- ----------
REPO_{ROOT,NAME,BRANCH} -> /var/lib/sbopkg/,SBo/,14.2
LOGFILE directory -------> /var/log/sbopkg
QUEUEDIR ----------------> /var/lib/sbopkg/queues
SRCDIR ------------------> /var/cache/sbopkg
You can have sbopkg create them or, if these values are incorrect, you can abort to edit your config files or
pass different flags.
(C)reate or (A)bort?:
Confirmez la création de ces répertoires avec la touche C, ce qui vous amène au menu principal de
l’application.
Tout d’abord, vous devez synchroniser sbopkg avec le contenu de SlackBuilds.org en utilisant l’option
Sync with the remote repository. En règle générale, c’est une bonne idée de lancer une
synchronisation avant toute installation. Une fois que la synchronisation est terminée (***SYNC
COMPLETE***), confirmez simplement.
Figure 15–4
Le menu principal de sbopkg
Figure 15–5
sbopkg permet de construire plus de 6 000 paquets tiers pour Slackware.
Dans l’exemple qui suit, nous allons construire et installer unrar, un utilitaire en ligne de commande
pour extraire le contenu des archives compressées de type RAR.
1 Choisissez l’outil de recherche Search.
2 Dans le champ de recherche, tapez « unrar ».
3 Dans la fenêtre des résultats, sélectionnez la ligne system/unrar.
4 L’écran subséquent vous permet d’effectuer toute une série d’opérations, comme visualiser le
fichier unrar.info ou vérifier s’il n’y a pas de dépendances externes.
5 Construisez le paquet avec Process – Download/build/install unrar.
6 Confirmez Install et démarrez l’opération avec Start.
À partir de là, sbopkg se charge automatiquement de télécharger et décompresser l’archive source, de
compiler le tout et d’installer le paquet résultant.
N’hésitez pas à construire d’autres paquets pour vous entraîner un peu. Pour commencer, choisissez
quelques petits utilitaires qui n’ont pas de dépendances externes, par exemple antiword, exiftool, p7zip
ou unrtf.
Installer des paquets tiers précompilés
Certains sites proposent des paquets tiers précompilés pour Slackware. En règle générale, il vaut
toujours mieux compiler ses propres paquets, ne serait-ce que pour de simples raisons de sécurité.
Après tout, on peut mettre tout et n’importe quoi dans un paquet et lui donner le nom qu’on veut.
Ceci étant dit, les projets tiers fournissant des paquets binaires pour Slackware sont nombreux et
certains d’entre eux sont bien établis dans la communauté. Citons-en quelques-uns, sans prétendre à
l’exhaustivité.
Enfin, l’auteur de ce livre maintient le projet MLED (Microlinux Enterprise Desktop), une collection
de paquets fournissant tout ce qui manque communément à Slackware – applications populaires,
codecs et plug-ins multimédias, thèmes graphiques, polices, traductions – pour en faire un
environnement de bureau complet.
OUTIL slackpkg+
L’extension slackpkg+ est développée par Matteo Rossini (ZeroUno pour les intimes), un membre de
la communauté italienne de Slackware slacky.it. Eric Hameleers a écrit un article détaillé sur
slackpkg+ sur son blog Alien Pastures. Téléchargez slackpkg+ ici :
http://slakfinder.org/slackpkg+.html
Décommentez le dépôt en question. La ligne est trop longue et a dû être coupée dans le listing :
MIRRORPLUS['multilib']=http://bear.alienbase.nl/mirrors/people/
alien/multilib/14.2/
Enfin, commentez le dépôt . Ce dépôt ne sert qu’à fournir des mises à jour pour le seul
slackpkgplus
paquet slackpkg+ :
#MIRRORPLUS['slackpkgplus']=http://slakfinder.org/slackpkg+/
Lancez une mise à jour des paquets pour lesquels il existe une version . Si tout se passe
multilib
comme prévu, cette commande remplacera tous vos paquets gcc* et glibc* :
# slackpkg upgrade multilib
Pour compiler une application comme VirtualBox ou pour faire fonctionner une imprimante qui ne
dispose que des pilotes 32-bits (voir le chapitre 21), vous pouvez vous arrêter là. Si vous souhaitez
installer la couche multilib complète, lancez la commande suivante :
# slackpkg install multilib
16
Slackware fait partie d’une minorité de distributions qui utilisent toujours le chargeur de
démarrage LILO. C’est un outil simple et robuste qui a fait ses preuves, mais la manipulation d’un
chargeur de démarrage n’est jamais une chose triviale. Étant donné qu’il y a là une source
d’erreurs potentiellement fatales, nous en profiterons pour apprendre à récupérer un système qui
ne démarre plus, ce qui n’est pas de la magie noire. Une autre particularité de Slackware, c’est
que l’utilisateur est censé remplacer le noyau HUGE installé par défaut par le noyau GENERIC ;
l’adaptation à la machine s’effectue par la création d’un initrd ou disque mémoire initial. C’est
une opération qui pose souvent problème aux utilisateurs, c’est pourquoi nous la détaillerons pas
à pas dans ce chapitre.
Le chargeur de démarrage LILO
LILO (Linux Loader, rien à voir avec le moteur de recherche du même nom) a été le principal
chargeur de démarrage des distributions Linux pendant quelques années. Il a été progressivement
remplacé par GRUB et on ne le trouve plus que sur une minorité de distributions.
LILO affiche un menu et se charge de démarrer le système d’exploitation sélectionné (Linux dans la
configuration par défaut). Il doit être installé dans le secteur de démarrage d’un disque dur pour
fonctionner correctement.
Figure 16–1
Encore mieux ?
Sous certains aspects, la distribution Slackware raisonne comme les Romains de l’Antiquité. Un
composant du système qui a fait ses preuves depuis de longues années ne sera pas remplacé à la
légère par un autre composant seulement parce que ce dernier est plus récent. Concrètement, si
Slackware utilise encore l’ancien chargeur de démarrage LILO, c’est qu’il n’y a tout simplement
aucune raison de l’abandonner. Cette logique reste d’ailleurs valable pour l’ensemble des
composants du système. Le développeur de LILO n’assure plus la maintenance depuis décembre
2015 et c’est Patrick Volkerding lui-même qui a repris le flambeau.
LILO n’est pas capable de lire des fichiers dans un système de fichiers. Lors de l’installation, il crée
une liste avec les blocs et les secteurs du disque qui contiennent les fichiers importants, à savoir :
• le noyau ou kernel ;
• l’initrd ou initial ramdisk s’il y en a un, voir un peu plus loin.
Autrement dit, LILO « lit » ces données en mémoire sans vraiment « comprendre » le système de
fichiers sous-jacent. C’est la commande lilo qui se charge d’identifier les blocs de données. Elle doit
être invoquée à partir d’un système Linux fonctionnel :
# lilo
Il s’ensuit une conséquence cruciale. La commande doit être invoquée à chaque modification du
noyau ou de l’initrd, c’est-à-dire que LILO doit être réinstallé à chaque fois dans le secteur
d’amorçage, même si les noms des fichiers ne changent pas.
La configuration de LILO se fait en deux temps :
1 création ou modification du fichier /etc/lilo.conf ;
2 invocation de la commande lilo.
Notons que le fichier initial /etc/lilo.conf est créé par le programme d’installation de Slackware. La
commande lilo utilise les paramètres contenus dans ce fichier pour produire un nouveau secteur
d’amorçage et écrire ce dernier vers une destination également définie dans /etc/lilo.conf.
Le fichier /etc/lilo.conf est organisé en deux parties :
1 comportement général du chargeur de démarrage ;
2 une liste des systèmes démarrés par LILO (mots-clés image ou other).
D’après l’explication fournie dans les commentaires, la valeur de timeout définit le temps d’attente en
dixièmes de secondes avant de lancer le système par défaut, ce qui explique le compte à rebours de
deux minutes au démarrage. Modifiez cette valeur en la réduisant à dix secondes, par exemple :
timeout = 100
L’option append fournit une liste de paramètres à passer au noyau lors du démarrage. Rappelez-vous
que lors de l’installation de Slackware, nous avons opté pour l’utilisation de l’encodage UTF-8 dans
la console. Ce choix se répercute dans le paramètre vt.default_utf8=1 que nous retrouvons ici. Nous
allons bientôt ajouter d’autres paramètres pour modifier le comportement de notre machine.
Quant à l’option boot, elle définit l’endroit où LILO devra être installé, en l’occurrence le MBR du
premier disque dur (/dev/sda).
Allons un peu plus loin dans l’exploration et le peaufinage de notre chargeur de démarrage.
Décommentez l’option compact et ajoutez l’option lba32 juste en-dessous. Au total, vous devrez avoir
ceci :
append="vt.default_utf8=1"
boot = /dev/sda
L’option compact accélère le chargement du noyau (et de l’initrd, comme nous le verrons plus loin).
Quant à l’option lba32, elle évite la limitation à 1 024 cylindres. Sans trop rentrer dans les détails,
elle servira avant tout à nous débarrasser de l’avertissement Warning: LBA32 addressing assumed lors de
l’invocation de lilo :
# lilo
Added Linux *
Un paramètre de noyau que j’ajoute assez systématiquement sur toutes mes machines est quiet. Il a
pour effet de limiter les messages qui défilent au démarrage de la machine à l’essentiel, ce qui est
déjà beaucoup. Essayez :
append="quiet vt.default_utf8=1"
boot = /dev/sda
Prenez en compte les modifications et redémarrez la machine. Lorsque vous invoquez , les
ifconfig
informations relatives à l’IPv6 n’apparaissent plus.
Juste en-dessous de cette ligne, les autres valeurs possibles de cette option sont toutes commentées :
# Ask for video mode at boot (time out to normal in 30s)
#vga = ask
# VESA framebuffer console @ 1024x768x64k
#vga=791
# VESA framebuffer console @ 1024x768x32k
#vga=790
# VESA framebuffer console @ 1024x768x256
#vga=773
# VESA framebuffer console @ 800x600x64k
#vga=788
...
Essayez de remplacer vga = normal par d’autres valeurs, par exemple vga = 791 pour une résolution de 1
024×768 pixels, ou vga = 788 pour une résolution de 800×600 pixels.
Figure 16–2
Lorsque vous activez le framebuffer, votre console arbore fièrement un pingouin par processeur lors
du démarrage.
Notez qu’il existe une autre manière d’activer le framebuffer et de modifier la résolution de la
console. Elle utilise le paramètre de démarrage video, mais elle ne fonctionne pas sur toutes les
machines. Voici comment il faut l’appliquer :
append="video=1024x768 quiet vt.default_utf8=1"
...
vga = normal
Selon votre carte graphique, c’est l’une ou l’autre méthode que vous pourrez utiliser, sachant que la
deuxième méthode n’affichera pas les petits pingouins au démarrage. En revanche, elle permettra la
définition de résolutions différentes, par exemple 1 366×768 pour les écrans 16/9, ou 1 024×480
pour les ultra-portables munis d’un écran 10 pouces.
Alternativement :
# ls -l /dev/sd*
brw-rw---- 1 root disk 8, 0 Sep 24 12:39 /dev/sda
brw-rw---- 1 root disk 8, 1 Sep 24 12:39 /dev/sda1
brw-rw---- 1 root disk 8, 2 Sep 24 12:39 /dev/sda2
La prochaine étape consiste à lier les systèmes de fichiers /proc, /dev et /sys du système de restauration
et du système installé :
# mount --bind /proc /mnt/proc
# mount --bind /dev /mnt/dev
# mount --bind /sys /mnt/sys
À partir de là, nous pouvons apporter les modifications nécessaires, par exemple reconstruire l’initrd
(comme nous le verrons un peu plus loin) ou re-paramétrer le chargeur de démarrage pour récupérer
une faute de frappe ou une autre erreur de paramétrage.
Une fois que nous avons rectifié le tir, nous pouvons revenir vers le système du LiveCD (ou de la clé
USB) :
# exit
Nous pourrions démonter manuellement, un par un et dans un ordre cohérent, les systèmes de fichiers
montés. Nous allons nous éviter cette corvée en redémarrant tout simplement la machine. Le système
se chargera lui-même de démonter tout cela bien proprement :
# reboot
Configurer le système et le noyau à charger
Reprenons notre fichier /etc/lilo.conf et considérons la section suivante, située vers la fin :
# Linux bootable partition config begins
image = /boot/vmlinuz
root = /dev/sda2
label = Linux
read-only
# Linux bootable partition config ends
Cette section a été préconfigurée par le programme d’installation de Slackware. Elle débute par la
ligne image et définit comment démarrer un système Linux. Le paramètre /boot/vmlinuz indique
l’emplacement du noyau. L’option root définit l’emplacement de la racine du système Linux, en
l’occurrence /dev/sda2. Quant à l’option label, elle définit le texte de l’entrée de menu, Linux dans
notre cas. Cette dernière option est malheureusement assez restreinte : nous devons éviter les espaces
et les caractères spéciaux et ne pas dépasser 15 caractères.
Vous aurez peut-être remarqué que l’emplacement du noyau /boot/vmlinuz est en fait un lien
symbolique :
# ls -l /boot/vmlinuz
lrwxrwxrwx 1 root root 19 sept. 15 13:36 /boot/vmlinuz -> vmlinuz-huge-4.4.19
Vous pouvez tenter une première petite expérience ici. Éditez /etc/lilo.conf et remplacez le lien
symbolique /boot/vmlinuz par sa cible, c’est-à-dire le « véritable » fichier du noyau. En passant, vous
pourrez également modifier l’entrée label correspondante. Attention, vous n’aurez pas forcément le
même fichier que celui de mon exemple :
image = /boot/vmlinuz-huge-4.4.19
root = /dev/sda2
label = Linux-HUGE
read-only
Redémarrez. Bon, j’avoue que cette dernière expérience ne casse pas trois pattes à un canard. Mais
elle prépare le terrain pour la suite, comme nous allons le voir.
Basculer vers le noyau GENERIC
Lors du démarrage de Slackware, vous avez peut-être été vaguement inquiétés par un message qui
ressemble à ceci :
(sda2): error: couldn’t mount because of unsupported optional features
Cela tient au fait que nous utilisons actuellement le noyau HUGE, c’est-à-dire un des fichiers vmlinuz-
4.4.x-huge ou vmlinuz-huge-smp-4.4.x-smp rangés dans /boot. Il s’agit là d’un noyau « prêt-à-porter » fourni
par Slackware en vue de l’installation du système, avec toutes les options compilées « en dur ».
La bonne pratique, recommandée par Patrick Volkerding, consiste à utiliser le noyau GENERIC avec
un initrd ou disque mémoire initial. Si vous ne savez pas ce qu’est un initrd, imaginez une sorte de
besace virtuelle contenant tous les modules nécessaires pour le démarrage du système. On y trouve
notamment le support des systèmes de fichiers comme ext3, ext4, etc.
Si cette explication ne vous paraît toujours pas assez claire, rappelez-vous d’abord que tous les
« pilotes » de Linux sont disponibles sous forme de modules, dans /lib/modules, et je demande aux
geeks et autres gourous de bien vouloir pardonner les simplifications que je me permets ici. Or, la
gestion d’un système de fichiers comme ext3 ou ext4 nécessite également le chargement d’un « pilote »
ou module. Et là, les plus perspicaces d’entre vous voient tout de suite la situation de poule et d’œuf
que cela peut engendrer :
1 La machine démarre.
2 Le noyau est chargé.
3 Il essaie de monter la partition principale, formatée en ext4.
4 Pour gérer l’ext4, le noyau a besoin de charger le module du même nom.
5 Ce module se trouve justement dans /lib/modules sur la partition principale.
6 ?!?!?!?
7 Panique à bord.
Pour nous sortir de ce cercle vicieux, nous allons créer un initrd, un fichier spécial qui contiendra
tous les modules dont le noyau a besoin pour le démarrage du système.
Dans un premier temps, nous devons savoir quels sont les modules à inclure dans notre initrd. Notre
système fournit un utilitaire assez pratique pour cela. Rendez-vous dans le répertoire
/usr/share/mkinitrd et lancez le script mkinitrd_command_generator.sh :
# cd /usr/share/mkinitrd/
# ./mkinitrd_command_generator.sh
Le script nous affiche une commande à rallonge avec toute une série d’options et de paramètres :
mkinitrd -c -k 4.4.19 -f ext4 -r /dev/sda2 -m jbd2:mbcache:ext4 -u -o /boot/initrd.gz
Retenons les arguments qui suivent l’option -m, c’est-à-dire jbd2:mbcache:ext4 dans notre exemple. Ce
sont là les modules dont notre machine a besoin pour démarrer, séparés par des « : ». Notons-les.
Alternativement, utilisez l’astuce de l’encadré pour coller le résultat d’une commande directement
dans un fichier avec l’éditeur Vim. Dans certains cas, la liste de modules peut être assez longue, en
fonction du matériel que vous possédez.
À présent, éditons un fichier /etc/mkinitrd.conf avec notre éditeur de texte préféré. Le répertoire /etc
contient déjà un modèle (sample), que nous allons adapter à nos besoins :
# cd /etc
# cp mkinitrd.conf.sample mkinitrd.conf
L’option CLEAR_TREE se charge de faire le ménage dans les fichiers sources avant la création de l’initrd
et je vous conseille de la passer à 1. Vous aurez probablement deviné que KEYMAP est la disposition du
clavier dans la console. MODULE_LIST contient la liste des modules mentionnés plus haut, tous séparés
par des « : ». Attention : n’incluez pas d’espace, ce qui entraînerait des conséquences fatales et
empêcherait votre système de démarrer, comme d’ailleurs toute faute de frappe dans ce fichier. ROOTDEV
désigne ici la partition principale de notre système (/dev/ sda2) et ROOTFS le système de fichiers (ext4)
utilisé sur celle-ci. RESUMEDEV est notre partition d’échange ou swap (/dev/sda1). Une remarque au passage
sur une source de confusion potentielle pour ceux qui s’y connaissent un peu : RAID="0" signifie tout
simplement que nous n’utilisons pas le RAID et non pas que nous utilisons du RAID niveau 0. Enfin,
si vous ne chiffrez pas vos partitions, vous pouvez allègrement supprimer toutes les lignes LUKS*.
Sachez que toutes ces options sont détaillées dans la page de manuel mkinitrd.conf(5).
Certains modules peuvent apparaître « en double », mais ne vous en préoccupez pas. Cela n’a pas de
conséquence sur le bon fonctionnement du système.
Notez au passage que l’option -F indique à mkinitrd de lire l’ensemble des options et des paramètres
dans le fichier /etc/mkinitrd.conf. Théoriquement, nous aurions pu nous passer de l’édition de ce fichier
mais, dans ce cas, nous aurions dû invoquer une commande à rallonge.
Il ne nous reste plus qu’à ajouter une section au chargeur de démarrage pour utiliser le noyau
GENERIC avec notre initrd nouvellement créé. Éditez /etc/lilo.conf, regardez la section vers la fin du
fichier pour la syntaxe et ajoutez une deuxième section juste après :
image = /boot/vmlinuz-huge-4.4.19
root = /dev/sda2
label = Linux-HUGE
read-only
image = /boot/vmlinuz-generic-4.4.19
initrd = /boot/initrd.gz
root = /dev/sda2
label = Linux-GENERIC
read-only
Là encore, vérifiez bien le noyau que vous utilisez. Sur un système 32-bits, ce sera probablement
vmlinuz-generic-smp-4.4.19-smp.
À partir de là, nous pouvons déjà démarrer sur le nouveau noyau, en prenant soin de choisir Linux-
GENERIC dans l’écran de sélection de LILO. Si tout se passe bien, les erreurs concernant
d’éventuelles fonctionnalités non reconnues au démarrage auront cédé la place au message suivant :
/boot/initrd.gz: Loading kernel modules from initrd image:
Il ne nous reste plus qu’à finaliser la configuration de LILO. Retournez dans /etc/lilo.conf et
supprimez la section initiale du noyau HUGE. Renommez éventuellement celle pointant vers le noyau
GENERIC :
image = /boot/vmlinuz-generic-4.4.19
initrd = /boot/initrd.gz
root = /dev/sda2
label = Linux
read-only
Et pour finir :
# lilo
Added Linux + *
Sous Slackware 14.2 32-bits avec un noyau SMP, vous aurez ceci :
$ uname -r
4.4.14-smp
Vous décidez de basculer vers le noyau GENERIC comme nous l’avons vu. Vous identifiez les modules
nécessaires au démarrage, vous éditez /etc/mkinitrd.conf, vous construisez l’initrd et vous ajoutez une
section à /etc/lilo.conf pour démarrer sur ce noyau. Vous aurez donc quelque chose comme ceci :
image = /boot/vmlinuz-generic-4.4.14
initrd = /boot/initrd.gz
root = /dev/sda2
label = Linux
read-only
Or, il arrive parfois qu’une mise à jour de sécurité concerne le noyau, comme celle qui suit, dernière
en date à l’heure de la rédaction de ces lignes :
Tue Aug 23 19:45:33 UTC 2016
...
patches/packages/linux-4.4.19/*: Upgraded.
A flaw was found in the implementation of the Linux kernels handling of networking challenge ack where an
attacker is able to determine the shared counter. This may allow an attacker located on different subnet to
inject or take over a TCP connection between a server and client without having to be a traditional Man In
the Middle (MITM) style attack. Be sure to upgrade your initrd after upgrading the kernel packages.
If you use lilo to boot your machine, be sure lilo.conf points to the correct kernel and initrd and run lilo
as root to update the bootloader.
...
Entre autres choses, cela remplace les paquets kernel-* en version 4.4.14 par les mises à jour
correspondantes. Vous imaginez bien que si vous redémarrez sans douter de rien, cela risque fort de
se terminer par un désastre, en l’occurrence un joli kernel panic. Il faut donc procéder
méthodiquement.
La première chose à faire est de construire un initrd pour le nouveau noyau. N’oubliez pas que nous
tournons encore sous l’ancien, même si les paquets kernel-* ont tous été mis à jour :
$ uname -r
4.4.14
Le problème ici est que, si nous lançons mkinitrd avec cette configuration, uname -r lui indiquera de
construire un initrd pour l’ancienne version 4.4.14 qui tourne encore en mémoire.
Heureusement, la solution à ce problème est relativement simple. Elle consiste à « coder en dur » la
version du noyau pour laquelle nous souhaitons construire l’initrd :
# mkinitrd.conf
SOURCE_TREE="/boot/initrd-tree"
CLEAR_TREE="1"
OUTPUT_IMAGE="/boot/initrd.gz"
#KERNEL_VERSION="$(uname -r)"
KERNEL_VERSION="4.4.19"
...
Il ne nous reste plus qu’à indiquer à LILO l’emplacement du nouveau noyau en éditant /etc/ lilo.conf :
image = /boot/vmlinuz-generic-4.4.19
initrd = /boot/initrd.gz
root = /dev/sda2
label = Linux
read-only
Ou alors :
image = /boot/vmlinuz-generic-smp-4.4.19-smp
initrd = /boot/initrd.gz
root = /dev/sda2
label = Linux
read-only
Là encore, prenons en compte les modifications. Je sais que je donne l’impression de radoter, mais
sachez que ce genre d’oubli est non seulement fréquent, mais résulte aussi en un système qui ne
démarre plus la plupart du temps.
# lilo
Added Linux + *
17
Dans le bon vieux temps, l’installation d’une distribution Linux comportait une série d’écueils,
notamment la configuration du serveur graphique. De nos jours, les distributions grand public
rendent cette procédure transparente. Même sous Slackware, l’environnement graphique semble
prêt à l’emploi, à tel point qu’il est possible d’installer un poste de travail Linux sans même
savoir ce qu’est un serveur graphique. En contrepartie, il arrive que la résolution et/ou la
disposition du clavier ne soient pas celles que vous souhaitez ; le pavé tactile du portable ne
fonctionne pas correctement, ni l’accélération graphique. Dans certains cas, vous n’y voyez même
que du noir. Dans le présent chapitre, je me propose de vous montrer pas à pas le peaufinage à la
main de votre serveur graphique, avec comme seul outil l’éditeur de texte Vim. Ceci étant dit, n’y
voyez pas un cours magistral sur la théorie des serveurs graphiques. Cette méthode de
configuration constitue plutôt l’équivalent informatique d’une série de recettes de grand-mère.
C’est une approche avant tout pratique et pragmatique, qui s’est dégagée à force de configurer
l’environnement graphique sur un grand nombre de machines différentes.
Le système X Window et X.Org
Le projet X.Org fournit une implémentation libre du système X Window, le système d’interaction
graphique avec l’utilisateur sous Unix, BSD et Linux. X.Org est issu d’un fork de XFree86 en 2004,
suite à un désaccord de licence, comme cela arrive souvent dans le monde du libre.
Figure 17–1
X.Org est un serveur graphique libre.
Dans notre installation Slackware Linux, le serveur X.Org est fourni par le groupe de paquets X. Vous
noterez que le nombre de paquets contenus dans ce groupe est assez important. Cela tient au fait que,
depuis Slackware 12.0, X est modulaire. Dans les versions antérieures de Slackware, ce groupe
fournissait un seul gros paquet monolithique x11 ainsi qu’une poignée d’outils et de polices.
X.Org – appelé aussi « système X Window » ou « X11 », ou tout simplement « X » pour les intimes –
fonctionne d’après un modèle client-serveur. Les logiciels clients X (ou logiciels graphiques) se
connectent au serveur X et lui envoient leurs requêtes d’affichage en utilisant le protocole X.
La documentation sur le sujet des serveurs graphiques est aussi abondante qu’indigeste. Rassurez-
vous tout de suite, je vous en fais grâce. Au lieu de cela, nous allons entreprendre une série d’ateliers
pratiques qui vous permettront de vous faire une idée plus concrète de ce qu’est un serveur graphique
sous Linux.
Quelques préparatifs
Après l’installation initiale de Slackware, nous nous sommes retrouvés en niveau d’exécution 3,
c’est-à-dire en mode multi-utilisateur sans interface graphique. Pour démarrer l’environnement Xfce,
nous avons évoqué la commande startx en tant qu’utilisateur simple.
Par la suite, nous avons basculé vers le niveau d’exécution 4 en éditant le fichier /etc/inittab :
# Default runlevel. (Do not set to 0 or 6)
id:4:initdefault:
À partir de là, vous avez le choix. Soit vous redémarrez la machine, soit vous basculez directement
vers le niveau d’exécution 3, ce qui sera plus rapide :
# init 3
Nous allons également désactiver le framebuffer, du moins temporairement. Dans certains cas, la
résolution personnalisée de la console risque de poser problème ; nous y reviendrons un peu plus
loin. Pour le moment, ouvrez /etc/lilo.conf et assurez-vous de deux choses :
• La ligne append au début du fichier ne doit contenir aucun paramètre du genre video=1024x768 ou
similaire.
• L’option vga doit être paramétrée à normal, c’est-à-dire que vous ne devez avoir aucun réglage du
style vga = 791, vga = 788 ou autre.
Le cas échéant, corrigez la configuration de lilo.conf, invoquez lilo pour que les changements prennent
effet et redémarrez la machine avec la résolution par défaut de la console.
Le gestionnaire de fenêtres WindowMaker
Nous aurions très bien pu garder l’environnement de bureau Xfce pour les tests que nous allons
effectuer. Au lieu de cela, nous allons utiliser l’un des gestionnaires de fenêtres légers contenus dans
notre installation. Une fois que vous êtes connecté en tant qu’utilisateur simple en niveau d’exécution
3, invoquez la commande xwmconfig.
Figure 17–2
La commande xwmconfig vous affiche la liste des gestionnaires de fenêtres disponibles.
Notre installation actuelle fournit pas moins de six gestionnaires de fenêtres différents : outre
l’environnement de bureau Xfce, nous disposons des gestionnaires de fenêtres Fluxbox, Blackbox,
WindowMaker et FVWM, ainsi que l’ancêtre TWM (Tabbed Window Manager).
Nous allons opter pour WindowMaker, pour la simple raison que c’est ce que j’ai utilisé lorsque j’ai
fait mes débuts dans le monde de Linux et que je suis un tant soit peu familiarisé avec. WindowMaker
est un clone de l’environnement graphique du système NeXTSTEP conçu à la fin des années 1980 et
basé sur BSD. Pour l’anecdote, c’est sur ce système que Tim Berners-Lee a développé le premier
navigateur Web en 1990.
Figure 17–3
Le gestionnaire de fenêtres WindowMaker
Un clic droit quelque part sur le fond d’écran bleu-gris ouvre le menu principal de Window-Maker.
Ouvrez un terminal via Applications>Terminaux>xterm. Tapez un peu de texte au hasard et vous
verrez que nous sommes confrontés à un problème que nous avons déjà eu au tout début lors de la
première installation. La disposition du clavier en mode graphique n’est pas la même qu’en mode
console et WindowMaker utilise visiblement un clavier QWERTY américain. Cette fois-ci en
revanche, nous n’avons pas les mêmes possibilités que sous Xfce pour basculer d’un clavier à
l’autre. Nous devons donc nous y prendre autrement. Cliquez sur Quitter WindowMaker dans le menu
principal.
Votre console affichera de nombreux messages, peut-être aussi une série d’erreurs, mais au bout de
l’opération, vous vous retrouverez avec un fichier /root/xorg.conf.new. À l’époque où il fallait
configurer le serveur graphique à la main, ce premier jet servait de base pour une configuration
personnalisée.
Or, depuis quelques années maintenant, le serveur X.Org n’a plus besoin du fichier /etc/X11/ xorg.conf
pour fonctionner correctement. La preuve, c’est que jusqu’ici, nous avons pu invoquer startx et
démarrer l’environnement graphique sans qu’un quelconque fichier xorg.conf soit présent sur le
système. Ce qu’il en reste aujourd’hui, ce sont des vestiges tout au plus, que nous allons utiliser pour
peaufiner le fonctionnement de X.Org.
De nos jours, la méthode « orthodoxe » pour configurer le serveur graphique consiste à passer par
des fichiers que l’on placera dans le répertoire dédié /etc/X11/xorg.conf.d. Ce répertoire est vide par
défaut, mais nous pouvons nous servir des fichiers de configuration modèles fournis dans
/usr/share/X11/xorg.conf.d. Il suffit de placer un fichier avec le suffixe *.conf dans ce répertoire pour
qu’il soit pris en compte par le serveur graphique.
# ls /usr/share/X11/xorg.conf.d/
10-amdgpu.conf
10-evdev.conf
10-quirks.conf
50-synaptics.conf
50-vmmouse.conf
70-wacom.conf
90-keyboard-layout.conf
Mettons la main à la pâte et essayons. Pour commencer, nous allons copier le fichier 90-keyboard-
layout.conf vers /etc/X11/xorg.conf.d :
# cd /etc/X11/xorg.conf.d/
# cp /usr/share/X11/xorg.conf.d/90-keyboard-layout.conf .
Section "InputClass"
Identifier "keyboard-all"
MatchIsKeyboard "on"
MatchDevicePath "/dev/input/event*"
Driver "evdev"
Option "XkbLayout" "ch"
Option "XkbVariant" "fr"
Option "XkbOptions" "terminate:ctrl_alt_bksp"
EndSection
XTerm*background: #000000
XTerm*foreground: LightGrey
XTerm*font: 9x15
XTerm*VT100.geometry: 115x40
Les deux premières lignes de ce fichier définissent le jeu de couleurs utilisé dans le terminal, en
l’occurrence gris clair (LightGrey) sur fond noir (#000000). La troisième ligne définit la taille de la
police par défaut du terminal (9x15). Ouvrez le fichier /etc/X11/app-defaults/XTerm pour connaître les
tailles de polices disponibles. Quant au paramètre geometry à la quatrième ligne, il définit la taille par
défaut de la fenêtre de XTerm au lancement. Si la fenêtre dépasse l’écran, essayez une taille un peu
plus petite comme 105x35. Attention : les changements ne prendront effet qu’au prochain démarrage du
serveur graphique.
Pour ces trois modèles de cartes, Slackware fournit des pilotes libres, respectivement intel ou i915
pour les cartes Intel, radeon pour les cartes AMD/ATi et nouveau pour les cartes Nvidia.
Lorsque le serveur graphique démarre, il écrit tout ce qu’il fait dans le fichier /var/log/ Xorg.0.log .
Jetons un œil dans ce fichier après avoir lancé notre session WindowMaker :
$ less /var/log/Xorg.0.log
...
intel(0): Using Kernel Mode Setting driver: i915,
version 1.6.0 20151010
Ici, c’est le module i915 qui est utilisé en KMS ou Kernel Mode Setting. Sans rentrer dans les détails
fastidieux, c’est ce qui permet de contrôler certains facteurs de l’affichage comme la résolution et le
nombre de couleurs directement au niveau du noyau.
Selon votre carte, démarrez le serveur graphique, puis regardez dans /var/log/Xorg.0.log pour vérifier
quel pilote est actuellement utilisé. Sur une carte AMD/ATi, vous devriez voir le chargement du
module radeon et sur une carte Nvidia, ce sera le module nouveau.
Alternativement, vous pouvez vous contenter d’afficher les trois premières lignes de la sortie de la
commande :
$ glxinfo | head -n 3
name of display: :0
display: :0 screen: 0
direct rendering: Yes
L’outil glxgears vous affiche une petite animation en 3D, qui vous servira également à tester
l’accélération graphique.
Vous voyez le problème ? Pour une raison mystérieuse, la résolution que vous avez définie pour votre
console s’applique désormais à votre environnement graphique. Résultat de l’affaire : votre
gestionnaire de fenêtres vous rappelle de loin les jeux de Lego pour les très petits, ou alors une
interface pour les malvoyants. Dans l’état actuel des choses, Window-Maker est à peu près
inutilisable, étant donné que la taille par défaut des fenêtres dépasse le bord de l’écran.
Pour corriger ce comportement aberrant, nous allons nous rendre dans le répertoire /etc/X11/
xorg.conf.d et éditer un fichier 10-custom-screen.conf comme suit, par exemple :
# /etc/X11/xorg.conf.d/10-custom-screen.conf
Section "Screen"
Identifier "Default Screen"
Device "Intel HD Graphics"
Monitor "Default Monitor"
DefaultDepth 24
Subsection "Display"
Depth 24
Modes "1280x1024"
EndSubSection
EndSection
Vous aurez deviné que la ligne Modes "1280x1024" définit la résolution de votre affichage graphique.
Quant à Depth 24, c’est le nombre de couleurs utilisées pour l’affichage, en l’occurrence 224, donc près
de 16,7 millions.
Pour trouver la résolution adaptée à la taille de votre écran, vous pouvez vous y prendre comme
ceci :
1 Désactivez le framebuffer.
2 Redémarrez et lancez l’interface graphique.
3 Trouvez la résolution utilisée dans /var/log/Xorg.0.log.
4 Éditez /etc/X11/xorg.conf.d/10-custom-screen.conf et renseignez manuellement la valeur trouvée.
5 Réactivez le framebuffer et redémarrez.
6 L’interface graphique s’affiche désormais correctement.
Rendez-vous sur le site de Nvidia à l’aide d’un navigateur web graphique comme Firefox. La
navigation avec Links est de plus en plus pénible sur ce genre de site. Repérez la rubrique
Pilotes>Télécharger dans le menu de navigation principal. Le lien vous amène vers l’interface de
sélection du pilote.
Figure 17–6
Le fabricant Nvidia fournit des pilotes propriétaires en alternative aux pilotes libres pour ses cartes
graphiques.
Ma station de travail est munie d’une carte GeForce 210 et tourne sous Slackware64 14.2. Je vais
donc chercher Type de produit : GeForce, puis Série de produits : GeForce 200 Series. Dans le
menu déroulant Gamme de produits, je sélectionne Geforce 210. Dans la configuration par défaut, le
site n’affiche que les différentes versions de Windows dans la rubrique Système d’exploitation (on
connaît la chanson). Je clique sur Show all Operating Systems (anglais pour « afficher également les
vrais systèmes d’exploitation ») tout en bas du menu déroulant, ce qui enrichit la sélection d’une série
de systèmes Linux, Solaris, FreeBSD et Mac OS X. Je sélectionne Linux 64-bit et la langue
(Français).
Je clique sur Rechercher, ce qui m’amène à la page de téléchargement du pilote. Puis, je clique sur
Download et encore une fois sur Agree & Download, où je confirme en passant que mon entreprise,
mon compte épargne, ma compagne et mon chat sont désormais la propriété exclusive de Nvidia, et je
télécharge enfin le fichier NVIDIA-Linux-x86_64-340.98.run, qui pèse près de 66 mégaoctets.
Figure 17–7
L’interface de recherche de pilotes sur le site du fabricant Nvidia
Créez un répertoire /root/nvidia et rangez-y le pilote téléchargé, en tant que root bien évidemment.
Avant de construire le pilote, nous avons un petit travail de préparation à faire. Le module
propriétaire nvidia entre en conflit avec le module libre nouveau et la simple présence de celui-ci sur le
système peut poser quelques problèmes.
La solution consiste ici à blacklister le module nouveau. Pour ce genre d’opération, Patrick Volkerding
nous a facilité la tâche. Allez sur le site de Slackware ou jetez un œil sur le support d’installation. Le
répertoire extra/ contient un paquet xf86-video-nouveau-blacklist. Téléchargez ce paquet, rangez-le
également dans /root/nvidia et installez-le :
# installpkg xf86-video-nouveau-blacklist-noarch-1.txz
Une interface graphique en mode texte s’affiche et vous somme encore une fois d’accepter la licence.
La construction du pilote se lance alors. Sur un système 64-bits, vous devez choisir si vous souhaitez
installer les bibliothèques de compatibilité 32-bits ; répondez par « non » pour l’instant.
L’installateur vous propose alors de lancer nvidia-xconfig, un utilitaire qui génère à la volée un fichier
de configuration /etc/X11/xorg.conf. Ce fichier spécifie entre autres choses l’utilisation du pilote
propriétaire :
...
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
EndSection
...
Le plus simple ici est de redémarrer votre machine. Démarrez l’interface graphique et vérifiez si
vous avez bien quelque chose comme ce qui suit dans le fichier /var/log/Xorg.0.log :
(II) NVIDIA GLX Module 340.96 Sun Nov 8 22:06:18 PST 2015
Loading extension GLX
(II) LoadModule: "nvidia"
Si vous disposez comme moi d’un affichage réparti sur deux moniteurs, vous pourrez lancer
l’utilitaire nvidia-settings pour peaufiner la configuration de l’affichage et intervertir éventuellement
l’écran de droite et celui de gauche. Étant donné que ce genre d’opération affecte la configuration
globale de votre système, cet utilitaire doit être lancé avec les droits root, faute de quoi il n’aura pas
les permissions requises pour modifier /etc/X11/xorg.conf. Dans le doute, ouvrez un terminal graphique
et lancez l’utilitaire en tant que root depuis le terminal :
# nvidia-settings
Figure 17–8
L’utilitaire de configuration permet entre autres choses de configurer l’affichage sur deux écrans.
Figure 17–9
Avec les cartes graphiques AMD/ ATi, vous avez également le choix entre les pilotes libres et les
pilotes propriétaires.
Notez toutefois que le fabricant AMD a une fâcheuse tendance à ne plus reconnaître les anciennes
cartes. Non content de cela, il m’est arrivé d’avoir quelques problèmes de stabilité avec les pilotes
propriétaires, sans oublier le fait que les pilotes libres ont toujours fonctionné correctement sur mes
machines. Par acquis de conscience, je vais quand même vous indiquer sommairement la procédure à
suivre pour basculer vers le pilote fglrx, ce qui vous permettra de vous faire votre propre idée.
Rendez-vous sur le site du fabricant, suivez le lien Trouver votre pilote, repérez le lien
correspondant à Linux ainsi qu’à votre carte. Les noms des fichiers peuvent varier mais, quoi qu’il en
soit, vous téléchargerez une archive compressée qui ressemble à amd-driver-installer-xxxxx.zip. Rangez
cette archive dans un endroit approprié, par exemple /root/fglrx, décompressez-la en utilisant la
commande unzip, supprimez l’archive et lancez l’installateur :
# unzip amd-driver-installer-catalyst-13.1-linux-x86.x86_64.zip
# rm -f amd-driver-installer-catalyst-13.1-linux-x86.x86_64.zip
# sh amd-driver-installer-catalyst-13.1-linux-x86.x86_64.run
Là encore, vous vous retrouverez confronté à une interface graphique en mode texte. L’installateur
analyse votre système et vous laisse le choix entre une installation automatique et la construction d’un
paquet spécifique à votre distribution (Generate distribution specific driver package). Optez pour
ce deuxième choix. Acceptez la licence, confirmez les choix par défaut jusqu’à l’écran Package
Generation, où vous devrez sélectionner Build package for detected OS: Slackware. Une fois que la
construction du pilote s’est terminée correctement, vous trouverez un paquet fglrx-xxxxx.tgz dans le
même répertoire que l’installateur. Installez-le :
# installpkg fglrx-9.012-x86_64-1.tgz
Tout comme celui de Nvidia, le pilote propriétaire entre en conflit avec les pilotes libres. Là encore,
la solution consiste à blacklister ces derniers. Pour ce faire, éditez un fichier /etc
/modprobe.d/blacklist.conf comme suit :
blacklist radeon
blacklist radeonhd
Tout comme WindowMaker, Fluxbox vous présente un espace vide pour commencer, à la différence
près que la barre inférieure de l’écran vous donne accès à une série de quatre bureaux virtuels, tout
comme sous Xfce. Un clic-droit sur le fond d’écran fait apparaître un menu contextuel. Pour
commencer, choisissez un thème à votre convenance via Fluxbox menu>System Styles.
Personnellement, j’aime bien le thème BlueNight, sobre et élégant. Notez que vous ne disposerez du
thème complet qu’au prochain redémarrage du gestionnaire de fenêtres. Il faut donc quitter Fluxbox
(Fluxbox menu>Exit) et le relancer (startx).
Figure 17–10
Fluxbox est un gestionnaire de fenêtres populaire aussi léger que WindowMaker.
Là encore, le menu contextuel vous donne accès aux applications. Pour lancer un terminal graphique
par exemple, passez par Terminals>xterm.
Le moment est venu d’appliquer ce que nous avons appris jusque-là et de mitonner une
installation « aux petits oignons ». Peut-être bien qu’il serait plus approprié d’utiliser une
métaphore vestimentaire. Le poste de travail par défaut de Slackware 14.2 que nous avons utilisé
jusque-là nous a servi de plate-forme d’apprentissage, mais si c’était un vêtement, ce serait du
prêt-à-porter en taille unique. On aime, tant mieux. On n’aime pas, tant pis. Or, un des points forts
de Linux, c’est justement la possibilité de pouvoir faire des choix, de peaufiner sa propre
installation avec des composants judicieusement choisis, de cuisiner sa propre sauce. Fini le prêt-
à-porter, passons aux costumes taillés sur mesure. Le présent chapitre ainsi que les deux suivants
vous expliquent tout cela pas à pas. Suivez le guide.
Les options de démarrage
Nous allons revenir à la case départ et effectuer une installation fraîche de Slackware Linux 14.2. Si
vous utilisez les options par défaut – autrement dit, si vous appuyez tout simplement sur la touche
Entrée à l’invite de commande boot: – la version 32-bits démarrera sur le noyau hugesmp.s et la version
64-bits lancera le noyau huge.s.
Selon la taille de votre écran, vous pouvez modifier la résolution de votre console en ajoutant au
choix l’une des deux options suivantes :
• vga=788 pour une résolution de 800×600 pixels ;
• vga=791 pour une résolution de 1 024×768 pixels.
À titre d’exemple, si vous souhaitez démarrer Slackware 32-bits avec le noyau hugesmp.s et une
résolution de 800×600 pixels, vous choisirez ceci :
boot: hugesmp.s vga=788
En revanche, si vous souhaitez lancer le noyau huge.s avec une résolution de 1 024×768 pixels, vous
opterez pour ceci :
boot: huge.s vga=791
Testez successivement ces deux résolutions et choisissez celle qui vous convient. Vous devinerez
probablement que le choix que vous effectuez ici n’a aucune incidence sur l’installation à proprement
parler.
Il ne vous reste plus qu’à choisir la disposition du clavier pour l’installation avant de vous connecter
en tant que root.
Figure 18–1
Un schéma de partitionnement un peu plus élaboré
Notez qu’une fois que vous avez quitté cfdisk, vous pouvez afficher la table de partition de votre
disque en utilisant l’option -l (comme --list) de fdisk :
# fdisk -l /dev/sda
Disk /dev/sda: 80 GiB, 85899345920 bytes, 167772160 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x10b68c59
Figure 18–2
Commencez par formater la partition d’échange.
Figure 18–3
La partition principale doit impérativement être formatée en premier.
Figure 18–4
Pour la partition principale, nous optons pour le système de fichiers ext4.
Figure 18–5
C’est au tour de la partition /boot d’être formatée.
Figure 18–6
La partition /boot recevra un système de fichiers non journalisé.
Figure 18–7
Définissez le point de montage /boot pour la partition.
Figure 18–8
Il ne reste plus que la partition /home à formater.
Figure 18–9
Tout comme la partition principale, /home sera dotée d’un système de fichiers ext4.
Figure 18–10
Définissez le point de montage /home pour la partition.
Figure 18–11
L’écran récapitulatif de l’organisation de notre disque dur
Installer et configurer Slackware
À partir de là, l’installation du système de base sera peu ou prou identique à l’installation initiale que
nous avions effectuée.
• Choisissez le support d’installation de Slackware (CD-Rom, DVD ou clé USB).
• Le choix des groupes de paquets sera identique à celui de notre première installation.
Désélectionnez les groupes E et KDE, puis installez les groupes A, AP, D, F, K, L, N, T, TCL, X,
XAP, XFCE et Y.
• Optez pour l’installation automatique du chargeur de démarrage LILO.
• Adaptez la résolution de la console pour travailler plus confortablement. Pour ce faire, utilisez le
paramètre de démarrage video ou l’option globale vga, comme nous l’avons vu en détail dans le
chapitre précédent.
Éventuellement, vous pouvez ajouter deux paramètres de démarrage optionnels à LILO :
• Le paramètre quiet rend le démarrage de Slackware moins bavard et vous ne verrez que les
informations essentielles, qui sont déjà assez nombreuses.
• Quant à ipv6.disable=1, comme on le devine, c’est une option qui désactive l’IPv6 et que l’on peut
spécifier lorsqu’on n’utilise que l’IPv4.
Figure 18–12
Ici, on évite les messages de démarrage un peu trop bavards et on désactive l’IPv6.
Créer un utilisateur
Commençons par créer un utilisateur « commun mortel » :
# adduser kikinovak
La création d’un utilisateur ne devrait pas vous poser de problème, puisque nous avons abordé la
question en détail au chapitre 6. Je me permets juste d’insister sur un point qui peut causer toute une
série de problèmes inexplicables par la suite. N’oubliez pas d’ajouter votre utilisateur à la panoplie
de groupes supplémentaires proposée par adduser :
Press ENTER to continue without adding any additional groups
Or press the UP arrow key to add/select/edit additional groups : audio cdrom floppy plugdev video power netdev
lp scanner
Ne vous laissez pas intimider par la syntaxe parfois un peu touffue. Pour commencer, repérez l’option
suivante vers le début du fichier :
" Use Vim settings, rather than Vi settings (much better!).
" This must be first, because it changes other options as a
" side effect.
set nocompatible
Vim comprend une aide en ligne très pratique, à utiliser si vous souhaitez en savoir plus sur une
option. En mode commande, il suffit de taper :help suivie du nom de l’option. L’écran se scinde alors
en deux et l’aide en ligne s’affiche. Pour fermer cet écran, il suffit d’invoquer :q comme pour quitter
Vim. Essayez :
:help nocompatible
Vim comprend une myriade d’options de configuration, que nous n’allons pas toutes explorer. Au lieu
de cela, je vais vous en montrer quelques-unes que j’utilise au quotidien. Pour commencer, ajoutez ce
qui suit juste en-dessous de set nocompatible :
colorscheme elflord
Fermez vimrc et rouvrez-le. Vous constatez que le jeu de couleurs de la coloration syntaxique a changé.
Les couleurs sont désormais plus lisibles sur fond noir.
Voici les options que j’utilise dans mon propre fichier vimrc :
colorscheme elflord
set textwidth=79
set scrolloff=15
set autoindent
set tabstop=2
set shiftwidth=2
set expandtab
set modeline modelines=2
Vous aurez remarqué qu’une des particularités de la syntaxe de ce fichier de configuration est
d’utiliser des guillemets " et non pas des dièses # pour les commentaires. Pour désactiver la création
des fichiers de sauvegarde, commentez toute cette section et ajoutez l’option set nobackup juste après.
Voici à quoi cela devra ressembler :
"if has("vms")
" set nobackup
"else
" set backup
" set undofile
"endif
set nobackup
Les utilisateurs « communs mortels » auront la même chose, avec une invite dollar $ à la place du
signe dièse # :
kikinovak@slackbox:~$
L’aspect de l’invite de commande peut être personnalisé, grâce à la variable d’environnement PS1.
Faites un premier test :
root@slackbox:~ # PS1="[\u@\h:\W] # "
[root@slackbox:~] #
Cela ne change apparemment rien à part la paire de crochets qui entoure la partie centrale de l’invite.
Essayez ceci :
[root@slackbox:~] # cd /etc/httpd/extra/
[root@slackbox:extra] #
Désormais, l’invite de commande ne nous affiche plus le chemin complet vers le répertoire en cours,
ce qui la rend plus lisible.
Vous aurez probablement deviné la syntaxe pour le contenu de l’invite de commande :
• \u désigne l’utilisateur.
• \h c’est l’hôte, c’est-à-dire la machine.
• \W affiche le répertoire courant.
• \w affiche le chemin complet vers le répertoire courant.
Malheureusement, cette personnalisation n’est pas persistante.
Sachez que lorsque vous ouvrez une session dans le shell Bash, celui-ci lit le contenu des fichiers
~/.bash_profile et ~/.bashrc pour prendre en compte des personnalisations éventuelles. Ces fichiers
n’existent pas dans la configuration par défaut de Slackware ; nous allons donc les créer. Éditons
d’abord /root/.bash_profile :
# /root/.bash_profile
if [ -f ~/.bashrc ] ; then
source ~/.bashrc
fi
Le contenu des lignes entre « if » et « fi » veut dire quelque chose comme : « Si le fichier ~/.bashrc
existe, alors tiens compte de son contenu. »
Passons maintenant à /root/.bashrc :
# /root/.bashrc
# Invite
PS1="[\u@\h:\W] # "
# Invite
BLANC='\[\033[1;37m\]'
ROUGE='\[\033[0;33m\]'
NC='\[\033[0;m\]'
PS1="$ROUGE[$BLANC\u$NC@$BLANC\h$NC:$BLANC\W$ROUGE] # $NC"
L’invite de commandes apparaît désormais en couleurs, ce qui mérite une petite explication. Les
suites de caractères du genre \[\033[1;37m\] sont ce que l’on appelle communément des « caractères de
contrôle ». Si je les ai placés dans une série de trois variables BLANC, ROUGE et NC pour le blanc, le rouge
et l’absence de coloration (no color), c’est uniquement pour améliorer la lisibilité de l’ensemble.
Autrement, vous vous seriez retrouvé avec une définition de variable PS1 qui ressemble à ce qui
s’affiche à l’écran lorsque votre chat fait la sieste sur le clavier :
[root@slackbox:~] # echo $PS1
\[\033[0;33m\][\[\033[1;37m\]\u\[\033[0;m\]@\[\033[1;37m\]\h\[\033[0;m\]:\[\033[1;37m\]\W\[\033[0;33m\]] # \
[\033[0;m\]
if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi
# Invite
BLANC='\[\033[1;37m\]'
VERT='\[\033[0;32m\]'
NC='\[\033[0;m\]'
PS1="$VERT[$BLANC\u$NC@$BLANC\h$NC:$BLANC\W$VERT] \$ $NC"
Nous avons vu les alias au chapitre 5, à l’occasion de l’initiation au travail en ligne de commande.
Vous ne devriez donc pas avoir de mal à comprendre les définitions précédentes. Le tout dernier alias
mérite cependant une petite explication. Il s’agit d’une astuce trouvée par mon collègue Didier Spaier
pour afficher correctement certaines pages man dont l’encodage peut poser problème, par exemple la
traduction française de la page man de MPlayer. Si man mplayer n’affiche pas correctement les caractères
spéciaux, on pourra recourir à uman mplayer. Notez que cette astuce sera d’actualité à partir du moment
où nous aurons défini le français fr_FR.utf8 comme langue par défaut.
Là encore, il faudra soit se déconnecter et se reconnecter, soit avoir recours à la commande source
~/.bashrc pour prendre en compte le contenu de ce fichier.
À présent, il ne vous reste plus qu’à vous connecter en tant qu’utilisateur normal et à définir les
mêmes alias en éditant le fichier ~/.bashrc.
La ligne qui commence par export fait en sorte que les variables EDITOR et VISUAL soient disponibles pour
d’autres applications.
Or, il arrive parfois qu’un utilisateur « commun mortel » ait à utiliser – de manière très limitée bien
évidemment – des commandes système situées dans /sbin, par exemple /sbin/ifconfig pour afficher
l’adresse IP de la machine, ou /sbin/lspci pour jeter un œil sur la configuration matérielle. Dans ce
cas, ce n’est pas une mauvaise idée d’ajouter /sbin dans le PATH des utilisateurs.
Concrètement, on pourra éditer ~.bashrc comme ceci :
# PATH
PATH=$PATH:/sbin
À partir de là, même les utilisateurs communs pourront invoquer ifconfig ou lspci sans indiquer le
chemin complet devant ces commandes.
Effectuer la mise à jour initiale
Pour la maintenance au quotidien, nous utiliserons l’outil de gestion des paquets , bien plus
slackpkg
confortable que la panoplie d’outils traditionnels.
Sur notre installation par défaut, slackpkg n’est pas encore configuré. Pour ce faire, il suffit d’éditer
/etc/slackpkg/mirrors et de choisir un seul miroir dans la liste, en décommentant la ligne
correspondante :
...
# GERMANY (DE)
ftp://ftp.fu-berlin.de/unix/linux/slackware/slackware64-14.2/
...
Si les paquets kernel-* sont mis à jour, vous vous retrouverez confronté au message suivant, auquel il
faudra impérativement répondre par (Y)es :
Your kernel image was updated.
We highly recommend you run: lilo
Do you want slackpkg to run lilo now? (Y/n) Y
Le dialogue subséquent vous somme de faire un choix concernant les fichiers de configuration des
nouveaux paquets. Dans le doute, je vous conseille d’opter pour (P)rompt, ce qui vous affiche les
fichiers en question l’un après l’autre ; vous pouvez alors décider au cas par cas ce que vous
souhaitez faire :
• (K)eep garde l’ancienne version du fichier et vous permet de prendre en compte plus tard la
nouvelle version du fichier, estampillée *.new.
• (O)verwrite écrase le fichier existant avec la nouvelle version. L’ancienne version reste
disponible sous forme d’une sauvegarde estampillée *.orig.
• (R)emove supprime la nouvelle version du fichier.
• (D)iff vous affiche la différence entre les fichiers.
• (M)erge tente de fusionner l’ancien fichier et le nouveau.
Puisque nous n’avons pas encore peaufiné grand-chose en matière de configuration de la machine,
nous choisirons le plus souvent de remplacer les anciens fichiers de configuration par les nouvelles
versions grâce à (O)verwrite. Ceci étant dit, gardez toujours à l’esprit que Slackware n’est pas le
genre de distribution qui vous prend par la main et vous dispense de réfléchir.
Si le noyau a été mis à jour, il faudra redémarrer :
# reboot
Basculer vers le noyau GENERIC et peaufiner LILO
La prochaine étape consiste à remplacer le noyau HUGE installé par défaut par le noyau GENERIC.
Nous avons abordé en détail les manipulations autour du chargeur de démarrage et du noyau dans le
chapitre 16. Rappelons en grandes lignes ce qu’il faut faire :
1 Lancer /usr/share/mkinitrd/mkinitrd_command_generator.sh pour identifier les modules nécessaires au
démarrage de votre machine.
2 Éditer un fichier /etc/mkinitrd.conf en renseignant tous les paramètres nécessaires à la création d’un
initrd (disque mémoire initial).
Je crée l’initrd :
# mkinitrd -F
OK: /lib/modules/4.4.19/kernel/fs/jbd2/jbd2.ko added.
OK: /lib/modules/4.4.19/kernel/fs/mbcache.ko added.
OK: /lib/modules/4.4.19/kernel/fs/ext4/ext4.ko added.
43904 blocks
/boot/initrd.gz created.
Be sure to run lilo again if you use it.
À partir de là, je peux éditer /etc/lilo.conf pour démarrer sur le noyau GENERIC censé charger
l’initrd au démarrage :
# Linux bootable partition config begins
image = /boot/vmlinuz-generic-4.4.19
initrd = /boot/initrd.gz
root = /dev/sda3
label = Linux
read-only
# Linux bootable partition config ends
Sur un système 32-bits avec le noyau SMP, vous aurez plutôt quelque chose comme ceci :
# Linux bootable partition config begins
image = /boot/vmlinuz-generic-smp-4.4.19-smp
initrd = /boot/initrd.gz
root = /dev/sda3
label = Linux
read-only
# Linux bootable partition config ends
Dans un cas comme dans l’autre, nous allons en profiter pour peaufiner les options globales de LILO,
comme nous l’avons vu en détail au chapitre 16 :
# Start LILO global section
# Append any additional kernel parameters:
append="video=1024x768 quiet ipv6.disable=1 vt.default_utf8=1"
boot = /dev/sda
compact # faster, but won't work on all systems.
lba32
...
# This is given in tenths of a second, so 600 for every minute: timeout = 50
...
Avant même de démarrer le serveur graphique pour la première fois, je prends soin de configurer la
disposition du clavier en environnement graphique, sous peine de me retrouver avec un clavier
QWERTY américain qui ne me servira pas à grand-chose :
# cd /etc/X11/xorg.conf.d/
# cp /usr/share/X11/xorg.conf.d/90-keyboard-layout.conf .
J’édite ce fichier à ma convenance. Voici la configuration pour un clavier AZERTY français, par
exemple :
Section "InputClass"
Identifier "keyboard-all"
MatchIsKeyboard "on"
MatchDevicePath "/dev/input/event*"
Driver "evdev"
Option "XkbLayout" "fr"
#Option "XkbVariant" ""
Option "XkbOptions" "terminate:ctrl_alt_bksp"
EndSection
Pour les détails de la configuration, je vous renvoie au chapitre précédent. Une fois que l’affichage
graphique fonctionne correctement, que vous avez le bon pilote pour votre carte vidéo, que
l’accélération graphique est activée comme il se doit et que vous disposez de la résolution adaptée à
votre écran, vous pouvez définir le bureau Xfce comme environnement graphique par défaut :
$ xwmconfig
Nous allons également basculer vers le niveau d’exécution 4 afin de ne plus avoir à invoquer startx
pour lancer l’affichage graphique. Éditez /etc/inittab en conséquence :
# Default runlevel. (Do not set to 0 or 6)
id:4:initdefault:
export LANG=fr_FR.utf8
...
export LC_COLLATE=fr_FR.utf8
Redémarrez la machine. Si tout se passe bien, c’est le gestionnaire de connexion XDM qui s’affiche.
Au premier lancement de Xfce, assurez-vous de bien choisir Utiliser les paramètres par défaut,
faute de quoi vous vous retrouverez avec un tableau de bord vide et vous ne pourrez plus faire grand-
chose.
Lancez sbopkg et confirmez la création de l’arborescence des répertoires nécessaires pour son
fonctionnement :
# sbopkg
The following directories do not exist:
Variable Assignment
-------- ----------
REPO_{ROOT,NAME,BRANCH} -> /var/lib/sbopkg/,SBo/,14.2
LOGFILE directory -------> /var/log/sbopkg
QUEUEDIR ----------------> /var/lib/sbopkg/queues
SRCDIR ------------------> /var/cache/sbopkg
TMP ---------------------> /tmp/SBo
You can have sbopkg create them or, if these values are incorrect, you can abort to edit your config files or
pass different flags.
(C)reate or (A)bort?: C
Le menu principal de sbopkg s’affiche. Effectuez une synchronisation initiale avec le dépôt de scripts
via l’option Sync with the remote repository. La durée de l’opération peut être plus ou moins longue
en fonction de la qualité de votre connexion Internet. Sachez simplement que les opérations de
synchronisation subséquentes seront plus rapides, étant donné que vous ne téléchargerez plus que les
nouveautés depuis la dernière synchronisation.
19
Notre système a beau être préparé aux petits oignons, l’interface graphique laisse à désirer avec
son aspect nord-coréen, dans la configuration par défaut. Rassurez-vous, nous allons remédier à
cela dans ce chapitre, qui sera consacré au seul peaufinage de notre environnement de bureau. Au
final, Xfce sera non seulement plus joli à voir, mais également plus fonctionnel.
Installer le jeu d’icônes Elementary-Xfce
Le jeu d’icônes Adwaita installé par défaut vous convient peut-être, mais ça ne coûte rien d’en
essayer d’autres. À part la panoplie d’icônes Tango, nous n’avons pas trop le choix pour l’instant.
Nous allons donc installer le jeu d’icônes Elementary-Xfce, pour lequel je maintiens un script sur
SlackBuilds.org.
Démarrez sbopkg et commencez par synchroniser (Sync) la copie locale de scripts d’installation avec
le serveur distant. Dans le champ de recherche (Search) saisissez elementary-xfce.
Votre recherche vous retourne un seul résultat desktop/elementary-xfce icon theme. Confirmez ce
résultat (Accept), optez pour une gestion automatique du paquet (Process) et confirmez de nouveau
(Install et Start). sbopkg se charge alors de récupérer l’archive source, de construire le paquet et de
l’installer. Notez que la construction de certains jeux d’icônes peut durer un bon moment en raison du
nombre important de fichiers qu’ils contiennent. Même sur une machine rapide, vous avez le temps
d’aller boire un café en attendant.
Une fois que le paquet elementary-xfce est construit et installé, quittez sbopkg (Main Menu>Exit) et
ouvrez les paramètres Xfce : Applications>Paramètres>Gestionnaire de
paramètres>Apparence>Icônes. Si tout s’est bien passé, vous disposez dorénavant de quatre
nouvelles entrées elementary Xfce. Cliquez sur la première et appréciez le changement.
Figure 19–1
elementary-Xfce est un jeu d’icônes sobre, élégant et complet.
Figure 19–2
Clearlooks Phenix est un thème discret et agréable à l’œil.
Figure 19–4
Cantarell est la police par défaut de l’environnement GNOME.
Une fois que le paquet est installé, rendez-vous dans le Gestionnaire de paramètres, allez dans
Apparence>Police et cherchez Cantarell dans le menu déroulant. Éventuellement, augmentez d’un
cran la taille de la police. Dans la zone Rendu, cochez la case Activer l’anti-crénelage.
Figure 19–5
Les fonds d’écran proviennent également de la distribution Elementary OS.
Si la collection de fonds d’écran luna-wallpapers ne vous suffit pas, construisez et installez le paquet
slack-wallpapers. Il s’agit là d’une collection de fonds d’écran assemblée et gérée par Petar Petrov, un
utilisateur enthousiaste de Slackware. Une fois que le paquet est installé, les nombreuses nouvelles
images apparaissent dans l’interface de sélection du fond d’écran. Notez que l’archive source pèse
près de 300 mégaoctets et qu’il y en a pour tous les goûts. Vous voilà prévenus.
Remplacer le menu Applications par Whisker Menu
Whisker Menu est un menu moderne et fonctionnel pour l’environnement Xfce. Nous allons l’installer
en remplacement du menu Applications traditionnel. Lancez sbopkg et cherchez xfce4-whiskermenu-plugin.
Construisez le paquet et installez-le.
Whisker Menu est un greffon (ou plug-in) du tableau de bord. Nous allons l’installer pas à pas.
Suivez le guide.
Figure 19–6
Cliquez-droit sur le menu Applications et supprimez-le.
Figure 19–7
Un clic-droit sur une zone vide du tableau de bord vous affiche le menu contextuel. Nous allons
ajouter un nouvel élément.
Figure 19–8
Sélectionnez le Menu Whisker dans la liste et cliquez sur Ajouter.
Figure 19–9
Le nouveau menu s’installe sur le bord supérieur droit de l’écran. Cliquez-droit sur l’icône de la
souris pour le déplacer.
Figure 19–10
Faites glisser le menu vers l’extrémité gauche du tableau de bord, à gauche du petit séparateur.
Cliquez-droit sur la souris et ouvrez les Propriétés du Menu Whisker.
Figure 19–11
Sélectionnez Icône et texte dans le menu déroulant de l’Affichage.
Figure 19–12
Le changement de catégories au survol vous évitera les clics à répétition.
Figure 19–13
Les commandes pour le changement d’utilisateur, la modification des applications et du profil ne
servent à rien sous Slackware. Il vaut mieux les supprimer.
Figure 19–14
Les Actions de recherche ne nous servent à rien non plus. Nous allons également les supprimer.
Figure 19–15
Voici à quoi ressemble le Menu Whisker sur ma station de travail. Il manque encore la plupart des
applications, que nous installerons dans le prochain chapitre.
Figure 19–16
L’accès au gestionnaire de paramètres Xfce est en bas du menu, à côté des icônes pour le verrouillage
de l’écran et la déconnexion de l’utilisateur.
Remplacer le tableau de bord inférieur par le dock Plank
Dans la configuration par défaut, le tableau de bord inférieur du bureau Xfce est censé fournir un
lanceur d’applications pour accéder en un simple clic aux logiciels les plus utilisés comme le
terminal graphique, le gestionnaire de fichiers ou le navigateur Web. Certes, ce tableau de bord fait
ce qu’il est censé faire, mais il suffit de le comparer au dock de Mac OS X pour constater qu’on peut
mieux faire en matière d’esthétique et de fonctionnalité.
Figure 19–17
Comment faire pour obtenir un dock aussi élégant que celui de Mac OS X ?
Je disais un peu plus haut que le monde du libre se distingue souvent par un grand nombre de choix
pour les composants d’une distribution. En voici encore un exemple assez parlant. Faisons une petite
recherche Google sur les docks – ou barres de lancement d’applications animées – pour les
environnements de bureau Linux. Nous nous rendons compte qu’il existe de nombreux projets
similaires en apparence : Docky, Cairo Dock, Avant Window Navigator, Plank, etc.
Un côté réjouissant dans le monde de Linux et du libre, c’est qu’on est effectivement libre de tester
tous ces projets en les installant sur sa machine, en jouant avec et en les adoptant – ou en les rejetant
– éventuellement. Un côté exaspérant du monde de Linux et du libre, c’est qu’on y passe facilement
des week-ends ensoleillés au lieu d’aller faire de l’escalade avec les amis.
J’ai donc testé tous ces docks pour vous et si vous voulez vous éviter la corvée d’en faire un tour
exhaustif et complet, vous pouvez simplement me croire sur parole et opter directement pour Plank,
qui constitue de loin le plus fonctionnel et le plus stable du monde du libre. Il offre juste la poignée
de paramétrages qu’il faut, ses animations sont jolies à voir tout en restant discrètes, il est très peu
gourmand en ressources et je ne peux que vous le conseiller. Tout comme certains composants que
nous avons vus plus haut dans ce chapitre, Plank est développé par l’équipe d’Elementary OS.
Installer Plank
L’installation de Plank nous confronte pour la première fois à un problème un peu plus touffu de
dépendances de paquets. Rassurez-vous, ce n’est pas bien compliqué non plus. Rendez-vous sur la
page du paquet plank sur le site SlackBuilds.org et découvrez les dépendances du paquet. Vous lisez
ceci : « This requires : libgee, libdbusmenu, bamf ». Vous cliquez alors sur le lien du paquet libgee,
qui vous annonce une autre dépendance : « This requires : vala ». Vous revenez en arrière, vous
suivez le lien du paquet libdbusmenu et c’est la même chanson : « This requires : json-glib ». Allons
bon !
Pour résoudre toutes ces dépendances, il suffit d’être un tout petit peu méthodique. Résumons le
problème :
• plank dépend de libgee, libdbusmenu et bamf.
• libgee dépend de vala.
• libdbusmenu dépend de json-glib.
• bamf dépend de libgtop et libwnck3.
À partir de là, je peux établir un ordre de construction possible pour mes paquets, par exemple :
1 vala
2 libgee
3 json-glib
4 libdbusmenu
5 libwnck3
6 libgtop
7 bamf
8 plank
Il ne reste plus qu’à démarrer sbopkg pour construire et installer les paquets dans l’ordre proposé. Sur
une machine dotée d’un processeur double-cœur et de deux gigaoctets de RAM, cette opération m’a
pris un peu moins d’un quart d’heure.
Maintenant que la voie est libre, essayez de lancer Plank à la main. Appuyez sur Alt+F2 pour afficher
la fenêtre de lancement manuel, saisissez plank et confirmez.
Figure 19–19
Le raccourci clavier Alt+F2 permet de lancer n’importe quelle application graphique. Utilisez-le
pour le test initial de Plank.
Figure 19–20
Plank s’affiche en bas de l’écran dans sa configuration par défaut.
Pour l’instant, Plank n’est pas encore trop fourni en applications. Notre prochain souci consistera à
nous assurer qu’il soit lancé automatiquement au démarrage du bureau Xfce. Rendez-vous dans le
Gestionnaire de paramètres et ouvrez Session et démarrage. Affichez l’onglet Démarrage
automatique d’application. Vous y verrez une liste de tous les programmes lancés automatiquement à
l’ouverture d’une session.
Nous allons ajouter Plank à cette liste. Cliquez sur Ajouter et renseignez la petite fenêtre qui s’ouvre.
Dans le champ Nom, vous pourrez mettre « Plank ». Le champ Description sera quelque chose
comme « Lanceur d’applications ». Quant à la Commande, c’est tout simplement /usr/bin/plank.
Cliquez sur Valider, fermez le gestionnaire de paramètres et testez la configuration de la session en
vous déconnectant et en vous reconnectant.
Figure 19–21
Configuration du lancement automatique de Plank
Là encore, tout se règle dans le Gestionnaire de paramètres, dans la section Peaufinage des
fenêtres. La configuration du compositeur est une petite usine à gaz et il y aurait encore de quoi
passer un après-midi entier à tester les possibilités offertes par toutes les options dans toutes les
permutations possibles. Au lieu de cela, nous allons nous montrer plus pragmatiques et décocher
l’option Afficher des ombres sous les fenêtres dock, ce qui nous débarrasse du trait horizontal. Pour
le reste, vous pouvez vous inspirer de la capture d’écran effectuée sur ma station de travail
principale pour obtenir une configuration acceptable du compositeur d’affichage. Notez l’apparition
des petits effets de transparence lorsque vous déplacez des fenêtres.
Configurer Plank
Revenons-en à notre lanceur d’applications. Ne vous inquiétez pas si vous ne trouvez pas d’icône ou
de menu contextuel pour accéder aux préférences de Plank. Ouvrez simplement un terminal et
invoquez la commande suivante :
$ plank --preferences
La fenêtre des préférences affiche la configuration par défaut. Nous allons modifier quelques réglages
dans l’onglet Apparence.
• Dans le menu déroulant Thème, choisissez Transparent.
• Activez Zoom sur icône.
• Diminuez la valeur du zoom de 150 à 120.
• Éventuellement, augmentez la taille des icônes pour un utilisateur avec des problèmes de vue.
• Fermez la fenêtre des préférences de Plank.
Figure 19–23
Une configuration sobre et élégante pour Plank
Figure 19–24
Plank sur ma station de travail, avec toutes les applications que j’utilise régulièrement.
Remplacer le gestionnaire de connexion XDM par
LXDM
Le gestionnaire de connexion XDM fait également partie de ces composants « bruts de décoffrage »
qui jouent leur rôle de manière imperturbable certes, mais dont l’esthétique peut faire grincer des
dents. Ajoutons à cela qu’il n’est pas vraiment fonctionnel, car il manque des composants essentiels
dans sa configuration par défaut, comme une paire de boutons Redémarrer ou Éteindre. Il est certes
possible de peaufiner XDM pour le rendre plus attrayant et je vous invite à consulter le travail
remarquable d’Eric Hameleers sur son LiveCD de Slackware. Il n’empêche que XDM reste un
composant obtus et très limité.
Le seul gestionnaire de connexion alternatif fourni par Slackware serait KDM, mais son utilisation
nécessiterait l’installation des paquets de base de KDE, étant donné qu’il a été pensé spécifiquement
pour cet environnement de bureau. Nous allons plutôt opter pour un gestionnaire de connexion
alternatif plus léger.
Le portail SlackBuilds.org propose en tout et pour tout deux gestionnaires de connexion alternatifs :
Slim et LXDM. J’ai testé les deux et mon choix se porte sur LXDM, qui a tout pour plaire. Il offre
juste les fonctionnalités qu’il faut sans être encombrant, il n’a pas de dépendances extérieures, il est
facile à configurer et plutôt plaisant à voir.
Installer LXDM
Lancez sbopkg, recherchez « lxdm », construisez le paquet et installez-le. Éventuellement, lisez la page
du paquet sur SlackBuilds.org. Outre le README habituel, vous noterez la présence d’un fichier
README.Slackware qui explique la procédure post-installation nécessaire pour faire fonctionner LXDM
sous Slackware. Nous allons la détailler ici.
Examinez sommairement le contenu du fichier /etc/rc.d/rc.4. C’est un script de démarrage du système,
qui se charge plus particulièrement de lancer tout ce qu’il faut lorsqu’on démarre en niveau
d’exécution 4, notamment un gestionnaire de connexion. Regardez le début de ce fichier :
# Tell the viewers what's going to happen...
echo "Starting up X11 session manager..."
# Try to use GNOME's gdm session manager. This comes first
# because if gdm is on the machine then the user probably
# installed it and wants to use it by default:
if [ -x /usr/bin/gdm ]; then
exec /usr/bin/gdm -nodaemon
fi
Essayons de traduire ce qui est compris entre les mots if et fi : « si (if) /usr/bin/gdm existe et est
exécutable (-x), alors (then) exécute-le. » À partir de là, vous comprenez l’organisation du fichier. Il
teste successivement la présence des gestionnaires de connexion GDM, KDM, SDDM et XDM ; dès
qu’il en trouve un, il le lance.
Il nous faut donc insérer une section pour LXDM en tête de ce fichier :
# Tell the viewers what's going to happen...
echo "Starting up X11 session manager..."
# LXDM
if [ -x /usr/sbin/lxdm ]; then
exec /usr/sbin/lxdm
fi
Redémarrez le système et, si tout se passe bien, vous serez salué par votre nouveau gestionnaire de
connexion. Attention : lors de votre toute première connexion, vous devez explicitement choisir
Session Xfce dans le petit sélecteur Bureau en bas à gauche de l’écran.
Figure 19–25
Le gestionnaire de connexion LXDM dans sa configuration par défaut
Configurer LXDM
LXDM se configure par le biais du fichier /etc/lxdm/lxdm.conf clairement structuré et commenté.
Ouvrons ce fichier et profitons-en pour adapter LXDM à nos besoins. Nous allons traiter uniquement
les options qui nous intéressent, par ordre d’apparition.
Voyons un exemple pratique pour illustrer l’utilité de cette option. J’administre un réseau Linux dans
une école privée, qui compte une centaine d’utilisateurs. Les élèves et les enseignants étrangers
utilisent parfois des dispositions clavier diverses. Le clavier AZERTY est certes employé lors de la
connexion, mais une fois que Xfce est démarré, le gestionnaire de paramètres permet de définir une
disposition personnalisée, comme le QWERTY pour les anglophones ou le QWERTZ pour les
germanophones. Or, si l’option reset n’est pas activée, le dernier clavier sélectionné restera actif et
l’utilisateur qui viendra juste après risque d’avoir une mauvaise surprise en saisissant son mot de
passe. reset=1 sert à repartir sur la configuration par défaut du serveur graphique, avec la disposition
du clavier définie dans le fichier /etc/X11/xorg.conf.d/90-keyboard-layout.conf.
Admettons que vous souhaitiez remplacer cette image par l’un des fonds d’écran du paquet luna-
wallpapers. Dans ce cas, lancez Xfce, ouvrez votre navigateur de fichiers et parcourez les fonds
d’écran disponibles dans les répertoires comme /usr/share/xfce4/backdrops ou /usr/ share/wallpapers.
Notez le chemin complet vers l’image que vous souhaitez utiliser et indiquez-le dans lxdm.conf :
## background of the greeter
bg=/usr/share/xfce4/backdrops/Lighthouse.jpg
Au prochain démarrage, LXDM n’affichera plus que le sélecteur de bureaux en bas à gauche.
Si l’option disable est activée, elle supprime l’affichage des utilisateurs. Cela aura surtout un intérêt
lorsqu’il y a beaucoup de monde sur le système, comme c’est le cas pour l’école citée précédemment.
Avec cette option, les utilisateurs ne pourront plus retrouver leur nom dans une liste déroulante. Au
lieu de cela, ils devront explicitement saisir leur login et leur mot de passe :
[userlist]
## if disable the user list control at greeter
disable=1
Nous voilà avec un bureau Xfce configuré « aux petits oignons ». Il ne nous reste plus qu’à installer
une panoplie d’applications. C’est ce que nous allons faire dans le chapitre suivant.
20
Maintenant que nous avons peaufiné notre environnement de bureau pour une utilisation agréable,
le moment est venu de découvrir une panoplie d’applications pour les tâches les plus courantes.
Certains logiciels sont déjà présents dans la distribution. D’autres seront compilés depuis le code
source ou installés depuis un dépôt de paquets tiers. Notre environnement Xfce est ainsi
transformé pas à pas en un bureau fonctionnel et complet qui n’a rien à envier à ses grands
concurrents propriétaires.
Naviguer sur Internet avec Mozilla Firefox
Beaucoup d’entre vous ont certainement déjà vu Mozilla Firefox de près ou de loin. Je me permets
quand même d’en fournir une petite présentation, car il existe toujours un nombre considérable
d’irréductibles qui pensent qu’Internet, c’est le e bleu inventé par notre monopoliste préféré.
Firefox est un navigateur web libre et gratuit, développé par la fondation Mozilla. Actuellement, c’est
le principal concurrent des navigateurs propriétaires Internet Explorer, Edge et Google Chrome.
Firefox offre toutes les fonctionnalités d’un navigateur moderne comme la navigation par onglets, le
blocage des pop-up, les moteurs de recherche intégrés et bien plus encore. Firefox respecte
scrupuleusement les standards du Web tels qu’ils sont définis par le World Wide Web Consortium, ce
qui le distingue de certains de ses concurrents propriétaires. Il accepte également des centaines
d’extensions et de thèmes graphiques, ce qui permet à chaque utilisateur de le modifier selon ses
goûts et ses préférences.
Figure 20–1
Le navigateur web Mozilla Firefox
Dans notre installation Slackware, c’est le paquet mozilla-firefox du groupe xap qui fournit le
navigateur :
$ ls /var/log/packages/*firefox*
/var/log/packages/mozilla-firefox-45.4.0esr-x86_64-1_slack14.2
VERSIONS Firefox ESR et Thunderbird ESR
Slackware intègre les versions ESR (Extended Support Release) de Firefox et de Thunderbird. En
effet, la fondation Mozilla a décidé d’adopter un rythme de publication frénétique, à raison d’une
nouvelle version toutes les six semaines. Parallèlement à ce calendrier quelque peu insensé, la
branche ESR propose des versions plus stabilisées, maintenues pour une durée d’au moins dix
mois après leur date de sortie et qui ne bénéficient que de mises à jour de sécurité durant cette
période. Ces versions s’adressent aux organisations, aux associations et aux entreprises qui ne
peuvent pas se permettre de tester leurs applications web avec une nouvelle version de Firefox
toutes les six semaines.
Franciser Firefox
La localisation ne fait malheureusement pas partie des points forts de Slackware. Les environnements
de bureau comme Xfce ou KDE comprennent certes déjà les traductions complètes dans toutes les
langues courantes et même certaines dont vous ignoriez l’existence. Mais pour des applications
comme Firefox, Thunderbird ou Seamonkey, Slackware ne propose malheureusement pas les paquets
de localisation tels qu’on peut les trouver dans d’autres distributions. Il va donc falloir les installer à
la main.
La procédure de localisation de Firefox est inutilement compliquée et même contre-intuitive. Les
traductions du logiciel ainsi que les dictionnaires sont livrés dans des modules séparés. Non content
de cela, Firefox nous oblige à sauter à travers des cerceaux en feu pour basculer vers une autre
langue pour l’affichage de l’interface et des pages web. La solution la plus simple consiste à installer
le module Locale Switcher, qui permet de changer de langue en deux clics.
Figure 20–2
Les développeurs de Firefox ont pris un malin plaisir à bien cacher l’accès au menu principal.
Figure 20–3
La traduction française de l’interface vient sous forme de module (Add-on) complémentaire.
Figure 20–4
Effectuez une recherche sur « français » et installez le module « Français Language Pack ». En
passant, profitez-en pour installer le dictionnaire correspondant.
Le module de traduction (Language Pack) doit correspondre à la version installée de Firefox. Nous
allons nous éviter la corvée de récupérer et réinstaller manuellement les traductions et les
dictionnaires après chaque mise à jour. Retournez dans l’interface de gestion des modules via
Outils>Modules complémentaires, ouvrez la section Langues, cliquez sur le petit lien bleu Plus
juste en-dessous de Français Language Pack et activez les Mises à jour automatiques. Procédez de
même pour le Dictionnaire français.
Figure 20–5
Les deux modules sont installés, mais nous devons encore les activer.
Figure 20–6
Revenez dans l’interface de recherche des modules, cherchez « locale » et installez le module Locale
Switcher.
Figure 20–7
Cliquez-droit sur l’icône du menu principal de Firefox et cochez « Menu Bar » dans le menu
contextuel.
Figure 20–8
Après avoir redémarré pour activer le module Locale Switcher, repérez l’entrée Tools>Languages
dans le menu de Firefox et sélectionnez le français comme langue principale.
Figure 20–9
L’activation de la traduction nécessite encore un redémarrage.
Figure 20–10
L’interface de Firefox s’affiche désormais en français.
Figure 20–11
Après une mise à jour, Firefox récupérera automatiquement la traduction correspondante.
Se documenter
Le présent chapitre ne peut pas prétendre vous fournir une initiation complète et détaillée à
l’utilisation de Firefox. Laissons donc le navigateur s’en charger lui-même, un peu comme lorsque
vous avez lancé vimtutor pour vous initier à Vim. Lancez Firefox et ouvrez la rubrique Aide>Visite
guidée. Lisez ces pages au moins une fois. Regardez les petites vidéos qui les illustrent. D’une part,
ce tutoriel clarifie des termes comme « site », « page », « adresse web », « moteur de recherche »,
etc. D’autre part, même les utilisateurs avancés y découvriront certainement une ou deux astuces fort
pratiques.
De très nombreux utilisateurs – même chevronnés – ont appris sur le tas à se servir des ressources du
Web, ce qui entraîne bien souvent des usages et des réflexes aberrants. C’est un peu comme si vous
vous demandiez pourquoi votre Jaguar pointe à 60 km/h et fume autant, avant qu’une âme charitable
ne vous suggère prudemment de passer la seconde. Dans un cas comme dans l’autre, l’apprentissage
des notions de base augmentera votre confort d’utilisation de manière significative.
En attendant la disparition de cette technologie obsolète, de nombreuses pages web l’utilisent encore.
Pour les afficher correctement, il faut donc installer le plug-in correspondant.
Lancez sbopkg, recherchez le paquet flashplayer-plugin, construisez-le et installez-le. Ensuite, lancez
Firefox, saisissez about:plugins dans la barre d’adresses et ouvrez cette page. Si tout se passe bien,
vous verrez apparaître le plug-in Shockwave Flash.
Figure 20–12
La page des plug-ins de Firefox
CLIN D’ŒIL
Une autre solution – que je pratique – consiste à vivre sans télévision, ce qui présente des
embûches insoupçonnées. La Trésorerie de Saint-Chaptes m’avait ainsi envoyé il y a quelques
années une mise en demeure pour un retard de paiement sur la redevance audiovisuelle. L’agent à
qui j’avais expliqué que je ne possédais pas de poste TV depuis 1987 m’a répondu que « c’est
impossible » et a menacé de m’envoyer l’huissier.
Pour vous faire une idée de ce à quoi pourrait ressembler Internet sans la publicité, installez le
module Adblock Plus. Comme son nom le suggère, il bloque tout simplement le chargement des
publicités. Non content de cela, il se charge de recalculer l’aspect d’une page web sans les différents
encarts publicitaires.
L’installation de ce module est un jeu d’enfant. Ouvrez Outils>Modules complémentaires, allez dans
l’onglet Catalogue et recherchez « adblock ». Repérez Adblock Plus dans la liste et installez-le. Le
module est prêt à l’emploi et ne nécessite aucune configuration.
Figure 20–13
Internet sans la pub, c’est possible grâce à Adblock Plus.
Figure 20–14
Thunderbird est un client mail libre et gratuit pour toutes les plates-formes.
Franciser Thunderbird
Comme pour Firefox, notre premier souci consistera à installer la traduction pour afficher l’interface
de Thunderbird en français. Et la procédure est aussi pénible que pour Firefox. Là encore, le
distributeur n’a malheureusement rien fait pour nous faciliter la tâche.
Tant que vous n’avez pas configuré de compte de messagerie, Thunderbird démarre l’assistant de
création de compte : Would you like a new email address ? Fermez la fenêtre de l’assistant, ce qui
vous amène à l’interface à proprement parler de Thunderbird.
L’icône pour afficher le menu principal est la même que pour Firefox. Cliquez dessus et ouvrez Add-
ons pour afficher l’interface de gestion des modules complémentaires. Recherchez « français » et
installez les deux modules Français Language Pack et French spelling dictionary.
Ensuite, recherchez « locale ». Vous constaterez que le module Locale Switcher n’existe pas pour
Thunderbird, pour des raisons mystérieuses. Je vous conseille donc d’installer Quick Locale
Switcher. Redémarrez Thunderbird tout en ignorant la fenêtre de l’assistant de création de compte.
Ouvrez l’interface de gestion des modules complémentaires et repérez Quick Locale Switcher dans
l’onglet Extensions. Cliquez sur Preferences et, dans l’onglet General, cochez la case User Interface
Language, puis fermez la fenêtre des préférences.
Figure 20–15
Le module Quick Locale Switcher nous permet d’afficher l’interface de Thunderbird en français.
À présent, affichez la barre de menu de Thunderbird comme vous l’avez fait pour Firefox, c’est-à-
dire en cliquant-droit sur l’icône du menu principal et en cochant Menu Bar dans le menu contextuel.
Ouvrez Tools>Quick Locale Switcher et sélectionnez fr-FR Français (France). Redémarrez une
dernière fois et, si tout se passe bien, l’assistant de création de compte s’affiche désormais en
français.
Figure 20–16
L’assistant de création de compte de Thunderbird
Figure 20–17
La configuration manuelle d’un compte de messagerie
Dans sa configuration par défaut, Thunderbird enfreint curieusement une des règles les plus
élémentaires de la nétiquette. En effet, le format d’envoi préconfiguré est le HTML, alors que le bon
usage préconise l’utilisation du format texte simple. Nous allons régler ce problème tout de suite.
Rendez-vous dans Édition>Paramètres des comptes. Dans la partie gauche de la fenêtre de
configuration, cliquez sur Rédaction et adressage. Puis, dans la partie centrale, décochez la case
Rédiger les messages en HTML et confirmez par OK.
Figure 20–18
Préférez le format texte simple au HTML.
Philippe, le secrétaire de la mairie de notre petit village, passe ainsi un bon quart d’heure tous les
matins à séparer le bon grain de l’ivraie, en triant manuellement les vrais courriers adressés à la
mairie dans un flot de plus en plus incommensurable de spams et autres messages trash de tout genre.
La mairie dispose d’un abonnement Orange et Philippe se sert de l’outil préconisé par le fournisseur
d’accès : le Webmail. D’après ce que j’ai pu observer, les utilisateurs semblent en majorité gérer
leur courrier électronique comme Philippe. J’en profite donc ici pour vous présenter une des
nombreuses stratégies pour trier le courrier entrant, à savoir le filtrage automatique.
Dans la configuration par défaut de Thunderbird, tous les nouveaux messages reçus s’entassent pêle-
mêle dans la boîte de réception (Courrier entrant). Mon éditeur Alexandre est un correspondant
régulier, comme d’ailleurs l’équipe de relecteurs de la maison d’édition. Je vais donc créer un filtre
pour que tous les messages dont l’expéditeur a une adresse @eyrolles.com aillent directement dans la
boîte aux lettres Eyrolles.
Je clique-droit sur l’adresse mail, juste au-dessus de Courrier entrant et je sélectionne Nouveau
dossier. Je nomme le dossier du nom de mon correspondant (Eyrolles en l’occurrence) et celui-ci
apparaît dans la liste des dossiers. Dans Courrier entrant, je sélectionne n’importe quel message en
provenance d’Eyrolles. Dans l’en-tête du message, je clique-droit sur le nom de l’expéditeur et je
choisis Créer un filtre dans le menu contextuel.
Figure 20–19
Le filtrage automatique des courriels ajoute un confort d’utilisation considérable.
Figure 20–20
La suite Seamonkey constitue une alternative à Firefox et à Thunderbird.
Franciser Seamonkey
Le menu Applications comporte deux entrées Seamonkey et Seamonkey Mail. Au premier lancement,
Seamonkey vous propose éventuellement d’importer votre compte de courrier électronique depuis
Thunderbird, ce que nous allons ignorer pour l’instant. Vous constatez que l’interface s’affiche en
anglais. Là encore, les développeurs ont fait de leur mieux pour transformer la localisation de
l’application en véritable chasse au trésor.
Dans un premier temps, affichez la version de la suite : Help>About Seamonkey. Sur mon système,
c’est la version 2.40 qui est installée. J’ouvre Seamonkey à l’adresse
https://ftp.mozilla.org/pub/seamonkey/releases/, je cherche la version 2.40, je me rends dans le répertoire
langpack et je clique sur le lien vers le fichier seamonkey-2.40.fr.langpack.xpi qui fournit la traduction
française. Au lieu de télécharger le fichier en question, Seamonkey me propose de l’installer, ce que
je fais en cliquant sur Install Software, puis en confirmant par Install Now pour le module
complémentaire Français Language Pack. Ensuite, j’ouvre les préférences de Seamonkey via
Edit>Preferences, je sélectionne la catégorie Appearance dans la fenêtre de gauche. Dans la fenêtre
centrale, je repère User Interface Language, je clique sur le menu déroulant et je remplace English
par French. Je ferme la fenêtre et, au prochain redémarrage, Seamonkey s’affiche en français.
Utiliser Seamonkey
La suite Seamonkey n’est rien d’autre que la continuation de celle de Mozilla. Pour basculer entre les
fenêtres de la suite Internet, passez par le menu Fenêtre et sélectionnez Navigateur, Courrier et
groupes, Carnet d’adresses, etc. Alternativement, utilisez les raccourcis clavier correspondants :
Ctrl+1 pour le navigateur, Ctrl+2 pour le courrier et ainsi de suite.
Les plug-ins que vous installez pour Firefox fonctionnent également avec Seamonkey. Pour en avoir
le cœur net, tapez about:plugins dans la barre d’adresse du navigateur et vous verrez apparaître
Shockwave Flash.
En résumé, comme le formulait Pierre Jarillon, ingénieur en aérospatiale à la retraite, lors d’une
conférence sur le logiciel libre : « Y’a moins bien, mais c’est plus cher ».
Pour des raisons mystérieuses, Slackware propose uniquement des paquets pour Calligra, la suite
intégrée dans l’environnement KDE, mais c’est en vain que nous cherchons un paquet natif pour
LibreOffice. Qu’à cela ne tienne, il nous suffit d’aller sur le portail SlackBuilds.org pour trouver tout ce
qu’il nous faut.
Figure 20–21
Le livre que vous tenez entre les mains a été rédigé à l’aide du traitement de texte LibreOffice Writer.
Installer JDK
La page du paquet libreoffice sur SlackBuilds.org mentionne une dépendance requise : jdk. Le Java
Development Kit est un ensemble de bibliothèques logicielles du langage de programmation Java.
JDK peut certes être téléchargé gratuitement, mais les restrictions de licence imposées par la société
Oracle empêchent les mainteneurs de distributions Linux d’en fournir des paquets binaires. La
solution proposée par Patrick Volkerding est de fournir un script java.SlackBuild qui facilite la
construction d’un paquet Slackware. Rendez-vous sur un miroir de téléchargement Slackware ou jetez
un œil sur le DVD d’installation, dans le répertoire extra/java/. Dans un premier temps, nous allons
créer un répertoire /root/jdk/ et rapatrier les scripts de construction depuis le DVD ou le site distant :
# tree /root/jdk/
/root/jdk/
java.SlackBuild
profile.d
jdk.csh
jdk.sh
jre.csh
jre.sh
README
slack-desc.jdk
slack-desc.jre
1 directory, 8 files
Figure 20–23
Une fois que vous avez accepté la licence, la liste des fichiers à télécharger s’affiche.
Ce qui nous intéresse ici, c’est l’archive *.tar.gz qui correspond à notre plate-forme (Linux) et à notre
architecture : x86 pour un système 32-bits, x64 pour un système 64-bits. À titre d’exemple, la dernière
version en date au moment de la rédaction de ces lignes est le Java SE Development Kit 8u101. Je
dois donc télécharger un des deux fichiers suivants :
• jdk-8u101-linux-i586.tar.gz pour un système 32-bits ;
• jdk-8u101-linux-x64.tar.gz pour un système 64-bits.
Chacun de ces fichiers pèse plus de 170 mégaoctets. Une fois que j’ai récupéré celui qu’il me faut, je
le place dans mon répertoire /root/jdk/, en tant que root bien sûr :
# tree /root/jdk/
/root/jdk/
java.SlackBuild
jdk-8u101-linux-x64.tar.gz
profile.d
jdk.csh
jdk.sh
jre.csh
jre.sh
README
slack-desc.jdk
slack-desc.jre
1 directory, 9 files
Installer LibreOffice
En tout et pour tout, l’application LibreOffice est constituée de trois paquets :
• libreoffice : la suite bureautique à proprement parler ;
• libreoffice-langpack : la traduction de l’interface ;
• libreoffice-helppack : l’aide en ligne de l’application.
Je vous conseille de les construire localement sans passer par sbopkg. Je vous expliquerai la raison de
cette façon de procéder en cours de route. Pour l’instant, créez un répertoire /root/libreoffice/,
récupérez les trois archives de SlackBuilds libreoffice.tar.gz, libreoffice-langpack.tar.gz et libreoffice-
helppack.tar.gz et décompressez-les. Voilà ce que vous devez obtenir :
# tree /root/libreoffice/
/root/libreoffice/
libreoffice
doinst.sh
libreoffice.info
libreoffice.SlackBuild
open-libre-together.sh
README
slack-desc
libreoffice-helppack
libreoffice-helppack.info
libreoffice-helppack.SlackBuild
README
slack-desc
libreoffice-langpack
libreoffice-langpack.info
libreoffice-langpack.SlackBuild
README
slack-desc
3 directories, 14 files
Commençons par construire le paquet libreoffice. Il nous faut d’abord récupérer le fichier « source »,
ou plus exactement le paquet RPM qui correspond à notre architecture. Jetez un œil dans le fichier
libreoffice.info, qui contient les liens de téléchargement des fichiers respectifs :
PRGNAM="libreoffice"
VERSION="5.2.2"
HOMEPAGE="http://www.libreoffice.org"
DOWNLOAD="http://download.documentfoundation.org/libreoffice/
stable/5.2.2/rpm/x86/LibreOffice_5.2.2_Linux_x86_rpm.tar.gz"
MD5SUM="67a651e20b0dfe6d6e6fba71e0a776d0"
DOWNLOAD_x86_64="http://download.documentfoundation.org/
libreoffice/stable/5.2.2/rpm/x86_64/
LibreOffice_5.2.2_Linux_x86-64_rpm.tar.gz"
MD5SUM_x86_64="67fac09efab4fcdcb3a8d530929d38a0"
REQUIRES="jdk"
MAINTAINER="Willy Sudiarto Raharjo"
EMAIL="willysr@slackbuilds.org"
À partir de là, je pourrais très bien lancer Links comme d’habitude pour me rendre à l’adresse
http://download.documentfoundation.org et naviguer dans l’arborescence libreoffice pour retrouver le bon
fichier. Une astuce consiste à invoquer la commande suivante sur un système 64-bits :
# source libreoffice.info && wget -c $DOWNLOAD_x86_64
Cela signifie : « prends en compte le contenu du fichier libreoffice.info et télécharge le fichier qui se
trouve à l’adresse indiquée par la variable DOWNLOAD_x86_64 ».
Sur un système 32-bits, c’est la variable DOWNLOAD qu’il faudra utiliser :
# source libreoffice.info && wget -c $DOWNLOAD
Une fois que vous avez récupéré l’archive *.rpm.tar.gz, lancez la construction du paquet et installez-le,
ce qui se fait sans histoires.
Passons maintenant au paquet libreoffice-langpack, où les choses se compliquent un tout petit peu.
Jetons un œil au début du script libreoffice-langpack.SlackBuild :
PRGNAM=libreoffice-langpack
VERSION=${VERSION:-"5.2.2"}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
LOLANG=${LOLANG:-en-GB}
D’après les explications données dans les commentaires du script, c’est la variable LOLANG qui définit
la langue du paquet : en-GB pour l’anglais britannique dans le cas présent. Allons voir maintenant les
liens de téléchargement dans le fichier libreoffice-langpack.info :
PRGNAM="libreoffice-langpack"
VERSION="5.2.2"
HOMEPAGE="http://www.libreoffice.org"
DOWNLOAD="http://download.documentfoundation.org/libreoffice/
stable/5.2.2/rpm/x86/LibreOffice_5.2.2_Linux_x86_rpm_langpack_en-GB.tar.gz"
MD5SUM="592d8b8b0b114574c924f62dcc6801c0"
DOWNLOAD_x86_64="http://download.documentfoundation.org/
libreoffice/stable/5.2.2/rpm/x86_64/
LibreOffice_5.2.2_Linux_x86-64_rpm_langpack_en-GB.tar.gz"
MD5SUM_x86_64="65d2c596ecf99dda1d804508f05390f9"
REQUIRES="libreoffice"
Nous voyons que les liens de téléchargement DOWNLOAD et DOWNLOAD_x86_64 sont « codés en dur » pour la
version britannique (en-GB). Nous devons donc récupérer manuellement le fichier correspondant au
français :
# links download.documentfoundation.org
Allez dans le répertoire libreoffice, suivez la branche stable, repérez la bonne version (5.2.2 dans notre
exemple) et suivez le lien correspondant au format (rpm) et à l’architecture (x86 ou x86_64). Dans ce
répertoire, repérez le lien *_rpm_langpack_fr.tar.gz et téléchargez l’archive. Quittez Links et lancez la
construction du paquet en passant la variable LOLANG au script :
# LOLANG=fr ./libreoffice-langpack.SlackBuild
Procédez de même pour la construction du paquet libreoffice-helppack. Vous trouverez les archives
« sources » dans le même répertoire que celles du paquet libreoffice-langpack.
Slackware fournit ces polices de caractères dans le groupe de paquets X. Voici les paquets qui
fournissent des polices pour des jeux de caractères autres que notre alphabet occidental :
• font-misc-cyrillic ;
• font-misc-ethiopic ;
• font-misc-meltho ;
• sazanami-fonts-ttf ;
• sinhala_lklug-font-ttf ;
• tibmachuni-font-ttf ;
• ttf-indic-fonts ;
• wqy-zenhei-font-ttf.
Supprimez-les à l’aide de removepkg ou de slackpkg remove. N’oubliez pas que si vous vous placez dans
/var/log/packages, vous pourrez utiliser la complétion automatique pour les noms des paquets.
Relancez LibreOffice Writer après la suppression des paquets et retournez dans le sélecteur de
polices. Vous constaterez tout de suite que c’est beaucoup plus clair. En contrepartie, les habitués de
Microsoft Office remarqueront probablement qu’il leur manque un certain nombre de grands
classiques.
Figure 20–26
L’installation d’un jeu de polices Microsoft améliore considérablement l’affichage des documents
confectionnés avec MS Office.
Les formats .doc ou .docx sont à peu près correctement gérés par LibreOffice Writer, certes. En
revanche, il semble y avoir des problèmes curieux avec la mise en page. La raison en est que vous ne
disposez pas du même jeu de polices que votre collègue sous Windows. S’il avait fait correctement
les choses, il aurait exporté son document en PDF (Portable Document Format) avant de vous
l’envoyer, car ce format est fait précisément pour cela. Simplement, sa version de Microsoft Office
ne gère pas l’export PDF et il n’avait pas envie d’acheter le plug-in correspondant. Dans notre cas de
figure, Writer ne dispose pas du jeu de polices installées par défaut sur une machine Windows et il ne
lui reste qu’à remplacer les polices Times New Roman, Trebuchet, Verdana et Courier par celles qui
leur ressemblent le plus, ce qui reste une approximation.
INTEROPÉRABILITÉ À quoi sert le PDF ?
Le format de fichiers PDF (Portable Document Format) incorpore non seulement le contenu à
proprement parler d’un document, mais également les polices de caractères nécessaires pour son
affichage. Lorsque vous envoyez un document à quelqu’un, exportez-le au format PDF si possible.
C’est la seule façon d’être sûr que votre correspondant verra la même chose que vous à l’écran et
que son imprimante sortira le même document que la vôtre, indépendamment du système
d’exploitation et des applications utilisées.
La solution la plus simple consiste à installer un jeu de polices Microsoft sur notre machine. Là
encore, le portail SlackBuilds.org nous facilite la vie grâce au paquet webcore-fonts, qui contient non
seulement les « classiques » comme Times New Roman, Arial, Trebuchet ou Verdana, mais
également les plus récentes comme Calibri. Lancez sbopkg, cherchez le paquet webcore-fonts,
construisez-le et installez-le.
Cette série de cours et d’exercices est rédigée de façon extrêmement concise et pédagogique ; je ne
peux que vous en conseiller la lecture. Elle s’adresse aux utilisateurs de LibreOffice sous Microsoft
Windows et Mac OS X mais, bien évidemment, l’ensemble des informations reste valable pour les
utilisateurs de Linux.
Figure 20–27
Découvrez LibreOffice grâce aux parcours guidés de Dominique Lachiver.
Figure 20–28
Le lecteur PDF Evince s’intègre bien dans le bureau Xfce.
Figure 20–29
Les Propriétés d’un fichier permettent de définir l’application qui doit l’ouvrir par défaut.
Rendez-vous sur le site SlackBuilds.org et recherchez « gedit ». Vous trouverez deux paquets distincts
gedit et gedit-plugins, sachant que le dernier a – forcément – besoin du premier pour s’installer. Or,
gedit a une dépendance requise sur le paquet pygtksourceview, qui dépend à son tour du paquet
gtksourceview. On construira donc dans l’ordre :
1 gtksourceview
2 pygtksourceview
3 gedit
4 gedit-plugins
Une fois que Gedit est installé, je vous conseille de quitter votre session et de vous reconnecter, faute
de quoi vous n’aurez pas accès aux préférences de l’éditeur de texte. Cherchez un fichier au format
texte simple, par exemple le document CHANGES_AND_HINTS.TXT que vous trouverez à la racine du CD
d’installation de Slackware – ou alors sur un des miroirs de téléchargement
http://mirrors.slackware.com/slackware/. Récupérez ce fichier en cliquant-droit dessus et en sélectionnant
Enregistrer la cible du lien sous... dans le menu contextuel. Là encore, redéfinissez les associations
de fichiers de façon à ce que le format .txt s’ouvre automatiquement avec Gedit.
Figure 20–30
L’éditeur de texte Gedit est une autre application GNOME qui s’intègre parfaitement dans
l’environnement Xfce.
Gérer les fichiers
C’est là que Recoll entre en jeu. Il s’agit d’un outil personnel de recherche textuelle pour Unix et
Linux développé par Jean-François Dockes. D’après la description du projet sur le site recoll.org, il
est « capable d’indexer un document MS Word enregistré comme pièce jointe dans un dossier
Thunderbird archivé dans un fichier ZIP ». Il est basé sur le moteur d’indexation Xapian, pour lequel
il offre une interface graphique facile à utiliser. Il traite la plupart des types de documents, que ceux-
ci soient comprimés ou non, en utilisant une série d’applications externes pour l’extraction du texte.
Figure 20–31
Recoll est un outil de recherche intuitif et puissant, susceptible d’améliorer le workflow au quotidien.
La page du paquet recoll sur SlackBuilds.org mentionne en tout et pour tout quatre dépendances
externes : antiword, exiftool, unrtf et untex. Recoll peut théoriquement fonctionner sans ces outils qui
servent à extraire les informations « brutes » dans des fichiers avec une mise en forme un peu plus
complexe, voire les méta-informations dans des photos. Cependant, il vaut mieux les installer, ne
serait-ce que pour éviter que Recoll vous rappelle à chaque utilisation qu’il les cherche en vain sur
votre système. Une fois que c’est fait, il ne vous reste plus qu’à installer le paquet recoll et le tour est
joué.
Au premier démarrage, Recoll veut savoir comment vous souhaitez organiser l’indexation de vos
documents. Cliquez sur Planning de l’indexation. Dans la fenêtre subséquente, choisissez
Démarrage de l’indexation au fil de l’eau.
Selon le nombre de documents que vous stockez sur votre machine, l’indexation initiale prendra un
certain temps. Une fois que l’ensemble des données est indexé, les opérations de recherche sont
extrêmement rapides et les résultats plutôt pertinents.
Figure 20–32
Configurez le lancement du démon d’indexation et démarrez-le.
Figure 20–33
File Roller est un gestionnaire d’archives graphique simple et intuitif.
En bon gestionnaire d’archives qui se respecte, File Roller permet de créer et de modifier des
archives, d’en extraire les fichiers ou simplement d’en visualiser le contenu. Il supporte les formats
de fichiers gérés « sous le capot » par le système, comme nous l’avons vu au chapitre 13 : .tar, .gz,
.tar.gz, .tgz, .bz2, .tar.bz2, .xz, etc. Nous allons ajouter les deux utilitaires unrar et p7zip pour que File
Roller gère également les archives au format .rar et .7z. File Roller fonctionne très bien de pair avec
l’extension thunar-archive-plugin, qui gère les archives compressées en une paire de clics. Lancez sbopkg
et installez l’un après l’autre les paquets unrar, p7zip, file-roller et thunar-archive-plugin.
Figure 20–34
L’extension thunar-archive-plugin ajoute la gestion des archives compressées au menu contextuel du
navigateur de fichiers Thunar.
Pour créer une archive avec File Roller, c’est très simple. Je prends un exemple tiré du quotidien, où
il s’agit de transférer un grand nombre de photos en passant par un service de transfert de fichiers
gratuit comme wetransfer.com ou hightail.com. Le service vous demandera de fournir vos fichiers sous
forme d’archive. Voilà ce que vous pourrez faire :
1 Créez un répertoire, par exemple PhotosVacances2016.
2 Rangez-y vos photos.
3 Cliquez-droit sur le répertoire et sélectionnez Créer une archive... dans le menu contextuel.
4 Un dialogue s’affiche. Choisissez le format de compression dans le menu déroulant, par exemple
.zip.
5 Cliquez sur Créer.
6 Vos photos de vacances se trouvent toutes prêtes à l’envoi dans une archive compressée
PhotosVacances2016.zip.
Et pour extraire une archive, rien n’est plus simple. Cliquez-droit dessus et choisissez Extraire ici
dans le menu contextuel.
Graver des CD et des DVD avec Brasero
Si votre machine est dotée d’un graveur, il vous faudra un logiciel de gravure pour confectionner vos
CD et DVD de données, pour graver des images ISO ou même vos compilations audio. Vous passerez
probablement pour un vieux, étant donné que les jeunes de nos jours ont tous leurs playlists dans un
cloud, expression très en vogue qui désigne généralement le fait que vous préférez confier vos
données à l’ordinateur de quelqu’un d’autre.
Chacun des trois grands environnements de bureau de Linux a sa propre application pour la gravure :
K3B pour KDE, Brasero pour GNOME et Xfburn pour Xfce. Là encore, nous allons éviter d’installer
la moitié du bureau KDE juste pour pouvoir graver et nous allons préférer l’application GNOME,
étant donné que Brasero offre quelques petites fonctionnalités pratiques en plus, tout en étant d’une
simplicité exemplaire.
Figure 20–35
Brasero est une application de gravure intuitive issue du projet GNOME.
La page du paquet brasero sur SlackBuilds.org mentionne quelques dépendances requises et optionnelles.
Je vous conseille de les installer toutes, pour permettre à Brasero de gérer correctement vos fichiers
audio et vos playlists. Lancez sbopkg et installez dans l’ordre :
1 libburn
2 libisofs
3 totem-pl-parser
4 gst-plugins-bad
5 brasero
Lancez Brasero via l’entrée de menu Applications>Multimédia>Brasero. L’application présente une
interface intuitive et conviviale.
• Le bouton Projet de données vous servira à graver vos documents, vos photos, vos films etc. sur
CD ou DVD.
• Graver une image vous permettra par exemple de confectionner un CD ou un DVD d’installation à
partir d’un fichier .iso, comme nous l’avons vu à la fin du chapitre 2.
• L’option Projet audio sert à graver un CD audio à partir d’une playlist au format .m3u ou d’une
série de fichiers .ogg ou .mp3.
Manipuler les images
Figure 20–36
gThumb est un navigateur d’images convivial et intuitif.
La visionneuse gThumb comprend un gestionnaire de fichiers dans le bandeau latéral. Lorsque vous
naviguez vers un répertoire qui contient des images, celles-ci s’affichent sous forme de miniatures et
il suffit d’un double-clic pour les agrandir. Utilisez les raccourcis clavier pour travailler plus
efficacement :
• La touche + zoome sur l’image.
• La touche – rétrécit l’image.
• PageSuivante passe à la prochaine image.
• PagePrécédente revient à l’image précédente.
• Échap revient vers le navigateur d’images.
Vérifiez si vos fichiers images – .jpg, .png, .gif, etc. – sont correctement associés à gThumb.
Éventuellement, vous pourrez vous débarrasser de la visionneuse par défaut en supprimant le paquet
geeqie.
Figure 20–37
La mascotte officielle de Gimp : Wilber le coyote
Pourtant, cela fait quelques années que Wilber, la mascotte de Gimp, joue dans la cour des grands.
Les grands studios de films d’animation comme Pixar ou Sony Pictures l’utilisent pour leurs travaux,
pour ne citer que cet exemple. Jetez un coup d’œil au générique de fin d’une des grandes productions
comme Ratatouille. Ce film d’animation a été entièrement réalisé avec des logiciels libres comme
Gimp, Blender ou ImageMagick, avec des grappes de PC sous Linux pour calculer les images.
Dans les forums traitant du logiciel libre, il n’est pas toujours de bon ton de mettre en avant la
gratuité des applications. Pourtant, il n’est pas facile de s’en empêcher lorsqu’on aborde les logiciels
de retouche d’images. Il n’y a pas si longtemps, la licence monoposte pour Photoshop de la Creative
Suite d’Adobe se monnayait à des sommes avoisinant le millier d’euros, ce qui entraîne deux cas de
figure dans la pratique.
• Une majorité d’utilisateurs possède des versions piratées de Photoshop, Illustrator, InDesign,
XPress et autres. À ce jour, je n’ai vu aucun utilisateur profane de Photoshop ayant réellement
acheté une licence pour sa machine. Peut-être bien qu’ils existent, mais je n’en ai rencontré aucun.
• Les professionnels (graphistes, architectes et autres) qui ne peuvent pas se permettre de travailler
avec des logiciels piratés achètent des licences et payent très cher chaque logiciel et chaque mise
à jour.
Depuis quelque temps, les éditeurs des grandes suites logicielles semblent avoir pris en compte la
réalité du marché et proposent désormais des formules d’abonnement où vous n’achetez pas le
logiciel, mais vous le louez au mois ou à l’année.
Il est donc bon de savoir qu’on peut très bien installer et utiliser un logiciel d’infographie performant
sans aller chercher la carte bleue ou le chéquier, sans accepter les termes d’obscures licences à
rallonge, sans appeler un numéro 0800 pour obtenir une clé d’activation qu’il faut ensuite saisir au
premier démarrage et sans qu’un petit logiciel espion installé aux tréfonds du disque dur contacte
l’éditeur à votre insu pour vérifier si vous n’utilisez pas une version piratée. Non, on peut très bien se
passer de toutes ces complications. Gimp est déjà installé et pleinement fonctionnel sur notre système
Slackware ; il est fourni par le groupe de paquets XAP et nous pouvons le démarrer via l’entrée de
menu Applications>Infographie>Éditeur d’image Gimp.
Figure 20–38
Le logiciel de retouche d’images Gimp
Figure 20–40
Scribus, un logiciel de publication assistée par ordinateur
Figure 20–41
Audacious est un lecteur audio qui obéit au principe KISS.
Lancez Asunder et insérez un CD audio. Asunder effectue une recherche CDDB et affiche les titres du
CD dans la fenêtre principale. Cliquez sur Préférences et sélectionnez d’abord le dossier de
destination, par exemple ~/Musique. Ensuite, basculez vers l’onglet Encodeur et sélectionnez le format
de fichiers que vous souhaitez obtenir : WAV pour l’audio brute, MP3 ou OGG pour l’audio
compressée avec perte et FLAC pour une compression sans perte. Fermez la fenêtre des préférences,
sélectionnez les morceaux pour la conversion et cliquez sur Extraire.
La numérisation des morceaux d’un CD s’effectue en deux étapes :
• L’information audio du CD est extraite vers une série de fichiers .wav, sans aucune compression.
Ces fichiers occupent un espace considérable sur le disque dur.
• Les fichiers .wav sont compressés vers un format .ogg, .flac ou .mp3, selon l’algorithme de
compression sélectionné.
Figure 20–43
Audacity est un éditeur audio convivial.
La page du paquet audacity sur SlackBuilds.org nous renseigne sur une série de dépendances. Lancez
sbopkg et construisez les paquets wxpython (un peu long) et soundtouch. Si vous n’avez pas installé
Asunder, installez au moins l’encodeur lame.
La prochaine étape consiste à construire et installer le paquet ffmpeg. C’est une suite logicielle
destinée au traitement des flux audio et vidéo. Allez faire un tour sur la page de ffmpeg sur
SlackBuilds.org, et vous remarquerez que ce paquet affiche pas moins de 34 (!) dépendances
optionnelles. Ne partez pas en courant, car nous n’allons pas les installer toutes l’une après l’autre.
Au lieu de cela, nous allons tenir compte de la seule dépendance lame. Elle n’est pas autodétectée lors
de la construction de ffmpeg. Il faut donc éditer le fichier ffmpeg.SlackBuild en conséquence.
ADMINISTRATION Un brin de ménage
Tout au long de ce chapitre, nous avons construit des paquets logiciels, qui commencent à prendre
de la place sur le système. Les paquets .tgz et .txz s’entassent inutilement dans /tmp et
l’arborescence /tmp/SBo est remplie à ras bord d’archives sources. Invoquez la commande df -h pour
savoir quel espace il vous reste sur la partition principale. Et avant d’attaquer la suite, je vous
conseille de faire un brin de ménage :
# cd /tmp
# rm -f *.t?z
# rm -rf SBo/
Figure 20–44
L’outil sbopkg permet de modifier les fichiers .SlackBuild à la volée.
Lancez sbopkg et cherchez le paquet ffmpeg. Avant de démarrer la compilation, optez pour Customize
the .info or SlackBuild. Dans l’écran subséquent, créez une copie locale du fichier ffmpeg.SlackBuild en
sélectionnant Create and edit a local copy of the SlackBuild. L’éditeur Vim s’ouvre et vous
comprenez en passant l’importance de la variable EDITOR que nous avons définie dans le chapitre 18.
Repérez la section suivante aux alentours de la ligne 75 et remplacez la valeur par défaut no de mp3lame
par yes :
Enregistrez les modifications, quittez le fichier et revenez dans l’interface de sbopkg. Lancez la
construction via Download/build/install ffmpeg et confirmez l’utilisation du fichier ffmpeg.SlackBuild
modifié : Use the local SlackBuild. Une fois que ffmpeg est compilé et installé, il ne reste plus qu’à
installer audacity, ce qui ne nécessite aucune intervention spécifique de notre part.
# Configure ffmpeg features not autodetected by default
# Unfortunately ffmpeg's configure doesn't support
# --enable-feature=yes syntax, so we have to do it the
# complicated way :/
Pour les opérations de base, Audacity est d’une convivialité et d’une simplicité déconcertante.
Ouvrez le fichier audio que vous souhaitez modifier, effectuez des opérations de copier/coller ou de
découpe comme vous le feriez avec du texte, appliquez un effet – par exemple Fondu en ouverture ou
Fondu en fermeture – sur une sélection, etc. Lorsque vous avez terminé, il vous suffit d’exporter
votre fichier au format voulu, comme le MP3.
Figure 20–45
Un lecteur vidéo qui digère à peu près tout ce qu’on lui sert
Nous avons vu comment personnaliser un paquet au chapitre 15 et nous allons en profiter pour
construire notre propre version de MPlayer. Créez un répertoire /root/MPlayer/ et récu pérez les sources,
le fichier MPlayer.SlackBuild et tout ce qui va avec dans ce répertoire. Ouvrez le fichier au début et
éditez la section suivante :
PRGNAM=MPlayer
VERSION=${VERSION:-20160125}
BRANCH=${BRANCH:-1.2}
FFMPEG=${FFMPEG:-2.8.6}
BUILD=${BUILD:-1}
TAG=${TAG:-_custom}
NUMJOBS=${NUMJOBS:-" -j3 "}
Petite explication :
• La variable BUILD sert à estampiller le paquet du nombre de tentatives de compilation que vous
effectuez. Ici, c’est notre première tentative de personnalisation, nous la mettons donc à 1.
• L’étiquette TAG personnalise le nom de votre paquet, ce qui le différenciera du paquet officiel.
• Enfin, NUMJOBS définit le nombre de tâches parallèles pour la compilation. Indiquez ici le nombre de
processeurs dont vous disposez et ajoutez 1. Invoquez cat /proc/cpuinfo | grep proc | wc -l pour
connaître le nombre de processeurs sur votre machine.
Ensuite, nous allons activer les algorithmes potentiellement problématiques en termes de brevets, en
éditant la ligne suivante comme nous l’avons déjà fait au chapitre 15 :
USE_PATENTS=${USE_PATENTS:-"YES"}
Nous allons nous débarrasser de l’interface graphique fournie par MPlayer. Repérez l’option de
configuration --enable-gui un peu plus loin dans le fichier et remplacez-la par --disable-gui :
./configure \
--prefix=/usr \
--mandir=/usr/man \
--confdir=/etc/mplayer \
--disable-gui \
--enable-menu \
--enable-vdpau \
Enfin, vers la fin du fichier, il faut commenter la section qui se charge de l’installation du thème par
défaut, rendue obsolète par la désactivation de l’interface graphique (GUI ou Graphical User
Interface) :
# Install our default skin:
# cd $PKG/usr/share/mplayer/skins
# tar -xvf ${SOURCE[1]}
# chown -R root:root *
# chmod -R u+w,go+r-w,a+X-s *
# ln -s ${DEFSKIN} default
# cd -
Notez que nous utilisons upgradepkg et non pas installpkg, étant donné que nous « mettons à jour » le
paquet officiel avec notre version améliorée.
L’installation n’est pas tout à fait terminée, il nous faut encore quelques éléments pour que l’ensemble
soit pleinement fonctionnel :
• Installez l’archive de codecs distribuée par MPlayer. SlackBuilds.org fournit un script pour chaque
architecture. Vous installerez mplayer-codecs32 sur un système 32-bits et mplayercodecs64 sur un système
64-bits.
• Le dépôt officiel extra fournit le paquet mplayerplug-in, qui vous permet de profiter des
fonctionnalités de MPlayer avec les navigateurs Web Firefox et Seamonkey.
• Enfin, installez le paquet libdvdcss pour lire les DVD cryptés.
Utiliser MPlayer
Dans un premier temps, nous allons associer tous nos fichiers vidéo .mkv, .mp4, .avi et similaires à
MPlayer. Cliquez-droit sur un fichier vidéo de votre choix et sélectionnez Propriétés dans le menu
contextuel. Dans la section Ouvrir avec..., choisissez Autre application et définissez /usr/bin/mplayer
comme l’application par défaut pour gérer ce type de fichier.
Figure 20–46
Associez vos fichiers vidéo à MPlayer.
Figure 20–47
Un double clic sur un fichier vidéo démarre la lecture dans une fenêtre « brute ».
Lorsque vous démarrez une vidéo, vous vous demandez probablement où sont passés les boutons
pour contrôler la lecture de la vidéo. Rappelez-vous, nous avons compilé MPlayer sans l’interface
graphique qui va avec, nous ne disposons donc que des raccourcis clavier. En voici quelques-uns :
• La touche F (comme Fullscreen) bascule entre l’affichage plein écran et la taille normale de la
vidéo.
• La barre Espace met la lecture en mode pause. Il suffit de réappuyer pour reprendre la lecture.
• La touche O (comme On Screen Display) active le menu serti dans la vidéo et bascule entre trois
différents modes d’affichage.
• FlècheDroite avance de 10 secondes.
• FlècheGauche recule de 10 secondes.
• FlècheHaut avance d’une minute.
• FlècheBas recule d’une minute.
• PageHaut avance de 10 minutes.
• PageBas recule de 10 minutes.
• La touche Q (comme Quitter) termine la lecture.
En dehors de cette utilisation, MPlayer peut également être invoqué directement depuis un terminal,
en fournissant comme argument le nom du fichier à lire. Ouvrez le terminal Xfce, naviguez vers un
répertoire contenant une vidéo et démarrez-la comme ceci :
$ mplayer fichiervideo.mkv
Cette façon de procéder vous permet d’ajouter une série d’options pour la lecture. Démarrez votre
vidéo depuis un terminal et interrompez la lecture au bout de quelques secondes. Un grand nombre
d’informations s’affiche :
[lavf] stream 0: video (hevc), -vid 0
[lavf] stream 1: audio (aac), -aid 0, -alang eng, Surround
[lavf] stream 2: subtitle (ass), -sid 0, -slang eng
[lavf] stream 3: subtitle (ass), -sid 1, -slang eng
Cette section me renseigne sur les sous-titres qu’il est possible d’afficher pendant la lecture. Je
redémarre donc ma vidéo en activant les sous-titres en question :
$ mplayer -sid 0 fichiervideo.mkv
La page de manuel de MPlayer fournit l’ensemble des options disponibles. Elle a juste deux
problèmes :
• Elle est mal encodée.
• C’est une monstruosité.
Le problème de l’encodage est facilement résolu. Rappelez-vous l’alias de commande
uman='GROFF_ENCODING=utf8 man' que nous avons défini au chapitre 18. Essayez man mplayer et, si vous voyez
des caractères bizarres à la place des accents et des c cédille du français, essayez avec uman mplayer.
Laissez défiler un peu et essayez de ne pas vous décourager face à ce tsunami d’informations.
Rappelez-vous avant tout que vous disposez d’une fonction de recherche pour les pages man.
Quelques astuces
Au lieu d’un cours exhaustif sur toutes les possibilités de MPlayer (qui nécessiterait un livre entier,
avec lequel mon éditeur pourra me taper sur la tête pour m’achever), voici quelques options et
astuces courantes.
Lire un DVD
Pour lire un DVD, nous utiliserons plutôt VLC – que nous verrons un peu plus loin. En attendant, il
est tout à fait possible de le faire avec MPlayer, même s’il ne nous permet pas d’en afficher le menu.
Pour accéder aux différents chapitres d’un DVD avec MPlayer, ajoutez un argument : mplayer dvd://1,
mplayer dvd://2, mplayer dvd://3, etc.
Monter le son
Il arrive assez régulièrement que le son d’une vidéo soit assez faible. On a beau augmenter le volume
du PC au maximum, cela reste insuffisant. Voici donc une astuce :
$ mplayer -af volume=12 fichiervideo.mkv
À partir du moment où le répertoire avec la vidéo contient également un fichier sous-titre du même
nom, les sous-titres s’affichent automatiquement. Concrètement, si vous lancez une vidéo
MonFilmDuSoir.avi et si le répertoire contient un fichier MonFilmDuSoir.srt ou MonFilmDuSoir.sub, le sous-titre
s’affichera sans autre indication. Si vous ne voyez rien, supprimez les espaces et autres caractères
spéciaux dans les noms des fichiers.
Rendez-vous à l’adresse de ce dépôt et naviguez vers le répertoire vlc/, qui contient trois sous-
répertoires :
• pkg/ fournit les paquets binaires pour les différentes versions 32-bits de Slackware.
• pkg64/ fournit les paquets pour les versions 64-bits.
• build/ contient le code source.
Le paquet d’Eric a la particularité de contenir l’ensemble des dépendances sous forme statique, ce
qui explique son poids. Si vous êtes curieux, ouvrez le fichier vlc.SlackBuild dans le répertoire build/,
une monstruosité de plus de 4 000 lignes, et tirez mentalement une révérence au vaillant mainteneur
de ce paquet :
# NOTE: this SlackBuild is a monster
Une fois que VLC est installé, il apparaît dans la catégorie Applications>Multimédia. Si vous
effectuez une installation de Slackware pour un utilisateur lambda, je vous conseille d’associer les
formats vidéo courants à VLC. La seule « astuce » à retenir avec ce logiciel, c’est qu’un double clic
sur une vidéo active/désactive l’affichage en plein écran. Et, contrairement à MPlayer, VLC gère très
bien les menus de navigation des DVD, via l’entrée de menu Média>Ouvrir un disque>DVD.
Figure 20–48
VLC est un lecteur vidéo plus adapté aux utilisateurs non-geeks.
Maintenant que vous disposez des lecteurs vidéo MPlayer et VLC, vous pouvez sereinement vous
débarrasser de Xine, qui ne sert plus à grand-chose :
# removepkg xine-ui
Télécharger des torrents avec Transmission
Le prochain composant à inclure dans notre logithèque est un client de téléchargement BitTorrent. Là
aussi, nous avons l’embarras du choix. Je vous présente d’emblée mon favori, que j’utilise depuis la
toute première version sortie il y a plus de dix ans : Transmission.
Rendez-vous sur la page du paquet transmission sur SlackBuilds.org. Le code source de Transmission
permet de construire en tout et pour tout quatre composants :
P ROTOCOLE BitTorrent
BitTorrent est un protocole de transfert de données P2P (peer-to-peer, ou pair à pair) qui repose
sur le principe que chaque client informatique en train de télécharger une information devient
aussitôt serveur à son tour de ce qu’il a déjà téléchargé. On évite ainsi les problèmes de saturation
que l’on rencontre habituellement avec un seul serveur.
Une fois que le paquet transmission est installé, l’application peut être lancée via l’entrée de menu
Applications>Internet>Transmission. Rendez-vous dans Édition>Préférences pour une
configuration sommaire.
• L’onglet Vitesse définit des limitations de bande passante pour les torrents, ce qui vous évite de
« ramer » lorsque vous avez plusieurs gros téléchargements en cours.
• Dans l’onglet Bureau, cochez Afficher l’icône de Transmission dans la zone de notification, ce
qui fait tourner l’application en tâche de fond et la ramène au premier plan sur un simple clic.
À partir de là, il suffit de lancer votre navigateur web préféré et de confirmer l’ouverture des fichiers
.torrent avec Transmission.
Aller plus loin
Nous voilà avec une logithèque passablement fournie sur notre système, même s’il y a encore
beaucoup de choses à dire et encore plus d’applications à installer. Après tout, le portail
SlackBuilds.org compte actuellement plus de 6 000 paquets – ou plus exactement des scripts pour
construire des paquets – rien que pour la version 14.2 de Slackware.
Ce chapitre est déjà bien plus long qu’initialement prévu et nous n’avons même pas encore eu
l’occasion de parler du client de messagerie instantanée Pidgin, du client FTP Filezilla, des éditeurs
vidéo Flowblade et Openshot, du moniteur système Conky, de l’application de prise de notes
CherryTree, du logiciel de virtualisation VirtualBox, sans parler des innombrables jeux. Le plus
important, c’est que les chapitres jusqu’ici vous ont permis d’acquérir suffisamment de réflexes et de
savoir-faire pour vous lancer dans l’aventure et découvrir de nouvelles applications.
Il y a quelque temps, j’ai rempli un questionnaire adressé aux administrateurs système, qui
comportait entre autres la question : « Qu’est-ce qui vous fait le plus souffrir dans votre
quotidien ? » C’est sans hésitation que j’ai répondu « les imprimantes ». Et c’est sans surprise
que j’ai appris par la suite que ces périphériques occupaient le Top Trois dans le palmarès des
facteurs de frustration parmi mes collègues. Dans ce chapitre, nous allons voir par la pratique
comment se simplifier la vie en choisissant bien la marque et le modèle de son imprimante. Et si
jamais votre imprimante ne fait pas partie des « happy few », je vous présente quatre exemples
pratiques correspondant chacun à une problématique différente. La fin de ce chapitre traite de la
numérisation sous Linux.
Imprimer avec CUPS
CUPS (Common Unix Printing System) est le système d’impression utilisé par défaut sur toutes les
distributions Linux.
La documentation de CUPS n’est pas exactement un modèle de clarté. Attendez-vous plutôt à une
jungle touffue et inextricable qui rappelle de loin la documentation du serveur graphique X.Org. Là
encore, j’ai fait de mon mieux pour adopter une approche pratique et pragmatique et rendre ce
chapitre lisible et digeste. Les gourous de l’impression sous Linux voudront bien me pardonner les
quelques simplifications que je me suis permises.
Figure 21–1
Mon imprimante est-elle compatible avec Linux ?
Sélectionnez d’abord la marque de votre imprimante dans le menu déroulant Manufacturer. Ensuite,
précisez le modèle exact dans le deuxième menu déroulant Model et cliquez sur Show this printer.
Figure 21–2
La base de données des imprimantes vous indique si votre imprimante fonctionnera correctement sous
Linux.
Si la page des résultats comprend trois petits pingouins et les termes magiques « works perfectly »,
votre imprimante fonctionne parfaitement sous Linux. À l’inverse, si le site vous annonce que
l’imprimante ne fonctionne pas sous Linux, je vous conseille de prendre cette information avec des
pincettes. Dans ce cas, jetez un œil sur les commentaires des utilisateurs en bas de la page des
résultats avant d’aller vérifier sur le site du fabricant.
Une autre astuce consiste à ouvrir un moteur de recherche et à saisir la marque et le modèle de votre
imprimante suivis de « linux », par exemple « hp officejet 8600 linux », « hp psc 1210 linux » ou
encore « canon pixma mg2250 linux ». Si vous n’obtenez que des résultats où les gens pleurent dans
les forums, évitez d’acheter le modèle en question. En revanche, à partir du moment où quelqu’un a
réussi à faire fonctionner l’imprimante en question – peu importe la distribution utilisée – vous
pouvez allègrement vous retrousser les manches et attaquer la suite.
Sur cette page, je suis le lien Supported Devices (Périphériques pris en charge) et j’accède à la
base de données des imprimantes, qui ressemble de loin à celle que nous avons pu trouver sur le
portail OpenPrinting. Je choisis le type et le modèle de mon imprimante dans la liste et je clique sur
Continue. L’information cruciale sur la page des résultats est Minimum HPLIP version. Dans le cas
de mon imprimante, c’est la version 3.11.10.
Figure 21–3
L’imprimante HP Officejet Pro 8600 est reconnue par HPLIP depuis la version 3.11.10.
En résumé, mon imprimante est officiellement prise en charge par HP depuis la version 3.11.10 de
HPLIP. Elle fonctionnera donc sur mon système Slackware 14.2, qui fournit la version 3.16.5 de ce
paquet. À partir de là, je vérifie que CUPS tourne et je lance la procédure de configuration.
Figure 21–4
Je démarre l’utilitaire de configuration par le biais de l’icône HP dans la zone de notification.
Figure 21–5
Je clique sur Setup Device pour démarrer la configuration de mon imprimante.
Figure 21–6
L’écran Device Discovery me somme de sélectionner le type de connexion. Je dispose d’une
imprimante réseau et je tente la configuration automatique.
Figure 21–7
HPLIP a reconnu mon imprimante dans le réseau.
Figure 21–8
Je complète les indications sur l’imprimante. Je décoche le fax, qui ne m’est d’aucune utilité, j’active
l’impression d’une page de test et je clique sur Add Printer.
Figure 21–9
La configuration d’un périphérique nécessite forcément les droits d’administration.
Figure 21–10
Mon imprimante est configurée et la page de test s’imprime.
Administrer CUPS
Théoriquement, le serveur d’impression CUPS peut être entièrement administré par le biais de la
ligne de commande. La commande lpstat que nous venons d’utiliser fait d’ailleurs partie de la
panoplie d’outils en question.
En pratique, nous allons passer par l’interface web de CUPS, ce qui nous évitera de nous compliquer
la vie inutilement. Ouvrez votre navigateur préféré à l’adresse http://localhost:631 pour y accéder.
Figure 21–11
L’interface web de CUPS nous permet de configurer confortablement notre serveur d’impression.
Figure 21–12
Ici, nous définissons l’imprimante par défaut du système.
Dans l’interface web de CUPS, rendez-vous sur la page Administration. Allez dans Manage Printers
(Gérer les imprimantes), puis cliquez sur le lien de l’imprimante configurée (Officejet_Pro_8600
dans mon cas). Sur la page de l’imprimante, repérez le menu déroulant Administration et sélectionnez
Set As Server Default (Définir comme imprimante par défaut). CUPS vous somme alors de fournir
un login (root) et un mot de passe (celui de root).
À partir de là, notre système dispose d’une imprimante par défaut :
# lpstat -t
scheduler is running
system default destination: Officejet_Pro_8600
Rendez-vous sur le site de Brother, suivez le lien Product Support, choisissez le pays (France) et
rendez-vous sur la page Téléchargement. Là, vous avez deux options pour rechercher le modèle exact
de votre imprimante : soit vous passez par l’interface de recherche, soit vous la retrouvez dans une
liste.
Figure 21–13
La prise en charge Linux de la marque Brother est lacunaire, mais nous allons nous débrouiller avec.
Vous devez télécharger deux paquets, en acceptant la licence pour chacun d’entre eux :
• LPR printer driver (rpm package) ;
• CUPSwrapper printer driver (rpm package).
Je crée un répertoire /root/brother/ dans lequel je range les deux paquets téléchargés :
# cd /root/brother/
# ls
brhl2140lpr-2.0.2-1.i386.rpm cupswrapperHL2140-2.0.2-1.i386.rpm
Après la conversion, nous nous retrouvons avec deux nouveaux paquets .txz :
# ls
brhl2140lpr-2.0.2-1.i386.rpm cupswrapperHL2140-2.0.2-1.i386.rpm
brhl2140lpr-2.0.2-1.i386.txz cupswrapperHL2140-2.0.2-1.i386.txz
Le script d’installation du paquet cupswrapper cherche à redémarrer le démon CUPS via le script
inexistant /etc/init.d/cups. Nous pouvons rectifier le tir en créant un lien symbolique vers
l’emplacement correct, comme ceci :
# ln -s /etc/rc.d/rc.cups /etc/init.d/cups
Rendez-vous sur le site de Canon et cherchez le portail de téléchargement des pilotes. Cette page tend
à être une cible mouvante sur le site ; vous devez donc chercher quelque chose comme
Support>Assistance>Imprimantes et multifonctions. Les liens comportant le mot magique Pilote
sont également un bon choix. Une fois que vous avez trouvé la page munie d’un champ de recherche,
saisissez le nom du modèle, par exemple « pixma mg2250 ». Sur la page des résultats, choisissez le
système d’exploitation (Linux 32-bits ou Linux 64-bits) et la langue (Français).
Les pilotes et les applications sont disponibles en trois formats : paquets RPM, paquets DEB et
fichiers sources. Ces derniers sont malheureusement spécifiques à la construction de paquets RPM.
On va donc opter directement pour le format RPM binaire. Téléchargez les deux archives
compressées respectives, quelque chose comme :
• MG2200 series IJ Printer Driver Ver. 3.80 for Linux
• MG2200 series ScanGear MP Ver. 2.00 for Linux
Créez un répertoire /root/canon/ pour les y ranger :
# cd /root/canon/
# ls
cnijfilter-mg2200series-3.80-1-rpm.tar.gz
scangearmp-mg2200series-2.00-1-rpm.tar.gz
Installez-les :
# installpkg *.txz
Nous allons procéder de même pour l’archive qui contient le logiciel de numérisation :
# tar xvzf scangearmp-mg2200series-2.00-1-rpm.tar.gz
# cd scangearmp-mg2200series-2.00-1-rpm/packages/
Installez-les :
# installpkg *.txz
L’application /usr/local/bin/scangearmp requiert une bibliothèque qui n’est pas présente sur un système
Slackware par défaut :
# ldd /usr/local/bin/scangearmp | grep "not found"
libpangox-1.0.so.0 => not found
La bibliothèque par défaut est fournie par le paquet , que l’on peut trouver sur
pangox-compat
SlackBuilds.org. Utilisez sbopkg pour l’installer rapidement.
Vos utilisateurs ne seront probablement pas très heureux de devoir saisir le nom de l’application dans
un terminal chaque fois qu’ils souhaitent numériser un document. La solution consiste ici à créer une
entrée de menu pour cette application.
Jetez un œil dans le répertoire /usr/share/applications et regardez l’organisation de tous les fichiers
*.desktop qui s’y trouvent. Ensuite, rédigez un fichier scangearmp.desktop et placez-le dans ce répertoire,
en tant que root bien évidemment :
[Desktop Entry]
Name=Scanner Tool
Name[fr]=Acquisition d'images
Comment=Canon Scangear
Exec=scangearmp
Icon=scanner
Terminal=false
Type=Application
StartupNotify=true
Categories=Graphics;
À partir de là, l’imprimante peut être configurée comme n’importe quel modèle pris en charge via
l’interface de CUPS.
Avant de baisser les bras, je vais tenter de configurer mon matériel en passant directement par
l’assistant d’ajout d’une imprimante de CUPS. J’ouvre un navigateur, je me connecte à l’adresse
http://localhost:631 et j’ouvre la section Administration. En passant, je vérifie si l’imprimante est
connectée et allumée :
# lsusb
Bus 001 Device 004: ID 04a9:10a2 Canon, Inc. iP4200
...
Figure 21–15
Je clique sur Add Printer pour ajouter une imprimante.
Figure 21–16
La Canon iP4200 apparaît bien dans les imprimantes locales.
Figure 21–17
Je remplis le descriptif sommaire de l’imprimante.
Figure 21–18
Je confirme l’utilisation du pilote suggéré par CUPS et je clique sur Add Printer.
Figure 21–19
Dans les réglages de l’imprimante, je corrige le format de papier et je choisis A4 au lieu de Letter.
Figure 21–20
Il ne me reste plus qu’à imprimer une page de test.
Numériser des documents
Le Wi-Fi (pour Wireless Fidelity, c’est-à-dire « fidélité sans fil »), c’est tout d’abord une façon
sympathique de promener votre pingouin sans fil à la patte. Dans ce chapitre, nous allons aborder
de façon pratique et pragmatique la configuration d’un point d’accès Wi-Fi et la connexion de
votre ordinateur à ce réseau sans fil.
Le point d’accès Wi-Fi
Les modems routeurs fournis par les divers fournisseurs d’accès comprennent le plus souvent un
point d’accès sans fil ; la plupart, mais pas tous. Si votre modem routeur n’intègre aucune
fonctionnalité Wi-Fi – ou si la puissance du point d’accès incorporé s’avère insuffisante – vous
devrez vous procurer un point d’accès à part.
Figure 22–1
Équipez votre réseau d’un point d’accès Wi-Fi.
Le point d’accès que j’utilise dans l’exemple est un routeur Wi-Fi Ovislink de type EVO-W54AP,
acheté il y a un peu moins de dix ans pour une cinquantaine d’euros. L’appareil commence donc à
accuser son âge, mais étant donné que sa bande passante modeste s’avère suffisante pour mes besoins
et qu’il fonctionne toujours parfaitement, je n’ai aucune raison d’en changer pour l’instant. Sachez
tout de même qu’aujourd’hui, vous trouverez des points d’accès bien plus performants pour la moitié
de ce que j’ai pu payer à l’époque.
L’appareil se présente sous la forme d’un petit boîtier avec une antenne et se relie au réseau comme
n’importe quelle autre machine, c’est-à-dire qu’il suffit de le brancher au switch comme les PC du
réseau filaire. C’est donc une machine du réseau, avec son adresse IP, son masque de sous-réseau et
sa passerelle, reliée au switch par un câble Ethernet. Je précise ici – peut-être pas si inutilement –
qu’un tel point d’accès ne nécessite aucun pilote. Une fois qu’il est relié au réseau, on y accède par
une autre machine pour le configurer via une interface web.
À l’instar des modems routeurs, le routeur Wi-Fi est préconfiguré par le constructeur. D’après la note
explicative trouvée dans le carton d’emballage, voici à quoi ressemblait sa configuration :
• Adresse IP : 192.168.1.254
• Masque de sous-réseau : 255.255.255.0
• IP de la passerelle : 192.168.1.1
Ce n’est pas du tout la configuration que je souhaite. Pour résoudre ce genre de problème, je
déconnecte une des machines de mon réseau et je lui attribue temporairement une adresse IP dans le
même sous-réseau que le point d’accès, quelque chose entre 192.168.1.1 et 192.168.1.253. Je relie la
machine directement au point d’accès Wi-Fi grâce à un câble Ethernet et j’ouvre Firefox à l’adresse
http://192.168.1.254 pour accéder à l’interface de configuration. Voici la configuration du point d’accès
dans mon bureau :
• Adresse IP : 192.168.2.254
• Masque de sous-réseau : 255.255.255.0
• IP de la passerelle : 192.168.2.1
À partir du moment où j’ai reconfiguré mon point d’accès, je peux l’incorporer normalement dans
mon réseau. Je rétablis les câblages et je m’y reconnecte.
Le Mode de notre point d’accès sera AP (comme Access Point) dans le menu déroulant. Le SSID
(Service Set Identifier) est le nom qui identifie notre réseau sans fil. Je choisis microlinux et je
spécifie également le canal d’émission : 3. Là aussi, je n’oublie pas de cliquer sur Apply Changes
pour prendre en compte la nouvelle configuration.
Figure 22–2
La configuration réseau de mon point d’accès Wi-Fi. Notez que je désactive le serveur DHCP
incorporé pour éviter qu’il entre en conflit avec le serveur DHCP existant.
Figure 22–3
Le SSID est le nom qui identifiera mon réseau Wi-Fi.
La dernière étape consiste à sécuriser mon réseau Wi-Fi contre les intrus.
• La configuration d’un réseau ouvert et sans aucune clé de chiffrement (None) n’est pas
recommandable, dans la mesure où n’importe quel utilisateur se trouvant à proximité de mon
point d’accès pourrait s’y connecter.
• Le chiffrement WEP (Wired Equivalent Privacy) peut être considéré comme obsolète, étant donné
qu’un hacker moyennement doué met moins de dix minutes à obtenir le mot de passe d’une
connexion sécurisée avec ce protocole en utilisant des outils comme WEP-Crack. Le WEP a
d’ailleurs été rebaptisé Weak Encryption Protocol (c’est-à-dire « protocole de chiffrement
faible ») par certains farceurs réalistes.
• Le chiffrement WPA peut être considéré comme un bon choix.
Figure 22–4
Je sélectionne le chiffrement WPA et je choisis un mot de passe suffisamment compliqué pour
sécuriser ma connexion.
Configurer le Wi-Fi sur un ordinateur portable
Voici un cas de figure que je rencontre très régulièrement, pour ne pas dire quotidiennement. Je viens
d’installer Slackware64 14.2 sur un ordinateur portable, en l’occurrence un Asus S300. Pour
l’installation initiale du système j’ai relié la machine au switch de mon bureau avec un câble
Ethernet. Slackware est configuré aux petits oignons, les applications sont toutes installées, le
moment est venu de larguer les amarres et de remplacer la connexion filaire par une connexion Wi-Fi.
Tout d’abord, il s’agit d’identifier le type de carte sans fil, c’est-à-dire le modèle, la puce, le
chipset :
[root@slackbook-pro:~] # lspci | grep -i network
02:00.0 Network controller: Qualcomm Atheros AR9485
Wireless Network Adapter (rev 01)
Pour l’instant, le portable dispose d’une connexion filaire « classique » en DHCP, c’est-à-dire
configurée via /etc/rc.d/rc.inet1.conf :
# Config information for eth0:
IPADDR[0]=""
NETMASK[0]=""
USE_DHCP[0]="yes"
DHCP_HOSTNAME[0]=""
La commande ifconfig invoquée sans arguments m’affiche deux sections : une pour eth0 et une pour lo.
À présent, j’aimerais bien savoir si je dispose d’une quelconque interface réseau qui correspond à
ma carte Wi-Fi. Je pourrais me compliquer la vie en épluchant les messages de démarrage via dmesg.
Pour m’éviter cette corvée, j’invoque tout simplement ifconfig -a pour afficher l’ensemble des
interfaces réseau de la machine, y compris celles qui ne sont pas configurées. Et là, j’en découvre une
nouvelle :
# ifconfig -a
...
wlan0: flags=4098<BROADCAST,MULTICAST> mtu 1500
ether 6c:71:d9:8e:2f:cf txqueuelen 1000 (Ethernet)
...
C’est déjà bon signe. La présence de la section wlan0 me montre que le noyau reconnaît mon matériel
et le gère. Après, dans certains cas de figure, il s’agit de savoir s’il le gère correctement, ce qui est
une autre histoire. Dans le cas présent, partons du principe que tout se passera correctement.
Gérer les connexions réseau avec NetworkManager
Dans le cas d’une connexion filaire, la configuration réseau est une procédure simple. Le poste de
travail dispose d’une carte réseau physique reliée au switch et il faut seulement se demander si la
configuration de la machine doit être dynamique ou statique.
À partir du moment où la machine dispose de plusieurs cartes réseau – filaire et Wi-Fi – les choses
se compliquent un peu.
• Puisque la machine dispose de plusieurs cartes réseau, comment choisir laquelle utiliser pour se
connecter à un réseau donné ?
• Si l’on dispose de plusieurs réseaux Wi-Fi, comment afficher les réseaux disponibles et choisir
celui auquel on souhaite se connecter ?
• Comment gérer l’authentification dans le cas d’un réseau sécurisé ?
À regarder de près, les choses sont donc moins évidentes qu’elles ne semblent. La solution la plus
simple consiste à utiliser le NetworkManager.
RÉSEAU NetworkManager
L’outil NetworkManager est développé par Red Hat depuis 2004. Il a pour but de faciliter la
configuration réseau, notamment pour le Wi-Fi. Les premières versions de NetworkManager
étaient assez capricieuses et lui ont valu le sobriquet « NotworkManager ». Ces dernières années,
il a fait ses preuves. C’est devenu un outil stable et fiable, qui vient sous forme d’un démon et
d’une interface graphique. Slackware 14.2 inclut la version 1.2.2.
Sur un ordinateur portable, NetworkManager constitue de loin la solution la plus pratique pour gérer
les connexions réseau. Voici en gros comment il fonctionne :
• Si une connexion filaire est disponible, elle est utilisée en priorité. Autrement, Network-Manager
passe en revue les réseaux sans fil disponibles.
• Si NetworkManager trouve un réseau sans fil auquel vous vous êtes déjà connecté avec succès, il
essaie de s’y reconnecter.
• Lorsque plusieurs connexions réseau sans fil récentes sont disponibles, il choisit la plus récente.
L’utilisation de NetworkManager est extrêmement simple sous Slackware. Il suffit de supprimer toute
configuration dans /etc/rc.d/rc.inet1.conf et d’activer le démon /etc/rc.d/ rc.networkmanager.
Ouvrez /etc/rc.d/rc.inet1.conf et assurez-vous que toutes les sections sont vides :
# Config information for eth0:
IPADDR[0]=""
NETMASK[0]=""
USE_DHCP[0]=""
DHCP_HOSTNAME[0]=""
Ici, je vous conseille de redémarrer la machine, même si ce n’est pas strictement nécessaire. Une fois
que vous avez lancé l’environnement de bureau Xfce, vous remarquez la présence d’une nouvelle
icône dans la zone de notification en haut à droite de l’écran. Cliquez dessus pour afficher l’ensemble
des connexions réseau disponibles.
Figure 22–5
Débranchez le câble Ethernet et sélectionnez le réseau auquel vous souhaitez vous connecter.
Figure 22–6
Si le réseau Wi-Fi n’est pas disponible, il faut l’activer explicitement. Affichez ce menu avec un clic-
droit sur l’icône du NetworkManager.
Figure 22–7
Saisissez la clé du réseau Wi-Fi.
Figure 22–8
Vous voilà connecté à votre point d’accès.
Une fois que la connexion est établie, je regarde ce que cela donne au niveau des interfaces réseau :
# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether d8:50:e6:22:0a:d8 txqueuelen 1000 (Ethernet)
...
Figure 22–9
Une carte Wi-Fi PCI vous permet de connecter votre station de travail au réseau sans fil de votre
bureau ou votre domicile.
La solution consiste ici à doter votre station de travail d’une carte Wi-Fi PCI. Ce genre de carte se
trouve dans le commerce pour une quinzaine d’euros. Avant d’en commander une, vérifiez les
connecteurs dans votre PC. Dans le doute, amenez-le chez votre informaticien local, qui vous aidera
à trouver la bonne carte.
Une fois que la carte est installée, la première chose à faire est de vérifier sa présence avec lspci :
# lspci | grep -i network
07:04.0 Network controller: Atheros Communications Inc.
AR9227 Wireless Network Adapter (rev 01)
À partir de là, il n’y a plus aucune différence avec la configuration du réseau sans fil sur un
ordinateur portable. Il suffit de supprimer la configuration dans /etc/rc.d/rc.inet1.conf et d’activer
/etc/rc.d/rc.networkmanager :
# ifconfig wlan0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.2.7 netmask 255.255.255.0
broadcast 192.168.2.255
...
A
Sur une machine dépourvue de lecteur optique, l’installation de Slackware passe nécessairement
par une clé USB bootable. Vers la fin du chapitre 2, nous avons vu comment confectionner une
telle clé à l’aide de l’utilitaire UNetbootin. La méthode « officielle » est bien différente et
nécessite un minimum de connaissances de la ligne de commande. C’est pourquoi elle figure en
annexe.
Sur une machine munie d’un lecteur optique, ouvrez un terminal et guettez les messages système pour
identifier le fichier de périphérique correspondant à la clé USB :
# tail -f /var/log/messages
Admettons que la clé soit /dev/sdb. Remettez à zéro sa table de partitions. Comme vous vous en
doutez, non seulement cette procédure est destructive pour les données de votre clé, mais elle met
également en péril les données de l’ensemble de votre système si vous vous trompez de fichier de
périphérique fourni en argument :
# dd if=/dev/zero of=/dev/sdb bs=512 count=64
Cette commande signifie quelque chose comme : « écris plein de petits zéros sur les soixante-quatre
premiers secteurs du disque /dev/sdb ».
À présent, montez le DVD d’installation de Slackware. Admettons que votre point de montage soit
/mnt/cdrom, rendez-vous dans le répertoire usb-and-pxe-installers :
# cd /mnt/cdrom/usb-and-pxe-installers
Exécutez le script shell usbimg2disk.sh avec les arguments suivants pour un système 32-bits :
# sh usbimg2disk.sh -f -i usbboot.img -o /dev/sdb -L SLACK32
Le script vous demande plusieurs confirmations avant de s’exécuter, histoire de bien vous assurer de
ne pas faire d’erreurs fatales. Ne vous laissez pas dérouter par l’habituel franglais que l’on peut
rencontrer dans ce genre de situations :
We are going to format and use this device - '/dev/sdb':
# Vendor :
# Model : USB Flash Memory
# Size : 7643 MB
#
# FDISK OUTPUT:
Le disque /dev/sdb ne contient pas une table de partitions valable
Votre clé est désormais bootable et contient l’installateur. Enlevez-la et réinsérez-la, puis copiez le
contenu du DVD d’installation sur la clé. Vous pouvez très bien utiliser le gestionnaire de fichiers
Thunar pour cela. Pour gagner du temps et de la place, il est possible de faire l’impasse sur les
répertoires extra/, pasture/, slackbook/, source/ et testing/. Si Thunar affiche un message d’erreur
concernant la création de liens symboliques, il suffit de les Ignorer toujours.
B
Dans les chapitres 3 et 18 de ce livre, nous avons utilisé les outils fdisk ou cfdisk (MBR) pour
partitionner le disque dur. Pour ne pas compliquer les choses, nous n’avons parlé ni des
limitations de ces outils, ni des solutions alternatives comme gdisk ou cgdisk (GPT).
MBR et GPT
Les informations de partitionnement sont actuellement gérées par deux procédures distinctes :
• MBR (Master Boot Record) ;
• GPT (GUID Partition Table).
Les concepts de partitionnement basés sur les tables de partition MBR remontent à l’époque DOS, ce
qui explique tout un ensemble de limitations et de règles plus ou moins farfelues. Ce concept reste
pourtant valable pour à peu près tous les disques durs utilisés dans des PC Windows et/ou Linux
jusqu’en 2012. Dans ce cas de figure, la table de partition est stockée dans le Master Boot Record
(MBR), c’est-à-dire le premier secteur du disque dur.
Le successeur GPT est un standard créé il y a quelque temps déjà, dans le but d’éviter les
nombreuses limitations liées au MBR. Les ordinateurs de la marque Apple utilisent GPT depuis
2005. Les machines Windows y ont migré depuis la présentation de Windows 8 en automne 2012.
Une partition étendue ne constitue qu’une sorte de conteneur pour les partitions logiques. Le stockage
des données à proprement parler s’effectue sur les partitions primaires et/ou logiques.
Avec un MBR, Linux peut gérer un maximum de quinze partitions, dont un maximum de onze logiques.
En conséquence, la meilleure solution consiste à créer les trois partitions primaires dans un premier
temps, puis la partition étendue qui occupera tout le reste du disque et que l’on remplira de partitions
logiques selon les besoins.
La taille maximale d’une telle partition est de deux téraoctets. Il existe quelques astuces pour utiliser
le partitionnement MBR avec des disques allant jusqu’à quatre téraoctets, mais il vaut mieux dans ce
cas passer directement au partitionnement GPT.
Alternativement :
# cgdisk /dev/sda
Une fois qu’on a créé la nouvelle table de partitions et qu’on a quitté gdisk ou cgdisk, on peut afficher
le schéma de partitionnement en utilisant l’option -l :
# gdisk -l /dev/sda
Revenir au partitionnement MBR
Pour utiliser un partitionnement classique avec fdisk ou cfdisk sur un disque GPT, il faut veiller à bien
se débarrasser des tables de partitions correspondantes :
# gdisk /dev/sda
...
x - extra functionality (experts only)
...
z - zap (destroy) GPT data structures and exit
...
Blank out MBR? (Y/N)
Les chapitres 3 et 18 de ce livre traitent de l’installation d’un système Linux sur une machine
munie d’un BIOS traditionnel, pour éviter de vous compliquer la vie dans vos débuts
d’apprentissage. Les choses se compliquent un peu avec les machines récentes munies d’EFI.
EFI et BIOS
L’EFI ou UEFI (Unified Extensible Firmware Interface) définit un logiciel intermédiaire entre le
firmware (ou micrologiciel) d’un ordinateur et le système d’exploitation. Il a été développé depuis
1998 par Intel, puis par d’autres constructeurs comme Apple, AMD et Microsoft. EFI est censé
remplacer le BIOS traditionnel, utilisé depuis une bonne quarantaine d’années, avec son lot
inévitable de limitations.
D’un point de vue purement technique, EFI comporte toute une série d’avantages par rapport au BIOS
traditionnel. En contrepartie, l’installation d’un système Linux sur une machine EFI s’avère un peu
plus compliquée. Même si la procédure n’est pas triviale, Slackware Linux supporte officiellement
les installations EFI depuis la version 14.1.
Un exemple pratique : l’Asus S300
Dans mon quotidien, j’installe assez régulièrement Linux sur du matériel récent. Je profite donc de
l’occasion pour décrire l’installation de Slackware 14.2 64-bits sur un portable Asus S300, acheté
d’occasion avec un système Windows 8 dessus. Je n’entrerai pas dans les détails triviaux de la
procédure d’installation et je ne m’arrêterai qu’aux particularités liées à l’EFI.
Notez que certaines machines offrent la possibilité de basculer en mode legacy BIOS, qui permet
ensuite de gérer l’installation comme avec un BIOS traditionnel. Cette fonctionnalité n’est pas
présente sur ma machine ; il va donc falloir se retrousser les manches et installer Slackware en mode
EFI.
Partitionnement
Dans un premier temps, je fais le ménage en supprimant le joyeux fatras Microsoft que l’on trouve
généralement sur les machines munies d’un système Windows préinstallé :
# gdisk /dev/sda
J’appuie successivement sur la touche X pour activer le mode expert, puis sur la touche Z pour
« zapper » la table de partition GPT (voir annexe B).
Ensuite, je repartitionne avec gdisk :
• une partition EFI de 100 Mo (type EF00) ;
• une partition /boot de 100 Mo (type 8300) ;
• une partition swap de 8 Go (type 8200) ;
• une partition principale de 457 Go (type 8300).
Voilà à quoi cela ressemble au final :
# gdisk -l /dev/sda
GPT fdisk (gdisk) version 0.8.7
...
Number Start sector End sector Size Code Name
1 2048 206847 100.0 MiB EF00 EFI System
2 206848 411647 100.0 MiB 8300 Linux filesystem
3 411648 17188863 8.0 GiB 8200 Linux swap
4 17188864 976773134 457.6 GiB 8300 Linux filesystem
À partir du moment où la partition EFI est présente au début du disque, l’installateur de Slackware se
charge automatiquement d’y copier les fichiers qu’il faut. Si vous êtes curieux des détails de cette
opération, jetez un œil sur la documentation officielle de Slackware à l’adresse docs.slackware.com.
Nous pouvons déjà configurer l’initrd. Sur mon portable, /etc/mkinitrd.conf ressemble à ceci :
SOURCE_TREE="/boot/initrd-tree"
CLEAR_TREE="1"
OUTPUT_IMAGE="/boot/initrd.gz"
KERNEL_VERSION="$(uname -r)"
KEYMAP="fr-latin1"
MODULE_LIST="ext4"
ROOTDEV="/dev/sda4"
ROOTFS="ext4"
RESUMEDEV="/dev/sda3"
RAID="0"
LVM="0"
UDEV="1"
MODCONF="0"
WAIT="1"
Construisez l’initrd :
# mkinitrd -F
Au redémarrage, sélectionnez le noyau GENERIC. Étant donné qu’on n’arrive pas à distinguer les noyaux
HUGE et GENERIC dans le menu de démarrage par défaut, il faudra utiliser le menu avancé de GRUB.
Dans la configuration par défaut, GRUB affiche Slackware 14.2 GNU/Linux dans le menu. Pour
corriger ceci, on peut éditer /etc/grub.d/10_linux :
if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then
#OS=GNU/Linux
OS=Slackware
else
#OS="${GRUB_DISTRIBUTOR} GNU/Linux"
OS="${GRUB_DISTRIBUTOR}"
...
fi
Symboles
/ 95, 96, 97, 98
/bin (voir répertoire) 93
/boot (voir répertoire) 94
/dev (voir répertoire) 95
/etc (voir répertoire) 95
/home (voir répertoire) 91
/lib (voir répertoire) 96
/media (voir répertoire) 97
/proc (voir répertoire) 98
/root (voir répertoire) 98
/sbin (voir répertoire) 98
/sys (voir répertoire) 98
/tmp (voir répertoire) 101
/usr (voir répertoire) 99
/var (voir répertoire) 101
~ (voir répertoire d’utilisateur) 116
A
accélération graphique 342
accès refusé 92
administrateur (voir root) 71
adresse
IP 276
privée, publique 280
MAC 275
adresse IP 67
aide en ligne 154
commande info 160
commande man 156
option --help 156
alias de commande 140
apostrophe 201
application
lancer 100
Applications
Adblock Plus (module) 400
Asunder 434
Audacious 432
Audacity 435
Brasero 426
Evince 420
File Roller 425
Gedit 422
Gimp 428
gThumb 427
Inkscape 430
LibreOffice 409
Macromedia Flash (plugin) 399
Mozilla Firefox 395
Mozilla Thunderbird 401
MPlayer 437
Recoll 423
Scribus 431
Seamonkey 407
Transmission 444
VLC 443
Xfce 85
arborescence 90
créer 134
représentation 132
architectures 32-bits et 64-bits 39
archive compressée 263
créer 266, 267
extraire 267, 268
formats 264
argument 110
Ariase 38
arobase @ 112
ASCII (American Standard Code for Information Interchange) 282
B
barre oblique / (voir racine) 93, 112
Bash (Bourne Again Shell) 174
bibliothèque 96
partagée (voir aussi /lib) 96
binaire (voir /bin) 93
système (voir /sbin) 98
BIOS (Basic Input/Output System) 44
Blackbox 63
BSD 20
bunzip2 (voir bzip2) 266
bureau Xfce 80
bzip2 264, 265, 267
C
câble
Ethernet 271
pour réseau local 289
carte
voir Ethernet 272
carte graphique 37
casse des caractères
option 203, 208
cat (commande) 122, 128
cd (change directory) 117
CentOS 26, 38
installation 48
cfdisk 52
chargeur de démarrage LILO 63
chemin
absolu, relatif 117
chevron double >> 129
chmod (commande) 186
chown (change owner) 196
clavier (disposition) 49
clé GPG 300
clé USB 41, 251
clé USB (voir aussi périphérique)
monter/démonter 256
partition 257
clé USB bootable 479
clear (commande) 142
CMD (Command) 224
commande 110, 326
aide en ligne
info 160
man (manuel) 156
alias 140
argument 110
clear 142
complétion automatique 148
compression et archivage 267
bzip2 264, 265
gzip 264
tar 264, 266
cp (copy) 135, 137
création 130, 134
cat 128
echo 128
mkdir 129
touch 127
file (fichier) 282
gestion d'utilisateurs 168, 174
su 167
gestion des modules 273
gestion des périphériques 258
eject 260
mount 260
gestion des processus
kill 227
killall 230
ps 224, 225
pstree 232
top 235
gestion des services 247
historique 153
ln (lien) 220
mv (move) 138, 139
navigation 111
cd 117
ls (list) 111
pwd 117
tree 132
option 114
permissions 186
chown 196
umask 191
pkgtools 293
recherche 207
recherche inversée 154
removepkg 296
répéter 152
réseau 279, 281
ifconfig 274
sbopkg 312
slackpkg 299
slackpkg install 301
slackpkg remove 302
slackpkg search 303
slackpkg upgrade 302
slackpkg+ 317
startx 338
suppression
rm (remove) 139, 219
rmdir 141
visualisation 124
cat (concaténer) 122
echo 122
less 126
more 125
voir aussi invite de ~ 105
voir aussi ligne de ~ 103
X -configure 338
complétion automatique 148
compression
bzip2 265
gzip 264
configuration
réseau (voir réseau) 274
Terminal 107
configuration de l’horloge et du fuseau horaire 70
configuration de la souris 66
configuration des services au démarrage 69
configuration du réseau 67
connexion
Internet (voir Internet) 37
voir Internet 281
console (virtuelle) 105, 106
copie 135
courrier électronique
spam 406
cp (copy) 135, 137
Ctrl 247
CUPS (Common Unix Printing System) 101, 447
D
Debian
configuration réseau 290
Debian GNU/Linux 17
décompression (voir compression) 265
démarrage
du système 232
démontage (voir montage) 256
DHCP 62, 67, 281
configuration 284
disque dur 37
distribution Linux 15, 22
DistroWatch 22
DNS (Domain Name System) 62, 280, 287
dock Plank 382
dotfile (voir fichier caché) 115
double boot 34
driver (voir module) 232, 273
droits d'accès
des répertoires 193
fichier ou répertoire 113
notation numérique 189
processus 235
E
echo (commande) 122, 128
écran 37
éditeur
Vi 143
EFI 45
EFI ou UEFI (Unified Extensible Firmware Interface) 487
eject (commande) 260
Elementary 373
Emacs 62
émulateur
de terminal 106
Thunar 88
EOF (End Of File) 128
espace 130
esperluette & 224
eth (voir Ethernet) 275
Ethernet 275
câble 271
carte 272, 275
exécutable (voir fichier) 186
exit (commande) 168
F
FAI (fournisseur d’accès à Internet) 37
Nerim 38
FAT ou FAT32 207, 257
fenêtre
gestion 86
fichier 113
afficher ~ long 124
caché 114
commande 282
copier 135
déplacer 138
droits d’accès 113
exécutable 186
groupe 196
navigateur (voir Nautilus) 86
propriétaire 196
recherche 199, 202
régulier non exécutable 112
renommer 139
supprimer 139
texte
créer 128
voir aussi commande de navigation 111
voir aussi lien physique 220
voir aussi système de ~s 93
file (commande) 282
Firefox 63
Fluxbox 63, 350
forcer (option -f) 141, 142
format
.rar 263
.tar.bz2 264
.tar.gz 264
.zip 263
framebuffer 343
Free Software Foundation 8
G
GDM (GNOME Display Manager) 79
GECOS 170
geek 146
Gérer les dépendances des paquets 312
GID 169
Gimp 63
Global Unique Identifier (GUID) 484
GNOME
environnement 79
gestion des périphériques 249
Terminal 86, 106
configuration 107
GNU 5
GNU/Linux (voir Linux) 30
Google 276
GPL 8
GPT (GUID Partition Table) 483
grep (commande) 207
groupe
d'utilisateurs 186
d’un fichier 196
GRUB 319
gucharmap 224
guillemets " " 208
gunzip (voir gzip) 265
gzip (GNU Zip) 264, 267
H
halt (commande) 247
hard link (voir lien physique) 221
help (option) 156
historique
des commandes 153
history (commande) 153
horodatage
commande touch 127
I
ifconfig (commande) 274
impression
file d'attente 101
imprimante
Brother HL-2140 456
Canon PIXMA iP4200 461
Canon PIXMA MG2250 459
HP Officejet Pro 8600 450
imprimer 447
info (commande) 160
installation
du système chicken install 43
du sytème 48
installer des paquets 301
interface
réseau 274
Internet
connexion 37, 281
configuration dynamique 281
configuration statique 285
fournisseur d’accès 37
voir aussi réseau 270
invite de commande 105, 116
IP (Internet Protocol) voir adresse ~ 276
IPv6 276
ISO 40
ISO (fichier) 40
J
joker 137, 202
journal (ou logfile) 101
K
KDE 62
kernel (voir noyau) 94, 325
kill (commande) 227
killall (commande) 230
KISS 31
L
LaTeX 62
Lecteur 37
lecture
et écriture 261
seule 261
less 126
raccourcis clavier 156
recherche 158
LFS (Linux From Scratch) 30
licence GPL 8
lien
physique 220
créer 220
supprimer 221
symbolique 112
créer 214
permissions 220
supprimer 219
liens symboliques 213
ligne de commande 103
LILO 63, 94, 319
Linux XI
From Scratch 30
ln (commande) 220
lo (localhost) 275
ls (list) 111
lsmod (commande) 273
LXDM 387
M
MAC (Media Access Control) voir adresse ~ 275
Mac OS X 21
driver 96
Finder 86
préférences graphiques 89
système de fichiers 257
Terminal 86
Unix 143
man (manuel) 156
Mandriva
configuration réseau 290
Manipuler les fenêtres
Xfce 86
masque
de sous-réseau 276
matériel 34
MBR (Master Boot Record) 232, 483
mémoire
vive
test 46
voir aussi RAM 46
Mémoire vive 36
Memtest86 46
métacaractère 137
Mettre à jour des paquets 302
mkdir (make directory) 129, 130, 134
mode texte 103
modem routeur (voir réseau) 270
module 96, 232, 273
statut 273
montage (d'un périphérique)
clé USB 256
point de ~ 97, 255, 258, 259
more 125
mot de passe
sécurité 72
mot de passe root 71
mount (commande) 260
multi-utilisateur 163, 183
mv (move) 138, 139
N
Nautilus
liens symboliques 217
navigateur
de fichiers (voir Nautilus) 86
NCurses 58
Nerim 38
nétiquette 405
NetworkManager 473
niveau d’exécution 246
nom de domaine (voir réseau) 280
noyau GENERIC 328
noyau Linux 9, 232
nslookup (commande) 281
NTFS (New Technology File System) 207
Numériser des documents 465
O
option (de commande) 114, 156, 203, 204
-a ou --all 114, 134
-f (file) 267
-f (force) 141, 142
-h ou --human-readable 113
-i (insensible à la casse) 208
-i (interactive) 140
-R (recursive) 135
-v ou --verbose 135, 255
OS (Operating System) 2
P
pager (voir pagination) 125
pagination 125, 126
paquet 62
paquet (voir réseau) 279
paquet Slackware 292
paquetage 62
paquets tiers précompilés 315
partition
clé USB 257
partitionner le disque dur 51, 483
passerelle (voir réseau) 279
PATH 212
périphérique 206, 232, 249
blocage du lecteur 259
éjection 260
gestion
en mode manuel 252
sous GNOME 249
informations 260
monter/démonter 97
voir aussi /dev 95
voir aussi module 96
permission 185, 206
commande chmod 186
commande umask 191
lien symbolique 220
notation numérique 189
par défaut 191
voir aussi droits d'accès 185
personnaliser Xfce 81
PID (Process IDentifier) 224
pilote (voir module) 232, 273
pilote propriétaire AMD/ATi 349
pilote propriétaire nvidia 345
ping (commande) 279
plantage
simulation 228
point d’accès Wi-Fi 469
point de montage 255, 258, 259
Posix 11
PPID (Parent Process Identifier) 233
processeur 36, 123
processus
afficher l’état 225, 232
compter 226
droits d’accès 235
interrompre 202
lancer 224
organisation hiérarchique 232
parent 232
relancer 228
surveiller 224
surveiller les ressources 235
terminer/tuer 227, 228
programme 186
voir aussi processus 223
prompt (voir invite de commande) 105
propriétaire (d'un fichier) 196
changer 196
ps (commande) 224, 225
pstree (commande) 232
pwd (print working directory) 117
Q
quitter 125
R
raccourci
voir aussi alias de commande 140
voir lien symbolique 112
racine (du système de fichiers) 93
RAM (Random Access Memory) 46
voir aussi mémoire vive 46
reboot (commande) 247
recherche
en fonction de la taille 203
fichier 199
fichiers 202
interrompre 202
inversée (voir commande) 154
texte 207
rechercher des paquets 303
recompiler des paquets 305
Red Hat 16
répertoire 91, 98, 101, 112, 113, 177
. et .. 118
/bin 93
/boot 94
/dev 95
/etc 95
/lib 96
/media 97, 258
/mnt 97, 258
/mnt/hd 258
/proc 98
/run/media// 252
/sys 98
/usr 99
caché 115
commande mkdir 130
courant 111
créer 129
créer une arborescence 134
déplacer 138
droits d’accès 113, 193
informations détaillées 116
lien symbolique 216
naviguer 90
recherche 200
renommer 139
sauvegarder 137
supprimer 139, 141
temporaire (voir /tmp) 101
utilisateur 116, 118, 174, 184
utilisateur (voir /home) 91
voir aussi chemin 117
voir aussi commande de navigation 111
répertoires 90
réseau
autres distributions 290
câblage 271, 289
carte ~ (voir Ethernet) 275
configuration
des interfaces 274
dynamique 290
routeur 283
statique 290
diagnostic 288
DNS (noms de domaine) 280
Google 276
IPv6 276
local 289
masque de sous-~ 276
modem 270
paquets 279
passerelle 279
routeur (voir aussi modem) 279, 283
switch 289
voir aussi Internet 281
rm (remove) 139, 219
rmdir (remove directory) 141
ro (read only) 261
root 50, 71, 167
voir aussi /root 98
route (commande) 279
routeur (voir aussi modem) 278, 279
rw (read/write) 261
S
script 186
sécurité
mot de passe 72
utilisateurs système 172
serveur
de noms (voir DNS) 281
DHCP 283
service 101, 238
shell 104, 174
shutdown (commande) 247
Simple Scan 466
Slackware Linux 15, 31
Slint 49
so (shared object) 96
soft link (voir lien symbolique) 221
spam 406
startx 80
su (switch user) 167
super-utilisateur (voir root) 71
supprimer des paquets 302
supprimer les icônes du bureau 392
SuSE
configuration réseau 290
switch 289
système
de fichiers 207
arborescence 90
CD ou DVD 255
clé USB 257
racine 93
virtuel (voir /proc et /sys) 98
décimal/hexadécimal 276
multitâche 223
multi-utilisateur 163, 183
utilisateur ~ 172
T
tabulation 148
tar (tape archiver) 264, 266, 267
TCL 62
terminal 106
émulateur 86
voir émulateur 106
texte
ASCII 282
éditeur 143
mode 103
TGZ 293
thème GTK Clearlooks Phenix 374
Thunar 88
Thunderbird 63
tilde ~ 116
top (commande) 235
touch (commande) 127
tree (commande) 132
TXZ 293
U
Ubuntu 19
configuration réseau 290
UEFI 45
UID (User Identification) 169, 172, 174
umask (commande) 191
umount (commande) 258
UNetbootin 42
Unicode 65
Unix 1, 121
Usenet 62
User ID ou UID 75
useradd (commande) 174
userdel
commande 181
UTF-8 65
utilisateur 71
classes 186
gestion 168, 174
commande 167
groupe 186
répertoire 116, 118
répertoire (voir /home) 91
super~ (voir root) 71
système 172
voir aussi permission 185
utilisateurs 74
V
Vi 143
Vim (Vi Improved) 143
Vimtutor 144
virus albanais, belge 164
W
WEP (Wired Equivalent Privacy) 471
Whisker Menu 378
whoami (commande) 168
Wi-Fi (Wireless Fidelity) 469
WindowMaker 63, 337
Windows X, 21
base de registre 96
commande DIR 111
Ctrl+Alt+Suppr 248
DLL (Dynamic Linked Library) 96
driver 96
Explorateur 86
fichier 100
fichiers .zip 263
fichiers exécutables 187
invite de commandes DOS 86
logiciels 23
menu Démarrer 85
périphérique 249
plantage 229
préférences graphiques 89
sécurité 164
système de fichiers 207, 257
X
X Window 335
X.Org 62, 335
X11 336
Xfce 63, 77
XSane 465
XTerm 340
Pour suivre toutes les nouveautés numériques du Groupe Eyrolles, retrouvez-nous sur Twitter et Facebook
@ebookEyrolles
EbooksEyrolles